1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

basic skeleton for epub reader

This commit is contained in:
dkanada 2020-05-05 23:02:05 +09:00 committed by Daniyar Itegulov
parent 1e269f2b27
commit 8478b0ed56
No known key found for this signature in database
GPG key ID: 4DB862B7839037FD
6 changed files with 54 additions and 3 deletions

View file

@ -59,6 +59,7 @@
"core-js": "^3.6.5",
"date-fns": "^2.13.0",
"document-register-element": "^1.14.3",
"epubjs": "^0.3.85",
"fast-text-encoding": "^1.0.1",
"flv.js": "^1.5.0",
"headroom.js": "^0.11.0",

View file

@ -96,6 +96,14 @@ div[data-role=page] {
}
}
#bookPlayer {
position: relative;
height: 100%;
overflow: auto;
z-index: 100;
background: #fff;
}
.headerHelpButton {
margin-left: 1.25em !important;
padding-bottom: 0.4em !important;

View file

@ -102,6 +102,11 @@ _define('jellyfin-noto', function () {
return noto;
});
var epubjs = require('epubjs');
_define('epubjs', function () {
return epubjs;
});
// page.js
var page = require('page');
_define('page', function() {

View file

@ -0,0 +1,35 @@
define(['connectionManager', 'dom'], function (connectionManager, dom) {
'use strict';
function BookPlayer() {
var self = this;
self.name = 'Book Player';
self.type = 'mediaplayer';
self.id = 'bookplayer';
self.priority = 1;
}
BookPlayer.prototype.play = function (values) {
var serverId = values.items[0].ServerId
var apiClient = connectionManager.getApiClient(serverId);
var options = values;
require(['epubjs', 'appFooter-shared'], function (epubjs, appFooter) {
appFooter.element.insertAdjacentHTML('beforebegin', '<div id="bookPlayer"></div>');
var element = document.getElementById('bookPlayer');
var downloadHref = apiClient.getItemDownloadUrl(options.items[0].Id);
var book = epubjs.default(downloadHref, { openAs: 'epub' });
var rendition = book.renderTo(element, { method: "continuous", width: "100%", height: "100%" });
var displayed = rendition.display();
});
};
BookPlayer.prototype.canPlayMediaType = function (mediaType) {
return (mediaType || '').toLowerCase() === 'book';
};
return BookPlayer;
});

View file

@ -2182,7 +2182,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
// Only used internally
self.getCurrentTicks = getCurrentTicks;
function playPhotos(items, options, user) {
function playOther(items, options, user) {
var playStartIndex = options.startIndex || 0;
var player = getPlayer(items[playStartIndex], options);
@ -2211,9 +2211,9 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
return Promise.reject();
}
if (firstItem.MediaType === 'Photo') {
if (firstItem.MediaType === 'Photo' || firstItem.MediaType === 'Book') {
return playPhotos(items, options, user);
return playOther(items, options, user);
}
var apiClient = connectionManager.getApiClient(firstItem.ServerId);

View file

@ -484,6 +484,7 @@ var AppInfo = {};
'components/htmlAudioPlayer/plugin',
'components/htmlVideoPlayer/plugin',
'components/photoPlayer/plugin',
'components/bookplayer/plugin',
'components/youtubeplayer/plugin',
'components/backdropScreensaver/plugin',
'components/logoScreensaver/plugin'
@ -670,6 +671,7 @@ var AppInfo = {};
'fetch',
'flvjs',
'jstree',
'epubjs',
'jQuery',
'hlsjs',
'howler',