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