mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Merge pull request #491 from dkanada/shaka
Bundle flvjs and shaka and move all libs to one folder
This commit is contained in:
commit
b725d137a0
32 changed files with 181 additions and 266 deletions
|
@ -16,10 +16,12 @@
|
|||
"webpack-merge": "^4.2.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"flv.js": "^1.5.0",
|
||||
"jstree": "^3.3.7",
|
||||
"jquery": "^3.4.1",
|
||||
"hls.js": "^0.12.4",
|
||||
"howler": "^2.1.2",
|
||||
"shaka-player": "^2.5.5",
|
||||
"swiper": "^4.5.0",
|
||||
"sortablejs": "^1.9.0",
|
||||
"libjass": "^0.11.0"
|
||||
|
|
|
@ -4,6 +4,10 @@
|
|||
// Use define from require.js not webpack's define
|
||||
var _define = window.define;
|
||||
|
||||
// flvjs
|
||||
var flvjs = require("flv.js");
|
||||
_define("flvjs", function() { return flvjs; });
|
||||
|
||||
// jstree
|
||||
var jstree = require("jstree");
|
||||
require("jstree/dist/themes/default/style.css");
|
||||
|
@ -21,6 +25,10 @@ _define("hlsjs", function() { return hlsjs; });
|
|||
var howler = require("howler");
|
||||
_define("howler", function() { return howler; });
|
||||
|
||||
// shaka
|
||||
var shaka = require("shaka-player");
|
||||
_define("shaka", function() { return shaka; });
|
||||
|
||||
// swiper
|
||||
var swiper = require("swiper");
|
||||
require("swiper/dist/css/swiper.min.css");
|
||||
|
|
|
@ -430,13 +430,8 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
|||
}
|
||||
|
||||
function loadUserSkinWithOptions(ctx) {
|
||||
|
||||
require(['queryString'], function (queryString) {
|
||||
|
||||
//var url = options.url;
|
||||
//var index = url.indexOf('?');
|
||||
var params = queryString.parse(ctx.querystring);
|
||||
|
||||
skinManager.loadUserSkin({
|
||||
start: params.start
|
||||
});
|
||||
|
@ -444,16 +439,13 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
|||
}
|
||||
|
||||
function validateRoles(apiClient, roles) {
|
||||
|
||||
return Promise.all(roles.split(',').map(function (role) {
|
||||
return validateRole(apiClient, role);
|
||||
}));
|
||||
}
|
||||
|
||||
function validateRole(apiClient, role) {
|
||||
|
||||
if (role === 'admin') {
|
||||
|
||||
return apiClient.getCurrentUser().then(function (user) {
|
||||
if (user.Policy.IsAdministrator) {
|
||||
return Promise.resolve();
|
||||
|
@ -480,7 +472,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
|||
route: route,
|
||||
path: ctx.path
|
||||
};
|
||||
//next();
|
||||
|
||||
ctx.handled = true;
|
||||
}
|
||||
|
@ -503,7 +494,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
|||
}
|
||||
|
||||
function endsWith(str, srch) {
|
||||
|
||||
return str.lastIndexOf(srch) === srch.length - 1;
|
||||
}
|
||||
|
||||
|
@ -513,6 +503,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
|||
if (endsWith(baseRoute, '/') && !endsWith(baseRoute, '://')) {
|
||||
baseRoute = baseRoute.substring(0, baseRoute.length - 1);
|
||||
}
|
||||
|
||||
function baseUrl() {
|
||||
return baseRoute;
|
||||
}
|
||||
|
@ -551,14 +542,11 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
|||
}
|
||||
|
||||
function back() {
|
||||
|
||||
page.back();
|
||||
}
|
||||
|
||||
function canGoBack() {
|
||||
|
||||
var curr = current();
|
||||
|
||||
if (!curr) {
|
||||
return false;
|
||||
}
|
||||
|
@ -576,7 +564,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
|||
}
|
||||
|
||||
function show(path, options) {
|
||||
|
||||
if (path.indexOf('/') !== 0 && path.indexOf('://') === -1) {
|
||||
path = '/' + path;
|
||||
}
|
||||
|
@ -585,7 +572,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
|||
path = path.replace(baseRoute, '');
|
||||
|
||||
if (currentRouteInfo && currentRouteInfo.path === path) {
|
||||
|
||||
// can't use this with home right now due to the back menu
|
||||
if (currentRouteInfo.route.type !== 'home') {
|
||||
loading.hide();
|
||||
|
@ -594,7 +580,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
|||
}
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
resolveOnNextShow = resolve;
|
||||
page.show(path, options);
|
||||
});
|
||||
|
@ -615,14 +600,12 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
|||
}
|
||||
|
||||
function showItem(item, serverId, options) {
|
||||
|
||||
if (typeof (item) === 'string') {
|
||||
var apiClient = serverId ? connectionManager.getApiClient(serverId) : connectionManager.currentApiClient();
|
||||
apiClient.getItem(apiClient.getCurrentUserId(), item).then(function (item) {
|
||||
appRouter.showItem(item, options);
|
||||
});
|
||||
} else {
|
||||
|
||||
if (arguments.length === 2) {
|
||||
options = arguments[1];
|
||||
}
|
||||
|
@ -637,7 +620,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
|||
var allRoutes = [];
|
||||
|
||||
function addRoute(path, newRoute) {
|
||||
|
||||
page(path, getHandler(newRoute));
|
||||
allRoutes.push(newRoute);
|
||||
}
|
||||
|
@ -649,7 +631,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
|||
var backdropContainer;
|
||||
var backgroundContainer;
|
||||
function setTransparency(level) {
|
||||
|
||||
if (!backdropContainer) {
|
||||
backdropContainer = document.querySelector('.backdropContainer');
|
||||
}
|
||||
|
@ -662,8 +643,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
|||
document.documentElement.classList.add('transparentDocument');
|
||||
backgroundContainer.classList.add('backgroundContainer-transparent');
|
||||
backdropContainer.classList.add('hide');
|
||||
}
|
||||
else if (level === 'backdrop' || level === 1) {
|
||||
} else if (level === 'backdrop' || level === 1) {
|
||||
backdrop.externalBackdrop(true);
|
||||
document.documentElement.classList.add('transparentDocument');
|
||||
backgroundContainer.classList.add('backgroundContainer-transparent');
|
||||
|
@ -677,9 +657,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
|||
}
|
||||
|
||||
function pushState(state, title, url) {
|
||||
|
||||
state.navigate = false;
|
||||
|
||||
page.pushState(state, title, url);
|
||||
}
|
||||
|
||||
|
@ -690,40 +668,24 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
|||
}
|
||||
|
||||
console.log('Setting page base to ' + baseRoute);
|
||||
|
||||
page.base(baseRoute);
|
||||
}
|
||||
|
||||
setBaseRoute();
|
||||
|
||||
function syncNow() {
|
||||
require(['localsync'], function (localSync) {
|
||||
localSync.sync();
|
||||
});
|
||||
}
|
||||
|
||||
function invokeShortcut(id) {
|
||||
|
||||
if (id.indexOf('library-') === 0) {
|
||||
|
||||
id = id.replace('library-', '');
|
||||
|
||||
id = id.split('_');
|
||||
|
||||
appRouter.showItem(id[0], id[1]);
|
||||
|
||||
} else if (id.indexOf('item-') === 0) {
|
||||
|
||||
id = id.replace('item-', '');
|
||||
|
||||
id = id.split('_');
|
||||
|
||||
appRouter.showItem(id[0], id[1]);
|
||||
|
||||
} else {
|
||||
|
||||
id = id.split('_');
|
||||
|
||||
appRouter.show(appRouter.getRouteUrl(id[0], {
|
||||
serverId: id[1]
|
||||
}));
|
||||
|
@ -740,6 +702,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
|||
appRouter.canGoBack = canGoBack;
|
||||
appRouter.current = current;
|
||||
appRouter.beginConnectionWizard = beginConnectionWizard;
|
||||
appRouter.invokeShortcut = invokeShortcut;
|
||||
appRouter.showItem = showItem;
|
||||
appRouter.setTransparency = setTransparency;
|
||||
appRouter.getRoutes = getRoutes;
|
||||
|
@ -751,7 +714,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
|||
Backdrop: 1,
|
||||
Full: 2
|
||||
};
|
||||
appRouter.invokeShortcut = invokeShortcut;
|
||||
|
||||
return appRouter;
|
||||
});
|
||||
|
|
|
@ -2,7 +2,6 @@ define(['appStorage', 'events'], function (appStorage, events) {
|
|||
'use strict';
|
||||
|
||||
function getKey(name, userId) {
|
||||
|
||||
if (userId) {
|
||||
name = userId + '-' + name;
|
||||
}
|
||||
|
@ -15,20 +14,15 @@ define(['appStorage', 'events'], function (appStorage, events) {
|
|||
}
|
||||
|
||||
AppSettings.prototype.enableAutoLogin = function (val) {
|
||||
|
||||
if (val != null) {
|
||||
this.set('enableAutoLogin', val.toString());
|
||||
}
|
||||
|
||||
return this.get('enableAutoLogin') !== 'false';
|
||||
};
|
||||
|
||||
AppSettings.prototype.enableAutomaticBitrateDetection = function (isInNetwork, mediaType, val) {
|
||||
|
||||
var key = 'enableautobitratebitrate-' + mediaType + '-' + isInNetwork;
|
||||
|
||||
if (val != null) {
|
||||
|
||||
if (isInNetwork && mediaType === 'Audio') {
|
||||
val = true;
|
||||
}
|
||||
|
@ -44,11 +38,8 @@ define(['appStorage', 'events'], function (appStorage, events) {
|
|||
};
|
||||
|
||||
AppSettings.prototype.maxStreamingBitrate = function (isInNetwork, mediaType, val) {
|
||||
|
||||
var key = 'maxbitrate-' + mediaType + '-' + isInNetwork;
|
||||
|
||||
if (val != null) {
|
||||
|
||||
if (isInNetwork && mediaType === 'Audio') {
|
||||
// nothing to do, this is always a max value
|
||||
} else {
|
||||
|
@ -65,7 +56,6 @@ define(['appStorage', 'events'], function (appStorage, events) {
|
|||
};
|
||||
|
||||
AppSettings.prototype.maxStaticMusicBitrate = function (val) {
|
||||
|
||||
if (val !== undefined) {
|
||||
this.set('maxStaticMusicBitrate', val);
|
||||
}
|
||||
|
@ -75,18 +65,15 @@ define(['appStorage', 'events'], function (appStorage, events) {
|
|||
};
|
||||
|
||||
AppSettings.prototype.maxChromecastBitrate = function (val) {
|
||||
|
||||
if (val != null) {
|
||||
this.set('chromecastBitrate1', val);
|
||||
}
|
||||
|
||||
val = this.get('chromecastBitrate1');
|
||||
|
||||
return val ? parseInt(val) : null;
|
||||
};
|
||||
|
||||
AppSettings.prototype.syncOnlyOnWifi = function (val) {
|
||||
|
||||
if (val != null) {
|
||||
this.set('syncOnlyOnWifi', val.toString());
|
||||
}
|
||||
|
@ -95,7 +82,6 @@ define(['appStorage', 'events'], function (appStorage, events) {
|
|||
};
|
||||
|
||||
AppSettings.prototype.syncPath = function (val) {
|
||||
|
||||
if (val != null) {
|
||||
this.set('syncPath', val);
|
||||
}
|
||||
|
@ -104,13 +90,11 @@ define(['appStorage', 'events'], function (appStorage, events) {
|
|||
};
|
||||
|
||||
AppSettings.prototype.cameraUploadServers = function (val) {
|
||||
|
||||
if (val != null) {
|
||||
this.set('cameraUploadServers', val.join(','));
|
||||
}
|
||||
|
||||
val = this.get('cameraUploadServers');
|
||||
|
||||
if (val) {
|
||||
return val.split(',');
|
||||
}
|
||||
|
@ -119,7 +103,6 @@ define(['appStorage', 'events'], function (appStorage, events) {
|
|||
};
|
||||
|
||||
AppSettings.prototype.runAtStartup = function (val) {
|
||||
|
||||
if (val != null) {
|
||||
this.set('runatstartup', val.toString());
|
||||
}
|
||||
|
@ -128,9 +111,7 @@ define(['appStorage', 'events'], function (appStorage, events) {
|
|||
};
|
||||
|
||||
AppSettings.prototype.set = function (name, value, userId) {
|
||||
|
||||
var currentValue = this.get(name, userId);
|
||||
|
||||
appStorage.setItem(getKey(name, userId), value);
|
||||
|
||||
if (currentValue !== value) {
|
||||
|
@ -139,12 +120,10 @@ define(['appStorage', 'events'], function (appStorage, events) {
|
|||
};
|
||||
|
||||
AppSettings.prototype.get = function (name, userId) {
|
||||
|
||||
return appStorage.getItem(getKey(name, userId));
|
||||
};
|
||||
|
||||
AppSettings.prototype.enableSystemExternalPlayers = function (val) {
|
||||
|
||||
if (val != null) {
|
||||
this.set('enableSystemExternalPlayers', val.toString());
|
||||
}
|
||||
|
|
|
@ -2,7 +2,6 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
|||
'use strict';
|
||||
|
||||
function enableAnimation(elem) {
|
||||
|
||||
if (browser.slow) {
|
||||
return false;
|
||||
}
|
||||
|
@ -11,7 +10,6 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
|||
}
|
||||
|
||||
function enableRotation() {
|
||||
|
||||
if (browser.tv) {
|
||||
return false;
|
||||
}
|
||||
|
@ -25,17 +23,13 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
|||
}
|
||||
|
||||
function Backdrop() {
|
||||
|
||||
}
|
||||
|
||||
Backdrop.prototype.load = function (url, parent, existingBackdropImage) {
|
||||
|
||||
var img = new Image();
|
||||
|
||||
var self = this;
|
||||
|
||||
img.onload = function () {
|
||||
|
||||
if (self.isDestroyed) {
|
||||
return;
|
||||
}
|
||||
|
@ -75,6 +69,7 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
|||
|
||||
internalBackdrop(true);
|
||||
};
|
||||
|
||||
img.src = url;
|
||||
};
|
||||
|
||||
|
@ -87,14 +82,12 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
|||
};
|
||||
|
||||
Backdrop.prototype.destroy = function () {
|
||||
|
||||
this.isDestroyed = true;
|
||||
this.cancelAnimation();
|
||||
};
|
||||
|
||||
var backdropContainer;
|
||||
function getBackdropContainer() {
|
||||
|
||||
if (!backdropContainer) {
|
||||
backdropContainer = document.querySelector('.backdropContainer');
|
||||
}
|
||||
|
@ -109,7 +102,6 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
|||
}
|
||||
|
||||
function clearBackdrop(clearAll) {
|
||||
|
||||
clearRotation();
|
||||
|
||||
if (currentLoadingBackdrop) {
|
||||
|
@ -123,6 +115,7 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
|||
if (clearAll) {
|
||||
hasExternalBackdrop = false;
|
||||
}
|
||||
|
||||
internalBackdrop(false);
|
||||
}
|
||||
|
||||
|
@ -133,8 +126,8 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
|||
}
|
||||
return backgroundContainer;
|
||||
}
|
||||
function setBackgroundContainerBackgroundEnabled() {
|
||||
|
||||
function setBackgroundContainerBackgroundEnabled() {
|
||||
if (hasInternalBackdrop || hasExternalBackdrop) {
|
||||
getBackgroundContainer().classList.add('withBackdrop');
|
||||
} else {
|
||||
|
@ -160,7 +153,6 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
|||
|
||||
var currentLoadingBackdrop;
|
||||
function setBackdropImage(url) {
|
||||
|
||||
if (currentLoadingBackdrop) {
|
||||
currentLoadingBackdrop.destroy();
|
||||
currentLoadingBackdrop = null;
|
||||
|
@ -183,29 +175,23 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
|||
|
||||
var standardWidths = [480, 720, 1280, 1440, 1920];
|
||||
function getBackdropMaxWidth() {
|
||||
|
||||
var width = dom.getWindowSize().innerWidth;
|
||||
var roundScreenTo = 100;
|
||||
|
||||
if (standardWidths.indexOf(width) !== -1) {
|
||||
return width;
|
||||
}
|
||||
|
||||
var roundScreenTo = 100;
|
||||
width = Math.floor(width / roundScreenTo) * roundScreenTo;
|
||||
|
||||
return Math.min(width, 1920);
|
||||
}
|
||||
|
||||
function getItemImageUrls(item, imageOptions) {
|
||||
|
||||
imageOptions = imageOptions || {};
|
||||
|
||||
var apiClient = connectionManager.getApiClient(item.ServerId);
|
||||
|
||||
if (item.BackdropImageTags && item.BackdropImageTags.length > 0) {
|
||||
|
||||
return item.BackdropImageTags.map(function (imgTag, index) {
|
||||
|
||||
return apiClient.getScaledImageUrl(item.BackdropItemId || item.Id, Object.assign(imageOptions, {
|
||||
type: "Backdrop",
|
||||
tag: imgTag,
|
||||
|
@ -216,9 +202,7 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
|||
}
|
||||
|
||||
if (item.ParentBackdropItemId && item.ParentBackdropImageTags && item.ParentBackdropImageTags.length) {
|
||||
|
||||
return item.ParentBackdropImageTags.map(function (imgTag, index) {
|
||||
|
||||
return apiClient.getScaledImageUrl(item.ParentBackdropItemId, Object.assign(imageOptions, {
|
||||
type: "Backdrop",
|
||||
tag: imgTag,
|
||||
|
@ -232,17 +216,13 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
|||
}
|
||||
|
||||
function getImageUrls(items, imageOptions) {
|
||||
|
||||
var list = [];
|
||||
|
||||
var onImg = function (img) {
|
||||
list.push(img);
|
||||
};
|
||||
|
||||
for (var i = 0, length = items.length; i < length; i++) {
|
||||
|
||||
var itemImages = getItemImageUrls(items[i], imageOptions);
|
||||
|
||||
itemImages.forEach(onImg);
|
||||
}
|
||||
|
||||
|
@ -262,12 +242,12 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
|||
|
||||
// If you don't care about the order of the elements inside
|
||||
// the array, you should sort both arrays here.
|
||||
|
||||
for (var i = 0; i < a.length; ++i) {
|
||||
if (a[i] !== b[i]) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -275,20 +255,16 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
|||
var currentRotatingImages = [];
|
||||
var currentRotationIndex = -1;
|
||||
function setBackdrops(items, imageOptions, enableImageRotation) {
|
||||
|
||||
var images = getImageUrls(items, imageOptions);
|
||||
|
||||
if (images.length) {
|
||||
|
||||
startRotation(images, enableImageRotation);
|
||||
|
||||
} else {
|
||||
clearBackdrop();
|
||||
}
|
||||
}
|
||||
|
||||
function startRotation(images, enableImageRotation) {
|
||||
|
||||
if (arraysEqual(images, currentRotatingImages)) {
|
||||
return;
|
||||
}
|
||||
|
@ -301,11 +277,11 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
|||
if (images.length > 1 && enableImageRotation !== false && enableRotation()) {
|
||||
rotationInterval = setInterval(onRotationInterval, 24000);
|
||||
}
|
||||
|
||||
onRotationInterval();
|
||||
}
|
||||
|
||||
function onRotationInterval() {
|
||||
|
||||
if (playbackManager.isPlayingLocally(['Video'])) {
|
||||
return;
|
||||
}
|
||||
|
@ -324,35 +300,29 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
|||
if (interval) {
|
||||
clearInterval(interval);
|
||||
}
|
||||
|
||||
rotationInterval = null;
|
||||
currentRotatingImages = [];
|
||||
currentRotationIndex = -1;
|
||||
}
|
||||
|
||||
function setBackdrop(url, imageOptions) {
|
||||
|
||||
if (url) {
|
||||
if (typeof url !== 'string') {
|
||||
url = getImageUrls([url], imageOptions)[0];
|
||||
}
|
||||
if (url && typeof url !== 'string') {
|
||||
url = getImageUrls([url], imageOptions)[0];
|
||||
}
|
||||
|
||||
if (url) {
|
||||
clearRotation();
|
||||
|
||||
setBackdropImage(url);
|
||||
|
||||
} else {
|
||||
clearBackdrop();
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
|
||||
setBackdrops: setBackdrops,
|
||||
setBackdrop: setBackdrop,
|
||||
clear: clearBackdrop,
|
||||
externalBackdrop: externalBackdrop
|
||||
};
|
||||
|
||||
});
|
|
@ -1,4 +1,4 @@
|
|||
define(['inputmanager', 'focusManager'], function(inputmanager, focusManager) {
|
||||
define(['inputManager', 'focusManager'], function(inputManager, focusManager) {
|
||||
'use strict';
|
||||
|
||||
console.log("keyboardnavigation");
|
||||
|
@ -9,16 +9,16 @@ define(['inputmanager', 'focusManager'], function(inputmanager, focusManager) {
|
|||
|
||||
switch (e.keyCode) {
|
||||
case 37: // ArrowLeft
|
||||
inputmanager.handle('left');
|
||||
inputManager.handle('left');
|
||||
break;
|
||||
case 38: // ArrowUp
|
||||
inputmanager.handle('up');
|
||||
inputManager.handle('up');
|
||||
break;
|
||||
case 39: // ArrowRight
|
||||
inputmanager.handle('right');
|
||||
inputManager.handle('right');
|
||||
break;
|
||||
case 40: // ArrowDown
|
||||
inputmanager.handle('down');
|
||||
inputManager.handle('down');
|
||||
break;
|
||||
default:
|
||||
capture = false;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
define(['inputManager', 'focusManager', 'browser', 'layoutManager', 'events', 'dom'], function (inputmanager, focusManager, browser, layoutManager, events, dom) {
|
||||
define(['inputManager', 'focusManager', 'browser', 'layoutManager', 'events', 'dom'], function (inputManager, focusManager, browser, layoutManager, events, dom) {
|
||||
'use strict';
|
||||
|
||||
var self = {};
|
||||
|
@ -12,7 +12,7 @@ define(['inputManager', 'focusManager', 'browser', 'layoutManager', 'events', 'd
|
|||
|
||||
function notifyApp() {
|
||||
|
||||
inputmanager.notifyMouseMove();
|
||||
inputManager.notifyMouseMove();
|
||||
}
|
||||
|
||||
function removeIdleClasses() {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'focusManager', 'browser', 'apphost', 'loading', 'css!./style', 'material-icons', 'paper-icon-button-light'], function (dialogHelper, inputmanager, connectionManager, layoutManager, focusManager, browser, appHost, loading) {
|
||||
define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'focusManager', 'browser', 'apphost', 'loading', 'css!./style', 'material-icons', 'paper-icon-button-light'], function (dialogHelper, inputManager, connectionManager, layoutManager, focusManager, browser, appHost, loading) {
|
||||
'use strict';
|
||||
|
||||
function getImageUrl(item, options, apiClient) {
|
||||
|
@ -189,7 +189,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f
|
|||
stopInterval();
|
||||
});
|
||||
|
||||
inputmanager.on(window, onInputCommand);
|
||||
inputManager.on(window, onInputCommand);
|
||||
document.addEventListener((window.PointerEvent ? 'pointermove' : 'mousemove'), onPointerMove);
|
||||
|
||||
dlg.addEventListener('close', onDialogClosed);
|
||||
|
@ -372,7 +372,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f
|
|||
swiperInstance = null;
|
||||
}
|
||||
|
||||
inputmanager.off(window, onInputCommand);
|
||||
inputManager.off(window, onInputCommand);
|
||||
document.removeEventListener((window.PointerEvent ? 'pointermove' : 'mousemove'), onPointerMove);
|
||||
}
|
||||
|
||||
|
|
|
@ -44,11 +44,11 @@ define(["browser", "dom", "layoutManager", "css!components/viewManager/viewConta
|
|||
|
||||
|
||||
if (isPluginpage) {
|
||||
require(["legacy/dashboard"]);
|
||||
require(["legacyDashboard"]);
|
||||
}
|
||||
|
||||
if (newViewInfo.hasjQuerySelect) {
|
||||
require(["legacy/selectmenu"]);
|
||||
require(["legacySelectMenu"]);
|
||||
}
|
||||
|
||||
if (newViewInfo.hasjQueryChecked) {
|
||||
|
|
|
@ -14,7 +14,7 @@ define(["apphost", "connectionManager", "listViewStyle", "emby-button"], functio
|
|||
page.querySelector(".lnkMyProfile").setAttribute("href", "myprofile.html?userId=" + userId);
|
||||
page.querySelector(".lnkDisplayPreferences").setAttribute("href", "mypreferencesdisplay.html?userId=" + userId);
|
||||
page.querySelector(".lnkHomePreferences").setAttribute("href", "mypreferenceshome.html?userId=" + userId);
|
||||
page.querySelector(".lnkLanguagePreferences").setAttribute("href", "mypreferenceslanguages.html?userId=" + userId);
|
||||
page.querySelector(".lnkPlaybackPreferences").setAttribute("href", "mypreferencesplayback.html?userId=" + userId);
|
||||
page.querySelector(".lnkSubtitlePreferences").setAttribute("href", "mypreferencessubtitles.html?userId=" + userId);
|
||||
|
||||
if (appHost.supports("multiserver")) {
|
|
@ -1,4 +1,4 @@
|
|||
define(["playbackManager", "dom", "inputmanager", "datetime", "itemHelper", "mediaInfo", "focusManager", "imageLoader", "scrollHelper", "events", "connectionManager", "browser", "globalize", "apphost", "layoutManager", "userSettings", "scrollStyles", "emby-slider", "paper-icon-button-light", "css!css/videoosd"], function (playbackManager, dom, inputManager, datetime, itemHelper, mediaInfo, focusManager, imageLoader, scrollHelper, events, connectionManager, browser, globalize, appHost, layoutManager, userSettings) {
|
||||
define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "mediaInfo", "focusManager", "imageLoader", "scrollHelper", "events", "connectionManager", "browser", "globalize", "apphost", "layoutManager", "userSettings", "scrollStyles", "emby-slider", "paper-icon-button-light", "css!css/videoosd"], function (playbackManager, dom, inputManager, datetime, itemHelper, mediaInfo, focusManager, imageLoader, scrollHelper, events, connectionManager, browser, globalize, appHost, layoutManager, userSettings) {
|
||||
"use strict";
|
||||
|
||||
function seriesImageUrl(item, options) {
|
||||
|
@ -925,7 +925,7 @@ define(["playbackManager", "dom", "inputmanager", "datetime", "itemHelper", "med
|
|||
if (player) {
|
||||
|
||||
// show subtitle offset feature only if player and media support it
|
||||
var showSubOffset = playbackManager.supportSubtitleOffset(player) &&
|
||||
var showSubOffset = playbackManager.supportSubtitleOffset(player) &&
|
||||
playbackManager.canHandleOffsetOnCurrentSubtitle(player);
|
||||
|
||||
playerSettingsMenu.show({
|
||||
|
@ -1047,7 +1047,7 @@ define(["playbackManager", "dom", "inputmanager", "datetime", "itemHelper", "med
|
|||
playbackManager.setSubtitleStreamIndex(index, player);
|
||||
}
|
||||
|
||||
toggleSubtitleSync();
|
||||
toggleSubtitleSync();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
</div>
|
||||
</a>
|
||||
|
||||
<a is="emby-linkbutton" data-ripple="false" href="#" class="lnkLanguagePreferences listItem-border">
|
||||
<a is="emby-linkbutton" data-ripple="false" href="#" class="lnkPlaybackPreferences listItem-border">
|
||||
<div class="listItem">
|
||||
<i class="md-icon listItemIcon listItemIcon-transparent">play_circle_filled</i>
|
||||
<div class="listItemBody">
|
||||
|
|
|
@ -229,41 +229,41 @@ define([
|
|||
autoFocus: false,
|
||||
transition: "fade"
|
||||
});
|
||||
defineRoute({
|
||||
path: "/mypreferencesdisplay.html",
|
||||
autoFocus: false,
|
||||
transition: "fade",
|
||||
controller: "mypreferencesdisplay"
|
||||
});
|
||||
defineRoute({
|
||||
path: "/mypreferenceshome.html",
|
||||
autoFocus: false,
|
||||
transition: "fade",
|
||||
controller: "mypreferenceshome"
|
||||
});
|
||||
defineRoute({
|
||||
path: "/mypreferencessubtitles.html",
|
||||
autoFocus: false,
|
||||
transition: "fade",
|
||||
controller: "mypreferencessubtitles"
|
||||
});
|
||||
defineRoute({
|
||||
path: "/mypreferenceslanguages.html",
|
||||
autoFocus: false,
|
||||
transition: "fade",
|
||||
controller: "mypreferenceslanguages"
|
||||
});
|
||||
defineRoute({
|
||||
path: "/mypreferencesmenu.html",
|
||||
autoFocus: false,
|
||||
transition: "fade",
|
||||
controller: "mypreferencescommon"
|
||||
controller: "user/menu"
|
||||
});
|
||||
defineRoute({
|
||||
path: "/myprofile.html",
|
||||
autoFocus: false,
|
||||
transition: "fade",
|
||||
controller: "myprofile"
|
||||
controller: "user/profile"
|
||||
});
|
||||
defineRoute({
|
||||
path: "/mypreferencesdisplay.html",
|
||||
autoFocus: false,
|
||||
transition: "fade",
|
||||
controller: "user/display"
|
||||
});
|
||||
defineRoute({
|
||||
path: "/mypreferenceshome.html",
|
||||
autoFocus: false,
|
||||
transition: "fade",
|
||||
controller: "user/home"
|
||||
});
|
||||
defineRoute({
|
||||
path: "/mypreferencesplayback.html",
|
||||
autoFocus: false,
|
||||
transition: "fade",
|
||||
controller: "user/playback"
|
||||
});
|
||||
defineRoute({
|
||||
path: "/mypreferencessubtitles.html",
|
||||
autoFocus: false,
|
||||
transition: "fade",
|
||||
controller: "user/subtitles"
|
||||
});
|
||||
defineRoute({
|
||||
path: "/notificationsetting.html",
|
||||
|
|
|
@ -223,7 +223,9 @@ var Dashboard = {
|
|||
return capabilities = Object.assign(capabilities, appHost.getPushTokenInfo());
|
||||
}
|
||||
};
|
||||
|
||||
var AppInfo = {};
|
||||
|
||||
!function () {
|
||||
"use strict";
|
||||
|
||||
|
@ -290,7 +292,7 @@ var AppInfo = {};
|
|||
connectionManager.addApiClient(apiClient);
|
||||
|
||||
window.ApiClient = apiClient;
|
||||
localApiClient = apiClient;
|
||||
localApiClient = apiClient;
|
||||
|
||||
console.log("loaded ApiClient singleton");
|
||||
});
|
||||
|
@ -309,6 +311,10 @@ var AppInfo = {};
|
|||
return "bower_components";
|
||||
}
|
||||
|
||||
function getComponentsPath() {
|
||||
return "components";
|
||||
}
|
||||
|
||||
function getPlaybackManager(playbackManager) {
|
||||
window.addEventListener("beforeunload", function () {
|
||||
try {
|
||||
|
@ -381,14 +387,13 @@ var AppInfo = {};
|
|||
return self.ResizeObserver;
|
||||
});
|
||||
} else {
|
||||
define("ResizeObserver", ["thirdparty/resize-observer-polyfill/ResizeObserver"], returnFirstDependency);
|
||||
define("ResizeObserver", [getBowerPath() + "/resize-observer-polyfill/ResizeObserver"], returnFirstDependency);
|
||||
}
|
||||
}
|
||||
|
||||
function initRequireWithBrowser(browser) {
|
||||
var bowerPath = getBowerPath();
|
||||
var apiClientBowerPath = bowerPath + "/apiclient";
|
||||
var componentsPath = "components";
|
||||
var componentsPath = getComponentsPath();
|
||||
|
||||
define("filesystem", [componentsPath + "/filesystem"], returnFirstDependency);
|
||||
|
||||
|
@ -400,7 +405,7 @@ var AppInfo = {};
|
|||
|
||||
define("shell", [componentsPath + "/shell"], returnFirstDependency);
|
||||
|
||||
define("apiclient", [apiClientBowerPath + "/apiclient"], returnFirstDependency);
|
||||
define("apiclient", [bowerPath + "/apiclient/apiclient"], returnFirstDependency);
|
||||
|
||||
if ("registerElement" in document) {
|
||||
define("registerElement", []);
|
||||
|
@ -434,7 +439,7 @@ var AppInfo = {};
|
|||
define("loading", [componentsPath + "/loading/loading"], returnFirstDependency);
|
||||
define("multi-download", [componentsPath + "/multidownload"], returnFirstDependency);
|
||||
define("fileDownloader", [componentsPath + "/filedownloader"], returnFirstDependency);
|
||||
define("localassetmanager", [apiClientBowerPath + "/localassetmanager"], returnFirstDependency);
|
||||
define("localassetmanager", [bowerPath + "/apiclient/localassetmanager"], returnFirstDependency);
|
||||
|
||||
if ("cordova" === self.appMode || "android" === self.appMode) {
|
||||
define("castSenderApiLoader", [], getDummyCastSenderApiLoader);
|
||||
|
@ -442,9 +447,9 @@ var AppInfo = {};
|
|||
define("castSenderApiLoader", [], getCastSenderApiLoader);
|
||||
}
|
||||
|
||||
define("transfermanager", [apiClientBowerPath + "/sync/transfermanager"], returnFirstDependency);
|
||||
define("filerepository", [apiClientBowerPath + "/sync/filerepository"], returnFirstDependency);
|
||||
define("localsync", [apiClientBowerPath + "/sync/localsync"], returnFirstDependency);
|
||||
define("transfermanager", [bowerPath + "/apiclient/sync/transfermanager"], returnFirstDependency);
|
||||
define("filerepository", [bowerPath + "/apiclient/sync/filerepository"], returnFirstDependency);
|
||||
define("localsync", [bowerPath + "/apiclient/sync/localsync"], returnFirstDependency);
|
||||
}
|
||||
|
||||
function init() {
|
||||
|
@ -560,64 +565,52 @@ var AppInfo = {};
|
|||
|
||||
// ensure that appHost is loaded in this point
|
||||
require(['apphost', 'appRouter'], function (appHost, appRouter) {
|
||||
var isInBackground = -1 !== self.location.href.toString().toLowerCase().indexOf("start=backgroundsync");
|
||||
|
||||
window.Emby = {};
|
||||
|
||||
console.log("onAppReady - loading dependencies");
|
||||
if (browser.iOS) {
|
||||
require(['css!css/ios.css']);
|
||||
}
|
||||
|
||||
if (isInBackground) {
|
||||
syncNow();
|
||||
} else {
|
||||
window.Emby.Page = appRouter;
|
||||
|
||||
if (browser.iOS) {
|
||||
require(['css!css/ios.css']);
|
||||
require(['emby-button', 'scripts/themeloader', 'libraryMenu', 'scripts/routes'], function () {
|
||||
Emby.Page.start({
|
||||
click: false,
|
||||
hashbang: true
|
||||
});
|
||||
|
||||
require(["components/thememediaplayer", "scripts/autobackdrops"]);
|
||||
|
||||
if (!browser.tv && !browser.xboxOne && !browser.ps4) {
|
||||
require(["components/nowplayingbar/nowplayingbar"]);
|
||||
}
|
||||
|
||||
window.Emby.Page = appRouter;
|
||||
if (appHost.supports("remotecontrol")) {
|
||||
require(["playerSelectionMenu", "components/playback/remotecontrolautoplay"]);
|
||||
}
|
||||
|
||||
require(['emby-button', 'scripts/themeloader', 'libraryMenu', 'scripts/routes'], function () {
|
||||
Emby.Page.start({
|
||||
click: false,
|
||||
hashbang: true
|
||||
});
|
||||
if (!appHost.supports("physicalvolumecontrol") || browser.touch) {
|
||||
require(["components/playback/volumeosd"]);
|
||||
}
|
||||
|
||||
require(["components/thememediaplayer", "scripts/autobackdrops"]);
|
||||
require(["mediaSession", "serverNotifications"]);
|
||||
|
||||
if (!browser.tv && !browser.xboxOne && !browser.ps4) {
|
||||
require(["components/nowplayingbar/nowplayingbar"]);
|
||||
if (!browser.tv && !browser.xboxOne) {
|
||||
require(["components/playback/playbackorientation"]);
|
||||
registerServiceWorker();
|
||||
|
||||
if (window.Notification) {
|
||||
require(["components/notifications/notifications"]);
|
||||
}
|
||||
}
|
||||
|
||||
if (appHost.supports("remotecontrol")) {
|
||||
require(["playerSelectionMenu", "components/playback/remotecontrolautoplay"]);
|
||||
}
|
||||
require(["playerSelectionMenu", "fullscreenManager"]);
|
||||
|
||||
if (!appHost.supports("physicalvolumecontrol") || browser.touch) {
|
||||
require(["components/playback/volumeosd"]);
|
||||
}
|
||||
|
||||
require(["mediaSession", "serverNotifications"]);
|
||||
|
||||
if (!browser.tv && !browser.xboxOne) {
|
||||
require(["components/playback/playbackorientation"]);
|
||||
registerServiceWorker();
|
||||
|
||||
if (window.Notification) {
|
||||
require(["components/notifications/notifications"]);
|
||||
}
|
||||
}
|
||||
|
||||
require(["playerSelectionMenu", "fullscreenManager"]);
|
||||
|
||||
if (appHost.supports("sync")) {
|
||||
initLocalSyncEvents();
|
||||
}
|
||||
|
||||
if (!AppInfo.isNativeApp && window.ApiClient) {
|
||||
require(["css!" + ApiClient.getUrl("Branding/Css")]);
|
||||
}
|
||||
});
|
||||
}
|
||||
if (!AppInfo.isNativeApp && window.ApiClient) {
|
||||
require(["css!" + ApiClient.getUrl("Branding/Css")]);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -631,20 +624,6 @@ var AppInfo = {};
|
|||
}
|
||||
}
|
||||
|
||||
function syncNow() {
|
||||
require(["localsync"], function (localSync) {
|
||||
localSync.sync();
|
||||
});
|
||||
}
|
||||
|
||||
function initLocalSyncEvents() {
|
||||
require(["serverNotifications", "events"], function (serverNotifications, events) {
|
||||
events.on(serverNotifications, "SyncJobItemReady", syncNow);
|
||||
events.on(serverNotifications, "SyncJobCancelled", syncNow);
|
||||
events.on(serverNotifications, "SyncJobItemCancelled", syncNow);
|
||||
});
|
||||
}
|
||||
|
||||
function onWebComponentsReady(browser) {
|
||||
initRequireWithBrowser(browser);
|
||||
|
||||
|
@ -653,7 +632,7 @@ var AppInfo = {};
|
|||
}
|
||||
|
||||
if (!window.Promise || browser.web0s) {
|
||||
require(["thirdparty/native-promise-only/lib/npo.src"], init);
|
||||
require([getBowerPath() + "/native-promise-only/lib/npo.src"], init);
|
||||
} else {
|
||||
init();
|
||||
}
|
||||
|
@ -664,27 +643,24 @@ var AppInfo = {};
|
|||
(function () {
|
||||
var urlArgs = "v=" + (window.dashboardVersion || new Date().getDate());
|
||||
var bowerPath = getBowerPath();
|
||||
var apiClientBowerPath = bowerPath + "/apiclient";
|
||||
var componentsPath = "components";
|
||||
var componentsPath = getComponentsPath();
|
||||
var paths = {
|
||||
browserdeviceprofile: "scripts/browserdeviceprofile",
|
||||
browser: "scripts/browser",
|
||||
libraryBrowser: "scripts/librarybrowser",
|
||||
inputManager: "scripts/inputManager",
|
||||
datetime: "scripts/datetime",
|
||||
globalize: "scripts/globalize",
|
||||
libraryMenu: "scripts/librarymenu",
|
||||
playlisteditor: componentsPath + "/playlisteditor/playlisteditor",
|
||||
medialibrarycreator: componentsPath + "/medialibrarycreator/medialibrarycreator",
|
||||
medialibraryeditor: componentsPath + "/medialibraryeditor/medialibraryeditor",
|
||||
imageoptionseditor: componentsPath + "/imageoptionseditor/imageoptionseditor",
|
||||
humanedate: componentsPath + "/humanedate",
|
||||
libraryBrowser: "scripts/librarybrowser",
|
||||
events: apiClientBowerPath + "/events",
|
||||
credentialprovider: apiClientBowerPath + "/credentialprovider",
|
||||
connectionManagerFactory: bowerPath + "/apiclient/connectionmanager",
|
||||
apphost: componentsPath + "/apphost",
|
||||
visibleinviewport: componentsPath + "/visibleinviewport",
|
||||
browserdeviceprofile: componentsPath + "/browserdeviceprofile",
|
||||
browser: componentsPath + "/browser",
|
||||
inputManager: componentsPath + "/inputManager",
|
||||
qualityoptions: componentsPath + "/qualityoptions",
|
||||
page: "thirdparty/page",
|
||||
focusManager: componentsPath + "/focusManager",
|
||||
datetime: componentsPath + "/datetime",
|
||||
globalize: componentsPath + "/globalize",
|
||||
itemHelper: componentsPath + "/itemhelper",
|
||||
itemShortcuts: componentsPath + "/shortcuts",
|
||||
playQueueManager: componentsPath + "/playback/playqueuemanager",
|
||||
|
@ -693,10 +669,8 @@ var AppInfo = {};
|
|||
pluginManager: componentsPath + "/pluginManager",
|
||||
packageManager: componentsPath + "/packagemanager"
|
||||
};
|
||||
paths.flvjs = "thirdparty/flvjs/flv.min";
|
||||
paths.shaka = "thirdparty/shaka/shaka-player.compiled";
|
||||
paths.apphost = componentsPath + "/apphost";
|
||||
|
||||
requirejs.onError = onRequireJsError;
|
||||
requirejs.config({
|
||||
waitSeconds: 0,
|
||||
map: {
|
||||
|
@ -706,13 +680,22 @@ var AppInfo = {};
|
|||
}
|
||||
},
|
||||
bundles: {
|
||||
bundle: ["jstree", "jQuery", "hlsjs", "howler", "swiper", "sortable", "libjass"]
|
||||
bundle: [
|
||||
"flvjs",
|
||||
"jstree",
|
||||
"jQuery",
|
||||
"hlsjs",
|
||||
"howler",
|
||||
"shaka",
|
||||
"swiper",
|
||||
"sortable",
|
||||
"libjass"
|
||||
]
|
||||
},
|
||||
urlArgs: urlArgs,
|
||||
paths: paths,
|
||||
onError: onRequireJsError
|
||||
});
|
||||
requirejs.onError = onRequireJsError;
|
||||
|
||||
// Expose jQuery globally
|
||||
require(["jQuery"], function(jQuery) {
|
||||
|
@ -720,13 +703,57 @@ var AppInfo = {};
|
|||
window.jQuery = jQuery;
|
||||
});
|
||||
|
||||
require(["css!css/site"]);
|
||||
|
||||
// define styles
|
||||
// TODO determine which of these files can be moved to the components themselves
|
||||
define("material-icons", ["css!css/material-icons/style"], returnFirstDependency);
|
||||
define("systemFontsCss", ["css!css/fonts"], returnFirstDependency);
|
||||
define("systemFontsSizedCss", ["css!css/fonts.sized"], returnFirstDependency);
|
||||
define("scrollStyles", ["css!css/scrollstyles"], returnFirstDependency);
|
||||
define("dashboardcss", ["css!css/dashboard"], returnFirstDependency);
|
||||
define("programStyles", ["css!" + componentsPath + "/guide/programs"], returnFirstDependency);
|
||||
define("listViewStyle", ["css!" + componentsPath + "/listview/listview"], returnFirstDependency);
|
||||
define("formDialogStyle", ["css!" + componentsPath + "/formdialog"], returnFirstDependency);
|
||||
define("clearButtonStyle", ["css!" + componentsPath + "/clearbutton"], returnFirstDependency);
|
||||
define("cardStyle", ["css!" + componentsPath + "/cardbuilder/card"], returnFirstDependency);
|
||||
define("flexStyles", ["css!" + componentsPath + "/flexstyles"], returnFirstDependency);
|
||||
|
||||
// define legacy features
|
||||
// TODO delete the rest of these
|
||||
define("fnchecked", ["legacy/fnchecked"], returnFirstDependency);
|
||||
define("legacyDashboard", ["legacy/dashboard"], returnFirstDependency);
|
||||
define("legacySelectMenu", ["legacy/selectmenu"], returnFirstDependency);
|
||||
|
||||
// there are several objects that need to be instantiated
|
||||
// TODO find a better way to do this
|
||||
define("appFooter", [componentsPath + "/appfooter/appfooter"], returnFirstDependency);
|
||||
define("appFooter-shared", ["appFooter"], createSharedAppFooter);
|
||||
|
||||
// TODO pull apiclient out of this repository
|
||||
define('events', [bowerPath + "/apiclient/events"], returnFirstDependency);
|
||||
define('credentialprovider', [bowerPath + "/apiclient/credentialprovider"], returnFirstDependency);
|
||||
define('connectionManagerFactory', [bowerPath + "/apiclient/connectionmanager"], returnFirstDependency);
|
||||
define('appStorage', [bowerPath + "/apiclient/appStorage"], returnFirstDependency);
|
||||
define("serversync", [bowerPath + "/apiclient/sync/serversync"], returnFirstDependency);
|
||||
define("multiserversync", [bowerPath + "/apiclient/sync/multiserversync"], returnFirstDependency);
|
||||
define("mediasync", [bowerPath + "/apiclient/sync/mediasync"], returnFirstDependency);
|
||||
define("itemrepository", [bowerPath + "/apiclient/sync/itemrepository"], returnFirstDependency);
|
||||
define("useractionrepository", [bowerPath + "/apiclient/sync/useractionrepository"], returnFirstDependency);
|
||||
|
||||
// also pull out these libs
|
||||
define("page", [bowerPath + "/page"], returnFirstDependency);
|
||||
define("fetch", [bowerPath + "/fetch/fetch"], returnFirstDependency);
|
||||
define("queryString", [bowerPath + "/query-string/index"], function () {
|
||||
return queryString;
|
||||
});
|
||||
|
||||
define("chromecastHelper", [componentsPath + "/chromecast/chromecasthelpers"], returnFirstDependency);
|
||||
define("mediaSession", [componentsPath + "/playback/mediasession"], returnFirstDependency);
|
||||
define("actionsheet", [componentsPath + "/actionsheet/actionsheet"], returnFirstDependency);
|
||||
define("tunerPicker", [componentsPath + "/tunerpicker"], returnFirstDependency);
|
||||
define("mainTabsManager", [componentsPath + "/maintabsmanager"], returnFirstDependency);
|
||||
define("imageLoader", [componentsPath + "/images/imageLoader"], returnFirstDependency);
|
||||
define("appFooter", [componentsPath + "/appfooter/appfooter"], returnFirstDependency);
|
||||
define("directorybrowser", [componentsPath + "/directorybrowser/directorybrowser"], returnFirstDependency);
|
||||
define("metadataEditor", [componentsPath + "/metadataeditor/metadataeditor"], returnFirstDependency);
|
||||
define("personEditor", [componentsPath + "/metadataeditor/personeditor"], returnFirstDependency);
|
||||
|
@ -734,7 +761,6 @@ var AppInfo = {};
|
|||
define("playerSettingsMenu", [componentsPath + "/playback/playersettingsmenu"], returnFirstDependency);
|
||||
define("playMethodHelper", [componentsPath + "/playback/playmethodhelper"], returnFirstDependency);
|
||||
define("brightnessOsd", [componentsPath + "/playback/brightnessosd"], returnFirstDependency);
|
||||
define("libraryMenu", ["scripts/librarymenu"], returnFirstDependency);
|
||||
define("emby-collapse", [componentsPath + "/emby-collapse/emby-collapse"], returnFirstDependency);
|
||||
define("emby-button", [componentsPath + "/emby-button/emby-button"], returnFirstDependency);
|
||||
define("emby-itemscontainer", [componentsPath + "/emby-itemscontainer/emby-itemscontainer"], returnFirstDependency);
|
||||
|
@ -793,14 +819,11 @@ var AppInfo = {};
|
|||
define("refreshDialog", [componentsPath + "/refreshdialog/refreshdialog"], returnFirstDependency);
|
||||
define("backdrop", [componentsPath + "/backdrop/backdrop"], returnFirstDependency);
|
||||
define("fetchHelper", [componentsPath + "/fetchhelper"], returnFirstDependency);
|
||||
define("cardStyle", ["css!" + componentsPath + "/cardbuilder/card"], returnFirstDependency);
|
||||
define("cardBuilder", [componentsPath + "/cardbuilder/cardBuilder"], returnFirstDependency);
|
||||
define("peoplecardbuilder", [componentsPath + "/cardbuilder/peoplecardbuilder"], returnFirstDependency);
|
||||
define("chaptercardbuilder", [componentsPath + "/cardbuilder/chaptercardbuilder"], returnFirstDependency);
|
||||
define("flexStyles", ["css!" + componentsPath + "/flexstyles"], returnFirstDependency);
|
||||
define("deleteHelper", [componentsPath + "/deletehelper"], returnFirstDependency);
|
||||
define("tvguide", [componentsPath + "/guide/guide"], returnFirstDependency);
|
||||
define("programStyles", ["css!" + componentsPath + "/guide/programs"], returnFirstDependency);
|
||||
define("guide-settings-dialog", [componentsPath + "/guide/guide-settings"], returnFirstDependency);
|
||||
define("loadingDialog", [componentsPath + "/loadingdialog/loadingdialog"], returnFirstDependency);
|
||||
define("viewManager", [componentsPath + "/viewManager/viewManager"], function (viewManager) {
|
||||
|
@ -808,29 +831,18 @@ var AppInfo = {};
|
|||
viewManager.dispatchPageEvents(true);
|
||||
return viewManager;
|
||||
});
|
||||
define('appStorage', [apiClientBowerPath + '/appStorage'], returnFirstDependency);
|
||||
define("dashboardcss", ["css!css/dashboard"], returnFirstDependency);
|
||||
define("slideshow", [componentsPath + "/slideshow/slideshow"], returnFirstDependency);
|
||||
define("fetch", [bowerPath + "/fetch/fetch"], returnFirstDependency);
|
||||
define("objectassign", [componentsPath + "/polyfills/objectassign"], returnFirstDependency);
|
||||
define("clearButtonStyle", ["css!" + componentsPath + "/clearbutton"], returnFirstDependency);
|
||||
define("userdataButtons", [componentsPath + "/userdatabuttons/userdatabuttons"], returnFirstDependency);
|
||||
define("emby-playstatebutton", [componentsPath + "/userdatabuttons/emby-playstatebutton"], returnFirstDependency);
|
||||
define("emby-ratingbutton", [componentsPath + "/userdatabuttons/emby-ratingbutton"], returnFirstDependency);
|
||||
define("listView", [componentsPath + "/listview/listview"], returnFirstDependency);
|
||||
define("listViewStyle", ["css!" + componentsPath + "/listview/listview"], returnFirstDependency);
|
||||
define("formDialogStyle", ["css!" + componentsPath + "/formdialog"], returnFirstDependency);
|
||||
define("indicators", [componentsPath + "/indicators/indicators"], returnFirstDependency);
|
||||
define("viewSettings", [componentsPath + "/viewsettings/viewsettings"], returnFirstDependency);
|
||||
define("filterMenu", [componentsPath + "/filtermenu/filtermenu"], returnFirstDependency);
|
||||
define("sortMenu", [componentsPath + "/sortmenu/sortmenu"], returnFirstDependency);
|
||||
define("serversync", [apiClientBowerPath + "/sync/serversync"], returnFirstDependency);
|
||||
define("multiserversync", [apiClientBowerPath + "/sync/multiserversync"], returnFirstDependency);
|
||||
define("mediasync", [apiClientBowerPath + "/sync/mediasync"], returnFirstDependency);
|
||||
define("idb", [componentsPath + "/idb"], returnFirstDependency);
|
||||
define("sanitizefilename", [componentsPath + "/sanitizefilename"], returnFirstDependency);
|
||||
define("itemrepository", [apiClientBowerPath + "/sync/itemrepository"], returnFirstDependency);
|
||||
define("useractionrepository", [apiClientBowerPath + "/sync/useractionrepository"], returnFirstDependency);
|
||||
define("scroller", [componentsPath + "/scroller"], returnFirstDependency);
|
||||
define("toast", [componentsPath + "/toast/toast"], returnFirstDependency);
|
||||
define("scrollHelper", [componentsPath + "/scrollhelper"], returnFirstDependency);
|
||||
|
@ -838,22 +850,12 @@ var AppInfo = {};
|
|||
define("appSettings", [componentsPath + "/appSettings"], returnFirstDependency);
|
||||
define("userSettings", [componentsPath + "/usersettings/usersettings"], returnFirstDependency);
|
||||
define("userSettingsBuilder", [componentsPath + "/usersettings/usersettingsbuilder", "layoutManager", "browser"], returnFirstDependency);
|
||||
define("material-icons", ["css!css/material-icons/style"], returnFirstDependency);
|
||||
define("systemFontsCss", ["css!css/fonts"], returnFirstDependency);
|
||||
define("systemFontsSizedCss", ["css!css/fonts.sized"], returnFirstDependency);
|
||||
define("scrollStyles", ["css!" + componentsPath + "/scrollstyles"], returnFirstDependency);
|
||||
define("imageUploader", [componentsPath + "/imageuploader/imageuploader"], returnFirstDependency);
|
||||
define("navdrawer", [componentsPath + "/navdrawer/navdrawer"], returnFirstDependency);
|
||||
define("htmlMediaHelper", [componentsPath + "/htmlMediaHelper"], returnFirstDependency);
|
||||
define("viewContainer", [componentsPath + "/viewContainer"], returnFirstDependency);
|
||||
define("queryString", [bowerPath + "/query-string/index"], function () {
|
||||
return queryString;
|
||||
});
|
||||
define("fnchecked", ["legacy/fnchecked"], returnFirstDependency);
|
||||
define("dialogHelper", [componentsPath + "/dialogHelper/dialogHelper"], returnFirstDependency);
|
||||
define("inputmanager", ["inputManager"], returnFirstDependency);
|
||||
define("serverNotifications", [componentsPath + "/serverNotifications/serverNotifications"], returnFirstDependency);
|
||||
define("appFooter-shared", ["appFooter"], createSharedAppFooter);
|
||||
define("skinManager", [componentsPath + "/skinManager"], returnFirstDependency);
|
||||
define("keyboardnavigation", [componentsPath + "/keyboardnavigation"], returnFirstDependency);
|
||||
define("connectionManager", [], function () {
|
||||
|
@ -1129,13 +1131,13 @@ var AppInfo = {};
|
|||
});
|
||||
})();
|
||||
|
||||
require(["css!css/site"]);
|
||||
|
||||
return require(["browser"], onWebComponentsReady);
|
||||
}();
|
||||
|
||||
pageClassOn("viewshow", "standalonePage", function () {
|
||||
document.querySelector(".skinHeader").classList.add("noHeaderRight");
|
||||
});
|
||||
|
||||
pageClassOn("viewhide", "standalonePage", function () {
|
||||
document.querySelector(".skinHeader").classList.remove("noHeaderRight");
|
||||
});
|
||||
|
|
|
@ -1297,7 +1297,6 @@
|
|||
"LabelHomeNetworkQuality": "Hjemme netværk kvalitet:",
|
||||
"LabelHomeScreenSectionValue": "Hjemmeskærm sektion {0}:",
|
||||
"LabelInternetQuality": "Internet kvalitet:",
|
||||
"LabelLocalSyncStatusValue": "Status: {0}",
|
||||
"LabelLogs": "Log:",
|
||||
"LabelMatchType": "Passer til type:",
|
||||
"LabelMaxBitrate": "Maks bitrate:",
|
||||
|
|
7
src/thirdparty/flvjs/flv.min.js
vendored
7
src/thirdparty/flvjs/flv.min.js
vendored
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue