From b2e7da744e43ee66fac448499a5fa8360bd485b6 Mon Sep 17 00:00:00 2001 From: Ulrich Wagner Date: Mon, 17 Feb 2020 14:56:43 +0100 Subject: [PATCH 01/71] #2407: Prefer MP4-Metadata for episodes --- .../libraryoptionseditor/libraryoptionseditor.js | 8 ++++++++ .../libraryoptionseditor.template.html | 7 +++++++ src/strings/de.json | 2 ++ src/strings/en-gb.json | 2 ++ src/strings/en-us.json | 2 ++ 5 files changed, 21 insertions(+) diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.js b/src/components/libraryoptionseditor/libraryoptionseditor.js index 261d20745b..e168d9213d 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.js +++ b/src/components/libraryoptionseditor/libraryoptionseditor.js @@ -391,6 +391,12 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct parent.querySelector(".chkEnableEmbeddedTitlesContainer").classList.remove("hide"); } + if (contentType === "tvshows") { + parent.querySelector(".chkEnableEmbeddedEpisodeInfosContainer").classList.remove("hide"); + } else { + parent.querySelector(".chkEnableEmbeddedEpisodeInfosContainer").classList.add("hide"); + } + return populateMetadataSettings(parent, contentType); } @@ -488,6 +494,7 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct SeasonZeroDisplayName: parent.querySelector("#txtSeasonZeroName").value, AutomaticRefreshIntervalDays: parseInt(parent.querySelector("#selectAutoRefreshInterval").value), EnableEmbeddedTitles: parent.querySelector("#chkEnableEmbeddedTitles").checked, + EnableEmbeddedEpisodeInfos: parent.querySelector("#chkEnableEmbeddedEpisodeInfos").checked, SkipSubtitlesIfEmbeddedSubtitlesPresent: parent.querySelector("#chkSkipIfGraphicalSubsPresent").checked, SkipSubtitlesIfAudioTrackMatches: parent.querySelector("#chkSkipIfAudioTrackPresent").checked, SaveSubtitlesWithMedia: parent.querySelector("#chkSaveSubtitlesLocally").checked, @@ -540,6 +547,7 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct parent.querySelector("#chkImportMissingEpisodes").checked = options.ImportMissingEpisodes; parent.querySelector(".chkAutomaticallyGroupSeries").checked = options.EnableAutomaticSeriesGrouping; parent.querySelector("#chkEnableEmbeddedTitles").checked = options.EnableEmbeddedTitles; + parent.querySelector("#chkEnableEmbeddedEpisodeInfos").checked = options.EnableEmbeddedEpisodeInfos; parent.querySelector("#chkSkipIfGraphicalSubsPresent").checked = options.SkipSubtitlesIfEmbeddedSubtitlesPresent; parent.querySelector("#chkSaveSubtitlesLocally").checked = options.SaveSubtitlesWithMedia; parent.querySelector("#chkSkipIfAudioTrackPresent").checked = options.SkipSubtitlesIfAudioTrackMatches; diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.template.html b/src/components/libraryoptionseditor/libraryoptionseditor.template.html index ebfdacaa19..bfa090b0d9 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.template.html +++ b/src/components/libraryoptionseditor/libraryoptionseditor.template.html @@ -28,6 +28,13 @@
${PreferEmbeddedTitlesOverFileNamesHelp}
+
+ +
${PreferEmbeddedEpisodeInfosOverFileNamesHelp}
+
+ + +
+ +
+
${ClientSettings}
+
+
+

${HeaderAdmin}

diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 62e8fa3f8f..f08de6b462 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -147,6 +147,7 @@ "ChannelNumber": "Channel number", "Channels": "Channels", "CinemaModeConfigurationHelp": "Cinema mode brings the theater experience straight to your living room with the ability to play trailers and custom intros before the main feature.", + "ClientSettings": "Client Settings", "Collections": "Collections", "ColorPrimaries": "Color primaries", "ColorSpace": "Color space", From 69a3c7cd538d5b35fef35b914f453e34e84ff20c Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Thu, 19 Mar 2020 14:37:48 -0400 Subject: [PATCH 15/71] Add FIXME to revisit show/hide button logic for tv providers --- src/components/tvproviders/schedulesdirect.js | 18 ++++++++++-------- src/components/tvproviders/xmltv.js | 16 ++++++++++------ 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/src/components/tvproviders/schedulesdirect.js b/src/components/tvproviders/schedulesdirect.js index 5283cd2313..4a6f3d297f 100644 --- a/src/components/tvproviders/schedulesdirect.js +++ b/src/components/tvproviders/schedulesdirect.js @@ -264,18 +264,20 @@ define(["jQuery", "loading", "emby-checkbox", "listViewStyle", "emby-input", "em self.init = function () { options = options || {}; - // Show cancel button by default - if (options.showCancelButton !== false) { - page.querySelector(".btnCancel").classList.remove("hide"); - } else { + // Only hide the button if explicitly set to false; default to showing if undefined or null + // FIXME: rename this option to clarify logic + if (options.showCancelButton === false) { page.querySelector(".btnCancel").classList.add("hide"); + } else { + page.querySelector(".btnCancel").classList.remove("hide"); } - // Show submit button by default - if (options.showSubmitButton !== false) { - page.querySelector(".btnSubmitListings").classList.remove("hide"); - } else { + // Only hide the button if explicitly set to false; default to showing if undefined or null + // FIXME: rename this option to clarify logic + if (options.showSubmitButton === false) { page.querySelector(".btnSubmitListings").classList.add("hide"); + } else { + page.querySelector(".btnSubmitListings").classList.remove("hide"); } $(".formLogin", page).on("submit", function () { diff --git a/src/components/tvproviders/xmltv.js b/src/components/tvproviders/xmltv.js index a86a1e1099..0ba164fe25 100644 --- a/src/components/tvproviders/xmltv.js +++ b/src/components/tvproviders/xmltv.js @@ -163,16 +163,20 @@ define(["jQuery", "loading", "emby-checkbox", "emby-input", "listViewStyle", "pa self.init = function () { options = options || {}; - if (false !== options.showCancelButton) { - page.querySelector(".btnCancel").classList.remove("hide"); - } else { + // Only hide the button if explicitly set to false; default to showing if undefined or null + // FIXME: rename this option to clarify logic + if (options.showCancelButton === false) { page.querySelector(".btnCancel").classList.add("hide"); + } else { + page.querySelector(".btnCancel").classList.remove("hide"); } - if (false !== options.showSubmitButton) { - page.querySelector(".btnSubmitListings").classList.remove("hide"); - } else { + // Only hide the button if explicitly set to false; default to showing if undefined or null + // FIXME: rename this option to clarify logic + if (options.showSubmitButton === false) { page.querySelector(".btnSubmitListings").classList.add("hide"); + } else { + page.querySelector(".btnSubmitListings").classList.remove("hide"); } $("form", page).on("submit", function () { From c5bb25809bd29ce4f4baf74b379c810906987d39 Mon Sep 17 00:00:00 2001 From: pakkosauna Date: Thu, 19 Mar 2020 19:52:07 +0000 Subject: [PATCH 16/71] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 91e32afe63..11d497fd19 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -305,5 +305,10 @@ "EnableDisplayMirroring": "Näytön peilaus", "EnableColorCodedBackgrounds": "Väri-koodatut taustat", "EnableCinemaMode": "Teatteri-tila", - "EnableBackdropsHelp": "Näytä taustat tietyillä sivuilla selatessasi kirjastoa." + "EnableBackdropsHelp": "Näytä taustat tietyillä sivuilla selatessasi kirjastoa.", + "EnableExternalVideoPlayersHelp": "Videota soitettaessa näytetään erillinen valikko.", + "Depressed": "Painettu", + "CopyStreamURLError": "Verkko-osoitteen kopioinnissa tapahtui virhe.", + "ButtonSplit": "jaa", + "AskAdminToCreateLibrary": "Pyydä järjestelmän ylläpitäjää luomaan kirjasto." } From e8bc839d0babd2c1a63e3eb4ff253ce43c948a9c Mon Sep 17 00:00:00 2001 From: dkanada Date: Fri, 20 Mar 2020 17:49:32 +0900 Subject: [PATCH 17/71] update methods for native shell --- src/components/shell.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/components/shell.js b/src/components/shell.js index f82f5eea3c..4f1aa0c8de 100644 --- a/src/components/shell.js +++ b/src/components/shell.js @@ -10,12 +10,6 @@ define([], function () { } }, - canExec: false, - exec: function (options) { - // options.path - // options.arguments - return Promise.reject(); - }, enableFullscreen: function () { if (window.NativeShell) { window.NativeShell.enableFullscreen(); From 10a49012262a9bcee2b400acce264f1f7c805e99 Mon Sep 17 00:00:00 2001 From: Medzhnun Date: Fri, 20 Mar 2020 11:28:28 +0000 Subject: [PATCH 18/71] Translated using Weblate (Bulgarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/bg/ --- src/strings/bg-bg.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/strings/bg-bg.json b/src/strings/bg-bg.json index d1f6b11b96..c2b0bb6922 100644 --- a/src/strings/bg-bg.json +++ b/src/strings/bg-bg.json @@ -832,5 +832,9 @@ "ButtonNetwork": "Мрежа", "ButtonFullscreen": "На цял екран", "ButtonDown": "Надолу", - "ButtonConnect": "Свързване" + "ButtonConnect": "Свързване", + "AllowOnTheFlySubtitleExtraction": "Позволява моментално извличане на поднадписи", + "AllowHWTranscodingHelp": "Позволява на тунера да прекодира моментално. Това може да помогне за редуциране на прекодирането от сървъра.", + "AddItemToCollectionHelp": "Добавяне към колекция чрез търсенето им и използване на дясно-щракване с мишката или контекстното меню.", + "Absolute": "Aбсолютен" } From 58af4a65989ed19bbe50470e4d423e4a5457a615 Mon Sep 17 00:00:00 2001 From: nfgb Date: Fri, 20 Mar 2020 22:32:09 +0000 Subject: [PATCH 19/71] Translated using Weblate (Portuguese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt/ --- src/strings/pt.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/pt.json b/src/strings/pt.json index da6d26d947..ecd6ccb079 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -1213,5 +1213,10 @@ "CopyStreamURLError": "Ocorreu um erro ao copiar o URL.", "ButtonSplit": "Dividir", "AskAdminToCreateLibrary": "Peça a um administrador para criar a biblioteca.", - "AllowFfmpegThrottling": "Transcodificação com falhas" + "AllowFfmpegThrottling": "Transcodificação com falhas", + "DashboardOperatingSystem": "Sistema Operativo", + "LabelUserLoginAttemptsBeforeLockout": "Número de tentativas de login falhadas antes do bloqueio do utilizador:", + "LabelTrackNumber": "Número da faixa:", + "LabelSportsCategories": "Categorias de Desportos:", + "Yesterday": "Ontem" } From cb97baa61ab9a6c797a995e6010ffa12974f3b96 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 21 Mar 2020 18:14:08 +0100 Subject: [PATCH 20/71] Move prompt, confirm and sendcastapi to one module each --- src/components/castSenderApi.js | 34 +++++++++ src/components/confirm/confirm.js | 93 ++++++++++++++++--------- src/components/confirm/nativeconfirm.js | 27 ------- src/components/prompt/nativeprompt.js | 28 -------- src/components/prompt/prompt.js | 50 +++++++++---- src/scripts/site.js | 51 +------------- 6 files changed, 131 insertions(+), 152 deletions(-) create mode 100644 src/components/castSenderApi.js delete mode 100644 src/components/confirm/nativeconfirm.js delete mode 100644 src/components/prompt/nativeprompt.js diff --git a/src/components/castSenderApi.js b/src/components/castSenderApi.js new file mode 100644 index 0000000000..a1e7bd8755 --- /dev/null +++ b/src/components/castSenderApi.js @@ -0,0 +1,34 @@ +define([], function() { + 'use strict'; + + if (window.appMode === "cordova" || window.appMode === "android") { + return { + load: function () { + window.chrome = window.chrome || {}; + return Promise.resolve(); + } + }; + } else { + var ccLoaded = false; + return { + load: function () { + if (ccLoaded) { + return Promise.resolve(); + } + + return new Promise(function (resolve, reject) { + var fileref = document.createElement("script"); + fileref.setAttribute("type", "text/javascript"); + + fileref.onload = function () { + ccLoaded = true; + resolve(); + }; + + fileref.setAttribute("src", "https://www.gstatic.com/cv/js/sender/v1/cast_sender.js"); + document.querySelector("head").appendChild(fileref); + }); + } + }; + } +}); diff --git a/src/components/confirm/confirm.js b/src/components/confirm/confirm.js index f104350c87..fa9a156679 100644 --- a/src/components/confirm/confirm.js +++ b/src/components/confirm/confirm.js @@ -1,40 +1,65 @@ -define(['dialog', 'globalize'], function (dialog, globalize) { +define(["browser", "dialog", "globalize"], function(browser, dialog, globalize) { 'use strict'; - return function (text, title) { + function replaceAll(str, find, replace) { + return str.split(find).join(replace); + } - var options; - if (typeof text === 'string') { - options = { - title: title, - text: text - }; - } else { - options = text; - } - - var items = []; - - items.push({ - name: options.cancelText || globalize.translate('ButtonCancel'), - id: 'cancel', - type: 'cancel' - }); - - items.push({ - name: options.confirmText || globalize.translate('ButtonOk'), - id: 'ok', - type: options.primary === 'delete' ? 'delete' : 'submit' - }); - - options.buttons = items; - - return dialog(options).then(function (result) { - if (result === 'ok') { - return Promise.resolve(); + if (browser.tv && window.confirm) { + // Use the native confirm dialog + return function (options) { + if (typeof options === 'string') { + options = { + title: '', + text: options + }; } - return Promise.reject(); - }); - }; + var text = replaceAll(options.text || '', '
', '\n'); + var result = confirm(text); + + if (result) { + return Promise.resolve(); + } else { + return Promise.reject(); + } + }; + } else { + // Use our own dialog + return function (text, title) { + var options; + if (typeof text === 'string') { + options = { + title: title, + text: text + }; + } else { + options = text; + } + + var items = []; + + items.push({ + name: options.cancelText || globalize.translate('ButtonCancel'), + id: 'cancel', + type: 'cancel' + }); + + items.push({ + name: options.confirmText || globalize.translate('ButtonOk'), + id: 'ok', + type: options.primary === 'delete' ? 'delete' : 'submit' + }); + + options.buttons = items; + + return dialog(options).then(function (result) { + if (result === 'ok') { + return Promise.resolve(); + } + + return Promise.reject(); + }); + }; + } }); diff --git a/src/components/confirm/nativeconfirm.js b/src/components/confirm/nativeconfirm.js deleted file mode 100644 index 7d72bc5eaf..0000000000 --- a/src/components/confirm/nativeconfirm.js +++ /dev/null @@ -1,27 +0,0 @@ -define([], function () { - 'use strict'; - - function replaceAll(str, find, replace) { - - return str.split(find).join(replace); - } - - return function (options) { - - if (typeof options === 'string') { - options = { - title: '', - text: options - }; - } - - var text = replaceAll(options.text || '', '
', '\n'); - var result = confirm(text); - - if (result) { - return Promise.resolve(); - } else { - return Promise.reject(); - } - }; -}); diff --git a/src/components/prompt/nativeprompt.js b/src/components/prompt/nativeprompt.js deleted file mode 100644 index ba7f1a9a49..0000000000 --- a/src/components/prompt/nativeprompt.js +++ /dev/null @@ -1,28 +0,0 @@ -define([], function () { - 'use strict'; - - function replaceAll(str, find, replace) { - - return str.split(find).join(replace); - } - - return function (options) { - - if (typeof options === 'string') { - options = { - label: '', - text: options - }; - } - - var label = replaceAll(options.label || '', '
', '\n'); - - var result = prompt(label, options.text || ''); - - if (result) { - return Promise.resolve(result); - } else { - return Promise.reject(result); - } - }; -}); diff --git a/src/components/prompt/prompt.js b/src/components/prompt/prompt.js index 8f4f839eaa..32fadb811c 100644 --- a/src/components/prompt/prompt.js +++ b/src/components/prompt/prompt.js @@ -1,6 +1,10 @@ -define(['dialogHelper', 'layoutManager', 'scrollHelper', 'globalize', 'dom', 'require', 'material-icons', 'emby-button', 'paper-icon-button-light', 'emby-input', 'formDialogStyle'], function (dialogHelper, layoutManager, scrollHelper, globalize, dom, require) { +define(["browser", 'dialogHelper', 'layoutManager', 'scrollHelper', 'globalize', 'dom', 'require', 'material-icons', 'emby-button', 'paper-icon-button-light', 'emby-input', 'formDialogStyle'], function(browser, dialogHelper, layoutManager, scrollHelper, globalize, dom, require) { 'use strict'; + function replaceAll(str, find, replace) { + return str.split(find).join(replace); + } + function setInputProperties(dlg, options) { var txtInput = dlg.querySelector('#txtInput'); @@ -13,7 +17,6 @@ define(['dialogHelper', 'layoutManager', 'scrollHelper', 'globalize', 'dom', 're } function showDialog(options, template) { - var dialogOptions = { removeOnClose: true, scrollY: false @@ -71,7 +74,6 @@ define(['dialogHelper', 'layoutManager', 'scrollHelper', 'globalize', 'dom', 're dlg.style.minWidth = (Math.min(400, dom.getWindowSize().innerWidth - 50)) + 'px'; return dialogHelper.open(dlg).then(function () { - if (layoutManager.tv) { scrollHelper.centerFocus.off(dlg.querySelector('.formDialogContent'), false); } @@ -86,19 +88,37 @@ define(['dialogHelper', 'layoutManager', 'scrollHelper', 'globalize', 'dom', 're }); } - return function (options) { + if ((browser.tv || browser.xboxOne) && window.confirm) { + return function (options) { + if (typeof options === 'string') { + options = { + label: '', + text: options + }; + } - return new Promise(function (resolve, reject) { - require(['text!./prompt.template.html'], function (template) { + var label = replaceAll(options.label || '', '
', '\n'); + var result = prompt(label, options.text || ''); - if (typeof options === 'string') { - options = { - title: '', - text: options - }; - } - showDialog(options, template).then(resolve, reject); + if (result) { + return Promise.resolve(result); + } else { + return Promise.reject(result); + } + }; + } else { + return function (options) { + return new Promise(function (resolve, reject) { + require(['text!./prompt.template.html'], function (template) { + if (typeof options === 'string') { + options = { + title: '', + text: options + }; + } + showDialog(options, template).then(resolve, reject); + }); }); - }); - }; + }; + } }); diff --git a/src/scripts/site.js b/src/scripts/site.js index 0ab8e9a1f0..6739e3cd59 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -355,39 +355,6 @@ var AppInfo = {}; return headroom; } - function getCastSenderApiLoader() { - var ccLoaded = false; - return { - load: function () { - if (ccLoaded) { - return Promise.resolve(); - } - - return new Promise(function (resolve, reject) { - var fileref = document.createElement("script"); - fileref.setAttribute("type", "text/javascript"); - - fileref.onload = function () { - ccLoaded = true; - resolve(); - }; - - fileref.setAttribute("src", "https://www.gstatic.com/cv/js/sender/v1/cast_sender.js"); - document.querySelector("head").appendChild(fileref); - }); - } - }; - } - - function getDummyCastSenderApiLoader() { - return { - load: function () { - window.chrome = window.chrome || {}; - return Promise.resolve(); - } - }; - } - function createSharedAppFooter(appFooter) { return new appFooter({}); } @@ -439,28 +406,16 @@ var AppInfo = {}; defineResizeObserver(); define("dialog", [componentsPath + "/dialog/dialog"], returnFirstDependency); - if (preferNativeAlerts && window.confirm) { - define("confirm", [componentsPath + "/confirm/nativeconfirm"], returnFirstDependency); - } else { - define("confirm", [componentsPath + "/confirm/confirm"], returnFirstDependency); - } + define("confirm", [componentsPath + "/confirm/confirm"], returnFirstDependency); - if ((preferNativeAlerts || browser.xboxOne) && window.confirm) { - define("prompt", [componentsPath + "/prompt/nativeprompt"], returnFirstDependency); - } else { - define("prompt", [componentsPath + "/prompt/prompt"], returnFirstDependency); - } + define("prompt", [componentsPath + "/prompt/prompt"], returnFirstDependency); define("loading", [componentsPath + "/loading/loading"], returnFirstDependency); define("multi-download", [componentsPath + "/multidownload"], returnFirstDependency); define("fileDownloader", [componentsPath + "/filedownloader"], returnFirstDependency); define("localassetmanager", [bowerPath + "/apiclient/localassetmanager"], returnFirstDependency); - if ("cordova" === self.appMode || "android" === self.appMode) { - define("castSenderApiLoader", [], getDummyCastSenderApiLoader); - } else { - define("castSenderApiLoader", [], getCastSenderApiLoader); - } + define("castSenderApiLoader", [componentsPath + "castSenderApi"], returnFirstDependency); define("transfermanager", [bowerPath + "/apiclient/sync/transfermanager"], returnFirstDependency); define("filerepository", [bowerPath + "/apiclient/sync/filerepository"], returnFirstDependency); From de88967dbd036868dc97cbacf9311b3b9837d576 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 21 Mar 2020 18:27:30 +0100 Subject: [PATCH 21/71] Remove superfluous variable --- src/components/prompt/prompt.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/components/prompt/prompt.js b/src/components/prompt/prompt.js index 32fadb811c..41d40c4a48 100644 --- a/src/components/prompt/prompt.js +++ b/src/components/prompt/prompt.js @@ -78,10 +78,8 @@ define(["browser", 'dialogHelper', 'layoutManager', 'scrollHelper', 'globalize', scrollHelper.centerFocus.off(dlg.querySelector('.formDialogContent'), false); } - var value = submitValue; - - if (value) { - return value; + if (submitValue) { + return submitValue; } else { return Promise.reject(); } From 705c3fbcf0d4b83a8f82115957e45d81761ac0d6 Mon Sep 17 00:00:00 2001 From: amirmasoud Date: Sat, 21 Mar 2020 18:47:01 +0000 Subject: [PATCH 22/71] Translated using Weblate (Persian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fa/ --- src/strings/fa.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/fa.json b/src/strings/fa.json index 7b7393c6b9..d4b60fe7c6 100644 --- a/src/strings/fa.json +++ b/src/strings/fa.json @@ -139,5 +139,8 @@ "AllLanguages": "تمام زبان ها", "AllLibraries": "تمام کتابخانه ها", "AllowHWTranscodingHelp": "اگر فعال شود, اجازه میدهید تبدیل ( کم و زیاد کردن کیفیت ) درلحظه و توسط کارت دریافت سیگنال صورت گیرد. این کمک میکند به اینکه سرور جلیفین کمتر عمل تبدیل را انجام دهد.", - "AllowOnTheFlySubtitleExtraction": "اجازه میدهد در لحظه زیرنویس بازشود" + "AllowOnTheFlySubtitleExtraction": "اجازه میدهد در لحظه زیرنویس بازشود", + "Add": "افزودن", + "Actor": "بازیگر", + "AccessRestrictedTryAgainLater": "دسترسی در حال حاضر محدود شده است. لطفا دوباره تلاش کنید." } From 856069f25d232cb421c9d69b1b817c2946bc8e69 Mon Sep 17 00:00:00 2001 From: Vogete Date: Sat, 21 Mar 2020 11:26:46 +0000 Subject: [PATCH 23/71] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index a6c2a14da2..7ade41afff 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -1213,7 +1213,7 @@ "Screenshots": "Képernyőképek", "SearchForCollectionInternetMetadata": "Keresés az interneten artwork és metaadat után", "Series": "Sorozatok", - "SeriesCancelled": "A sorozat törölt.", + "SeriesCancelled": "Sorozat törölve.", "SeriesRecordingScheduled": "A sorozatfelvétel ütemezett.", "SeriesSettings": "Sorozat beállítások", "ServerRestartNeededAfterPluginInstall": "A bővítmény telepítése után újra kell indítani a Jellyfin Szerver-t.", From b65bd915ee51864cfc6bcd53a2f82a9168f78b7f Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Sun, 22 Mar 2020 01:07:04 -0400 Subject: [PATCH 24/71] Simplify show/hide button logic for tv providers --- src/components/tvproviders/schedulesdirect.js | 18 +++++------------- src/components/tvproviders/xmltv.js | 18 +++++------------- 2 files changed, 10 insertions(+), 26 deletions(-) diff --git a/src/components/tvproviders/schedulesdirect.js b/src/components/tvproviders/schedulesdirect.js index 4a6f3d297f..cf11e5736d 100644 --- a/src/components/tvproviders/schedulesdirect.js +++ b/src/components/tvproviders/schedulesdirect.js @@ -264,21 +264,13 @@ define(["jQuery", "loading", "emby-checkbox", "listViewStyle", "emby-input", "em self.init = function () { options = options || {}; - // Only hide the button if explicitly set to false; default to showing if undefined or null + // Only hide the buttons if explicitly set to false; default to showing if undefined or null // FIXME: rename this option to clarify logic - if (options.showCancelButton === false) { - page.querySelector(".btnCancel").classList.add("hide"); - } else { - page.querySelector(".btnCancel").classList.remove("hide"); - } + var hideCancelButton = options.showCancelButton === false; + page.querySelector(".btnCancel").classList.toggle("hide", hideCancelButton); - // Only hide the button if explicitly set to false; default to showing if undefined or null - // FIXME: rename this option to clarify logic - if (options.showSubmitButton === false) { - page.querySelector(".btnSubmitListings").classList.add("hide"); - } else { - page.querySelector(".btnSubmitListings").classList.remove("hide"); - } + var hideSubmitButton = options.showSubmitButton === false; + page.querySelector(".btnSubmitListings").classList.toggle("hide", hideSubmitButton); $(".formLogin", page).on("submit", function () { submitLoginForm(); diff --git a/src/components/tvproviders/xmltv.js b/src/components/tvproviders/xmltv.js index 0ba164fe25..7e7d381f09 100644 --- a/src/components/tvproviders/xmltv.js +++ b/src/components/tvproviders/xmltv.js @@ -163,21 +163,13 @@ define(["jQuery", "loading", "emby-checkbox", "emby-input", "listViewStyle", "pa self.init = function () { options = options || {}; - // Only hide the button if explicitly set to false; default to showing if undefined or null + // Only hide the buttons if explicitly set to false; default to showing if undefined or null // FIXME: rename this option to clarify logic - if (options.showCancelButton === false) { - page.querySelector(".btnCancel").classList.add("hide"); - } else { - page.querySelector(".btnCancel").classList.remove("hide"); - } + var hideCancelButton = options.showCancelButton === false; + page.querySelector(".btnCancel").classList.toggle("hide", hideCancelButton); - // Only hide the button if explicitly set to false; default to showing if undefined or null - // FIXME: rename this option to clarify logic - if (options.showSubmitButton === false) { - page.querySelector(".btnSubmitListings").classList.add("hide"); - } else { - page.querySelector(".btnSubmitListings").classList.remove("hide"); - } + var hideSubmitButton = options.showSubmitButton === false; + page.querySelector(".btnSubmitListings").classList.toggle("hide", hideSubmitButton); $("form", page).on("submit", function () { submitListingsForm(); From a704f41515fb5d11b96d63a6f873899ac911b874 Mon Sep 17 00:00:00 2001 From: Nyanmisaka <799610810@qq.com> Date: Sun, 22 Mar 2020 04:09:34 +0000 Subject: [PATCH 25/71] Translated using Weblate (Chinese (Simplified)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hans/ --- src/strings/zh-cn.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index 547f55dc3a..b0c9a59694 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -537,8 +537,8 @@ "LabelDisplayName": "显示名称:", "LabelDisplayOrder": "显示顺序:", "LabelDisplaySpecialsWithinSeasons": "显示季中所播出的特集", - "LabelDownMixAudioScale": "缩混音频增强:", - "LabelDownMixAudioScaleHelp": "缩混音频增强。值为A将保留原来的音量。", + "LabelDownMixAudioScale": "降混音频增强:", + "LabelDownMixAudioScaleHelp": "降混音时增强音频。值为 1 时将保留原始音量。", "LabelDownloadLanguages": "下载语言:", "LabelDropImageHere": "拖拽或点击选择图像于此处。", "LabelDroppedFrames": "丢弃的帧:", From 99d7138a083ed92993eb07af3ab27d5bfb486fb6 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 22 Mar 2020 14:00:04 +0300 Subject: [PATCH 26/71] Fix XviD playback on Tizen --- src/scripts/browserdeviceprofile.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/scripts/browserdeviceprofile.js b/src/scripts/browserdeviceprofile.js index b45bdc59bf..85d3e1500b 100644 --- a/src/scripts/browserdeviceprofile.js +++ b/src/scripts/browserdeviceprofile.js @@ -214,6 +214,14 @@ define(['browser'], function (browser) { break; case 'avi': supported = browser.tizen || browser.orsay || browser.web0s || browser.edgeUwp; + // New Samsung TV don't support XviD/DivX + if (browser.tizen) { + videoCodecs.push('h264'); + if (canPlayH265(videoTestElement, options)) { + videoCodecs.push('h265'); + videoCodecs.push('hevc'); + } + } break; case 'mpg': case 'mpeg': From 603472cfb69516cb83270c4dfece64aa455edb92 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 22 Mar 2020 15:04:51 +0300 Subject: [PATCH 27/71] Add comment --- src/scripts/browserdeviceprofile.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/scripts/browserdeviceprofile.js b/src/scripts/browserdeviceprofile.js index 85d3e1500b..7acad63c14 100644 --- a/src/scripts/browserdeviceprofile.js +++ b/src/scripts/browserdeviceprofile.js @@ -215,6 +215,7 @@ define(['browser'], function (browser) { case 'avi': supported = browser.tizen || browser.orsay || browser.web0s || browser.edgeUwp; // New Samsung TV don't support XviD/DivX + // Explicitly add supported codecs to make other codecs be transcoded if (browser.tizen) { videoCodecs.push('h264'); if (canPlayH265(videoTestElement, options)) { From 58dd6eb4918847783218b162ab3df285c68f373d Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 22 Mar 2020 19:30:02 +0300 Subject: [PATCH 28/71] Add test for current item --- src/controllers/playback/videoosd.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index 24d779f245..b6af14dd6a 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -665,7 +665,8 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } function onTimeUpdate(e) { - if (isEnabled) { + // Test for 'currentItem' is required for Firefox since its player spams 'timeupdate' events even being at breakpoint + if (isEnabled && currentItem) { var now = new Date().getTime(); if (!(now - lastUpdateTime < 700)) { From c49e60e2d9d181ae3e51cfd3e0c8221ab6a89dc0 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 22 Mar 2020 17:42:32 +0100 Subject: [PATCH 29/71] Hide some header buttons on mobile --- src/scripts/librarymenu.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js index 001c75787d..5e6562ee42 100644 --- a/src/scripts/librarymenu.js +++ b/src/scripts/librarymenu.js @@ -73,7 +73,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " } if (user && user.localUser) { - if (headerHomeButton) { + if (headerHomeButton && !layoutManager.mobile) { headerHomeButton.classList.remove("hide"); } @@ -788,7 +788,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " var headerCastButton; var headerSearchButton; var headerAudioPlayerButton; - var enableLibraryNavDrawer = !layoutManager.tv; + var enableLibraryNavDrawer = layoutManager.desktop; var skinHeader = document.querySelector(".skinHeader"); var requiresUserRefresh = true; var lastOpenTime = new Date().getTime(); @@ -863,6 +863,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " pageClassOn("pageshow", "page", function (e) { var page = this; var isDashboardPage = page.classList.contains("type-interior"); + var isHomePage = page.classList.contains("homePage"); var isLibraryPage = !isDashboardPage && page.classList.contains("libraryPage"); var apiClient = getCurrentApiClient(); @@ -874,7 +875,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " refreshDashboardInfoInDrawer(apiClient); } else { if (mainDrawerButton) { - if (enableLibraryNavDrawer) { + if (enableLibraryNavDrawer || isHomePage) { mainDrawerButton.classList.remove("hide"); } else { mainDrawerButton.classList.add("hide"); From 1c0728ada6e24f29b96b8399d3c61fbabf5961be Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 22 Mar 2020 17:56:03 +0100 Subject: [PATCH 30/71] Use small logo on mobile --- src/assets/css/librarybrowser.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 4c2cf95817..0bf65d83a7 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -128,6 +128,10 @@ margin-top: 0; } +.layout-mobile .pageTitleWithDefaultLogo { + background-image: url(../img/icon-transparent.png); +} + .headerLeft, .skinHeader { display: -webkit-box; From d6ab058661b70258a2a1629cbe91a96542b3519f Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 22 Mar 2020 20:18:27 +0300 Subject: [PATCH 31/71] Add Tizen version check --- src/scripts/browser.js | 3 +++ src/scripts/browserdeviceprofile.js | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/scripts/browser.js b/src/scripts/browser.js index 791ac7411b..f9e1942320 100644 --- a/src/scripts/browser.js +++ b/src/scripts/browser.js @@ -271,6 +271,9 @@ define([], function () { if (!browser.tizen) { browser.orsay = userAgent.toLowerCase().indexOf('smarthub') !== -1; + } else { + var v = (navigator.appVersion).match(/Tizen (\d+).(\d+)/); + browser.tizenVersion = parseInt(v[1]); } if (browser.edgeUwp) { diff --git a/src/scripts/browserdeviceprofile.js b/src/scripts/browserdeviceprofile.js index 7acad63c14..337463987c 100644 --- a/src/scripts/browserdeviceprofile.js +++ b/src/scripts/browserdeviceprofile.js @@ -216,7 +216,7 @@ define(['browser'], function (browser) { supported = browser.tizen || browser.orsay || browser.web0s || browser.edgeUwp; // New Samsung TV don't support XviD/DivX // Explicitly add supported codecs to make other codecs be transcoded - if (browser.tizen) { + if (browser.tizenVersion >= 4) { videoCodecs.push('h264'); if (canPlayH265(videoTestElement, options)) { videoCodecs.push('h265'); From 0cb54feb539ef4e7e7192b1fc92fdb5de24b4815 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Mon, 20 Jan 2020 20:47:54 +0100 Subject: [PATCH 32/71] Remove libjass --- src/bundle.js | 7 --- src/components/htmlvideoplayer/plugin.js | 80 +----------------------- src/scripts/site.js | 1 - 3 files changed, 1 insertion(+), 87 deletions(-) diff --git a/src/bundle.js b/src/bundle.js index c5c5e1bcaf..ba5f74b163 100644 --- a/src/bundle.js +++ b/src/bundle.js @@ -84,13 +84,6 @@ _define("webcomponents", function() { return webcomponents; }); -// libjass -var libjass = require("libjass"); -require("libjass/libjass.css"); -_define("libjass", function() { - return libjass; -}); - // libass-wasm var libass_wasm = require("libass-wasm"); _define("JavascriptSubtitlesOctopus", function() { diff --git a/src/components/htmlvideoplayer/plugin.js b/src/components/htmlvideoplayer/plugin.js index d19187c9ed..995df6607b 100644 --- a/src/components/htmlvideoplayer/plugin.js +++ b/src/components/htmlvideoplayer/plugin.js @@ -80,7 +80,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa if (track) { var format = (track.Codec || '').toLowerCase(); if (format === 'ssa' || format === 'ass') { - // libjass is needed here return false; } } @@ -1047,7 +1046,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa lastCustomTrackMs = 0; } - function renderWithSubtitlesOctopus(videoElement, track, item) { + function renderSsaAss(videoElement, track, item) { var attachments = self._currentPlayOptions.mediaSource.MediaAttachments || []; var options = { video: videoElement, @@ -1066,82 +1065,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa }); } - function renderWithLibjass(videoElement, track, item) { - - var rendererSettings = {}; - - if (browser.ps4) { - // Text outlines are not rendering very well - rendererSettings.enableSvg = false; - } else if (browser.edge || browser.msie) { - // svg not rendering at all - rendererSettings.enableSvg = false; - } - - // probably safer to just disable everywhere - rendererSettings.enableSvg = false; - - require(['libjass', 'ResizeObserver'], function (libjass, ResizeObserver) { - - libjass.ASS.fromUrl(getTextTrackUrl(track, item)).then(function (ass) { - - var clock = new libjass.renderers.ManualClock(); - currentClock = clock; - - // Create a DefaultRenderer using the video element and the ASS object - var renderer = new libjass.renderers.WebRenderer(ass, clock, videoElement.parentNode, rendererSettings); - - currentAssRenderer = renderer; - - renderer.addEventListener("ready", function () { - try { - renderer.resize(videoElement.offsetWidth, videoElement.offsetHeight, 0, 0); - - if (!self._resizeObserver) { - self._resizeObserver = new ResizeObserver(onVideoResize, {}); - self._resizeObserver.observe(videoElement); - } - //clock.pause(); - } catch (ex) { - //alert(ex); - } - }); - }, function () { - htmlMediaHelper.onErrorInternal(self, 'mediadecodeerror'); - }); - }); - } - - function renderSsaAss(videoElement, track, item) { - if (supportsCanvas() && supportsWebWorkers()) { - console.debug('rendering subtitles with SubtitlesOctopus'); - renderWithSubtitlesOctopus(videoElement, track, item); - } else { - console.debug('rendering subtitles with libjass'); - renderWithLibjass(videoElement, track, item); - } - } - - function onVideoResize() { - if (browser.iOS) { - // the new sizes will be delayed for about 500ms with wkwebview - setTimeout(resetVideoRendererSize, 500); - } else { - resetVideoRendererSize(); - } - } - - function resetVideoRendererSize() { - var renderer = currentAssRenderer; - if (renderer) { - var videoElement = self._mediaElement; - var width = videoElement.offsetWidth; - var height = videoElement.offsetHeight; - console.debug('videoElement resized: ' + width + 'x' + height); - renderer.resize(width, height, 0, 0); - } - } - function requiresCustomSubtitlesElement() { // after a system update, ps4 isn't showing anything when creating a track element dynamically @@ -1231,7 +1154,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa if (!itemHelper.isLocalItem(item) || track.IsExternal) { var format = (track.Codec || '').toLowerCase(); if (format === 'ssa' || format === 'ass') { - // libjass is needed here renderSsaAss(videoElement, track, item); return; } diff --git a/src/scripts/site.js b/src/scripts/site.js index 6739e3cd59..dc5f973198 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -690,7 +690,6 @@ var AppInfo = {}; "swiper", "queryString", "sortable", - "libjass", "webcomponents", "material-icons", "jellyfin-noto", From 087d44567e0b28a65131a6cd6a602d91c84e20cc Mon Sep 17 00:00:00 2001 From: adrian gustavo martinez Date: Sun, 22 Mar 2020 11:27:02 +0000 Subject: [PATCH 33/71] Translated using Weblate (Spanish (Argentina)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es_AR/ --- src/strings/es-ar.json | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index 2b99b91242..64f7a0fd7e 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -68,7 +68,7 @@ "AllowMediaConversion": "Permitir conversión de medios", "AllowMediaConversionHelp": "Permitir o denegar acceso a la opción de convertir medios.", "AllowOnTheFlySubtitleExtraction": "Permitir extracción de subtítulos al vuelo", - "AllowOnTheFlySubtitleExtractionHelp": "Los subtítulos incrustados pueden ser extraídos de videos y entregados a apps de Jellyfin en texto plano para ayudar a prevenir la transcodificación de video. En algunos sistemas esto puede llevar un largo tiempo y causar demoras en la reproducción durante el proceso de extracción. Desactivar esta opción para quemar los subtítulos incrustados en la transcodificación de video cuando no son soportados nativamente por el dispositivo cliente.", + "AllowOnTheFlySubtitleExtractionHelp": "Los subtítulos incrustados pueden extraerse de los videos y entregarse a los reproductores en texto plano para ayudar a evitar la transcodificación de video. En algunos sistemas, esto puede tardar mucho tiempo y provocar que la reproducción de video se detenga durante el proceso de extracción. Deshabilite esta opción para que los subtítulos incrustados se graben con transcodificación de video cuando no estén soportados de forma nativa por el dispositivo cliente.", "AllowRemoteAccess": "Permitir conexiones remotas a este Servidor Jellyfin.", "AllowRemoteAccessHelp": "Si no está tildado, todas las conexiones remotas serán bloqueadas.", "AlwaysPlaySubtitles": "Siempre reproducir subtítulos", @@ -81,7 +81,7 @@ "AutoBasedOnLanguageSetting": "Auto (basado en configuración de idioma)", "AutomaticallyConvertNewContent": "Convertir contenido nuevo automáticamente", "Backdrop": "Fondo", - "AllowHWTranscodingHelp": "Si se activa, se permitirá al sintonizador transcodificar streams al vuelo. Esto podría ayudar a reducir la transcodificación requerida por el servidor Jellyfin.", + "AllowHWTranscodingHelp": "Permite que el sintonizador transcodifique las transmisiones sobre la marcha. Esto puede ayudar a reducir la transcodificación requerida por el servidor.", "AllowedRemoteAddressesHelp": "Lista separada por comas de direcciones IP o IP/máscara-de-red para redes a las que se les permitirá conectarse de forma remota. Si se deja vacía, todas las direcciones remotas serán permitidas.", "AlwaysPlaySubtitlesHelp": "Los subtítulos que concuerden con la preferencia de idioma se cargarán independientemente del idioma del audio.", "AndroidUnlockRestoreHelp": "Para recuperar tu compra anterior, por favor asegurate que iniciaste sesión en el dispositivo con la misma cuenta de Google (o Amazon) que hizo la compra originalmente. Asegurate de que la tienda de aplicaciones esté habilitada y no posea control parental alguno, y que tiene una conexión a Internet activa. Solo tendrás que hacer esto una sola vez para recuperar tu compra anterior.", @@ -102,12 +102,12 @@ "BirthPlaceValue": "Lugar de nacimiento: {0}", "Blacklist": "Lista negra", "BobAndWeaveWithHelp": "Bob and weave (mayor calidad, pero más lento)", - "BookLibraryHelp": "Libros de audio y de texto son soportados. Revise la {0}guía de nombrado de libros de Jellyfin{1}.", + "BookLibraryHelp": "Los libros de texto y audio libros son soportados. Revise la {0}Guía para Nomenclatura de Libros{1}.", "Box": "Caja", "BoxRear": "Caja (lado opuesto)", "Browse": "Explorar", "BrowsePluginCatalogMessage": "Explore nuestro catálogo de complementos para ver los complementos disponibles.", - "BurnSubtitlesHelp": "Determine si el servidor debería incrustar los subtítulos cuando convierte los videos dependiendo del formato de subtítulo. Evitar incrustar subtitulos mejorará el rendimiento del servidor. Seleccione Auto para incrustar formatos basados en imagen (por ejemplo, VOBSUB, PGS, SUB/IDX, etc.), como así también ciertos subtítulos ASS/SSA", + "BurnSubtitlesHelp": "Determina si el servidor debe grabar subtítulos al convertir videos dependiendo del formato de los subtítulos. Evitar la grabación de subtítulos mejorará el rendimiento del servidor. Seleccione Auto para grabar formatos basados en imágenes (VOBSUB, PGS, SUB/IDX, etc.) y ciertos subtítulos ASS/SSA.", "ButtonAccept": "Aceptar", "ButtonAdd": "Agregar", "ButtonAddMediaLibrary": "Agregar biblioteca de medios", @@ -308,7 +308,7 @@ "DeviceLastUsedByUserName": "Usado ultima vez por {0}", "DirectPlayError": "Error en la reproducción directa", "DirectPlaying": "Reproducción directa", - "DirectStreamHelp1": "El medio es compatible con el dispositivo respecto a la resolución y el tipo de medio (H.264, AC3, etc.), pero esta en un contenedor incompatible (.mkv, .avi, .wmv, etc.). El video va a ser re-empaquetado en el momento que sea transmitido al dispositivo.", + "DirectStreamHelp1": "El medio es compatible con el dispositivo en cuanto a la resolución y tipo de medio (H.264, AC3, etc.), pero está en un contenedor de archivo incompatible (mkv, avi, wmv, etc.). El video sera reempaquetado en el acto antes de transmitirlo al dispositivo.", "DirectStreamHelp2": "Transmitir directamente un archivo usa muy poco procesamiento, esto sin perdida en la calidad de video.", "DirectStreaming": "Transmisión en directo", "Director": "Director", @@ -321,7 +321,7 @@ "DisplayInMyMedia": "Mostrar en pantalla principal", "DisplayInOtherHomeScreenSections": "Mostrar en las secciones de la pantalla principal, como últimos medios y continuar viendo", "DisplayMissingEpisodesWithinSeasons": "Mostrar episodios faltantes entre temporadas", - "DisplayMissingEpisodesWithinSeasonsHelp": "Esto debe ser habilitado en las bibilotecas de TV, en la configuracion del servidor de Jellyfin.", + "DisplayMissingEpisodesWithinSeasonsHelp": "Esto también debe estar habilitado para las bibliotecas de TV en la configuración del servidor.", "DisplayModeHelp": "Selecciona el tipo de pantalla en el cual estas usando Jellyfin.", "DoNotRecord": "No grabar", "Down": "Abajo", @@ -345,7 +345,7 @@ "EnableBackdropsHelp": "Si esta habilitado, los fondos van a ser mostrados en segundo plano de algunas paginas mientras estas en la biblioteca.", "EnableCinemaMode": "Habilitar modo Cine", "EnableColorCodedBackgrounds": "Habilitar colores en el fondo del codigo", - "AuthProviderHelp": "Selecciona un Proveedor de Autenticación para autenticar la contraseña de este usuario", + "AuthProviderHelp": "Seleccione un proveedor de autenticación que se utilizará para autenticar la contraseña de este usuario.", "CriticRating": "Calificación de la crítica", "DefaultSubtitlesHelp": "Los subtítulos se cargan en base a los indicadores por defecto y los indicadores forzados en los metadatos embebidos. Las preferencias de idioma son consideradas cuando existe más de una opción.", "Dislike": "No me gusta", @@ -411,5 +411,13 @@ "HeaderFavoriteEpisodes": "Episodios favoritos", "HeaderFavoriteArtists": "Artistas favoritos", "HeaderFavoriteAlbums": "Álbumes favoritos", - "Shows": "Series" + "Shows": "Series", + "CopyStreamURLError": "Hubo un error copiando la URL.", + "CopyStreamURLSuccess": "URL copiada con éxito.", + "CopyStreamURL": "Copiar la URL de la transmisión", + "ButtonSplit": "Dividir", + "ButtonAddImage": "Agregar imagen", + "AskAdminToCreateLibrary": "Pregunte al administrador para crear una biblioteca.", + "AllowFfmpegThrottlingHelp": "Cuando una transcodificación o conversión avanza demasiado con respecto a la posición actual de la reproducción, se pausara el proceso para consumir menos recursos. esto es mas útil cuando no se hacen búsquedas de tiempo a menudo. Desactive esta opción si experimenta problemas en la reproducción.", + "AllowFfmpegThrottling": "Transcodificación Throttle" } From 7aae3fd95c25823822c571cbcfd9f6061407e94b Mon Sep 17 00:00:00 2001 From: adrian gustavo martinez Date: Sun, 22 Mar 2020 11:55:42 +0000 Subject: [PATCH 34/71] Translated using Weblate (Spanish (Mexico)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es_MX/ --- src/strings/es-mx.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/es-mx.json b/src/strings/es-mx.json index 57a1c9aa25..2968bbcdd4 100644 --- a/src/strings/es-mx.json +++ b/src/strings/es-mx.json @@ -195,7 +195,7 @@ "Download": "Descargar", "DownloadsValue": "{0} descargas", "DrmChannelsNotImported": "Los canales con DRM no serán importados.", - "DropShadow": "Mostrar sombra", + "DropShadow": "Sombra Paralela", "EasyPasswordHelp": "Su código PIN fácil se utiliza para el acceso sin conexión en los clientes compatibles y también puede utilizarse para acceder fácilmente cuando se está en la misma red.", "Edit": "Editar", "EditImages": "Editar imágenes", From 94a2a8749bdfe5b9fa2ba9c82b25218309648e4f Mon Sep 17 00:00:00 2001 From: Louis Hermier Date: Sun, 22 Mar 2020 12:00:27 +0000 Subject: [PATCH 35/71] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 4a52756ec4..4c726c8245 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1100,7 +1100,7 @@ "PlayAllFromHere": "Tout lire à partir d'ici", "PlayCount": "Nombre de lectures", "PlayFromBeginning": "Lire depuis le début", - "PlayNext": "Lire le suivant", + "PlayNext": "Lire ensuite", "PlayNextEpisodeAutomatically": "Lancer l'épisode suivant automatiquement", "Played": "Lu", "Playlists": "Listes de lecture", From c96db195761cee16e602d0afc94f994da1a517eb Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Mon, 23 Mar 2020 10:56:23 +0100 Subject: [PATCH 36/71] Remove libjass from yarn dependencies --- package.json | 1 - yarn.lock | 161 +++++++++------------------------------------------ 2 files changed, 27 insertions(+), 135 deletions(-) diff --git a/package.json b/package.json index 6d07f9a6fa..9d26a02319 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,6 @@ "jquery": "^3.4.1", "jstree": "^3.3.7", "libass-wasm": "https://github.com/jellyfin/JavascriptSubtitlesOctopus", - "libjass": "^0.11.0", "material-design-icons-iconfont": "^5.0.1", "native-promise-only": "^0.8.0-a", "page": "^1.11.5", diff --git a/yarn.lock b/yarn.lock index 8dee672565..02766a1edc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3072,7 +3072,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" -debug@3.X, debug@^3.0.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: +debug@3.X, debug@^3.0.0, debug@^3.1.1, debug@^3.2.5: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -3183,11 +3183,6 @@ deep-equal@^1.0.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -3302,11 +3297,6 @@ detect-file@^1.0.0: resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - detect-newline@2.X: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" @@ -4551,13 +4541,6 @@ fs-extra@3.0.1: jsonfile "^3.0.0" universalify "^0.1.0" -fs-minipass@^1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - fs-mkdirp-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" @@ -5532,7 +5515,7 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: +iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -5556,13 +5539,6 @@ iferr@^0.1.5: resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= -ignore-walk@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== - dependencies: - minimatch "^3.0.4" - ignore@^3.3.5: version "3.3.10" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" @@ -5744,7 +5720,7 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: +ini@^1.3.4, ini@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== @@ -6530,11 +6506,6 @@ levn@^0.3.0, levn@~0.3.0: version "3.0.2" resolved "https://github.com/jellyfin/JavascriptSubtitlesOctopus#7f331237026db75af2441717a4132d2398e96735" -libjass@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/libjass/-/libjass-0.11.0.tgz#bff1f464a2428c3bddfb68e4503b2d52afe3d6e6" - integrity sha1-v/H0ZKJCjDvd+2jkUDstUq/j1uY= - liftoff@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-3.1.0.tgz#c9ba6081f908670607ee79062d700df062c52ed3" @@ -7257,21 +7228,6 @@ minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -7406,15 +7362,6 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -needle@^2.2.1: - version "2.3.3" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.3.tgz#a041ad1d04a871b0ebb666f40baaf1fb47867117" - integrity sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -7499,22 +7446,6 @@ node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" -node-pre-gyp@*: - version "0.14.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" - integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4.4.2" - node-releases@^1.1.50: version "1.1.52" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.52.tgz#bcffee3e0a758e92e44ecfaecd0a47554b0bcba9" @@ -7552,14 +7483,6 @@ node-sass@^4.13.1, node-sass@^4.8.3: dependencies: abbrev "1" -nopt@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== - dependencies: - abbrev "1" - osenv "^0.1.4" - normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -7613,13 +7536,6 @@ now-and-later@^2.0.0: dependencies: once "^1.3.2" -npm-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== - dependencies: - npm-normalize-package-bin "^1.0.1" - npm-conf@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9" @@ -7628,20 +7544,6 @@ npm-conf@^1.1.0: config-chain "^1.1.11" pify "^3.0.0" -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-packlist@^1.1.6: - version "1.4.8" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-normalize-package-bin "^1.0.1" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -7649,7 +7551,7 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2: +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== @@ -7916,7 +7818,7 @@ os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@0, osenv@^0.1.4: +osenv@0: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== @@ -9304,6 +9206,15 @@ query-string@^5.0.1: object-assign "^4.1.0" strict-uri-encode "^1.0.0" +query-string@^6.11.1: + version "6.11.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.11.1.tgz#ab021f275d463ce1b61e88f0ce6988b3e8fe7c2c" + integrity sha512-1ZvJOUl8ifkkBxu2ByVM/8GijMIPx+cef7u3yroO3Ogm4DOdZcF5dcrWTIlSHe3Pg/mtlt6/eFjObDfJureZZA== + dependencies: + decode-uri-component "^0.2.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -9369,16 +9280,6 @@ raw-body@^2.3.2: iconv-lite "0.4.24" unpipe "1.0.0" -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - read-file-stdin@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/read-file-stdin/-/read-file-stdin-0.2.1.tgz#25eccff3a153b6809afacb23ee15387db9e0ee61" @@ -9853,7 +9754,7 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: +rimraf@2, rimraf@^2.5.4, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -9952,7 +9853,7 @@ sass-graph@^2.2.4: scss-tokenizer "^0.2.3" yargs "^7.0.0" -sax@^1.2.4, sax@~1.2.4: +sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -10485,6 +10386,11 @@ specificity@^0.4.1: resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.4.1.tgz#aab5e645012db08ba182e151165738d00887b019" integrity sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg== +split-on-first@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" + integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== + split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" @@ -10640,6 +10546,11 @@ strict-uri-encode@^1.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= +strict-uri-encode@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" + integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= + string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -10801,11 +10712,6 @@ strip-json-comments@^3.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - strip-outer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631" @@ -11115,19 +11021,6 @@ tar@^2.0.0: fstream "^1.0.12" inherits "2" -tar@^4.4.2: - version "4.4.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" - integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.8.6" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" - temp-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" @@ -12275,7 +12168,7 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: +yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== From f6cb372610b7b201b36982fb922d0dd7521b611c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20F=C3=A4th?= Date: Mon, 23 Mar 2020 16:49:00 +0100 Subject: [PATCH 37/71] Fix cast sender api path --- src/scripts/site.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/site.js b/src/scripts/site.js index 6739e3cd59..b9be7351aa 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -415,7 +415,7 @@ var AppInfo = {}; define("fileDownloader", [componentsPath + "/filedownloader"], returnFirstDependency); define("localassetmanager", [bowerPath + "/apiclient/localassetmanager"], returnFirstDependency); - define("castSenderApiLoader", [componentsPath + "castSenderApi"], returnFirstDependency); + define("castSenderApiLoader", [componentsPath + "/castSenderApi"], returnFirstDependency); define("transfermanager", [bowerPath + "/apiclient/sync/transfermanager"], returnFirstDependency); define("filerepository", [bowerPath + "/apiclient/sync/filerepository"], returnFirstDependency); From 7f10a81a1621e1bb28f32b4846fbc669bbb36cf6 Mon Sep 17 00:00:00 2001 From: Louis Hermier Date: Mon, 23 Mar 2020 16:53:31 +0000 Subject: [PATCH 38/71] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 4c726c8245..fd85828c17 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1470,5 +1470,7 @@ "AllowFfmpegThrottlingHelp": "Quand le transcodage ou le remultiplexage est suffisamment loin de la position de lecture, le processus se mettra en pause afin d’économiser des ressources. Plus utile lors d’une lecture continue. À désactiver en cas de problèmes de lecture.", "AllowFfmpegThrottling": "Adapter la Vitesse du Transcodage", "NoCreatedLibraries": "Il semblerait que vous n'ayez créé aucune librairie. {0}Voulez-vous en créer une maintenant ?{1}", - "PlaybackErrorNoCompatibleStream": "Problème de profil client, le serveur n’a pas pu envoyer un format média compatible." + "PlaybackErrorNoCompatibleStream": "Problème de profil client, le serveur n’a pas pu envoyer un format média compatible.", + "PreferEmbeddedEpisodeInfosOverFileNames": "Préférer les informations intégrées aux noms de fichiers", + "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Utilise les informations des métadonnées intégrées, si disponible." } From bb475fd24ad69821d55a359d21bd76c66d7d00ee Mon Sep 17 00:00:00 2001 From: Adam Bokor Date: Mon, 23 Mar 2020 17:52:01 +0000 Subject: [PATCH 39/71] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index 7ade41afff..0f0b0aee68 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -1474,5 +1474,7 @@ "DeviceAccessHelp": "Ez csak azokra az eszközökre alkalmazható, amelyek egyedileg vannak azonosítva és nem gátolják meg a böngészőből való elérést. A felhasználói eszközök kiszűrése meg fogja akadályozni az új eszközök használatát addig, amíg itt nem engedélyezed őket.", "PlaybackErrorNoCompatibleStream": "Hiba történt a kliens felmérése közben és a szerver nem küld kompatibilis formátumot az eszközre.", "AllowFfmpegThrottlingHelp": "Ha az átkódolás vagy remux eléggé előtöltődött a jelenlegi lejátszási pozícióhoz képest, ez megállítja a folyamatot, hogy kevesebb erőforrást vegyen igénybe. Ez akkor hasznos, ha ritkán ugrálsz előre a lejátszott videókban. Kapcsold ki, ha lejátszási problémákba ütközöl.", - "AllowFfmpegThrottling": "Átkódolás visszafogása" + "AllowFfmpegThrottling": "Átkódolás visszafogása", + "PreferEmbeddedEpisodeInfosOverFileNames": "Inkább a beágyazott epizódokra vonatkozó információkat részesítse előnyben a fájlnevekkel szemben", + "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Ez a beágyazott metaadatok epizódinformációit használja, ha rendelkezésre állnak." } From 2bda5f0277be6a1df2ed69cd315231ad8d5281f9 Mon Sep 17 00:00:00 2001 From: Riccardo Zanotto Date: Mon, 23 Mar 2020 18:53:57 +0000 Subject: [PATCH 40/71] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/it.json b/src/strings/it.json index 5b213e1bce..4dd7b3d190 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -581,7 +581,7 @@ "LabelForgotPasswordUsernameHelp": "Inserisci il tuo nome utente, se te lo ricordi.", "LabelFormat": "Formato:", "LabelFriendlyName": "Nome Condiviso:", - "LabelServerNameHelp": "Questo nome è usato per identificare il server e verrà usato di default come nome del pc.", + "LabelServerNameHelp": "Questo nome è usato per identificare il server e avrà come default il nome del pc.", "LabelGroupMoviesIntoCollections": "Raggruppa i film nelle collezioni", "LabelGroupMoviesIntoCollectionsHelp": "Quando si visualizzano le liste di film, quelli appartenenti ad una collezione saranno visualizzati come un elemento raggruppato.", "LabelH264Crf": "CRF di codifica H264:", From c882c264a30bc83a04bdf0761db09831d55bf2b8 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 24 Mar 2020 10:03:51 +0300 Subject: [PATCH 41/71] Fix view restoring --- src/components/appRouter.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/components/appRouter.js b/src/components/appRouter.js index efb58a089f..62bfb3cf40 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -511,9 +511,16 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM return baseRoute; } + var popstateOccurred = false; + window.addEventListener('popstate', function () { + popstateOccurred = true; + }); + function getHandler(route) { return function (ctx, next) { + ctx.isBack = popstateOccurred; handleRoute(ctx, next, route); + popstateOccurred = false; }; } From 34a5578679ddaa717e4185a27de48bb3b74bfe43 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Fri, 28 Feb 2020 14:36:42 +0100 Subject: [PATCH 42/71] Run postcss for webpack bundle --- postcss.config.js | 2 +- src/scripts/site.js | 1 - yarn.lock | 23 +++++++++++++++++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/postcss.config.js b/postcss.config.js index 23159fd295..bd6e644892 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -1,4 +1,4 @@ -const postcssPresetEnv = require('postcss-preset-env'); +const postcssPresetEnv = require('postcss-preset-env') const cssnano = require('cssnano'); const config = () => ({ diff --git a/src/scripts/site.js b/src/scripts/site.js index 4e208dbe0f..155e28b94e 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -677,7 +677,6 @@ var AppInfo = {}; }, bundles: { bundle: [ - "document-register-element", "fetch", "flvjs", "jstree", diff --git a/yarn.lock b/yarn.lock index 02766a1edc..d260ee6e3f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -730,6 +730,11 @@ resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== +"@csstools/convert-colors@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== + "@gulp-sourcemaps/identity-map@1.X": version "1.0.2" resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/identity-map/-/identity-map-1.0.2.tgz#1e6fe5d8027b1f285dc0d31762f566bccd73d5a9" @@ -8952,6 +8957,15 @@ postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: indexes-of "^1.0.1" uniq "^1.0.1" +postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" @@ -9020,6 +9034,15 @@ postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: indexes-of "^1.0.1" uniq "^1.0.1" +postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + postcss@^5.0.0, postcss@^5.0.18: version "5.2.18" resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" From 0a0fe15b263707817cd092d9c8369587992e4275 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 1 Mar 2020 08:40:57 +0100 Subject: [PATCH 43/71] Enable ES6 support for all tools --- .eslintrc.yml | 6 ++++++ gulpfile.js | 2 +- package.json | 9 ++++++--- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/.eslintrc.yml b/.eslintrc.yml index 4bc22fc1d4..377716d53c 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -3,6 +3,12 @@ env: browser: true amd: true +parserOptions: + ecmaVersion: 6 + sourceType: module + ecmaFeatures: + impliedStrict: true + globals: # New browser globals DataView: readonly diff --git a/gulpfile.js b/gulpfile.js index ca6cf36dd2..a0337db1c9 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -18,7 +18,7 @@ const stream = require('webpack-stream'); const inject = require('gulp-inject'); const postcss = require('gulp-postcss'); const sass = require('gulp-sass'); - + sass.compiler = require('node-sass') diff --git a/package.json b/package.json index 9d26a02319..2de78b821c 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "devDependencies": { "@babel/core": "^7.8.6", "@babel/polyfill": "^7.8.7", + "@babel/plugin-transform-modules-amd": "^7.8.3", "@babel/preset-env": "^7.8.6", "autoprefixer": "^9.7.4", "babel-loader": "^8.0.6", @@ -69,9 +70,11 @@ "whatwg-fetch": "^3.0.0" }, "babel": { - "presets": [ - "@babel/preset-env" - ] + "presets": ["@babel/preset-env"], + "overrides": [{ + "test": ["src/components/cardbuilder/cardBuilder.js"], + "plugins": ["@babel/plugin-transform-modules-amd"] + }] }, "browserslist": [ "last 2 Firefox versions", From 8891be539e1a36ac6230abdf8ccdc3f8b964d277 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 19 Mar 2020 21:15:38 +0100 Subject: [PATCH 44/71] Convert CardBuilder to ES6 --- src/components/cardbuilder/cardBuilder.js | 47 ++++++++++++----------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 7f562f1fd0..8f626ab211 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1,10 +1,23 @@ -define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusManager', 'indicators', 'globalize', 'layoutManager', 'apphost', 'dom', 'browser', 'playbackManager', 'itemShortcuts', 'scripts/imagehelper', 'css!./card', 'paper-icon-button-light', 'programStyles'], - function (datetime, imageLoader, connectionManager, itemHelper, focusManager, indicators, globalize, layoutManager, appHost, dom, browser, playbackManager, itemShortcuts, imageHelper) { - 'use strict'; +import datetime from 'datetime'; +import imageLoader from 'imageLoader'; +import connectionManager from 'connectionManager'; +import itemHelper from 'itemHelper'; +import focusManager from 'focusManager'; +import indicators from 'indicators'; +import globalize from 'globalize'; +import layoutManager from 'layoutManager'; +import dom from 'dom'; +import browser from 'browser'; +import playbackManager from 'playbackManager'; +import itemShortcuts from 'itemShortcuts'; +import imageHelper from 'scripts/imagehelper'; +import 'css!./card'; +import 'paper-icon-button-light'; +import 'programStyles'; var enableFocusTransform = !browser.slow && !browser.edge; - function getCardsHtml(items, options) { + export function getCardsHtml(items, options) { if (arguments.length === 1) { options = arguments[0]; items = options.items; @@ -1171,7 +1184,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } } - function getDefaultBackgroundClass(str) { + export function getDefaultBackgroundClass(str) { return 'defaultCardBackground defaultCardBackground' + getDefaultColorIndex(str); } @@ -1504,7 +1517,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana return html; } - function getDefaultText(item, options) { + export function getDefaultText(item, options) { if (item.CollectionType) { return '' } @@ -1533,7 +1546,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana return '
' + defaultName + '
'; } - function buildCards(items, options) { + export function buildCards(items, options) { // Abort if the container has been disposed if (!document.body.contains(options.itemsContainer)) { @@ -1678,7 +1691,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } } - function onUserDataChanged(userData, scope) { + export function onUserDataChanged(userData, scope) { var cards = (scope || document.body).querySelectorAll('.card-withuserdata[data-id="' + userData.ItemId + '"]'); @@ -1687,7 +1700,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } } - function onTimerCreated(programId, newTimerId, itemsContainer) { + export function onTimerCreated(programId, newTimerId, itemsContainer) { var cells = itemsContainer.querySelectorAll('.card[data-id="' + programId + '"]'); @@ -1702,7 +1715,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } } - function onTimerCancelled(id, itemsContainer) { + export function onTimerCancelled(id, itemsContainer) { var cells = itemsContainer.querySelectorAll('.card[data-timerid="' + id + '"]'); @@ -1716,7 +1729,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } } - function onSeriesTimerCancelled(id, itemsContainer) { + export function onSeriesTimerCancelled(id, itemsContainer) { var cells = itemsContainer.querySelectorAll('.card[data-seriestimerid="' + id + '"]'); @@ -1729,15 +1742,3 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana cell.removeAttribute('data-seriestimerid'); } } - - return { - getCardsHtml: getCardsHtml, - getDefaultBackgroundClass: getDefaultBackgroundClass, - getDefaultText: getDefaultText, - buildCards: buildCards, - onUserDataChanged: onUserDataChanged, - onTimerCreated: onTimerCreated, - onTimerCancelled: onTimerCancelled, - onSeriesTimerCancelled: onSeriesTimerCancelled - }; - }); From bbbef042bf227ebd48159304b0c07c55b3238bca Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 19 Mar 2020 21:16:40 +0100 Subject: [PATCH 45/71] Add JSDoc comments --- postcss.config.js | 2 +- src/components/cardbuilder/cardBuilder.js | 252 +++++++++++++++++----- src/scripts/site.js | 1 + 3 files changed, 195 insertions(+), 60 deletions(-) diff --git a/postcss.config.js b/postcss.config.js index bd6e644892..23159fd295 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -1,4 +1,4 @@ -const postcssPresetEnv = require('postcss-preset-env') +const postcssPresetEnv = require('postcss-preset-env'); const cssnano = require('cssnano'); const config = () => ({ diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 8f626ab211..edf3d0d606 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1,3 +1,7 @@ +/** + * Card builder module. + * @module cardBuilder + */ import datetime from 'datetime'; import imageLoader from 'imageLoader'; import connectionManager from 'connectionManager'; @@ -17,6 +21,12 @@ import 'programStyles'; var enableFocusTransform = !browser.slow && !browser.edge; + /** + * Generate the HTML markup for cards of a set of items. + * @param items - The items to generate cards for. + * @param options - The options of the cards. + * @returns {string} The HTML markup for cards. + */ export function getCardsHtml(items, options) { if (arguments.length === 1) { options = arguments[0]; @@ -26,6 +36,13 @@ import 'programStyles'; return buildCardsHtmlInternal(items, options); } + /** + * Computes the number of posters per row. + * @param {string} shape - Shape of the cards. + * @param {number} screenWidth - Width of the screen. + * @param {boolean} isOrientationLandscape - Flag for the orientation of the screen. + * @returns {number} Number of cards per row of an itemsContainer. + */ function getPostersPerRow(shape, screenWidth, isOrientationLandscape) { switch (shape) { case 'portrait': @@ -230,6 +247,11 @@ import 'programStyles'; } } + /** + * Checks if the window is resizable. + * @param {number} windowWidth - Width of the client's screen. + * @returns {boolean} - Result of the check. + */ function isResizable(windowWidth) { var screen = window.screen; if (screen) { @@ -243,15 +265,24 @@ import 'programStyles'; return false; } + /** + * Gets the width of a card's image according to the shape and amount of cards per row. + * @param {string} shape - Shape of the card. + * @param {number} screenWidth - Width of the screen. + * @param {boolean} isOrientationLandscape - Flag for the orientation of the screen. + * @returns {number} Width of the image for a card. + */ function getImageWidth(shape, screenWidth, isOrientationLandscape) { var imagesPerRow = getPostersPerRow(shape, screenWidth, isOrientationLandscape); - var shapeWidth = Math.round(screenWidth / imagesPerRow) * 2; - - return shapeWidth; + return Math.round(screenWidth / imagesPerRow) * 2; } + /** + * Normalizes the options of a card. + * @param {Object} items - A set of items. + * @param {Object} options - Options for handling the items. + */ function setCardData(items, options) { - options.shape = options.shape || "auto"; var primaryImageAspectRatio = imageLoader.getPrimaryImageAspectRatio(items); @@ -308,8 +339,13 @@ import 'programStyles'; } } + /** + * Generates the internal HTML markup for cards. + * @param {Object} items - Items for which to generate the markup. + * @param {Object} options - Options for generating the markup. + * @returns {string} The internal HTML markup of the cards. + */ function buildCardsHtmlInternal(items, options) { - var isVertical; if (options.shape === 'autoVertical') { @@ -438,8 +474,12 @@ import 'programStyles'; return html; } + /** + * Computes the Aspect Ratio for a card given its shape. + * @param {string} shape - Shape for which to get the aspect ratio. + * @returns {null|number} Ratio of the shape. + */ function getDesiredAspect(shape) { - if (shape) { shape = shape.toLowerCase(); if (shape.indexOf('portrait') !== -1) { @@ -458,8 +498,21 @@ import 'programStyles'; return null; } - function getCardImageUrl(item, apiClient, options, shape) { + /** + * @typedef {Object} CardImageUrl + * @property {string} imgUrl - URL of the image. + * @property {boolean} forceName - Force the name to be visible. + * @property {boolean} coverImage - Acts as a cover image. + */ + /** Get the URL of the Card's image. + * @param {Object} item - Item for which to generate a card. + * @param {Object} apiClient - API Client object. + * @param {Object} options - Options of the card to generate. + * @param {string} shape - Shape of the desired image. + * @returns {CardImageUrl} Object representing the URL of the card's image. + */ + function getCardImageUrl(item, apiClient, options, shape) { var imageItem = item.ProgramInfo || item; item = imageItem; @@ -676,12 +729,23 @@ import 'programStyles'; }; } + /** + * Generates a random integer in a range. + * @param {number} min - Minimum of the range. + * @param {number} max - Maximum of the range. + * @returns {number} Randomly generated number. + */ function getRandomInt(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } - var numRandomColors = 5; + /** + * Generates an index used to select the default color of a Card based on a string. + * @param {string} str - String to use for generating the index. + * @returns {number} Index of the color. + */ function getDefaultColorIndex(str) { + var numRandomColors = 5; if (str) { var charIndex = Math.floor(str.length / 2); @@ -698,8 +762,18 @@ import 'programStyles'; } } + /** + * Generates the HTML markup for a card's text. + * @param {Array} lines - Array containing the text lines. + * @param {string} cssClass - Base CSS class to use for the lines. + * @param {boolean} forceLines - Flag to force the rendering of all lines. + * @param {boolean} isOuterFooter - Flag to mark the text lines as outer footer. + * @param {string} cardLayout - DEPRECATED + * @param {boolean} addRightMargin - Flag to add a right margin to the text. + * @param {number} maxLines - Maximum number of lines to render. + * @returns {string} HTML markup fo the card's text. + */ function getCardTextLines(lines, cssClass, forceLines, isOuterFooter, cardLayout, addRightMargin, maxLines) { - var html = ''; var valid = 0; @@ -746,12 +820,23 @@ import 'programStyles'; return html; } + /** + * Determines if the item is Live TV. + * @param {Object} item - Item to use. + * @returns {boolean} Flag showing if the item is Live TV. + */ function isUsingLiveTvNaming(item) { return item.Type === 'Program' || item.Type === 'Timer' || item.Type === 'Recording'; } + /** + * Returns the air time text for the item based on the given times. + * @param {object} item - Item used to generate the air time text. + * @param {string} showAirDateTime - ISO8601 date for the start of the show. + * @param {string} showAirEndTime - ISO8601 date for the end of the show. + * @returns {string} The air time text for the item base on the given dates. + */ function getAirTimeText(item, showAirDateTime, showAirEndTime) { - var airTimeText = ''; if (item.StartDate) { @@ -776,8 +861,22 @@ import 'programStyles'; return airTimeText; } + /** + * Generates the HTML markup for the card's footer text. + * @param {Object} item - Item used to generate the footer text. + * @param {Object} apiClient - API Client instance. + * @param {Object} options - Options used to generate the footer text. + * @param {string} showTitle - Title of the show. + * @param {boolean} forceName - Flag to force showing the name of the item. + * @param {boolean} overlayText - Flag to show overlay text. + * @param {CardImageUrl} imgUrl - Object representing the card's image URL. + * @param {string} footerClass - CSS class of the footer. + * @param {string} progressHtml - HTML markup of the progress bar. + * @param {string} logoUrl - URL of the logo for the item. + * @param {boolean} isOuterFooter - Flag to mark the text as outer footer. + * @returns {string} HTML markup of the card's footer text. + */ function getCardFooterText(item, apiClient, options, showTitle, forceName, overlayText, imgUrl, footerClass, progressHtml, logoUrl, isOuterFooter) { - var html = ''; if (logoUrl) { @@ -1040,8 +1139,14 @@ import 'programStyles'; return html; } + /** + * Generates the HTML markup for the action button. + * @param {Object} item - Item used to generate the action button. + * @param {string} text - Text of the action button. + * @param {string} serverId - ID of the server. + * @returns {string} HTML markup of the action button. + */ function getTextActionButton(item, text, serverId) { - if (!text) { text = itemHelper.getDisplayName(item); } @@ -1057,10 +1162,14 @@ import 'programStyles'; return html; } + /** + * Generates HTML markup for the item count indicator. + * @param {Object} options - Options used to generate the item count. + * @param {Object} item - Item used to generate the item count. + * @returns {string} HTML markup for the item count indicator. + */ function getItemCountsHtml(options, item) { - var counts = []; - var childText; if (item.Type === 'Playlist') { @@ -1148,48 +1257,36 @@ import 'programStyles'; return counts.join(', '); } - function getProgramIndicators(item) { - - item = item.ProgramInfo || item; - - var html = ''; - - if (item.IsLive) { - html += '
' + globalize.translate('Live') + '
'; - } - - if (item.IsPremiere) { - html += '
' + globalize.translate('Premiere') + '
'; - } else if (item.IsSeries && !item.IsRepeat) { - html += '
' + globalize.translate('AttributeNew') + '
'; - } - //else if (item.IsRepeat) { - // html += '
' + globalize.translate('Repeat') + '
'; - //} - - if (html) { - html = '
' + html; - html += '
'; - } - - return html; - } - var refreshIndicatorLoaded; - function requireRefreshIndicator() { + /** + * Imports the refresh indicator element. + */ + function requireRefreshIndicator() { if (!refreshIndicatorLoaded) { refreshIndicatorLoaded = true; require(['emby-itemrefreshindicator']); } } + /** + * Returns the default background class for a card based on a string. + * @param {string} str - Text used to generate the background class. + * @returns {string} CSS classes for default card backgrounds. + */ export function getDefaultBackgroundClass(str) { return 'defaultCardBackground defaultCardBackground' + getDefaultColorIndex(str); } + /** + * Builds the HTML markup for an individual card. + * @param {number} index - Index of the card + * @param {object} item - Item used to generate the card. + * @param {object} apiClient - API Client instance. + * @param {object} options - Options used to generate the card. + * @returns {string} HTML markup for the generated card. + */ function buildCard(index, item, apiClient, options) { - var action = options.action || 'link'; if (action === 'play' && item.IsFolder) { @@ -1424,10 +1521,6 @@ import 'programStyles'; cardImageContainerOpen += '
' + indicatorsHtml + '
'; } - //if (item.Type === 'Program' || item.Type === 'Timer') { - // cardImageContainerOpen += getProgramIndicators(item); - //} - if (!imgUrl) { cardImageContainerOpen += getDefaultText(item, options); } @@ -1480,8 +1573,13 @@ import 'programStyles'; return '<' + tagName + ' data-index="' + index + '"' + timerAttributes + actionAttribute + ' data-isfolder="' + (item.IsFolder || false) + '" data-serverid="' + (item.ServerId || options.serverId) + '" data-id="' + (item.Id || item.ItemId) + '" data-type="' + item.Type + '"' + mediaTypeData + collectionTypeData + channelIdData + positionTicksData + collectionIdData + playlistIdData + contextData + parentIdData + ' data-prefix="' + prefix + '" class="' + className + '">' + cardImageContainerOpen + innerCardFooter + cardImageContainerClose + overlayButtons + additionalCardContent + cardScalableClose + outerCardFooter + cardBoxClose + ''; } + /** + * Generates HTML markup for the card overlay. + * @param {object} item - Item used to generate the card overlay. + * @param {string} action - Action assigned to the overlay. + * @returns {string} HTML markup of the card overlay. + */ function getHoverMenuHtml(item, action) { - var html = ''; html += '
'; @@ -1517,6 +1615,12 @@ import 'programStyles'; return html; } + /** + * Generates the text or icon used on default card backgrounds. + * @param {object} item - Item used to generate the card overlay. + * @param {object} options - Options used to generate the card overlay. + * @returns {string} HTML markup of the card overlay. + */ export function getDefaultText(item, options) { if (item.CollectionType) { return '' @@ -1546,8 +1650,12 @@ import 'programStyles'; return '
' + defaultName + '
'; } + /** + * Builds a set of cards and inserts it into the page;. + * @param {Array} items - Array of items used to build cards. + * @param {options} options - Options of the cards to build. + */ export function buildCards(items, options) { - // Abort if the container has been disposed if (!document.body.contains(options.itemsContainer)) { return; @@ -1588,8 +1696,13 @@ import 'programStyles'; } } + /** + * Ensures the indicators for a card exist and creates them if they don't. + * @param {string} card - HTML Markup of the card. + * @param {string} indicatorsElem - HTML markup of the indicators. + * @returns {string} - HTML markup of the indicators. + */ function ensureIndicators(card, indicatorsElem) { - if (indicatorsElem) { return indicatorsElem; } @@ -1607,8 +1720,12 @@ import 'programStyles'; return indicatorsElem; } + /** + * Adds user data to the card such as progress indicators, played status, etc. + * @param {string} card - HTML markup of the card. + * @param {Object} userData - User data to apply to the card. + */ function updateUserData(card, userData) { - var type = card.getAttribute('data-type'); var enableCountIndicator = type === 'Series' || type === 'BoxSet' || type === 'Season'; var indicatorsElem = null; @@ -1691,8 +1808,12 @@ import 'programStyles'; } } + /** + * Handles when user data has changed. + * @param {Object} userData - User data to apply to the card. + * @param {HTMLElement} scope - DOM Element to use as a scope when selecting cards. + */ export function onUserDataChanged(userData, scope) { - var cards = (scope || document.body).querySelectorAll('.card-withuserdata[data-id="' + userData.ItemId + '"]'); for (var i = 0, length = cards.length; i < length; i++) { @@ -1700,8 +1821,13 @@ import 'programStyles'; } } + /** + * Handles when a timer was created. + * @param {string} programId - ID of the program. + * @param {string} newTimerId - ID of the new timer. + * @param {HTMLElement} itemsContainer - DOM Element of the items container. + */ export function onTimerCreated(programId, newTimerId, itemsContainer) { - var cells = itemsContainer.querySelectorAll('.card[data-id="' + programId + '"]'); for (var i = 0, length = cells.length; i < length; i++) { @@ -1715,9 +1841,13 @@ import 'programStyles'; } } - export function onTimerCancelled(id, itemsContainer) { - - var cells = itemsContainer.querySelectorAll('.card[data-timerid="' + id + '"]'); + /** + * Handles when a timer is cancelled. + * @param {string} timerId - ID of the cancelled timer. + * @param {HTMLElement} itemsContainer - DOM Element of the items container. + */ + export function onTimerCancelled(timerId, itemsContainer) { + var cells = itemsContainer.querySelectorAll('.card[data-timerid="' + timerId + '"]'); for (var i = 0, length = cells.length; i < length; i++) { var cell = cells[i]; @@ -1729,9 +1859,13 @@ import 'programStyles'; } } - export function onSeriesTimerCancelled(id, itemsContainer) { - - var cells = itemsContainer.querySelectorAll('.card[data-seriestimerid="' + id + '"]'); + /** + * Handles when a series timer is cancelled. + * @param {string} canceledTimerId - ID of the cancelled timer. + * @param {HTMLElement} itemsContainer - DOM Element of the items container. + */ + export function onSeriesTimerCancelled(canceledTimerId, itemsContainer) { + var cells = itemsContainer.querySelectorAll('.card[data-seriestimerid="' + canceledTimerId + '"]'); for (var i = 0, length = cells.length; i < length; i++) { var cell = cells[i]; diff --git a/src/scripts/site.js b/src/scripts/site.js index 155e28b94e..4e208dbe0f 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -677,6 +677,7 @@ var AppInfo = {}; }, bundles: { bundle: [ + "document-register-element", "fetch", "flvjs", "jstree", From 55d1657b50b63560dc49ed48b38ef4d60620bd79 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 19 Mar 2020 22:33:41 +0100 Subject: [PATCH 46/71] Migrate var in CardBuilder to let and const --- src/components/cardbuilder/cardBuilder.js | 318 +++++++++++----------- 1 file changed, 155 insertions(+), 163 deletions(-) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index edf3d0d606..24e4035050 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1,3 +1,4 @@ +/* eslint-disable indent */ /** * Card builder module. * @module cardBuilder @@ -19,7 +20,7 @@ import 'css!./card'; import 'paper-icon-button-light'; import 'programStyles'; - var enableFocusTransform = !browser.slow && !browser.edge; + const enableFocusTransform = !browser.slow && !browser.edge; /** * Generate the HTML markup for cards of a set of items. @@ -253,9 +254,9 @@ import 'programStyles'; * @returns {boolean} - Result of the check. */ function isResizable(windowWidth) { - var screen = window.screen; + const screen = window.screen; if (screen) { - var screenWidth = screen.availWidth; + const screenWidth = screen.availWidth; if ((screenWidth - windowWidth) > 20) { return true; @@ -273,7 +274,7 @@ import 'programStyles'; * @returns {number} Width of the image for a card. */ function getImageWidth(shape, screenWidth, isOrientationLandscape) { - var imagesPerRow = getPostersPerRow(shape, screenWidth, isOrientationLandscape); + const imagesPerRow = getPostersPerRow(shape, screenWidth, isOrientationLandscape); return Math.round(screenWidth / imagesPerRow) * 2; } @@ -285,11 +286,11 @@ import 'programStyles'; function setCardData(items, options) { options.shape = options.shape || "auto"; - var primaryImageAspectRatio = imageLoader.getPrimaryImageAspectRatio(items); + const primaryImageAspectRatio = imageLoader.getPrimaryImageAspectRatio(items); - if (options.shape === 'auto' || options.shape === 'autohome' || options.shape === 'autooverflow' || options.shape === 'autoVertical') { + if (['auto', 'autohome', 'autooverflow', 'autoVertical'].includes(options.shape)) { - var requestedShape = options.shape; + const requestedShape = options.shape; options.shape = null; if (primaryImageAspectRatio) { @@ -327,11 +328,11 @@ import 'programStyles'; } if (!options.width) { - var screenWidth = dom.getWindowSize().innerWidth; - var screenHeight = dom.getWindowSize().innerHeight; + let screenWidth = dom.getWindowSize().innerWidth; + const screenHeight = dom.getWindowSize().innerHeight; if (isResizable(screenWidth)) { - var roundScreenTo = 100; + const roundScreenTo = 100; screenWidth = Math.floor(screenWidth / roundScreenTo) * roundScreenTo; } @@ -346,7 +347,7 @@ import 'programStyles'; * @returns {string} The internal HTML markup of the cards. */ function buildCardsHtmlInternal(items, options) { - var isVertical; + let isVertical = false; if (options.shape === 'autoVertical') { isVertical = true; @@ -354,24 +355,21 @@ import 'programStyles'; setCardData(items, options); - var html = ''; - var itemsInRow = 0; + let html = ''; + let itemsInRow = 0; - var currentIndexValue; - var hasOpenRow; - var hasOpenSection; + let currentIndexValue; + let hasOpenRow; + let hasOpenSection; - var sectionTitleTagName = options.sectionTitleTagName || 'div'; - var apiClient; - var lastServerId; + let sectionTitleTagName = options.sectionTitleTagName || 'div'; + let apiClient; + let lastServerId; - var i; - var length; + for (let i = 0; i < items.length; i++) { - for (i = 0, length = items.length; i < length; i++) { - - var item = items[i]; - var serverId = item.ServerId || options.serverId; + let item = items[i]; + let serverId = item.ServerId || options.serverId; if (serverId !== lastServerId) { lastServerId = serverId; @@ -379,14 +377,14 @@ import 'programStyles'; } if (options.indexBy) { - var newIndexValue = ''; + let newIndexValue = ''; if (options.indexBy === 'PremiereDate') { if (item.PremiereDate) { try { newIndexValue = datetime.toLocaleDateString(datetime.parseISO8601Date(item.PremiereDate), { weekday: 'long', month: 'long', day: 'numeric' }); - } catch (err) { - console.error('error parsing timestamp for premiere date'); + } catch (error) { + console.error('error parsing timestamp for premiere date', error); } } } else if (options.indexBy === 'ProductionYear') { @@ -461,15 +459,15 @@ import 'programStyles'; } } - var cardFooterHtml = ''; - for (i = 0, length = (options.lines || 0); i < length; i++) { + /*let cardFooterHtml = ''; + for (let i = 0; i < (options.lines || 0); i++) { if (i === 0) { cardFooterHtml += '
 
'; } else { cardFooterHtml += '
 
'; } - } + }*/ return html; } @@ -513,16 +511,15 @@ import 'programStyles'; * @returns {CardImageUrl} Object representing the URL of the card's image. */ function getCardImageUrl(item, apiClient, options, shape) { - var imageItem = item.ProgramInfo || item; - item = imageItem; + item = item.ProgramInfo || item; - var width = options.width; - var height = null; - var primaryImageAspectRatio = item.PrimaryImageAspectRatio; - var forceName = false; - var imgUrl = null; - var coverImage = false; - var uiAspect = null; + const width = options.width; + let height = null; + const primaryImageAspectRatio = item.PrimaryImageAspectRatio; + let forceName = false; + let imgUrl = null; + let coverImage = false; + let uiAspect = null; if (options.preferThumb && item.ImageTags && item.ImageTags.Thumb) { @@ -745,16 +742,16 @@ import 'programStyles'; * @returns {number} Index of the color. */ function getDefaultColorIndex(str) { - var numRandomColors = 5; + const numRandomColors = 5; if (str) { - var charIndex = Math.floor(str.length / 2); - var character = String(str.substr(charIndex, 1).charCodeAt()); - var sum = 0; - for (var i = 0; i < character.length; i++) { + const charIndex = Math.floor(str.length / 2); + const character = String(str.substr(charIndex, 1).charCodeAt()); + let sum = 0; + for (let i = 0; i < character.length; i++) { sum += parseInt(character.charAt(i)); } - var index = String(sum).substr(-1); + let index = String(sum).substr(-1); return (index % numRandomColors) + 1; } else { @@ -774,16 +771,14 @@ import 'programStyles'; * @returns {string} HTML markup fo the card's text. */ function getCardTextLines(lines, cssClass, forceLines, isOuterFooter, cardLayout, addRightMargin, maxLines) { - var html = ''; + let html = ''; - var valid = 0; - var i; - var length; + let valid = 0; - for (i = 0, length = lines.length; i < length; i++) { + for (let i = 0; i < lines.length; i++) { - var currentCssClass = cssClass; - var text = lines[i]; + let currentCssClass = cssClass; + let text = lines[i]; if (valid > 0 && isOuterFooter) { currentCssClass += ' cardText-secondary'; @@ -809,9 +804,9 @@ import 'programStyles'; if (forceLines) { - length = maxLines || Math.min(lines.length, maxLines || lines.length); + let linesLength = maxLines || Math.min(lines.length, maxLines || lines.length); - while (valid < length) { + while (valid < linesLength) { html += "
 
"; valid++; } @@ -837,11 +832,12 @@ import 'programStyles'; * @returns {string} The air time text for the item base on the given dates. */ function getAirTimeText(item, showAirDateTime, showAirEndTime) { - var airTimeText = ''; + let airTimeText = ''; + if (item.StartDate) { try { - var date = datetime.parseISO8601Date(item.StartDate); + let date = datetime.parseISO8601Date(item.StartDate); if (showAirDateTime) { airTimeText += datetime.toLocaleDateString(date, { weekday: 'short', month: 'short', day: 'numeric' }) + ' '; @@ -877,13 +873,13 @@ import 'programStyles'; * @returns {string} HTML markup of the card's footer text. */ function getCardFooterText(item, apiClient, options, showTitle, forceName, overlayText, imgUrl, footerClass, progressHtml, logoUrl, isOuterFooter) { - var html = ''; + let html = ''; if (logoUrl) { html += ''; } - var showOtherText = isOuterFooter ? !overlayText : overlayText; + const showOtherText = isOuterFooter ? !overlayText : overlayText; if (isOuterFooter && options.cardLayout && layoutManager.mobile) { @@ -892,12 +888,12 @@ import 'programStyles'; } } - var cssClass = options.centerText ? "cardText cardTextCentered" : "cardText"; - var serverId = item.ServerId || options.serverId; + const cssClass = options.centerText ? "cardText cardTextCentered" : "cardText"; + const serverId = item.ServerId || options.serverId; - var lines = []; - var parentTitleUnderneath = item.Type === 'MusicAlbum' || item.Type === 'Audio' || item.Type === 'MusicVideo'; - var titleAdded; + let lines = []; + const parentTitleUnderneath = item.Type === 'MusicAlbum' || item.Type === 'Audio' || item.Type === 'MusicVideo'; + let titleAdded; if (showOtherText) { if ((options.showParentTitle || options.showParentTitleOrTitle) && !parentTitleUnderneath) { @@ -926,7 +922,7 @@ import 'programStyles'; } } else { - var parentTitle = item.SeriesName || item.Series || item.Album || item.AlbumArtist || ""; + const parentTitle = item.SeriesName || item.Series || item.Album || item.AlbumArtist || ""; if (parentTitle || showTitle) { lines.push(parentTitle); @@ -936,14 +932,14 @@ import 'programStyles'; } } - var showMediaTitle = (showTitle && !titleAdded) || (options.showParentTitleOrTitle && !lines.length); + let showMediaTitle = (showTitle && !titleAdded) || (options.showParentTitleOrTitle && !lines.length); if (!showMediaTitle && !titleAdded && (showTitle || forceName)) { showMediaTitle = true; } if (showMediaTitle) { - var name = options.showTitle === 'auto' && !item.IsFolder && item.MediaType === 'Photo' ? '' : itemHelper.getDisplayName(item, { + const name = options.showTitle === 'auto' && !item.IsFolder && item.MediaType === 'Photo' ? '' : itemHelper.getDisplayName(item, { includeParentInfo: options.includeParentInfoInTitle }); @@ -970,22 +966,18 @@ import 'programStyles'; } if (options.showItemCounts) { - - var itemCountHtml = getItemCountsHtml(options, item); - - lines.push(itemCountHtml); + lines.push(getItemCountsHtml(options, item)); } if (options.textLines) { - var additionalLines = options.textLines(item); - for (var i = 0, length = additionalLines.length; i < length; i++) { + const additionalLines = options.textLines(item); + for (let i = 0; i < additionalLines.length; i++) { lines.push(additionalLines[i]); } } if (options.showSongCount) { - - var songLine = ''; + let songLine = ''; if (item.SongCount) { songLine = item.SongCount === 1 ? @@ -1023,7 +1015,7 @@ import 'programStyles'; } else { if (item.EndDate && item.ProductionYear) { - var endYear = datetime.parseISO8601Date(item.EndDate).getFullYear(); + const endYear = datetime.parseISO8601Date(item.EndDate).getFullYear(); lines.push(item.ProductionYear + ((endYear === item.ProductionYear) ? '' : (' - ' + endYear))); } else { lines.push(item.ProductionYear || ''); @@ -1118,7 +1110,7 @@ import 'programStyles'; lines = []; } - var addRightTextMargin = isOuterFooter && options.cardLayout && !options.centerText && options.cardFooterAside !== 'none' && layoutManager.mobile; + const addRightTextMargin = isOuterFooter && options.cardLayout && !options.centerText && options.cardFooterAside !== 'none' && layoutManager.mobile; html += getCardTextLines(lines, cssClass, !options.overlayText, isOuterFooter, options.cardLayout, addRightTextMargin, options.lines); @@ -1155,7 +1147,7 @@ import 'programStyles'; return text; } - var html = ''; @@ -1169,8 +1161,8 @@ import 'programStyles'; * @returns {string} HTML markup for the item count indicator. */ function getItemCountsHtml(options, item) { - var counts = []; - var childText; + let counts = []; + let childText; if (item.Type === 'Playlist') { @@ -1178,7 +1170,7 @@ import 'programStyles'; if (item.RunTimeTicks) { - var minutes = item.RunTimeTicks / 600000000; + let minutes = item.RunTimeTicks / 600000000; minutes = minutes || 1; @@ -1257,7 +1249,7 @@ import 'programStyles'; return counts.join(', '); } - var refreshIndicatorLoaded; + let refreshIndicatorLoaded; /** * Imports the refresh indicator element. @@ -1287,7 +1279,7 @@ import 'programStyles'; * @returns {string} HTML markup for the generated card. */ function buildCard(index, item, apiClient, options) { - var action = options.action || 'link'; + let action = options.action || 'link'; if (action === 'play' && item.IsFolder) { // If this hard-coding is ever removed make sure to test nested photo albums @@ -1296,13 +1288,13 @@ import 'programStyles'; action = 'play'; } - var shape = options.shape; + let shape = options.shape; if (shape === 'mixed') { shape = null; - var primaryImageAspectRatio = item.PrimaryImageAspectRatio; + const primaryImageAspectRatio = item.PrimaryImageAspectRatio; if (primaryImageAspectRatio) { @@ -1320,7 +1312,7 @@ import 'programStyles'; // TODO move card creation code to Card component - var className = 'card'; + let className = 'card'; if (shape) { className += ' ' + shape + 'Card'; @@ -1346,16 +1338,16 @@ import 'programStyles'; } } - var imgInfo = getCardImageUrl(item, apiClient, options, shape); - var imgUrl = imgInfo.imgUrl; + const imgInfo = getCardImageUrl(item, apiClient, options, shape); + const imgUrl = imgInfo.imgUrl; - var forceName = imgInfo.forceName; + const forceName = imgInfo.forceName; - var showTitle = options.showTitle === 'auto' ? true : (options.showTitle || item.Type === 'PhotoAlbum' || item.Type === 'Folder'); - var overlayText = options.overlayText; + const showTitle = options.showTitle === 'auto' ? true : (options.showTitle || item.Type === 'PhotoAlbum' || item.Type === 'Folder'); + const overlayText = options.overlayText; - var cardImageContainerClass = 'cardImageContainer'; - var coveredImage = options.coverImage || imgInfo.coverImage; + let cardImageContainerClass = 'cardImageContainer'; + const coveredImage = options.coverImage || imgInfo.coverImage; if (coveredImage) { cardImageContainerClass += ' coveredImage'; @@ -1369,17 +1361,17 @@ import 'programStyles'; cardImageContainerClass += ' ' + getDefaultBackgroundClass(item.Name); } - var cardBoxClass = options.cardLayout ? 'cardBox visualCardBox' : 'cardBox'; + let cardBoxClass = options.cardLayout ? 'cardBox visualCardBox' : 'cardBox'; - var footerCssClass; - var progressHtml = indicators.getProgressBarHtml(item); + let footerCssClass; + let progressHtml = indicators.getProgressBarHtml(item); - var innerCardFooter = ''; + let innerCardFooter = ''; - var footerOverlayed = false; + let footerOverlayed = false; - var logoUrl; - var logoHeight = 40; + let logoUrl; + const logoHeight = 40; if (options.showChannelLogo && item.ChannelPrimaryImageTag) { logoUrl = apiClient.getScaledImageUrl(item.ChannelId, { @@ -1410,12 +1402,12 @@ import 'programStyles'; progressHtml = ''; } - var mediaSourceCount = item.MediaSourceCount || 1; + const mediaSourceCount = item.MediaSourceCount || 1; if (mediaSourceCount > 1) { innerCardFooter += '
' + mediaSourceCount + '
'; } - var outerCardFooter = ''; + let outerCardFooter = ''; if (!overlayText && !footerOverlayed) { footerCssClass = options.cardLayout ? 'cardFooter' : 'cardFooter cardFooter-transparent'; @@ -1434,15 +1426,15 @@ import 'programStyles'; cardBoxClass += ' cardBox-bottompadded'; } - var overlayButtons = ''; + let overlayButtons = ''; if (layoutManager.mobile) { - var overlayPlayButton = options.overlayPlayButton; + let overlayPlayButton = options.overlayPlayButton; if (overlayPlayButton == null && !options.overlayMoreButton && !options.overlayInfoButton && !options.cardLayout) { overlayPlayButton = item.MediaType === 'Video'; } - var btnCssClass = 'cardOverlayButton cardOverlayButton-br itemAction'; + const btnCssClass = 'cardOverlayButton cardOverlayButton-br itemAction'; if (options.centerPlayButton) { overlayButtons += ''; @@ -1462,12 +1454,12 @@ import 'programStyles'; } // cardBox can be it's own separate element if an outer footer is ever needed - var cardImageContainerOpen; - var cardImageContainerClose = ''; - var cardBoxClose = ''; - var cardScalableClose = ''; + let cardImageContainerOpen; + let cardImageContainerClose = ''; + let cardBoxClose = ''; + let cardScalableClose = ''; - var cardContentClass = 'cardContent'; + let cardContentClass = 'cardContent'; if (!options.cardLayout) { cardContentClass += ' cardContent-shadow'; } @@ -1485,13 +1477,13 @@ import 'programStyles'; cardImageContainerClose = ''; } - var cardScalableClass = 'cardScalable'; + let cardScalableClass = 'cardScalable'; cardImageContainerOpen = '
' + cardImageContainerOpen; cardBoxClose = '
'; cardScalableClose = '
'; - var indicatorsHtml = ''; + let indicatorsHtml = ''; if (options.missingIndicator !== false) { indicatorsHtml += indicators.getMissingIndicator(item); @@ -1512,7 +1504,7 @@ import 'programStyles'; } if (item.Type === 'CollectionFolder' || item.CollectionType) { - var refreshClass = item.RefreshProgress ? '' : ' class="hide"'; + const refreshClass = item.RefreshProgress ? '' : ' class="hide"'; indicatorsHtml += '
'; requireRefreshIndicator(); } @@ -1525,16 +1517,16 @@ import 'programStyles'; cardImageContainerOpen += getDefaultText(item, options); } - var tagName = (layoutManager.tv) && !overlayButtons ? 'button' : 'div'; + const tagName = (layoutManager.tv) && !overlayButtons ? 'button' : 'div'; - var nameWithPrefix = (item.SortName || item.Name || ''); - var prefix = nameWithPrefix.substring(0, Math.min(3, nameWithPrefix.length)); + const nameWithPrefix = (item.SortName || item.Name || ''); + let prefix = nameWithPrefix.substring(0, Math.min(3, nameWithPrefix.length)); if (prefix) { prefix = prefix.toUpperCase(); } - var timerAttributes = ''; + let timerAttributes = ''; if (item.TimerId) { timerAttributes += ' data-timerid="' + item.TimerId + '"'; } @@ -1542,7 +1534,7 @@ import 'programStyles'; timerAttributes += ' data-seriestimerid="' + item.SeriesTimerId + '"'; } - var actionAttribute; + let actionAttribute; if (tagName === 'button') { className += " itemAction"; @@ -1555,16 +1547,16 @@ import 'programStyles'; className += ' card-withuserdata'; } - var positionTicksData = item.UserData && item.UserData.PlaybackPositionTicks ? (' data-positionticks="' + item.UserData.PlaybackPositionTicks + '"') : ''; - var collectionIdData = options.collectionId ? (' data-collectionid="' + options.collectionId + '"') : ''; - var playlistIdData = options.playlistId ? (' data-playlistid="' + options.playlistId + '"') : ''; - var mediaTypeData = item.MediaType ? (' data-mediatype="' + item.MediaType + '"') : ''; - var collectionTypeData = item.CollectionType ? (' data-collectiontype="' + item.CollectionType + '"') : ''; - var channelIdData = item.ChannelId ? (' data-channelid="' + item.ChannelId + '"') : ''; - var contextData = options.context ? (' data-context="' + options.context + '"') : ''; - var parentIdData = options.parentId ? (' data-parentid="' + options.parentId + '"') : ''; + const positionTicksData = item.UserData && item.UserData.PlaybackPositionTicks ? (' data-positionticks="' + item.UserData.PlaybackPositionTicks + '"') : ''; + const collectionIdData = options.collectionId ? (' data-collectionid="' + options.collectionId + '"') : ''; + const playlistIdData = options.playlistId ? (' data-playlistid="' + options.playlistId + '"') : ''; + const mediaTypeData = item.MediaType ? (' data-mediatype="' + item.MediaType + '"') : ''; + const collectionTypeData = item.CollectionType ? (' data-collectiontype="' + item.CollectionType + '"') : ''; + const channelIdData = item.ChannelId ? (' data-channelid="' + item.ChannelId + '"') : ''; + const contextData = options.context ? (' data-context="' + options.context + '"') : ''; + const parentIdData = options.parentId ? (' data-parentid="' + options.parentId + '"') : ''; - var additionalCardContent = ''; + let additionalCardContent = ''; if (layoutManager.desktop) { additionalCardContent += getHoverMenuHtml(item, action); @@ -1580,11 +1572,11 @@ import 'programStyles'; * @returns {string} HTML markup of the card overlay. */ function getHoverMenuHtml(item, action) { - var html = ''; + let html = ''; html += '
'; - var btnCssClass = 'cardOverlayButton cardOverlayButton-hover itemAction paper-icon-button-light'; + const btnCssClass = 'cardOverlayButton cardOverlayButton-hover itemAction paper-icon-button-light'; if (playbackManager.canPlay(item)) { html += ''; @@ -1592,7 +1584,7 @@ import 'programStyles'; html += '
'; - var userData = item.UserData || {}; + const userData = item.UserData || {}; if (itemHelper.canMarkPlayed(item)) { require(['emby-playstatebutton']); @@ -1601,7 +1593,7 @@ import 'programStyles'; if (itemHelper.canRate(item)) { - var likes = userData.Likes == null ? '' : userData.Likes; + const likes = userData.Likes == null ? '' : userData.Likes; require(['emby-ratingbutton']); html += ''; @@ -1623,7 +1615,7 @@ import 'programStyles'; */ export function getDefaultText(item, options) { if (item.CollectionType) { - return '' + return ''; } switch (item.Type) { @@ -1646,7 +1638,7 @@ import 'programStyles'; return '' + options.defaultCardImageIcon + ''; } - var defaultName = isUsingLiveTvNaming(item) ? item.Name : itemHelper.getDisplayName(item); + const defaultName = isUsingLiveTvNaming(item) ? item.Name : itemHelper.getDisplayName(item); return '
' + defaultName + '
'; } @@ -1670,7 +1662,7 @@ import 'programStyles'; } } - var html = buildCardsHtmlInternal(items, options); + const html = buildCardsHtmlInternal(items, options); if (html) { @@ -1698,9 +1690,9 @@ import 'programStyles'; /** * Ensures the indicators for a card exist and creates them if they don't. - * @param {string} card - HTML Markup of the card. - * @param {string} indicatorsElem - HTML markup of the indicators. - * @returns {string} - HTML markup of the indicators. + * @param {HTMLDivElement} card - HTML Markup of the card. + * @param {HTMLDivElement} indicatorsElem - HTML markup of the indicators. + * @returns {HTMLDivElement} - HTML markup of the indicators. */ function ensureIndicators(card, indicatorsElem) { if (indicatorsElem) { @@ -1711,7 +1703,7 @@ import 'programStyles'; if (!indicatorsElem) { - var cardImageContainer = card.querySelector('.cardImageContainer'); + const cardImageContainer = card.querySelector('.cardImageContainer'); indicatorsElem = document.createElement('div'); indicatorsElem.classList.add('cardIndicators'); cardImageContainer.appendChild(indicatorsElem); @@ -1722,16 +1714,16 @@ import 'programStyles'; /** * Adds user data to the card such as progress indicators, played status, etc. - * @param {string} card - HTML markup of the card. + * @param {HTMLDivElement} card - HTML markup of the card. * @param {Object} userData - User data to apply to the card. */ function updateUserData(card, userData) { - var type = card.getAttribute('data-type'); - var enableCountIndicator = type === 'Series' || type === 'BoxSet' || type === 'Season'; - var indicatorsElem = null; - var playedIndicator = null; - var countIndicator = null; - var itemProgressBar = null; + const type = card.getAttribute('data-type'); + const enableCountIndicator = type === 'Series' || type === 'BoxSet' || type === 'Season'; + let indicatorsElem = null; + let playedIndicator = null; + let countIndicator = null; + let itemProgressBar = null; if (userData.Played) { @@ -1774,7 +1766,7 @@ import 'programStyles'; } } - var progressHtml = indicators.getProgressBarHtml({ + const progressHtml = indicators.getProgressBarHtml({ Type: type, UserData: userData, MediaType: 'Video' @@ -1788,11 +1780,11 @@ import 'programStyles'; itemProgressBar = document.createElement('div'); itemProgressBar.classList.add('itemProgressBar'); - var innerCardFooter = card.querySelector('.innerCardFooter'); + let innerCardFooter = card.querySelector('.innerCardFooter'); if (!innerCardFooter) { innerCardFooter = document.createElement('div'); innerCardFooter.classList.add('innerCardFooter'); - var cardImageContainer = card.querySelector('.cardImageContainer'); + const cardImageContainer = card.querySelector('.cardImageContainer'); cardImageContainer.appendChild(innerCardFooter); } innerCardFooter.appendChild(itemProgressBar); @@ -1814,9 +1806,9 @@ import 'programStyles'; * @param {HTMLElement} scope - DOM Element to use as a scope when selecting cards. */ export function onUserDataChanged(userData, scope) { - var cards = (scope || document.body).querySelectorAll('.card-withuserdata[data-id="' + userData.ItemId + '"]'); + const cards = (scope || document.body).querySelectorAll('.card-withuserdata[data-id="' + userData.ItemId + '"]'); - for (var i = 0, length = cards.length; i < length; i++) { + for (let i = 0, length = cards.length; i < length; i++) { updateUserData(cards[i], userData); } } @@ -1828,13 +1820,13 @@ import 'programStyles'; * @param {HTMLElement} itemsContainer - DOM Element of the items container. */ export function onTimerCreated(programId, newTimerId, itemsContainer) { - var cells = itemsContainer.querySelectorAll('.card[data-id="' + programId + '"]'); + const cells = itemsContainer.querySelectorAll('.card[data-id="' + programId + '"]'); - for (var i = 0, length = cells.length; i < length; i++) { - var cell = cells[i]; - var icon = cell.querySelector('.timerIndicator'); + for (let i = 0, length = cells.length; i < length; i++) { + let cell = cells[i]; + const icon = cell.querySelector('.timerIndicator'); if (!icon) { - var indicatorsElem = ensureIndicators(cell); + const indicatorsElem = ensureIndicators(cell); indicatorsElem.insertAdjacentHTML('beforeend', ''); } cell.setAttribute('data-timerid', newTimerId); @@ -1847,11 +1839,11 @@ import 'programStyles'; * @param {HTMLElement} itemsContainer - DOM Element of the items container. */ export function onTimerCancelled(timerId, itemsContainer) { - var cells = itemsContainer.querySelectorAll('.card[data-timerid="' + timerId + '"]'); + const cells = itemsContainer.querySelectorAll('.card[data-timerid="' + timerId + '"]'); - for (var i = 0, length = cells.length; i < length; i++) { - var cell = cells[i]; - var icon = cell.querySelector('.timerIndicator'); + for (let i = 0; i < cells.length; i++) { + let cell = cells[i]; + let icon = cell.querySelector('.timerIndicator'); if (icon) { icon.parentNode.removeChild(icon); } @@ -1865,11 +1857,11 @@ import 'programStyles'; * @param {HTMLElement} itemsContainer - DOM Element of the items container. */ export function onSeriesTimerCancelled(canceledTimerId, itemsContainer) { - var cells = itemsContainer.querySelectorAll('.card[data-seriestimerid="' + canceledTimerId + '"]'); + const cells = itemsContainer.querySelectorAll('.card[data-seriestimerid="' + canceledTimerId + '"]'); - for (var i = 0, length = cells.length; i < length; i++) { - var cell = cells[i]; - var icon = cell.querySelector('.timerIndicator'); + for (let i = 0; i < cells.length; i++) { + let cell = cells[i]; + let icon = cell.querySelector('.timerIndicator'); if (icon) { icon.parentNode.removeChild(icon); } From fb63fc4cce4e4ebcda857bfd7f0a07549210d9da Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 19 Mar 2020 22:38:55 +0100 Subject: [PATCH 47/71] Update yarn.lock --- yarn.lock | 150 +++++++++++++++++++++++++++--------------------------- 1 file changed, 75 insertions(+), 75 deletions(-) diff --git a/yarn.lock b/yarn.lock index d260ee6e3f..0ec0ea3155 100644 --- a/yarn.lock +++ b/yarn.lock @@ -730,11 +730,6 @@ resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== -"@csstools/convert-colors@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" - integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== - "@gulp-sourcemaps/identity-map@1.X": version "1.0.2" resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/identity-map/-/identity-map-1.0.2.tgz#1e6fe5d8027b1f285dc0d31762f566bccd73d5a9" @@ -828,9 +823,9 @@ integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY= "@types/node@*": - version "13.9.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.1.tgz#96f606f8cd67fb018847d9b61e93997dabdefc72" - integrity sha512-E6M6N0blf/jiZx8Q3nb0vNaswQeEyn0XlupO+xN6DtJ6r6IT4nXrTry7zhIfYvFCl3/8Cu6WIysmUBKiqV0bqQ== + version "13.9.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.2.tgz#ace1880c03594cc3e80206d96847157d8e7fa349" + integrity sha512-bnoqK579sAYrQbp73wwglccjJ4sfRdKU7WNEZ5FW4K2U6Kc0/eZ5kvXG0JKsEKFB50zrFmfFt52/cvBbZa7eXg== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -1924,13 +1919,14 @@ browserslist@^1.1.3: electron-to-chromium "^1.2.7" browserslist@^4.0.0, browserslist@^4.6.4, browserslist@^4.8.3, browserslist@^4.8.5, browserslist@^4.9.1: - version "4.9.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.9.1.tgz#01ffb9ca31a1aef7678128fc6a2253316aa7287c" - integrity sha512-Q0DnKq20End3raFulq6Vfp1ecB9fh8yUNV55s8sekaDDeqBaCtWlRHCUdaWyUeSSBJM7IbM6HcsyaeYqgeDhnw== + version "4.10.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.10.0.tgz#f179737913eaf0d2b98e4926ac1ca6a15cbcc6a9" + integrity sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA== dependencies: - caniuse-lite "^1.0.30001030" - electron-to-chromium "^1.3.363" - node-releases "^1.1.50" + caniuse-lite "^1.0.30001035" + electron-to-chromium "^1.3.378" + node-releases "^1.1.52" + pkg-up "^3.1.0" bs-recipes@1.3.4: version "1.3.4" @@ -2169,7 +2165,7 @@ caniuse-db@^1.0.30000639: resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001035.tgz#3a182cab9d556a4a02d945f1f739e81c18e73bfa" integrity sha512-kLUON4XN3tq5Nwl7ZICDw+7/vMynSpRMVYDRkzLL31lgnpa6M2YXYdjst3h+xbzjMgdcveRTnRGE1h/1IcKK6A== -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001030: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001035: version "1.0.30001035" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz#2bb53b8aa4716b2ed08e088d4dc816a5fe089a1e" integrity sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ== @@ -3541,10 +3537,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.363: - version "1.3.376" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.376.tgz#7cb7b5205564a06c8f8ecfbe832cbd47a1224bb1" - integrity sha512-cv/PYVz5szeMz192ngilmezyPNFkUjuynuL2vNdiqIrio440nfTDdc0JJU0TS2KHLSVCs9gBbt4CFqM+HcBnjw== +electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.378: + version "1.3.379" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.379.tgz#81dc5e82a3e72bbb830d93e15bc35eda2bbc910e" + integrity sha512-NK9DBBYEBb5f9D7zXI0hiE941gq3wkBeQmXs1ingigA/jnTg5mhwY2Z5egwA+ZI8OLGKCx0h1Cl8/xeuIBuLlg== elliptic@^6.0.0: version "6.5.2" @@ -4570,9 +4566,9 @@ fs.realpath@^1.0.0: integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^1.2.7: - version "1.2.11" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.11.tgz#67bf57f4758f02ede88fb2a1712fef4d15358be3" - integrity sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw== + version "1.2.12" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.12.tgz#db7e0d8ec3b0b45724fd4d83d43554a8f1f0de5c" + integrity sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q== dependencies: bindings "^1.5.0" nan "^2.12.1" @@ -5666,9 +5662,9 @@ imurmurhash@^0.1.4: integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= in-publish@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" - integrity sha1-4g/146KvwmkDILbcVSaCqcf631E= + version "2.0.1" + resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.1.tgz#948b1a535c8030561cea522f73f78f4be357e00c" + integrity sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ== indent-string@^2.1.0: version "2.1.0" @@ -6360,11 +6356,11 @@ json5@^1.0.1: minimist "^1.2.0" json5@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.1.tgz#81b6cb04e9ba496f1c7005d07b4368a2638f90b6" - integrity sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ== + version "2.1.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.2.tgz#43ef1f0af9835dd624751a6b7fa48874fb2d608e" + integrity sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ== dependencies: - minimist "^1.2.0" + minimist "^1.2.5" jsonfile@^3.0.0: version "3.0.1" @@ -6509,7 +6505,7 @@ levn@^0.3.0, levn@~0.3.0: "libass-wasm@https://github.com/jellyfin/JavascriptSubtitlesOctopus": version "3.0.2" - resolved "https://github.com/jellyfin/JavascriptSubtitlesOctopus#7f331237026db75af2441717a4132d2398e96735" + resolved "https://github.com/jellyfin/JavascriptSubtitlesOctopus#99626d3ee5eb6bd695d7c908c5e6f910213b0e71" liftoff@^3.1.0: version "3.1.0" @@ -7077,9 +7073,9 @@ meow@^5.0.0: yargs-parser "^10.0.0" meow@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/meow/-/meow-6.0.1.tgz#f9b3f912c9aa039142cebcf74315129f4cd1ce1c" - integrity sha512-kxGTFgT/b7/oSRSQsJ0qsT5IMU+bgZ1eAdSA3kIV7onkW0QWo/hL5RbGlMfvBjHJKPE1LaPX0kdecYFiqYWjUw== + version "6.1.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-6.1.0.tgz#4ff4641818d3502afcddc631f94cb6971a581cb3" + integrity sha512-iIAoeI01v6pmSfObAAWFoITAA4GgiT45m4SmJgoxtZfvI0fyZwhV4d0lTwiUXvAKIPlma05Feb2Xngl52Mj5Cg== dependencies: "@types/minimist" "^1.2.0" camelcase-keys "^6.1.1" @@ -7091,7 +7087,7 @@ meow@^6.0.1: redent "^3.0.0" trim-newlines "^3.0.0" type-fest "^0.8.1" - yargs-parser "^16.1.0" + yargs-parser "^18.1.1" merge-descriptors@1.0.1: version "1.0.1" @@ -7218,17 +7214,12 @@ minimist-options@^4.0.1: arrify "^1.0.1" is-plain-obj "^1.1.0" -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - minimist@1.1.x: version "1.1.3" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8" integrity sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag= -minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: +minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== @@ -7263,11 +7254,11 @@ mixin-deep@^1.2.0: is-extendable "^1.0.1" "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c" + integrity sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg== dependencies: - minimist "0.0.8" + minimist "^1.2.5" move-concurrently@^1.0.1: version "1.0.1" @@ -7451,7 +7442,27 @@ node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" +<<<<<<< HEAD node-releases@^1.1.50: +======= +node-pre-gyp@*: + version "0.14.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" + integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4.4.2" + +node-releases@^1.1.52: +>>>>>>> Update yarn.lock version "1.1.52" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.52.tgz#bcffee3e0a758e92e44ecfaecd0a47554b0bcba9" integrity sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ== @@ -8249,6 +8260,13 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" +pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + plugin-error@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c" @@ -8647,9 +8665,9 @@ postcss-modules-local-by-default@^3.0.2: postcss-value-parser "^4.0.0" postcss-modules-scope@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz#33d4fc946602eb5e9355c4165d68a10727689dba" - integrity sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ== + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== dependencies: postcss "^7.0.6" postcss-selector-parser "^6.0.0" @@ -8957,15 +8975,6 @@ postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: indexes-of "^1.0.1" uniq "^1.0.1" -postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" - integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== - dependencies: - cssesc "^2.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" @@ -9034,15 +9043,6 @@ postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: indexes-of "^1.0.1" uniq "^1.0.1" -postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" - integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== - dependencies: - flatten "^1.0.2" - indexes-of "^1.0.1" - uniq "^1.0.1" - postcss@^5.0.0, postcss@^5.0.18: version "5.2.18" resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" @@ -9453,9 +9453,9 @@ regenerator-runtime@^0.13.4: integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== regenerator-transform@^0.14.2: - version "0.14.3" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.3.tgz#54aebff2ef58c0ae61e695ad1b9a9d65995fff78" - integrity sha512-zXHNKJspmONxBViAb3ZUmFoFPnTBs3zFhCEZJiwp/gkNzxVbTqNJVjYKx6Qk1tQ1P4XLf4TbH9+KBB7wGoAaUw== + version "0.14.4" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" + integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== dependencies: "@babel/runtime" "^7.8.4" private "^0.1.8" @@ -11073,9 +11073,9 @@ terser-webpack-plugin@^1.4.3: worker-farm "^1.7.0" terser@^4.0.0, terser@^4.1.2: - version "4.6.6" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.6.tgz#da2382e6cafbdf86205e82fb9a115bd664d54863" - integrity sha512-4lYPyeNmstjIIESr/ysHg2vUPRGf2tzF9z2yYwnowXVuVzLEamPN1Gfrz7f8I9uEPuHcbFlW4PLIAsJoxXyJ1g== + version "4.6.7" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.7.tgz#478d7f9394ec1907f0e488c5f6a6a9a2bad55e72" + integrity sha512-fmr7M1f7DBly5cX2+rFDvmGBAaaZyPrHYK4mMdHEDAdNTqXSZgSOfqsfGq2HqPGT/1V0foZZuCZFx8CHKgAk3g== dependencies: commander "^2.20.0" source-map "~0.6.1" @@ -12226,10 +12226,10 @@ yargs-parser@^13.1.0: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^16.1.0: - version "16.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1" - integrity sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg== +yargs-parser@^18.1.1: + version "18.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.1.tgz#bf7407b915427fc760fcbbccc6c82b4f0ffcbd37" + integrity sha512-KRHEsOM16IX7XuLnMOqImcPNbLVXMNHYAoFc3BKR8Ortl5gzDbtXvvEoGx9imk5E+X1VeNKNlcHr8B8vi+7ipA== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" From 1cfd2538be53e4134050b04fbcef9d3e28928b94 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 19 Mar 2020 23:01:21 +0100 Subject: [PATCH 48/71] Remove dead code from CardBuilder --- src/components/cardbuilder/cardBuilder.js | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 24e4035050..3bcc83ce62 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -459,16 +459,6 @@ import 'programStyles'; } } - /*let cardFooterHtml = ''; - for (let i = 0; i < (options.lines || 0); i++) { - - if (i === 0) { - cardFooterHtml += '
 
'; - } else { - cardFooterHtml += '
 
'; - } - }*/ - return html; } From 759b3fc106d7f332530452f14c7e771901c347ae Mon Sep 17 00:00:00 2001 From: dkanada Date: Sat, 21 Mar 2020 03:30:21 +0900 Subject: [PATCH 49/71] minor string changes --- src/components/cardbuilder/cardBuilder.js | 66 ++++++++++++----------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 3bcc83ce62..3eac8a8b8a 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1,8 +1,10 @@ /* eslint-disable indent */ + /** * Card builder module. * @module cardBuilder */ + import datetime from 'datetime'; import imageLoader from 'imageLoader'; import connectionManager from 'connectionManager'; @@ -23,10 +25,10 @@ import 'programStyles'; const enableFocusTransform = !browser.slow && !browser.edge; /** - * Generate the HTML markup for cards of a set of items. - * @param items - The items to generate cards for. + * Generate the HTML markup for cards for a set of items. + * @param items - The items used to generate cards. * @param options - The options of the cards. - * @returns {string} The HTML markup for cards. + * @returns {string} The HTML markup for the cards. */ export function getCardsHtml(items, options) { if (arguments.length === 1) { @@ -42,7 +44,7 @@ import 'programStyles'; * @param {string} shape - Shape of the cards. * @param {number} screenWidth - Width of the screen. * @param {boolean} isOrientationLandscape - Flag for the orientation of the screen. - * @returns {number} Number of cards per row of an itemsContainer. + * @returns {number} Number of cards per row for an itemsContainer. */ function getPostersPerRow(shape, screenWidth, isOrientationLandscape) { switch (shape) { @@ -250,7 +252,7 @@ import 'programStyles'; /** * Checks if the window is resizable. - * @param {number} windowWidth - Width of the client's screen. + * @param {number} windowWidth - Width of the device's screen. * @returns {boolean} - Result of the check. */ function isResizable(windowWidth) { @@ -279,7 +281,7 @@ import 'programStyles'; } /** - * Normalizes the options of a card. + * Normalizes the options for a card. * @param {Object} items - A set of items. * @param {Object} options - Options for handling the items. */ @@ -463,7 +465,7 @@ import 'programStyles'; } /** - * Computes the Aspect Ratio for a card given its shape. + * Computes the aspect ratio for a card given its shape. * @param {string} shape - Shape for which to get the aspect ratio. * @returns {null|number} Ratio of the shape. */ @@ -489,14 +491,14 @@ import 'programStyles'; /** * @typedef {Object} CardImageUrl * @property {string} imgUrl - URL of the image. - * @property {boolean} forceName - Force the name to be visible. + * @property {boolean} forceName - Flag to force the name to be visible. * @property {boolean} coverImage - Acts as a cover image. */ - /** Get the URL of the Card's image. + /** Get the URL of the card's image. * @param {Object} item - Item for which to generate a card. - * @param {Object} apiClient - API Client object. - * @param {Object} options - Options of the card to generate. + * @param {Object} apiClient - API client object. + * @param {Object} options - Options of the card. * @param {string} shape - Shape of the desired image. * @returns {CardImageUrl} Object representing the URL of the card's image. */ @@ -717,7 +719,7 @@ import 'programStyles'; } /** - * Generates a random integer in a range. + * Generates a random integer in a given range. * @param {number} min - Minimum of the range. * @param {number} max - Maximum of the range. * @returns {number} Randomly generated number. @@ -727,7 +729,7 @@ import 'programStyles'; } /** - * Generates an index used to select the default color of a Card based on a string. + * Generates an index used to select the default color of a card based on a string. * @param {string} str - String to use for generating the index. * @returns {number} Index of the color. */ @@ -758,7 +760,7 @@ import 'programStyles'; * @param {string} cardLayout - DEPRECATED * @param {boolean} addRightMargin - Flag to add a right margin to the text. * @param {number} maxLines - Maximum number of lines to render. - * @returns {string} HTML markup fo the card's text. + * @returns {string} HTML markup for the card's text. */ function getCardTextLines(lines, cssClass, forceLines, isOuterFooter, cardLayout, addRightMargin, maxLines) { let html = ''; @@ -806,9 +808,9 @@ import 'programStyles'; } /** - * Determines if the item is Live TV. - * @param {Object} item - Item to use. - * @returns {boolean} Flag showing if the item is Live TV. + * Determines if the item is live TV. + * @param {Object} item - Item to use for the check. + * @returns {boolean} Flag showing if the item is live TV. */ function isUsingLiveTvNaming(item) { return item.Type === 'Program' || item.Type === 'Timer' || item.Type === 'Recording'; @@ -819,7 +821,7 @@ import 'programStyles'; * @param {object} item - Item used to generate the air time text. * @param {string} showAirDateTime - ISO8601 date for the start of the show. * @param {string} showAirEndTime - ISO8601 date for the end of the show. - * @returns {string} The air time text for the item base on the given dates. + * @returns {string} The air time text for the item based on the given dates. */ function getAirTimeText(item, showAirDateTime, showAirEndTime) { let airTimeText = ''; @@ -850,7 +852,7 @@ import 'programStyles'; /** * Generates the HTML markup for the card's footer text. * @param {Object} item - Item used to generate the footer text. - * @param {Object} apiClient - API Client instance. + * @param {Object} apiClient - API client instance. * @param {Object} options - Options used to generate the footer text. * @param {string} showTitle - Title of the show. * @param {boolean} forceName - Flag to force showing the name of the item. @@ -1264,7 +1266,7 @@ import 'programStyles'; * Builds the HTML markup for an individual card. * @param {number} index - Index of the card * @param {object} item - Item used to generate the card. - * @param {object} apiClient - API Client instance. + * @param {object} apiClient - API client instance. * @param {object} options - Options used to generate the card. * @returns {string} HTML markup for the generated card. */ @@ -1598,7 +1600,7 @@ import 'programStyles'; } /** - * Generates the text or icon used on default card backgrounds. + * Generates the text or icon used for default card backgrounds. * @param {object} item - Item used to generate the card overlay. * @param {object} options - Options used to generate the card overlay. * @returns {string} HTML markup of the card overlay. @@ -1633,7 +1635,7 @@ import 'programStyles'; } /** - * Builds a set of cards and inserts it into the page;. + * Builds a set of cards and inserts it into the page. * @param {Array} items - Array of items used to build cards. * @param {options} options - Options of the cards to build. */ @@ -1679,8 +1681,8 @@ import 'programStyles'; } /** - * Ensures the indicators for a card exist and creates them if they don't. - * @param {HTMLDivElement} card - HTML Markup of the card. + * Ensures the indicators for a card exist and creates them if they don't exist. + * @param {HTMLDivElement} card - HTML markup of the card. * @param {HTMLDivElement} indicatorsElem - HTML markup of the indicators. * @returns {HTMLDivElement} - HTML markup of the indicators. */ @@ -1703,7 +1705,7 @@ import 'programStyles'; } /** - * Adds user data to the card such as progress indicators, played status, etc. + * Adds user data to the card such as progress indicators and played status. * @param {HTMLDivElement} card - HTML markup of the card. * @param {Object} userData - User data to apply to the card. */ @@ -1793,7 +1795,7 @@ import 'programStyles'; /** * Handles when user data has changed. * @param {Object} userData - User data to apply to the card. - * @param {HTMLElement} scope - DOM Element to use as a scope when selecting cards. + * @param {HTMLElement} scope - DOM element to use as a scope when selecting cards. */ export function onUserDataChanged(userData, scope) { const cards = (scope || document.body).querySelectorAll('.card-withuserdata[data-id="' + userData.ItemId + '"]'); @@ -1804,10 +1806,10 @@ import 'programStyles'; } /** - * Handles when a timer was created. + * Handles when a timer has been created. * @param {string} programId - ID of the program. * @param {string} newTimerId - ID of the new timer. - * @param {HTMLElement} itemsContainer - DOM Element of the items container. + * @param {HTMLElement} itemsContainer - DOM element of the itemsContainer. */ export function onTimerCreated(programId, newTimerId, itemsContainer) { const cells = itemsContainer.querySelectorAll('.card[data-id="' + programId + '"]'); @@ -1824,9 +1826,9 @@ import 'programStyles'; } /** - * Handles when a timer is cancelled. + * Handles when a timer has been cancelled. * @param {string} timerId - ID of the cancelled timer. - * @param {HTMLElement} itemsContainer - DOM Element of the items container. + * @param {HTMLElement} itemsContainer - DOM element of the items container. */ export function onTimerCancelled(timerId, itemsContainer) { const cells = itemsContainer.querySelectorAll('.card[data-timerid="' + timerId + '"]'); @@ -1842,9 +1844,9 @@ import 'programStyles'; } /** - * Handles when a series timer is cancelled. + * Handles when a series timer has been cancelled. * @param {string} canceledTimerId - ID of the cancelled timer. - * @param {HTMLElement} itemsContainer - DOM Element of the items container. + * @param {HTMLElement} itemsContainer - DOM element of the items container. */ export function onSeriesTimerCancelled(canceledTimerId, itemsContainer) { const cells = itemsContainer.querySelectorAll('.card[data-seriestimerid="' + canceledTimerId + '"]'); From feeacf12a2ed7197e5d1f17f70e56dfe64f15305 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 22 Mar 2020 17:12:34 +0100 Subject: [PATCH 50/71] Implement suggestions --- src/components/cardbuilder/cardBuilder.js | 47 ++++++++++------------- 1 file changed, 20 insertions(+), 27 deletions(-) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 3eac8a8b8a..1f87a341c0 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1,8 +1,8 @@ /* eslint-disable indent */ /** - * Card builder module. - * @module cardBuilder + * Module for building cards from item data. + * @module components/cardBuilder/cardBuilder */ import datetime from 'datetime'; @@ -488,19 +488,12 @@ import 'programStyles'; return null; } - /** - * @typedef {Object} CardImageUrl - * @property {string} imgUrl - URL of the image. - * @property {boolean} forceName - Flag to force the name to be visible. - * @property {boolean} coverImage - Acts as a cover image. - */ - - /** Get the URL of the card's image. + /** Get the URL of the Card's image. * @param {Object} item - Item for which to generate a card. * @param {Object} apiClient - API client object. * @param {Object} options - Options of the card. * @param {string} shape - Shape of the desired image. - * @returns {CardImageUrl} Object representing the URL of the card's image. + * @returns {Object} Object representing the URL of the card's image. */ function getCardImageUrl(item, apiClient, options, shape) { item = item.ProgramInfo || item; @@ -854,15 +847,15 @@ import 'programStyles'; * @param {Object} item - Item used to generate the footer text. * @param {Object} apiClient - API client instance. * @param {Object} options - Options used to generate the footer text. - * @param {string} showTitle - Title of the show. + * @param {string} showTitle - Flag to show the title in the footer. * @param {boolean} forceName - Flag to force showing the name of the item. * @param {boolean} overlayText - Flag to show overlay text. - * @param {CardImageUrl} imgUrl - Object representing the card's image URL. - * @param {string} footerClass - CSS class of the footer. - * @param {string} progressHtml - HTML markup of the progress bar. + * @param {Object} imgUrl - Object representing the card's image URL. + * @param {string} footerClass - CSS classes of the footer element. + * @param {string} progressHtml - HTML markup of the progress bar element. * @param {string} logoUrl - URL of the logo for the item. * @param {boolean} isOuterFooter - Flag to mark the text as outer footer. - * @returns {string} HTML markup of the card's footer text. + * @returns {string} HTML markup of the card's footer text element. */ function getCardFooterText(item, apiClient, options, showTitle, forceName, overlayText, imgUrl, footerClass, progressHtml, logoUrl, isOuterFooter) { let html = ''; @@ -1635,8 +1628,8 @@ import 'programStyles'; } /** - * Builds a set of cards and inserts it into the page. - * @param {Array} items - Array of items used to build cards. + * Builds a set of cards and inserts them into the page;. + * @param {Array} items - Array of items used to build the cards. * @param {options} options - Options of the cards to build. */ export function buildCards(items, options) { @@ -1682,9 +1675,9 @@ import 'programStyles'; /** * Ensures the indicators for a card exist and creates them if they don't exist. - * @param {HTMLDivElement} card - HTML markup of the card. - * @param {HTMLDivElement} indicatorsElem - HTML markup of the indicators. - * @returns {HTMLDivElement} - HTML markup of the indicators. + * @param {HTMLDivElement} card - DOM element of the card. + * @param {HTMLDivElement} indicatorsElem - DOM element of the indicators. + * @returns {HTMLDivElement} - DOM element of the indicators. */ function ensureIndicators(card, indicatorsElem) { if (indicatorsElem) { @@ -1706,7 +1699,7 @@ import 'programStyles'; /** * Adds user data to the card such as progress indicators and played status. - * @param {HTMLDivElement} card - HTML markup of the card. + * @param {HTMLDivElement} card - DOM element of the card. * @param {Object} userData - User data to apply to the card. */ function updateUserData(card, userData) { @@ -1828,7 +1821,7 @@ import 'programStyles'; /** * Handles when a timer has been cancelled. * @param {string} timerId - ID of the cancelled timer. - * @param {HTMLElement} itemsContainer - DOM element of the items container. + * @param {HTMLElement} itemsContainer - DOM element of the itemsContainer. */ export function onTimerCancelled(timerId, itemsContainer) { const cells = itemsContainer.querySelectorAll('.card[data-timerid="' + timerId + '"]'); @@ -1845,11 +1838,11 @@ import 'programStyles'; /** * Handles when a series timer has been cancelled. - * @param {string} canceledTimerId - ID of the cancelled timer. - * @param {HTMLElement} itemsContainer - DOM element of the items container. + * @param {string} cancelledTimerId - ID of the cancelled timer. + * @param {HTMLElement} itemsContainer - DOM element of the itemsContainer. */ - export function onSeriesTimerCancelled(canceledTimerId, itemsContainer) { - const cells = itemsContainer.querySelectorAll('.card[data-seriestimerid="' + canceledTimerId + '"]'); + export function onSeriesTimerCancelled(cancelledTimerId, itemsContainer) { + const cells = itemsContainer.querySelectorAll('.card[data-seriestimerid="' + cancelledTimerId + '"]'); for (let i = 0; i < cells.length; i++) { let cell = cells[i]; From 7bb7270b6137acb009c636c2c93c975e29312ffb Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 22 Mar 2020 18:00:03 +0100 Subject: [PATCH 51/71] Fix rebase issues --- src/components/cardbuilder/cardBuilder.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 1f87a341c0..9d86bc9d7c 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -488,7 +488,7 @@ import 'programStyles'; return null; } - /** Get the URL of the Card's image. + /** Get the URL of the card's image. * @param {Object} item - Item for which to generate a card. * @param {Object} apiClient - API client object. * @param {Object} options - Options of the card. @@ -1628,7 +1628,7 @@ import 'programStyles'; } /** - * Builds a set of cards and inserts them into the page;. + * Builds a set of cards and inserts them into the page. * @param {Array} items - Array of items used to build the cards. * @param {options} options - Options of the cards to build. */ From 032cc9aa85d347f4b8f06b65c5fbd14c6803327e Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Mon, 23 Mar 2020 17:11:35 +0100 Subject: [PATCH 52/71] Update yarn.lock --- webpack.common.js | 12 +- yarn.lock | 667 +++++++++++++++++++++++----------------------- 2 files changed, 342 insertions(+), 337 deletions(-) diff --git a/webpack.common.js b/webpack.common.js index 6b357102c0..c87ccdbc0d 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -6,12 +6,12 @@ const CopyPlugin = require("copy-webpack-plugin"); const Assets = [ "alameda/alameda.js", "native-promise-only/npo.js", - "libass-wasm/dist/subtitles-octopus-worker.js", - "libass-wasm/dist/subtitles-octopus-worker.data", - "libass-wasm/dist/subtitles-octopus-worker.wasm", - "libass-wasm/dist/subtitles-octopus-worker-legacy.js", - "libass-wasm/dist/subtitles-octopus-worker-legacy.data", - "libass-wasm/dist/subtitles-octopus-worker-legacy.js.mem" + "libass-wasm/dist/js/subtitles-octopus-worker.js", + "libass-wasm/dist/js/subtitles-octopus-worker.data", + "libass-wasm/dist/js/subtitles-octopus-worker.wasm", + "libass-wasm/dist/js/subtitles-octopus-worker-legacy.js", + "libass-wasm/dist/js/subtitles-octopus-worker-legacy.data", + "libass-wasm/dist/js/subtitles-octopus-worker-legacy.js.mem" ]; module.exports = { diff --git a/yarn.lock b/yarn.lock index 0ec0ea3155..8b7697cef4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,42 +9,43 @@ dependencies: "@babel/highlight" "^7.8.3" -"@babel/compat-data@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.8.6.tgz#7eeaa0dfa17e50c7d9c0832515eee09b56f04e35" - integrity sha512-CurCIKPTkS25Mb8mz267vU95vy+TyUpnctEX2lV33xWNmHAfjruztgiPBbXZRh3xZZy1CYvGx6XfxyTVS+sk7Q== +"@babel/compat-data@^7.8.6", "@babel/compat-data@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.0.tgz#04815556fc90b0c174abd2c0c1bb966faa036a6c" + integrity sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g== dependencies: - browserslist "^4.8.5" + browserslist "^4.9.1" invariant "^2.2.4" semver "^5.5.0" "@babel/core@>=7.2.2", "@babel/core@^7.8.6": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.7.tgz#b69017d221ccdeb203145ae9da269d72cf102f3b" - integrity sha512-rBlqF3Yko9cynC5CCFy6+K/w2N+Sq/ff2BPy+Krp7rHlABIr5epbA7OxVeKoMHB39LZOp1UY5SuLjy6uWi35yA== + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" + integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== dependencies: "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.8.7" - "@babel/helpers" "^7.8.4" - "@babel/parser" "^7.8.7" + "@babel/generator" "^7.9.0" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.0" + "@babel/parser" "^7.9.0" "@babel/template" "^7.8.6" - "@babel/traverse" "^7.8.6" - "@babel/types" "^7.8.7" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" - json5 "^2.1.0" + json5 "^2.1.2" lodash "^4.17.13" resolve "^1.3.2" semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.8.6", "@babel/generator@^7.8.7": - version "7.8.8" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.8.tgz#cdcd58caab730834cee9eeadb729e833b625da3e" - integrity sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg== +"@babel/generator@^7.9.0": + version "7.9.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.3.tgz#7c8b2956c6f68b3ab732bd16305916fbba521d94" + integrity sha512-RpxM252EYsz9qLUIq6F7YJyK1sv0wWDBFuztfDGWaQKzHjqDHysxSiRUpA/X9jmfqo+WzkAVKFaUily5h+gDCQ== dependencies: - "@babel/types" "^7.8.7" + "@babel/types" "^7.9.0" jsesc "^2.5.1" lodash "^4.17.13" source-map "^0.5.0" @@ -64,15 +65,6 @@ "@babel/helper-explode-assignable-expression" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helper-call-delegate@^7.8.7": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.7.tgz#28a279c2e6c622a6233da548127f980751324cab" - integrity sha512-doAA5LAKhsFCR0LAFIf+r2RSMmC+m8f/oQ+URnUET/rWeEzC0yTRmAGyWkD4sSu3xwbS7MYQ2u+xlt1V5R56KQ== - dependencies: - "@babel/helper-hoist-variables" "^7.8.3" - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.7" - "@babel/helper-compilation-targets@^7.8.7": version "7.8.7" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz#dac1eea159c0e4bd46e309b5a1b04a66b53c1dde" @@ -147,17 +139,17 @@ dependencies: "@babel/types" "^7.8.3" -"@babel/helper-module-transforms@^7.8.3": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.8.6.tgz#6a13b5eecadc35692047073a64e42977b97654a4" - integrity sha512-RDnGJSR5EFBJjG3deY0NiL0K9TO8SXxS9n/MPsbPK/s9LbQymuLNtlzvDiNS7IpecuL45cMeLVkA+HfmlrnkRg== +"@babel/helper-module-transforms@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" + integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== dependencies: "@babel/helper-module-imports" "^7.8.3" "@babel/helper-replace-supers" "^7.8.6" "@babel/helper-simple-access" "^7.8.3" "@babel/helper-split-export-declaration" "^7.8.3" "@babel/template" "^7.8.6" - "@babel/types" "^7.8.6" + "@babel/types" "^7.9.0" lodash "^4.17.13" "@babel/helper-optimise-call-expression@^7.8.3": @@ -167,7 +159,7 @@ dependencies: "@babel/types" "^7.8.3" -"@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== @@ -215,6 +207,11 @@ dependencies: "@babel/types" "^7.8.3" +"@babel/helper-validator-identifier@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz#ad53562a7fc29b3b9a91bbf7d10397fd146346ed" + integrity sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw== + "@babel/helper-wrap-function@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" @@ -225,28 +222,28 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helpers@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.4.tgz#754eb3ee727c165e0a240d6c207de7c455f36f73" - integrity sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w== +"@babel/helpers@^7.9.0": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.2.tgz#b42a81a811f1e7313b88cba8adc66b3d9ae6c09f" + integrity sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA== dependencies: "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.4" - "@babel/types" "^7.8.3" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" "@babel/highlight@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" - integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg== + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" + integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== dependencies: + "@babel/helper-validator-identifier" "^7.9.0" chalk "^2.0.0" - esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.8.6", "@babel/parser@^7.8.7": - version "7.8.8" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.8.tgz#4c3b7ce36db37e0629be1f0d50a571d2f86f6cd4" - integrity sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA== +"@babel/parser@^7.8.6", "@babel/parser@^7.9.0": + version "7.9.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.3.tgz#043a5fc2ad8b7ea9facddc4e802a1f0f25da7255" + integrity sha512-E6SpIDJZ0cZAKoCNk+qSDd0ChfTnpiJN9FfNf3RZ20dzwA2vL2oq5IX1XTVT+4vDmRlta2nGk5HGMMskJAR+4A== "@babel/plugin-proposal-async-generator-functions@^7.8.3": version "7.8.3" @@ -281,10 +278,18 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" -"@babel/plugin-proposal-object-rest-spread@^7.8.3": +"@babel/plugin-proposal-numeric-separator@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz#eb5ae366118ddca67bed583b53d7554cad9951bb" - integrity sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA== + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" + integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + +"@babel/plugin-proposal-object-rest-spread@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz#a28993699fc13df165995362693962ba6b061d6f" + integrity sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" @@ -297,15 +302,15 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@babel/plugin-proposal-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.3.tgz#ae10b3214cb25f7adb1f3bc87ba42ca10b7e2543" - integrity sha512-QIoIR9abkVn+seDE3OjA08jWcs3eZ9+wJCKSRgo3WdEU2csFYgdScb+8qHB3+WXsGJD55u+5hWCISI7ejXS+kg== +"@babel/plugin-proposal-optional-chaining@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" + integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.0" -"@babel/plugin-proposal-unicode-property-regex@^7.8.3": +"@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": version "7.8.8" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d" integrity sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== @@ -341,6 +346,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" + integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread@^7.8.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" @@ -400,10 +412,10 @@ "@babel/helper-plugin-utils" "^7.8.3" lodash "^4.17.13" -"@babel/plugin-transform-classes@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.6.tgz#77534447a477cbe5995ae4aee3e39fbc8090c46d" - integrity sha512-k9r8qRay/R6v5aWZkrEclEhKO6mc1CCQr2dLsVHBmOQiMpN6I2bpjX3vgnldUWeEI1GHVNByULVxZ4BdP4Hmdg== +"@babel/plugin-transform-classes@^7.9.0": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz#8603fc3cc449e31fdbdbc257f67717536a11af8d" + integrity sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ== dependencies: "@babel/helper-annotate-as-pure" "^7.8.3" "@babel/helper-define-map" "^7.8.3" @@ -428,7 +440,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-dotall-regex@^7.8.3": +"@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== @@ -451,10 +463,10 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-for-of@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.6.tgz#a051bd1b402c61af97a27ff51b468321c7c2a085" - integrity sha512-M0pw4/1/KI5WAxPsdcUL/w2LJ7o89YHN3yLkzNjg7Yl15GlVGgzHyCU+FMeAxevHGsLVmUqbirlUIKTafPmzdw== +"@babel/plugin-transform-for-of@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz#0f260e27d3e29cd1bb3128da5e76c761aa6c108e" + integrity sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ== dependencies: "@babel/helper-plugin-utils" "^7.8.3" @@ -480,41 +492,41 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-modules-amd@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz#65606d44616b50225e76f5578f33c568a0b876a5" - integrity sha512-MadJiU3rLKclzT5kBH4yxdry96odTUwuqrZM+GllFI/VhxfPz+k9MshJM+MwhfkCdxxclSbSBbUGciBngR+kEQ== +"@babel/plugin-transform-modules-amd@^7.8.3", "@babel/plugin-transform-modules-amd@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz#19755ee721912cf5bb04c07d50280af3484efef4" + integrity sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q== dependencies: - "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-module-transforms" "^7.9.0" "@babel/helper-plugin-utils" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-commonjs@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz#df251706ec331bd058a34bdd72613915f82928a5" - integrity sha512-JpdMEfA15HZ/1gNuB9XEDlZM1h/gF/YOH7zaZzQu2xCFRfwc01NXBMHHSTT6hRjlXJJs5x/bfODM3LiCk94Sxg== +"@babel/plugin-transform-modules-commonjs@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz#e3e72f4cbc9b4a260e30be0ea59bdf5a39748940" + integrity sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g== dependencies: - "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-module-transforms" "^7.9.0" "@babel/helper-plugin-utils" "^7.8.3" "@babel/helper-simple-access" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-systemjs@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz#d8bbf222c1dbe3661f440f2f00c16e9bb7d0d420" - integrity sha512-8cESMCJjmArMYqa9AO5YuMEkE4ds28tMpZcGZB/jl3n0ZzlsxOAi3mC+SKypTfT8gjMupCnd3YiXCkMjj2jfOg== +"@babel/plugin-transform-modules-systemjs@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz#e9fd46a296fc91e009b64e07ddaa86d6f0edeb90" + integrity sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ== dependencies: "@babel/helper-hoist-variables" "^7.8.3" - "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-module-transforms" "^7.9.0" "@babel/helper-plugin-utils" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-umd@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz#592d578ce06c52f5b98b02f913d653ffe972661a" - integrity sha512-evhTyWhbwbI3/U6dZAnx/ePoV7H6OUG+OjiJFHmhr9FPn0VShjwC2kdxqIuQ/+1P50TMrneGzMeyMTFOjKSnAw== +"@babel/plugin-transform-modules-umd@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz#e909acae276fec280f9b821a5f38e1f08b480697" + integrity sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ== dependencies: - "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-module-transforms" "^7.9.0" "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": @@ -540,11 +552,10 @@ "@babel/helper-replace-supers" "^7.8.3" "@babel/plugin-transform-parameters@^7.8.7": - version "7.8.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.8.tgz#0381de466c85d5404565243660c4496459525daf" - integrity sha512-hC4Ld/Ulpf1psQciWWwdnUspQoQco2bMzSrwU6TmzRlvoYQe4rQFy9vnCZDTlVeCQj0JPfL+1RX0V8hCJvkgBA== + version "7.9.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz#3028d0cc20ddc733166c6e9c8534559cee09f54a" + integrity sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg== dependencies: - "@babel/helper-call-delegate" "^7.8.7" "@babel/helper-get-function-arity" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" @@ -623,11 +634,11 @@ regenerator-runtime "^0.13.4" "@babel/preset-env@^7.8.6": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.8.7.tgz#1fc7d89c7f75d2d70c2b6768de6c2e049b3cb9db" - integrity sha512-BYftCVOdAYJk5ASsznKAUl53EMhfBbr8CJ1X+AJLfGPscQkwJFiaV/Wn9DPH/7fzm2v6iRYJKYHSqyynTGw0nw== + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.0.tgz#a5fc42480e950ae8f5d9f8f2bbc03f52722df3a8" + integrity sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ== dependencies: - "@babel/compat-data" "^7.8.6" + "@babel/compat-data" "^7.9.0" "@babel/helper-compilation-targets" "^7.8.7" "@babel/helper-module-imports" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" @@ -635,14 +646,16 @@ "@babel/plugin-proposal-dynamic-import" "^7.8.3" "@babel/plugin-proposal-json-strings" "^7.8.3" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-proposal-object-rest-spread" "^7.8.3" + "@babel/plugin-proposal-numeric-separator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.9.0" "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" - "@babel/plugin-proposal-optional-chaining" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.9.0" "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" "@babel/plugin-syntax-async-generators" "^7.8.0" "@babel/plugin-syntax-dynamic-import" "^7.8.0" "@babel/plugin-syntax-json-strings" "^7.8.0" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.8.0" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" "@babel/plugin-syntax-optional-chaining" "^7.8.0" @@ -651,20 +664,20 @@ "@babel/plugin-transform-async-to-generator" "^7.8.3" "@babel/plugin-transform-block-scoped-functions" "^7.8.3" "@babel/plugin-transform-block-scoping" "^7.8.3" - "@babel/plugin-transform-classes" "^7.8.6" + "@babel/plugin-transform-classes" "^7.9.0" "@babel/plugin-transform-computed-properties" "^7.8.3" "@babel/plugin-transform-destructuring" "^7.8.3" "@babel/plugin-transform-dotall-regex" "^7.8.3" "@babel/plugin-transform-duplicate-keys" "^7.8.3" "@babel/plugin-transform-exponentiation-operator" "^7.8.3" - "@babel/plugin-transform-for-of" "^7.8.6" + "@babel/plugin-transform-for-of" "^7.9.0" "@babel/plugin-transform-function-name" "^7.8.3" "@babel/plugin-transform-literals" "^7.8.3" "@babel/plugin-transform-member-expression-literals" "^7.8.3" - "@babel/plugin-transform-modules-amd" "^7.8.3" - "@babel/plugin-transform-modules-commonjs" "^7.8.3" - "@babel/plugin-transform-modules-systemjs" "^7.8.3" - "@babel/plugin-transform-modules-umd" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.9.0" + "@babel/plugin-transform-modules-commonjs" "^7.9.0" + "@babel/plugin-transform-modules-systemjs" "^7.9.0" + "@babel/plugin-transform-modules-umd" "^7.9.0" "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" "@babel/plugin-transform-new-target" "^7.8.3" "@babel/plugin-transform-object-super" "^7.8.3" @@ -678,17 +691,29 @@ "@babel/plugin-transform-template-literals" "^7.8.3" "@babel/plugin-transform-typeof-symbol" "^7.8.4" "@babel/plugin-transform-unicode-regex" "^7.8.3" - "@babel/types" "^7.8.7" - browserslist "^4.8.5" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.9.0" + browserslist "^4.9.1" core-js-compat "^3.6.2" invariant "^2.2.2" levenary "^1.1.1" semver "^5.5.0" +"@babel/preset-modules@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" + integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.7.tgz#8fefce9802db54881ba59f90bb28719b4996324d" - integrity sha512-+AATMUFppJDw6aiR5NVPHqIQBlV/Pj8wY/EZH+lmvRdUo9xBaz/rF3alAwFJQavvKfeOlPE7oaaDHVbcySbCsg== + version "7.9.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06" + integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q== dependencies: regenerator-runtime "^0.13.4" @@ -701,27 +726,27 @@ "@babel/parser" "^7.8.6" "@babel/types" "^7.8.6" -"@babel/traverse@^7.8.3", "@babel/traverse@^7.8.4", "@babel/traverse@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.6.tgz#acfe0c64e1cd991b3e32eae813a6eb564954b5ff" - integrity sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A== +"@babel/traverse@^7.8.3", "@babel/traverse@^7.8.6", "@babel/traverse@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.0.tgz#d3882c2830e513f4fe4cec9fe76ea1cc78747892" + integrity sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w== dependencies: "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.8.6" + "@babel/generator" "^7.9.0" "@babel/helper-function-name" "^7.8.3" "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/parser" "^7.8.6" - "@babel/types" "^7.8.6" + "@babel/parser" "^7.9.0" + "@babel/types" "^7.9.0" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.8.7": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.7.tgz#1fc9729e1acbb2337d5b6977a63979b4819f5d1d" - integrity sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw== +"@babel/types@^7.4.4", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.0.tgz#00b064c3df83ad32b2dbf5ff07312b15c7f1efb5" + integrity sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng== dependencies: - esutils "^2.0.2" + "@babel/helper-validator-identifier" "^7.9.0" lodash "^4.17.13" to-fast-properties "^2.0.0" @@ -823,9 +848,9 @@ integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY= "@types/node@*": - version "13.9.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.2.tgz#ace1880c03594cc3e80206d96847157d8e7fa349" - integrity sha512-bnoqK579sAYrQbp73wwglccjJ4sfRdKU7WNEZ5FW4K2U6Kc0/eZ5kvXG0JKsEKFB50zrFmfFt52/cvBbZa7eXg== + version "13.9.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.3.tgz#6356df2647de9eac569f9a52eda3480fa9e70b4d" + integrity sha512-01s+ac4qerwd6RHD+mVbOEsraDHSgUaefQlEdBbUolnQFjKwCr7luvAlEwW1RFojh67u0z4OUTjPn9LEl4zIkA== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -881,18 +906,18 @@ "@types/vfile-message" "*" "@types/webpack-sources@*": - version "0.1.6" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-0.1.6.tgz#3d21dfc2ec0ad0c77758e79362426a9ba7d7cbcb" - integrity sha512-FtAWR7wR5ocJ9+nP137DV81tveD/ZgB1sadnJ/axUGM3BUVfRPx8oQNMtv3JNfTeHx3VP7cXiyfR/jmtEsVHsQ== + version "0.1.7" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-0.1.7.tgz#0a330a9456113410c74a5d64180af0cbca007141" + integrity sha512-XyaHrJILjK1VHVC4aVlKsdNN5KBTwufMb43cQs+flGxtPAf/1Qwl8+Q0tp5BwEGaI8D6XT1L+9bSWXckgkjTLw== dependencies: "@types/node" "*" "@types/source-list-map" "*" source-map "^0.6.1" "@types/webpack@^4.4.31": - version "4.41.7" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.7.tgz#22be27dbd4362b01c3954ca9b021dbc9328d9511" - integrity sha512-OQG9viYwO0V1NaNV7d0n79V+n6mjOV30CwgFPIfTzwmk8DHbt+C4f2aBGdCYbo3yFyYD6sjXfqqOjwkl1j+ulA== + version "4.41.8" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.8.tgz#d2244f5f612ee30230a5c8c4ae678bce90d27277" + integrity sha512-mh4litLHTlDG84TGCFv1pZldndI34vkrW9Mks++Zx4KET7DRMoCXUvLbTISiuF4++fMgNnhV9cc1nCXJQyBYbQ== dependencies: "@types/anymatch" "*" "@types/node" "*" @@ -901,150 +926,149 @@ "@types/webpack-sources" "*" source-map "^0.6.0" -"@webassemblyjs/ast@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" - integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== +"@webassemblyjs/ast@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== dependencies: - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" -"@webassemblyjs/floating-point-hex-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" - integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== +"@webassemblyjs/floating-point-hex-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== -"@webassemblyjs/helper-api-error@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" - integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== +"@webassemblyjs/helper-api-error@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== -"@webassemblyjs/helper-buffer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" - integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== +"@webassemblyjs/helper-buffer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== -"@webassemblyjs/helper-code-frame@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" - integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== +"@webassemblyjs/helper-code-frame@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== dependencies: - "@webassemblyjs/wast-printer" "1.8.5" + "@webassemblyjs/wast-printer" "1.9.0" -"@webassemblyjs/helper-fsm@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" - integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== +"@webassemblyjs/helper-fsm@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== -"@webassemblyjs/helper-module-context@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" - integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== +"@webassemblyjs/helper-module-context@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== dependencies: - "@webassemblyjs/ast" "1.8.5" - mamacro "^0.0.3" + "@webassemblyjs/ast" "1.9.0" -"@webassemblyjs/helper-wasm-bytecode@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" - integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== +"@webassemblyjs/helper-wasm-bytecode@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== -"@webassemblyjs/helper-wasm-section@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" - integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== +"@webassemblyjs/helper-wasm-section@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" -"@webassemblyjs/ieee754@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" - integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== +"@webassemblyjs/ieee754@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" - integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== +"@webassemblyjs/leb128@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== dependencies: "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" - integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== +"@webassemblyjs/utf8@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== -"@webassemblyjs/wasm-edit@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" - integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== +"@webassemblyjs/wasm-edit@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/helper-wasm-section" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-opt" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - "@webassemblyjs/wast-printer" "1.8.5" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/helper-wasm-section" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-opt" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/wast-printer" "1.9.0" -"@webassemblyjs/wasm-gen@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" - integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== +"@webassemblyjs/wasm-gen@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" -"@webassemblyjs/wasm-opt@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" - integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== +"@webassemblyjs/wasm-opt@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" -"@webassemblyjs/wasm-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" - integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== +"@webassemblyjs/wasm-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" -"@webassemblyjs/wast-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" - integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== +"@webassemblyjs/wast-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/floating-point-hex-parser" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-code-frame" "1.8.5" - "@webassemblyjs/helper-fsm" "1.8.5" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-code-frame" "1.9.0" + "@webassemblyjs/helper-fsm" "1.9.0" "@xtuc/long" "4.2.2" -"@webassemblyjs/wast-printer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" - integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== +"@webassemblyjs/wast-printer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" "@xtuc/long" "4.2.2" "@xtuc/ieee754@^1.2.0": @@ -1495,17 +1519,17 @@ atob@^2.1.2: integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== autoprefixer@^9.0.0, autoprefixer@^9.6.1, autoprefixer@^9.7.4: - version "9.7.4" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.4.tgz#f8bf3e06707d047f0641d87aee8cfb174b2a5378" - integrity sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g== + version "9.7.5" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.5.tgz#8df10b9ff9b5814a8d411a5cfbab9c793c392376" + integrity sha512-URo6Zvt7VYifomeAfJlMFnYDhow1rk2bufwkbamPEAtQFcL11moLk4PnR7n9vlu7M+BkXAZkHFA0mIcY7tjQFg== dependencies: - browserslist "^4.8.3" - caniuse-lite "^1.0.30001020" + browserslist "^4.11.0" + caniuse-lite "^1.0.30001036" chalk "^2.4.2" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^7.0.26" - postcss-value-parser "^4.0.2" + postcss "^7.0.27" + postcss-value-parser "^4.0.3" aws-sign2@~0.7.0: version "0.7.0" @@ -1526,14 +1550,15 @@ axios@0.19.0: is-buffer "^2.0.2" babel-loader@^8.0.6: - version "8.0.6" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb" - integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw== + version "8.1.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" + integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== dependencies: - find-cache-dir "^2.0.0" - loader-utils "^1.0.2" - mkdirp "^0.5.1" + find-cache-dir "^2.1.0" + loader-utils "^1.4.0" + mkdirp "^0.5.3" pify "^4.0.1" + schema-utils "^2.6.5" babel-plugin-dynamic-import-node@^2.3.0: version "2.3.0" @@ -1918,13 +1943,13 @@ browserslist@^1.1.3: caniuse-db "^1.0.30000639" electron-to-chromium "^1.2.7" -browserslist@^4.0.0, browserslist@^4.6.4, browserslist@^4.8.3, browserslist@^4.8.5, browserslist@^4.9.1: - version "4.10.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.10.0.tgz#f179737913eaf0d2b98e4926ac1ca6a15cbcc6a9" - integrity sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA== +browserslist@^4.0.0, browserslist@^4.11.0, browserslist@^4.6.4, browserslist@^4.8.3, browserslist@^4.9.1: + version "4.11.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.11.0.tgz#aef4357b10a8abda00f97aac7cd587b2082ba1ad" + integrity sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A== dependencies: caniuse-lite "^1.0.30001035" - electron-to-chromium "^1.3.378" + electron-to-chromium "^1.3.380" node-releases "^1.1.52" pkg-up "^3.1.0" @@ -2014,9 +2039,9 @@ bytes@3.1.0: integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== cacache@^12.0.2, cacache@^12.0.3: - version "12.0.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" - integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== dependencies: bluebird "^3.5.5" chownr "^1.1.1" @@ -2161,14 +2186,14 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-db@^1.0.30000639: - version "1.0.30001035" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001035.tgz#3a182cab9d556a4a02d945f1f739e81c18e73bfa" - integrity sha512-kLUON4XN3tq5Nwl7ZICDw+7/vMynSpRMVYDRkzLL31lgnpa6M2YXYdjst3h+xbzjMgdcveRTnRGE1h/1IcKK6A== + version "1.0.30001036" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001036.tgz#8761fb6cd423ef2d3f8d96a21d898932252dc477" + integrity sha512-plRkihXQyiDaFUXC7x/jAIXXTKiiaWvfAagsruh/vmstnRQ+a2a95HyENxiTr5WrkPSvmFUIvsRUalVFyeh2/w== -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001035: - version "1.0.30001035" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz#2bb53b8aa4716b2ed08e088d4dc816a5fe089a1e" - integrity sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001036: + version "1.0.30001036" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001036.tgz#930ea5272010d8bf190d859159d757c0b398caf0" + integrity sha512-jU8CIFIj2oR7r4W+5AKcsvWNVIb6Q6OZE3UsrXrZBHFtreT4YgTeOJtTucp+zSedEpTi3L5wASSP0LYIE3if6w== caseless@~0.12.0: version "0.12.0" @@ -3537,10 +3562,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.378: - version "1.3.379" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.379.tgz#81dc5e82a3e72bbb830d93e15bc35eda2bbc910e" - integrity sha512-NK9DBBYEBb5f9D7zXI0hiE941gq3wkBeQmXs1ingigA/jnTg5mhwY2Z5egwA+ZI8OLGKCx0h1Cl8/xeuIBuLlg== +electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.380: + version "1.3.382" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.382.tgz#cad02da655c33f7a3d6ca7525bd35c17e90f3a8f" + integrity sha512-gJfxOcgnBlXhfnUUObsq3n3ReU8CT6S8je97HndYRkKsNZMJJ38zO/pI5aqO7L3Myfq+E3pqPyKK/ynyLEQfBA== elliptic@^6.0.0: version "6.5.2" @@ -3703,9 +3728,9 @@ error-ex@^1.2.0, error-ex@^1.3.1: is-arrayish "^0.2.1" es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: - version "1.17.4" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184" - integrity sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ== + version "1.17.5" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" + integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== dependencies: es-to-primitive "^1.2.1" function-bind "^1.1.1" @@ -3870,11 +3895,11 @@ esprima@^4.0.0: integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.1.0.tgz#c5c0b66f383e7656404f86b31334d72524eddb48" - integrity sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q== + version "1.2.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.2.0.tgz#a010a519c0288f2530b3404124bfb5f02e9797fe" + integrity sha512-weltsSqdeWIX9G2qQZz7KlTRJdkkOCTPgLYJUz1Hacf48R4YOwGPHO3+ORfWedqJKbq5WQmsgK90n+pFLIKt/Q== dependencies: - estraverse "^4.0.0" + estraverse "^5.0.0" esrecurse@^4.1.0: version "4.2.1" @@ -3883,11 +3908,16 @@ esrecurse@^4.1.0: dependencies: estraverse "^4.1.0" -estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: +estraverse@^4.1.0, estraverse@^4.1.1: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== +estraverse@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.0.0.tgz#ac81750b482c11cca26e4b07e83ed8f75fbcdc22" + integrity sha512-j3acdrMzqrxmJTNj5dbr1YbjacrYgAxVMeF0gK16E3j494mOe7xygM/ZLIguEQ0ETwAg2hlJCtHRGav+y0Ny5A== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -4346,7 +4376,7 @@ finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: +find-cache-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== @@ -4714,9 +4744,9 @@ glob-parent@^3.1.0: path-dirname "^1.0.0" glob-parent@^5.0.0, glob-parent@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" - integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== dependencies: is-glob "^4.0.1" @@ -6355,7 +6385,7 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.0: +json5@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.2.tgz#43ef1f0af9835dd624751a6b7fa48874fb2d608e" integrity sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ== @@ -6504,8 +6534,8 @@ levn@^0.3.0, levn@~0.3.0: type-check "~0.3.2" "libass-wasm@https://github.com/jellyfin/JavascriptSubtitlesOctopus": - version "3.0.2" - resolved "https://github.com/jellyfin/JavascriptSubtitlesOctopus#99626d3ee5eb6bd695d7c908c5e6f910213b0e71" + version "4.0.0" + resolved "https://github.com/jellyfin/JavascriptSubtitlesOctopus#1d12af0b04fb2337570b57d706dd97db2f904b9d" liftoff@^3.1.0: version "3.1.0" @@ -6581,7 +6611,7 @@ loader-utils@^0.2.16: json5 "^0.5.0" object-assign "^4.0.1" -loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: +loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== @@ -6907,11 +6937,6 @@ make-iterator@^1.0.0: dependencies: kind-of "^6.0.2" -mamacro@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" - integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== - map-age-cleaner@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" @@ -7253,10 +7278,10 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: - version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c" - integrity sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg== +"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1: + version "0.5.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.4.tgz#fd01504a6797ec5c9be81ff43d204961ed64a512" + integrity sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw== dependencies: minimist "^1.2.5" @@ -7442,27 +7467,7 @@ node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" -<<<<<<< HEAD -node-releases@^1.1.50: -======= -node-pre-gyp@*: - version "0.14.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" - integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4.4.2" - node-releases@^1.1.52: ->>>>>>> Update yarn.lock version "1.1.52" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.52.tgz#bcffee3e0a758e92e44ecfaecd0a47554b0bcba9" integrity sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ== @@ -8222,9 +8227,9 @@ performance-now@^2.1.0: integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= picomatch@^2.0.5, picomatch@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" - integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== pify@^2.0.0, pify@^2.2.0, pify@^2.3.0: version "2.3.0" @@ -9898,7 +9903,7 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.5.0, schema-utils@^2.6.0, schema-utils@^2.6.4: +schema-utils@^2.5.0, schema-utils@^2.6.0, schema-utils@^2.6.4, schema-utils@^2.6.5: version "2.6.5" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.5.tgz#c758f0a7e624263073d396e29cd40aa101152d8a" integrity sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ== @@ -12001,14 +12006,14 @@ webpack-stream@^5.2.1: webpack "^4.26.1" webpack@^4.26.1, webpack@^4.41.5: - version "4.42.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.42.0.tgz#b901635dd6179391d90740a63c93f76f39883eb8" - integrity sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w== + version "4.42.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.42.1.tgz#ae707baf091f5ca3ef9c38b884287cfe8f1983ef" + integrity sha512-SGfYMigqEfdGchGhFFJ9KyRpQKnipvEvjc1TwrXEPCM6H5Wywu10ka8o3KGrMzSMxMQKt8aCHUFh5DaQ9UmyRg== dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/wasm-edit" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" acorn "^6.2.1" ajv "^6.10.2" ajv-keywords "^3.4.1" @@ -12020,7 +12025,7 @@ webpack@^4.26.1, webpack@^4.41.5: loader-utils "^1.2.3" memory-fs "^0.4.1" micromatch "^3.1.10" - mkdirp "^0.5.1" + mkdirp "^0.5.3" neo-async "^2.6.1" node-libs-browser "^2.2.1" schema-utils "^1.0.0" @@ -12197,9 +12202,9 @@ yallist@^3.0.2: integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== yaml@^1.7.2: - version "1.8.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.8.2.tgz#a29c03f578faafd57dcb27055f9a5d569cb0c3d9" - integrity sha512-omakb0d7FjMo3R1D2EbTKVIk6dAVLRxFXdLZMEUToeAvuqgG/YuHMuQOZ5fgk+vQ8cx+cnGKwyg+8g8PNT0xQg== + version "1.8.3" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.8.3.tgz#2f420fca58b68ce3a332d0ca64be1d191dd3f87a" + integrity sha512-X/v7VDnK+sxbQ2Imq4Jt2PRUsRsP7UcpSl3Llg6+NRRqWLIvxkMFYtH1FmvwNGYRKKPa+EPA4qDBlI9WVG1UKw== dependencies: "@babel/runtime" "^7.8.7" From 82aa8a3f28383ce7286d9fa66b7d2293e1835cc4 Mon Sep 17 00:00:00 2001 From: lldsolitude Date: Tue, 24 Mar 2020 08:42:04 +0000 Subject: [PATCH 53/71] Translated using Weblate (Chinese (Simplified)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hans/ --- src/strings/zh-cn.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index b0c9a59694..ec6591fe25 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1474,5 +1474,8 @@ "AskAdminToCreateLibrary": "请联系管理员以创建一个新的资料库。", "PlaybackErrorNoCompatibleStream": "客户端配置文件存在问题,服务器未发送兼容的媒体格式。", "AllowFfmpegThrottlingHelp": "当转码或再封装的进度大幅超过当前播放位置时,暂停该进程,以使其消耗更少的资源。在观看时不经常调整播放进度的情况下,这将非常有用。如果遇到播放问题,请关闭此功能。", - "AllowFfmpegThrottling": "限制转码速度" + "AllowFfmpegThrottling": "限制转码速度", + "PreferEmbeddedEpisodeInfosOverFileNames": "优先使用内置的剧集信息而不是文件名", + "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "这将在内置元数据含剧集信息时使用内置信息。", + "ClientSettings": "客户端设置" } From dba5fd9ac92798ab389d7fd7a6ad6400f3e24616 Mon Sep 17 00:00:00 2001 From: Casper Talvio Date: Tue, 24 Mar 2020 12:56:20 +0000 Subject: [PATCH 54/71] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 11d497fd19..b3515ae4a8 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -257,7 +257,7 @@ "DownloadsValue": "{0} latausta", "DrmChannelsNotImported": "Kanavia joissa on tekijänoikeusesto-ohjelmia, ei ladata.", "DropShadow": "Tiputa varjo", - "EasyPasswordHelp": "Sinun helppoa PIN-koodia käytetään offline-käytössä tuetuissa Jellyfin-sovelluksissa, ja voidaan myös nopeuttaa verkkoon kirjautumista.", + "EasyPasswordHelp": "Sinun helppoa PIN-koodia käytetään offline-käytössä tuetuissa Jellyfin-sovelluksissa, ja voi myös nopeuttaa lan yhteyden kautta kirjautumista.", "Edit": "Muokkaa", "EditImages": "Muokkaa kuvia", "EditMetadata": "Muokkaa metadataa", @@ -310,5 +310,10 @@ "Depressed": "Painettu", "CopyStreamURLError": "Verkko-osoitteen kopioinnissa tapahtui virhe.", "ButtonSplit": "jaa", - "AskAdminToCreateLibrary": "Pyydä järjestelmän ylläpitäjää luomaan kirjasto." + "AskAdminToCreateLibrary": "Pyydä järjestelmän ylläpitäjää luomaan kirjasto.", + "EnableStreamLooping": "Auto-toista suoralähetykset", + "EnableNextVideoInfoOverlayHelp": "Videon lopussa, näytä soittolistassa seuraavaksi toistettavan videon tiedot.", + "ClientSettings": "Pääte-asetukset", + "AllowFfmpegThrottlingHelp": "Kun uudelleenkoodaus tai remux ehtii tarpeeksi toiston edelle, keskeytä laskenta jotta laskentaresursseja kuluu vähemmän. Tämä on hyödyllistä jos katselet hyppimättä eri kohtiin. Älä käytä jos toiston kanssa ilmenee ongelmia.", + "AllowFfmpegThrottling": "Rajoita uudelleenkoodaus" } From 02ce5f6d6c581fe95526c29b848e1785d2c6e27f Mon Sep 17 00:00:00 2001 From: Nyanmisaka <799610810@qq.com> Date: Tue, 24 Mar 2020 15:00:17 +0000 Subject: [PATCH 55/71] Translated using Weblate (Chinese (Simplified)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hans/ --- src/strings/zh-cn.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index ec6591fe25..f752606b33 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1348,7 +1348,7 @@ "HeaderFavoriteArtists": "最爱的艺术家", "HeaderKeepRecording": "继续录制", "HeaderKeepSeries": "保持系列", - "HeaderMusicQuality": "音质", + "HeaderMusicQuality": "音频质量", "HeaderNextEpisodePlayingInValue": "下一集在 {0} 后播放", "HeaderNextVideoPlayingInValue": "下一部影片在 {0} 后播放", "HeaderPlayOn": "播放在", From 9115a4e1fa626407dc0fbb5a10574e7f6cd0af8c Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 22 Mar 2020 19:33:10 +0100 Subject: [PATCH 56/71] Clean up the settings menu on mobile --- src/assets/css/librarybrowser.css | 6 +++++- src/controllers/user/menu.js | 8 +++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 0bf65d83a7..13265e40d1 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -21,7 +21,7 @@ } .libraryPage { - padding-top: 7em !important; + padding-top: 7em; } .itemDetailPage { @@ -1119,3 +1119,7 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { .itemsViewSettingsContainer > .button-flat { margin: 0; } + +.layout-mobile #myPreferencesMenuPage { + padding-top: 3.75em; +} diff --git a/src/controllers/user/menu.js b/src/controllers/user/menu.js index b1e2b7b519..e7d816fb6f 100644 --- a/src/controllers/user/menu.js +++ b/src/controllers/user/menu.js @@ -1,4 +1,4 @@ -define(["apphost", "connectionManager", "listViewStyle", "emby-button"], function(appHost, connectionManager) { +define(["apphost", "connectionManager", "layoutManager", "listViewStyle", "emby-button"], function(appHost, connectionManager, layoutManager) { "use strict"; return function(view, params) { @@ -43,6 +43,12 @@ define(["apphost", "connectionManager", "listViewStyle", "emby-button"], functio page.querySelector(".adminSection").classList.add("hide"); } + if (layoutManager.mobile) { + page.querySelector(".headerUsername").classList.add("hide"); + page.querySelector(".adminSection").classList.add("hide"); + page.querySelector(".userSection").classList.add("hide"); + } + ApiClient.getUser(userId).then(function(user) { page.querySelector(".headerUsername").innerHTML = user.Name; if (!user.Policy.IsAdministrator) { From 3b9ca3c1a398e5a0dffc8c6763e4c27b817cc13d Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 22 Mar 2020 21:09:10 +0100 Subject: [PATCH 57/71] Add Settings entry to the navigation drawer --- src/scripts/librarymenu.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js index 5e6562ee42..11c89b01da 100644 --- a/src/scripts/librarymenu.js +++ b/src/scripts/librarymenu.js @@ -243,15 +243,20 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " html += 'wifi' + globalize.translate("ButtonSelectServer") + ""; } + html += '' + globalize.translate("ButtonSettings") + ""; html += '' + globalize.translate("ButtonSignOut") + ""; html += "
"; } // add buttons to navigation drawer navDrawerScrollContainer.innerHTML = html; - // bind logout button click to method - var btnLogout = navDrawerScrollContainer.querySelector(".btnLogout"); + var btnSettings = navDrawerScrollContainer.querySelector(".btnSettings"); + if (btnSettings) { + btnSettings.addEventListener("click", onSettingsClick); + } + + var btnLogout = navDrawerScrollContainer.querySelector(".btnLogout"); if (btnLogout) { btnLogout.addEventListener("click", onLogoutClick); } @@ -598,6 +603,10 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " } } + function onSettingsClick() { + Dashboard.navigate("mypreferencesmenu.html"); + } + function onLogoutClick() { Dashboard.logout(); } From cccbf24f099464dfc654a0f323f57b7cbec54274 Mon Sep 17 00:00:00 2001 From: Mathis Date: Tue, 24 Mar 2020 21:48:49 +0000 Subject: [PATCH 58/71] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/strings/de.json b/src/strings/de.json index 60fd625ea3..5a449d8e55 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1,5 +1,5 @@ { - "Absolute": "Gesamt", + "Absolute": "Absolut", "AccessRestrictedTryAgainLater": "Der Zugriff ist derzeit eingeschränkt. Bitte versuche es später erneut.", "Actor": "Darsteller(in)", "Add": "Hinzufügen", @@ -1493,5 +1493,6 @@ "NoCreatedLibraries": "Sieht so aus als hättest du bis jetzt keine Bibliothek erstellt. {0}Möchtest du jetzt eine Bibliothek erstellen?{1}", "AllowFfmpegThrottling": "Transkodierung drosseln", "PlaybackErrorNoCompatibleStream": "Es gab ein Problem bei der Erkennung des Wiedergabeprofils des Clients und der Server sendet kein kompatibles Format.", - "AllowFfmpegThrottlingHelp": "Wenn eine Transkodierung oder ein Remux weit genug über die aktuelle Abspielposition fortgeschritten ist, pausiere sie sodass weniger Ressourcen verbraucht werden. Dies ist am nützlichsten, wenn wenig geskippt wird. Bei Wiedergabeproblemen sollte diese Option deaktiviert werden." + "AllowFfmpegThrottlingHelp": "Wenn eine Transkodierung oder ein Remux weit genug über die aktuelle Abspielposition fortgeschritten ist, pausiere sie sodass weniger Ressourcen verbraucht werden. Dies ist am nützlichsten, wenn wenig geskippt wird. Bei Wiedergabeproblemen sollte diese Option deaktiviert werden.", + "ClientSettings": "Client Einstellungen" } From 2fec0e40823bdbf6c4d064b359baa7dcd0bd7795 Mon Sep 17 00:00:00 2001 From: Mathis Date: Tue, 24 Mar 2020 21:49:55 +0000 Subject: [PATCH 59/71] Translated using Weblate (German (Swiss)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/gsw/ --- src/strings/gsw.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/gsw.json b/src/strings/gsw.json index 7d0162e852..a154e4fc8e 100644 --- a/src/strings/gsw.json +++ b/src/strings/gsw.json @@ -164,5 +164,8 @@ "Songs": "Lieder", "Sync": "Synchronisation", "ValueSpecialEpisodeName": "Extra - {0}", - "VersionNumber": "Version {0}" + "VersionNumber": "Version {0}", + "Absolute": "Absolut", + "Actor": "Schauspiler", + "AccessRestrictedTryAgainLater": "Zuegriff isch momentan beschränkt. Probier bitte später nomau. " } From 580bf9fd23a136de3038ac509c35f3772764e8cf Mon Sep 17 00:00:00 2001 From: Ken Ying-Kai Liao Date: Wed, 25 Mar 2020 06:37:34 +0000 Subject: [PATCH 60/71] Translated using Weblate (Chinese (Traditional)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hant/ --- src/strings/zh-tw.json | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index 756a759068..626583fa0b 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -328,7 +328,7 @@ "Art": "圖像", "Artists": "演出者", "AsManyAsPossible": "越多越好", - "Ascending": "由少到多", + "Ascending": "遞增", "AspectRatio": "長寬比", "AttributeNew": "新增", "Audio": "音訊", @@ -552,7 +552,7 @@ "EncoderPresetHelp": "速度越慢則會得到更好的壓縮編碼效率。", "HDPrograms": "HD節目", "HandledByProxy": "由反向代理處理", - "HardwareAccelerationWarning": "啟動硬體加速可能在某些環境下導致系統不穩定。請確認你的作業系統和影片驅動程式是最新的。如果你在開啟此項後播放影片產生困難,那麼你需要將此選項設回”自動“。", + "HardwareAccelerationWarning": "啟動硬體加速可能在某些環境下導致系統不穩定。請確認你的作業系統和影片驅動程式是最新的。如果你在開啟此項後播放影片產生困難,那麼你需要將此選項設回”無“。", "HeaderAccessSchedule": "存取時程", "HeaderAccessScheduleHelp": "建立一個存取時程以限制可存取的時段。", "HeaderActiveDevices": "運行中裝置", @@ -1493,7 +1493,7 @@ "RecordingPathChangeMessage": "更改錄製資料夾不會將現有錄製從舊位置遷移到新的,您需要手動移動它們。", "RestartPleaseWaitMessage": "Jellyfin 伺服器將重新啟動,這將花費幾分鐘時間。", "LabelEmbedAlbumArtDidl": "於 Didl 中嵌入專輯封面", - "LabelEnableAutomaticPortMapHelp": "自動嘗試映射公共連接埠到 UPnP 本地連接埠。這可能無法用於某些路由器。", + "LabelEnableAutomaticPortMapHelp": "自動嘗試映射公共連接埠到 UPnP 本地連接埠。這可能無法用於某些路由器。需重新啓動伺服器。", "LabelEmbedAlbumArtDidlHelp": "有些裝置使用這個方式來取得專輯封面,啟用這個選項可能導致其他設備播放失敗。", "SettingsWarning": "更改這些值可能會導致不穩定或連線故障。如果您遇到任何問題,建議將它們重新更改為預設值。", "LabelEnableSingleImageInDidlLimitHelp": "若在 Didl 中嵌入多個圖片,某些裝置可能無法正常顯示。", @@ -1641,5 +1641,10 @@ "LabelPlayerDimensions": "播放器尺寸:", "LabelDroppedFrames": "丟棄的幀:", "LabelCorruptedFrames": "損壞的幀:", - "ButtonSplit": "拆分" + "ButtonSplit": "分割", + "AskAdminToCreateLibrary": "如要建立資料庫,請求管理員", + "NoCreatedLibraries": "看來您還未創任何媒體庫。{0}立刻創一個新的嗎?{1}", + "ClientSettings": "用戶設定", + "AllowFfmpegThrottlingHelp": "當轉檔或重組進度大量超前目前播放進度時,將暫停轉檔節省消耗的資源。在不常跳播的時候最有效。如果遇到播放問題,請關閉此功能。", + "AllowFfmpegThrottling": "限制轉檔" } From 3ed9be897e727d983d82c9b89976c90dcf99bd54 Mon Sep 17 00:00:00 2001 From: Ken Ying-Kai Liao Date: Wed, 25 Mar 2020 06:53:03 +0000 Subject: [PATCH 61/71] Translated using Weblate (Chinese (Traditional)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hant/ --- src/strings/zh-tw.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index 626583fa0b..d527b5a5bf 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -1637,7 +1637,7 @@ "LabelVideoResolution": "視頻解析度:", "LabelStreamType": "串流類型:", "EnableFastImageFadeInHelp": "為已加載的圖片啓用更快的淡入動畫", - "EnableFastImageFadeIn": "快速圖片淡入", + "EnableFastImageFadeIn": "圖片快速淡入效果", "LabelPlayerDimensions": "播放器尺寸:", "LabelDroppedFrames": "丟棄的幀:", "LabelCorruptedFrames": "損壞的幀:", From ca0914819a74d64c39d01dea8208b44a1ee270b6 Mon Sep 17 00:00:00 2001 From: The Iiseppi Date: Wed, 25 Mar 2020 08:32:09 +0000 Subject: [PATCH 62/71] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index b3515ae4a8..b61724e2fe 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -315,5 +315,10 @@ "EnableNextVideoInfoOverlayHelp": "Videon lopussa, näytä soittolistassa seuraavaksi toistettavan videon tiedot.", "ClientSettings": "Pääte-asetukset", "AllowFfmpegThrottlingHelp": "Kun uudelleenkoodaus tai remux ehtii tarpeeksi toiston edelle, keskeytä laskenta jotta laskentaresursseja kuluu vähemmän. Tämä on hyödyllistä jos katselet hyppimättä eri kohtiin. Älä käytä jos toiston kanssa ilmenee ongelmia.", - "AllowFfmpegThrottling": "Rajoita uudelleenkoodaus" + "AllowFfmpegThrottling": "Rajoita uudelleenkoodaus", + "ErrorDeletingItem": "Tiedostoa poistaessa Jellyfin Palvelimelta ilmeni virhe. Varmista, että Jellyfin Palvelimella on kirjoitusoikeudet mediakansioon ja kokeile uudestaan.", + "ErrorAddingXmlTvFile": "XMLTV-tiedostoa käyttäessä tapahtui virhe. Varmista, että tiedosto on olemassa ja kokeile uudestaan.", + "ErrorAddingTunerDevice": "Viritintä lisätessä ilmeni ongelma. Varmista, että se on kytketty oikein ja kokeile uudestaan.", + "EnableThemeVideosHelp": "Soita tunnusvideoita taustalla, selatessasi kirjastoa.", + "EnableThemeVideos": "Teeman videot" } From 308000bc97913d53ba6e7ef87d8d25f2c0200b46 Mon Sep 17 00:00:00 2001 From: Ric Li Date: Wed, 25 Mar 2020 08:28:53 +0000 Subject: [PATCH 63/71] Translated using Weblate (Chinese (Simplified)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hans/ --- src/strings/zh-cn.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index f752606b33..a37f839039 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -705,7 +705,7 @@ "LabelPublicHttpPortHelp": "映射到本地 HTTP 端口的公开端口号。", "LabelPublicHttpsPort": "公开 HTTPS 端口号:", "LabelPublicHttpsPortHelp": "映射到本地 HTTPS 端口的公开端口号。", - "LabelReadHowYouCanContribute": "学习如何构建。", + "LabelReadHowYouCanContribute": "了解如何做出贡献。", "LabelReasonForTranscoding": "转码原因:", "LabelRecord": "录制:", "LabelRecordingPath": "默认录制路径:", From 1c54bdee51d52ba3f358e66e5ff82522d2765c7a Mon Sep 17 00:00:00 2001 From: Ken Ying-Kai Liao Date: Wed, 25 Mar 2020 06:53:18 +0000 Subject: [PATCH 64/71] Translated using Weblate (Chinese (Traditional)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hant/ --- src/strings/zh-tw.json | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index d527b5a5bf..ffc0228af2 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -1636,15 +1636,18 @@ "LaunchWebAppOnStartupHelp": "伺服器啓動時在默認游覽器中打開網頁端。使用重啓伺服器功能時此項不生效。", "LabelVideoResolution": "視頻解析度:", "LabelStreamType": "串流類型:", - "EnableFastImageFadeInHelp": "為已加載的圖片啓用更快的淡入動畫", + "EnableFastImageFadeInHelp": "對已載入的圖片啟用更快的淡入動畫", "EnableFastImageFadeIn": "圖片快速淡入效果", "LabelPlayerDimensions": "播放器尺寸:", "LabelDroppedFrames": "丟棄的幀:", "LabelCorruptedFrames": "損壞的幀:", "ButtonSplit": "分割", - "AskAdminToCreateLibrary": "如要建立資料庫,請求管理員", + "AskAdminToCreateLibrary": "如要建立資料庫,請求管理員。", "NoCreatedLibraries": "看來您還未創任何媒體庫。{0}立刻創一個新的嗎?{1}", "ClientSettings": "用戶設定", "AllowFfmpegThrottlingHelp": "當轉檔或重組進度大量超前目前播放進度時,將暫停轉檔節省消耗的資源。在不常跳播的時候最有效。如果遇到播放問題,請關閉此功能。", - "AllowFfmpegThrottling": "限制轉檔" + "AllowFfmpegThrottling": "限制轉檔", + "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "這將會使用內建劇集資料。", + "PlaybackErrorNoCompatibleStream": "用戶端偵測出了問題,伺服器也未傳送相容的媒體格式。", + "PreferEmbeddedEpisodeInfosOverFileNames": "優先使用內建劇集資訊而不是檔案名稱" } From d7c32dcde924d9a3afb3790103f401be3b25ad73 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 12 Mar 2020 12:34:50 +0300 Subject: [PATCH 65/71] Fix radiobutton focus marker --- src/elements/emby-radio/emby-radio.css | 105 ++++++++++++++----------- src/elements/emby-radio/emby-radio.js | 20 ++++- src/themes/purplehaze/theme.css | 9 +++ 3 files changed, 87 insertions(+), 47 deletions(-) diff --git a/src/elements/emby-radio/emby-radio.css b/src/elements/emby-radio/emby-radio.css index 6db3c39e4d..34af657b9c 100644 --- a/src/elements/emby-radio/emby-radio.css +++ b/src/elements/emby-radio/emby-radio.css @@ -4,7 +4,6 @@ display: inline-block; box-sizing: border-box; margin: 0; - padding-left: 24px; } .radio-label-block { @@ -31,67 +30,81 @@ border: none; } -.mdl-radio__outer-circle { - position: absolute; - top: 4px; - left: 0; - display: inline-block; - box-sizing: border-box; - width: 16px; - height: 16px; - margin: 0; - cursor: pointer; - border: 2px solid currentcolor; +.mdl-radio__circles { + position: relative; + margin-right: 0.54em; + width: 1.08em; + height: 1.08em; border-radius: 50%; - z-index: 2; + cursor: pointer; } -.mdl-radio__button:checked + .mdl-radio__label + .mdl-radio__outer-circle { - border: 2px solid #00a4dc; +.mdl-radio__circles svg { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; + z-index: 1; } -.mdl-radio__button:disabled + .mdl-radio__label + .mdl-radio__outer-circle { - border: 2px solid rgba(0, 0, 0, 0.26); +.mdl-radio__button:disabled + .mdl-radio__circles { cursor: auto; } +.mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__outer-circle { + color: #00a4dc; +} + +.mdl-radio__button:disabled + .mdl-radio__circles .mdl-radio__outer-circle { + color: rgba(0, 0, 0, 0.26); +} + .mdl-radio__inner-circle { - position: absolute; - z-index: 1; - margin: 0; - top: 8px; - left: 4px; - box-sizing: border-box; - width: 8px; - height: 8px; - cursor: pointer; - transition-duration: 0.28s; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 0.2s; transition-property: -webkit-transform; transition-property: transform; transition-property: transform, -webkit-transform; - -webkit-transform: scale3d(0, 0, 0); - transform: scale3d(0, 0, 0); + -webkit-transform: scale(0); + transform: scale(0); + transform-origin: 50% 50%; +} + +.mdl-radio__button:checked + .mdl-radio__circles .mdl-radio__inner-circle { + -webkit-transform: scale(1); + transform: scale(1); +} + +.mdl-radio__button:disabled + .mdl-radio__circles .mdl-radio__inner-circle { + color: rgba(0, 0, 0, 0.26); +} + +.mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__inner-circle { + color: #00a4dc; +} + +.mdl-radio__focus-circle { + position: absolute; + top: 0; + left: 0; + box-sizing: border-box; + width: 100%; + height: 100%; + margin: 0; border-radius: 50%; background: #00a4dc; + opacity: 0.26; + transition-duration: 0.2s; + transition-property: -webkit-transform; + transition-property: transform; + transition-property: transform, -webkit-transform; + -webkit-transform: scale(0); + transform: scale(0); } -.mdl-radio__button:checked + .mdl-radio__label + .mdl-radio__outer-circle + .mdl-radio__inner-circle { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); -} - -.mdl-radio__button:disabled + .mdl-radio__label + .mdl-radio__outer-circle + .mdl-radio__inner-circle { - background: rgba(0, 0, 0, 0.26); - cursor: auto; -} - -.mdl-radio__button:focus + .mdl-radio__label + .mdl-radio__outer-circle + .mdl-radio__inner-circle { - box-shadow: 0 0 0 10px rgba(255, 255, 255, 0.76); -} - -.mdl-radio__button:checked:focus + .mdl-radio__label + .mdl-radio__outer-circle + .mdl-radio__inner-circle { - box-shadow: 0 0 0 10px rgba(0, 164, 220, 0.26); +.mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__focus-circle { + -webkit-transform: scale(1.75); + transform: scale(1.75); } .mdl-radio__label { diff --git a/src/elements/emby-radio/emby-radio.js b/src/elements/emby-radio/emby-radio.js index 000c656822..86c08678e1 100644 --- a/src/elements/emby-radio/emby-radio.js +++ b/src/elements/emby-radio/emby-radio.js @@ -43,7 +43,25 @@ define(['css!./emby-radio', 'registerElement'], function () { labelTextElement.classList.add('radioButtonLabel'); labelTextElement.classList.add('mdl-radio__label'); - labelElement.insertAdjacentHTML('beforeend', ''); + var html = ''; + + html += '
'; + + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + + html += '
'; + + html += '
'; + + this.insertAdjacentHTML('afterend', html); this.addEventListener('keydown', onKeyDown); }; diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index 9c13841422..a31b5a924f 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -438,6 +438,15 @@ a[data-role=button] { color: #f8f8fe; } +.mdl-radio__button:focus + .mdl-radio__circles svg .mdl-radio__outer-circle, +.mdl-radio__button:focus + .mdl-radio__circles svg .mdl-radio__inner-circle { + color: #ff77f1; +} + +.mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__focus-circle { + background: #00a4dc; +} + .emby-tab-button { color: #999; } From a41bd6de56a09baaa27fec396ed5b3a546af11af Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 12 Mar 2020 12:35:13 +0300 Subject: [PATCH 66/71] Fix checkbox border on TV --- src/elements/emby-checkbox/emby-checkbox.css | 2 +- src/themes/purplehaze/theme.css | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/elements/emby-checkbox/emby-checkbox.css b/src/elements/emby-checkbox/emby-checkbox.css index 42a9207560..b33a216140 100644 --- a/src/elements/emby-checkbox/emby-checkbox.css +++ b/src/elements/emby-checkbox/emby-checkbox.css @@ -55,7 +55,7 @@ height: 1.83em; margin: 0; overflow: hidden; - border: 2px solid currentcolor; + border: 0.14em solid currentcolor; border-radius: 0.14em; z-index: 2; display: flex; diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index a31b5a924f..d65071afa4 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -382,7 +382,7 @@ a[data-role=button] { .emby-checkbox:checked + span + .checkboxOutline { background-color: #030322; - border: 2px solid rgb(72, 195, 200); + border: 0.14em solid rgb(72, 195, 200); } .emby-checkbox:checked + span + .checkboxOutline > .checkboxIcon-checked { @@ -394,7 +394,7 @@ a[data-role=button] { } .emby-checkbox:focus:not(:checked) + span + .checkboxOutline { - border: 2px solid #ff77f1; + border: 0.14em solid #ff77f1; } .itemProgressBarForeground { From 17d1dc355940ae0069782cba5d9cc539119ed38c Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 12 Mar 2020 18:49:38 +0300 Subject: [PATCH 67/71] Fix tiny cropping in Firefox --- src/elements/emby-radio/emby-radio.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/elements/emby-radio/emby-radio.css b/src/elements/emby-radio/emby-radio.css index 34af657b9c..0b17a82ed4 100644 --- a/src/elements/emby-radio/emby-radio.css +++ b/src/elements/emby-radio/emby-radio.css @@ -46,6 +46,7 @@ top: 0; left: 0; z-index: 1; + overflow: visible; } .mdl-radio__button:disabled + .mdl-radio__circles { From a2ccaa29c3b6b4115d573fe086551ca9587cf7fc Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 12 Mar 2020 20:45:27 +0300 Subject: [PATCH 68/71] Turn off radiobutton focus on Mobile --- src/elements/emby-radio/emby-radio.css | 6 +++--- src/elements/emby-radio/emby-radio.js | 10 ++++++++-- src/themes/purplehaze/theme.css | 6 +++--- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/elements/emby-radio/emby-radio.css b/src/elements/emby-radio/emby-radio.css index 0b17a82ed4..f8671ce265 100644 --- a/src/elements/emby-radio/emby-radio.css +++ b/src/elements/emby-radio/emby-radio.css @@ -53,7 +53,7 @@ cursor: auto; } -.mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__outer-circle { +.mdl-radio.show-focus .mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__outer-circle { color: #00a4dc; } @@ -80,7 +80,7 @@ color: rgba(0, 0, 0, 0.26); } -.mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__inner-circle { +.mdl-radio.show-focus .mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__inner-circle { color: #00a4dc; } @@ -103,7 +103,7 @@ transform: scale(0); } -.mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__focus-circle { +.mdl-radio.show-focus .mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__focus-circle { -webkit-transform: scale(1.75); transform: scale(1.75); } diff --git a/src/elements/emby-radio/emby-radio.js b/src/elements/emby-radio/emby-radio.js index 86c08678e1..46a3e3826c 100644 --- a/src/elements/emby-radio/emby-radio.js +++ b/src/elements/emby-radio/emby-radio.js @@ -1,4 +1,4 @@ -define(['css!./emby-radio', 'registerElement'], function () { +define(['layoutManager', 'css!./emby-radio', 'registerElement'], function (layoutManager) { 'use strict'; var EmbyRadioPrototype = Object.create(HTMLInputElement.prototype); @@ -23,6 +23,7 @@ define(['css!./emby-radio', 'registerElement'], function () { } EmbyRadioPrototype.attachedCallback = function () { + var showFocus = !layoutManager.mobile; if (this.getAttribute('data-radio') === 'true') { return; @@ -37,6 +38,9 @@ define(['css!./emby-radio', 'registerElement'], function () { labelElement.classList.add('mdl-radio'); labelElement.classList.add('mdl-js-radio'); labelElement.classList.add('mdl-js-ripple-effect'); + if (showFocus) { + labelElement.classList.add('show-focus'); + } var labelTextElement = labelElement.querySelector('span'); @@ -57,7 +61,9 @@ define(['css!./emby-radio', 'registerElement'], function () { html += ''; html += ''; - html += '
'; + if (showFocus) { + html += '
'; + } html += '
'; diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index d65071afa4..45f43abc2f 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -438,12 +438,12 @@ a[data-role=button] { color: #f8f8fe; } -.mdl-radio__button:focus + .mdl-radio__circles svg .mdl-radio__outer-circle, -.mdl-radio__button:focus + .mdl-radio__circles svg .mdl-radio__inner-circle { +.mdl-radio.show-focus .mdl-radio__button:focus + .mdl-radio__circles svg .mdl-radio__outer-circle, +.mdl-radio.show-focus .mdl-radio__button:focus + .mdl-radio__circles svg .mdl-radio__inner-circle { color: #ff77f1; } -.mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__focus-circle { +.mdl-radio.show-focus .mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__focus-circle { background: #00a4dc; } From 9bf5cda44afc5ba2f31b62bd620074a341f556b3 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 12 Mar 2020 20:53:49 +0300 Subject: [PATCH 69/71] Fix lint error --- src/elements/emby-radio/emby-radio.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/elements/emby-radio/emby-radio.css b/src/elements/emby-radio/emby-radio.css index f8671ce265..2d7f584171 100644 --- a/src/elements/emby-radio/emby-radio.css +++ b/src/elements/emby-radio/emby-radio.css @@ -53,14 +53,14 @@ cursor: auto; } -.mdl-radio.show-focus .mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__outer-circle { - color: #00a4dc; -} - .mdl-radio__button:disabled + .mdl-radio__circles .mdl-radio__outer-circle { color: rgba(0, 0, 0, 0.26); } +.mdl-radio.show-focus .mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__outer-circle { + color: #00a4dc; +} + .mdl-radio__inner-circle { transition-duration: 0.2s; transition-property: -webkit-transform; From 8f1434fa40bb4fa6a0abc392b0911700081e9d8e Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Wed, 25 Mar 2020 21:40:22 +0100 Subject: [PATCH 70/71] Fix Browsersync JavaScript reload error --- gulpfile.js | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index ca6cf36dd2..33a34889fb 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -18,14 +18,14 @@ const stream = require('webpack-stream'); const inject = require('gulp-inject'); const postcss = require('gulp-postcss'); const sass = require('gulp-sass'); - -sass.compiler = require('node-sass') +sass.compiler = require('node-sass'); +var config; if (mode.production()) { - var config = require('./webpack.prod.js'); + config = require('./webpack.prod.js'); } else { - var config = require('./webpack.dev.js'); + config = require('./webpack.dev.js'); } function serve() { @@ -36,20 +36,20 @@ function serve() { port: 8080 }); - watch(['src/**/*.js', '!src/bundle.js'], javascript); + watch(['src/**/*.js', '!src/bundle.js'], series(javascript, standalone)); watch('src/bundle.js', webpack); watch('src/**/*.css', css); watch(['src/**/*.html', '!src/index.html'], html); watch(['src/**/*.png', 'src/**/*.jpg', 'src/**/*.gif', 'src/**/*.svg'], images); watch(['src/**/*.json', 'src/**/*.ico'], copy); watch('src/index.html', injectBundle); - watch(['src/standalone.js', 'src/scripts/apploader.js'], standalone); } function standalone() { return src(['src/standalone.js', 'src/scripts/apploader.js'], { base: './src/' }) .pipe(concat('scripts/apploader.js')) - .pipe(dest('dist/')); + .pipe(dest('dist/')) + .pipe(browserSync.stream()); } function clean() { @@ -70,7 +70,6 @@ function javascript() { })) .pipe(mode.development(sourcemaps.write('.'))) .pipe(dest('dist/')) - .pipe(browserSync.stream()); } function webpack() { @@ -118,6 +117,6 @@ function injectBundle() { .pipe(browserSync.stream()); } -exports.default = series(clean, parallel(javascript, webpack, css, html, images, copy), injectBundle) -exports.standalone = series(exports.default, standalone) -exports.serve = series(exports.standalone, serve) +exports.default = series(clean, parallel(javascript, webpack, css, html, images, copy), injectBundle); +exports.standalone = series(exports.default, standalone); +exports.serve = series(exports.standalone, serve); From 2a7f7ba7fee1c9d12af9b43084c65b1df5ed236d Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Wed, 25 Mar 2020 22:26:28 +0100 Subject: [PATCH 71/71] Use let instead of var in gulpfile --- gulpfile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gulpfile.js b/gulpfile.js index 33a34889fb..f42376e24a 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -21,7 +21,7 @@ const sass = require('gulp-sass'); sass.compiler = require('node-sass'); -var config; +let config; if (mode.production()) { config = require('./webpack.prod.js'); } else {