Merge pull request #1589 from Camc314/migrate-to-ES6-33

Migration of alphanumericshortcuts, autobackdrops and youtubeplayer plugin to ES6 modules
This commit is contained in:
dkanada 2020-07-23 12:00:22 +09:00 committed by GitHub
commit fd8baaa8c8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 409 additions and 422 deletions

View file

@ -224,6 +224,8 @@
"src/plugins/bookPlayer/plugin.js", "src/plugins/bookPlayer/plugin.js",
"src/plugins/bookPlayer/tableOfContents.js", "src/plugins/bookPlayer/tableOfContents.js",
"src/plugins/photoPlayer/plugin.js", "src/plugins/photoPlayer/plugin.js",
"src/scripts/alphanumericshortcuts.js",
"src/scripts/autoBackdrops.js",
"src/scripts/settings/appSettings.js", "src/scripts/settings/appSettings.js",
"src/scripts/settings/userSettings.js", "src/scripts/settings/userSettings.js",
"src/scripts/settings/webSettings.js", "src/scripts/settings/webSettings.js",
@ -236,6 +238,7 @@
"src/scripts/imagehelper.js", "src/scripts/imagehelper.js",
"src/scripts/inputManager.js", "src/scripts/inputManager.js",
"src/plugins/backdropScreensaver/plugin.js", "src/plugins/backdropScreensaver/plugin.js",
"src/plugins/youtubePlayer/plugin.js",
"src/components/filterdialog/filterdialog.js", "src/components/filterdialog/filterdialog.js",
"src/components/fetchhelper.js", "src/components/fetchhelper.js",
"src/scripts/editorsidebar.js", "src/scripts/editorsidebar.js",

View file

@ -331,7 +331,7 @@ define(['playbackManager', 'userSettings', 'alphaPicker', 'alphaNumericShortcuts
} }
if (this.enableAlphaNumericShortcuts !== false) { if (this.enableAlphaNumericShortcuts !== false) {
this.alphaNumericShortcuts = new AlphaNumericShortcuts({ this.alphaNumericShortcuts = new AlphaNumericShortcuts.default({
itemsContainer: this.itemsContainer itemsContainer: this.itemsContainer
}); });
} }
@ -561,7 +561,7 @@ define(['playbackManager', 'userSettings', 'alphaPicker', 'alphaNumericShortcuts
var alphaNumericShortcuts = this.alphaNumericShortcuts; var alphaNumericShortcuts = this.alphaNumericShortcuts;
if (alphaNumericShortcuts) { if (alphaNumericShortcuts) {
alphaNumericShortcuts.destroy(); alphaNumericShortcuts.default.destroy();
this.alphaNumericShortcuts = null; this.alphaNumericShortcuts = null;
} }
}; };

View file

@ -803,7 +803,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
bindAll(view.querySelectorAll('.btnShuffle'), 'click', shuffle); bindAll(view.querySelectorAll('.btnShuffle'), 'click', shuffle);
} }
this.alphaNumericShortcuts = new AlphaNumericShortcuts({ this.alphaNumericShortcuts = new AlphaNumericShortcuts.default({
itemsContainer: self.itemsContainer itemsContainer: self.itemsContainer
}); });
}); });
@ -817,7 +817,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
var alphaNumericShortcuts = self.alphaNumericShortcuts; var alphaNumericShortcuts = self.alphaNumericShortcuts;
if (alphaNumericShortcuts) { if (alphaNumericShortcuts) {
alphaNumericShortcuts.destroy(); alphaNumericShortcuts.default.destroy();
self.alphaNumericShortcuts = null; self.alphaNumericShortcuts = null;
} }
}); });

View file

