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
6 changed files with 54 additions and 3 deletions
+1
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",
+8
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;
+5
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() {
+35
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;
});
+3 -3
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);
+2
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',