';
letters = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
- html += '
';
+ html += `
`;
html += '
';
html += mapLetters(letters, vertical).join('');
html += '
';
@@ -95,227 +103,211 @@ define(['focusManager', 'layoutManager', 'dom', 'css!./style.css', 'paper-icon-b
element.focus = focus;
}
- function AlphaPicker(options) {
+ export class AlphaPicker {
+ constructor(options) {
+ const self = this;
- var self = this;
- this.options = options;
+ this.options = options;
- var element = options.element;
- var itemsContainer = options.itemsContainer;
- var itemClass = options.itemClass;
+ const element = options.element;
+ const itemsContainer = options.itemsContainer;
+ const itemClass = options.itemClass;
- var itemFocusValue;
- var itemFocusTimeout;
+ let itemFocusValue;
+ let itemFocusTimeout;
- function onItemFocusTimeout() {
- itemFocusTimeout = null;
- self.value(itemFocusValue);
- }
-
- var alphaFocusedElement;
- var alphaFocusTimeout;
-
- function onAlphaFocusTimeout() {
-
- alphaFocusTimeout = null;
-
- if (document.activeElement === alphaFocusedElement) {
- var value = alphaFocusedElement.getAttribute('data-value');
- self.value(value, true);
+ function onItemFocusTimeout() {
+ itemFocusTimeout = null;
+ self.value(itemFocusValue);
}
- }
- function onAlphaPickerInKeyboardModeClick(e) {
+ let alphaFocusedElement;
+ let alphaFocusTimeout;
- var alphaPickerButton = dom.parentWithClass(e.target, 'alphaPickerButton');
+ function onAlphaFocusTimeout() {
+ alphaFocusTimeout = null;
- if (alphaPickerButton) {
- var value = alphaPickerButton.getAttribute('data-value');
-
- element.dispatchEvent(new CustomEvent('alphavalueclicked', {
- cancelable: false,
- detail: {
- value: value
- }
- }));
- }
- }
-
- function onAlphaPickerClick(e) {
-
- var alphaPickerButton = dom.parentWithClass(e.target, 'alphaPickerButton');
-
- if (alphaPickerButton) {
- var value = alphaPickerButton.getAttribute('data-value');
- if ((this._currentValue || '').toUpperCase() === value.toUpperCase()) {
- self.value(null, true);
- } else {
+ if (document.activeElement === alphaFocusedElement) {
+ const value = alphaFocusedElement.getAttribute('data-value');
self.value(value, true);
}
}
- }
- function onAlphaPickerFocusIn(e) {
+ function onAlphaPickerInKeyboardModeClick(e) {
+ const alphaPickerButton = dom.parentWithClass(e.target, 'alphaPickerButton');
- if (alphaFocusTimeout) {
- clearTimeout(alphaFocusTimeout);
- alphaFocusTimeout = null;
+ if (alphaPickerButton) {
+ const value = alphaPickerButton.getAttribute('data-value');
+
+ element.dispatchEvent(new CustomEvent('alphavalueclicked', {
+ cancelable: false,
+ detail: {
+ value
+ }
+ }));
+ }
}
- var alphaPickerButton = dom.parentWithClass(e.target, 'alphaPickerButton');
+ function onAlphaPickerClick(e) {
+ const alphaPickerButton = dom.parentWithClass(e.target, 'alphaPickerButton');
- if (alphaPickerButton) {
- alphaFocusedElement = alphaPickerButton;
- alphaFocusTimeout = setTimeout(onAlphaFocusTimeout, 600);
- }
- }
-
- function onItemsFocusIn(e) {
-
- var item = dom.parentWithClass(e.target, itemClass);
-
- if (item) {
- var prefix = item.getAttribute('data-prefix');
- if (prefix && prefix.length) {
-
- itemFocusValue = prefix[0];
- if (itemFocusTimeout) {
- clearTimeout(itemFocusTimeout);
+ if (alphaPickerButton) {
+ const value = alphaPickerButton.getAttribute('data-value');
+ if ((this._currentValue || '').toUpperCase() === value.toUpperCase()) {
+ this.value(null, true);
+ } else {
+ this.value(value, true);
}
- itemFocusTimeout = setTimeout(onItemFocusTimeout, 100);
}
}
- }
- self.enabled = function (enabled) {
-
- if (enabled) {
-
- if (itemsContainer) {
- itemsContainer.addEventListener('focus', onItemsFocusIn, true);
+ function onAlphaPickerFocusIn(e) {
+ if (alphaFocusTimeout) {
+ clearTimeout(alphaFocusTimeout);
+ alphaFocusTimeout = null;
}
- if (options.mode === 'keyboard') {
- element.addEventListener('click', onAlphaPickerInKeyboardModeClick);
- }
+ const alphaPickerButton = dom.parentWithClass(e.target, 'alphaPickerButton');
- if (options.valueChangeEvent !== 'click') {
- element.addEventListener('focus', onAlphaPickerFocusIn, true);
+ if (alphaPickerButton) {
+ alphaFocusedElement = alphaPickerButton;
+ alphaFocusTimeout = setTimeout(onAlphaFocusTimeout, 600);
+ }
+ }
+
+ function onItemsFocusIn(e) {
+ const item = dom.parentWithClass(e.target, itemClass);
+
+ if (item) {
+ const prefix = item.getAttribute('data-prefix');
+ if (prefix && prefix.length) {
+ itemFocusValue = prefix[0];
+ if (itemFocusTimeout) {
+ clearTimeout(itemFocusTimeout);
+ }
+ itemFocusTimeout = setTimeout(onItemFocusTimeout, 100);
+ }
+ }
+ }
+
+ this.enabled = function (enabled) {
+ if (enabled) {
+ if (itemsContainer) {
+ itemsContainer.addEventListener('focus', onItemsFocusIn, true);
+ }
+
+ if (options.mode === 'keyboard') {
+ element.addEventListener('click', onAlphaPickerInKeyboardModeClick);
+ }
+
+ if (options.valueChangeEvent !== 'click') {
+ element.addEventListener('focus', onAlphaPickerFocusIn, true);
+ } else {
+ element.addEventListener('click', onAlphaPickerClick.bind(this));
+ }
} else {
- element.addEventListener('click', onAlphaPickerClick.bind(this));
- }
-
- } else {
-
- if (itemsContainer) {
- itemsContainer.removeEventListener('focus', onItemsFocusIn, true);
- }
-
- element.removeEventListener('click', onAlphaPickerInKeyboardModeClick);
- element.removeEventListener('focus', onAlphaPickerFocusIn, true);
- element.removeEventListener('click', onAlphaPickerClick.bind(this));
- }
- };
-
- render(element, options);
-
- this.enabled(true);
- this.visible(true);
- }
-
- AlphaPicker.prototype.value = function (value, applyValue) {
-
- var element = this.options.element;
- var btn;
- var selected;
-
- if (value !== undefined) {
- if (value != null) {
-
- value = value.toUpperCase();
- this._currentValue = value;
-
- if (this.options.mode !== 'keyboard') {
- selected = element.querySelector('.' + selectedButtonClass);
-
- try {
- btn = element.querySelector('.alphaPickerButton[data-value=\'' + value + '\']');
- } catch (err) {
- console.error('error in querySelector: ' + err);
+ if (itemsContainer) {
+ itemsContainer.removeEventListener('focus', onItemsFocusIn, true);
}
- if (btn && btn !== selected) {
- btn.classList.add(selectedButtonClass);
+ element.removeEventListener('click', onAlphaPickerInKeyboardModeClick);
+ element.removeEventListener('focus', onAlphaPickerFocusIn, true);
+ element.removeEventListener('click', onAlphaPickerClick.bind(this));
+ }
+ };
+
+ render(element, options);
+
+ this.enabled(true);
+ this.visible(true);
+ }
+
+ value(value, applyValue) {
+ const element = this.options.element;
+ let btn;
+ let selected;
+
+ if (value !== undefined) {
+ if (value != null) {
+ value = value.toUpperCase();
+ this._currentValue = value;
+
+ if (this.options.mode !== 'keyboard') {
+ selected = element.querySelector(`.${selectedButtonClass}`);
+
+ try {
+ btn = element.querySelector(`.alphaPickerButton[data-value='${value}']`);
+ } catch (err) {
+ console.error('error in querySelector:', err);
+ }
+
+ if (btn && btn !== selected) {
+ btn.classList.add(selectedButtonClass);
+ }
+ if (selected && selected !== btn) {
+ selected.classList.remove(selectedButtonClass);
+ }
}
- if (selected && selected !== btn) {
+ } else {
+ this._currentValue = value;
+
+ selected = element.querySelector(`.${selectedButtonClass}`);
+ if (selected) {
selected.classList.remove(selectedButtonClass);
}
}
- } else {
- this._currentValue = value;
-
- selected = element.querySelector('.' + selectedButtonClass);
- if (selected) {
- selected.classList.remove(selectedButtonClass);
- }
}
+
+ if (applyValue) {
+ element.dispatchEvent(new CustomEvent('alphavaluechanged', {
+ cancelable: false,
+ detail: {
+ value
+ }
+ }));
+ }
+
+ return this._currentValue;
}
- if (applyValue) {
- element.dispatchEvent(new CustomEvent('alphavaluechanged', {
- cancelable: false,
- detail: {
- value: value
- }
- }));
+ on(name, fn) {
+ const element = this.options.element;
+ element.addEventListener(name, fn);
}
- return this._currentValue;
- };
-
- AlphaPicker.prototype.on = function (name, fn) {
- var element = this.options.element;
- element.addEventListener(name, fn);
- };
-
- AlphaPicker.prototype.off = function (name, fn) {
- var element = this.options.element;
- element.removeEventListener(name, fn);
- };
-
- AlphaPicker.prototype.visible = function (visible) {
-
- var element = this.options.element;
- element.style.visibility = visible ? 'visible' : 'hidden';
- };
-
- AlphaPicker.prototype.values = function () {
-
- var element = this.options.element;
- var elems = element.querySelectorAll('.alphaPickerButton');
- var values = [];
- for (var i = 0, length = elems.length; i < length; i++) {
-
- values.push(elems[i].getAttribute('data-value'));
-
+ off(name, fn) {
+ const element = this.options.element;
+ element.removeEventListener(name, fn);
}
- return values;
- };
+ visible(visible) {
+ const element = this.options.element;
+ element.style.visibility = visible ? 'visible' : 'hidden';
+ }
- AlphaPicker.prototype.focus = function () {
+ values() {
+ const element = this.options.element;
+ const elems = element.querySelectorAll('.alphaPickerButton');
+ const values = [];
+ for (let i = 0, length = elems.length; i < length; i++) {
+ values.push(elems[i].getAttribute('data-value'));
+ }
- var element = this.options.element;
- focusManager.autoFocus(element, true);
- };
+ return values;
+ }
- AlphaPicker.prototype.destroy = function () {
+ focus() {
+ const element = this.options.element;
+ focusManager.autoFocus(element, true);
+ }
- var element = this.options.element;
- this.enabled(false);
- element.classList.remove('focuscontainer-x');
- this.options = null;
- };
+ destroy() {
+ const element = this.options.element;
+ this.enabled(false);
+ element.classList.remove('focuscontainer-x');
+ this.options = null;
+ }
+ }
- return AlphaPicker;
-});
+/* eslint-enable indent */
+export default AlphaPicker;
diff --git a/src/components/appFooter/appFooter.js b/src/components/appFooter/appFooter.js
index 033a0b008..c60aa1a27 100644
--- a/src/components/appFooter/appFooter.js
+++ b/src/components/appFooter/appFooter.js
@@ -1,17 +1,17 @@
-define(['browser', 'css!./appFooter'], function (browser) {
- 'use strict';
+import 'css!./appFooter';
- function render(options) {
- var elem = document.createElement('div');
- elem.classList.add('appfooter');
+function render(options) {
+ const elem = document.createElement('div');
+ elem.classList.add('appfooter');
- document.body.appendChild(elem);
+ document.body.appendChild(elem);
- return elem;
- }
+ return elem;
+}
- function appFooter(options) {
- var self = this;
+class appFooter {
+ constructor(options) {
+ const self = this;
self.element = render(options);
self.add = function (elem) {
@@ -26,12 +26,11 @@ define(['browser', 'css!./appFooter'], function (browser) {
}
};
}
-
- appFooter.prototype.destroy = function () {
+ destroy() {
var self = this;
self.element = null;
- };
+ }
+}
- return appFooter;
-});
+export default appFooter;
diff --git a/src/components/appRouter.js b/src/components/appRouter.js
index 58c64e7d4..138d58e5c 100644
--- a/src/components/appRouter.js
+++ b/src/components/appRouter.js
@@ -16,12 +16,12 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro
show('/settings/settings.html');
},
showNowPlaying: function () {
- show('/nowplaying.html');
+ show('queue');
}
};
function beginConnectionWizard() {
- backdrop.clear();
+ backdrop.clearBackdrop();
loading.show();
connectionManager.connect({
enableAutoLogin: appSettings.enableAutoLogin()
@@ -53,7 +53,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro
break;
case 'ServerUpdateNeeded':
require(['alert'], function (alert) {
- alert({
+ alert.default({
text: globalize.translate('ServerUpdateNeeded', 'https://github.com/jellyfin/jellyfin'),
html: globalize.translate('ServerUpdateNeeded', '
https://github.com/jellyfin/jellyfin')
}).then(function () {
@@ -153,20 +153,14 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro
};
if (!isBackNav) {
- // Don't force a new view for home due to the back menu
- //if (route.type !== 'home') {
onNewViewNeeded();
return;
- //}
}
viewManager.tryRestoreView(currentRequest, function () {
-
- // done
currentRouteInfo = {
route: route,
path: ctx.path
};
-
}).catch(function (result) {
if (!result || !result.cancelled) {
onNewViewNeeded();
@@ -197,12 +191,10 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro
}
function onRequestFail(e, data) {
-
var apiClient = this;
if (data.status === 403) {
if (data.errorCode === 'ParentalControl') {
-
var isCurrentAllowed = currentRouteInfo ? (currentRouteInfo.route.anonymous || currentRouteInfo.route.startup) : true;
// Bounce to the login screen, but not if a password entry fails, obviously
@@ -210,7 +202,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro
showForcedLogoutMessage(globalize.translate('AccessRestrictedTryAgainLater'));
appRouter.showLocalLogin(apiClient.serverId());
}
-
}
}
}
@@ -237,7 +228,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro
if (navigator.connection) {
var max = navigator.connection.downlinkMax;
if (max && max > 0 && max < Number.POSITIVE_INFINITY) {
-
max /= 8;
max *= 1000000;
max *= 0.7;
@@ -255,7 +245,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro
}
function onApiClientCreated(e, newApiClient) {
-
newApiClient.normalizeImageOptions = normalizeImageOptions;
if (browser.iOS) {
@@ -269,12 +258,10 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro
}
function initApiClient(apiClient) {
-
onApiClientCreated({}, apiClient);
}
function initApiClients() {
-
connectionManager.getApiClients().forEach(initApiClient);
events.on(connectionManager, 'apiclientcreated', onApiClientCreated);
@@ -290,7 +277,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro
var firstConnectionResult;
function start(options) {
-
loading.show();
initApiClients();
@@ -302,53 +288,29 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro
enableAutoLogin: appSettings.enableAutoLogin()
}).then(function (result) {
-
firstConnectionResult = result;
options = options || {};
page({
click: options.click !== false,
- hashbang: options.hashbang !== false,
- enableHistory: enableHistory()
+ hashbang: options.hashbang !== false
});
}).catch().then(function() {
loading.hide();
});
}
- function enableHistory() {
-
- //if (browser.edgeUwp) {
- // return false;
- //}
-
- // shows status bar on navigation
- if (browser.xboxOne) {
- return false;
- }
-
- // Does not support history
- if (browser.orsay) {
- return false;
- }
-
- return true;
- }
-
function enableNativeHistory() {
return false;
}
function authenticate(ctx, route, callback) {
-
var firstResult = firstConnectionResult;
if (firstResult) {
-
firstConnectionResult = null;
if (firstResult.State !== 'SignedIn' && !route.anonymous) {
-
handleConnectionResult(firstResult);
return;
}
@@ -377,7 +339,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro
}
if (apiClient && apiClient.isLoggedIn()) {
-
console.debug('appRouter - user is authenticated');
if (route.isDefaultRoute) {
@@ -385,11 +346,8 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro
loadUserSkinWithOptions(ctx);
return;
} else if (route.roles) {
-
validateRoles(apiClient, route.roles).then(function () {
-
callback();
-
}, beginConnectionWizard);
return;
}
@@ -431,8 +389,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro
var isDummyBackToHome;
function loadContent(ctx, route, html, request) {
-
- html = globalize.translateDocument(html, route.dictionary);
+ html = globalize.translateHtml(html, route.dictionary);
request.view = html;
viewManager.loadView(request);
@@ -491,7 +448,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro
}
function getWindowLocationSearch(win) {
-
var currentPath = currentRouteInfo ? (currentRouteInfo.path || '') : '';
var index = currentPath.indexOf('?');
@@ -535,9 +491,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro
if (!document.querySelector('.dialogContainer') && startPages.indexOf(curr.type) !== -1) {
return false;
}
- if (enableHistory()) {
- return history.length > 1;
- }
+
return (page.len || 0) > 0;
}
@@ -624,7 +578,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro
}
if (level === 'full' || level === 2) {
- backdrop.clear(true);
+ backdrop.clearBackdrop(true);
document.documentElement.classList.add('transparentDocument');
backgroundContainer.classList.add('backgroundContainer-transparent');
backdropContainer.classList.add('hide');
@@ -644,7 +598,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro
function pushState(state, title, url) {
state.navigate = false;
history.pushState(state, title, url);
-
}
function setBaseRoute() {
diff --git a/src/components/apphost.js b/src/components/apphost.js
index f200b9a64..d447c7ea4 100644
--- a/src/components/apphost.js
+++ b/src/components/apphost.js
@@ -257,12 +257,6 @@ define(['appSettings', 'browser', 'events', 'htmlMediaHelper', 'webSettings', 'g
features.push('fullscreenchange');
}
- if (browser.chrome || browser.edge && !browser.slow) {
- if (!browser.noAnimation && !browser.edgeUwp && !browser.xboxOne) {
- features.push('imageanalysis');
- }
- }
-
if (browser.tv || browser.xboxOne || browser.ps4 || browser.mobile) {
features.push('physicalvolumecontrol');
}
diff --git a/src/components/backdrop/backdrop.js b/src/components/backdrop/backdrop.js
index c15e35524..d3c9e58b5 100644
--- a/src/components/backdrop/backdrop.js
+++ b/src/components/backdrop/backdrop.js
@@ -1,5 +1,11 @@
-define(['browser', 'connectionManager', 'playbackManager', 'dom', 'userSettings', 'css!./backdrop'], function (browser, connectionManager, playbackManager, dom, userSettings) {
- 'use strict';
+import browser from 'browser';
+import connectionManager from 'connectionManager';
+import playbackManager from 'playbackManager';
+import dom from 'dom';
+import * as userSettings from 'userSettings';
+import 'css!./backdrop';
+
+/* eslint-disable indent */
function enableAnimation(elem) {
if (browser.slow) {
@@ -22,71 +28,70 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'userSettings'
return true;
}
- function Backdrop() {
- }
+ class Backdrop {
+ load(url, parent, existingBackdropImage) {
+ const img = new Image();
+ const self = this;
- Backdrop.prototype.load = function (url, parent, existingBackdropImage) {
- var img = new Image();
- var self = this;
-
- img.onload = function () {
- if (self.isDestroyed) {
- return;
- }
-
- var backdropImage = document.createElement('div');
- backdropImage.classList.add('backdropImage');
- backdropImage.classList.add('displayingBackdropImage');
- backdropImage.style.backgroundImage = "url('" + url + "')";
- backdropImage.setAttribute('data-url', url);
-
- backdropImage.classList.add('backdropImageFadeIn');
- parent.appendChild(backdropImage);
-
- if (!enableAnimation(backdropImage)) {
- if (existingBackdropImage && existingBackdropImage.parentNode) {
- existingBackdropImage.parentNode.removeChild(existingBackdropImage);
+ img.onload = () => {
+ if (self.isDestroyed) {
+ return;
}
- internalBackdrop(true);
- return;
- }
- var onAnimationComplete = function () {
- dom.removeEventListener(backdropImage, dom.whichAnimationEvent(), onAnimationComplete, {
+ const backdropImage = document.createElement('div');
+ backdropImage.classList.add('backdropImage');
+ backdropImage.classList.add('displayingBackdropImage');
+ backdropImage.style.backgroundImage = `url('${url}')`;
+ backdropImage.setAttribute('data-url', url);
+
+ backdropImage.classList.add('backdropImageFadeIn');
+ parent.appendChild(backdropImage);
+
+ if (!enableAnimation(backdropImage)) {
+ if (existingBackdropImage && existingBackdropImage.parentNode) {
+ existingBackdropImage.parentNode.removeChild(existingBackdropImage);
+ }
+ internalBackdrop(true);
+ return;
+ }
+
+ const onAnimationComplete = () => {
+ dom.removeEventListener(backdropImage, dom.whichAnimationEvent(), onAnimationComplete, {
+ once: true
+ });
+ if (backdropImage === self.currentAnimatingElement) {
+ self.currentAnimatingElement = null;
+ }
+ if (existingBackdropImage && existingBackdropImage.parentNode) {
+ existingBackdropImage.parentNode.removeChild(existingBackdropImage);
+ }
+ };
+
+ dom.addEventListener(backdropImage, dom.whichAnimationEvent(), onAnimationComplete, {
once: true
});
- if (backdropImage === self.currentAnimatingElement) {
- self.currentAnimatingElement = null;
- }
- if (existingBackdropImage && existingBackdropImage.parentNode) {
- existingBackdropImage.parentNode.removeChild(existingBackdropImage);
- }
+
+ internalBackdrop(true);
};
- dom.addEventListener(backdropImage, dom.whichAnimationEvent(), onAnimationComplete, {
- once: true
- });
-
- internalBackdrop(true);
- };
-
- img.src = url;
- };
-
- Backdrop.prototype.cancelAnimation = function () {
- var elem = this.currentAnimatingElement;
- if (elem) {
- elem.classList.remove('backdropImageFadeIn');
- this.currentAnimatingElement = null;
+ img.src = url;
}
- };
- Backdrop.prototype.destroy = function () {
- this.isDestroyed = true;
- this.cancelAnimation();
- };
+ cancelAnimation() {
+ const elem = this.currentAnimatingElement;
+ if (elem) {
+ elem.classList.remove('backdropImageFadeIn');
+ this.currentAnimatingElement = null;
+ }
+ }
- var backdropContainer;
+ destroy() {
+ this.isDestroyed = true;
+ this.cancelAnimation();
+ }
+ }
+
+ let backdropContainer;
function getBackdropContainer() {
if (!backdropContainer) {
backdropContainer = document.querySelector('.backdropContainer');
@@ -101,7 +106,7 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'userSettings'
return backdropContainer;
}
- function clearBackdrop(clearAll) {
+ export function clearBackdrop(clearAll) {
clearRotation();
if (currentLoadingBackdrop) {
@@ -109,7 +114,7 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'userSettings'
currentLoadingBackdrop = null;
}
- var elem = getBackdropContainer();
+ const elem = getBackdropContainer();
elem.innerHTML = '';
if (clearAll) {
@@ -119,7 +124,7 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'userSettings'
internalBackdrop(false);
}
- var backgroundContainer;
+ let backgroundContainer;
function getBackgroundContainer() {
if (!backgroundContainer) {
backgroundContainer = document.querySelector('.backgroundContainer');
@@ -135,31 +140,27 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'userSettings'
}
}
- var hasInternalBackdrop;
+ let hasInternalBackdrop;
function internalBackdrop(enabled) {
hasInternalBackdrop = enabled;
setBackgroundContainerBackgroundEnabled();
}
- var hasExternalBackdrop;
- function externalBackdrop(enabled) {
+ let hasExternalBackdrop;
+ export function externalBackdrop(enabled) {
hasExternalBackdrop = enabled;
setBackgroundContainerBackgroundEnabled();
}
- function getRandom(min, max) {
- return Math.floor(Math.random() * (max - min) + min);
- }
-
- var currentLoadingBackdrop;
+ let currentLoadingBackdrop;
function setBackdropImage(url) {
if (currentLoadingBackdrop) {
currentLoadingBackdrop.destroy();
currentLoadingBackdrop = null;
}
- var elem = getBackdropContainer();
- var existingBackdropImage = elem.querySelector('.displayingBackdropImage');
+ const elem = getBackdropContainer();
+ const existingBackdropImage = elem.querySelector('.displayingBackdropImage');
if (existingBackdropImage && existingBackdropImage.getAttribute('data-url') === url) {
if (existingBackdropImage.getAttribute('data-url') === url) {
@@ -168,7 +169,7 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'userSettings'
existingBackdropImage.classList.remove('displayingBackdropImage');
}
- var instance = new Backdrop();
+ const instance = new Backdrop();
instance.load(url, elem, existingBackdropImage);
currentLoadingBackdrop = instance;
}
@@ -176,9 +177,9 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'userSettings'
function getItemImageUrls(item, imageOptions) {
imageOptions = imageOptions || {};
- var apiClient = connectionManager.getApiClient(item.ServerId);
+ const apiClient = connectionManager.getApiClient(item.ServerId);
if (item.BackdropImageTags && item.BackdropImageTags.length > 0) {
- return item.BackdropImageTags.map(function (imgTag, index) {
+ return item.BackdropImageTags.map((imgTag, index) => {
return apiClient.getScaledImageUrl(item.BackdropItemId || item.Id, Object.assign(imageOptions, {
type: 'Backdrop',
tag: imgTag,
@@ -189,7 +190,7 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'userSettings'
}
if (item.ParentBackdropItemId && item.ParentBackdropImageTags && item.ParentBackdropImageTags.length) {
- return item.ParentBackdropImageTags.map(function (imgTag, index) {
+ return item.ParentBackdropImageTags.map((imgTag, index) => {
return apiClient.getScaledImageUrl(item.ParentBackdropItemId, Object.assign(imageOptions, {
type: 'Backdrop',
tag: imgTag,
@@ -203,13 +204,13 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'userSettings'
}
function getImageUrls(items, imageOptions) {
- var list = [];
- var onImg = function (img) {
+ const list = [];
+ const onImg = img => {
list.push(img);
};
- for (var i = 0, length = items.length; i < length; i++) {
- var itemImages = getItemImageUrls(items[i], imageOptions);
+ for (let i = 0, length = items.length; i < length; i++) {
+ const itemImages = getItemImageUrls(items[i], imageOptions);
itemImages.forEach(onImg);
}
@@ -229,7 +230,7 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'userSettings'
// 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) {
+ for (let i = 0; i < a.length; ++i) {
if (a[i] !== b[i]) {
return false;
}
@@ -242,12 +243,12 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'userSettings'
return userSettings.enableBackdrops();
}
- var rotationInterval;
- var currentRotatingImages = [];
- var currentRotationIndex = -1;
- function setBackdrops(items, imageOptions, enableImageRotation) {
+ let rotationInterval;
+ let currentRotatingImages = [];
+ let currentRotationIndex = -1;
+ export function setBackdrops(items, imageOptions, enableImageRotation) {
if (enabled()) {
- var images = getImageUrls(items, imageOptions);
+ const images = getImageUrls(items, imageOptions);
if (images.length) {
startRotation(images, enableImageRotation);
@@ -279,7 +280,7 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'userSettings'
return;
}
- var newIndex = currentRotationIndex + 1;
+ let newIndex = currentRotationIndex + 1;
if (newIndex >= currentRotatingImages.length) {
newIndex = 0;
}
@@ -289,7 +290,7 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'userSettings'
}
function clearRotation() {
- var interval = rotationInterval;
+ const interval = rotationInterval;
if (interval) {
clearInterval(interval);
}
@@ -299,7 +300,7 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'userSettings'
currentRotationIndex = -1;
}
- function setBackdrop(url, imageOptions) {
+ export function setBackdrop(url, imageOptions) {
if (url && typeof url !== 'string') {
url = getImageUrls([url], imageOptions)[0];
}
@@ -312,10 +313,11 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'userSettings'
}
}
- return {
- setBackdrops: setBackdrops,
- setBackdrop: setBackdrop,
- clear: clearBackdrop,
- externalBackdrop: externalBackdrop
- };
-});
+/* eslint-enable indent */
+
+export default {
+ setBackdrops: setBackdrops,
+ setBackdrop: setBackdrop,
+ clearBackdrop: clearBackdrop,
+ externalBackdrop: externalBackdrop
+};
diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js
index d192bed7f..edb9db28b 100644
--- a/src/components/cardbuilder/cardBuilder.js
+++ b/src/components/cardbuilder/cardBuilder.js
@@ -291,12 +291,10 @@ import 'programStyles';
const primaryImageAspectRatio = imageLoader.getPrimaryImageAspectRatio(items);
if (['auto', 'autohome', 'autooverflow', 'autoVertical'].includes(options.shape)) {
-
const requestedShape = options.shape;
options.shape = null;
if (primaryImageAspectRatio) {
-
if (primaryImageAspectRatio >= 3) {
options.shape = 'banner';
options.coverImage = true;
@@ -394,7 +392,6 @@ import 'programStyles';
}
if (newIndexValue !== currentIndexValue) {
-
if (hasOpenRow) {
html += '
';
hasOpenRow = false;
@@ -402,7 +399,6 @@ import 'programStyles';
}
if (hasOpenSection) {
-
html += '