@ -1,14 +1,18 @@
define(['require', 'events', 'browser', 'appRouter', 'loading'], function (require, events, browser, appRouter, loading) { import require from 'require';
'use strict'; import events from 'events';
import browser from 'browser';
import appRouter from 'appRouter';
import loading from 'loading';
/* globals YT */ /* globals YT */
function zoomIn(elem, iterations) { function zoomIn(elem, iterations) {
var keyframes = [ const keyframes = [
{ transform: 'scale3d(.2, .2, .2) ', opacity: '.6', offset: 0 }, { transform: 'scale3d(.2, .2, .2) ', opacity: '.6', offset: 0 },
{ transform: 'none', opacity: '1', offset: 1 } { transform: 'none', opacity: '1', offset: 1 }
]; ];
var timing = { duration: 240, iterations: iterations }; const timing = { duration: 240, iterations: iterations };
return elem.animate(keyframes, timing); return elem.animate(keyframes, timing);
} }
@ -16,15 +20,15 @@ define(['require', 'events', 'browser', 'appRouter', 'loading'], function (requi
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
var dlg = document.querySelector('.youtubePlayerContainer'); const dlg = document.querySelector('.youtubePlayerContainer');
if (!dlg) { if (!dlg) {
require(['css!./style'], function () { import('css!./style').then(() => {
loading.show(); loading.show();
var dlg = document.createElement('div'); const dlg = document.createElement('div');
dlg.classList.add('youtubePlayerContainer'); dlg.classList.add('youtubePlayerContainer');
@ -33,7 +37,7 @@ define(['require', 'events', 'browser', 'appRouter', 'loading'], function (requi
} }
dlg.innerHTML = '<div id="player"></div>'; dlg.innerHTML = '<div id="player"></div>';
var videoElement = dlg.querySelector('#player'); const videoElement = dlg.querySelector('#player');
document.body.insertBefore(dlg, document.body.firstChild); document.body.insertBefore(dlg, document.body.firstChild);
instance.videoDialog = dlg; instance.videoDialog = dlg;
@ -55,9 +59,9 @@ define(['require', 'events', 'browser', 'appRouter', 'loading'], function (requi
} }
function onVideoResize() { function onVideoResize() {
var instance = this; const instance = this;
var player = instance.currentYoutubePlayer; const player = instance.currentYoutubePlayer;
var dlg = instance.videoDialog; const dlg = instance.videoDialog;
if (player && dlg) { if (player && dlg) {
player.setSize(dlg.offsetWidth, dlg.offsetHeight); player.setSize(dlg.offsetWidth, dlg.offsetHeight);
} }
@ -73,14 +77,14 @@ define(['require', 'events', 'browser', 'appRouter', 'loading'], function (requi
function onEndedInternal(instance) { function onEndedInternal(instance) {
clearTimeUpdateInterval(instance); clearTimeUpdateInterval(instance);
var resizeListener = instance.resizeListener; const resizeListener = instance.resizeListener;
if (resizeListener) { if (resizeListener) {
window.removeEventListener('resize', resizeListener); window.removeEventListener('resize', resizeListener);
window.removeEventListener('orientationChange', resizeListener); window.removeEventListener('orientationChange', resizeListener);
instance.resizeListener = null; instance.resizeListener = null;
} }
var stopInfo = { const stopInfo = {
src: instance._currentSrc src: instance._currentSrc
}; };
@ -123,7 +127,7 @@ define(['require', 'events', 'browser', 'appRouter', 'loading'], function (requi
instance.videoDialog.classList.remove('onTop'); instance.videoDialog.classList.remove('onTop');
} }
require(['loading'], function (loading) { import('loading').then(({default: loading}) => {
loading.hide(); loading.hide();
}); });
@ -134,10 +138,10 @@ define(['require', 'events', 'browser', 'appRouter', 'loading'], function (requi
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
require(['queryString'], function (queryString) { import('queryString').then(({default: queryString}) => {
instance._currentSrc = options.url; instance._currentSrc = options.url;
var params = queryString.parse(options.url.split('?')[1]); const params = queryString.parse(options.url.split('?')[1]);
// 3. This function creates an <iframe> (and YouTube player) // 3. This function creates an <iframe> (and YouTube player)
// after the API code downloads. // after the API code downloads.
window.onYouTubeIframeAPIReady = function () { window.onYouTubeIframeAPIReady = function () {
@ -168,7 +172,7 @@ define(['require', 'events', 'browser', 'appRouter', 'loading'], function (requi
} }
}); });
var resizeListener = instance.resizeListener; let resizeListener = instance.resizeListener;
if (resizeListener) { if (resizeListener) {
window.removeEventListener('resize', resizeListener); window.removeEventListener('resize', resizeListener);
window.addEventListener('resize', resizeListener); window.addEventListener('resize', resizeListener);
@ -181,9 +185,9 @@ define(['require', 'events', 'browser', 'appRouter', 'loading'], function (requi
}; };
if (!window.YT) { if (!window.YT) {
var tag = document.createElement('script'); const tag = document.createElement('script');
tag.src = 'https://www.youtube.com/iframe_api'; tag.src = 'https://www.youtube.com/iframe_api';
var firstScriptTag = document.getElementsByTagName('script')[0]; const firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
} else { } else {
window.onYouTubeIframeAPIReady(); window.onYouTubeIframeAPIReady();
@ -193,7 +197,8 @@ define(['require', 'events', 'browser', 'appRouter', 'loading'], function (requi
}); });
} }
function YoutubePlayer() { class YoutubePlayer {
constructor() {
this.name = 'Youtube Player'; this.name = 'Youtube Player';
this.type = 'mediaplayer'; this.type = 'mediaplayer';
@ -202,21 +207,19 @@ define(['require', 'events', 'browser', 'appRouter', 'loading'], function (requi
// Let any players created by plugins take priority // Let any players created by plugins take priority
this.priority = 1; this.priority = 1;
} }
play(options) {
YoutubePlayer.prototype.play = function (options) {
this.started = false; this.started = false;
var instance = this; const instance = this;
return createMediaElement(this, options).then(function (elem) { return createMediaElement(this, options).then(function (elem) {
return setCurrentSrc(instance, elem, options); return setCurrentSrc(instance, elem, options);
}); });
}; }
stop(destroyPlayer) {
YoutubePlayer.prototype.stop = function (destroyPlayer) { const src = this._currentSrc;
var src = this._currentSrc;
if (src) { if (src) {
@ -231,63 +234,52 @@ define(['require', 'events', 'browser', 'appRouter', 'loading'], function (requi
} }
return Promise.resolve(); return Promise.resolve();
}; }
destroy() {
YoutubePlayer.prototype.destroy = function () {
appRouter.setTransparency('none'); appRouter.setTransparency('none');
var dlg = this.videoDialog; const dlg = this.videoDialog;
if (dlg) { if (dlg) {
this.videoDialog = null; this.videoDialog = null;
dlg.parentNode.removeChild(dlg); dlg.parentNode.removeChild(dlg);
} }
}; }
canPlayMediaType(mediaType) {
YoutubePlayer.prototype.canPlayMediaType = function (mediaType) {
mediaType = (mediaType || '').toLowerCase(); mediaType = (mediaType || '').toLowerCase();
return mediaType === 'audio' || mediaType === 'video'; return mediaType === 'audio' || mediaType === 'video';
}; }
canPlayItem(item) {
YoutubePlayer.prototype.canPlayItem = function (item) {
// Does not play server items // Does not play server items
return false; return false;
}; }
canPlayUrl(url) {
YoutubePlayer.prototype.canPlayUrl = function (url) {
return url.toLowerCase().indexOf('youtube.com') !== -1; return url.toLowerCase().indexOf('youtube.com') !== -1;
}; }
getDeviceProfile() {
YoutubePlayer.prototype.getDeviceProfile = function () {
return Promise.resolve({}); return Promise.resolve({});
}; }
currentSrc() {
YoutubePlayer.prototype.currentSrc = function () {
return this._currentSrc; return this._currentSrc;
}; }
setSubtitleStreamIndex(index) {
YoutubePlayer.prototype.setSubtitleStreamIndex = function (index) { }
}; canSetAudioStreamIndex() {
YoutubePlayer.prototype.canSetAudioStreamIndex = function () {
return false; return false;
}; }
setAudioStreamIndex(index) {
YoutubePlayer.prototype.setAudioStreamIndex = function (index) { }
};
// Save this for when playback stops, because querying the time at that point might return 0 // Save this for when playback stops, because querying the time at that point might return 0
YoutubePlayer.prototype.currentTime = function (val) { currentTime(val) {
var currentYoutubePlayer = this.currentYoutubePlayer; const currentYoutubePlayer = this.currentYoutubePlayer;
if (currentYoutubePlayer) { if (currentYoutubePlayer) {
if (val != null) { if (val != null) {
@ -297,92 +289,84 @@ define(['require', 'events', 'browser', 'appRouter', 'loading'], function (requi
return currentYoutubePlayer.getCurrentTime() * 1000; return currentYoutubePlayer.getCurrentTime() * 1000;
} }
}; }
duration(val) {
YoutubePlayer.prototype.duration = function (val) { const currentYoutubePlayer = this.currentYoutubePlayer;
var currentYoutubePlayer = this.currentYoutubePlayer;
if (currentYoutubePlayer) { if (currentYoutubePlayer) {
return currentYoutubePlayer.getDuration() * 1000; return currentYoutubePlayer.getDuration() * 1000;
} }
return null; return null;
}; }
pause() {
YoutubePlayer.prototype.pause = function () { const currentYoutubePlayer = this.currentYoutubePlayer;
var currentYoutubePlayer = this.currentYoutubePlayer;
if (currentYoutubePlayer) { if (currentYoutubePlayer) {
currentYoutubePlayer.pauseVideo(); currentYoutubePlayer.pauseVideo();
var instance = this; const instance = this;
// This needs a delay before the youtube player will report the correct player state // This needs a delay before the youtube player will report the correct player state
setTimeout(function () { setTimeout(function () {
events.trigger(instance, 'pause'); events.trigger(instance, 'pause');
}, 200); }, 200);
} }
}; }
unpause() {
YoutubePlayer.prototype.unpause = function () { const currentYoutubePlayer = this.currentYoutubePlayer;
var currentYoutubePlayer = this.currentYoutubePlayer;
if (currentYoutubePlayer) { if (currentYoutubePlayer) {
currentYoutubePlayer.playVideo(); currentYoutubePlayer.playVideo();
var instance = this; const instance = this;
// This needs a delay before the youtube player will report the correct player state // This needs a delay before the youtube player will report the correct player state
setTimeout(function () { setTimeout(function () {
events.trigger(instance, 'unpause'); events.trigger(instance, 'unpause');
}, 200); }, 200);
} }
}; }
paused() {
YoutubePlayer.prototype.paused = function () { const currentYoutubePlayer = this.currentYoutubePlayer;
var currentYoutubePlayer = this.currentYoutubePlayer;
if (currentYoutubePlayer) { if (currentYoutubePlayer) {
return currentYoutubePlayer.getPlayerState() === 2; return currentYoutubePlayer.getPlayerState() === 2;
} }
return false; return false;
}; }
volume(val) {
YoutubePlayer.prototype.volume = function (val) {
if (val != null) { if (val != null) {
return this.setVolume(val); return this.setVolume(val);
} }
return this.getVolume(); return this.getVolume();
}; }
setVolume(val) {
YoutubePlayer.prototype.setVolume = function (val) { const currentYoutubePlayer = this.currentYoutubePlayer;
var currentYoutubePlayer = this.currentYoutubePlayer;
if (currentYoutubePlayer) { if (currentYoutubePlayer) {
if (val != null) { if (val != null) {
currentYoutubePlayer.setVolume(val); currentYoutubePlayer.setVolume(val);
} }
} }
}; }
getVolume() {
YoutubePlayer.prototype.getVolume = function () { const currentYoutubePlayer = this.currentYoutubePlayer;
var currentYoutubePlayer = this.currentYoutubePlayer;
if (currentYoutubePlayer) { if (currentYoutubePlayer) {
return currentYoutubePlayer.getVolume(); return currentYoutubePlayer.getVolume();
} }
}; }
setMute(mute) {
YoutubePlayer.prototype.setMute = function (mute) { const currentYoutubePlayer = this.currentYoutubePlayer;
var currentYoutubePlayer = this.currentYoutubePlayer;
if (mute) { if (mute) {
if (currentYoutubePlayer) { if (currentYoutubePlayer) {
@ -394,16 +378,15 @@ define(['require', 'events', 'browser', 'appRouter', 'loading'], function (requi
currentYoutubePlayer.unMute(); currentYoutubePlayer.unMute();
} }
} }
}; }
isMuted() {
YoutubePlayer.prototype.isMuted = function () { const currentYoutubePlayer = this.currentYoutubePlayer;
var currentYoutubePlayer = this.currentYoutubePlayer;
if (currentYoutubePlayer) { if (currentYoutubePlayer) {
return currentYoutubePlayer.isMuted(); return currentYoutubePlayer.isMuted();
} }
}; }
}
return YoutubePlayer; export default YoutubePlayer;
});

View file

@ -1,9 +1,9 @@
define(['dom', 'focusManager'], function (dom, focusManager) { import dom from 'dom';
'use strict'; import focusManager from 'focusManager';
var inputDisplayElement; let inputDisplayElement;
var currentDisplayText = ''; let currentDisplayText = '';
var currentDisplayTextContainer; let currentDisplayTextContainer;
function onKeyDown(e) { function onKeyDown(e) {
@ -17,8 +17,8 @@ define(['dom', 'focusManager'], function (dom, focusManager) {
return; return;
} }
var key = e.key; const key = e.key;
var chr = key ? alphanumeric(key) : null; let chr = key ? alphanumeric(key) : null;
if (chr) { if (chr) {
@ -32,7 +32,7 @@ define(['dom', 'focusManager'], function (dom, focusManager) {
} }
function alphanumeric(value) { function alphanumeric(value) {
var letterNumber = /^[0-9a-zA-Z]+$/; const letterNumber = /^[0-9a-zA-Z]+$/;
return value.match(letterNumber); return value.match(letterNumber);
} }
@ -46,7 +46,7 @@ define(['dom', 'focusManager'], function (dom, focusManager) {
} }
} }
var alpanumericShortcutTimeout; let alpanumericShortcutTimeout;
function clearAlphaNumericShortcutTimeout() { function clearAlphaNumericShortcutTimeout() {
if (alpanumericShortcutTimeout) { if (alpanumericShortcutTimeout) {
clearTimeout(alpanumericShortcutTimeout); clearTimeout(alpanumericShortcutTimeout);
@ -70,8 +70,8 @@ define(['dom', 'focusManager'], function (dom, focusManager) {
} }
function onAlphanumericShortcutTimeout() { function onAlphanumericShortcutTimeout() {
var value = currentDisplayText; const value = currentDisplayText;
var container = currentDisplayTextContainer; const container = currentDisplayTextContainer;
currentDisplayText = ''; currentDisplayText = '';
currentDisplayTextContainer = null; currentDisplayTextContainer = null;
@ -85,7 +85,7 @@ define(['dom', 'focusManager'], function (dom, focusManager) {
value = value.toUpperCase(); value = value.toUpperCase();
var focusElem; let focusElem;
if (value === '#') { if (value === '#') {
focusElem = container.querySelector('*[data-prefix]'); focusElem = container.querySelector('*[data-prefix]');
@ -100,11 +100,12 @@ define(['dom', 'focusManager'], function (dom, focusManager) {
} }
} }
function AlphaNumericShortcuts(options) { class AlphaNumericShortcuts {
constructor(options) {
this.options = options; this.options = options;
var keyDownHandler = onKeyDown.bind(this); const keyDownHandler = onKeyDown.bind(this);
dom.addEventListener(window, 'keydown', keyDownHandler, { dom.addEventListener(window, 'keydown', keyDownHandler, {
passive: true passive: true
@ -112,10 +113,9 @@ define(['dom', 'focusManager'], function (dom, focusManager) {
this.keyDownHandler = keyDownHandler; this.keyDownHandler = keyDownHandler;
} }
destroy() {
AlphaNumericShortcuts.prototype.destroy = function () { const keyDownHandler = this.keyDownHandler;
var keyDownHandler = this.keyDownHandler;
if (keyDownHandler) { if (keyDownHandler) {
dom.removeEventListener(window, 'keydown', keyDownHandler, { dom.removeEventListener(window, 'keydown', keyDownHandler, {
@ -124,7 +124,7 @@ define(['dom', 'focusManager'], function (dom, focusManager) {
this.keyDownHandler = null; this.keyDownHandler = null;
} }
this.options = null; this.options = null;
}; }
}
return AlphaNumericShortcuts; export default AlphaNumericShortcuts;
});

View file

@ -1,15 +1,16 @@
define(['backdrop', 'userSettings', 'libraryMenu'], function (backdrop, userSettings, libraryMenu) { import backdrop from 'backdrop';
'use strict'; import * as userSettings from 'userSettings';
import libraryMenu from 'libraryMenu';
var cache = {}; const cache = {};
function enabled() { function enabled() {
return userSettings.enableBackdrops(); return userSettings.enableBackdrops();
} }
function getBackdropItemIds(apiClient, userId, types, parentId) { function getBackdropItemIds(apiClient, userId, types, parentId) {
var key = `backdrops2_${userId + (types || '') + (parentId || '')}`; const key = `backdrops2_${userId + (types || '') + (parentId || '')}`;
var data = cache[key]; let data = cache[key];
if (data) { if (data) {
console.debug(`Found backdrop id list in cache. Key: ${key}`); console.debug(`Found backdrop id list in cache. Key: ${key}`);
@ -17,7 +18,7 @@ define(['backdrop', 'userSettings', 'libraryMenu'], function (backdrop, userSett
return Promise.resolve(data); return Promise.resolve(data);
} }
var options = { const options = {
SortBy: 'IsFavoriteOrLiked,Random', SortBy: 'IsFavoriteOrLiked,Random',
Limit: 20, Limit: 20,
Recursive: true, Recursive: true,
@ -27,7 +28,7 @@ define(['backdrop', 'userSettings', 'libraryMenu'], function (backdrop, userSett
EnableTotalRecordCount: false EnableTotalRecordCount: false
}; };
return apiClient.getItems(apiClient.getCurrentUserId(), options).then(function (result) { return apiClient.getItems(apiClient.getCurrentUserId(), options).then(function (result) {
var images = result.Items.map(function (i) { const images = result.Items.map(function (i) {
return { return {
Id: i.Id, Id: i.Id,
tag: i.BackdropImageTags[0], tag: i.BackdropImageTags[0],
@ -40,7 +41,7 @@ define(['backdrop', 'userSettings', 'libraryMenu'], function (backdrop, userSett
} }
function showBackdrop(type, parentId) { function showBackdrop(type, parentId) {
var apiClient = window.ApiClient; const apiClient = window.ApiClient;
if (apiClient) { if (apiClient) {
getBackdropItemIds(apiClient, apiClient.getCurrentUserId(), type, parentId).then(function (images) { getBackdropItemIds(apiClient, apiClient.getCurrentUserId(), type, parentId).then(function (images) {
@ -57,13 +58,13 @@ define(['backdrop', 'userSettings', 'libraryMenu'], function (backdrop, userSett
} }
pageClassOn('pageshow', 'page', function () { pageClassOn('pageshow', 'page', function () {
var page = this; const page = this;
if (!page.classList.contains('selfBackdropPage')) { if (!page.classList.contains('selfBackdropPage')) {
if (page.classList.contains('backdropPage')) { if (page.classList.contains('backdropPage')) {
if (enabled()) { if (enabled()) {
var type = page.getAttribute('data-backdroptype'); const type = page.getAttribute('data-backdroptype');
var parentId = page.classList.contains('globalBackdropPage') ? '' : libraryMenu.getTopParentId(); const parentId = page.classList.contains('globalBackdropPage') ? '' : libraryMenu.getTopParentId();
showBackdrop(type, parentId); showBackdrop(type, parentId);
} else { } else {
page.classList.remove('backdropPage'); page.classList.remove('backdropPage');
@ -74,4 +75,4 @@ define(['backdrop', 'userSettings', 'libraryMenu'], function (backdrop, userSett
} }
} }
}); });
});