From 12da467cfa6c3f38e2847d81f08cfe53c576843f Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Fri, 17 Jan 2020 11:50:46 +0300 Subject: [PATCH 001/105] Fix event subscription. Fix #623 --- src/scripts/inputManager.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/scripts/inputManager.js b/src/scripts/inputManager.js index 634b5e1b30..6839b0b6f6 100644 --- a/src/scripts/inputManager.js +++ b/src/scripts/inputManager.js @@ -22,9 +22,7 @@ define(['playbackManager', 'focusManager', 'appRouter', 'dom'], function (playba var eventListenerCount = 0; function on(scope, fn) { - if (eventListenerCount) { - eventListenerCount++; - } + eventListenerCount++; dom.addEventListener(scope, 'command', fn, {}); } From 80c8ea6a489d7d23718541c4fbada1df837f1139 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Fri, 17 Jan 2020 12:05:56 +0300 Subject: [PATCH 002/105] Add playback control from TV remote. #303 --- src/components/keyboardnavigation.js | 99 ++++++++++++++++++++++++---- 1 file changed, 86 insertions(+), 13 deletions(-) diff --git a/src/components/keyboardnavigation.js b/src/components/keyboardnavigation.js index 8c0bb1a3ae..c55a066f96 100644 --- a/src/components/keyboardnavigation.js +++ b/src/components/keyboardnavigation.js @@ -1,35 +1,108 @@ -define(['inputManager', 'focusManager'], function(inputManager, focusManager) { - 'use strict'; +define(["inputManager", "layoutManager"], function (inputManager, layoutManager) { + "use strict"; console.log("keyboardnavigation"); + /** + * Key name mapping. + */ + // Add more to support old browsers + var KeyNames = { + 13: "Enter", + 19: "Pause", + 27: "Escape", + 32: "Space", + 37: "ArrowLeft", + 38: "ArrowUp", + 39: "ArrowRight", + 40: "ArrowDown", + 412: "MediaRewind", // MediaRewind (Tizen/WebOS) + 413: "MediaStop", // MediaStop (Tizen/WebOS) + 415: "MediaPlay", // MediaPlay (Tizen/WebOS) + 417: "MediaFastForward", // MediaFastForward (Tizen/WebOS) + 461: "Back", // Back (WebOS) + 10009: "Back", // Back (Tizen) + 10232: "MediaTrackPrevious", // MediaTrackPrevious (Tizen) + 10233: "MediaTrackNext", // MediaTrackNext (Tizen) + 10252: "MediaPlayPause" // MediaPlayPause (Tizen) + }; + + /** + * Returns key name from event. + * + * @param {KeyboardEvent} keyboard event + * @return {string} key name + */ + function getKeyName(event) { + return KeyNames[event.keyCode] || event.key; + } + function enable() { - document.addEventListener('keydown', function(e) { + document.addEventListener("keydown", function (e) { var capture = true; - switch (e.keyCode) { - case 37: // ArrowLeft - inputManager.handle('left'); + switch (getKeyName(e)) { + case "ArrowLeft": + inputManager.handle("left"); break; - case 38: // ArrowUp - inputManager.handle('up'); + case "ArrowUp": + inputManager.handle("up"); break; - case 39: // ArrowRight - inputManager.handle('right'); + case "ArrowRight": + inputManager.handle("right"); break; - case 40: // ArrowDown - inputManager.handle('down'); + case "ArrowDown": + inputManager.handle("down"); break; + + case "Back": + inputManager.handle("back"); + break; + + case "Escape": + if (layoutManager.tv) { + inputManager.handle("back"); + } else { + capture = false; + } + break; + + case "MediaPlay": + inputManager.handle("play"); + break; + case "Pause": + inputManager.handle("pause"); + break; + case "MediaPlayPause": + inputManager.handle("playpause"); + break; + case "MediaRewind": + inputManager.handle("rewind"); + break; + case "MediaFastForward": + inputManager.handle("fastforward"); + break; + case "MediaStop": + inputManager.handle("stop"); + break; + case "MediaTrackPrevious": + inputManager.handle("previoustrack"); + break; + case "MediaTrackNext": + inputManager.handle("nexttrack"); + break; + default: capture = false; } + if (capture) { console.log("Disabling default event handling"); e.preventDefault(); } }); - } + return { enable: enable }; From 1889dad8cc4c280ac38aaa124afbbb95a87b1744 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Fri, 17 Jan 2020 12:09:27 +0300 Subject: [PATCH 003/105] Add shortcuts to show/hide OSD. #621 --- src/controllers/playback/videoosd.js | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index bd12ba5075..195ea57704 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1100,6 +1100,20 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } switch (e.key) { + case "Enter": + showOsd(); + break; + + case "Escape": + case "RCUBack": // WebOS back + case "XF86Back": // Tizen back + // Ignore key when some dialog is opened + if (currentVisibleMenu === "osd" && !document.querySelector(".dialogContainer")) { + hideOsd(); + e.stopPropagation(); + } + break; + case "k": playbackManager.playPause(currentPlayer); showOsd(); @@ -1280,7 +1294,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med showOsd(); inputManager.on(window, onInputCommand); dom.addEventListener(window, "keydown", onWindowKeyDown, { - passive: true + capture: true }); } catch (e) { require(['appRouter'], function(appRouter) { @@ -1294,7 +1308,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } dom.removeEventListener(window, "keydown", onWindowKeyDown, { - passive: true + capture: true }); stopOsdHideTimer(); headerElement.classList.remove("osdHeader"); From cca897bb152ddce4ac239ba4ff0c660643b1f2f8 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Fri, 17 Jan 2020 23:39:58 +0300 Subject: [PATCH 004/105] fix scroll for movie recommendation --- src/controllers/movies/moviesrecommended.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/controllers/movies/moviesrecommended.js b/src/controllers/movies/moviesrecommended.js index 0327217e44..f7201307f2 100644 --- a/src/controllers/movies/moviesrecommended.js +++ b/src/controllers/movies/moviesrecommended.js @@ -115,7 +115,12 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu" if (enableScrollX()) { allowBottomPadding = false; - html += '
'; + var scrollXClass = "scrollX hiddenScrollX"; + if (layoutManager.tv) { + scrollXClass += " smoothScrollX"; + } + + html += '
'; } else { html += '
'; } From 5b8756addf53313c610bab9331de67221a969874 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Sat, 18 Jan 2020 00:17:16 +0300 Subject: [PATCH 005/105] Fix focus --- src/controllers/movies/moviesrecommended.js | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/controllers/movies/moviesrecommended.js b/src/controllers/movies/moviesrecommended.js index f7201307f2..2fe3d2e686 100644 --- a/src/controllers/movies/moviesrecommended.js +++ b/src/controllers/movies/moviesrecommended.js @@ -114,15 +114,10 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu" var allowBottomPadding = true; if (enableScrollX()) { - allowBottomPadding = false; - var scrollXClass = "scrollX hiddenScrollX"; - if (layoutManager.tv) { - scrollXClass += " smoothScrollX"; - } - - html += '
'; + html += '
'; + html += '
'; } else { - html += '
'; + html += '
'; } html += cardBuilder.getCardsHtml(recommendation.Items, { @@ -131,7 +126,11 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu" overlayPlayButton: true, allowBottomPadding: allowBottomPadding }); - html += "
"; + + if (enableScrollX()) { + html += '
'; + } + html += "
"; return html; } From 75185f0b23bcca9cb3e85b3fa91b470960ef49c4 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Sat, 18 Jan 2020 23:47:19 +0300 Subject: [PATCH 006/105] define emby-scroller --- src/controllers/movies/moviesrecommended.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controllers/movies/moviesrecommended.js b/src/controllers/movies/moviesrecommended.js index 2fe3d2e686..ea090553ed 100644 --- a/src/controllers/movies/moviesrecommended.js +++ b/src/controllers/movies/moviesrecommended.js @@ -1,4 +1,4 @@ -define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu", "mainTabsManager", "cardBuilder", "dom", "imageLoader", "playbackManager", "emby-itemscontainer", "emby-tabs", "emby-button"], function (events, layoutManager, inputManager, userSettings, libraryMenu, mainTabsManager, cardBuilder, dom, imageLoader, playbackManager) { +define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu", "mainTabsManager", "cardBuilder", "dom", "imageLoader", "playbackManager", "emby-scroller", "emby-itemscontainer", "emby-tabs", "emby-button"], function (events, layoutManager, inputManager, userSettings, libraryMenu, mainTabsManager, cardBuilder, dom, imageLoader, playbackManager) { "use strict"; function enableScrollX() { @@ -114,7 +114,7 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu" var allowBottomPadding = true; if (enableScrollX()) { - html += '
'; + html += '
'; html += '
'; } else { html += '
'; From ec6ce5aa14384f51ff4f97a749bb4e0985aed773 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 19 Jan 2020 01:09:42 +0300 Subject: [PATCH 007/105] Add keyboard compatibility for older browsers (webOS 2/3) --- src/components/keyboardnavigation.js | 17 ++++++++++++++++- src/controllers/playback/videoosd.js | 11 ++++++----- src/elements/emby-slider/emby-slider.js | 4 ++-- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/components/keyboardnavigation.js b/src/components/keyboardnavigation.js index c55a066f96..0971018bbf 100644 --- a/src/components/keyboardnavigation.js +++ b/src/components/keyboardnavigation.js @@ -27,6 +27,20 @@ define(["inputManager", "layoutManager"], function (inputManager, layoutManager) 10252: "MediaPlayPause" // MediaPlayPause (Tizen) }; + var hasFieldKey = false; + try { + hasFieldKey = "key" in new KeyboardEvent("keydown"); + } catch (e) { + console.log("error checking 'key' field"); + } + + if (!hasFieldKey) { + // Add [a..z] + for (var i = 65; i <= 90; i++) { + KeyNames[i] = String.fromCharCode(i).toLowerCase(); + } + } + /** * Returns key name from event. * @@ -104,6 +118,7 @@ define(["inputManager", "layoutManager"], function (inputManager, layoutManager) } return { - enable: enable + enable: enable, + getKeyName: getKeyName }; }); diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index 195ea57704..5dc12aeeed 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1,4 +1,4 @@ -define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "mediaInfo", "focusManager", "imageLoader", "scrollHelper", "events", "connectionManager", "browser", "globalize", "apphost", "layoutManager", "userSettings", "scrollStyles", "emby-slider", "paper-icon-button-light", "css!assets/css/videoosd"], function (playbackManager, dom, inputManager, datetime, itemHelper, mediaInfo, focusManager, imageLoader, scrollHelper, events, connectionManager, browser, globalize, appHost, layoutManager, userSettings) { +define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "mediaInfo", "focusManager", "imageLoader", "scrollHelper", "events", "connectionManager", "browser", "globalize", "apphost", "layoutManager", "userSettings", "keyboardnavigation", "scrollStyles", "emby-slider", "paper-icon-button-light", "css!assets/css/videoosd"], function (playbackManager, dom, inputManager, datetime, itemHelper, mediaInfo, focusManager, imageLoader, scrollHelper, events, connectionManager, browser, globalize, appHost, layoutManager, userSettings, keyboardnavigation) { "use strict"; function seriesImageUrl(item, options) { @@ -1088,25 +1088,26 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med var NavigationKeys = ["ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown"]; function onWindowKeyDown(e) { + var key = keyboardnavigation.getKeyName(e); + if (!currentVisibleMenu && 32 === e.keyCode) { playbackManager.playPause(currentPlayer); showOsd(); return; } - if (layoutManager.tv && NavigationKeys.indexOf(e.key) != -1) { + if (layoutManager.tv && NavigationKeys.indexOf(key) != -1) { showOsd(); return; } - switch (e.key) { + switch (key) { case "Enter": showOsd(); break; case "Escape": - case "RCUBack": // WebOS back - case "XF86Back": // Tizen back + case "Back": // Ignore key when some dialog is opened if (currentVisibleMenu === "osd" && !document.querySelector(".dialogContainer")) { hideOsd(); diff --git a/src/elements/emby-slider/emby-slider.js b/src/elements/emby-slider/emby-slider.js index c340e79359..24592f4515 100644 --- a/src/elements/emby-slider/emby-slider.js +++ b/src/elements/emby-slider/emby-slider.js @@ -1,4 +1,4 @@ -define(['browser', 'dom', 'layoutManager', 'css!./emby-slider', 'registerElement', 'emby-input'], function (browser, dom, layoutManager) { +define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-slider', 'registerElement', 'emby-input'], function (browser, dom, layoutManager, keyboardnavigation) { 'use strict'; var EmbySliderPrototype = Object.create(HTMLInputElement.prototype); @@ -250,7 +250,7 @@ define(['browser', 'dom', 'layoutManager', 'css!./emby-slider', 'registerElement * Handle KeyDown event */ function onKeyDown(e) { - switch (e.key) { + switch (keyboardnavigation.getKeyName(e)) { case 'ArrowLeft': case 'Left': stepKeyboard(this, -this.keyboardStepDown || -1); From 779e3782884da0dcfe11b43c7e7c597abe559a59 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Tue, 21 Jan 2020 00:09:41 +0300 Subject: [PATCH 008/105] show title and year on movie suggestion --- src/controllers/movies/moviesrecommended.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/controllers/movies/moviesrecommended.js b/src/controllers/movies/moviesrecommended.js index ea090553ed..cdcc681aa1 100644 --- a/src/controllers/movies/moviesrecommended.js +++ b/src/controllers/movies/moviesrecommended.js @@ -124,7 +124,10 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu" shape: getPortraitShape(), scalable: true, overlayPlayButton: true, - allowBottomPadding: allowBottomPadding + allowBottomPadding: allowBottomPadding, + showTitle: true, + showYear: true, + centerText: true }); if (enableScrollX()) { From 60e64f8a582f16b7743df6703934d30f00932bbc Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 21 Jan 2020 12:51:33 +0300 Subject: [PATCH 009/105] Add exit on "Go back" --- src/components/appRouter.js | 2 +- src/components/apphost.js | 58 +++++++++++++++++++++++++++++++------ src/scripts/inputManager.js | 8 +++-- src/strings/en-us.json | 1 + src/strings/ru.json | 1 + 5 files changed, 58 insertions(+), 12 deletions(-) diff --git a/src/components/appRouter.js b/src/components/appRouter.js index 8643e3f47f..9df0ee5f1b 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -551,7 +551,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM return false; } - if (curr.type === 'home') { + if (!document.querySelector('.dialogContainer') && curr.type === 'home') { return false; } return page.canGoBack(); diff --git a/src/components/apphost.js b/src/components/apphost.js index b1b1c30dc9..d85706b9fd 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -311,6 +311,52 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet }); } + /** + * Do exit according to platform + */ + function doExit() { + try { + if (window.NativeShell) { + window.NativeShell.AppHost.exit(); + } else if (browser.tizen) { + tizen.application.getCurrentApplication().exit(); + } else if (browser.web0s) { + webOS.platformBack(); + } else { + window.close(); + } + } catch (err) { + console.log("error closing application: " + err); + } + } + + var exitPromise; + + /** + * Ask user for exit + */ + function askForExit() { + if (!!exitPromise) { + return; + } + + require(["actionsheet"], function (actionsheet) { + exitPromise = actionsheet.show({ + title: Globalize.translate("MessageConfirmAppExit"), + items: [ + {id: "yes", name: Globalize.translate("Yes")}, + {id: "no", name: Globalize.translate("No")} + ] + }).then(function (value) { + if (value === "yes") { + doExit(); + } + }).finally(function () { + exitPromise = null; + }); + }); + } + var deviceId; var deviceName; var appName = "Jellyfin Web"; @@ -326,16 +372,10 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet alert("setWindowState is not supported and should not be called"); }, exit: function () { - if (window.NativeShell) { - window.NativeShell.AppHost.exit(); - } else if (browser.tizen) { - try { - tizen.application.getCurrentApplication().exit(); - } catch (err) { - console.log("error closing application: " + err); - } + if (!!window.appMode && browser.tizen) { + askForExit(); } else { - window.close(); + doExit(); } }, supports: function (command) { diff --git a/src/scripts/inputManager.js b/src/scripts/inputManager.js index 634b5e1b30..c6a64a69f5 100644 --- a/src/scripts/inputManager.js +++ b/src/scripts/inputManager.js @@ -1,4 +1,4 @@ -define(['playbackManager', 'focusManager', 'appRouter', 'dom'], function (playbackManager, focusManager, appRouter, dom) { +define(['playbackManager', 'focusManager', 'appRouter', 'dom', 'apphost'], function (playbackManager, focusManager, appRouter, dom, appHost) { 'use strict'; var lastInputTime = new Date().getTime(); @@ -98,7 +98,11 @@ define(['playbackManager', 'focusManager', 'appRouter', 'dom'], function (playba appRouter.showSettings(); break; case 'back': - appRouter.back(); + if (appRouter.canGoBack()) { + appRouter.back(); + } else if (appHost.supports('exit')) { + appHost.exit(); + } break; case 'forward': break; diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 6dea5a7892..4eb2289c99 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -945,6 +945,7 @@ "MessageAlreadyInstalled": "This version is already installed.", "MessageAreYouSureDeleteSubtitles": "Are you sure you wish to delete this subtitle file?", "MessageAreYouSureYouWishToRemoveMediaFolder": "Are you sure you wish to remove this media folder?", + "MessageConfirmAppExit": "Do you want to exit?", "MessageConfirmDeleteGuideProvider": "Are you sure you wish to delete this guide provider?", "MessageConfirmDeleteTunerDevice": "Are you sure you wish to delete this device?", "MessageConfirmProfileDeletion": "Are you sure you wish to delete this profile?", diff --git a/src/strings/ru.json b/src/strings/ru.json index 4e612aa5bd..140c5bdb80 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -890,6 +890,7 @@ "MessageAlreadyInstalled": "Данная версия уже установлена.", "MessageAreYouSureDeleteSubtitles": "Вы действительно хотите удалить данный файл субитров?", "MessageAreYouSureYouWishToRemoveMediaFolder": "Вы действительно хотите изъять данную медиапапку?", + "MessageConfirmAppExit": "Вы хотите выйти?", "MessageConfirmDeleteGuideProvider": "Вы действительно хотите удалить данного поставщика телегида?", "MessageConfirmDeleteTunerDevice": "Вы действительно хотите удалить данное устройство?", "MessageConfirmProfileDeletion": "Вы действительно хотите удалить данный профиль?", From d345e32333ff27c432f58298b23cde49a1908ed3 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 21 Jan 2020 14:04:26 +0300 Subject: [PATCH 010/105] Fix eslint errors --- src/components/apphost.js | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/components/apphost.js b/src/components/apphost.js index d85706b9fd..d6099b6ddf 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -342,18 +342,18 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet require(["actionsheet"], function (actionsheet) { exitPromise = actionsheet.show({ - title: Globalize.translate("MessageConfirmAppExit"), - items: [ - {id: "yes", name: Globalize.translate("Yes")}, - {id: "no", name: Globalize.translate("No")} - ] - }).then(function (value) { - if (value === "yes") { - doExit(); - } - }).finally(function () { - exitPromise = null; - }); + title: Globalize.translate("MessageConfirmAppExit"), + items: [ + {id: "yes", name: Globalize.translate("Yes")}, + {id: "no", name: Globalize.translate("No")} + ] + }).then(function (value) { + if (value === "yes") { + doExit(); + } + }).finally(function () { + exitPromise = null; + }); }); } From e706f8bee0b99acbd6aa3434198ff64303bea2f0 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Wed, 22 Jan 2020 03:29:52 +0300 Subject: [PATCH 011/105] loginpage.js --- src/controllers/auth/login.js | 78 +++++++++++++++++++++++------------ 1 file changed, 52 insertions(+), 26 deletions(-) diff --git a/src/controllers/auth/login.js b/src/controllers/auth/login.js index 54fb6ce5e9..ceecb2aba3 100644 --- a/src/controllers/auth/login.js +++ b/src/controllers/auth/login.js @@ -1,23 +1,31 @@ -define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layoutManager", "browser", "cardStyle", "emby-checkbox"], function(appHost, appSettings, dom, connectionManager, loading, layoutManager, browser) { +define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layoutManager", "browser", "cardStyle", "emby-checkbox"], function (appHost, appSettings, dom, connectionManager, loading, layoutManager, browser) { "use strict"; var enableFocusTransform = !browser.slow && !browser.edge; function authenticateUserByName(page, apiClient, username, password) { loading.show(); - apiClient.authenticateUserByName(username, password).then(function(result) { + apiClient.authenticateUserByName(username, password).then(function (result) { var user = result.User; var serverId = getParameterByName("serverid"); - var newUrl = user.Policy.IsAdministrator && !serverId ? "dashboard.html" : "home.html"; + var newUrl; + + if (user.Policy.IsAdministrator && !serverId) { + newUrl = "dashboard.html"; + } else { + newUrl = "home.html"; + } + loading.hide(); Dashboard.onServerChanged(user.Id, result.AccessToken, apiClient); Dashboard.navigate(newUrl); - }, function(response) { + }, function (response) { page.querySelector("#txtManualName").value = ""; page.querySelector("#txtManualPassword").value = ""; loading.hide(); + if (response.status === 401) { - require(["toast"], function(toast) { + require(["toast"], function (toast) { toast(Globalize.translate("MessageInvalidUser")); }); } else { @@ -34,8 +42,18 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout context.querySelector(".manualLoginForm").classList.remove("hide"); context.querySelector(".visualLoginForm").classList.add("hide"); context.querySelector(".btnManual").classList.add("hide"); - focusPassword ? context.querySelector("#txtManualPassword").focus() : context.querySelector("#txtManualName").focus(); - showCancel ? context.querySelector(".btnCancel").classList.remove("hide") : context.querySelector(".btnCancel").classList.add("hide"); + + if (focusPassword) { + context.querySelector("#txtManualPassword").focus(); + } else { + context.querySelector("#txtManualName").focus(); + } + + if (showCancel) { + context.querySelector(".btnCancel").classList.remove("hide"); + } else { + context.querySelector(".btnCancel").classList.add("hide"); + } } var metroColors = ["#6FBD45", "#4BB3DD", "#4164A5", "#E12026", "#800080", "#E1B222", "#008040", "#0094FF", "#FF00C7", "#FF870F", "#7F0037"]; @@ -49,22 +67,25 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout if (str) { var character = String(str.substr(0, 1).charCodeAt()); var sum = 0; + for (var i = 0; i < character.length; i++) { sum += parseInt(character.charAt(i)); } + var index = String(sum).substr(-1); return metroColors[index]; } + return getRandomMetroColor(); } function loadUserList(context, apiClient, users) { var html = ""; + for (var i = 0; i < users.length; i++) { var user = users[i]; // TODO move card creation code to Card component - var cssClass = "card squareCard scalableCard squareCard-scalable"; if (layoutManager.tv) { @@ -76,13 +97,13 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout } var cardBoxCssClass = "cardBox cardBox-bottompadded"; - html += '"; } + context.querySelector("#divUsers").innerHTML = html; } - return function(view, params) { + return function (view, params) { function getApiClient() { var serverId = params.serverid; - return serverId ? connectionManager.getOrCreateApiClient(serverId) : ApiClient; + + if (serverId) { + return connectionManager.getOrCreateApiClient(serverId); + } + + return ApiClient; } function showVisualForm() { @@ -122,14 +150,16 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout }); } - view.querySelector("#divUsers").addEventListener("click", function(e) { + view.querySelector("#divUsers").addEventListener("click", function (e) { var card = dom.parentWithClass(e.target, "card"); var cardContent = card ? card.querySelector(".cardContent") : null; + if (cardContent) { var context = view; var id = cardContent.getAttribute("data-userid"); var name = cardContent.getAttribute("data-username"); var haspw = cardContent.getAttribute("data-haspw"); + if (id === 'manual') { context.querySelector("#txtManualName").value = ""; showManualForm(context, true); @@ -142,33 +172,30 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout } } }); - - view.querySelector(".manualLoginForm").addEventListener("submit", function(e) { + view.querySelector(".manualLoginForm").addEventListener("submit", function (e) { appSettings.enableAutoLogin(view.querySelector(".chkRememberLogin").checked); var apiClient = getApiClient(); authenticateUserByName(view, apiClient, view.querySelector("#txtManualName").value, view.querySelector("#txtManualPassword").value); e.preventDefault(); return false; }); - - view.querySelector(".btnForgotPassword").addEventListener("click", function() { + view.querySelector(".btnForgotPassword").addEventListener("click", function () { Dashboard.navigate("forgotpassword.html"); }); - view.querySelector(".btnCancel").addEventListener("click", showVisualForm); - - view.querySelector(".btnManual").addEventListener("click", function() { + view.querySelector(".btnManual").addEventListener("click", function () { view.querySelector("#txtManualName").value = ""; showManualForm(view, true); }); - - view.addEventListener("viewshow", function(e) { + view.addEventListener("viewshow", function (e) { loading.show(); + if (!appHost.supports('multiserver')) { view.querySelector(".btnSelectServer").classList.add("hide"); } + var apiClient = getApiClient(); - apiClient.getPublicUsers().then(function(users) { + apiClient.getPublicUsers().then(function (users) { if (users.length) { showVisualForm(); loadUserList(view, apiClient, users); @@ -176,13 +203,12 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout view.querySelector("#txtManualName").value = ""; showManualForm(view, false, false); } - }).catch().then(function() { + }).catch().then(function () { loading.hide(); }); - - apiClient.getJSON(apiClient.getUrl("Branding/Configuration")).then(function(options) { + apiClient.getJSON(apiClient.getUrl("Branding/Configuration")).then(function (options) { view.querySelector(".disclaimer").textContent = options.LoginDisclaimer || ""; }); }); - } + }; }); From f1429d007b9cdceae2cdb812cfb4905b829fc5f1 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Wed, 22 Jan 2020 03:30:33 +0300 Subject: [PATCH 012/105] general.js --- src/controllers/dashboard/general.js | 71 ++++++++++++++++------------ 1 file changed, 41 insertions(+), 30 deletions(-) diff --git a/src/controllers/dashboard/general.js b/src/controllers/dashboard/general.js index c37e5e9a46..742cae112f 100644 --- a/src/controllers/dashboard/general.js +++ b/src/controllers/dashboard/general.js @@ -1,38 +1,45 @@ -define(["jQuery", "loading", "fnchecked", "emby-checkbox", "emby-textarea", "emby-input", "emby-select", "emby-button"], function($, loading) { +define(["jQuery", "loading", "fnchecked", "emby-checkbox", "emby-textarea", "emby-input", "emby-select", "emby-button"], function ($, loading) { "use strict"; function loadPage(page, config, languageOptions, systemInfo) { page.querySelector("#txtServerName").value = systemInfo.ServerName; $("#chkAutoRunWebApp", page).checked(config.AutoRunWebApp); + if (systemInfo.CanLaunchWebBrowser) { page.querySelector("#fldAutoRunWebApp").classList.remove("hide"); } else { page.querySelector("#fldAutoRunWebApp").classList.add("hide"); } + page.querySelector("#txtCachePath").value = systemInfo.CachePath || ""; $("#txtMetadataPath", page).val(systemInfo.InternalMetadataPath || ""); $("#txtMetadataNetworkPath", page).val(systemInfo.MetadataNetworkPath || ""); - $("#selectLocalizationLanguage", page).html(languageOptions.map(function(language) { - return '" + $("#selectLocalizationLanguage", page).html(languageOptions.map(function (language) { + return '"; })).val(config.UICulture); currentLanguage = config.UICulture; + if (systemInfo.CanSelfUpdate) { page.querySelector(".fldAutomaticUpdates").classList.remove("hide"); } else { page.querySelector(".fldAutomaticUpdates").classList.add("hide"); } + $("#chkEnableAutomaticServerUpdates", page).checked(config.EnableAutoUpdate); $("#chkEnableAutomaticRestart", page).checked(config.EnableAutomaticRestart); + if (systemInfo.CanSelfRestart) { page.querySelector("#fldEnableAutomaticRestart").classList.remove("hide"); } else { page.querySelector("#fldEnableAutomaticRestart").classList.add("hide"); } + if (systemInfo.CanSelfRestart || systemInfo.CanSelfUpdate) { $(".autoUpdatesContainer", page).removeClass("hide"); } else { $(".autoUpdatesContainer", page).addClass("hide"); } + loading.hide(); } @@ -40,92 +47,96 @@ define(["jQuery", "loading", "fnchecked", "emby-checkbox", "emby-textarea", "emb loading.show(); var form = this; $(form).parents(".page"); - return ApiClient.getServerConfiguration().then(function(config) { + ApiClient.getServerConfiguration().then(function (config) { config.ServerName = $("#txtServerName", form).val(); config.UICulture = $("#selectLocalizationLanguage", form).val(); config.CachePath = form.querySelector("#txtCachePath").value; config.MetadataPath = $("#txtMetadataPath", form).val(); config.MetadataNetworkPath = $("#txtMetadataNetworkPath", form).val(); - var requiresReload = (config.UICulture !== currentLanguage); + var requiresReload = config.UICulture !== currentLanguage; config.AutoRunWebApp = $("#chkAutoRunWebApp", form).checked(); config.EnableAutomaticRestart = $("#chkEnableAutomaticRestart", form).checked(); config.EnableAutoUpdate = $("#chkEnableAutomaticServerUpdates", form).checked(); - ApiClient.updateServerConfiguration(config).then(function() { - ApiClient.getNamedConfiguration(brandingConfigKey).then(function(brandingConfig) { + ApiClient.updateServerConfiguration(config).then(function () { + ApiClient.getNamedConfiguration(brandingConfigKey).then(function (brandingConfig) { brandingConfig.LoginDisclaimer = form.querySelector("#txtLoginDisclaimer").value; brandingConfig.CustomCss = form.querySelector("#txtCustomCss").value; + if (currentBrandingOptions && brandingConfig.CustomCss !== currentBrandingOptions.CustomCss) { requiresReload = true; } - ApiClient.updateNamedConfiguration(brandingConfigKey, brandingConfig).then(function() { + + ApiClient.updateNamedConfiguration(brandingConfigKey, brandingConfig).then(function () { Dashboard.processServerConfigurationUpdateResult(); + if (requiresReload && !AppInfo.isNativeApp) { window.location.reload(true); } }); - }) - }) - }), !1 + }); + }); + }); + return false; } var currentBrandingOptions; var currentLanguage; var brandingConfigKey = "branding"; - - return function(view, params) { - $("#btnSelectCachePath", view).on("click.selectDirectory", function() { - require(["directorybrowser"], function(directoryBrowser) { - var picker = new directoryBrowser; + return function (view, params) { + $("#btnSelectCachePath", view).on("click.selectDirectory", function () { + require(["directorybrowser"], function (directoryBrowser) { + var picker = new directoryBrowser(); picker.show({ - callback: function(path) { + callback: function (path) { if (path) { view.querySelector("#txtCachePath").value = path; } + picker.close(); }, validateWriteable: true, header: Globalize.translate("HeaderSelectServerCachePath"), instruction: Globalize.translate("HeaderSelectServerCachePathHelp") - }) - }) + }); + }); }); - - $("#btnSelectMetadataPath", view).on("click.selectDirectory", function() { - require(["directorybrowser"], function(directoryBrowser) { + $("#btnSelectMetadataPath", view).on("click.selectDirectory", function () { + require(["directorybrowser"], function (directoryBrowser) { var picker = new directoryBrowser(); picker.show({ path: $("#txtMetadataPath", view).val(), networkSharePath: $("#txtMetadataNetworkPath", view).val(), - callback: function(path, networkPath) { + callback: function (path, networkPath) { if (path) { $("#txtMetadataPath", view).val(path); } + if (networkPath) { $("#txtMetadataNetworkPath", view).val(networkPath); } + picker.close(); }, validateWriteable: true, header: Globalize.translate("HeaderSelectMetadataPath"), instruction: Globalize.translate("HeaderSelectMetadataPathHelp"), enableNetworkSharePath: true - }) - }) + }); + }); }); - $(".dashboardGeneralForm", view).off("submit", onSubmit).on("submit", onSubmit); - view.addEventListener("viewshow", function() { + view.addEventListener("viewshow", function () { var promiseConfig = ApiClient.getServerConfiguration(); var promiseLanguageOptions = ApiClient.getJSON(ApiClient.getUrl("Localization/Options")); var promiseSystemInfo = ApiClient.getSystemInfo(); - Promise.all([promiseConfig, promiseLanguageOptions, promiseSystemInfo]).then(function(responses) { + Promise.all([promiseConfig, promiseLanguageOptions, promiseSystemInfo]).then(function (responses) { loadPage(view, responses[0], responses[1], responses[2]); }); - ApiClient.getNamedConfiguration(brandingConfigKey).then(function(config) { + ApiClient.getNamedConfiguration(brandingConfigKey).then(function (config) { currentBrandingOptions = config; view.querySelector("#txtLoginDisclaimer").value = config.LoginDisclaimer || ""; view.querySelector("#txtCustomCss").value = config.CustomCss || ""; }); }); - } + }; }); From de82a262df4f68cdde589349aaa7969d95ee6752 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Wed, 22 Jan 2020 03:30:55 +0300 Subject: [PATCH 013/105] networking.js --- src/controllers/dashboard/networking.js | 157 ++++++++++++++++-------- 1 file changed, 108 insertions(+), 49 deletions(-) diff --git a/src/controllers/dashboard/networking.js b/src/controllers/dashboard/networking.js index a6e42967a4..97383dfd48 100644 --- a/src/controllers/dashboard/networking.js +++ b/src/controllers/dashboard/networking.js @@ -1,53 +1,60 @@ -define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"], function(loading, libraryMenu, globalize) { +define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"], function (loading, libraryMenu, globalize) { "use strict"; function onSubmit(e) { var form = this; var localAddress = form.querySelector("#txtLocalAddress").value; var enableUpnp = form.querySelector("#chkEnableUpnp").checked; - confirmSelections(localAddress, enableUpnp, function() { + confirmSelections(localAddress, enableUpnp, function () { var validationResult = getValidationAlert(form); - if (validationResult) return void alertText(validationResult); - validateHttps(form).then(function() { + + if (validationResult) { + return void alertText(validationResult); + } + + validateHttps(form).then(function () { loading.show(); - ApiClient.getServerConfiguration().then(function(config) { - config.LocalNetworkSubnets = form.querySelector("#txtLanNetworks").value.split(",").map(function(s) { - return s.trim() - }).filter(function(s) { - return s.length > 0 + ApiClient.getServerConfiguration().then(function (config) { + config.LocalNetworkSubnets = form.querySelector("#txtLanNetworks").value.split(",").map(function (s) { + return s.trim(); + }).filter(function (s) { + return s.length > 0; }); - - config.RemoteIPFilter = form.querySelector("#txtExternalAddressFilter").value.split(",").map(function(s) { - return s.trim() - }).filter(function(s) { - return s.length > 0 + config.RemoteIPFilter = form.querySelector("#txtExternalAddressFilter").value.split(",").map(function (s) { + return s.trim(); + }).filter(function (s) { + return s.length > 0; }); - config.IsRemoteIPFilterBlacklist = "blacklist" === form.querySelector("#selectExternalAddressFilterMode").value; config.PublicPort = form.querySelector("#txtPublicPort").value; config.PublicHttpsPort = form.querySelector("#txtPublicHttpsPort").value; var httpsMode = form.querySelector("#selectHttpsMode").value; + switch (httpsMode) { case "proxy": config.EnableHttps = true; config.RequireHttps = false; config.IsBehindProxy = true; break; + case "required": config.EnableHttps = true; config.RequireHttps = true; config.IsBehindProxy = false; break; + case "enabled": config.EnableHttps = true; config.RequireHttps = false; config.IsBehindProxy = false; break; + default: config.EnableHttps = false; config.RequireHttps = false; config.IsBehindProxy = false; } + config.HttpsPortNumber = form.querySelector("#txtHttpsPort").value; config.HttpServerPortNumber = form.querySelector("#txtPortNumber").value; config.EnableUPnP = enableUpnp; @@ -57,47 +64,66 @@ define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"], config.CertificatePassword = form.querySelector("#txtCertPassword").value || null; config.LocalNetworkAddresses = localAddress ? [localAddress] : []; ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult, Dashboard.processErrorResponse); - }) - }) - }), e.preventDefault() + }); + }); + }); + e.preventDefault(); } function triggerChange(select) { var evt = document.createEvent("HTMLEvents"); - evt.initEvent("change", !1, !0), select.dispatchEvent(evt) + evt.initEvent("change", false, true); + select.dispatchEvent(evt); } function getValidationAlert(form) { - return form.querySelector("#txtPublicPort").value === form.querySelector("#txtPublicHttpsPort").value ? "The public http and https ports must be different." : form.querySelector("#txtPortNumber").value === form.querySelector("#txtHttpsPort").value ? "The http and https ports must be different." : null + if (form.querySelector("#txtPublicPort").value === form.querySelector("#txtPublicHttpsPort").value) { + return "The public http and https ports must be different."; + } + + if (form.querySelector("#txtPortNumber").value === form.querySelector("#txtHttpsPort").value) { + return "The http and https ports must be different."; + } + + return null; } function validateHttps(form) { var certPath = form.querySelector("#txtCertificatePath").value || null; var httpsMode = form.querySelector("#selectHttpsMode").value; - return "enabled" !== httpsMode && "required" !== httpsMode || certPath ? Promise.resolve() : new Promise(function(resolve, reject) { + + if ("enabled" !== httpsMode && "required" !== httpsMode || certPath) { + return Promise.resolve(); + } + + return new Promise(function (resolve, reject) { return alertText({ title: globalize.translate("TitleHostingSettings"), text: globalize.translate("HttpsRequiresCert") - }).then(reject, reject) - }) + }).then(reject, reject); + }); } function alertText(options) { - return new Promise(function(resolve, reject) { - require(["alert"], function(alert) { - alert(options).then(resolve, reject) - }) - }) + return new Promise(function (resolve, reject) { + require(["alert"], function (alert) { + alert(options).then(resolve, reject); + }); + }); } function confirmSelections(localAddress, enableUpnp, callback) { - localAddress || !enableUpnp ? alertText({ - title: globalize.translate("TitleHostingSettings"), - text: globalize.translate("SettingsWarning") - }).then(callback) : callback() + if (localAddress || !enableUpnp) { + alertText({ + title: globalize.translate("TitleHostingSettings"), + text: globalize.translate("SettingsWarning") + }).then(callback); + } else { + callback(); + } } - return function(view, params) { + return function (view, params) { function loadPage(page, config) { page.querySelector("#txtPortNumber").value = config.HttpServerPortNumber; page.querySelector("#txtPublicPort").value = config.PublicPort; @@ -108,7 +134,17 @@ define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"], page.querySelector("#selectExternalAddressFilterMode").value = config.IsRemoteIPFilterBlacklist ? "blacklist" : "whitelist"; page.querySelector("#chkRemoteAccess").checked = null == config.EnableRemoteAccess || config.EnableRemoteAccess; var selectHttpsMode = page.querySelector("#selectHttpsMode"); - config.IsBehindProxy ? selectHttpsMode.value = "proxy" : config.RequireHttps ? selectHttpsMode.value = "required" : config.EnableHttps ? selectHttpsMode.value = "enabled" : selectHttpsMode.value = "disabled"; + + if (config.IsBehindProxy) { + selectHttpsMode.value = "proxy"; + } else if (config.RequireHttps) { + selectHttpsMode.value = "required"; + } else if (config.EnableHttps) { + selectHttpsMode.value = "enabled"; + } else { + selectHttpsMode.value = "disabled"; + } + page.querySelector("#txtHttpsPort").value = config.HttpsPortNumber; page.querySelector("#txtBaseUrl").value = config.BaseUrl || ""; var txtCertificatePath = page.querySelector("#txtCertificatePath"); @@ -119,27 +155,50 @@ define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"], loading.hide(); } - view.querySelector("#chkRemoteAccess").addEventListener("change", function() { - this.checked ? (view.querySelector(".fldExternalAddressFilter").classList.remove("hide"), view.querySelector(".fldExternalAddressFilterMode").classList.remove("hide"), view.querySelector(".fldPublicPort").classList.remove("hide"), view.querySelector(".fldPublicHttpsPort").classList.remove("hide"), view.querySelector(".fldCertificatePath").classList.remove("hide"), view.querySelector(".fldCertPassword").classList.remove("hide"), view.querySelector(".fldHttpsMode").classList.remove("hide"), view.querySelector(".fldEnableUpnp").classList.remove("hide")) : (view.querySelector(".fldExternalAddressFilter").classList.add("hide"), view.querySelector(".fldExternalAddressFilterMode").classList.add("hide"), view.querySelector(".fldPublicPort").classList.add("hide"), view.querySelector(".fldPublicHttpsPort").classList.add("hide"), view.querySelector(".fldCertificatePath").classList.add("hide"), view.querySelector(".fldCertPassword").classList.add("hide"), view.querySelector(".fldHttpsMode").classList.add("hide"), view.querySelector(".fldEnableUpnp").classList.add("hide")) - }), view.querySelector("#btnSelectCertPath").addEventListener("click", function() { - require(["directorybrowser"], function(directoryBrowser) { - var picker = new directoryBrowser; + view.querySelector("#chkRemoteAccess").addEventListener("change", function () { + if (this.checked) { + view.querySelector(".fldExternalAddressFilter").classList.remove("hide"); + view.querySelector(".fldExternalAddressFilterMode").classList.remove("hide"); + view.querySelector(".fldPublicPort").classList.remove("hide"); + view.querySelector(".fldPublicHttpsPort").classList.remove("hide"); + view.querySelector(".fldCertificatePath").classList.remove("hide"); + view.querySelector(".fldCertPassword").classList.remove("hide"); + view.querySelector(".fldHttpsMode").classList.remove("hide"); + view.querySelector(".fldEnableUpnp").classList.remove("hide"); + } else { + view.querySelector(".fldExternalAddressFilter").classList.add("hide"); + view.querySelector(".fldExternalAddressFilterMode").classList.add("hide"); + view.querySelector(".fldPublicPort").classList.add("hide"); + view.querySelector(".fldPublicHttpsPort").classList.add("hide"); + view.querySelector(".fldCertificatePath").classList.add("hide"); + view.querySelector(".fldCertPassword").classList.add("hide"); + view.querySelector(".fldHttpsMode").classList.add("hide"); + view.querySelector(".fldEnableUpnp").classList.add("hide"); + } + }); + view.querySelector("#btnSelectCertPath").addEventListener("click", function () { + require(["directorybrowser"], function (directoryBrowser) { + var picker = new directoryBrowser(); picker.show({ - includeFiles: !0, - includeDirectories: !0, - callback: function(path) { - path && (view.querySelector("#txtCertificatePath").value = path), picker.close() + includeFiles: true, + includeDirectories: true, + callback: function (path) { + if (path) { + view.querySelector("#txtCertificatePath").value = path; + } + + picker.close(); }, header: globalize.translate("HeaderSelectCertificatePath") - }) - }) + }); + }); }); - - view.querySelector(".dashboardHostingForm").addEventListener("submit", onSubmit), view.addEventListener("viewshow", function(e) { + view.querySelector(".dashboardHostingForm").addEventListener("submit", onSubmit); + view.addEventListener("viewshow", function (e) { loading.show(); - ApiClient.getServerConfiguration().then(function(config) { + ApiClient.getServerConfiguration().then(function (config) { loadPage(view, config); }); }); - } + }; }); From f05fd603719c55df283fc46f96c9abb3b557a471 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Wed, 22 Jan 2020 03:31:15 +0300 Subject: [PATCH 014/105] librarymenu.js --- src/scripts/librarymenu.js | 64 ++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js index dcf47b5b3c..1db13b07ee 100644 --- a/src/scripts/librarymenu.js +++ b/src/scripts/librarymenu.js @@ -1,6 +1,38 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", "viewManager", "libraryBrowser", "appRouter", "apphost", "playbackManager", "browser", "globalize", "scripts/imagehelper", "paper-icon-button-light", "material-icons", "scrollStyles", "flexStyles"], function (dom, layoutManager, inputManager, connectionManager, events, viewManager, libraryBrowser, appRouter, appHost, playbackManager, browser, globalize, imageHelper) { "use strict"; + function renderHeader() { + var html = ""; + html += '
'; + html += '
'; + html += '"; + html += ''; + html += ''; + html += '

'; + html += "
"; + html += '
'; + html += ''; + html += ''; + html += ''; + html += ''; + html += "
"; + html += "
"; + html += '
'; + html += "
"; + + skinHeader.classList.add("skinHeader-withBackground"); + skinHeader.classList.add("skinHeader-blurred"); + skinHeader.innerHTML = html; + + headerHomeButton = skinHeader.querySelector(".headerHomeButton"); + headerUserButton = skinHeader.querySelector(".headerUserButton"); + headerCastButton = skinHeader.querySelector(".headerCastButton"); + headerSearchButton = skinHeader.querySelector(".headerSearchButton"); + + lazyLoadViewMenuBarImages(); + bindMenuEvents(); + } + function getCurrentApiClient() { if (currentUser && currentUser.localUser) { return connectionManager.getApiClient(currentUser.localUser.ServerId); @@ -838,37 +870,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " updateLibraryNavLinks(page); }); - (function () { - var html = ""; - html += '
'; - html += '
'; - html += '"; - html += ''; - html += ''; - html += '

'; - html += "
"; - html += '
'; - html += ''; - html += ''; - html += ''; - html += ''; - html += "
"; - html += "
"; - html += '
'; - html += "
"; - - skinHeader.classList.add("skinHeader-withBackground"); - skinHeader.classList.add("skinHeader-blurred"); - skinHeader.innerHTML = html; - - headerHomeButton = skinHeader.querySelector(".headerHomeButton"); - headerUserButton = skinHeader.querySelector(".headerUserButton"); - headerCastButton = skinHeader.querySelector(".headerCastButton"); - headerSearchButton = skinHeader.querySelector(".headerSearchButton"); - - lazyLoadViewMenuBarImages(); - bindMenuEvents(); - })(); + renderHeader(); events.on(connectionManager, "localusersignedin", function (e, user) { currentDrawerType = null; From e5e2c387d77e7a5a44885f01e74d26c8e7431c7a Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Wed, 22 Jan 2020 03:31:43 +0300 Subject: [PATCH 015/105] navdrawer.js --- src/components/navdrawer/navdrawer.js | 312 +++++++++++++++++++------- 1 file changed, 229 insertions(+), 83 deletions(-) diff --git a/src/components/navdrawer/navdrawer.js b/src/components/navdrawer/navdrawer.js index 69adbd1f5a..dc222176ca 100644 --- a/src/components/navdrawer/navdrawer.js +++ b/src/components/navdrawer/navdrawer.js @@ -1,6 +1,7 @@ -define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser, dom) { +define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser, dom) { "use strict"; - return function(options) { + + return function (options) { function getTouches(e) { return e.changedTouches || e.targetTouches || e.touches; } @@ -9,14 +10,13 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser, options.target.classList.remove("transition"); var touches = getTouches(e); var touch = touches[0] || {}; - menuTouchStartX = touch.clientX; menuTouchStartY = touch.clientY; - menuTouchStartTime = (new Date).getTime(); + menuTouchStartTime = new Date().getTime(); } function setVelocity(deltaX) { - var time = (new Date).getTime() - (menuTouchStartTime || 0); + var time = new Date().getTime() - (menuTouchStartTime || 0); velocity = Math.abs(deltaX) / time; } @@ -28,21 +28,38 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser, var endY = touch.clientY || 0; var deltaX = endX - (menuTouchStartX || 0); var deltaY = endY - (menuTouchStartY || 0); - setVelocity(deltaX), isOpen && 1 !== dragMode && deltaX > 0 && (dragMode = 2), 0 === dragMode && (!isOpen || Math.abs(deltaX) >= 10) && Math.abs(deltaY) < 5 ? (dragMode = 1, scrollContainer.addEventListener("scroll", disableEvent), self.showMask()) : 0 === dragMode && Math.abs(deltaY) >= 5 && (dragMode = 2), 1 === dragMode && (newPos = currentPos + deltaX, self.changeMenuPos()) + setVelocity(deltaX); + + if (isOpen && 1 !== dragMode && deltaX > 0) { + dragMode = 2; + } + + if (0 === dragMode && (!isOpen || Math.abs(deltaX) >= 10) && Math.abs(deltaY) < 5) { + dragMode = 1; + scrollContainer.addEventListener("scroll", disableEvent); + self.showMask(); + } else { + if (0 === dragMode && Math.abs(deltaY) >= 5) { + dragMode = 2; + } + } + + if (1 === dragMode) { + newPos = currentPos + deltaX; + self.changeMenuPos(); + } } function onMenuTouchEnd(e) { options.target.classList.add("transition"); scrollContainer.removeEventListener("scroll", disableEvent); dragMode = 0; - var touches = getTouches(e); var touch = touches[0] || {}; var endX = touch.clientX || 0; var endY = touch.clientY || 0; var deltaX = endX - (menuTouchStartX || 0); var deltaY = endY - (menuTouchStartY || 0); - currentPos = deltaX; self.checkMenuState(deltaX, deltaY); } @@ -53,10 +70,12 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser, } else { if (((getTouches(e)[0] || {}).clientX || 0) <= options.handleSize) { isPeeking = true; + if (e.type === "touchstart") { dom.removeEventListener(edgeContainer, "touchmove", onEdgeTouchMove, {}); dom.addEventListener(edgeContainer, "touchmove", onEdgeTouchMove, {}); } + onMenuTouchStart(e); } } @@ -65,38 +84,49 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser, function onEdgeTouchMove(e) { e.preventDefault(); e.stopPropagation(); - onEdgeTouchStart(e); } function onEdgeTouchEnd(e) { - isPeeking && (isPeeking = !1, dom.removeEventListener(edgeContainer, "touchmove", onEdgeTouchMove, {}), onMenuTouchEnd(e)) + if (isPeeking) { + isPeeking = false; + dom.removeEventListener(edgeContainer, "touchmove", onEdgeTouchMove, {}); + onMenuTouchEnd(e); + } } function disableEvent(e) { - e.preventDefault(), e.stopPropagation() + e.preventDefault(); + e.stopPropagation(); } function onBackgroundTouchStart(e) { var touches = getTouches(e); var touch = touches[0] || {}; - backgroundTouchStartX = touch.clientX, backgroundTouchStartTime = (new Date).getTime() + backgroundTouchStartX = touch.clientX; + backgroundTouchStartTime = new Date().getTime(); } function onBackgroundTouchMove(e) { var touches = getTouches(e); var touch = touches[0] || {}; var endX = touch.clientX || 0; + if (endX <= options.width && self.isVisible) { countStart++; var deltaX = endX - (backgroundTouchStartX || 0); + if (1 === countStart && (startPoint = deltaX), deltaX < 0 && 2 !== dragMode) { - dragMode = 1, newPos = deltaX - startPoint + options.width, self.changeMenuPos(); - var time = (new Date).getTime() - (backgroundTouchStartTime || 0); - velocity = Math.abs(deltaX) / time + dragMode = 1; + newPos = deltaX - startPoint + options.width; + self.changeMenuPos(); + var time = new Date().getTime() - (backgroundTouchStartTime || 0); + velocity = Math.abs(deltaX) / time; } } - e.preventDefault(), e.stopPropagation() + + e.preventDefault(); + e.stopPropagation(); } function onBackgroundTouchEnd(e) { @@ -104,13 +134,18 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser, var touch = touches[0] || {}; var endX = touch.clientX || 0; var deltaX = endX - (backgroundTouchStartX || 0); - self.checkMenuState(deltaX), countStart = 0 + self.checkMenuState(deltaX); + countStart = 0; } function onMaskTransitionEnd() { var classList = mask.classList; - classList.contains("backdrop") || classList.add("hide") + + if (!classList.contains("backdrop")) { + classList.add("hide"); + } } + var self; var defaults; var mask; @@ -123,83 +158,194 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser, var dragMode = 0; var scrollContainer = options.target.querySelector(".mainDrawer-scrollContainer"); scrollContainer.classList.add("scrollY"); - var TouchMenuLA = function() { - self = this, defaults = { + + var TouchMenuLA = function () { + self = this; + defaults = { width: 260, handleSize: 10, - disableMask: !1, + disableMask: false, maxMaskOpacity: 0.5 - }, this.isVisible = !1, this.initialize() + }; + this.isVisible = false; + this.initialize(); }; - TouchMenuLA.prototype.initElements = function() { - options.target.classList.add("touch-menu-la"), options.target.style.width = options.width + "px", options.target.style.left = -options.width + "px", options.disableMask || (mask = document.createElement("div"), mask.className = "tmla-mask hide", document.body.appendChild(mask), dom.addEventListener(mask, dom.whichTransitionEvent(), onMaskTransitionEnd, { - passive: !0 - })) + + TouchMenuLA.prototype.initElements = function () { + options.target.classList.add("touch-menu-la"); + options.target.style.width = options.width + "px"; + options.target.style.left = -options.width + "px"; + + if (!options.disableMask) { + mask = document.createElement("div"); + mask.className = "tmla-mask hide"; + document.body.appendChild(mask); + dom.addEventListener(mask, dom.whichTransitionEvent(), onMaskTransitionEnd, { + passive: true + }); + } }; + var menuTouchStartX; var menuTouchStartY; var menuTouchStartTime; var edgeContainer = document.querySelector(".mainDrawerHandle"); var isPeeking = false; - TouchMenuLA.prototype.animateToPosition = function(pos) { - requestAnimationFrame(function() { - options.target.style.transform = pos ? "translateX(" + pos + "px)" : "none" - }) - }, TouchMenuLA.prototype.changeMenuPos = function() { - newPos <= options.width && this.animateToPosition(newPos) - }, TouchMenuLA.prototype.clickMaskClose = function() { - mask.addEventListener("click", function() { - self.close() - }) - }, TouchMenuLA.prototype.checkMenuState = function(deltaX, deltaY) { - velocity >= 0.4 ? deltaX >= 0 || Math.abs(deltaY || 0) >= 70 ? self.open() : self.close() : newPos >= 100 ? self.open() : newPos && self.close() - }, TouchMenuLA.prototype.open = function() { - this.animateToPosition(options.width), currentPos = options.width, this.isVisible = !0, options.target.classList.add("drawer-open"), self.showMask(), self.invoke(options.onChange) - }, TouchMenuLA.prototype.close = function() { - this.animateToPosition(0), currentPos = 0, self.isVisible = !1, options.target.classList.remove("drawer-open"), self.hideMask(), self.invoke(options.onChange) - }, TouchMenuLA.prototype.toggle = function() { - self.isVisible ? self.close() : self.open() + + TouchMenuLA.prototype.animateToPosition = function (pos) { + requestAnimationFrame(function () { + options.target.style.transform = pos ? "translateX(" + pos + "px)" : "none"; + }); }; + + TouchMenuLA.prototype.changeMenuPos = function () { + if (newPos <= options.width) { + this.animateToPosition(newPos); + } + }; + + TouchMenuLA.prototype.clickMaskClose = function () { + mask.addEventListener("click", function () { + self.close(); + }); + }; + + TouchMenuLA.prototype.checkMenuState = function (deltaX, deltaY) { + if (velocity >= 0.4) { + if (deltaX >= 0 || Math.abs(deltaY || 0) >= 70) { + self.open(); + } else { + self.close(); + } + } else { + if (newPos >= 100) { + self.open(); + } else { + if (newPos) { + self.close(); + } + } + } + }; + + TouchMenuLA.prototype.open = function () { + this.animateToPosition(options.width); + currentPos = options.width; + this.isVisible = true; + options.target.classList.add("drawer-open"); + self.showMask(); + self.invoke(options.onChange); + }; + + TouchMenuLA.prototype.close = function () { + this.animateToPosition(0); + currentPos = 0; + self.isVisible = false; + options.target.classList.remove("drawer-open"); + self.hideMask(); + self.invoke(options.onChange); + }; + + TouchMenuLA.prototype.toggle = function () { + if (self.isVisible) { + self.close(); + } else { + self.open(); + } + }; + var backgroundTouchStartX; var backgroundTouchStartTime; - TouchMenuLA.prototype.showMask = function() { - mask.classList.remove("hide"), mask.offsetWidth, mask.classList.add("backdrop") - }, TouchMenuLA.prototype.hideMask = function() { - mask.classList.remove("backdrop") - }, TouchMenuLA.prototype.invoke = function(fn) { - fn && fn.apply(self) + + TouchMenuLA.prototype.showMask = function () { + mask.classList.remove("hide"); + mask.offsetWidth; + mask.classList.add("backdrop"); }; + + TouchMenuLA.prototype.hideMask = function () { + mask.classList.remove("backdrop"); + }; + + TouchMenuLA.prototype.invoke = function (fn) { + if (fn) { + fn.apply(self); + } + }; + var _edgeSwipeEnabled; - return TouchMenuLA.prototype.setEdgeSwipeEnabled = function(enabled) { - options.disableEdgeSwipe || browser.touch && (enabled ? _edgeSwipeEnabled || (_edgeSwipeEnabled = !0, dom.addEventListener(edgeContainer, "touchstart", onEdgeTouchStart, { - passive: !0 - }), dom.addEventListener(edgeContainer, "touchend", onEdgeTouchEnd, { - passive: !0 - }), dom.addEventListener(edgeContainer, "touchcancel", onEdgeTouchEnd, { - passive: !0 - })) : _edgeSwipeEnabled && (_edgeSwipeEnabled = !1, dom.removeEventListener(edgeContainer, "touchstart", onEdgeTouchStart, { - passive: !0 - }), dom.removeEventListener(edgeContainer, "touchend", onEdgeTouchEnd, { - passive: !0 - }), dom.removeEventListener(edgeContainer, "touchcancel", onEdgeTouchEnd, { - passive: !0 - }))) - }, TouchMenuLA.prototype.initialize = function() { - options = Object.assign(defaults, options || {}), browser.edge && (options.disableEdgeSwipe = !0), self.initElements(), browser.touch && (dom.addEventListener(options.target, "touchstart", onMenuTouchStart, { - passive: !0 - }), dom.addEventListener(options.target, "touchmove", onMenuTouchMove, { - passive: !0 - }), dom.addEventListener(options.target, "touchend", onMenuTouchEnd, { - passive: !0 - }), dom.addEventListener(options.target, "touchcancel", onMenuTouchEnd, { - passive: !0 - }), dom.addEventListener(mask, "touchstart", onBackgroundTouchStart, { - passive: !0 - }), dom.addEventListener(mask, "touchmove", onBackgroundTouchMove, {}), dom.addEventListener(mask, "touchend", onBackgroundTouchEnd, { - passive: !0 - }), dom.addEventListener(mask, "touchcancel", onBackgroundTouchEnd, { - passive: !0 - })), self.clickMaskClose() - }, new TouchMenuLA - } -}); \ No newline at end of file + + TouchMenuLA.prototype.setEdgeSwipeEnabled = function (enabled) { + if (!options.disableEdgeSwipe) { + if (browser.touch) { + if (enabled) { + if (!_edgeSwipeEnabled) { + _edgeSwipeEnabled = true; + dom.addEventListener(edgeContainer, "touchstart", onEdgeTouchStart, { + passive: true + }); + dom.addEventListener(edgeContainer, "touchend", onEdgeTouchEnd, { + passive: true + }); + dom.addEventListener(edgeContainer, "touchcancel", onEdgeTouchEnd, { + passive: true + }); + } + } else { + if (_edgeSwipeEnabled) { + _edgeSwipeEnabled = false; + dom.removeEventListener(edgeContainer, "touchstart", onEdgeTouchStart, { + passive: true + }); + dom.removeEventListener(edgeContainer, "touchend", onEdgeTouchEnd, { + passive: true + }); + dom.removeEventListener(edgeContainer, "touchcancel", onEdgeTouchEnd, { + passive: true + }); + } + } + } + } + }; + + TouchMenuLA.prototype.initialize = function () { + options = Object.assign(defaults, options || {}); + + if (browser.edge) { + options.disableEdgeSwipe = true; + } + + self.initElements(); + + if (browser.touch) { + dom.addEventListener(options.target, "touchstart", onMenuTouchStart, { + passive: true + }); + dom.addEventListener(options.target, "touchmove", onMenuTouchMove, { + passive: true + }); + dom.addEventListener(options.target, "touchend", onMenuTouchEnd, { + passive: true + }); + dom.addEventListener(options.target, "touchcancel", onMenuTouchEnd, { + passive: true + }); + dom.addEventListener(mask, "touchstart", onBackgroundTouchStart, { + passive: true + }); + dom.addEventListener(mask, "touchmove", onBackgroundTouchMove, {}); + dom.addEventListener(mask, "touchend", onBackgroundTouchEnd, { + passive: true + }); + dom.addEventListener(mask, "touchcancel", onBackgroundTouchEnd, { + passive: true + }); + } + + self.clickMaskClose(); + }; + + return new TouchMenuLA(); + }; +}); From a28596dc6f25fe9505c5937d5e975d900fe398c0 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Wed, 22 Jan 2020 03:46:35 +0300 Subject: [PATCH 016/105] manual Deminify navdrawer --- src/components/navdrawer/navdrawer.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/components/navdrawer/navdrawer.js b/src/components/navdrawer/navdrawer.js index dc222176ca..33e976fe09 100644 --- a/src/components/navdrawer/navdrawer.js +++ b/src/components/navdrawer/navdrawer.js @@ -38,10 +38,8 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser, dragMode = 1; scrollContainer.addEventListener("scroll", disableEvent); self.showMask(); - } else { - if (0 === dragMode && Math.abs(deltaY) >= 5) { - dragMode = 2; - } + } else if (0 === dragMode && Math.abs(deltaY) >= 5) { + dragMode = 2; } if (1 === dragMode) { From 0c9ae31417c68f4fecab54a73939b4582cd8f6be Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Wed, 22 Jan 2020 18:31:01 +0300 Subject: [PATCH 017/105] apply suggustion --- src/components/navdrawer/navdrawer.js | 18 ++++++++++++------ src/controllers/dashboard/networking.js | 3 ++- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/components/navdrawer/navdrawer.js b/src/components/navdrawer/navdrawer.js index 33e976fe09..fdd81154af 100644 --- a/src/components/navdrawer/navdrawer.js +++ b/src/components/navdrawer/navdrawer.js @@ -114,12 +114,17 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser, countStart++; var deltaX = endX - (backgroundTouchStartX || 0); - if (1 === countStart && (startPoint = deltaX), deltaX < 0 && 2 !== dragMode) { - dragMode = 1; - newPos = deltaX - startPoint + options.width; - self.changeMenuPos(); - var time = new Date().getTime() - (backgroundTouchStartTime || 0); - velocity = Math.abs(deltaX) / time; + if (countStart == 1) { + startPoint = deltaX; + } + if (deltaX < 0) { + if (dragMode !== 2) { + dragMode = 1; + newPos = deltaX - startPoint + options.width; + self.changeMenuPos(); + var time = new Date().getTime() - (backgroundTouchStartTime || 0); + velocity = Math.abs(deltaX) / time; + } } } @@ -262,6 +267,7 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser, }; TouchMenuLA.prototype.hideMask = function () { + mask.classList.add("hide"); mask.classList.remove("backdrop"); }; diff --git a/src/controllers/dashboard/networking.js b/src/controllers/dashboard/networking.js index 97383dfd48..b9f990d629 100644 --- a/src/controllers/dashboard/networking.js +++ b/src/controllers/dashboard/networking.js @@ -9,7 +9,8 @@ define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"], var validationResult = getValidationAlert(form); if (validationResult) { - return void alertText(validationResult); + alertText(validationResult); + return; } validateHttps(form).then(function () { From 5a6eb5eeec2aa2508fd6549390ad6ddae71f0c12 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Wed, 22 Jan 2020 19:06:35 +0300 Subject: [PATCH 018/105] apply suggeustion --- src/controllers/movies/moviesrecommended.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/movies/moviesrecommended.js b/src/controllers/movies/moviesrecommended.js index cdcc681aa1..31ded5c594 100644 --- a/src/controllers/movies/moviesrecommended.js +++ b/src/controllers/movies/moviesrecommended.js @@ -133,7 +133,7 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu" if (enableScrollX()) { html += '
'; } - + html += "
"; html += "
"; return html; } From f647a1b4c3c71dc7a82d0940afd2a03e9b96ee6f Mon Sep 17 00:00:00 2001 From: Nyanmisaka Date: Fri, 24 Jan 2020 01:04:07 +0800 Subject: [PATCH 019/105] Add and fix some canPlayType --- src/scripts/browserdeviceprofile.js | 167 +++++++++++++++++----------- 1 file changed, 103 insertions(+), 64 deletions(-) diff --git a/src/scripts/browserdeviceprofile.js b/src/scripts/browserdeviceprofile.js index 18b85a6dc0..0f81332502 100644 --- a/src/scripts/browserdeviceprofile.js +++ b/src/scripts/browserdeviceprofile.js @@ -5,8 +5,8 @@ define(['browser'], function (browser) { return !!(videoTestElement.canPlayType && videoTestElement.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"').replace(/no/, '')); } - function canPlayH265(videoTestElement, options) { - if (browser.tizen || browser.orsay || browser.xboxOne || browser.web0s || options.supportsHevc) { + function canPlayH265(videoTestElement, protocol) { + if (browser.tizen || browser.orsay || browser.xboxOne || browser.web0s) { return true; } @@ -18,12 +18,27 @@ define(['browser'], function (browser) { } } - // Unfortunately haven't yet found a canPlayType for proper detection - if (browser.iOS && (browser.iOSVersion || 0) >= 11) { - return true; + if (browser.ps4) { + return false; } - return !!(videoTestElement.canPlayType && videoTestElement.canPlayType('video/hevc; codecs="hevc, aac"').replace(/no/, '')); + if (protocol === 'hls') { + + //safari seems to be lying about this + if (browser.iOS || browser.safari) { + return false; + } + + return !!videoTestElement.canPlayType && + (videoTestElement.canPlayType('video/mp2t; codecs="hvc1.1.L0.0"').replace(/no/, '') || + videoTestElement.canPlayType('video/mp2t; codecs="hev1.1.L0.0"').replace(/no/, '') || + videoTestElement.canPlayType('video/mp2t; codecs="hev1.1.2.L150"').replace(/no/, '')); + } + + return !!videoTestElement.canPlayType && + (videoTestElement.canPlayType('video/mp4; codecs="hvc1.1.L0.0"').replace(/no/, '') || + videoTestElement.canPlayType('video/mp4; codecs="hev1.1.L0.0"').replace(/no/, '') || + videoTestElement.canPlayType('video/mp4; codecs="hev1.1.2.L150"').replace(/no/, '')); } var _supportsTextTracks; @@ -41,7 +56,7 @@ define(['browser'], function (browser) { } var _canPlayHls; - function canPlayHls(src) { + function canPlayHls() { if (_canPlayHls == null) { _canPlayHls = canPlayNativeHls() || canPlayHlsWithMSE(); } @@ -64,12 +79,8 @@ define(['browser'], function (browser) { } function canPlayHlsWithMSE() { - if (window.MediaSource != null) { - // text tracks don’t work with this in firefox - return true; - } - - return false; + // text tracks don’t work with this in firefox + return null != window.MediaSource; } function supportsAc3(videoTestElement) { @@ -77,11 +88,20 @@ define(['browser'], function (browser) { return true; } - if (browser.osx || browser.iOS) { - return false; + return videoTestElement.canPlayType('audio/mp4; codecs="ac-3"').replace(/no/, ''); + } + + function supportsAc3InHls(videoTestElement) { + if (browser.tizen || browser.orsay || browser.web0s) { + return true; } - return videoTestElement.canPlayType('audio/mp4; codecs="ac-3"').replace(/no/, ''); + if (!!videoTestElement.canPlayType) { + return videoTestElement.canPlayType('application/x-mpegurl; codecs="avc1.42E01E, ac-3"').replace(/no/, '') || + videoTestElement.canPlayType('application/vnd.apple.mpegURL; codecs="avc1.42E01E, ac-3"').replace(/no/, ''); + } + + return false; } function supportsEac3(videoTestElement) { @@ -96,28 +116,30 @@ define(['browser'], function (browser) { var typeString; if (format === 'flac') { - if (browser.tizen || browser.orsay || browser.web0s) { - return true; - } - if (browser.edgeUwp) { + if (browser.tizen || browser.orsay || browser.web0s || browser.edgeUwp) { return true; } } else if (format === 'wma') { - if (browser.tizen || browser.orsay) { + if (browser.tizen || browser.orsay || browser.edgeUwp) { return true; } - if (browser.edgeUwp) { + } else if (format === 'asf') { + if (browser.tizen || browser.edgeUwp) { return true; } } else if (format === 'opus') { - typeString = 'audio/ogg; codecs="opus"'; - if (document.createElement('audio').canPlayType(typeString).replace(/no/, '')) { + if (!browser.web0s) { + typeString = 'audio/ogg; codecs="opus"'; + return !!document.createElement('audio').canPlayType(typeString).replace(/no/, ''); + } + + return false; + } else if (format === 'alac') { + if (browser.iOS || browser.osx) { return true; } - - return false; } else if (format === 'mp2') { - // For now + //For now return false; } @@ -129,11 +151,7 @@ define(['browser'], function (browser) { typeString = 'audio/' + format; } - if (document.createElement('audio').canPlayType(typeString).replace(/no/, '')) { - return true; - } - - return false; + return !!document.createElement('audio').canPlayType(typeString).replace(/no/, ''); } function testCanPlayMkv(videoTestElement) { @@ -146,8 +164,6 @@ define(['browser'], function (browser) { return true; } - var userAgent = navigator.userAgent.toLowerCase(); - // Unfortunately there's no real way to detect mkv support if (browser.chrome) { // Not supported on opera tv @@ -155,6 +171,8 @@ define(['browser'], function (browser) { return false; } + var userAgent = navigator.userAgent.toLowerCase(); + // Filter out browsers based on chromium that don't support mkv if (userAgent.indexOf('vivaldi') !== -1 || userAgent.indexOf('opera') !== -1) { return false; @@ -163,10 +181,6 @@ define(['browser'], function (browser) { return true; } - if (browser.edgeUwp) { - return true; - } - return false; } @@ -203,15 +217,15 @@ define(['browser'], function (browser) { switch (container) { case 'asf': - supported = browser.tizen || browser.orsay || browser.edgeUwp; + supported = browser.tizen || browser.orsay || browser.web0s || browser.edgeUwp; videoAudioCodecs = []; break; case 'avi': - supported = browser.tizen || browser.orsay || browser.edgeUwp; + supported = browser.tizen || browser.orsay || browser.web0s || browser.edgeUwp; break; case 'mpg': case 'mpeg': - supported = browser.edgeUwp || browser.tizen || browser.orsay; + supported = browser.tizen || browser.orsay || browser.web0s || browser.edgeUwp; break; case 'flv': supported = browser.tizen || browser.orsay; @@ -227,7 +241,7 @@ define(['browser'], function (browser) { supported = browser.tizen || browser.orsay; break; case 'mov': - supported = browser.tizen || browser.orsay || browser.chrome || browser.edgeUwp; + supported = browser.tizen || browser.orsay || browser.web0s || browser.edgeUwp; videoCodecs.push('h264'); break; case 'm2ts': @@ -247,7 +261,7 @@ define(['browser'], function (browser) { case 'ts': supported = testCanPlayTs(); videoCodecs.push('h264'); - if (canPlayH265(videoTestElement, options)) { + if (canPlayH265(videoTestElement)) { videoCodecs.push('h265'); videoCodecs.push('hevc'); } @@ -263,16 +277,12 @@ define(['browser'], function (browser) { break; } - if (!supported) { - return null; - } - - return { + return supported ? { Container: profileContainer, Type: 'Video', VideoCodec: videoCodecs.join(','), AudioCodec: videoAudioCodecs.join(',') - }; + } : null; } function getMaxBitrate() { @@ -373,8 +383,7 @@ define(['browser'], function (browser) { // This works in edge desktop, but not mobile // TODO: Retest this on mobile - var supportsAc3InHls = (!browser.edge || !browser.touch || browser.edgeUwp); - if (supportsAc3InHls) { + if (supportsAc3InHls(videoTestElement)) { hlsVideoAudioCodecs.push('ac3'); if (eAc3) { hlsVideoAudioCodecs.push('eac3'); @@ -475,16 +484,26 @@ define(['browser'], function (browser) { mp4VideoCodecs.push('h264'); hlsVideoCodecs.push('h264'); } - if (canPlayH265(videoTestElement, options)) { + + if (canPlayH265(videoTestElement)) { mp4VideoCodecs.push('h265'); mp4VideoCodecs.push('hevc'); - - if (browser.tizen || browser.web0s) { - hlsVideoCodecs.push('h265'); - hlsVideoCodecs.push('hevc'); - } } + if (canPlayH265(videoTestElement, 'hls')) { + hlsVideoCodecs.push('h265'); + hlsVideoCodecs.push('hevc'); + } + + if (canPlayH265(videoTestElement) && (browser.tizen || browser.web0s)) { + if (hlsVideoCodecs.indexOf('h265') === -1) { + hlsVideoCodecs.push('h265'); + } + if (hlsVideoCodecs.indexOf('hevc') === -1) { + hlsVideoCodecs.push('hevc'); + } + } + if (supportsMpeg2Video()) { mp4VideoCodecs.push('mpeg2video'); } @@ -557,10 +576,10 @@ define(['browser'], function (browser) { }); } - // aac also appears in the m4a container + // aac also appears in the m4a and m4b container if (audioFormat === 'aac' || audioFormat === 'alac') { profile.DirectPlayProfiles.push({ - Container: 'm4a', + Container: 'm4a,m4b', AudioCodec: audioFormat, Type: 'Audio' }); @@ -652,7 +671,7 @@ define(['browser'], function (browser) { }); } - if (canPlayHls() && options.enableHls !== false) { + if (canPlayHls() && hlsVideoAudioCodecs.length && options.enableHls !== false) { profile.TranscodingProfiles.push({ Container: 'ts', Type: 'Video', @@ -750,8 +769,26 @@ define(['browser'], function (browser) { var maxH264Level = browser.chromecast ? 42 : 51; var h264Profiles = 'high|main|baseline|constrained baseline'; - if (maxH264Level >= 51 && browser.chrome && !browser.osx) { - h264Profiles += '|high 10'; + if (browser.tizen || browser.orsay || browser.web0s || + videoTestElement.canPlayType('video/mp4; codecs="avc1.640833"').replace(/no/, '')) { + maxH264Level = 51; + } + + var userAgent = navigator.userAgent.toLowerCase(); + if (browser.chromecast) { + var isChromecastUltra = userAgent.indexOf('aarch64') !== -1; + if (isChromecastUltra) { + maxH264Level = 51; + } + } + + if (browser.tizen || browser.orsay || + videoTestElement.canPlayType('video/mp4; codecs="avc1.6e0033"').replace(/no/, '')) { + + // These tests are passing in safari, but playback is failing + if (!browser.safari && !browser.iOS && !browser.web0s) { + h264Profiles += '|high 10'; + } } profile.CodecProfiles.push({ @@ -767,12 +804,14 @@ define(['browser'], function (browser) { { Condition: 'EqualsAny', Property: 'VideoProfile', - Value: h264Profiles + Value: h264Profiles, + IsRequired: false }, { Condition: 'LessThanEqual', Property: 'VideoLevel', - Value: maxH264Level.toString() + Value: maxH264Level.toString(), + IsRequired: false } ] }); From 2c4cc578ca538ac6323a49099379390d77559887 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Thu, 23 Jan 2020 20:30:35 +0300 Subject: [PATCH 020/105] apply suggeustion --- src/components/navdrawer/navdrawer.js | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/components/navdrawer/navdrawer.js b/src/components/navdrawer/navdrawer.js index fdd81154af..9c15fbc184 100644 --- a/src/components/navdrawer/navdrawer.js +++ b/src/components/navdrawer/navdrawer.js @@ -117,14 +117,12 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser, if (countStart == 1) { startPoint = deltaX; } - if (deltaX < 0) { - if (dragMode !== 2) { - dragMode = 1; - newPos = deltaX - startPoint + options.width; - self.changeMenuPos(); - var time = new Date().getTime() - (backgroundTouchStartTime || 0); - velocity = Math.abs(deltaX) / time; - } + if (deltaX < 0 && dragMode !== 2) { + dragMode = 1; + newPos = deltaX - startPoint + options.width; + self.changeMenuPos(); + var time = new Date().getTime() - (backgroundTouchStartTime || 0); + velocity = Math.abs(deltaX) / time; } } From ed777cdea2b5c386921c280ed84d968d171717a4 Mon Sep 17 00:00:00 2001 From: dkanada Date: Fri, 24 Jan 2020 02:50:59 +0900 Subject: [PATCH 021/105] fix some missing resource issues --- src/components/remotecontrol/remotecontrol.css | 2 +- src/controllers/playback/{nowplayingpage.js => nowplaying.js} | 0 src/themes/appletv/theme.css | 2 +- src/themes/blueradiance/theme.css | 2 +- src/themes/dark/theme.css | 2 +- src/themes/light/theme.css | 2 +- src/themes/purplehaze/theme.css | 2 +- src/themes/wmc/theme.css | 2 +- 8 files changed, 7 insertions(+), 7 deletions(-) rename src/controllers/playback/{nowplayingpage.js => nowplaying.js} (100%) diff --git a/src/components/remotecontrol/remotecontrol.css b/src/components/remotecontrol/remotecontrol.css index cbd2f1fa06..508c8d6745 100644 --- a/src/components/remotecontrol/remotecontrol.css +++ b/src/components/remotecontrol/remotecontrol.css @@ -203,7 +203,7 @@ .playlistIndexIndicatorImage { -webkit-background-size: initial initial !important; background-size: initial !important; - background-image: url(assets/img/equalizer.gif) !important; + background-image: url(../../assets/img/equalizer.gif) !important; } .hideVideoButtons .videoButton { diff --git a/src/controllers/playback/nowplayingpage.js b/src/controllers/playback/nowplaying.js similarity index 100% rename from src/controllers/playback/nowplayingpage.js rename to src/controllers/playback/nowplaying.js diff --git a/src/themes/appletv/theme.css b/src/themes/appletv/theme.css index 6e580ebea1..806482d5e9 100644 --- a/src/themes/appletv/theme.css +++ b/src/themes/appletv/theme.css @@ -35,7 +35,7 @@ html { } .pageTitleWithDefaultLogo { - background-image: url(assets/img/banner-dark.png) + background-image: url(../../assets/img/banner-dark.png) } html { diff --git a/src/themes/blueradiance/theme.css b/src/themes/blueradiance/theme.css index 0c13a696b4..5469076a4b 100644 --- a/src/themes/blueradiance/theme.css +++ b/src/themes/blueradiance/theme.css @@ -34,7 +34,7 @@ html { } .pageTitleWithDefaultLogo { - background-image: url(assets/img/banner-light.png) + background-image: url(../../assets/img/banner-light.png) } .dialog, diff --git a/src/themes/dark/theme.css b/src/themes/dark/theme.css index fee28f50f0..d32b47279c 100644 --- a/src/themes/dark/theme.css +++ b/src/themes/dark/theme.css @@ -26,7 +26,7 @@ html { } .pageTitleWithDefaultLogo { - background-image: url(assets/img/banner-light.png) + background-image: url(../../assets/img/banner-light.png) } .backgroundContainer, diff --git a/src/themes/light/theme.css b/src/themes/light/theme.css index 0d96abc531..0824134df2 100644 --- a/src/themes/light/theme.css +++ b/src/themes/light/theme.css @@ -39,7 +39,7 @@ html { } .pageTitleWithDefaultLogo { - background-image: url(assets/img/banner-light.png) + background-image: url(../../assets/img/banner-light.png) } .backgroundContainer, diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index c8d7aa465c..ebd290e940 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -34,7 +34,7 @@ html { } .pageTitleWithDefaultLogo { - background-image: url(assets/img/banner-light.png) + background-image: url(../../assets/img/banner-light.png) } .dialog, diff --git a/src/themes/wmc/theme.css b/src/themes/wmc/theme.css index 2901640809..5020414cb5 100644 --- a/src/themes/wmc/theme.css +++ b/src/themes/wmc/theme.css @@ -40,7 +40,7 @@ html { } .pageTitleWithDefaultLogo { - background-image: url(assets/img/banner-light.png) + background-image: url(../../assets/img/banner-light.png) } .backgroundContainer, From 6728f5b718e3519804ae95be5eca3a2fea21183d Mon Sep 17 00:00:00 2001 From: dkanada Date: Fri, 24 Jan 2020 02:57:29 +0900 Subject: [PATCH 022/105] remove useless autoplay script and add folder for settings --- src/components/apphost.js | 30 +++------ src/components/htmlvideoplayer/plugin.js | 8 --- src/components/layoutManager.js | 4 +- src/components/playback/autoplaydetect.js | 61 ------------------- src/components/usersettings/usersettings.js | 5 -- .../settings}/appSettings.js | 4 +- .../settings/userSettings.js} | 2 +- src/scripts/site.js | 19 ++++-- 8 files changed, 27 insertions(+), 106 deletions(-) delete mode 100644 src/components/playback/autoplaydetect.js delete mode 100644 src/components/usersettings/usersettings.js rename src/{components => scripts/settings}/appSettings.js (99%) rename src/{components/usersettings/usersettingsbuilder.js => scripts/settings/userSettings.js} (99%) diff --git a/src/components/apphost.js b/src/components/apphost.js index b1b1c30dc9..609b24a781 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -167,24 +167,24 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet if (browser.mobile) { return false; } - - var savedResult = appSettings.get(htmlMediaAutoplayAppStorageKey); - return "true" === savedResult || "false" !== savedResult && null; } - function cueSupported() { + function supportsCue() { try { var video = document.createElement("video"); var style = document.createElement("style"); + style.textContent = "video::cue {background: inherit}"; document.body.appendChild(style); document.body.appendChild(video); + var cue = window.getComputedStyle(video, "::cue").background; document.body.removeChild(style); document.body.removeChild(video); + return !!cue.length; } catch (err) { - console.log("Error detecting cue support:" + err); + console.log("error detecting cue support: " + err); return false; } } @@ -204,8 +204,6 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet } } - var htmlMediaAutoplayAppStorageKey = "supportshtmlmediaautoplay0"; - var supportedFeatures = function () { var features = []; @@ -280,7 +278,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet //features.push("multiserver"); features.push("screensaver"); - if (!browser.orsay && !browser.tizen && !browser.msie && (browser.firefox || browser.ps4 || browser.edge || cueSupported())) { + if (!browser.orsay && !browser.tizen && !browser.msie && (browser.firefox || browser.ps4 || browser.edge || supportsCue())) { features.push("subtitleappearancesettings"); } @@ -299,18 +297,6 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet return features; }(); - if (supportedFeatures.indexOf("htmlvideoautoplay") === -1 && supportsHtmlMediaAutoplay() !== false) { - require(["autoPlayDetect"], function (autoPlayDetect) { - autoPlayDetect.supportsHtmlMediaAutoplay().then(function () { - appSettings.set(htmlMediaAutoplayAppStorageKey, "true"); - supportedFeatures.push("htmlvideoautoplay"); - supportedFeatures.push("htmlaudioautoplay"); - }, function () { - appSettings.set(htmlMediaAutoplayAppStorageKey, "false"); - }); - }); - } - var deviceId; var deviceName; var appName = "Jellyfin Web"; @@ -395,7 +381,9 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet } } }; + var doc = self.document; + var isHidden = false; if (doc) { if (void 0 !== doc.visibilityState) { @@ -419,8 +407,6 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet } } - var isHidden = false; - if (doc) { doc.addEventListener(visibilityChange, function () { if (document[visibilityState]) { diff --git a/src/components/htmlvideoplayer/plugin.js b/src/components/htmlvideoplayer/plugin.js index a71b053a21..f47b96ba6e 100644 --- a/src/components/htmlvideoplayer/plugin.js +++ b/src/components/htmlvideoplayer/plugin.js @@ -1401,7 +1401,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa dlg.classList.add('videoPlayerContainer'); if (options.backdropUrl) { - dlg.classList.add('videoPlayerContainer-withBackdrop'); dlg.style.backgroundImage = "url('" + options.backdropUrl + "')"; } @@ -1410,11 +1409,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa dlg.classList.add('videoPlayerContainer-onTop'); } - // playsinline new for iOS 10 - // https://developer.apple.com/library/content/releasenotes/General/WhatsNewInSafari/Articles/Safari_10_0.html - var html = ''; - var cssClass = 'htmlvideoplayer'; if (!browser.chromecast) { @@ -1449,7 +1444,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa self._mediaElement = videoElement; if (mediaManager) { - if (!mediaManager.embyInit) { initMediaManager(); mediaManager.embyInit = true; @@ -1465,9 +1459,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } else { resolve(videoElement); } - }); - } else { if (options.backdropUrl) { dlg.classList.add('videoPlayerContainer-withBackdrop'); diff --git a/src/components/layoutManager.js b/src/components/layoutManager.js index 1059bf5758..21bcdf5933 100644 --- a/src/components/layoutManager.js +++ b/src/components/layoutManager.js @@ -2,7 +2,6 @@ define(['browser', 'appSettings', 'events'], function (browser, appSettings, eve 'use strict'; function setLayout(instance, layout, selectedLayout) { - if (layout === selectedLayout) { instance[layout] = true; document.documentElement.classList.add('layout-' + layout); @@ -38,7 +37,6 @@ define(['browser', 'appSettings', 'events'], function (browser, appSettings, eve }; LayoutManager.prototype.getSavedLayout = function (layout) { - return appSettings.get('layout'); }; @@ -64,4 +62,4 @@ define(['browser', 'appSettings', 'events'], function (browser, appSettings, eve }; return new LayoutManager(); -}); \ No newline at end of file +}); diff --git a/src/components/playback/autoplaydetect.js b/src/components/playback/autoplaydetect.js deleted file mode 100644 index 3610eef2ab..0000000000 --- a/src/components/playback/autoplaydetect.js +++ /dev/null @@ -1,61 +0,0 @@ -define([], function () { - 'use strict'; - - function supportsHtmlMediaAutoplay() { - - return new Promise(function (resolve, reject) { - - var timeout; - var elem = document.createElement('video'); - var elemStyle = elem.style; - //skip the test if video itself, or the autoplay - //element on it isn't supported - if (!('autoplay' in elem)) { - reject(); - return; - } - elemStyle.position = 'absolute'; - elemStyle.height = 0; - elemStyle.width = 0; - - elem.setAttribute('autoplay', 'autoplay'); - elem.style.display = 'none'; - document.body.appendChild(elem); - - var testAutoplay = function (arg) { - clearTimeout(timeout); - elem.removeEventListener('playing', testAutoplay); - elem.removeEventListener('play', testAutoplay); - var supported = (arg && arg.type === 'playing') || (arg && arg.type === 'play') || elem.currentTime !== 0; - elem.parentNode.removeChild(elem); - - if (supported) { - resolve(); - } else { - reject(); - } - }; - - // play needed for firefox - elem.addEventListener('play', testAutoplay); - elem.addEventListener('playing', testAutoplay); - - try { - elem.src = 'data:video/mp4;base64,AAAAHGZ0eXBtcDQyAAAAAG1wNDJpc29tYXZjMQAAAz5tb292AAAAbG12aGQAAAAAzaNacc2jWnEAAV+QAAFfkAABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAGGlvZHMAAAAAEICAgAcAT////3//AAACQ3RyYWsAAABcdGtoZAAAAAHNo1pxzaNacQAAAAEAAAAAAAFfkAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAEAAAABAAAAAAAd9tZGlhAAAAIG1kaGQAAAAAzaNacc2jWnEAAV+QAAFfkFXEAAAAAAAhaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAAAAAAGWbWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAABVnN0YmwAAACpc3RzZAAAAAAAAAABAAAAmWF2YzEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAEAAQAEgAAABIAAAAAAAAAAEOSlZUL0FWQyBDb2RpbmcAAAAAAAAAAAAAAAAAAAAAAAAY//8AAAAxYXZjQwH0AAr/4QAZZ/QACq609NQYBBkAAAMAAQAAAwAKjxImoAEABWjOAa8gAAAAEmNvbHJuY2xjAAYAAQAGAAAAGHN0dHMAAAAAAAAAAQAAAAUAAEZQAAAAKHN0c3oAAAAAAAAAAAAAAAUAAAIqAAAACAAAAAgAAAAIAAAACAAAAChzdHNjAAAAAAAAAAIAAAABAAAABAAAAAEAAAACAAAAAQAAAAEAAAAYc3RjbwAAAAAAAAACAAADYgAABaQAAAAUc3RzcwAAAAAAAAABAAAAAQAAABFzZHRwAAAAAAREREREAAAAb3VkdGEAAABnbWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcgAAAAAAAAAAAAAAAAAAAAA6aWxzdAAAADKpdG9vAAAAKmRhdGEAAAABAAAAAEhhbmRCcmFrZSAwLjkuOCAyMDEyMDcxODAwAAACUm1kYXQAAAHkBgX/4NxF6b3m2Ui3lizYINkj7u94MjY0IC0gY29yZSAxMjAgLSBILjI2NC9NUEVHLTQgQVZDIGNvZGVjIC0gQ29weWxlZnQgMjAwMy0yMDExIC0gaHR0cDovL3d3dy52aWRlb2xhbi5vcmcveDI2NC5odG1sIC0gb3B0aW9uczogY2FiYWM9MCByZWY9MSBkZWJsb2NrPTE6MDowIGFuYWx5c2U9MHgxOjAgbWU9ZXNhIHN1Ym1lPTkgcHN5PTAgbWl4ZWRfcmVmPTAgbWVfcmFuZ2U9NCBjaHJvbWFfbWU9MSB0cmVsbGlzPTAgOHg4ZGN0PTAgY3FtPTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0wIGNocm9tYV9xcF9vZmZzZXQ9MCB0aHJlYWRzPTYgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MCB3ZWlnaHRwPTAga2V5aW50PTUwIGtleWludF9taW49NSBzY2VuZWN1dD00MCBpbnRyYV9yZWZyZXNoPTAgcmM9Y3FwIG1idHJlZT0wIHFwPTAAgAAAAD5liISscR8A+E4ACAACFoAAITAAAgsAAPgYCoKgoC+L4vi+KAvi+L4YfAEAACMzgABF9AAEUGUgABDJiXnf4AAAAARBmiKUAAAABEGaQpQAAAAEQZpilAAAAARBmoKU'; - var promise = elem.play(); - if (promise && promise.catch) { - promise.catch(reject); - } - - timeout = setTimeout(testAutoplay, 500); - } catch (e) { - reject(); - return; - } - }); - } - - return { - supportsHtmlMediaAutoplay: supportsHtmlMediaAutoplay - }; -}); \ No newline at end of file diff --git a/src/components/usersettings/usersettings.js b/src/components/usersettings/usersettings.js deleted file mode 100644 index 6b3dc90d49..0000000000 --- a/src/components/usersettings/usersettings.js +++ /dev/null @@ -1,5 +0,0 @@ -define(['userSettingsBuilder'], function (userSettingsBuilder) { - 'use strict'; - - return new userSettingsBuilder(); -}); \ No newline at end of file diff --git a/src/components/appSettings.js b/src/scripts/settings/appSettings.js similarity index 99% rename from src/components/appSettings.js rename to src/scripts/settings/appSettings.js index d1a981148c..bd91786f87 100644 --- a/src/components/appSettings.js +++ b/src/scripts/settings/appSettings.js @@ -10,13 +10,13 @@ define(['appStorage', 'events'], function (appStorage, events) { } function AppSettings() { - } AppSettings.prototype.enableAutoLogin = function (val) { if (val != null) { this.set('enableAutoLogin', val.toString()); } + return this.get('enableAutoLogin') !== 'false'; }; @@ -132,4 +132,4 @@ define(['appStorage', 'events'], function (appStorage, events) { }; return new AppSettings(); -}); \ No newline at end of file +}); diff --git a/src/components/usersettings/usersettingsbuilder.js b/src/scripts/settings/userSettings.js similarity index 99% rename from src/components/usersettings/usersettingsbuilder.js rename to src/scripts/settings/userSettings.js index f852dacc43..4105a8611e 100644 --- a/src/components/usersettings/usersettingsbuilder.js +++ b/src/scripts/settings/userSettings.js @@ -242,5 +242,5 @@ define(['appSettings', 'events'], function (appSettings, events) { return this.get(key, true); }; - return UserSettings; + return new UserSettings(); }); diff --git a/src/scripts/site.js b/src/scripts/site.js index d7c3a1c8a4..7c3daf015c 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -315,6 +315,14 @@ var AppInfo = {}; return "components"; } + function getElementsPath() { + return "elements" + } + + function getScriptsPath() { + return "scripts" + } + function getPlaybackManager(playbackManager) { window.addEventListener("beforeunload", function () { try { @@ -650,8 +658,12 @@ var AppInfo = {}; (function () { var urlArgs = "v=" + (window.dashboardVersion || new Date().getDate()); + var bowerPath = getBowerPath(); var componentsPath = getComponentsPath(); + var elementsPath = getElementsPath(); + var scriptsPath = getScriptsPath(); + var paths = { browserdeviceprofile: "scripts/browserdeviceprofile", browser: "scripts/browser", @@ -672,7 +684,6 @@ var AppInfo = {}; itemHelper: componentsPath + "/itemhelper", itemShortcuts: componentsPath + "/shortcuts", playQueueManager: componentsPath + "/playback/playqueuemanager", - autoPlayDetect: componentsPath + "/playback/autoplaydetect", nowPlayingHelper: componentsPath + "/playback/nowplayinghelper", pluginManager: componentsPath + "/pluginManager", packageManager: componentsPath + "/packagemanager", @@ -765,7 +776,6 @@ var AppInfo = {}; return queryString; }); - var elementsPath = "elements" define("emby-button", [elementsPath + "/emby-button/emby-button"], returnFirstDependency); define("paper-icon-button-light", [elementsPath + "/emby-button/paper-icon-button-light"], returnFirstDependency); define("emby-checkbox", [elementsPath + "/emby-checkbox/emby-checkbox"], returnFirstDependency); @@ -778,6 +788,9 @@ var AppInfo = {}; define("emby-textarea", [elementsPath + "/emby-textarea/emby-textarea"], returnFirstDependency); define("emby-toggle", [elementsPath + "/emby-toggle/emby-toggle"], returnFirstDependency); + define("appSettings", [scriptsPath + "/settings/appSettings"], returnFirstDependency); + define("userSettings", [scriptsPath + "/settings/userSettings"], returnFirstDependency); + define("chromecastHelper", [componentsPath + "/chromecast/chromecasthelpers"], returnFirstDependency); define("mediaSession", [componentsPath + "/playback/mediasession"], returnFirstDependency); define("actionsheet", [componentsPath + "/actionsheet/actionsheet"], returnFirstDependency); @@ -865,8 +878,6 @@ var AppInfo = {}; define("toast", [componentsPath + "/toast/toast"], returnFirstDependency); define("scrollHelper", [componentsPath + "/scrollhelper"], returnFirstDependency); define("touchHelper", [componentsPath + "/touchhelper"], returnFirstDependency); - define("appSettings", [componentsPath + "/appSettings"], returnFirstDependency); - define("userSettings", [componentsPath + "/usersettings/usersettings"], returnFirstDependency); define("userSettingsBuilder", [componentsPath + "/usersettings/usersettingsbuilder", "layoutManager", "browser"], returnFirstDependency); define("imageUploader", [componentsPath + "/imageuploader/imageuploader"], returnFirstDependency); define("htmlMediaHelper", [componentsPath + "/htmlMediaHelper"], returnFirstDependency); From 9415cdc73cc21ed08ab3f2ad49344b4b5502ffeb Mon Sep 17 00:00:00 2001 From: Nyanmisaka Date: Fri, 24 Jan 2020 02:31:08 +0800 Subject: [PATCH 023/105] Update browserdeviceprofile.js --- src/scripts/browserdeviceprofile.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/scripts/browserdeviceprofile.js b/src/scripts/browserdeviceprofile.js index 0f81332502..df18a60d4e 100644 --- a/src/scripts/browserdeviceprofile.js +++ b/src/scripts/browserdeviceprofile.js @@ -91,6 +91,14 @@ define(['browser'], function (browser) { return videoTestElement.canPlayType('audio/mp4; codecs="ac-3"').replace(/no/, ''); } + function supportsEac3(videoTestElement) { + if (browser.tizen || browser.orsay || browser.web0s) { + return true; + } + + return videoTestElement.canPlayType('audio/mp4; codecs="ec-3"').replace(/no/, ''); + } + function supportsAc3InHls(videoTestElement) { if (browser.tizen || browser.orsay || browser.web0s) { return true; @@ -104,14 +112,6 @@ define(['browser'], function (browser) { return false; } - function supportsEac3(videoTestElement) { - if (browser.tizen || browser.orsay || browser.web0s) { - return true; - } - - return videoTestElement.canPlayType('audio/mp4; codecs="ec-3"').replace(/no/, ''); - } - function canPlayAudioFormat(format) { var typeString; From 154a24bdb0dfff240942cef5cf5dbb334116cd94 Mon Sep 17 00:00:00 2001 From: Nyanmisaka Date: Fri, 24 Jan 2020 02:38:43 +0800 Subject: [PATCH 024/105] Update browserdeviceprofile.js --- src/scripts/browserdeviceprofile.js | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/scripts/browserdeviceprofile.js b/src/scripts/browserdeviceprofile.js index df18a60d4e..d39b4d5d79 100644 --- a/src/scripts/browserdeviceprofile.js +++ b/src/scripts/browserdeviceprofile.js @@ -132,7 +132,7 @@ define(['browser'], function (browser) { typeString = 'audio/ogg; codecs="opus"'; return !!document.createElement('audio').canPlayType(typeString).replace(/no/, ''); } - + return false; } else if (format === 'alac') { if (browser.iOS || browser.osx) { @@ -172,7 +172,7 @@ define(['browser'], function (browser) { } var userAgent = navigator.userAgent.toLowerCase(); - + // Filter out browsers based on chromium that don't support mkv if (userAgent.indexOf('vivaldi') !== -1 || userAgent.indexOf('opera') !== -1) { return false; @@ -494,15 +494,15 @@ define(['browser'], function (browser) { hlsVideoCodecs.push('h265'); hlsVideoCodecs.push('hevc'); } - - if (canPlayH265(videoTestElement) && (browser.tizen || browser.web0s)) { - if (hlsVideoCodecs.indexOf('h265') === -1) { - hlsVideoCodecs.push('h265'); - } - if (hlsVideoCodecs.indexOf('hevc') === -1) { - hlsVideoCodecs.push('hevc'); - } - } + + if (canPlayH265(videoTestElement) && (browser.tizen || browser.web0s)) { + if (hlsVideoCodecs.indexOf('h265') === -1) { + hlsVideoCodecs.push('h265'); + } + if (hlsVideoCodecs.indexOf('hevc') === -1) { + hlsVideoCodecs.push('hevc'); + } + } if (supportsMpeg2Video()) { mp4VideoCodecs.push('mpeg2video'); @@ -773,7 +773,7 @@ define(['browser'], function (browser) { videoTestElement.canPlayType('video/mp4; codecs="avc1.640833"').replace(/no/, '')) { maxH264Level = 51; } - + var userAgent = navigator.userAgent.toLowerCase(); if (browser.chromecast) { var isChromecastUltra = userAgent.indexOf('aarch64') !== -1; From 07c67f0382d97deb526ab2aec97e6faf64d21919 Mon Sep 17 00:00:00 2001 From: Nyanmisaka Date: Fri, 24 Jan 2020 02:44:53 +0800 Subject: [PATCH 025/105] Update browserdeviceprofile.js --- src/scripts/browserdeviceprofile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/browserdeviceprofile.js b/src/scripts/browserdeviceprofile.js index d39b4d5d79..11e5453ba2 100644 --- a/src/scripts/browserdeviceprofile.js +++ b/src/scripts/browserdeviceprofile.js @@ -139,7 +139,7 @@ define(['browser'], function (browser) { return true; } } else if (format === 'mp2') { - //For now + // For now return false; } From ae325bd7470dbcd5a5d0879394bd7d39beee46a2 Mon Sep 17 00:00:00 2001 From: Nyanmisaka Date: Fri, 24 Jan 2020 02:48:22 +0800 Subject: [PATCH 026/105] Update browserdeviceprofile.js --- src/scripts/browserdeviceprofile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/browserdeviceprofile.js b/src/scripts/browserdeviceprofile.js index 11e5453ba2..0644547f0e 100644 --- a/src/scripts/browserdeviceprofile.js +++ b/src/scripts/browserdeviceprofile.js @@ -241,7 +241,7 @@ define(['browser'], function (browser) { supported = browser.tizen || browser.orsay; break; case 'mov': - supported = browser.tizen || browser.orsay || browser.web0s || browser.edgeUwp; + supported = browser.tizen || browser.orsay || browser.web0s || browser.chrome || browser.edgeUwp; videoCodecs.push('h264'); break; case 'm2ts': From 50b96b0afbf4de7a1992450cbb297cd71939a7f3 Mon Sep 17 00:00:00 2001 From: Nyanmisaka Date: Fri, 24 Jan 2020 03:26:30 +0800 Subject: [PATCH 027/105] edge does not support h264 high10 directstream --- src/scripts/browserdeviceprofile.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/scripts/browserdeviceprofile.js b/src/scripts/browserdeviceprofile.js index 0644547f0e..11a26b570d 100644 --- a/src/scripts/browserdeviceprofile.js +++ b/src/scripts/browserdeviceprofile.js @@ -180,6 +180,10 @@ define(['browser'], function (browser) { return true; } + + if (browser.edgeUwp) { + return true; + } return false; } @@ -786,7 +790,7 @@ define(['browser'], function (browser) { videoTestElement.canPlayType('video/mp4; codecs="avc1.6e0033"').replace(/no/, '')) { // These tests are passing in safari, but playback is failing - if (!browser.safari && !browser.iOS && !browser.web0s) { + if (!browser.safari && !browser.iOS && !browser.web0s && !browser.edge) { h264Profiles += '|high 10'; } } From 7f187b504b4005a7c3afbb90f41ef838ee5abdd4 Mon Sep 17 00:00:00 2001 From: Nyanmisaka Date: Fri, 24 Jan 2020 03:30:24 +0800 Subject: [PATCH 028/105] Update browserdeviceprofile.js --- src/scripts/browserdeviceprofile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/browserdeviceprofile.js b/src/scripts/browserdeviceprofile.js index 11a26b570d..3f412cbfb0 100644 --- a/src/scripts/browserdeviceprofile.js +++ b/src/scripts/browserdeviceprofile.js @@ -180,7 +180,7 @@ define(['browser'], function (browser) { return true; } - + if (browser.edgeUwp) { return true; } From 7b6c923aad44c211580ba7bb0f8d960e0ed580cb Mon Sep 17 00:00:00 2001 From: 4d1m Date: Thu, 23 Jan 2020 13:18:15 +0000 Subject: [PATCH 029/105] Translated using Weblate (Romanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ro/ --- src/strings/ro.json | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/strings/ro.json b/src/strings/ro.json index 9fa92c69df..45be057186 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -243,7 +243,7 @@ "AddToPlayQueue": "Adaugă la coada de redare", "AddItemToCollectionHelp": "Adaugă obiectele la colecții căutând-le și folosind meniul de click-dreapta sau apasare pentru a le adăuga la colecție.", "Add": "Adaugă", - "Actor": "Actor", + "Actor": "Artist", "AccessRestrictedTryAgainLater": "Accesul este restricționat. Te rugăm să încerci mai târziu.", "AllowedRemoteAddressesHelp": "Listă separată prin virgulă de adrese IP sau IP/netmask pentru rețelele care for permise din conexiuni externe. Dacă este lăsat gol, toate adresele externe vor fi permise.", "ButtonStop": "Stop", @@ -284,7 +284,7 @@ "Disc": "Placă", "CopyStreamURL": "Copiază Stream URL", "CriticRating": "Evaluare critici", - "Desktop": "Desktop", + "Desktop": "Birou", "Director": "Regizor", "AllowOnTheFlySubtitleExtractionHelp": "Subtitrările încorporate pot fi extrase din video și transmise către client în mod text pentru a preveni transcodarea videoului. Pe unele sisteme acest lucru poate dura mult timp și poate cauza oprirea redării video în timpul procesului de extragere. Dezactivează opțiunea pentru a avea subtitrările încorporate incluse în videoul transcodat atunci când nu sunt nativ suportate de către dispozitivul client.", "BirthLocation": "Locul nașterii", @@ -412,7 +412,7 @@ "HDPrograms": "Programe HD", "HandledByProxy": "Gestionat de proxy invers", "HeaderApiKeys": "Chei API", - "HeaderApp": "App", + "HeaderApp": "Aplicație", "HeaderCastCrew": "Distribuție și echipă", "HeaderConfirmPluginInstallation": "Confirmați instalarea plugin-ului", "HeaderDeleteItems": "Ștergeți Elemente", @@ -429,7 +429,7 @@ "HeaderError": "Eroare", "HeaderExternalIds": "ID-uri Externe:", "HeaderFavoriteBooks": "Cărți Favorite", - "HeaderBranding": "Branding", + "HeaderBranding": "Marca", "HeaderApiKeysHelp": "Aplicațiile externe trebuie să aibă o cheie API pentru a comunica cu Jellyfin Server. Cheile sunt emise prin conectarea cu un cont Jellyfin sau prin acordarea manuală a unei chei aplicației.", "Sync": "Sincronizare", "ErrorAddingXmlTvFile": "A apărut o eroare la accesarea fișierului XMLTV. Vă rugăm să vă asigurați că fișierul există și încercați din nou.", @@ -642,7 +642,7 @@ "LabelTranscodingFramerate": "Rata de cadru a transcodării:", "LabelTranscodes": "Transcodează:", "LabelTranscodePath": "Cale transcodare:", - "LabelTranscodingContainer": "Container:", + "LabelTranscodingContainer": "Container :", "LabelTranscodingAudioCodec": "Codec audio:", "LabelTrackNumber": "Număr melodie:", "LabelTitle": "Titlu:", @@ -709,7 +709,7 @@ "LabelProtocol": "Protocol:", "LabelProfileVideoCodecs": "Codecuri video:", "LabelProfileContainersHelp": "Separat prin virgulă. Poate fi lăsat gol pentru a se aplica tuturor containerelor.", - "LabelProfileContainer": "Container:", + "LabelProfileContainer": "Container :", "LabelProfileCodecsHelp": "Separat prin virgulă. Poate fi lăsat gol pentru a se aplica tuturor codecurilor.", "LabelProfileCodecs": "Codecuri:", "LabelProfileAudioCodecs": "Codecuri audio:", @@ -812,7 +812,7 @@ "LabelHardwareAccelerationTypeHelp": "Aceasta este o caracteristică experimentală disponibilă doar pe sistemele acceptate.", "LabelHardwareAccelerationType": "Accelerare hardware:", "LabelH264EncodingPreset": "H264 encoding presetat:", - "LabelH264Crf": "H264 encoding CRF:", + "LabelH264Crf": "CRF codare H264:", "LabelGroupMoviesIntoCollectionsHelp": "La afișarea listelor de filme, filmele aparținând unei colecții vor fi afișate ca un articol grupat.", "LabelGroupMoviesIntoCollections": "Grupează filmele în colecții", "LabelServerNameHelp": "Acest nume va fi utilizat pentru a identifica serverul și va fi implicit la numele computerului serverului.", @@ -978,7 +978,7 @@ "ButtonSplit": "Împarte", "OptionCustomUsers": "Personalizat", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", - "OptionBluray": "Blu-ray", + "OptionBluray": "BluRay", "OptionBlockTvShows": "Seriale TV", "OptionBlockTrailers": "Trailere", "OptionBlockMusic": "Muzică", @@ -1094,7 +1094,7 @@ "MediaInfoStreamTypeData": "Date", "MediaInfoStreamTypeAudio": "Audio", "MediaInfoSoftware": "Software", - "MediaInfoTimestamp": "Timestamp", + "MediaInfoTimestamp": "Data și ora", "MediaInfoSize": "Mărime", "MediaInfoSampleRate": "Rata monstrei", "MediaInfoResolution": "Rezoluție", @@ -1110,7 +1110,7 @@ "MediaInfoForced": "Forțat", "MediaInfoExternal": "Extern", "MediaInfoDefault": "Implicit", - "MediaInfoContainer": "Container", + "MediaInfoContainer": "Recipient", "MediaInfoCodecTag": "Etichetă codec", "MediaInfoCodec": "Codec", "MediaInfoChannels": "Canale", @@ -1129,7 +1129,7 @@ "Live": "În direct", "List": "Listă", "LinksValue": "Linkuri: {0}", - "Like": "Like", + "Like": "Îmi place", "LeaveBlankToNotSetAPassword": "Puteți lăsa acest câmp necompletat pentru a nu seta o parolă.", "LearnHowYouCanContribute": "Aflați cum puteți contribui.", "LaunchWebAppOnStartupHelp": "Deschideți clientul web în browserul dvs. implicit la pornirea inițială a serverului. Acest lucru nu se va produce atunci când se utilizează funcția serverului de repornire.", @@ -1142,9 +1142,9 @@ "LabelZipCode": "Cod poștal:", "LabelYear": "Anul:", "LabelXDlnaDocHelp": "Determină conținutul elementului X_DLNADOC din domeniul urn:schemas-dlna-org:device-1-0.", - "LabelXDlnaDoc": "X-DLNA doc:", + "LabelXDlnaDoc": "Documentație X-DLNA:", "LabelXDlnaCapHelp": "Determină conținutul elementului X_DLNACAP din domeniul urn:schemas-dlna-org:device-1-0.", - "LabelXDlnaCap": "X-DLNA cap:", + "LabelXDlnaCap": "Limită X-DLNA:", "LabelWeb": "Web:", "LabelVideoCodec": "Codec video:", "LabelVideoBitrate": "Rata de biți a video-ului:", @@ -1415,7 +1415,7 @@ "Unmute": "Activați sunetul", "UninstallPluginHeader": "Dezinstalați pluginul", "UninstallPluginConfirmation": "Sigur doriți să dezinstalați {0}?", - "Uniform": "Uniform", + "Uniform": "Constant", "TvLibraryHelp": "Examinați {0}ghidul de denumire TV{1}.", "Transcoding": "Conversie", "Trailers": "Trailere", @@ -1451,7 +1451,7 @@ "TabDashboard": "Tablou de bord", "TabContainers": "Containere", "TabCodecs": "Codecuri", - "TabCatalog": "Catalog", + "TabCatalog": "Registru", "TV": "TV", "SystemDlnaProfilesHelp": "Profilele de sistem pot fi numai citite. Modificările aduse unui profil de sistem vor fi salvate într-un nou profil personalizat.", "HeaderNavigation": "Navigare" From 5446e9a6252550625460e6725a58eba24dcce34d Mon Sep 17 00:00:00 2001 From: dkanada Date: Fri, 24 Jan 2020 18:45:37 +0900 Subject: [PATCH 030/105] return default value in method --- src/components/apphost.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/apphost.js b/src/components/apphost.js index 609b24a781..c03ae0bce8 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -167,6 +167,8 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet if (browser.mobile) { return false; } + + return true; } function supportsCue() { From 5dbbfdd750b2fe2b2075e8ec3e83b1e350885f73 Mon Sep 17 00:00:00 2001 From: Nyanmisaka Date: Fri, 24 Jan 2020 18:22:41 +0800 Subject: [PATCH 031/105] WebOS 1.0+ also supports ASF --- src/scripts/browserdeviceprofile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/browserdeviceprofile.js b/src/scripts/browserdeviceprofile.js index 3f412cbfb0..b9cc5d7d34 100644 --- a/src/scripts/browserdeviceprofile.js +++ b/src/scripts/browserdeviceprofile.js @@ -124,7 +124,7 @@ define(['browser'], function (browser) { return true; } } else if (format === 'asf') { - if (browser.tizen || browser.edgeUwp) { + if (browser.tizen || browser.web0s || browser.edgeUwp) { return true; } } else if (format === 'opus') { From 1f4af044b0bf3dd21c54dc08da5a559b478e5311 Mon Sep 17 00:00:00 2001 From: Nyanmisaka Date: Fri, 24 Jan 2020 18:24:32 +0800 Subject: [PATCH 032/105] Update browserdeviceprofile.js --- src/scripts/browserdeviceprofile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/browserdeviceprofile.js b/src/scripts/browserdeviceprofile.js index b9cc5d7d34..d27a12e142 100644 --- a/src/scripts/browserdeviceprofile.js +++ b/src/scripts/browserdeviceprofile.js @@ -80,7 +80,7 @@ define(['browser'], function (browser) { function canPlayHlsWithMSE() { // text tracks don’t work with this in firefox - return null != window.MediaSource; + return window.MediaSource != null; } function supportsAc3(videoTestElement) { From e3dd8715009e9a44d5a7d85be060f249ef0bb381 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Fri, 24 Jan 2020 16:44:45 +0300 Subject: [PATCH 033/105] Apply suggestions from code review --- src/components/keyboardnavigation.js | 27 ++++++++++++++++++--------- src/controllers/playback/videoosd.js | 12 ++---------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/src/components/keyboardnavigation.js b/src/components/keyboardnavigation.js index 0971018bbf..d1ed03138c 100644 --- a/src/components/keyboardnavigation.js +++ b/src/components/keyboardnavigation.js @@ -16,15 +16,24 @@ define(["inputManager", "layoutManager"], function (inputManager, layoutManager) 38: "ArrowUp", 39: "ArrowRight", 40: "ArrowDown", - 412: "MediaRewind", // MediaRewind (Tizen/WebOS) - 413: "MediaStop", // MediaStop (Tizen/WebOS) - 415: "MediaPlay", // MediaPlay (Tizen/WebOS) - 417: "MediaFastForward", // MediaFastForward (Tizen/WebOS) - 461: "Back", // Back (WebOS) - 10009: "Back", // Back (Tizen) - 10232: "MediaTrackPrevious", // MediaTrackPrevious (Tizen) - 10233: "MediaTrackNext", // MediaTrackNext (Tizen) - 10252: "MediaPlayPause" // MediaPlayPause (Tizen) + // MediaRewind (Tizen/WebOS) + 412: "MediaRewind", + // MediaStop (Tizen/WebOS) + 413: "MediaStop", + // MediaPlay (Tizen/WebOS) + 415: "MediaPlay", + // MediaFastForward (Tizen/WebOS) + 417: "MediaFastForward", + // Back (WebOS) + 461: "Back", + // Back (Tizen) + 10009: "Back", + // MediaTrackPrevious (Tizen) + 10232: "MediaTrackPrevious", + // MediaTrackNext (Tizen) + 10233: "MediaTrackNext", + // MediaPlayPause (Tizen) + 10252: "MediaPlayPause" }; var hasFieldKey = false; diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index 5dc12aeeed..6392c3a1a8 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1105,7 +1105,6 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med case "Enter": showOsd(); break; - case "Escape": case "Back": // Ignore key when some dialog is opened @@ -1114,52 +1113,45 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med e.stopPropagation(); } break; - case "k": playbackManager.playPause(currentPlayer); showOsd(); break; - case "l": case "ArrowRight": case "Right": playbackManager.fastForward(currentPlayer); showOsd(); break; - case "j": case "ArrowLeft": case "Left": playbackManager.rewind(currentPlayer); showOsd(); break; - case "f": if (!e.ctrlKey && !e.metaKey) { playbackManager.toggleFullscreen(currentPlayer); showOsd(); } break; - case "m": playbackManager.toggleMute(currentPlayer); showOsd(); break; - case "NavigationLeft": case "GamepadDPadLeft": case "GamepadLeftThumbstickLeft": - // Ignores gamepad events that are always triggered, even when not focused. + // Ignores gamepad events that are always triggered, even when not focused. if (document.hasFocus()) { playbackManager.rewind(currentPlayer); showOsd(); } break; - case "NavigationRight": case "GamepadDPadRight": case "GamepadLeftThumbstickRight": - // Ignores gamepad events that are always triggered, even when not focused. + // Ignores gamepad events that are always triggered, even when not focused. if (document.hasFocus()) { playbackManager.fastForward(currentPlayer); showOsd(); From 07359c3f1f236c3d683a61273b47487bb6821386 Mon Sep 17 00:00:00 2001 From: ManfredRichthofen <46958197+ManfredRichthofen@users.noreply.github.com> Date: Fri, 24 Jan 2020 13:20:06 -0800 Subject: [PATCH 034/105] Remove red login border on firefox Keeps the required input text box while removing the red border --- src/elements/emby-input/emby-input.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/elements/emby-input/emby-input.css b/src/elements/emby-input/emby-input.css index d888eb570d..e52329c877 100644 --- a/src/elements/emby-input/emby-input.css +++ b/src/elements/emby-input/emby-input.css @@ -21,6 +21,10 @@ border: 0; } +input:required { +box-shadow:none; +} + .inputContainer { margin-bottom: 1.8em; } From 1ebf03d21b39668582116cd0452140626563e51e Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 25 Jan 2020 01:18:07 +0300 Subject: [PATCH 035/105] Exit app on "go back" at login page --- src/components/appRouter.js | 7 ++++++- src/scripts/routes.js | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/components/appRouter.js b/src/components/appRouter.js index 9df0ee5f1b..9305dbca3f 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -545,13 +545,18 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM page.back(); } + /** + * Pages of "no return" (Go back). + */ + var startPages = ['home', 'login']; + function canGoBack() { var curr = current(); if (!curr) { return false; } - if (!document.querySelector('.dialogContainer') && curr.type === 'home') { + if (!document.querySelector('.dialogContainer') && startPages.indexOf(curr.type) !== -1) { return false; } return page.canGoBack(); diff --git a/src/scripts/routes.js b/src/scripts/routes.js index a3427c6551..69c996877f 100644 --- a/src/scripts/routes.js +++ b/src/scripts/routes.js @@ -226,7 +226,8 @@ define([ autoFocus: false, anonymous: true, startup: true, - controller: "auth/login" + controller: "auth/login", + type: "login" }); defineRoute({ path: "/metadataimages.html", From ad48356d3d250669ff434eb6f19d3f8f7257bb76 Mon Sep 17 00:00:00 2001 From: SaddFox Date: Fri, 24 Jan 2020 14:11:46 +0000 Subject: [PATCH 036/105] Translated using Weblate (Slovenian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sl/ --- src/strings/sl-si.json | 47 +++++++++++++++++++++++++++++++++++------- 1 file changed, 39 insertions(+), 8 deletions(-) diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index 7d8be16217..d0f5404c1f 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -39,7 +39,7 @@ "OptionHasSubtitles": "Podnapisi", "OptionLikes": "Všeč mi je", "OptionPlayed": "Predvajano", - "OptionReleaseDate": "Datum Izdaje", + "OptionReleaseDate": "Datum izida", "OptionUnplayed": "Nepredvajano", "ParentalRating": "Ocena za starše", "Settings": "Nastavitve", @@ -58,7 +58,7 @@ "TabProfiles": "Profili", "TabShows": "Oddaje", "TabSuggestions": "Predlogi", - "TabUpcoming": "V prihodu", + "TabUpcoming": "Prihajajoče", "TellUsAboutYourself": "Povej nam nekaj o sebi", "ThisWizardWillGuideYou": "Čarovnik vas bo vodil skozi postopek namestitve. Za začetek, izberite jezik.", "WelcomeToProject": "Dobrodosli v Jellyfin!", @@ -92,7 +92,7 @@ "Books": "Knjige", "Channels": "Kanali", "Collections": "Zbirke", - "Favorites": "Priljubljeni", + "Favorites": "Priljubljeno", "Folders": "Mape", "Genres": "Zvrsti", "HeaderAlbumArtists": "Izvajalci albuma", @@ -219,7 +219,7 @@ "ButtonShuffle": "Premešaj", "ButtonShutdown": "Ugasni", "ButtonSignIn": "Prijava", - "ButtonSort": "Sortiraj", + "ButtonSort": "Razvrsti", "ButtonStart": "Začetek", "ButtonStop": "Stop", "ButtonSubtitles": "Podnapisi", @@ -343,7 +343,7 @@ "HeaderPendingInvitations": "Povabila na čakanju", "HeaderPasswordReset": "Ponastavi geslo", "HeaderPassword": "Geslo", - "HeaderParentalRatings": "Starševska ocena", + "HeaderParentalRatings": "Ocena za starše", "HeaderOnNow": "Zdaj", "HeaderNextVideoPlayingInValue": "Naslednji video se bo predvajal čez {0}", "HeaderNextEpisodePlayingInValue": "Naslednja epizoda se bo predvajala čez {0}", @@ -542,7 +542,7 @@ "HeaderUploadImage": "Naloži sliko", "HeaderUpcomingOnTV": "Prihaja na TV", "HeaderTypeText": "Vnesi besedilo", - "HeaderTypeImageFetchers": "{0} prejemniki slik", + "HeaderTypeImageFetchers": "{0} pridobivanje slik", "HeaderTuners": "Sprejemniki", "HeaderTunerDevices": "Sprejemniki", "LabelAllowHWTranscoding": "Dovoli strojno pospešeno prekodiranje", @@ -566,7 +566,7 @@ "HeaderSpecialFeatures": "Dodatki", "HeaderSpecialEpisodeInfo": "Informacije o posebni epizodi", "HeaderSortOrder": "Vrstni red", - "HeaderSortBy": "Uredi po", + "HeaderSortBy": "Razvrsti po", "HeaderShutdown": "Ugasni", "HeaderSetupLibrary": "Nastavite vaše knjižnjice predstavnosti", "HeaderServerSettings": "Nastavitve strežnika", @@ -1038,5 +1038,36 @@ "MediaInfoChannels": "Kanali", "MediaInfoBitrate": "Bitna hitrost", "MediaInfoBitDepth": "Bitna globina", - "HeaderFavoritePeople": "Priljubljene osebe" + "HeaderFavoritePeople": "Priljubljene osebe", + "ReleaseDate": "Datum izida", + "LabelReleaseDate": "Datum izida:", + "Runtime": "Trajanje", + "UserProfilesIntro": "Jellyfin podpira uporabniške profile z natančnimi nastavitvami prikaza, stanjem predvajanja in starševskim nadzorom.", + "TabParentalControl": "Starševski nadzor", + "OptionParentalRating": "Ocena za starše", + "LabelParentalRating": "Ocena za starše:", + "OptionPlayCount": "Število predvajanj", + "LabelTranscodingThreadCount": "Število niti prekodiranja:", + "OptionBlockChannelContent": "Vsebina spletnega kanala", + "OneChannel": "En kanal", + "SortName": "Ime razvrščanja", + "SortChannelsBy": "Razvrsti kanale po:", + "SortByValue": "Razvrsti po {0}", + "Sort": "Razvrsti", + "LabelSortTitle": "Naslov razvrščanja:", + "LabelSortOrder": "Vrstni red:", + "LabelSortBy": "Razvrsti po:", + "Thumb": "Sličica", + "OptionThumbCard": "Sličica", + "OptionThumb": "Sličica", + "OptionDownloadThumbImage": "Sličica", + "ButtonSplit": "Razdeli", + "MessageYouHaveVersionInstalled": "Trenutno je nameščena različica {0}.", + "DashboardVersionNumber": "Različica: {0}", + "LabelVersion": "Različica:", + "LabelSelectVersionToInstall": "Izberite različico za namestitev:", + "Never": "Nikoli", + "ServerUpdateNeeded": "Jellyfin strežnik je potrebno posodobiti. Za prenos najnovejše različice prosimo obiščite {0}", + "LatestFromLibrary": "Najnovejši {0}", + "LabelScheduledTaskLastRan": "Nazadnje zagnano {0}. Čas trajanja {1}." } From 0ec0326c9da22250f1caf22dc2cde763d37a5cd0 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 13:25:56 +0100 Subject: [PATCH 037/105] Add stylelint --- package.json | 3 +- yarn.lock | 1205 +++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 1197 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 09b793cd3a..f46fe59035 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "file-loader": "^3.0.1", "html-webpack-plugin": "^3.2.0", "style-loader": "^0.23.1", + "stylelint": "^13.0.0", "webpack": "^4.41.0", "webpack-cli": "^3.3.9", "webpack-concat-plugin": "^3.0.0", @@ -26,6 +27,7 @@ "howler": "^2.1.2", "jquery": "^3.4.1", "jstree": "^3.3.7", + "libass-wasm": "^2.1.1", "libjass": "^0.11.0", "native-promise-only": "^0.8.0-a", "requirejs": "^2.3.5", @@ -33,7 +35,6 @@ "shaka-player": "^2.5.5", "sortablejs": "^1.9.0", "swiper": "^3.4.2", - "libass-wasm": "^2.1.1", "webcomponents.js": "^0.7.24", "whatwg-fetch": "^1.1.1" }, diff --git a/yarn.lock b/yarn.lock index 1526957e42..b79e6a51fb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,6 +9,76 @@ dependencies: "@babel/highlight" "^7.0.0" +"@babel/code-frame@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== + dependencies: + "@babel/highlight" "^7.8.3" + +"@babel/core@>=7.2.2": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.3.tgz#30b0ebb4dd1585de6923a0b4d179e0b9f5d82941" + integrity sha512-4XFkf8AwyrEG7Ziu3L2L0Cv+WyY47Tcsp70JFmpftbAA1K7YL/sgE9jh9HyNj08Y/U50ItUchpN0w6HxAoX1rA== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.3" + "@babel/helpers" "^7.8.3" + "@babel/parser" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.0" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.3.tgz#0e22c005b0a94c1c74eafe19ef78ce53a4d45c03" + integrity sha512-WjoPk8hRpDRqqzRpvaR8/gDUPkrnOOeuT2m8cNICJtZH6mwaCo3v0OKMI7Y6SM1pBtyijnLtAL0HDi41pf41ug== + dependencies: + "@babel/types" "^7.8.3" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + +"@babel/helper-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" + integrity sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-get-function-arity@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" + integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-split-export-declaration@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" + integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helpers@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.3.tgz#382fbb0382ce7c4ce905945ab9641d688336ce85" + integrity sha512-LmU3q9Pah/XyZU89QvBgGt+BCsTPoQa+73RxAQh8fb8qkDyIfeQnmgs+hvzhTCKTzqOyk7JTkS3MS1S8Mq5yrQ== + dependencies: + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + "@babel/highlight@^7.0.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" @@ -18,6 +88,60 @@ esutils "^2.0.2" js-tokens "^4.0.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== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.3.tgz#790874091d2001c9be6ec426c2eed47bc7679081" + integrity sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ== + +"@babel/runtime@^7.6.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.3.tgz#0811944f73a6c926bb2ad35e918dcc1bfab279f1" + integrity sha512-fVHx1rzEmwB130VTkLnxR+HmxcTjGzH12LYQcFFoBwakMd3aOMD4OsRN7tGG/UOYE2ektgFrS8uACAoRk1CY0w== + dependencies: + regenerator-runtime "^0.13.2" + +"@babel/template@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.3.tgz#e02ad04fe262a657809327f578056ca15fd4d1b8" + integrity sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/traverse@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.3.tgz#a826215b011c9b4f73f3a893afbc05151358bf9a" + integrity sha512-we+a2lti+eEImHmEXp7bM9cTxGzxPmBiVJlLVD+FuuQMeeO7RaDbutbgeheDkw+Xe3mCfJHnGOWLswT74m2IPg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.3" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.8.3" + "@babel/types" "^7.8.3" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/types@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" + integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg== + dependencies: + esutils "^2.0.2" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -26,16 +150,42 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" +"@nodelib/fs.scandir@2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" + integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== + dependencies: + "@nodelib/fs.stat" "2.0.3" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" + integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== + "@nodelib/fs.stat@^1.1.2": version "1.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== +"@nodelib/fs.walk@^1.2.3": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" + integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== + dependencies: + "@nodelib/fs.scandir" "2.1.3" + fastq "^1.6.0" + "@types/anymatch@*": version "1.3.1" resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + "@types/events@*": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" @@ -55,11 +205,26 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== +"@types/minimist@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6" + integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY= + "@types/node@*": version "12.7.12" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.12.tgz#7c6c571cc2f3f3ac4a59a5f2bd48f5bdbc8653cc" integrity sha512-KPYGmfD0/b1eXurQ59fXD1GBzhSQfz6/lKBxkaHX9dKTzjXbK68Zt7yGUxUsCS1jeTy/8aL+d9JEr+S54mpkWQ== +"@types/normalize-package-data@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + "@types/source-list-map@*": version "0.1.2" resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" @@ -77,6 +242,27 @@ dependencies: source-map "^0.6.1" +"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" + integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== + +"@types/vfile-message@*": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/vfile-message/-/vfile-message-2.0.0.tgz#690e46af0fdfc1f9faae00cd049cc888957927d5" + integrity sha512-GpTIuDpb9u4zIO165fUy9+fXcULdD8HFRNli04GehoMVbeNq7D6OBnqSmg3lxZnC+UvgUhEWKxdKiwYUkGltIw== + dependencies: + vfile-message "*" + +"@types/vfile@^3.0.0": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/vfile/-/vfile-3.0.2.tgz#19c18cd232df11ce6fa6ad80259bc86c366b09b9" + integrity sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw== + dependencies: + "@types/node" "*" + "@types/unist" "*" + "@types/vfile-message" "*" + "@types/webpack-sources@*": version "0.1.5" resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-0.1.5.tgz#be47c10f783d3d6efe1471ff7f042611bd464a92" @@ -332,6 +518,11 @@ ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -339,6 +530,14 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -399,6 +598,11 @@ array-union@^1.0.1: dependencies: array-uniq "^1.0.1" +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" @@ -571,6 +775,13 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" +braces@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -748,7 +959,16 @@ camel-case@3.0.x: no-case "^2.2.0" upper-case "^1.1.1" -camelcase@^5.0.0, camelcase@^5.2.0: +camelcase-keys@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.1.1.tgz#0d24dde78cea4c7d2da7f4ea40b7995083328c8d" + integrity sha512-kEPCddRFChEzO0d6w61yh0WbBiSv9gBnfZWGfXRYPlGqIdIGef6HMR6pgqVSEWCYkrp8B0AtEpEXNY+Jx0xk1A== + dependencies: + camelcase "^5.3.1" + map-obj "^4.0.0" + quick-lru "^4.0.1" + +camelcase@^5.0.0, camelcase@^5.2.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== @@ -762,6 +982,34 @@ chalk@2.4.2, chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +character-entities-html4@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.3.tgz#5ce6e01618e47048ac22f34f7f39db5c6fd679ef" + integrity sha512-SwnyZ7jQBCRHELk9zf2CN5AnGEc2nA+uKMZLHvcqhpPprjkYhiLn0DywMHgN5ttFZuITMATbh68M6VIVKwJbcg== + +character-entities-legacy@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.3.tgz#3c729991d9293da0ede6dddcaf1f2ce1009ee8b4" + integrity sha512-YAxUpPoPwxYFsslbdKkhrGnXAtXoHNgYjlBM3WMXkWGTl5RsY3QmOyhwAgL8Nxm9l5LBThXGawxKPn68y6/fww== + +character-entities@^1.0.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.3.tgz#bbed4a52fe7ef98cc713c6d80d9faa26916d54e6" + integrity sha512-yB4oYSAa9yLcGyTbB4ItFwHw43QHdH129IJ5R+WvxOkWlyFnR5FAaBNnUq4mcxsTVZGh28bHoeTHMKXH1wZf3w== + +character-reference-invalid@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.3.tgz#1647f4f726638d3ea4a750cf5d1975c1c7919a85" + integrity sha512-VOq6PRzQBam/8Jm6XBGk2fNEnHXAdGd6go0rtd4weAGECBamHDwwCQSOT12TACIYUZegUXnV6xBXqUssijtxIg== + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -880,11 +1128,23 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" +clone-regexp@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-2.2.0.tgz#7d65e00885cd8796405c35a737e7a86b7429e36f" + integrity sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q== + dependencies: + is-regexp "^2.0.0" + code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= +collapse-white-space@^1.0.2: + version "1.0.5" + resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.5.tgz#c2495b699ab1ed380d29a1091e01063e75dbbe3a" + integrity sha512-703bOOmytCYAX9cXYqoikYIx6twmFCXsnzRQheBcTG3nzKYBR4P/+wkYeH+Mvj7qUz8zZDtdyzbxfnEi/kYzRQ== + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -900,11 +1160,23 @@ color-convert@^1.9.0: dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + commander@2.17.x: version "2.17.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" @@ -1011,6 +1283,13 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== +convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -1188,7 +1467,15 @@ debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" -decamelize@^1.2.0: +decamelize-keys@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" + integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= + dependencies: + decamelize "^1.1.0" + map-obj "^1.0.0" + +decamelize@^1.1.0, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -1332,6 +1619,13 @@ dir-glob@^2.0.0: dependencies: path-type "^3.0.0" +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + dns-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" @@ -1417,6 +1711,13 @@ domutils@^1.5.1: dom-serializer "0" domelementtype "1" +dot-prop@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== + dependencies: + is-obj "^1.0.0" + duplexify@^3.4.2, duplexify@^3.6.0: version "3.7.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" @@ -1450,6 +1751,11 @@ emoji-regex@^7.0.1: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" @@ -1681,6 +1987,13 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execall@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/execall/-/execall-2.0.0.tgz#16a06b5fe5099df7d00be5d9c06eecded1663b45" + integrity sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow== + dependencies: + clone-regexp "^2.1.0" + expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -1752,6 +2065,11 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + external-editor@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" @@ -1792,6 +2110,17 @@ fast-glob@^2.0.2: merge2 "^1.2.3" micromatch "^3.1.10" +fast-glob@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.1.1.tgz#87ee30e9e9f3eb40d6f254a7997655da753d7c82" + integrity sha512-nTCREpBY8w8r+boyFYAx21iL6faSsQynliPHM4Uf56SbkyohCNxpVPEH9xrF5TXKy+IsjkPUHDKiUkzBVRXn9g== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" @@ -1802,6 +2131,13 @@ fast-levenshtein@~2.0.4: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fastq@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.6.0.tgz#4ec8a38f4ac25f21492673adb7eae9cfef47d1c2" + integrity sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA== + dependencies: + reusify "^1.0.0" + faye-websocket@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" @@ -1853,6 +2189,13 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + finalhandler@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" @@ -1882,6 +2225,14 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + findup-sync@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" @@ -2013,6 +2364,11 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" @@ -2023,6 +2379,11 @@ get-caller-file@^2.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-stdin@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" + integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ== + get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -2043,6 +2404,13 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.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== + dependencies: + is-glob "^4.0.1" + glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" @@ -2060,7 +2428,7 @@ glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -global-modules@2.0.0: +global-modules@2.0.0, global-modules@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== @@ -2096,11 +2464,23 @@ global-prefix@^3.0.0: kind-of "^6.0.2" which "^1.3.1" -globals@^11.7.0: +globals@^11.1.0, globals@^11.7.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +globby@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.0.tgz#56fd0e9f0d4f8fb0c456f1ab0dee96e1380bc154" + integrity sha512-iuehFnR3xu5wBBtm4xi0dMe92Ob87ufyu/dHwpDYfbcpYpIbrO5OnS8M1vWvrBhSGEJ3/Ecj7gnX76P8YxpPEg== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" @@ -2137,6 +2517,18 @@ globby@^8.0.1: pify "^3.0.0" slash "^1.0.0" +globjoin@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" + integrity sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM= + +gonzales-pe@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.2.4.tgz#356ae36a312c46fe0f1026dd6cb539039f8500d2" + integrity sha512-v0Ts/8IsSbh9n1OJRnSfa7Nlxi4AkXIsWB6vPept8FDbL4bXn3FNuxjYtO/nmBGu7GDkL9MFeGebeSu6l55EPQ== + dependencies: + minimist "1.1.x" + graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: version "4.2.1" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.1.tgz#1c1f0c364882c868f5bff6512146328336a11b1d" @@ -2147,11 +2539,21 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== +hard-rejection@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + has-symbols@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" @@ -2245,6 +2647,11 @@ homedir-polyfill@^1.0.1: dependencies: parse-passwd "^1.0.0" +hosted-git-info@^2.1.4: + version "2.8.5" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c" + integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg== + howler@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/howler/-/howler-2.1.2.tgz#8433a09d8fe84132a3e726e05cb2bd352ef8bd49" @@ -2278,6 +2685,11 @@ html-minifier@^3.2.3: relateurl "0.2.x" uglify-js "3.4.x" +html-tags@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" + integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== + html-webpack-plugin@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" @@ -2291,7 +2703,7 @@ html-webpack-plugin@^3.2.0: toposort "^1.0.0" util.promisify "1.0.0" -htmlparser2@^3.3.0: +htmlparser2@^3.10.0, htmlparser2@^3.3.0: version "3.10.1" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== @@ -2436,6 +2848,11 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" @@ -2550,6 +2967,24 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-alphabetical@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.3.tgz#eb04cc47219a8895d8450ace4715abff2258a1f8" + integrity sha512-eEMa6MKpHFzw38eKm56iNNi6GJ7lf6aLLio7Kr23sJPAECscgRtZvOBYybejWDQ2bM949Y++61PY+udzj5QMLA== + +is-alphanumeric@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz#4a9cef71daf4c001c1d81d63d140cf53fd6889f4" + integrity sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ= + +is-alphanumerical@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.3.tgz#57ae21c374277b3defe0274c640a5704b8f6657c" + integrity sha512-A1IGAPO5AW9vSh7omxIlOGwIqEvpW/TA+DksVOPM5ODuxKlZS09+TEM1E3275lJqO2oJ38vDpeAL3DCIiHE6eA== + dependencies: + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + is-arguments@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" @@ -2567,6 +3002,11 @@ is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== +is-buffer@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" + integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== + is-callable@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" @@ -2591,6 +3031,11 @@ is-date-object@^1.0.1: resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= +is-decimal@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.3.tgz#381068759b9dc807d8c0dc0bfbae2b68e1da48b7" + integrity sha512-bvLSwoDg2q6Gf+E2LEPiklHZxxiSi3XAh4Mav65mKqTfCO1HM3uBs24TjEH8iJX3bbDdLXKJXBTmGzuTUuAEjQ== + is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" @@ -2638,6 +3083,11 @@ is-fullwidth-code-point@^2.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -2652,6 +3102,11 @@ is-glob@^4.0.0, is-glob@^4.0.1: dependencies: is-extglob "^2.1.1" +is-hexadecimal@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.3.tgz#e8a426a69b6d31470d3a33a47bb825cda02506ee" + integrity sha512-zxQ9//Q3D/34poZf8fiy3m3XVpbQc7ren15iKqrTtLPwkPD/t3Scy9Imp63FujULGxuK0ZlCwoo5xNpktFgbOA== + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -2659,6 +3114,16 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + is-path-cwd@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" @@ -2678,6 +3143,11 @@ is-path-inside@^2.1.0: dependencies: path-is-inside "^1.0.2" +is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -2697,6 +3167,11 @@ is-regex@^1.0.4: dependencies: has "^1.0.1" +is-regexp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-2.1.0.tgz#cd734a56864e23b956bf4e7c66c396a4c0b22c2d" + integrity sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA== + is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -2709,11 +3184,26 @@ is-symbol@^1.0.2: dependencies: has-symbols "^1.0.1" +is-typedarray@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-whitespace-character@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.3.tgz#b3ad9546d916d7d3ffa78204bca0c26b56257fac" + integrity sha512-SNPgMLz9JzPccD3nPctcj8sZlX9DAMJSKH8bP7Z6bohCwuNgX8xbWr1eTAYXX9Vpi/aSn8Y1akL9WgM3t43YNQ== + is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== +is-word-character@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.3.tgz#264d15541cbad0ba833d3992c34e6b40873b08aa" + integrity sha512-0wfcrFgOOOBdgRNT9H33xe6Zi6yhX/uoc4U8NBZGeQQB0ctU1dnlNTyL9JM2646bHDTpsDm1Brb3VPoCIMrd/A== + is-wsl@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" @@ -2759,6 +3249,11 @@ js-yaml@^3.13.0, js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -2791,6 +3286,13 @@ json5@^1.0.1: dependencies: 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== + dependencies: + minimist "^1.2.0" + jstree@^3.3.7: version "3.3.8" resolved "https://registry.yarnpkg.com/jstree/-/jstree-3.3.8.tgz#8d0f506028d65e5207efa7b78e6541cbe35622c1" @@ -2827,6 +3329,11 @@ kind-of@^6.0.0, kind-of@^6.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== +known-css-properties@^0.17.0: + version "0.17.0" + resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.17.0.tgz#1c535f530ee8e9e3e27bb6a718285780e1d07326" + integrity sha512-Vi3nxDGMm/z+lAaCjvAR1u+7fiv+sG6gU/iYDj5QOF8h76ytK9EW/EKfF0NeTyiGBi8Jy6Hklty/vxISrLox3w== + lcid@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" @@ -2834,6 +3341,11 @@ lcid@^2.0.0: dependencies: invert-kv "^2.0.0" +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -2852,6 +3364,11 @@ libjass@^0.11.0: resolved "https://registry.yarnpkg.com/libjass/-/libjass-0.11.0.tgz#bff1f464a2428c3bddfb68e4503b2d52afe3d6e6" integrity sha1-v/H0ZKJCjDvd+2jkUDstUq/j1uY= +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + loader-runner@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" @@ -2884,16 +3401,42 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" -lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3: +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== +log-symbols@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== + dependencies: + chalk "^2.0.1" + +log-symbols@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" + integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== + dependencies: + chalk "^2.4.2" + loglevel@^1.6.4: version "1.6.4" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.4.tgz#f408f4f006db8354d0577dcf6d33485b3cb90d56" integrity sha512-p0b6mOGKcGa+7nnmKbpzR6qloPbrgLcnio++E+14Vo/XffOGwZtRpUhr8dTH/x2oCMmEoIU0Zwm3ZauhvYD17g== +longest-streak@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.3.tgz#3de7a3f47ee18e9074ded8575b5c091f5d0a4105" + integrity sha512-9lz5IVdpwsKLMzQi0MQ+oD9EA0mIGcWYP7jXMTZVXP8D42PwuAk+M/HBFYQoxt1G5OR8m7aSIgb1UymfWGBWEw== + lower-case@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" @@ -2931,6 +3474,16 @@ map-cache@^0.2.2: resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= +map-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= + +map-obj@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.1.0.tgz#b91221b542734b9f14256c0132c897c5d7256fd5" + integrity sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g== + map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" @@ -2938,6 +3491,21 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +markdown-escapes@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.3.tgz#6155e10416efaafab665d466ce598216375195f5" + integrity sha512-XUi5HJhhV5R74k8/0H2oCbCiYf/u4cO/rX8tnGkRvrqhsr5BRNU6Mg0yt/8UIx1iIS8220BNJsDb7XnILhLepw== + +markdown-table@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60" + integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== + +mathml-tag-names@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.1.tgz#6dff66c99d55ecf739ca53c492e626f1d12a33cc" + integrity sha512-pWB896KPGSGkp1XtyzRBftpTzwSOL0Gfk0wLvxt4f2mgzjY19o0LxJ3U25vNWTzsh7da+KTbuXQoQ3lOJZ8WHw== + md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -2947,6 +3515,13 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" +mdast-util-compact@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-1.0.4.tgz#d531bb7667b5123abf20859be086c4d06c894593" + integrity sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg== + dependencies: + unist-util-visit "^1.1.0" + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -2969,12 +3544,29 @@ memory-fs@^0.4.0, memory-fs@^0.4.1: errno "^0.1.3" readable-stream "^2.0.1" +meow@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-6.0.0.tgz#949196fdf21d979379e3bdccb0411e60f8cffd93" + integrity sha512-x4rYsjigPBDAxY+BGuK83YLhUIqui5wYyZoqb6QJCUOs+0fiYq+i/NV4Jt8OgIfObZFxG9iTyvLDu4UTohGTFw== + dependencies: + "@types/minimist" "^1.2.0" + camelcase-keys "^6.1.1" + decamelize-keys "^1.1.0" + hard-rejection "^2.0.0" + minimist-options "^4.0.1" + normalize-package-data "^2.5.0" + read-pkg-up "^7.0.0" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.8.1" + yargs-parser "^16.1.0" + merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= -merge2@^1.2.3: +merge2@^1.2.3, merge2@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== @@ -3003,6 +3595,14 @@ micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" +micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -3048,6 +3648,11 @@ mimic-fn@^2.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +min-indent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.0.tgz#cfc45c37e9ec0d8f0a0ec3dd4ef7f7c3abe39256" + integrity sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY= + minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -3065,11 +3670,24 @@ minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" +minimist-options@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.0.2.tgz#29c4021373ded40d546186725e57761e4b1984a7" + integrity sha512-seq4hpWkYSUh1y7NXxzucwAN9yVlBc3Upgdjz8vLCP97jG8kaOmzYrVH/m7tQ1NYD1wdtZbSLfdy4zFmRWuc/w== + dependencies: + 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.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" @@ -3287,6 +3905,16 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.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" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -3510,6 +4138,13 @@ p-locate@^3.0.0: dependencies: p-limit "^2.0.0" +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + p-map@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" @@ -3597,6 +4232,11 @@ path-exists@^3.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -3612,6 +4252,11 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -3624,6 +4269,11 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + pbkdf2@^3.0.3: version "3.0.17" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" @@ -3635,6 +4285,11 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" +picomatch@^2.0.5: + version "2.2.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" + integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== + pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -3715,6 +4370,52 @@ postcss-modules-values@^2.0.0: icss-replace-symbols "^1.1.0" postcss "^7.0.6" +postcss-reporter@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-6.0.1.tgz#7c055120060a97c8837b4e48215661aafb74245f" + integrity sha512-LpmQjfRWyabc+fRygxZjpRxfhRf9u/fdlKf4VHG4TSPbV2XNsuISzYW1KL+1aQzx53CAppa1bKG4APIB/DOXXw== + dependencies: + chalk "^2.4.1" + lodash "^4.17.11" + log-symbols "^2.2.0" + postcss "^7.0.7" + +postcss-resolve-nested-selector@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e" + integrity sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4= + +postcss-safe-parser@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz#8756d9e4c36fdce2c72b091bbc8ca176ab1fcdea" + integrity sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ== + dependencies: + postcss "^7.0.0" + +postcss-sass@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/postcss-sass/-/postcss-sass-0.4.2.tgz#7d1f8ddf6960d329de28fb3ff43c9c42013646bc" + integrity sha512-hcRgnd91OQ6Ot9R90PE/khUDCJHG8Uxxd3F7Y0+9VHjBiJgNv7sK5FxyHMCBtoLmmkzVbSj3M3OlqUfLJpq0CQ== + dependencies: + gonzales-pe "^4.2.4" + postcss "^7.0.21" + +postcss-scss@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-2.0.0.tgz#248b0a28af77ea7b32b1011aba0f738bda27dea1" + integrity sha512-um9zdGKaDZirMm+kZFKKVsnKPF7zF7qBAtIfTSnZXD1jZ0JNZIxdB6TxQOjCnlSzLRInVl2v3YdBh/M881C4ug== + dependencies: + postcss "^7.0.0" + +postcss-selector-parser@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865" + integrity sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU= + dependencies: + dot-prop "^4.1.1" + indexes-of "^1.0.1" + uniq "^1.0.1" + postcss-selector-parser@^6.0.0: version "6.0.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" @@ -3724,6 +4425,11 @@ postcss-selector-parser@^6.0.0: indexes-of "^1.0.1" uniq "^1.0.1" +postcss-syntax@^0.36.2: + version "0.36.2" + resolved "https://registry.yarnpkg.com/postcss-syntax/-/postcss-syntax-0.36.2.tgz#f08578c7d95834574e5593a82dfbfa8afae3b51c" + integrity sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w== + postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" @@ -3738,6 +4444,15 @@ postcss@^7.0.14, postcss@^7.0.5, postcss@^7.0.6: source-map "^0.6.1" supports-color "^6.1.0" +postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.7: + version "7.0.26" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.26.tgz#5ed615cfcab35ba9bbb82414a4fa88ea10429587" + integrity sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -3856,6 +4571,11 @@ querystringify@^2.1.1: resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== +quick-lru@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== + randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -3896,6 +4616,25 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" +read-pkg-up@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" @@ -3927,6 +4666,19 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + +regenerator-runtime@^0.13.2: + version "0.13.3" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" + integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== + regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -3952,6 +4704,56 @@ relateurl@0.2.x: resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= +remark-parse@^6.0.0: + version "6.0.3" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-6.0.3.tgz#c99131052809da482108413f87b0ee7f52180a3a" + integrity sha512-QbDXWN4HfKTUC0hHa4teU463KclLAnwpn/FBn87j9cKYJWWawbiLgMfP2Q4XwhxxuuuOxHlw+pSN0OKuJwyVvg== + dependencies: + collapse-white-space "^1.0.2" + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + is-whitespace-character "^1.0.0" + is-word-character "^1.0.0" + markdown-escapes "^1.0.0" + parse-entities "^1.1.0" + repeat-string "^1.5.4" + state-toggle "^1.0.0" + trim "0.0.1" + trim-trailing-lines "^1.0.0" + unherit "^1.0.4" + unist-util-remove-position "^1.0.0" + vfile-location "^2.0.0" + xtend "^4.0.1" + +remark-stringify@^6.0.0: + version "6.0.4" + resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-6.0.4.tgz#16ac229d4d1593249018663c7bddf28aafc4e088" + integrity sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg== + dependencies: + ccount "^1.0.0" + is-alphanumeric "^1.0.0" + is-decimal "^1.0.0" + is-whitespace-character "^1.0.0" + longest-streak "^2.0.1" + markdown-escapes "^1.0.0" + markdown-table "^1.1.0" + mdast-util-compact "^1.0.0" + parse-entities "^1.0.2" + repeat-string "^1.5.4" + state-toggle "^1.0.0" + stringify-entities "^1.0.1" + unherit "^1.0.4" + xtend "^4.0.1" + +remark@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/remark/-/remark-10.0.1.tgz#3058076dc41781bf505d8978c291485fe47667df" + integrity sha512-E6lMuoLIy2TyiokHprMjcWNJ5UxfGQjaMSMhV+f4idM625UjjK4j798+gPs5mfjzDE6vL0oFKVeZM6gZVSVrzQ== + dependencies: + remark-parse "^6.0.0" + remark-stringify "^6.0.0" + unified "^7.0.0" + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -3973,11 +4775,16 @@ repeat-element@^1.1.2: resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== -repeat-string@^1.6.1: +repeat-string@^1.5.4, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= +replace-ext@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" + integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -4033,11 +4840,23 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= +resolve@^1.10.0, resolve@^1.3.2: + version "1.14.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.14.2.tgz#dbf31d0fa98b1f29aa5169783b9c290cb865fea2" + integrity sha512-EjlOBLBO1kxsUxsKjLt7TAECyKW6fOh1VRkykQkKGzcBbjjPIxBqGh0jf7GJ3k/f5mxMqW3htMD3WdTUVtW8HQ== + dependencies: + path-parse "^1.0.6" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -4056,6 +4875,11 @@ retry@^0.12.0: resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= +reusify@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + rimraf@2.6.3, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" @@ -4078,6 +4902,11 @@ run-async@^2.2.0: dependencies: is-promise "^2.1.0" +run-parallel@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" + integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== + run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" @@ -4148,6 +4977,11 @@ selfsigned@^1.10.7: dependencies: node-forge "0.9.0" +"semver@2 || 3 || 4 || 5", semver@^5.4.1: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + semver@^5.3.0, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: version "5.7.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" @@ -4270,6 +5104,11 @@ slash@^1.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -4363,7 +5202,7 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= -source-map@^0.5.6: +source-map@^0.5.0, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -4373,6 +5212,32 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + spdy-transport@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" @@ -4396,6 +5261,11 @@ spdy@^4.0.1: select-hose "^2.0.0" spdy-transport "^3.0.0" +specificity@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.4.1.tgz#aab5e645012db08ba182e151165738d00887b019" + integrity sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg== + 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" @@ -4415,6 +5285,11 @@ ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" +state-toggle@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.2.tgz#75e93a61944116b4959d665c8db2d243631d6ddc" + integrity sha512-8LpelPGR0qQM4PnfLiplOQNJcIN1/r2Gy0xKB2zKnIW2YzPMt2sR4I/+gtPjhN7Svh9kw+zqEg2SFwpBO9iNiw== + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -4486,6 +5361,15 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" +string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + string.prototype.trimleft@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634" @@ -4523,6 +5407,16 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +stringify-entities@^1.0.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-1.3.2.tgz#a98417e5471fd227b3e45d3db1861c11caf668f7" + integrity sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A== + dependencies: + character-entities-html4 "^1.0.0" + character-entities-legacy "^1.0.0" + is-alphanumerical "^1.0.0" + is-hexadecimal "^1.0.0" + strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -4544,11 +5438,25 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + strip-json-comments@^2.0.1, 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" @@ -4562,6 +5470,72 @@ style-loader@^0.23.1: loader-utils "^1.1.0" schema-utils "^1.0.0" +style-search@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902" + integrity sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI= + +stylelint@^13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-13.0.0.tgz#532007f7154c1a5ed14245d857a5884316f5111f" + integrity sha512-6sjgOJbM3iLhnUtmRO0J1vvxie9VnhIZX/2fCehjylv9Gl9u0ytehGCTm9Lhw2p1F8yaNZn5UprvhCB8C3g/Tg== + dependencies: + autoprefixer "^9.7.3" + balanced-match "^1.0.0" + chalk "^3.0.0" + cosmiconfig "^6.0.0" + debug "^4.1.1" + execall "^2.0.0" + file-entry-cache "^5.0.1" + get-stdin "^7.0.0" + global-modules "^2.0.0" + globby "^11.0.0" + globjoin "^0.1.4" + html-tags "^3.1.0" + ignore "^5.1.4" + import-lazy "^4.0.0" + imurmurhash "^0.1.4" + known-css-properties "^0.17.0" + leven "^3.1.0" + lodash "^4.17.15" + log-symbols "^3.0.0" + mathml-tag-names "^2.1.1" + meow "^6.0.0" + micromatch "^4.0.2" + normalize-selector "^0.2.0" + postcss "^7.0.26" + postcss-html "^0.36.0" + postcss-jsx "^0.36.3" + postcss-less "^3.1.4" + postcss-markdown "^0.36.0" + postcss-media-query-parser "^0.2.3" + postcss-reporter "^6.0.1" + postcss-resolve-nested-selector "^0.1.1" + postcss-safe-parser "^4.0.1" + postcss-sass "^0.4.2" + postcss-scss "^2.0.0" + postcss-selector-parser "^3.1.0" + postcss-syntax "^0.36.2" + postcss-value-parser "^4.0.2" + resolve-from "^5.0.0" + slash "^3.0.0" + specificity "^0.4.1" + string-width "^4.2.0" + strip-ansi "^6.0.0" + style-search "^0.1.0" + sugarss "^2.0.0" + svg-tags "^1.0.0" + table "^5.4.6" + v8-compile-cache "^2.1.0" + write-file-atomic "^3.0.1" + +sugarss@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-2.0.0.tgz#ddd76e0124b297d40bf3cca31c8b22ecb43bc61d" + integrity sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ== + dependencies: + postcss "^7.0.2" + supports-color@6.1.0, supports-color@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" @@ -4576,6 +5550,18 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" +supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + +svg-tags@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" + integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q= + swiper@^3.4.2: version "3.4.2" resolved "https://registry.yarnpkg.com/swiper/-/swiper-3.4.2.tgz#39d6b410b1a39833e1f72d3b72999df5f5e38392" @@ -4591,6 +5577,16 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" +table@^5.4.6: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + tapable@^1.0.0, tapable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" @@ -4675,6 +5671,11 @@ to-arraybuffer@^1.0.0: resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -4690,6 +5691,13 @@ to-regex-range@^2.1.0: is-number "^3.0.0" repeat-string "^1.6.1" +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" @@ -4710,6 +5718,26 @@ toposort@^1.0.0: resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= +trim-newlines@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.0.tgz#79726304a6a898aa8373427298d54c2ee8b1cb30" + integrity sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA== + +trim-trailing-lines@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.2.tgz#d2f1e153161152e9f02fabc670fb40bec2ea2e3a" + integrity sha512-MUjYItdrqqj2zpcHFTkMa9WAv4JHTI6gnRQGPFLrt5L9a6tRMiDnIqYl8JBvu2d2Tc3lWJKQwlGCp0K8AvCM+Q== + +trim@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" + integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0= + +trough@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.4.tgz#3b52b1f13924f460c3fbfd0df69b587dbcbc762e" + integrity sha512-tdzBRDGWcI1OpPVmChbdSKhvSVurznZ8X36AYURAcl+0o2ldlCY2XPzyXNNxwJwwyIU+rIglTCG4kxtNKBQH7Q== + tslib@^1.9.0: version "1.10.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" @@ -4727,6 +5755,16 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -4735,6 +5773,13 @@ type-is@~1.6.17, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -4756,6 +5801,28 @@ uglify-js@3.4.x: commander "~2.19.0" source-map "~0.6.1" +unherit@^1.0.4: + version "1.1.2" + resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.2.tgz#14f1f397253ee4ec95cec167762e77df83678449" + integrity sha512-W3tMnpaMG7ZY6xe/moK04U9fBhi6wEiCYHUW5Mop/wQHf12+79EQGwxYejNdhEz2mkqkBlGwm7pxmgBKMVUj0w== + dependencies: + inherits "^2.0.1" + xtend "^4.0.1" + +unified@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/unified/-/unified-7.1.0.tgz#5032f1c1ee3364bd09da12e27fdd4a7553c7be13" + integrity sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw== + dependencies: + "@types/unist" "^2.0.0" + "@types/vfile" "^3.0.0" + bail "^1.0.0" + extend "^3.0.0" + is-plain-obj "^1.1.0" + trough "^1.0.0" + vfile "^3.0.0" + x-is-string "^0.1.0" + union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -4785,6 +5852,51 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" +unist-util-find-all-after@^1.0.2: + version "1.0.5" + resolved "https://registry.yarnpkg.com/unist-util-find-all-after/-/unist-util-find-all-after-1.0.5.tgz#5751a8608834f41d117ad9c577770c5f2f1b2899" + integrity sha512-lWgIc3rrTMTlK1Y0hEuL+k+ApzFk78h+lsaa2gHf63Gp5Ww+mt11huDniuaoq1H+XMK2lIIjjPkncxXcDp3QDw== + dependencies: + unist-util-is "^3.0.0" + +unist-util-is@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd" + integrity sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A== + +unist-util-remove-position@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz#ec037348b6102c897703eee6d0294ca4755a2020" + integrity sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A== + dependencies: + unist-util-visit "^1.1.0" + +unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz#3f37fcf351279dcbca7480ab5889bb8a832ee1c6" + integrity sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ== + +unist-util-stringify-position@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.2.tgz#5a3866e7138d55974b640ec69a94bc19e0f3fa12" + integrity sha512-nK5n8OGhZ7ZgUwoUbL8uiVRwAbZyzBsB/Ddrlbu6jwwubFza4oe15KlyEaLNMXQW1svOQq4xesUeqA85YrIUQA== + dependencies: + "@types/unist" "^2.0.2" + +unist-util-visit-parents@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz#25e43e55312166f3348cae6743588781d112c1e9" + integrity sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g== + dependencies: + unist-util-is "^3.0.0" + +unist-util-visit@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.1.tgz#4724aaa8486e6ee6e26d7ff3c8685960d560b1e3" + integrity sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw== + dependencies: + unist-util-visit-parents "^2.0.0" + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -4903,11 +6015,54 @@ v8-compile-cache@2.0.3: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe" integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w== +v8-compile-cache@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" + integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= +vfile-location@^2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.6.tgz#8a274f39411b8719ea5728802e10d9e0dff1519e" + integrity sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA== + +vfile-message@*: + version "2.0.2" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.2.tgz#75ba05090ec758fa8420f2c11ce049bcddd8cf3e" + integrity sha512-gNV2Y2fDvDOOqq8bEe7cF3DXU6QgV4uA9zMR2P8tix11l1r7zju3zry3wZ8sx+BEfuO6WQ7z2QzfWTvqHQiwsA== + dependencies: + "@types/unist" "^2.0.0" + unist-util-stringify-position "^2.0.0" + +vfile-message@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.1.1.tgz#5833ae078a1dfa2d96e9647886cd32993ab313e1" + integrity sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA== + dependencies: + unist-util-stringify-position "^1.1.1" + +vfile@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-3.0.1.tgz#47331d2abe3282424f4a4bb6acd20a44c4121803" + integrity sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ== + dependencies: + is-buffer "^2.0.0" + replace-ext "1.0.0" + unist-util-stringify-position "^1.0.0" + vfile-message "^1.0.0" + vm-browserify@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019" @@ -5141,6 +6296,16 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= +write-file-atomic@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.1.tgz#558328352e673b5bb192cf86500d60b230667d4b" + integrity sha512-JPStrIyyVJ6oCSz/691fAjFtefZ6q+fP6tm+OS4Qw6o+TGQxNp1ziY2PgS+X/m0V8OWhZiO/m4xSj+Pr4RrZvw== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + write@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" @@ -5155,7 +6320,12 @@ ws@^6.2.1: dependencies: async-limiter "~1.0.0" -xtend@^4.0.0, xtend@~4.0.1: +x-is-string@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" + integrity sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI= + +xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== @@ -5170,6 +6340,13 @@ yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== +yaml@^1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.7.2.tgz#f26aabf738590ab61efaca502358e48dc9f348b2" + integrity sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw== + dependencies: + "@babel/runtime" "^7.6.3" + yargs-parser@^11.1.1: version "11.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" @@ -5186,6 +6363,14 @@ 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== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs@12.0.5: version "12.0.5" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" From 51d9176d8bdbcc8ed9a2097a82a9e232340443b0 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 13:32:59 +0100 Subject: [PATCH 038/105] Fix at-rule-empty-line-before (CSS) --- src/assets/css/videoosd.css | 1 + src/components/viewManager/viewContainer.css | 1 + 2 files changed, 2 insertions(+) diff --git a/src/assets/css/videoosd.css b/src/assets/css/videoosd.css index c43696dd45..833cfcb4f9 100644 --- a/src/assets/css/videoosd.css +++ b/src/assets/css/videoosd.css @@ -273,6 +273,7 @@ display: none !important } } + @media all and (max-width:50em) { .videoOsdBottom .btnFastForward, .videoOsdBottom .btnRewind { display: none !important diff --git a/src/components/viewManager/viewContainer.css b/src/components/viewManager/viewContainer.css index edfa101976..26edaaef34 100644 --- a/src/components/viewManager/viewContainer.css +++ b/src/components/viewManager/viewContainer.css @@ -18,6 +18,7 @@ opacity: 0; } } + @keyframes view-fadein { from { opacity: 0; From 361d6372b017e098245652acb0774c85f6ca5d0d Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 13:40:48 +0100 Subject: [PATCH 039/105] Fix declaration-block-no-duplicate-properties (CSS) --- src/components/cardbuilder/card.css | 1 - src/components/navdrawer/navdrawer.css | 1 - src/components/playerstats/playerstats.css | 1 - src/elements/emby-button/emby-button.css | 5 ----- src/elements/emby-checkbox/emby-checkbox.css | 1 - src/elements/emby-collapse/emby-collapse.css | 1 - 6 files changed, 10 deletions(-) diff --git a/src/components/cardbuilder/card.css b/src/components/cardbuilder/card.css index 96d0698f4b..d0f9a65840 100644 --- a/src/components/cardbuilder/card.css +++ b/src/components/cardbuilder/card.css @@ -344,7 +344,6 @@ button { .textActionButton { border: 0 !important; background: transparent; - border: 0 !important; padding: 0 !important; cursor: pointer; -webkit-tap-highlight-color: rgba(0,0,0,0); diff --git a/src/components/navdrawer/navdrawer.css b/src/components/navdrawer/navdrawer.css index f774c6919f..7f9faafe1b 100644 --- a/src/components/navdrawer/navdrawer.css +++ b/src/components/navdrawer/navdrawer.css @@ -38,7 +38,6 @@ .tmla-mask { left: 0; right: 0; - background-color: #000; opacity: 0; z-index: 1098; -webkit-transition: opacity ease-in-out .38s, visibility ease-in-out .38s; diff --git a/src/components/playerstats/playerstats.css b/src/components/playerstats/playerstats.css index b9d6355bd2..6e363a8982 100644 --- a/src/components/playerstats/playerstats.css +++ b/src/components/playerstats/playerstats.css @@ -5,7 +5,6 @@ left: 1.5em; position: absolute; top: 5em; - color: #fff; } .playerStats-tv { diff --git a/src/elements/emby-button/emby-button.css b/src/elements/emby-button/emby-button.css index 2201b2cd77..f78fa21e74 100644 --- a/src/elements/emby-button/emby-button.css +++ b/src/elements/emby-button/emby-button.css @@ -18,11 +18,9 @@ padding: 0.9em 1em; vertical-align: middle; border: 0; - vertical-align: middle; border-radius: 0.2em; /* These are getting an outline in opera tv browsers, which run chrome 30 */ outline: none !important; - position: relative; font-weight: 600; /* Disable webkit tap highlighting */ -webkit-tap-highlight-color: rgba(0,0,0,0); @@ -112,10 +110,8 @@ padding: .556em; vertical-align: middle; border: 0; - vertical-align: middle; /* These are getting an outline in opera tv browsers, which run chrome 30 */ outline: none !important; - position: relative; overflow: hidden; border-radius: 50%; /* Disable webkit tap highlighting */ @@ -169,7 +165,6 @@ .filterButtonBubble { color: #fff; position: absolute; - background: #444; top: 0; right: 0; width: 1.6em; diff --git a/src/elements/emby-checkbox/emby-checkbox.css b/src/elements/emby-checkbox/emby-checkbox.css index a31691f9d3..254f092ac9 100644 --- a/src/elements/emby-checkbox/emby-checkbox.css +++ b/src/elements/emby-checkbox/emby-checkbox.css @@ -49,7 +49,6 @@ position: absolute; top: 3px; left: 0; - display: inline-block; box-sizing: border-box; width: 1.83em; height: 1.83em; diff --git a/src/elements/emby-collapse/emby-collapse.css b/src/elements/emby-collapse/emby-collapse.css index 0a982e975d..50674313a4 100644 --- a/src/elements/emby-collapse/emby-collapse.css +++ b/src/elements/emby-collapse/emby-collapse.css @@ -18,7 +18,6 @@ text-transform: none; width: 100%; text-align: left; - text-transform: none; border-width: 0 0 .1em 0; border-style: solid; padding-left: .1em; From ff67afeaa7470e74d72b90afb57df0ec7dbf8d95 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 13:50:29 +0100 Subject: [PATCH 040/105] Fix declaration-block-no-shorthand-property-overrides (CSS) --- src/assets/css/dashboard.css | 2 +- src/components/cardbuilder/card.css | 2 +- src/elements/emby-button/emby-button.css | 4 ++-- src/elements/emby-slider/emby-slider.css | 2 +- src/themes/blueradiance/theme.css | 4 ++-- src/themes/purplehaze/theme.css | 2 +- src/themes/wmc/theme.css | 10 ++++++---- 7 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/assets/css/dashboard.css b/src/assets/css/dashboard.css index d1f0b540aa..7c905b2c21 100644 --- a/src/assets/css/dashboard.css +++ b/src/assets/css/dashboard.css @@ -417,6 +417,7 @@ div[data-role=controlgroup] a.ui-btn-active { } a[data-role=button] { + background: #292929 !important; background-clip: padding-box; -webkit-font-smoothing: antialiased; -webkit-user-select: none; @@ -429,7 +430,6 @@ a[data-role=button] { padding: .8em 1em; text-align: center; text-decoration: none !important; - background: #292929 !important; } @-webkit-keyframes rotating { diff --git a/src/components/cardbuilder/card.css b/src/components/cardbuilder/card.css index d0f9a65840..c5e56c7a87 100644 --- a/src/components/cardbuilder/card.css +++ b/src/components/cardbuilder/card.css @@ -12,8 +12,8 @@ button { font-size: inherit !important; font-family: inherit !important; text-transform: none; - background-color: transparent !important; background: none !important; + background-color: transparent !important; margin: 0; padding: 0; display: block; diff --git a/src/elements/emby-button/emby-button.css b/src/elements/emby-button/emby-button.css index f78fa21e74..60f0e943c9 100644 --- a/src/elements/emby-button/emby-button.css +++ b/src/elements/emby-button/emby-button.css @@ -8,6 +8,8 @@ font-size: inherit; font-family: inherit; color: inherit; + /* These are getting an outline in opera tv browsers, which run chrome 30 */ + outline: none !important; outline-width: 0; -moz-user-select: none; -ms-user-select: none; @@ -19,8 +21,6 @@ vertical-align: middle; border: 0; border-radius: 0.2em; - /* These are getting an outline in opera tv browsers, which run chrome 30 */ - outline: none !important; font-weight: 600; /* Disable webkit tap highlighting */ -webkit-tap-highlight-color: rgba(0,0,0,0); diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index 71f260772f..f42d6e548d 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -102,8 +102,8 @@ _:-ms-input-placeholder { height: 0.9em; box-sizing: border-box; border-radius: 50%; - background-image: none; background: #00a4dc; + background-image: none; border: none; transform: Scale(1.4, 1.4); } diff --git a/src/themes/blueradiance/theme.css b/src/themes/blueradiance/theme.css index 5469076a4b..6040d9b19f 100644 --- a/src/themes/blueradiance/theme.css +++ b/src/themes/blueradiance/theme.css @@ -26,11 +26,11 @@ html { .skinHeader.semiTransparent { -webkit-backdrop-filter: none !important; backdrop-filter: none !important; - background-color: rgba(0, 0, 0, .3); background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, .6)), to(rgba(0, 0, 0, 0))); background: -webkit-linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)); background: -o-linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)); - background: linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)) + background: linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)); + background-color: rgba(0, 0, 0, .3); } .pageTitleWithDefaultLogo { diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index ebd290e940..12045f50b2 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -26,11 +26,11 @@ html { .skinHeader.semiTransparent { -webkit-backdrop-filter: none !important; backdrop-filter: none !important; - background-color: rgba(0, 0, 0, .3); background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, .6)), to(rgba(0, 0, 0, 0))); background: -webkit-linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)); background: -o-linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)); background: linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)) + background-color: rgba(0, 0, 0, .3); } .pageTitleWithDefaultLogo { diff --git a/src/themes/wmc/theme.css b/src/themes/wmc/theme.css index 5020414cb5..d0691877b5 100644 --- a/src/themes/wmc/theme.css +++ b/src/themes/wmc/theme.css @@ -22,21 +22,21 @@ html { .formDialogHeader:not(.formDialogHeader-clear), .skinHeader-withBackground { - background-color: #0C2450; background: -webkit-gradient(linear, left top, left bottom, from(#0C2450), to(#081B3B)); background: -webkit-linear-gradient(top, #0C2450, #081B3B); background: -o-linear-gradient(top, #0C2450, #081B3B); - background: linear-gradient(to bottom, #0C2450, #081B3B) + background: linear-gradient(to bottom, #0C2450, #081B3B); + background-color: #0C2450; } .skinHeader.semiTransparent { -webkit-backdrop-filter: none !important; backdrop-filter: none !important; - background-color: rgba(0, 0, 0, .3); background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, .6)), to(rgba(0, 0, 0, 0))); background: -webkit-linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)); background: -o-linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)); background: linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)) + background-color: rgba(0, 0, 0, .3); } .pageTitleWithDefaultLogo { @@ -45,11 +45,11 @@ html { .backgroundContainer, .dialog { - background-color: #0F3562; background: -webkit-gradient(linear, left top, left bottom, from(#0F3562), color-stop(#1162A4), to(#03215F)); background: -webkit-linear-gradient(top, #0F3562, #1162A4, #03215F); background: -o-linear-gradient(top, #0F3562, #1162A4, #03215F); background: linear-gradient(to bottom, #0F3562, #1162A4, #03215F) + background-color: #0F3562; } .backgroundContainer.withBackdrop { @@ -427,6 +427,7 @@ html { } ::-webkit-scrollbar-track { + box-shadow: inset 0 0 6px rgba(0, 0, 0, .3) -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3) } @@ -436,6 +437,7 @@ html { ::-webkit-scrollbar-thumb:horizontal, ::-webkit-scrollbar-thumb:vertical { + border-radius: 2px; -webkit-border-radius: 2px; background: center no-repeat rgba(255, 255, 255, .7) } From 2a89f31383731d55f114cecd1b9dd9b2da6ba7c1 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 14:04:48 +0100 Subject: [PATCH 041/105] Fix no-duplicate-selectors (CSS) --- src/assets/css/fonts.css | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/assets/css/fonts.css b/src/assets/css/fonts.css index 12f1eaf4b7..c52eb653e8 100644 --- a/src/assets/css/fonts.css +++ b/src/assets/css/fonts.css @@ -1,8 +1,5 @@ html { font-family: -apple-system, "Helvetica", system-ui, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen-Sans", "Ubuntu", "Cantarell", "Helvetica Neue", 'Open Sans', sans-serif; -} - -html { font-size: 93%; -webkit-text-size-adjust: 100%; text-size-adjust: 100%; From ba8b34cd5684d9c0b2e52e74b5ebf60d128e459b Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 14:11:12 +0100 Subject: [PATCH 042/105] Fix no-duplicate-selectors (CSS) --- src/components/cardbuilder/card.css | 4 ---- src/components/guide/guide.css | 26 ++++++++------------------ src/elements/emby-radio/emby-radio.css | 6 +----- 3 files changed, 9 insertions(+), 27 deletions(-) diff --git a/src/components/cardbuilder/card.css b/src/components/cardbuilder/card.css index c5e56c7a87..ede4c79438 100644 --- a/src/components/cardbuilder/card.css +++ b/src/components/cardbuilder/card.css @@ -212,10 +212,6 @@ button { box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37); } -.cardImageContainer { - display: flex; -} - .cardImage { position: absolute; top: 0; diff --git a/src/components/guide/guide.css b/src/components/guide/guide.css index 7dd0594149..ad3f4e7971 100644 --- a/src/components/guide/guide.css +++ b/src/components/guide/guide.css @@ -51,6 +51,8 @@ } .guide-channelTimeslotHeader { + border: 0 !important; + border-right-color: transparent; flex-shrink: 0; justify-content: center; } @@ -69,9 +71,14 @@ } .channelPrograms { + height: 4.42em; + contain: strict; + display: flex; + flex-direction: column; + border-style: solid; + border-width: 1px 0 1px 0; white-space: nowrap; position: relative; - contain: strict; box-sizing: border-box; } @@ -148,10 +155,6 @@ background: transparent; } -.guide-channelTimeslotHeader { - border: 0 !important; -} - /* Important - have to put the fixed width on channelsContainer, not the individual channelHeaderCell This was causing channelsContainer to extend beyond the fixed width on ps4, tizen, lg and opera tv. */ @@ -203,15 +206,6 @@ } } -.channelPrograms { - height: 4.42em; - contain: strict; - display: flex; - flex-direction: column; - border-style: solid; - border-width: 1px 0 1px 0; -} - .channelPrograms + .channelPrograms, .guide-channelHeaderCell + .guide-channelHeaderCell { margin-top: -1px; } @@ -220,10 +214,6 @@ height: 3em; } -.guide-channelTimeslotHeader { - border-right-color: transparent; -} - .guide-channelTimeslotHeader, .timeslotHeader { background: transparent !important; height: 2.8em; diff --git a/src/elements/emby-radio/emby-radio.css b/src/elements/emby-radio/emby-radio.css index 25fdc5b933..a60c131f09 100644 --- a/src/elements/emby-radio/emby-radio.css +++ b/src/elements/emby-radio/emby-radio.css @@ -4,7 +4,7 @@ display: inline-block; box-sizing: border-box; margin: 0; - padding-left: 0; + padding-left: 24px; } .radio-label-block { @@ -14,10 +14,6 @@ margin-bottom: .5em; } -.mdl-radio { - padding-left: 24px; -} - .mdl-radio__button { line-height: 24px; position: absolute; From eef526df2c0c034c848fa8baebf0ef4c47c7c8bb Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 14:29:41 +0100 Subject: [PATCH 043/105] Fix no-descending-specificity (CSS) --- src/assets/css/dashboard.css | 120 +++++++++++------------ src/assets/css/librarybrowser.css | 65 ++++++------ src/components/cardbuilder/card.css | 52 +++++----- src/components/guide/guide.css | 8 +- src/components/listview/listview.css | 10 +- src/components/loading/loading.css | 26 ++--- src/elements/emby-select/emby-select.css | 8 +- src/themes/appletv/theme.css | 10 +- src/themes/blueradiance/theme.css | 18 ++-- src/themes/dark/theme.css | 18 ++-- src/themes/light/theme.css | 10 +- src/themes/purplehaze/theme.css | 56 +++++------ src/themes/wmc/theme.css | 20 ++-- 13 files changed, 209 insertions(+), 212 deletions(-) diff --git a/src/assets/css/dashboard.css b/src/assets/css/dashboard.css index 7c905b2c21..507179af23 100644 --- a/src/assets/css/dashboard.css +++ b/src/assets/css/dashboard.css @@ -49,8 +49,9 @@ progress[aria-valuenow]:before { @media all and (min-width:50em) { - .type-interior>.ui-panel-content-wrap>div[data-role=content], - .type-interior>div[data-role=content] { + .type-interior>div[data-role=content], + .type-interior>.ui-panel-content-wrap>div[data-role=content] + { padding-right: 0; padding-left: 0; padding-top: 0; @@ -74,6 +75,22 @@ progress[aria-valuenow]:before { height: 4em } +a[data-role=button] { + background: #292929 !important; + background-clip: padding-box; + -webkit-font-smoothing: antialiased; + -webkit-user-select: none; + -webkit-background-clip: padding-box; + cursor: pointer !important; + font-family: inherit !important; + font-weight: 500 !important; + margin: 0 .25em !important; + display: inline-block; + padding: .8em 1em; + text-align: center; + text-decoration: none !important; +} + div[data-role=controlgroup] a[data-role=button] { display: inline-block !important; margin: 0 !important; @@ -107,6 +124,24 @@ div[data-role=controlgroup] a.ui-btn-active { color: #292929 !important } +.sessionAppInfo img { + max-width: 40px; + max-height: 40px; + margin-right: 8px; +} + +.appLinks img { + height: 36px +} + +.wizardContent h2 img { + height: 2.5em; + vertical-align: middle; + margin-right: .5em; + position: relative; + top: -.3em +} + .header .imageLink { display: inline-block } @@ -167,6 +202,18 @@ div[data-role=controlgroup] a.ui-btn-active { flex-grow: 1 } +.sessionNowPlayingContent { + -webkit-background-size: cover; + background-size: cover; + background-repeat: no-repeat; + background-position: center center; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0 +} + .activeSession:not(.playingSession) .sessionNowPlayingContent { display: none } @@ -213,15 +260,6 @@ div[data-role=controlgroup] a.ui-btn-active { } } -.premiumBanner img { - position: absolute; - text-align: right; - top: 0; - right: 0; - width: 4.4em; - height: 4.4em -} - .wizardContent { max-width: 62em; padding: .5em 2em 1em; @@ -237,14 +275,6 @@ div[data-role=controlgroup] a.ui-btn-active { max-width: 100% } -.wizardContent h2 img { - height: 2.5em; - vertical-align: middle; - margin-right: .5em; - position: relative; - top: -.3em -} - .scheduledTaskPaperIconItem { outline: 0 !important } @@ -296,18 +326,6 @@ div[data-role=controlgroup] a.ui-btn-active { margin: 0 } -.sessionNowPlayingContent { - -webkit-background-size: cover; - background-size: cover; - background-repeat: no-repeat; - background-position: center center; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0 -} - .sessionNowPlayingInnerContent { position: absolute; top: 0; @@ -340,12 +358,6 @@ div[data-role=controlgroup] a.ui-btn-active { padding: 0.8em 0.5em; } -.sessionAppInfo img { - max-width: 40px; - max-height: 40px; - margin-right: 8px; -} - .sessionNowPlayingTime { flex-shrink: 0; align-self: flex-end; @@ -357,6 +369,13 @@ div[data-role=controlgroup] a.ui-btn-active { white-space: nowrap; } +.playbackProgress, +.transcodingProgress { + margin: 0px; + width: 100%; + background: transparent !important; +} + .activeSession .playbackProgress, .activeSession .transcodingProgress { position: absolute; @@ -367,13 +386,6 @@ div[data-role=controlgroup] a.ui-btn-active { width: 100%; } -.playbackProgress, -.transcodingProgress { - margin: 0px; - width: 100%; - background: transparent !important; -} - .playbackProgress > div { z-index: 1000; background-color: #00a4dc; @@ -412,26 +424,6 @@ div[data-role=controlgroup] a.ui-btn-active { margin-left: 5px } -.appLinks img { - height: 36px -} - -a[data-role=button] { - background: #292929 !important; - background-clip: padding-box; - -webkit-font-smoothing: antialiased; - -webkit-user-select: none; - -webkit-background-clip: padding-box; - cursor: pointer !important; - font-family: inherit !important; - font-weight: 500 !important; - margin: 0 .25em !important; - display: inline-block; - padding: .8em 1em; - text-align: center; - text-decoration: none !important; -} - @-webkit-keyframes rotating { from { -webkit-transform: rotate(0); diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 6ca85ae941..f6dbed1cbc 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -84,6 +84,22 @@ display: none } +.headerLeft, +.headerRight { + justify-content: center; +} + +.headerRight { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: end; + -webkit-justify-content: flex-end; + justify-content: flex-end +} + .noHeaderRight .headerRight, .noHomeButtonHeader .headerHomeButton { display: none !important @@ -164,17 +180,6 @@ width: 100% } -.headerRight { - display: -webkit-box; - display: -webkit-flex; - display: flex; - -webkit-align-items: center; - align-items: center; - -webkit-box-pack: end; - -webkit-justify-content: flex-end; - justify-content: flex-end -} - .selectedMediaFolder { background-color: #f2f2f2 !important } @@ -358,6 +363,11 @@ margin: 0 0 .25em } +.listTopPaging, +.viewControls { + display: inline-block +} + .viewControls+.listTopPaging { margin-left: .5em !important } @@ -445,15 +455,6 @@ bottom: .75em } -.layout-mobile .detailPagePrimaryContainer { - display: block; - position: relative; -} - -.layout-tv .detailPagePrimaryContainer { - position: relative; -} - .detailPagePrimaryContainer { display: flex; align-items: center; @@ -464,6 +465,15 @@ z-index: 2; } +.layout-mobile .detailPagePrimaryContainer { + display: block; + position: relative; +} + +.layout-tv .detailPagePrimaryContainer { + position: relative; +} + .infoWrapper { flex: 1 0 0; } @@ -483,11 +493,6 @@ padding-right: 2%; } -.layout-mobile .detailImageContainer, -.layout-tv .detailImageContainer { - position: relative; -} - .detailImageContainer { margin: 1.25em 0; position: sticky; @@ -496,6 +501,11 @@ width: 22.786458333333332vw; } +.layout-mobile .detailImageContainer, +.layout-tv .detailImageContainer { + position: relative; +} + .detailPagePrimaryContent { position: relative; -webkit-box-flex: 1; @@ -741,11 +751,6 @@ } } -.listTopPaging, -.viewControls { - display: inline-block -} - @media all and (max-width:50em) { .editorMenuLink { display: none diff --git a/src/components/cardbuilder/card.css b/src/components/cardbuilder/card.css index ede4c79438..00a11a8eb5 100644 --- a/src/components/cardbuilder/card.css +++ b/src/components/cardbuilder/card.css @@ -1,12 +1,12 @@ +button { + -webkit-border-fit: border !important; +} + button::-moz-focus-inner { padding: 0; border: 0; } -button { - -webkit-border-fit: border !important; -} - .card { border: 0; font-size: inherit !important; @@ -87,6 +87,11 @@ button { contain: style; } +.card.show-animation .cardBox { + will-change: transform; + transition: transform 200ms ease-out; +} + .card.show-focus:not(.show-animation) .cardBox { margin: .4em; } @@ -96,11 +101,6 @@ button { border: .5em solid transparent; } -.card.show-animation .cardBox { - will-change: transform; - transition: transform 200ms ease-out; -} - .card.show-animation:focus > .cardBox { transform: scale(1.18, 1.18); } @@ -298,6 +298,23 @@ button { padding-top: .24em; } +.textActionButton { + border: 0 !important; + background: transparent; + padding: 0 !important; + cursor: pointer; + -webkit-tap-highlight-color: rgba(0,0,0,0); + outline: none !important; + color: inherit; + vertical-align: middle; + font-family: inherit; + font-size: inherit; +} + +.textActionButton:hover { + text-decoration: underline; +} + .cardText > .textActionButton { width: 100%; overflow: hidden; @@ -337,23 +354,6 @@ button { text-align: center; } -.textActionButton { - border: 0 !important; - background: transparent; - padding: 0 !important; - cursor: pointer; - -webkit-tap-highlight-color: rgba(0,0,0,0); - outline: none !important; - color: inherit; - vertical-align: middle; - font-family: inherit; - font-size: inherit; -} - -.textActionButton:hover { - text-decoration: underline; -} - .cardImageIcon { font-size: 5em; color: inherit; diff --git a/src/components/guide/guide.css b/src/components/guide/guide.css index ad3f4e7971..c6807a9607 100644 --- a/src/components/guide/guide.css +++ b/src/components/guide/guide.css @@ -123,6 +123,10 @@ width: 2.0833333333333333333333333333333%; } +.programCell, .guide-channelHeaderCell { + outline: none !important; +} + .guide-channelHeaderCell, .guide-channelTimeslotHeader { padding: 0 !important; cursor: pointer; @@ -362,10 +366,6 @@ contain: layout style paint; } -.programCell, .guide-channelHeaderCell { - outline: none !important; -} - .timerIcon, .seriesTimerIcon { color: #cc3333 !important; } diff --git a/src/components/listview/listview.css b/src/components/listview/listview.css index bdd9cd8acf..347d983f96 100644 --- a/src/components/listview/listview.css +++ b/src/components/listview/listview.css @@ -85,6 +85,11 @@ justify-content: center; } +.listItem, .listItemBody, .listItemMediaInfo { + display: flex; + contain: layout style; +} + .layout-tv .listItemBody { padding: .35em .75em; } @@ -241,11 +246,6 @@ align-items: center; } -.listItem, .listItemBody, .listItemMediaInfo { - display: flex; - contain: layout style; -} - .listItem-bottomoverview { font-size: 88%; margin-bottom: 1em; diff --git a/src/components/loading/loading.css b/src/components/loading/loading.css index 6d8472fc15..210746be12 100644 --- a/src/components/loading/loading.css +++ b/src/components/loading/loading.css @@ -345,19 +345,6 @@ } } -.mdl-spinner__circle-clipper { - display: inline-block; - position: relative; - width: 50%; - height: 100%; - overflow: hidden; - border-color: inherit; -} - - .mdl-spinner__circle-clipper .mdl-spinner__circle { - width: 200%; - } - .mdl-spinner__circle { box-sizing: border-box; height: 100%; @@ -375,6 +362,19 @@ left: 0; } +.mdl-spinner__circle-clipper { + display: inline-block; + position: relative; + width: 50%; + height: 100%; + overflow: hidden; + border-color: inherit; +} + + .mdl-spinner__circle-clipper .mdl-spinner__circle { + width: 200%; + } + .mdl-spinner__circleLeft { border-right-color: transparent !important; -webkit-transform: rotate(129deg); diff --git a/src/elements/emby-select/emby-select.css b/src/elements/emby-select/emby-select.css index 76b28c4208..391f131a63 100644 --- a/src/elements/emby-select/emby-select.css +++ b/src/elements/emby-select/emby-select.css @@ -25,6 +25,10 @@ appearance: none; } +.emby-select::-moz-focus-inner { + border: 0; +} + .selectContainer-inline > .emby-select { padding: .3em 1.9em .3em .5em; font-size: inherit; @@ -35,10 +39,6 @@ padding-right: 0; } -.emby-select::-moz-focus-inner { - border: 0; -} - .emby-select-focusscale { transition: transform 180ms ease-out !important; -webkit-transform-origin: center center; diff --git a/src/themes/appletv/theme.css b/src/themes/appletv/theme.css index 806482d5e9..03a1128df3 100644 --- a/src/themes/appletv/theme.css +++ b/src/themes/appletv/theme.css @@ -280,6 +280,11 @@ html { border-color: #fff; } +.emby-checkbox:checked+span+.checkboxOutline, +.itemProgressBarForeground { + background-color: #00a4dc +} + .emby-checkbox:focus:not(:checked)+span+.checkboxOutline { border-color: #00a4dc; } @@ -294,11 +299,6 @@ html { color: #fff } -.emby-checkbox:checked+span+.checkboxOutline, -.itemProgressBarForeground { - background-color: #00a4dc -} - .itemProgressBarForeground-recording { background-color: #CB272A } diff --git a/src/themes/blueradiance/theme.css b/src/themes/blueradiance/theme.css index 6040d9b19f..a4c4531e41 100644 --- a/src/themes/blueradiance/theme.css +++ b/src/themes/blueradiance/theme.css @@ -290,15 +290,15 @@ html { border-color: #fff; } -.emby-checkbox:focus:not(:checked)+span+.checkboxOutline { - border-color: #00a4dc; -} - .emby-checkbox:checked+span+.checkboxOutline, .itemProgressBarForeground { background-color: #00a4dc } +.emby-checkbox:focus:not(:checked)+span+.checkboxOutline { + border-color: #00a4dc; +} + .itemProgressBarForeground-recording { background-color: #CB272A } @@ -437,11 +437,6 @@ html { border-color: #00a4dc !important } -.layout-desktop ::-webkit-scrollbar { - width: 1em; - height: 1em -} - ::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3) } @@ -450,6 +445,11 @@ html { background-color: #3b3b3b } +.layout-desktop ::-webkit-scrollbar { + width: 1em; + height: 1em +} + ::-webkit-scrollbar-thumb:horizontal, ::-webkit-scrollbar-thumb:vertical { -webkit-border-radius: 2px; diff --git a/src/themes/dark/theme.css b/src/themes/dark/theme.css index d32b47279c..006aabf852 100644 --- a/src/themes/dark/theme.css +++ b/src/themes/dark/theme.css @@ -264,15 +264,15 @@ html { border-color: #fff; } -.emby-checkbox:focus:not(:checked)+span+.checkboxOutline { - border-color: #00a4dc; -} - .emby-checkbox:checked+span+.checkboxOutline, .itemProgressBarForeground { background-color: #00a4dc } +.emby-checkbox:focus:not(:checked)+span+.checkboxOutline { + border-color: #00a4dc; +} + .itemProgressBarForeground-recording { background-color: #CB272A } @@ -407,11 +407,6 @@ html { border-color: #00a4dc !important } -.layout-desktop ::-webkit-scrollbar { - width: 1em; - height: 1em -} - ::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3) } @@ -420,6 +415,11 @@ html { background-color: #3b3b3b } +.layout-desktop ::-webkit-scrollbar { + width: 1em; + height: 1em +} + ::-webkit-scrollbar-thumb:horizontal, ::-webkit-scrollbar-thumb:vertical { -webkit-border-radius: 2px; diff --git a/src/themes/light/theme.css b/src/themes/light/theme.css index 0824134df2..449ddb0912 100644 --- a/src/themes/light/theme.css +++ b/src/themes/light/theme.css @@ -273,6 +273,11 @@ html { border-color: #000; } +.emby-checkbox:checked+span+.checkboxOutline, +.itemProgressBarForeground { + background-color: #00a4dc +} + .emby-checkbox:focus:not(:checked)+span+.checkboxOutline { border-color: #00a4dc; } @@ -287,11 +292,6 @@ html { color: #fff } -.emby-checkbox:checked+span+.checkboxOutline, -.itemProgressBarForeground { - background-color: #00a4dc -} - .itemProgressBarForeground-recording { background-color: #CB272A } diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index 12045f50b2..02c6d844f7 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -117,6 +117,20 @@ a[data-role=button] { color: rgb(225, 229, 242) } +#btnResetPassword, +.btnForgotPassword, +.btnCancel, +.button-cancel { + background: rgba(0, 0, 0, .5); + color: rgba(255, 255, 255, .87); +} + +.alphaPickerButton { + color: #999; + color: rgba(255, 255, 255, .5); + background-color: transparent +} + #btnResetPassword:hover, #btnRestart:hover, #btnDeleteImage:hover, @@ -148,14 +162,6 @@ a[data-role=button] { color: rgba(255, 255, 255, .87) } -#btnResetPassword, -.btnForgotPassword, -.btnCancel, -.button-cancel { - background: rgba(0, 0, 0, .5); - color: rgba(255, 255, 255, .87); -} - .itemName { color: #f1f7ee } @@ -289,12 +295,6 @@ a[data-role=button] { color: #48C3C8 } -.alphaPickerButton { - color: #999; - color: rgba(255, 255, 255, .5); - background-color: transparent -} - .alphaPickerButton-selected { color: #0ce8d6 } @@ -379,14 +379,14 @@ a[data-role=button] { color: rgb(12, 232, 214); } -.emby-checkbox:focus:not(:checked)+span+.checkboxOutline { - border:2px solid #ff77f1; -} - .emby-checkbox:focus+span+.checkboxOutline { border-color: #ff77f1; } +.emby-checkbox:focus:not(:checked)+span+.checkboxOutline { + border:2px solid #ff77f1; +} + .itemProgressBarForeground { background-color: rgb(12, 232, 214); } @@ -525,6 +525,11 @@ a[data-role=button] { color: #4285F4 } +.personCard .cardScalable { + border-radius: 50%; + border: 1px solid rgb(255, 255, 255); +} + .card:focus .cardBox.visualCardBox, .card:focus .cardBox:not(.visualCardBox) .cardScalable { border-color: #ff77f1 !important @@ -536,11 +541,6 @@ a[data-role=button] { scrollbar-color: #888 rgba(59, 59, 59, 0.5) } -.layout-desktop ::-webkit-scrollbar { - width: .4em; - height: 1em -} - ::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3) } @@ -549,6 +549,11 @@ a[data-role=button] { background-color: rgba(59, 59, 59, 0.5) } +.layout-desktop ::-webkit-scrollbar { + width: .4em; + height: 1em +} + ::-webkit-scrollbar-thumb:horizontal, ::-webkit-scrollbar-thumb:vertical { -webkit-border-radius: 2px; @@ -573,11 +578,6 @@ a[data-role=button] { width: 40vw; } -.personCard .cardScalable { - border-radius: 50%; - border: 1px solid rgb(255, 255, 255); -} - .personCard .cardPadder-overflowPortrait, .personCard .cardPadder-portrait { padding-bottom: 100%; diff --git a/src/themes/wmc/theme.css b/src/themes/wmc/theme.css index d0691877b5..6fd3ed001f 100644 --- a/src/themes/wmc/theme.css +++ b/src/themes/wmc/theme.css @@ -263,6 +263,11 @@ html { border-color: #fff; } +.emby-checkbox:checked+span+.checkboxOutline, +.itemProgressBarForeground { + background-color: #00a4dc +} + .emby-checkbox:focus:not(:checked)+span+.checkboxOutline { border-color: #00a4dc; } @@ -277,11 +282,6 @@ html { color: #fff } -.emby-checkbox:checked+span+.checkboxOutline, -.itemProgressBarForeground { - background-color: #00a4dc -} - .itemProgressBarForeground-recording { background-color: #CB272A } @@ -421,11 +421,6 @@ html { border-color: #fff !important } -.layout-desktop ::-webkit-scrollbar { - width: 1em; - height: 1em -} - ::-webkit-scrollbar-track { box-shadow: inset 0 0 6px rgba(0, 0, 0, .3) -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3) @@ -435,6 +430,11 @@ html { background-color: #081B3B } +.layout-desktop ::-webkit-scrollbar { + width: 1em; + height: 1em +} + ::-webkit-scrollbar-thumb:horizontal, ::-webkit-scrollbar-thumb:vertical { border-radius: 2px; From e3d7040910ef25d342382f79845ce3822928c197 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 14:34:36 +0100 Subject: [PATCH 044/105] Fix selector-type-no-unknown (CSS) --- src/elements/emby-slider/emby-slider.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index f42d6e548d..22c0af5edc 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -1,4 +1,4 @@ -_:-ms-input-placeholder { +:-ms-input-placeholder { appearance: none; -ms-appearance: none; height: 2.223em; From 88cd834a191006254c0d0d31b865443ca26beba8 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 14:37:45 +0100 Subject: [PATCH 045/105] Fix block-closing-brace-newline-before (CSS) --- src/components/subtitlesync/subtitlesync.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/subtitlesync/subtitlesync.css b/src/components/subtitlesync/subtitlesync.css index 112e624722..b4552a50e2 100644 --- a/src/components/subtitlesync/subtitlesync.css +++ b/src/components/subtitlesync/subtitlesync.css @@ -14,7 +14,7 @@ top: 0; right: 0; color: #ccc; - z-index: 2; + z-index: 2; } .subtitleSyncTextField { @@ -27,7 +27,7 @@ text-align: center; font-size: 20px; color: white; - z-index: 2; + z-index: 2; } #prompt { @@ -44,5 +44,5 @@ -webkit-flex-grow: 1; flex-grow: 1; border-radius: .3em; - z-index: 1; + z-index: 1; } \ No newline at end of file From 43ffbed47167845bd02af2dc3a0baa6d7db9041f Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 14:39:15 +0100 Subject: [PATCH 046/105] Fix block-opening-brace-space-before --- src/assets/css/dashboard.css | 5 ++--- src/themes/purplehaze/theme.css | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/assets/css/dashboard.css b/src/assets/css/dashboard.css index 507179af23..95f1cabcfe 100644 --- a/src/assets/css/dashboard.css +++ b/src/assets/css/dashboard.css @@ -50,8 +50,7 @@ progress[aria-valuenow]:before { @media all and (min-width:50em) { .type-interior>div[data-role=content], - .type-interior>.ui-panel-content-wrap>div[data-role=content] - { + .type-interior>.ui-panel-content-wrap>div[data-role=content] { padding-right: 0; padding-left: 0; padding-top: 0; @@ -458,7 +457,7 @@ div[data-role=controlgroup] a.ui-btn-active { box-shadow: 0 .0725em .29em 0 rgba(0, 0, 0, .37) } -.ui-bar-a{ +.ui-bar-a { text-align: center; padding: 0 20px; } diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index 02c6d844f7..e272a9ab8e 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -584,11 +584,11 @@ a[data-role=button] { contain: strict; } -.personCard .coveredImage { +.personCard .coveredImage { clip-path: circle(50% at 50% 50%); } -.personCard .cardOverlayContainer { +.personCard .cardOverlayContainer { clip-path: circle(50% at 50% 50%); } From 04a4ca9a57ffa337c596c0a7181418a0b7b03468 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 14:40:08 +0100 Subject: [PATCH 047/105] Fix color-hex-case (CSS) --- src/assets/css/librarybrowser.css | 2 +- src/components/guide/programs.css | 2 +- src/components/indicators/indicators.css | 2 +- src/components/navdrawer/navdrawer.css | 2 +- src/components/playback/iconosd.css | 2 +- src/elements/emby-button/emby-button.css | 2 +- src/themes/appletv/theme.css | 26 +++++++------- src/themes/blueradiance/theme.css | 16 ++++----- src/themes/dark/theme.css | 16 ++++----- src/themes/light/theme.css | 24 ++++++------- src/themes/purplehaze/theme.css | 28 +++++++-------- src/themes/wmc/theme.css | 44 ++++++++++++------------ 12 files changed, 83 insertions(+), 83 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index f6dbed1cbc..8102f9084e 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -858,7 +858,7 @@ } .btnSyncComplete { - background: #673AB7 !important + background: #673ab7 !important } .btnSyncComplete i { diff --git a/src/components/guide/programs.css b/src/components/guide/programs.css index 7a559e173f..5f0e82dd82 100644 --- a/src/components/guide/programs.css +++ b/src/components/guide/programs.css @@ -9,7 +9,7 @@ } .premiereTvProgram { - background: #EF6C00; + background: #ef6c00; color: #fff; } diff --git a/src/components/indicators/indicators.css b/src/components/indicators/indicators.css index c2d089e1af..89e0a178d1 100644 --- a/src/components/indicators/indicators.css +++ b/src/components/indicators/indicators.css @@ -24,7 +24,7 @@ } .timerIndicator { - color: #CB272A; + color: #cb272a; } .timerIndicator-inactive { diff --git a/src/components/navdrawer/navdrawer.css b/src/components/navdrawer/navdrawer.css index 7f9faafe1b..6608235c2f 100644 --- a/src/components/navdrawer/navdrawer.css +++ b/src/components/navdrawer/navdrawer.css @@ -7,7 +7,7 @@ } .touch-menu-la { - background-color: #FFF; + background-color: #fff; will-change: transform; display: -webkit-box; display: -webkit-flex; diff --git a/src/components/playback/iconosd.css b/src/components/playback/iconosd.css index b2c4fca91a..3f0feeca2e 100644 --- a/src/components/playback/iconosd.css +++ b/src/components/playback/iconosd.css @@ -36,5 +36,5 @@ } .brightnessOsdProgressInner { - background: #FF9800; + background: #ff9800; } \ No newline at end of file diff --git a/src/elements/emby-button/emby-button.css b/src/elements/emby-button/emby-button.css index 60f0e943c9..fc55679678 100644 --- a/src/elements/emby-button/emby-button.css +++ b/src/elements/emby-button/emby-button.css @@ -176,6 +176,6 @@ font-size: 82%; border-radius: 100em; box-shadow: 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12), 0px 2px 4px -1px rgba(0, 0, 0, 0.2); - background: #03A9F4; + background: #03a9f4; font-weight: bold; } diff --git a/src/themes/appletv/theme.css b/src/themes/appletv/theme.css index 03a1128df3..825639973c 100644 --- a/src/themes/appletv/theme.css +++ b/src/themes/appletv/theme.css @@ -39,7 +39,7 @@ html { } html { - background: #D5E9F2 + background: #d5e9f2 } .backgroundContainer, @@ -130,19 +130,19 @@ html { } .defaultCardBackground2 { - background-color: #D32F2F + background-color: #d32f2f } .defaultCardBackground3 { - background-color: #0288D1 + background-color: #0288d1 } .defaultCardBackground4 { - background-color: #388E3C + background-color: #388e3c } .defaultCardBackground5 { - background-color: #F57F17 + background-color: #f57f17 } .formDialogFooter:not(.formDialogFooter-clear) { @@ -248,7 +248,7 @@ html { .mediaInfoTimerIcon, .starIcon { - color: #CB272A + color: #cb272a } .emby-input, @@ -300,7 +300,7 @@ html { } .itemProgressBarForeground-recording { - background-color: #CB272A + background-color: #cb272a } .countIndicator, @@ -355,19 +355,19 @@ html { } .programCell-sports { - background: #3949AB !important + background: #3949ab !important } .programCell-movie { - background: #5E35B1 !important + background: #5e35b1 !important } .programCell-kids { - background: #039BE5 !important + background: #039be5 !important } .programCell-news { - background: #43A047 !important + background: #43a047 !important } .programCell-active { @@ -418,7 +418,7 @@ html { .downloadbutton-icon-complete, .downloadbutton-icon-on { - color: #4285F4 + color: #4285f4 } .playstatebutton-icon-played { @@ -426,7 +426,7 @@ html { } .repeatButton-active { - color: #4285F4 + color: #4285f4 } .card:focus .cardBox.visualCardBox, diff --git a/src/themes/blueradiance/theme.css b/src/themes/blueradiance/theme.css index a4c4531e41..8cade96fc4 100644 --- a/src/themes/blueradiance/theme.css +++ b/src/themes/blueradiance/theme.css @@ -245,7 +245,7 @@ html { .mediaInfoTimerIcon, .starIcon { - color: #CB272A + color: #cb272a } .emby-input, @@ -300,7 +300,7 @@ html { } .itemProgressBarForeground-recording { - background-color: #CB272A + background-color: #cb272a } .countIndicator, @@ -358,19 +358,19 @@ html { } .programCell-sports { - background: #3949AB !important + background: #3949ab !important } .programCell-movie { - background: #5E35B1 !important + background: #5e35b1 !important } .programCell-kids { - background: #039BE5 !important + background: #039be5 !important } .programCell-news { - background: #43A047 !important + background: #43a047 !important } .programCell-active { @@ -421,7 +421,7 @@ html { .downloadbutton-icon-complete, .downloadbutton-icon-on { - color: #4285F4 + color: #4285f4 } .playstatebutton-icon-played { @@ -429,7 +429,7 @@ html { } .repeatButton-active { - color: #4285F4 + color: #4285f4 } .card:focus .cardBox.visualCardBox, diff --git a/src/themes/dark/theme.css b/src/themes/dark/theme.css index 006aabf852..7e0eec8c65 100644 --- a/src/themes/dark/theme.css +++ b/src/themes/dark/theme.css @@ -219,7 +219,7 @@ html { .mediaInfoTimerIcon, .starIcon { - color: #CB272A + color: #cb272a } .emby-input, @@ -274,7 +274,7 @@ html { } .itemProgressBarForeground-recording { - background-color: #CB272A + background-color: #cb272a } .countIndicator, @@ -328,19 +328,19 @@ html { } .programCell-sports { - background: #3949AB !important + background: #3949ab !important } .programCell-movie { - background: #5E35B1 !important + background: #5e35b1 !important } .programCell-kids { - background: #039BE5 !important + background: #039be5 !important } .programCell-news { - background: #43A047 !important + background: #43a047 !important } .programCell-active { @@ -391,7 +391,7 @@ html { .downloadbutton-icon-complete, .downloadbutton-icon-on { - color: #4285F4 + color: #4285f4 } .playstatebutton-icon-played { @@ -399,7 +399,7 @@ html { } .repeatButton-active { - color: #4285F4 + color: #4285f4 } .card:focus .cardBox.visualCardBox, diff --git a/src/themes/light/theme.css b/src/themes/light/theme.css index 449ddb0912..159f50fa46 100644 --- a/src/themes/light/theme.css +++ b/src/themes/light/theme.css @@ -122,19 +122,19 @@ html { } .defaultCardBackground2 { - background-color: #D32F2F + background-color: #d32f2f } .defaultCardBackground3 { - background-color: #0288D1 + background-color: #0288d1 } .defaultCardBackground4 { - background-color: #388E3C + background-color: #388e3c } .defaultCardBackground5 { - background-color: #F57F17 + background-color: #f57f17 } .formDialogHeader:not(.formDialogHeader-clear) { @@ -241,7 +241,7 @@ html { .mediaInfoTimerIcon, .starIcon { - color: #CB272A + color: #cb272a } .emby-input, @@ -293,7 +293,7 @@ html { } .itemProgressBarForeground-recording { - background-color: #CB272A + background-color: #cb272a } .countIndicator, @@ -347,19 +347,19 @@ html { } .programCell-sports { - background: #3949AB !important + background: #3949ab !important } .programCell-movie { - background: #5E35B1 !important + background: #5e35b1 !important } .programCell-kids { - background: #039BE5 !important + background: #039be5 !important } .programCell-news { - background: #43A047 !important + background: #43a047 !important } .programCell-active { @@ -410,7 +410,7 @@ html { .downloadbutton-icon-complete, .downloadbutton-icon-on { - color: #4285F4 + color: #4285f4 } .playstatebutton-icon-played { @@ -418,7 +418,7 @@ html { } .repeatButton-active { - color: #4285F4 + color: #4285f4 } .card:focus .cardBox.visualCardBox, diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index e272a9ab8e..6594b48eb5 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -283,16 +283,16 @@ a[data-role=button] { } .itemSelectionPanel { - border: 1px solid #48C3C8 + border: 1px solid #48c3c8 } .selectionCommandsPanel { - background: #48C3C8; + background: #48c3c8; color: #f8f8fe } .upNextDialog-countdownText { - color: #48C3C8 + color: #48c3c8 } .alphaPickerButton-selected { @@ -318,12 +318,12 @@ a[data-role=button] { } .progressring-spiner { - border-color: #48C3C8 + border-color: #48c3c8 } .button-flat-accent, .button-link { - color: #48C3C8 + color: #48c3c8 } .mediaInfoText { @@ -392,7 +392,7 @@ a[data-role=button] { } .itemProgressBarForeground-recording { - background-color: #CB272A + background-color: #cb272a } .countIndicator, @@ -451,19 +451,19 @@ a[data-role=button] { } .programCell-sports { - background: #3949AB !important + background: #3949ab !important } .programCell-movie { - background: #5E35B1 !important + background: #5e35b1 !important } .programCell-kids { - background: #039BE5 !important + background: #039be5 !important } .programCell-news { - background: #43A047 !important + background: #43a047 !important } .programCell-active { @@ -472,7 +472,7 @@ a[data-role=button] { .guide-channelHeaderCell:focus, .programCell:focus { - background-color: #48C3C8 !important; + background-color: #48c3c8 !important; color: #fff !important } @@ -496,7 +496,7 @@ a[data-role=button] { } .guide-date-tab-button.show-focus:focus { - background-color: #48C3C8; + background-color: #48c3c8; color: #fff } @@ -514,7 +514,7 @@ a[data-role=button] { .downloadbutton-icon-complete, .downloadbutton-icon-on { - color: #4285F4 + color: #4285f4 } .playstatebutton-icon-played { @@ -522,7 +522,7 @@ a[data-role=button] { } .repeatButton-active { - color: #4285F4 + color: #4285f4 } .personCard .cardScalable { diff --git a/src/themes/wmc/theme.css b/src/themes/wmc/theme.css index 6fd3ed001f..dcc4a8b994 100644 --- a/src/themes/wmc/theme.css +++ b/src/themes/wmc/theme.css @@ -1,13 +1,13 @@ html { color: #eee; color: rgba(255, 255, 255, .9); - background-color: #0F3562 + background-color: #0f3562 } .wizardStartForm, .ui-corner-all, .ui-shadow { - background-color: #0C2450 + background-color: #0c2450 } .emby-collapsible-button { @@ -22,11 +22,11 @@ html { .formDialogHeader:not(.formDialogHeader-clear), .skinHeader-withBackground { - background: -webkit-gradient(linear, left top, left bottom, from(#0C2450), to(#081B3B)); - background: -webkit-linear-gradient(top, #0C2450, #081B3B); - background: -o-linear-gradient(top, #0C2450, #081B3B); - background: linear-gradient(to bottom, #0C2450, #081B3B); - background-color: #0C2450; + background: -webkit-gradient(linear, left top, left bottom, from(#0c2450), to(#081b3b)); + background: -webkit-linear-gradient(top, #0c2450, #081b3b); + background: -o-linear-gradient(top, #0c2450, #081b3b); + background: linear-gradient(to bottom, #0c2450, #081b3b); + background-color: #0c2450; } .skinHeader.semiTransparent { @@ -35,7 +35,7 @@ html { background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, .6)), to(rgba(0, 0, 0, 0))); background: -webkit-linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)); background: -o-linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)); - background: linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)) + background: linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)); background-color: rgba(0, 0, 0, .3); } @@ -48,7 +48,7 @@ html { background: -webkit-gradient(linear, left top, left bottom, from(#0F3562), color-stop(#1162A4), to(#03215F)); background: -webkit-linear-gradient(top, #0F3562, #1162A4, #03215F); background: -o-linear-gradient(top, #0F3562, #1162A4, #03215F); - background: linear-gradient(to bottom, #0F3562, #1162A4, #03215F) + background: linear-gradient(to bottom, #0F3562, #1162A4, #03215F); background-color: #0F3562; } @@ -117,7 +117,7 @@ html { .collapseContent, .paperList, .visualCardBox { - background-color: #0F3562 + background-color: #0f3562 } .defaultCardBackground1 { @@ -162,7 +162,7 @@ html { } .toast { - background: #081B3B; + background: #081b3b; color: #fff; color: rgba(255, 255, 255, .87) } @@ -174,7 +174,7 @@ html { background: -webkit-linear-gradient(bottom, #0C2450, #081B3B); background: -o-linear-gradient(bottom, #0C2450, #081B3B); background: linear-gradient(to top, #0C2450, #081B3B); - color: rgba(255, 255, 255, .78) + color: rgba(255, 255, 255, .78); } .itemSelectionPanel { @@ -231,7 +231,7 @@ html { .mediaInfoTimerIcon, .starIcon { - color: #CB272A + color: #cb272a } .emby-input, @@ -283,7 +283,7 @@ html { } .itemProgressBarForeground-recording { - background-color: #CB272A + background-color: #cb272a } .countIndicator, @@ -297,7 +297,7 @@ html { } .mainDrawer { - background-color: #0F3562; + background-color: #0f3562; color: #ccc; color: rgba(255, 255, 255, .7) } @@ -342,19 +342,19 @@ html { } .programCell-sports { - background: #3949AB !important + background: #3949ab !important } .programCell-movie { - background: #5E35B1 !important + background: #5e35b1 !important } .programCell-kids { - background: #039BE5 !important + background: #039be5 !important } .programCell-news { - background: #43A047 !important + background: #43a047 !important } .programCell-active { @@ -405,7 +405,7 @@ html { .downloadbutton-icon-complete, .downloadbutton-icon-on { - color: #4285F4 + color: #4285f4 } .playstatebutton-icon-played { @@ -413,7 +413,7 @@ html { } .repeatButton-active { - color: #4285F4 + color: #4285f4 } .card:focus .cardBox.visualCardBox, @@ -427,7 +427,7 @@ html { } ::-webkit-scrollbar-track-piece { - background-color: #081B3B + background-color: #081b3b } .layout-desktop ::-webkit-scrollbar { From 58c9f71a7d152899c99feaee7ee6fa4a022b60a8 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 14:40:47 +0100 Subject: [PATCH 048/105] Fix color-hex-length (CSS) --- src/assets/css/librarybrowser.css | 2 +- src/components/emby-scrollbuttons/emby-scrollbuttons.css | 2 +- src/components/guide/guide.css | 2 +- src/components/guide/programs.css | 4 ++-- src/components/indicators/indicators.css | 2 +- src/components/recordingcreator/recordingfields.css | 2 +- src/components/userdatabuttons/userdatabuttons.css | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 8102f9084e..bc73dc784b 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -998,7 +998,7 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { } .searchfields-icon { - color: #aaaaaa; + color: #aaa; } .button-accent-flat { diff --git a/src/components/emby-scrollbuttons/emby-scrollbuttons.css b/src/components/emby-scrollbuttons/emby-scrollbuttons.css index 6786824bd6..f09c109921 100644 --- a/src/components/emby-scrollbuttons/emby-scrollbuttons.css +++ b/src/components/emby-scrollbuttons/emby-scrollbuttons.css @@ -8,7 +8,7 @@ min-height:24px; padding-top: 1.25em; z-index: 1; - color: #ffffff; + color: #fff; display: flex; } diff --git a/src/components/guide/guide.css b/src/components/guide/guide.css index c6807a9607..687998275a 100644 --- a/src/components/guide/guide.css +++ b/src/components/guide/guide.css @@ -367,7 +367,7 @@ } .timerIcon, .seriesTimerIcon { - color: #cc3333 !important; + color: #c33 !important; } .seriesTimerIcon-inactive { diff --git a/src/components/guide/programs.css b/src/components/guide/programs.css index 5f0e82dd82..34976e81ec 100644 --- a/src/components/guide/programs.css +++ b/src/components/guide/programs.css @@ -1,10 +1,10 @@ .newTvProgram { - background: #3388cc; + background: #38c; color: #fff; } .liveTvProgram { - background: #cc3333; + background: #c33; color: #fff; } diff --git a/src/components/indicators/indicators.css b/src/components/indicators/indicators.css index 89e0a178d1..774fac4f4c 100644 --- a/src/components/indicators/indicators.css +++ b/src/components/indicators/indicators.css @@ -86,7 +86,7 @@ } .missingIndicator, .unairedIndicator { - background: #cc3333; + background: #c33; padding: .25em .5em; border-radius: 100em; color: #fff; diff --git a/src/components/recordingcreator/recordingfields.css b/src/components/recordingcreator/recordingfields.css index c8492f5298..baa7845da8 100644 --- a/src/components/recordingcreator/recordingfields.css +++ b/src/components/recordingcreator/recordingfields.css @@ -4,7 +4,7 @@ } .recordingIcon-active { - color: #cc3333; + color: #c33; } .recordSeriesContainer { diff --git a/src/components/userdatabuttons/userdatabuttons.css b/src/components/userdatabuttons/userdatabuttons.css index 0138631734..9d8ce097c7 100644 --- a/src/components/userdatabuttons/userdatabuttons.css +++ b/src/components/userdatabuttons/userdatabuttons.css @@ -1,3 +1,3 @@ .btnUserDataOn { - color: #cc3333 !important; + color: #c33 !important; } \ No newline at end of file From 8a272313cf5432d95ff6300ebde4b4542b28018c Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 14:42:13 +0100 Subject: [PATCH 049/105] Fix comment-whitespace-inside (CSS) --- src/components/guide/guide.css | 2 +- src/components/viewManager/viewContainer.css | 4 ++-- src/elements/emby-slider/emby-slider.css | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/components/guide/guide.css b/src/components/guide/guide.css index 687998275a..6b895248bd 100644 --- a/src/components/guide/guide.css +++ b/src/components/guide/guide.css @@ -263,7 +263,7 @@ position: relative; flex-grow: 1; contain: layout style paint; - /*transition: transform 60ms ease-out;*/ + /* transition: transform 60ms ease-out; */ } .guide-programNameCaret { diff --git a/src/components/viewManager/viewContainer.css b/src/components/viewManager/viewContainer.css index 26edaaef34..00ef2c4495 100644 --- a/src/components/viewManager/viewContainer.css +++ b/src/components/viewManager/viewContainer.css @@ -5,8 +5,8 @@ right: 0; bottom: 0; contain: layout style size; - /* Can't use will-change because it causes the alpha picker to move when the page scrolls*/ - /*will-change: transform;*/ + /* Can't use will-change because it causes the alpha picker to move when the page scrolls */ + /* will-change: transform; */ } @keyframes view-fadeout { diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index 22c0af5edc..1f318ebfac 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -11,7 +11,7 @@ -moz-appearance: none; -ms-appearance: none; appearance: none; - height: 150%;/*150% is needed, else ie and edge won't display the thumb properly*/ + height: 150%;/* 150% is needed, else ie and edge won't display the thumb properly */ background: transparent; -webkit-user-select: none; -moz-user-select: none; @@ -184,7 +184,7 @@ } .mdl-slider-background-lower { - /*transition: width 0.18s cubic-bezier(0.4, 0, 0.2, 1);*/ + /* transition: width 0.18s cubic-bezier(0.4, 0, 0.2, 1); */ position: absolute; left: 0; width: 0; @@ -199,13 +199,13 @@ .mdl-slider-background-lower-withtransform { width: 100%; - /*transition: transform 0.18s cubic-bezier(0.4, 0, 0.2, 1);*/ + /* transition: transform 0.18s cubic-bezier(0.4, 0, 0.2, 1); */ transform-origin: left center; transform: scaleX(0); } .mdl-slider-background-upper { - /*transition: left 0.18s cubic-bezier(0.4, 0, 0.2, 1), width 0.18s cubic-bezier(0.4, 0, 0.2, 1);*/ + /* transition: left 0.18s cubic-bezier(0.4, 0, 0.2, 1), width 0.18s cubic-bezier(0.4, 0, 0.2, 1); */ background: #666; background: rgba(255, 255, 255, .4); position: absolute; From b2e2cf201203170752d1db0113fcdcb82b84b84d Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 14:48:11 +0100 Subject: [PATCH 050/105] Fix declaration-bang-space-before (CSS) --- src/components/appfooter/appfooter.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/appfooter/appfooter.css b/src/components/appfooter/appfooter.css index 789bc1db20..4cb342e34a 100644 --- a/src/components/appfooter/appfooter.css +++ b/src/components/appfooter/appfooter.css @@ -9,5 +9,5 @@ } .appfooter.headroom--unpinned { - transform: translateY(100%)!important; + transform: translateY(100%) !important; } \ No newline at end of file From f290604615d64653c7c3c82fb1be791924d5c95e Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 14:49:56 +0100 Subject: [PATCH 051/105] Fix declaration-block-trailing-semicolon (CSS) --- src/assets/css/dashboard.css | 126 ++--- src/assets/css/detailtable.css | 6 +- src/assets/css/ios.css | 4 +- src/assets/css/librarybrowser.css | 268 +++++------ src/assets/css/livetv.css | 4 +- src/assets/css/metadataeditor.css | 28 +- src/assets/css/site.css | 28 +- src/assets/css/videoosd.css | 60 +-- .../directorybrowser/directorybrowser.css | 4 +- src/components/filterdialog/style.css | 8 +- src/components/homesections/homesections.css | 4 +- src/components/navdrawer/navdrawer.css | 14 +- .../remotecontrol/remotecontrol.css | 54 +-- src/elements/emby-radio/emby-radio.css | 2 +- src/themes/appletv/theme.css | 158 +++---- src/themes/blueradiance/theme.css | 172 +++---- src/themes/dark/theme.css | 162 +++---- src/themes/emby/theme.css | 432 ++++++++++++++++++ src/themes/light/theme.css | 158 +++---- src/themes/purplehaze/theme.css | 172 +++---- src/themes/wmc/theme.css | 152 +++--- 21 files changed, 1227 insertions(+), 789 deletions(-) create mode 100644 src/themes/emby/theme.css diff --git a/src/assets/css/dashboard.css b/src/assets/css/dashboard.css index 95f1cabcfe..d912a4930d 100644 --- a/src/assets/css/dashboard.css +++ b/src/assets/css/dashboard.css @@ -7,11 +7,11 @@ .dashboardFooter { margin-top: 3.5em; - text-align: center + text-align: center; } .dashboardFooter a { - margin: 0 .7em + margin: 0 .7em; } progress { @@ -19,32 +19,32 @@ progress { -moz-appearance: none; -webkit-appearance: none; margin: 0; - background: #ccc !important + background: #ccc !important; } progress[role]:after { - background-image: none + background-image: none; } progress::-webkit-progress-bar { - background: #ccc + background: #ccc; } progress::-moz-progress-bar { - background-color: #00a4dc + background-color: #00a4dc; } progress::-webkit-progress-value { - background-color: #00a4dc + background-color: #00a4dc; } progress[aria-valuenow]:before { border-radius: .4em; - background-color: #00a4dc + background-color: #00a4dc; } .localnav { - margin-bottom: 2.2em !important + margin-bottom: 2.2em !important; } @media all and (min-width:50em) { @@ -54,24 +54,24 @@ progress[aria-valuenow]:before { padding-right: 0; padding-left: 0; padding-top: 0; - overflow: hidden + overflow: hidden; } } .dashboardDocument .dashboardEntryHeaderButton, .dashboardDocument .lnkManageServer { - display: none !important + display: none !important; } .adminDrawerLogo { padding: 1.5em 1em 1.2em; border-bottom: 1px solid #e0e0e0; margin-bottom: 1em; - display: block + display: block; } .adminDrawerLogo img { - height: 4em + height: 4em; } a[data-role=button] { @@ -96,31 +96,31 @@ div[data-role=controlgroup] a[data-role=button] { -webkit-box-shadow: none !important; box-shadow: none !important; -webkit-border-radius: 0; - border-radius: 0 + border-radius: 0; } div[data-role=controlgroup] a[data-role=button]:first-child { -webkit-border-bottom-left-radius: .3125em; border-bottom-left-radius: .3125em; -webkit-border-top-left-radius: .3125em; - border-top-left-radius: .3125em + border-top-left-radius: .3125em; } div[data-role=controlgroup] a[data-role=button]:last-child { -webkit-border-bottom-right-radius: .3125em; border-bottom-right-radius: .3125em; -webkit-border-top-right-radius: .3125em; - border-top-right-radius: .3125em + border-top-right-radius: .3125em; } div[data-role=controlgroup] a[data-role=button]+a[data-role=button] { border-left-width: 0 !important; - margin: 0 0 0 -.4em !important + margin: 0 0 0 -.4em !important; } div[data-role=controlgroup] a.ui-btn-active { background: #00a4dc !important; - color: #292929 !important + color: #292929 !important; } .sessionAppInfo img { @@ -130,7 +130,7 @@ div[data-role=controlgroup] a.ui-btn-active { } .appLinks img { - height: 36px + height: 36px; } .wizardContent h2 img { @@ -138,46 +138,46 @@ div[data-role=controlgroup] a.ui-btn-active { vertical-align: middle; margin-right: .5em; position: relative; - top: -.3em + top: -.3em; } .header .imageLink { - display: inline-block + display: inline-block; } .header .imageLink img { height: 2.1em; - vertical-align: middle + vertical-align: middle; } .content-primary { padding-top: 6em; padding-right: 1em; - padding-left: 1em + padding-left: 1em; } .withTabs .content-primary { - padding-top: 9em !important + padding-top: 9em !important; } @media all and (min-width:40em) { .content-primary { - padding-top: 7em + padding-top: 7em; } .withTabs .content-primary { - padding-top: 10em !important + padding-top: 10em !important; } } @media all and (min-width:84em) { .withTabs .content-primary { - padding-top: 7em !important + padding-top: 7em !important; } } .content-primary ul:first-child { - margin-top: 0 + margin-top: 0; } .dashboardSections { @@ -185,7 +185,7 @@ div[data-role=controlgroup] a.ui-btn-active { display: -webkit-flex; display: flex; -webkit-flex-direction: column; - flex-direction: column + flex-direction: column; } .dashboardColumn { @@ -198,7 +198,7 @@ div[data-role=controlgroup] a.ui-btn-active { flex-shrink: 0; -webkit-box-flex: 1; -webkit-flex-grow: 1; - flex-grow: 1 + flex-grow: 1; } .sessionNowPlayingContent { @@ -210,26 +210,26 @@ div[data-role=controlgroup] a.ui-btn-active { top: 0; left: 0; right: 0; - bottom: 0 + bottom: 0; } .activeSession:not(.playingSession) .sessionNowPlayingContent { - display: none + display: none; } .dashboardSection { -webkit-flex-shrink: 0; flex-shrink: 0; - margin: 0 0 2em + margin: 0 0 2em; } .dashboardSection h3 { margin-top: .5em; - margin-bottom: .5em + margin-bottom: .5em; } .activeRecordingItems>.card { - width: 50% + width: 50%; } @media all and (min-width:70em) { @@ -239,23 +239,23 @@ div[data-role=controlgroup] a.ui-btn-active { -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; - flex-direction: row + flex-direction: row; } .dashboardColumn-2-60 { - width: 46% + width: 46%; } .dashboardColumn-2-40 { - width: 27% + width: 27%; } .dashboardSection { - padding: 0 1.5em + padding: 0 1.5em; } .activeRecordingItems>.card { - width: 25% + width: 25%; } } @@ -263,23 +263,23 @@ div[data-role=controlgroup] a.ui-btn-active { max-width: 62em; padding: .5em 2em 1em; margin: 0 auto; - background: #fff + background: #fff; } .wizardNavigation { - text-align: right + text-align: right; } .wizardContent form { - max-width: 100% + max-width: 100%; } .scheduledTaskPaperIconItem { - outline: 0 !important + outline: 0 !important; } .activeSession { - width: 100% !important + width: 100% !important; } .activitylogUserPhoto { @@ -294,13 +294,13 @@ div[data-role=controlgroup] a.ui-btn-active { @media all and (min-width:40em) { .activeSession { - width: 100% !important + width: 100% !important; } } @media all and (min-width:50em) { .activeSession { - width: 50% !important + width: 50% !important; } } @@ -309,7 +309,7 @@ div[data-role=controlgroup] a.ui-btn-active { padding-bottom: 1em !important; border-top: 1px solid #eee; text-align: center; - position: relative + position: relative; } .sessionAppInfo { @@ -318,11 +318,11 @@ div[data-role=controlgroup] a.ui-btn-active { } .sessionCardButtons { - min-height: 2.7em + min-height: 2.7em; } .sessionCardButton { - margin: 0 + margin: 0; } .sessionNowPlayingInnerContent { @@ -331,17 +331,17 @@ div[data-role=controlgroup] a.ui-btn-active { left: 0; right: 0; bottom: 0; - font-weight: 400 + font-weight: 400; } .sessionNowPlayingContent-withbackground+.sessionNowPlayingInnerContent { color: #fff !important; - background: rgba(0, 0, 0, .7) + background: rgba(0, 0, 0, .7); } .sessionAppName { vertical-align: top; - max-width: 200px + max-width: 200px; } .sessionNowPlayingDetails { @@ -396,31 +396,31 @@ div[data-role=controlgroup] a.ui-btn-active { @media all and (max-width:34.375em) { .sessionAppName { - max-width: 160px + max-width: 160px; } } @media all and (max-width:31.25em) { .sessionAppName { - max-width: 150px + max-width: 150px; } } .disabledUser { -webkit-filter: grayscale(100%); - filter: grayscale(100%) + filter: grayscale(100%); } .disabledUserBanner { - margin: 0 0 2em + margin: 0 0 2em; } .appLinks a { - text-decoration: none !important + text-decoration: none !important; } .appLinks a+a { - margin-left: 5px + margin-left: 5px; } @-webkit-keyframes rotating { @@ -438,23 +438,23 @@ div[data-role=controlgroup] a.ui-btn-active { @keyframes rotating { from { -webkit-transform: rotate(0); - transform: rotate(0) + transform: rotate(0); } to { -webkit-transform: rotate(360deg); - transform: rotate(360deg) + transform: rotate(360deg); } } .rotatingCircle { -webkit-animation: rotating 2s linear infinite; - animation: rotating 2s linear infinite + animation: rotating 2s linear infinite; } .pluginPreviewImg { -webkit-box-shadow: 0 .0725em .29em 0 rgba(0, 0, 0, .37); - box-shadow: 0 .0725em .29em 0 rgba(0, 0, 0, .37) + box-shadow: 0 .0725em .29em 0 rgba(0, 0, 0, .37); } .ui-bar-a { diff --git a/src/assets/css/detailtable.css b/src/assets/css/detailtable.css index 33f0608365..960cd69eae 100644 --- a/src/assets/css/detailtable.css +++ b/src/assets/css/detailtable.css @@ -1,7 +1,7 @@ .detailTableBodyCell, .detailTableHeaderCell { border-spacing: 0; - padding: .4em + padding: .4em; } .detailTable { @@ -9,11 +9,11 @@ border-spacing: 0; text-align: left; width: 100%; - margin: 0 auto + margin: 0 auto; } .detailTableHeaderCell { font-weight: 700; text-align: left; - vertical-align: top + vertical-align: top; } \ No newline at end of file diff --git a/src/assets/css/ios.css b/src/assets/css/ios.css index 47fa7bd538..1d133d13be 100644 --- a/src/assets/css/ios.css +++ b/src/assets/css/ios.css @@ -1,8 +1,8 @@ html { - font-size: 82% !important + font-size: 82% !important; } .formDialogFooter { position: static !important; - margin: 0 -1em !important + margin: 0 -1em !important; } \ No newline at end of file diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index bc73dc784b..e4dc776d55 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -1,7 +1,7 @@ .headerUserImage, .navMenuOption, .pageTitle { - vertical-align: middle + vertical-align: middle; } .detailButton-mobile, @@ -9,7 +9,7 @@ .listPaging, .sectionTabs, .viewSettings { - text-align: center + text-align: center; } .headerSelectedPlayer, @@ -17,27 +17,27 @@ .navMenuOptionText { -o-text-overflow: ellipsis; text-overflow: ellipsis; - overflow: hidden + overflow: hidden; } .libraryPage { - padding-top: 7em !important + padding-top: 7em !important; } .itemDetailPage { - padding-top: 0em !important + padding-top: 0em !important; } .standalonePage { - padding-top: 4.5em !important + padding-top: 4.5em !important; } .wizardPage { - padding-top: 7em !important + padding-top: 7em !important; } .libraryPage:not(.noSecondaryNavPage) { - padding-top: 7.5em !important + padding-top: 7.5em !important; } .absolutePageTabContent { @@ -50,11 +50,11 @@ top: 6.9em !important; -webkit-transition: -webkit-transform .2s ease-out; -o-transition: transform .2s ease-out; - transition: transform .2s ease-out + transition: transform .2s ease-out; } .pageTabContent:not(.is-active) { - display: none !important + display: none !important; } .headerUserImage { @@ -64,7 +64,7 @@ background-position: center center; -webkit-border-radius: 100em; border-radius: 100em; - display: inline-block + display: inline-block; } .headerUserButtonRound div { @@ -77,11 +77,11 @@ .headerButton { -webkit-flex-shrink: 0; - flex-shrink: 0 + flex-shrink: 0; } .hideMainDrawer .mainDrawerButton { - display: none + display: none; } .headerLeft, @@ -97,12 +97,12 @@ align-items: center; -webkit-box-pack: end; -webkit-justify-content: flex-end; - justify-content: flex-end + justify-content: flex-end; } .noHeaderRight .headerRight, .noHomeButtonHeader .headerHomeButton { - display: none !important + display: none !important; } .pageTitle { @@ -115,7 +115,7 @@ -webkit-align-items: center; align-items: center; -webkit-flex-shrink: 1; - flex-shrink: 1 + flex-shrink: 1; } .headerLeft, @@ -137,7 +137,7 @@ -webkit-background-size: contain; background-size: contain; background-repeat: no-repeat; - width: 13.2em + width: 13.2em; } .skinHeader { @@ -149,7 +149,7 @@ border: 0; display: flex; flex-direction: column; - contain: layout style paint + contain: layout style paint; } .headerLeft, @@ -158,11 +158,11 @@ } .hiddenViewMenuBar .skinHeader { - display: none + display: none; } .headerTop { - padding: .54em 0 + padding: .54em 0; } .headerLeft { @@ -177,11 +177,11 @@ } .sectionTabs { - width: 100% + width: 100%; } .selectedMediaFolder { - background-color: #f2f2f2 !important + background-color: #f2f2f2 !important; } .navMenuOption { @@ -200,22 +200,22 @@ font-weight: 400 !important; margin: 0 !important; -webkit-border-radius: 0 !important; - border-radius: 0 !important + border-radius: 0 !important; } .navMenuOptionIcon { margin-right: 1.2em; -webkit-flex-shrink: 0; - flex-shrink: 0 + flex-shrink: 0; } .navMenuOptionText { - white-space: nowrap + white-space: nowrap; } .sidebarHeader { padding-left: 1.2em; - margin: 1em 0 .5em + margin: 1em 0 .5em; } .dashboardDocument .skinBody { @@ -226,24 +226,24 @@ top: 0; right: 0; bottom: 0; - left: 0 + left: 0; } .layout-desktop .searchTabButton, .layout-mobile .searchTabButton, .layout-tv .headerSearchButton { - display: none !important + display: none !important; } .mainDrawer-scrollContainer { - padding-bottom: 10vh + padding-bottom: 10vh; } @media all and (min-width:40em) { .dashboardDocument .adminDrawerLogo, .dashboardDocument .mainDrawerButton { - display: none !important + display: none !important; } .dashboardDocument .mainDrawer { @@ -255,21 +255,21 @@ -webkit-box-shadow: none !important; box-shadow: none !important; width: 20.205em !important; - font-size: 94% + font-size: 94%; } .dashboardDocument .mainDrawer-scrollContainer { - margin-top: 5em !important + margin-top: 5em !important; } .dashboardDocument .skinBody { - left: 20em + left: 20em; } } @media all and (max-width:60em) { .libraryDocument .mainDrawerButton { - display: none + display: none; } } @@ -285,7 +285,7 @@ @media all and (min-width:84em) { .headerTop { - padding: 1.489em 0 + padding: 1.489em 0; } .headerTabs { @@ -300,19 +300,19 @@ justify-content: center; margin-top: -3.34em; position: relative; - top: -1.05em + top: -1.05em; } .libraryPage:not(.noSecondaryNavPage) { - padding-top: 4.6em !important + padding-top: 4.6em !important; } .pageWithAbsoluteTabs:not(.noSecondaryNavPage) { - padding-top: 6.7em !important + padding-top: 6.7em !important; } .absolutePageTabContent { - top: 5.7em !important + top: 5.7em !important; } .dashboardDocument .mainDrawer-scrollContainer { @@ -322,22 +322,22 @@ .headerSelectedPlayer { max-width: 10em; - white-space: nowrap + white-space: nowrap; } @media all and (max-width:37.5em) { .headerSelectedPlayer { - display: none + display: none; } } .hidingAnimatedTab { - visibility: hidden + visibility: hidden; } .headerArrowImage { height: 20px; - margin-left: .5em + margin-left: .5em; } .backdropContainer { @@ -346,30 +346,30 @@ left: 0; right: 0; bottom: 0; - z-index: -1 + z-index: -1; } .libraryPage .header { - padding-bottom: 0 + padding-bottom: 0; } .flexPageTabContent.is-active { display: -webkit-box !important; display: -webkit-flex !important; - display: flex !important + display: flex !important; } .viewSettings { - margin: 0 0 .25em + margin: 0 0 .25em; } .listTopPaging, .viewControls { - display: inline-block + display: inline-block; } .viewControls+.listTopPaging { - margin-left: .5em !important + margin-left: .5em !important; } .criticReview { @@ -378,60 +378,60 @@ padding: .8em .8em .8em 3em; -webkit-border-radius: .3em; border-radius: .3em; - position: relative + position: relative; } .detailLogo, .itemBackdrop { background-repeat: no-repeat; - background-position: center center + background-position: center center; } .criticReview:first-child { - margin-top: .5em + margin-top: .5em; } .criticReview img { - width: 2.4em + width: 2.4em; } .criticRatingScore { - margin-bottom: .5em + margin-bottom: .5em; } .itemTag { display: inline-block; - margin-right: 1em + margin-right: 1em; } .itemOverview { - white-space: pre-wrap + white-space: pre-wrap; } .itemLinks { - padding: 0 + padding: 0; } .itemLinks p { - margin: .5em 0 + margin: .5em 0; } .reviewLink, .reviewerName { - margin-top: .5em + margin-top: .5em; } .reviewerName { - color: #ccc + color: #ccc; } .reviewDate { - margin-left: 1em + margin-left: 1em; } .reviewScore { position: absolute; - left: .8em + left: .8em; } .itemBackdrop { @@ -440,19 +440,19 @@ background-repeat: no-repeat; background-position: center; height: 50vh; - position: relative + position: relative; } .itemBackdropProgressBar { position: absolute !important; bottom: 0; left: 0; - right: 0 + right: 0; } .desktopMiscInfoContainer { position: absolute; - bottom: .75em + bottom: .75em; } .detailPagePrimaryContainer { @@ -510,7 +510,7 @@ position: relative; -webkit-box-flex: 1; -webkit-flex-grow: 1; - flex-grow: 1 + flex-grow: 1; } .detailLogo { @@ -520,18 +520,18 @@ top: 14.5%; right: 10.5%; -webkit-background-size: contain; - background-size: contain + background-size: contain; } @media all and (max-width:87.5em) { .detailLogo { - right: 5% + right: 5%; } } @media all and (max-width:75em) { .detailLogo { - right: 2% + right: 2%; } } @@ -543,7 +543,7 @@ bottom: 5%; top: auto; background-position: center right; - display: none + display: none; } } @@ -555,23 +555,23 @@ @media all and (max-width:62.5em) { .detailPageContent { - position: relative + position: relative; } .btnPlaySimple { - display: none !important + display: none !important; } } @media all and (max-width:75em) { .lnkSibling { - display: none !important + display: none !important; } } .parentName { display: block; - margin-bottom: .5em + margin-bottom: .5em; } .emby-button.detailFloatingButton { @@ -582,36 +582,36 @@ left: 50%; margin: -2.2em 0 0 -2.2em; padding: 0.4em !important; - color: rgba(255, 255, 255, .76) + color: rgba(255, 255, 255, .76); } .emby-button.detailFloatingButton i { - font-size: 3.5em + font-size: 3.5em; } @media all and (max-width:62.5em) { .parentName { - margin-bottom: 1em + margin-bottom: 1em; } .itemDetailPage { - padding-top: 0 !important + padding-top: 0 !important; } .detailimg-hidemobile { - display: none + display: none; } } @media all and (min-width:31.25em) { .mobileDetails { - display: none + display: none; } } @media all and (max-width:31.25em) { .desktopDetails { - display: none !important + display: none !important; } } @@ -623,19 +623,19 @@ } .itemName { - margin: .5em 0 + margin: .5em 0; } .empty { - margin: 0 + margin: 0; } .detailCollapsibleSection:not(.hide)+.detailCollapsibleSection { - margin-top: -2em + margin-top: -2em; } .detailPageCollabsible { - margin-top: 0 + margin-top: 0; } .mainDetailButtons { @@ -652,11 +652,11 @@ margin-left: 0; margin-right: .5em; -webkit-flex-shrink: 0; - flex-shrink: 0 + flex-shrink: 0; } .mainDetailButtons.hide+.recordingFields { - margin-top: 1.5em !important + margin-top: 1.5em !important; } .detailButton-mobile { @@ -669,31 +669,31 @@ -webkit-align-items: center; align-items: center; margin: 0 !important; - padding: .5em .7em !important + padding: .5em .7em !important; } .detailButton { - margin: 0 .5em 0 0 !important + margin: 0 .5em 0 0 !important; } @media all and (min-width:29em) { .detailButton-mobile { padding-left: .75em !important; - padding-right: .75em !important + padding-right: .75em !important; } } @media all and (min-width:32em) { .detailButton-mobile { padding-left: .8em !important; - padding-right: .8em !important + padding-right: .8em !important; } } @media all and (min-width:35em) { .detailButton-mobile { padding-left: .85em !important; - padding-right: .85em !important + padding-right: .85em !important; } } @@ -710,13 +710,13 @@ justify-content: center; -webkit-box-align: center; -webkit-align-items: center; - align-items: center + align-items: center; } .detailButton-mobile-icon { font-size: 1.6em !important; width: 1em; - height: 1em + height: 1em; } .detailImageProgressContainer { @@ -727,33 +727,33 @@ .detailButton-mobile-text { margin-top: .7em; font-size: 80%; - font-weight: 400 + font-weight: 400; } @media all and (max-width:62.5em) { .mainDetailButtons { - margin-left: -.5em + margin-left: -.5em; } .detailButton { - display: none !important + display: none !important; } } @media all and (min-width:62.5em) { .detailFloatingButton { - display: none !important + display: none !important; } .mainDetailButtons { font-size: 108%; - margin: 1.25em 0 + margin: 1.25em 0; } } @media all and (max-width:50em) { .editorMenuLink { - display: none + display: none; } } @@ -765,7 +765,7 @@ flex-wrap: wrap; -webkit-box-align: center; -webkit-align-items: center; - align-items: center + align-items: center; } @media all and (max-width:31.25em) { @@ -773,16 +773,16 @@ text-align: center; -webkit-box-pack: center; -webkit-justify-content: center; - justify-content: center + justify-content: center; } .itemMiscInfo .endsAt { - display: none + display: none; } } .layout-tv .detailVerticalSection { - margin-bottom: 3.4em !important + margin-bottom: 3.4em !important; } .detailPageContent { @@ -799,66 +799,66 @@ .mediaInfoStream { margin: 0 3em 0 0; display: inline-block; - vertical-align: top + vertical-align: top; } .mediaInfoStreamType { display: block; - margin: 1em 0 + margin: 1em 0; } .mediaInfoAttribute, .mediaInfoLabel { - display: inline-block + display: inline-block; } .mediaInfoLabel { margin-right: 1em; - font-weight: 600 + font-weight: 600; } .recordingProgressBar::-moz-progress-bar { - background-color: #c33 + background-color: #c33; } .recordingProgressBar::-webkit-progress-value { - background-color: #c33 + background-color: #c33; } .recordingProgressBar[aria-valuenow]:before { - background-color: #c33 + background-color: #c33; } .timelineHeader { margin-bottom: .25em; line-height: 1.25em; - line-height: initial + line-height: initial; } .itemsContainer { - margin: 0 auto + margin: 0 auto; } @media all and (max-height:31.25em) { .itemBackdrop { - height: 52vh + height: 52vh; } } @media all and (max-width:75em) { .listViewUserDataButtons { - display: none !important + display: none !important; } } @media all and (max-width:62.5em) { .detailsHiddenOnMobile { - display: none + display: none; } } .btnSyncComplete { - background: #673ab7 !important + background: #673ab7 !important; } .btnSyncComplete i { @@ -867,7 +867,7 @@ } .bulletSeparator { - margin: 0 .35em + margin: 0 .35em; } .mediaInfoIcons { @@ -879,18 +879,18 @@ align-items: center; margin: 1em 0; -webkit-flex-wrap: wrap; - flex-wrap: wrap + flex-wrap: wrap; } .verticalSection-extrabottompadding { - margin-bottom: 2.7em + margin-bottom: 2.7em; } .sectionTitleButton, .sectionTitleIconButton { margin-right: 0 !important; display: inline-block; - vertical-align: middle + vertical-align: middle; } .sectionTitleContainer { @@ -917,11 +917,11 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { .sectionTitleButton { margin-left: 1.5em !important; -webkit-flex-shrink: 0; - flex-shrink: 0 + flex-shrink: 0; } .sectionTitleButton + .sectionTitleButton { - margin-left: .5em !important + margin-left: .5em !important; } .sectionTitleIconButton { @@ -929,13 +929,13 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { -webkit-flex-shrink: 0; flex-shrink: 0; font-size: 84% !important; - padding: .5em !important + padding: .5em !important; } .horizontalItemsContainer { display: -webkit-box; display: -webkit-flex; - display: flex + display: flex; } .sectionTitleTextButton { @@ -943,22 +943,22 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { display: -webkit-inline-box !important; display: -webkit-inline-flex !important; display: inline-flex !important; - color: inherit !important + color: inherit !important; } .sectionTitleTextButton:not(.padded-left) { - padding: 0 !important + padding: 0 !important; } .sectionTitleTextButton.padded-left { padding-bottom: 0 !important; padding-right: 0 !important; - padding-top: 0 !important + padding-top: 0 !important; } .sectionTitleTextButton>.sectionTitle { margin-bottom: 0; - margin-top: 0 + margin-top: 0; } .padded-left { @@ -1009,27 +1009,27 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { text-decoration: none; font-weight: inherit !important; vertical-align: middle; - color: inherit !important + color: inherit !important; } .itemsViewSettingsContainer { -webkit-box-pack: center; -webkit-justify-content: center; - justify-content: center + justify-content: center; } @media all and (min-width:40em) { .listIconButton-autohide { - display: none !important + display: none !important; } } @media all and (max-width:40em) { .listTextButton-autohide { - display: none !important + display: none !important; } } .itemsViewSettingsContainer>.button-flat { - margin: 0 + margin: 0; } diff --git a/src/assets/css/livetv.css b/src/assets/css/livetv.css index 93e3e029c8..fa33094534 100644 --- a/src/assets/css/livetv.css +++ b/src/assets/css/livetv.css @@ -1,9 +1,9 @@ .guideVerticalScroller { - padding-bottom: 15em + padding-bottom: 15em; } @media all and (min-width:62.5em) { #guideTab { - padding-left: .5em + padding-left: .5em; } } \ No newline at end of file diff --git a/src/assets/css/metadataeditor.css b/src/assets/css/metadataeditor.css index 542c7c8f2b..5109ca1da2 100644 --- a/src/assets/css/metadataeditor.css +++ b/src/assets/css/metadataeditor.css @@ -1,17 +1,17 @@ .editPageSidebar { - display: block + display: block; } .editPageSidebar-withcontent { - display: none + display: none; } .libraryTree { - margin-left: .25em + margin-left: .25em; } .offlineEditorNode { - color: #c33 + color: #c33; } .editorNode img { @@ -19,11 +19,11 @@ margin: 0 .35em; vertical-align: middle; position: relative; - top: -2px + top: -2px; } .jstree-anchor { - font-weight: 400 !important + font-weight: 400 !important; } .jstree-wholerow-hovered { @@ -31,7 +31,7 @@ -webkit-border-radius: 0 !important; border-radius: 0 !important; -webkit-box-shadow: none !important; - box-shadow: none !important + box-shadow: none !important; } .jstree-default .jstree-hovered { @@ -40,15 +40,15 @@ border-radius: 0 !important; -webkit-box-shadow: none !important; box-shadow: none !important; - color: #fff !important + color: #fff !important; } .jstree-default .jstree-wholerow-clicked { - background: #00a4dc !important + background: #00a4dc !important; } .metadataSidebarIcon { - margin-right: .4em + margin-right: .4em; } @media all and (min-width:50em) { @@ -59,21 +59,21 @@ left: 0; width: 30%; border-right: 1px solid #555; - display: block + display: block; } .editPageInnerContent { float: right; - width: 68.5% + width: 68.5%; } } @media all and (min-width:112.5em) { .editPageSidebar { - width: 25% + width: 25%; } .editPageInnerContent { - width: 73.5% + width: 73.5%; } } diff --git a/src/assets/css/site.css b/src/assets/css/site.css index 292fc67454..5b060dd0e6 100644 --- a/src/assets/css/site.css +++ b/src/assets/css/site.css @@ -2,7 +2,7 @@ body, html { margin: 0; padding: 0; - height: 100% + height: 100%; } .backgroundContainer { @@ -11,11 +11,11 @@ html { left: 0; right: 0; bottom: 0; - contain: strict + contain: strict; } html { - line-height: 1.35 + line-height: 1.35; } .layout-mobile, @@ -25,7 +25,7 @@ html { -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; - user-select: none + user-select: none; } body { @@ -35,34 +35,34 @@ body { } .mainAnimatedPage { - contain: style size !important + contain: style size !important; } .pageContainer { - overflow-x: visible !important + overflow-x: visible !important; } .bodyWithPopupOpen { - overflow-y: hidden !important + overflow-y: hidden !important; } div[data-role=page] { - outline: 0 + outline: 0; } .pageTitle { margin-top: 0; - font-family: inherit + font-family: inherit; } .fieldDescription { padding-left: .15em; font-weight: 400; - white-space: normal !important + white-space: normal !important; } .fieldDescription+.fieldDescription { - margin-top: .3em + margin-top: .3em; } .content-primary, @@ -76,18 +76,18 @@ div[data-role=page] { @media all and (min-width:50em) { .readOnlyContent, form { - max-width: 54em + max-width: 54em; } } .headerHelpButton { margin-left: 1.25em !important; padding-bottom: .4em !important; - padding-top: .4em !important + padding-top: .4em !important; } .mediaInfoContent { margin-left: auto; margin-right: auto; - width: 85% + width: 85%; } diff --git a/src/assets/css/videoosd.css b/src/assets/css/videoosd.css index 833cfcb4f9..57d27a9c5b 100644 --- a/src/assets/css/videoosd.css +++ b/src/assets/css/videoosd.css @@ -11,7 +11,7 @@ .videoOsdBottom { bottom: 0; left: 0; - right: 0 + right: 0; } .osdHeader { @@ -27,11 +27,11 @@ } .osdHeader-hidden { - opacity: 0 + opacity: 0; } .osdHeader .headerButton:not(.headerBackButton):not(.headerCastButton) { - display: none + display: none; } .chapterThumbContainer { @@ -40,7 +40,7 @@ -webkit-box-flex: 1; -webkit-flex-grow: 1; flex-grow: 1; - position: relative + position: relative; } .chapterThumb { @@ -50,20 +50,20 @@ background-repeat: no-repeat; border: 0; height: 20vh; - min-width: 20vh + min-width: 20vh; } @media all and (orientation:portrait) { .chapterThumb { height: 30vw; - min-width: 30vw + min-width: 30vw; } } @media all and (max-height:50em) and (orientation:landscape) { .chapterThumb { height: 30vh; - min-width: 30vh + min-width: 30vh; } } @@ -74,17 +74,17 @@ right: 0; background: rgba(0, 0, 0, .7); padding: .25em .5em; - user-select: none + user-select: none; } .chapterThumbText { padding: .25em 0; margin: 0; - opacity: 1 + opacity: 1; } .chapterThumbText-dim { - opacity: .6 + opacity: .6; } .videoOsdBottom { @@ -104,17 +104,17 @@ transition: opacity 0.3s ease-out; color: #fff; user-select: none; - -webkit-touch-callout: none + -webkit-touch-callout: none; } .videoOsdBottom-hidden { - opacity: 0 + opacity: 0; } .osdControls { -webkit-box-flex: 1; -webkit-flex-grow: 1; - flex-grow: 1 + flex-grow: 1; } .videoOsdBottom .buttons { @@ -126,14 +126,14 @@ flex-wrap: wrap; -webkit-box-align: center; -webkit-align-items: center; - align-items: center + align-items: center; } .osdVolumeSliderContainer { width: 9em; -webkit-box-flex: 1; -webkit-flex-grow: 1; - flex-grow: 1 + flex-grow: 1; } .osdMediaInfo, @@ -149,7 +149,7 @@ margin: 0 .5em 0 auto; display: flex; -webkit-align-items: center; - align-items: center + align-items: center; } .osdTimeText { @@ -157,13 +157,13 @@ -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; - user-select: none + user-select: none; } .osdPoster { width: 10%; position: relative; - margin-right: .5em + margin-right: .5em; } .osdPoster img { @@ -178,22 +178,22 @@ -moz-user-select: none; -webkit-user-drag: none; -webkit-user-select: none; - -ms-user-select: none + -ms-user-select: none; } .osdTitle, .osdTitleSmall { - margin: 0 1em 0 0 + margin: 0 1em 0 0; } .osdMediaInfo { display: flex; -webkit-align-items: center; - align-items: center + align-items: center; } .osdSecondaryMediaInfo { - padding-left: .6em !important + padding-left: .6em !important; } .osdTextContainer { @@ -208,13 +208,13 @@ -ms-user-select: none; user-select: none; margin-bottom: .7em; - padding-left: .5em + padding-left: .5em; } .osdMainTextContainer { -webkit-box-align: baseline; -webkit-align-items: baseline; - align-items: baseline + align-items: baseline; } .osdMediaStatus { @@ -248,7 +248,7 @@ .pageContainer { top: 0; - position: fixed + position: fixed; } @media all and (max-width:30em) { @@ -257,31 +257,31 @@ .btnRewind, .osdMediaInfo, .osdPoster { - display: none !important + display: none !important; } } @media all and (max-width:33.75em) { .videoOsdBottom .paper-icon-button-light { - margin: 0 + margin: 0; } } @media all and (max-width:43em) { .videoOsdBottom .volumeButtons, .osdMediaStatus span { - display: none !important + display: none !important; } } @media all and (max-width:50em) { .videoOsdBottom .btnFastForward, .videoOsdBottom .btnRewind { - display: none !important + display: none !important; } } @media all and (max-width:75em) { .videoOsdBottom .endsAtText { - display: none !important + display: none !important; } } diff --git a/src/components/directorybrowser/directorybrowser.css b/src/components/directorybrowser/directorybrowser.css index 0f3f22f073..d47293e005 100644 --- a/src/components/directorybrowser/directorybrowser.css +++ b/src/components/directorybrowser/directorybrowser.css @@ -1,8 +1,8 @@ #ulDirectoryPickerList a { padding-top: .4em; - padding-bottom: .4em + padding-bottom: .4em; } .lblDirectoryPickerPath { - white-space: nowrap + white-space: nowrap; } \ No newline at end of file diff --git a/src/components/filterdialog/style.css b/src/components/filterdialog/style.css index 9851c2d7b9..393b04b241 100644 --- a/src/components/filterdialog/style.css +++ b/src/components/filterdialog/style.css @@ -8,13 +8,13 @@ -webkit-border-radius: 0 !important; border-radius: 0 !important; max-height: none !important; - max-width: none !important + max-width: none !important; } @media all and (min-height:600px) { .dynamicFilterDialog { top: 10% !important; - bottom: 25% !important + bottom: 25% !important; } } @@ -23,7 +23,7 @@ width: auto; left: 10vw !important; right: 10vw !important; - margin-left: 0 !important + margin-left: 0 !important; } } @@ -31,6 +31,6 @@ .dynamicFilterDialog { width: 20.16em; margin-left: -10.08em !important; - left: 50% !important + left: 50% !important; } } diff --git a/src/components/homesections/homesections.css b/src/components/homesections/homesections.css index 45df67c482..8751308eb0 100644 --- a/src/components/homesections/homesections.css +++ b/src/components/homesections/homesections.css @@ -14,12 +14,12 @@ margin-left: .5em; margin-right: .5em; -webkit-flex-shrink: 0; - flex-shrink: 0 + flex-shrink: 0; } .homeLibraryText { white-space: nowrap; -o-text-overflow: ellipsis; text-overflow: ellipsis; - overflow: hidden + overflow: hidden; } diff --git a/src/components/navdrawer/navdrawer.css b/src/components/navdrawer/navdrawer.css index 6608235c2f..7ec6b4e73b 100644 --- a/src/components/navdrawer/navdrawer.css +++ b/src/components/navdrawer/navdrawer.css @@ -3,7 +3,7 @@ position: fixed; top: 0; bottom: 0; - contain: strict + contain: strict; } .touch-menu-la { @@ -15,24 +15,24 @@ -webkit-transition: -webkit-transform ease-out 40ms, left ease-out 260ms; -o-transition: transform ease-out 40ms, left ease-out 260ms; transition: transform ease-out 40ms, left ease-out 260ms; - z-index: 1099 + z-index: 1099; } .touch-menu-la.transition { -webkit-transition: -webkit-transform ease-out 240ms, left ease-out 260ms; -o-transition: transform ease-out 240ms, left ease-out 260ms; - transition: transform ease-out 240ms, left ease-out 260ms + transition: transform ease-out 240ms, left ease-out 260ms; } .drawer-open { -webkit-box-shadow: 2px 0 12px rgba(0, 0, 0, .4); - box-shadow: 2px 0 12px rgba(0, 0, 0, .4) + box-shadow: 2px 0 12px rgba(0, 0, 0, .4); } .scrollContainer { -webkit-box-flex: 1; -webkit-flex-grow: 1; - flex-grow: 1 + flex-grow: 1; } .tmla-mask { @@ -44,9 +44,9 @@ -o-transition: opacity ease-in-out .38s, visibility ease-in-out .38s; transition: opacity ease-in-out .38s, visibility ease-in-out .38s; will-change: opacity; - background-color: rgba(0, 0, 0, .3) + background-color: rgba(0, 0, 0, .3); } .tmla-mask.backdrop { - opacity: 1 + opacity: 1; } \ No newline at end of file diff --git a/src/components/remotecontrol/remotecontrol.css b/src/components/remotecontrol/remotecontrol.css index 508c8d6745..cc60bd55a4 100644 --- a/src/components/remotecontrol/remotecontrol.css +++ b/src/components/remotecontrol/remotecontrol.css @@ -5,11 +5,11 @@ -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; - flex-direction: row + flex-direction: row; } .navigationSection { - text-align: center + text-align: center; } .btnArrowUp{ @@ -33,11 +33,11 @@ } .nowPlayingPageTitle { - margin: 0 0 .5em .5em + margin: 0 0 .5em .5em; } .nowPlayingPositionSliderContainer { - margin: .7em 0 .7em 1em + margin: .7em 0 .7em 1em; } .nowPlayingInfoButtons { @@ -48,7 +48,7 @@ -webkit-align-items: center; align-items: center; -webkit-flex-wrap: wrap; - flex-wrap: wrap + flex-wrap: wrap; } .nowPlayingInfoControls, @@ -63,12 +63,12 @@ margin-right: .25em; position: relative; -webkit-flex-shrink: 0; - flex-shrink: 0 + flex-shrink: 0; } @media all and (min-width:50em) { .nowPlayingPageImageContainer { - width: 16% + width: 16%; } } @@ -83,7 +83,7 @@ flex-direction: column; -webkit-box-pack: center; -webkit-justify-content: center; - justify-content: center + justify-content: center; } .nowPlayingPageImage { @@ -110,43 +110,43 @@ flex-direction: column !important; -webkit-box-align: center; -webkit-align-items: center; - align-items: center + align-items: center; } .nowPlayingPageTitle { text-align: center; - margin: .5em 0 .75em + margin: .5em 0 .75em; } .nowPlayingPositionSliderContainer { - margin: .7em 1em + margin: .7em 1em; } .nowPlayingInfoButtons { -webkit-box-pack: center; -webkit-justify-content: center; - justify-content: center + justify-content: center; } .nowPlayingPageImageContainer { width: auto; - margin-right: 0 + margin-right: 0; } .nowPlayingInfoControls { margin-top: 1em; - max-width: 100% + max-width: 100%; } .nowPlayingPageImage { width: auto; - height: 36vh + height: 36vh; } } @media all and (orientation:portrait) and (max-width:40em) { .nowPlayingPageImage { - height: 30vh + height: 30vh; } } @@ -155,7 +155,7 @@ -webkit-box-align: center; -webkit-align-items: center; align-items: center; - margin: 0 1em + margin: 0 1em; } .nowPlayingSecondaryButtons { @@ -169,7 +169,7 @@ flex-wrap: wrap; -webkit-box-pack: center; -webkit-justify-content: center; - justify-content: center + justify-content: center; } @media all and (min-width:50em) { @@ -179,25 +179,25 @@ flex-grow: 1; -webkit-box-pack: end; -webkit-justify-content: flex-end; - justify-content: flex-end + justify-content: flex-end; } } @media all and (min-width:80em) { .nowPlayingPageImageContainer { - margin-right: .75em + margin-right: .75em; } } .nowPlayingNavButtonContainer { - width: 30em + width: 30em; } .smallBackdropPosterItem .cardOverlayInner>div { white-space: nowrap; -o-text-overflow: ellipsis; text-overflow: ellipsis; - overflow: hidden + overflow: hidden; } .playlistIndexIndicatorImage { @@ -207,16 +207,16 @@ } .hideVideoButtons .videoButton { - display: none + display: none; } .nowPlayingVolumeSliderContainer { - width: 9em + width: 9em; } @media all and (max-width:50em) { .nowPlayingInfoButtons .nowPlayingPageUserDataButtons { - display: none !important + display: none !important; } .navigationSection .collapseContent i{ font-size: 4em; @@ -225,7 +225,7 @@ @media all and (max-width:47em) { .nowPlayingInfoButtons .repeatToggleButton { - display: none !important + display: none !important; } } @@ -233,6 +233,6 @@ .nowPlayingInfoButtons .btnNowPlayingFastForward, .nowPlayingInfoButtons .btnNowPlayingRewind, .nowPlayingInfoButtons .playlist .listItemMediaInfo { - display: none !important + display: none !important; } } diff --git a/src/elements/emby-radio/emby-radio.css b/src/elements/emby-radio/emby-radio.css index a60c131f09..2e27f48210 100644 --- a/src/elements/emby-radio/emby-radio.css +++ b/src/elements/emby-radio/emby-radio.css @@ -90,7 +90,7 @@ } .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) + box-shadow: 0 0 0 10px rgba(0, 164, 220, 0.26); } .mdl-radio__label { diff --git a/src/themes/appletv/theme.css b/src/themes/appletv/theme.css index 825639973c..58ea6618c5 100644 --- a/src/themes/appletv/theme.css +++ b/src/themes/appletv/theme.css @@ -1,22 +1,22 @@ .skinHeader, html { color: #222; - color: rgba(0, 0, 0, .87) + color: rgba(0, 0, 0, .87); } .wizardStartForm, .ui-corner-all, .ui-shadow { - background-color: #303030 + background-color: #303030; } .emby-collapsible-button { border-color: #ccc; - border-color: rgba(0, 0, 0, .158) + border-color: rgba(0, 0, 0, .158); } .collapseContent { - background-color: #eaeaea + background-color: #eaeaea; } .formDialogHeader:not(.formDialogHeader-clear), @@ -26,38 +26,38 @@ html { background: -webkit-gradient(linear, left top, right top, from(#BCBCBC), color-stop(#A7B4B7), color-stop(#BEB5A5), color-stop(#ADBEC2), to(#B9C7CB)); background: -webkit-linear-gradient(left, #BCBCBC, #A7B4B7, #BEB5A5, #ADBEC2, #B9C7CB); background: -o-linear-gradient(left, #BCBCBC, #A7B4B7, #BEB5A5, #ADBEC2, #B9C7CB); - background: linear-gradient(to right, #BCBCBC, #A7B4B7, #BEB5A5, #ADBEC2, #B9C7CB) + background: linear-gradient(to right, #BCBCBC, #A7B4B7, #BEB5A5, #ADBEC2, #B9C7CB); } .skinHeader.semiTransparent { -webkit-backdrop-filter: none !important; - backdrop-filter: none !important + backdrop-filter: none !important; } .pageTitleWithDefaultLogo { - background-image: url(../../assets/img/banner-dark.png) + background-image: url(../../assets/img/banner-dark.png); } html { - background: #d5e9f2 + background: #d5e9f2; } .backgroundContainer, .dialog { background: #D5E9F2; -webkit-background-size: 100% 100%; - background-size: 100% 100% + background-size: 100% 100%; } .backgroundContainer.withBackdrop { background: -webkit-gradient(linear, left top, left bottom, from(rgba(192, 212, 222, .94)), color-stop(rgba(235, 250, 254, .94)), color-stop(rgba(227, 220, 212, .94)), color-stop(rgba(206, 214, 216, .94)), to(rgba(192, 211, 218, .94))); background: -webkit-linear-gradient(top, rgba(192, 212, 222, .94), rgba(235, 250, 254, .94), rgba(227, 220, 212, .94), rgba(206, 214, 216, .94), rgba(192, 211, 218, .94)); background: -o-linear-gradient(top, rgba(192, 212, 222, .94), rgba(235, 250, 254, .94), rgba(227, 220, 212, .94), rgba(206, 214, 216, .94), rgba(192, 211, 218, .94)); - background: linear-gradient(to bottom, rgba(192, 212, 222, .94), rgba(235, 250, 254, .94), rgba(227, 220, 212, .94), rgba(206, 214, 216, .94), rgba(192, 211, 218, .94)) + background: linear-gradient(to bottom, rgba(192, 212, 222, .94), rgba(235, 250, 254, .94), rgba(227, 220, 212, .94), rgba(206, 214, 216, .94), rgba(192, 211, 218, .94)); } .actionSheet { - background: #f0f0f0 + background: #f0f0f0; } .paper-icon-button-light:hover:not(:disabled) { @@ -73,30 +73,30 @@ html { .raised { background: #fff; background: rgba(0, 0, 0, .14); - color: inherit + color: inherit; } .fab:focus, .raised:focus { - background: rgba(0, 0, 0, .24) + background: rgba(0, 0, 0, .24); } .button-submit { background: #00a4dc; - color: #fff + color: #fff; } .button-submit:focus { - background: #0cb0e8 + background: #0cb0e8; } .button-delete { background: rgb(247, 0, 0); - color: rgba(255, 255, 255, .87) + color: rgba(255, 255, 255, .87); } .checkboxLabel { - color: inherit + color: inherit; } .checkboxListLabel, @@ -105,49 +105,49 @@ html { .paperListLabel, .textareaLabelUnfocused { color: #555; - color: rgba(0, 0, 0, .7) + color: rgba(0, 0, 0, .7); } .button-link, .inputLabelFocused, .selectLabelFocused, .textareaLabelFocused { - color: green + color: green; } .checkboxOutline { - border-color: currentColor + border-color: currentColor; } .paperList, .visualCardBox { background-color: #fff; - background-color: rgba(0, 0, 0, .1) + background-color: rgba(0, 0, 0, .1); } .defaultCardBackground1 { - background-color: #009688 + background-color: #009688; } .defaultCardBackground2 { - background-color: #d32f2f + background-color: #d32f2f; } .defaultCardBackground3 { - background-color: #0288d1 + background-color: #0288d1; } .defaultCardBackground4 { - background-color: #388e3c + background-color: #388e3c; } .defaultCardBackground5 { - background-color: #f57f17 + background-color: #f57f17; } .formDialogFooter:not(.formDialogFooter-clear) { border-top: 1px solid #ddd; - border-top: 1px solid rgba(0, 0, 0, .08) + border-top: 1px solid rgba(0, 0, 0, .08); } .cardText-secondary, @@ -158,31 +158,31 @@ html { .programSecondaryTitle, .secondaryText { color: #888; - color: rgba(0, 0, 0, .5) + color: rgba(0, 0, 0, .5); } .actionsheetDivider { background: #ddd; - background: rgba(0, 0, 0, .14) + background: rgba(0, 0, 0, .14); } .cardFooter-vibrant .cardText-secondary { color: inherit; - opacity: .5 + opacity: .5; } .formDialogHeader a, .toast { - color: #fff + color: #fff; } .actionSheetMenuItem:hover { - background-color: #ddd + background-color: #ddd; } .toast { background: #303030; - color: rgba(255, 255, 255, .87) + color: rgba(255, 255, 255, .87); } .appfooter, @@ -192,63 +192,63 @@ html { background: -webkit-gradient(linear, left top, right top, from(#BCBCBC), color-stop(#A7B4B7), color-stop(#BEB5A5), color-stop(#ADBEC2), to(#B9C7CB)); background: -webkit-linear-gradient(left, #BCBCBC, #A7B4B7, #BEB5A5, #ADBEC2, #B9C7CB); background: -o-linear-gradient(left, #BCBCBC, #A7B4B7, #BEB5A5, #ADBEC2, #B9C7CB); - background: linear-gradient(to right, #BCBCBC, #A7B4B7, #BEB5A5, #ADBEC2, #B9C7CB) + background: linear-gradient(to right, #BCBCBC, #A7B4B7, #BEB5A5, #ADBEC2, #B9C7CB); } .nowPlayingBarSecondaryText { - color: #999 + color: #999; } .itemSelectionPanel { - border: 1px solid #00a4dc + border: 1px solid #00a4dc; } .selectionCommandsPanel { background: #00a4dc; - color: #fff + color: #fff; } .upNextDialog-countdownText { - color: #00a4dc + color: #00a4dc; } .alphaPickerButton { color: #555; color: rgba(0, 0, 0, .7); - background-color: transparent + background-color: transparent; } .alphaPickerButton-selected, .alphaPickerButton-tv:focus { background-color: #00a4dc; - color: #fff !important + color: #fff !important; } .detailTableBodyRow-shaded:nth-child(even) { background: #f8f8f8; - background: rgba(0, 0, 0, .1) + background: rgba(0, 0, 0, .1); } .listItem-border { - border-color: rgba(0, 0, 0, .1) !important + border-color: rgba(0, 0, 0, .1) !important; } .listItem:focus { - background: rgba(0, 0, 0, .2) + background: rgba(0, 0, 0, .2); } .progressring-spiner { - border-color: #00a4dc + border-color: #00a4dc; } .mediaInfoText { color: #333; - background: #fff + background: #fff; } .mediaInfoTimerIcon, .starIcon { - color: #cb272a + color: #cb272a; } .emby-input, @@ -257,23 +257,23 @@ html { background: rgba(255, 255, 255, .9); border: .07em solid rgba(0, 0, 0, .158); -webkit-border-radius: .15em; - border-radius: .15em + border-radius: .15em; } .emby-input:focus, .emby-textarea:focus { - border-color: #00a4dc + border-color: #00a4dc; } .emby-select-withcolor { color: inherit; background: rgba(255, 255, 255, .9); - border: .07em solid rgba(0, 0, 0, .158) + border: .07em solid rgba(0, 0, 0, .158); } .emby-checkbox:checked+span+.checkboxOutline, .emby-select-withcolor:focus { - border-color: #00a4dc + border-color: #00a4dc; } .emby-checkbox:focus+span+.checkboxOutline { @@ -282,7 +282,7 @@ html { .emby-checkbox:checked+span+.checkboxOutline, .itemProgressBarForeground { - background-color: #00a4dc + background-color: #00a4dc; } .emby-checkbox:focus:not(:checked)+span+.checkboxOutline { @@ -291,44 +291,44 @@ html { .emby-select-withcolor>option { color: #000; - background: #fff + background: #fff; } .emby-select-tv-withcolor:focus { background-color: #00a4dc; - color: #fff + color: #fff; } .itemProgressBarForeground-recording { - background-color: #cb272a + background-color: #cb272a; } .countIndicator, .fullSyncIndicator, .playedIndicator { - background: #00a4dc + background: #00a4dc; } .fullSyncIndicator { - color: #fff + color: #fff; } .mainDrawer { - background: #fff + background: #fff; } .navMenuOption:hover { - background: #f2f2f2 + background: #f2f2f2; } .navMenuOption-selected { background: #00a4dc !important; - color: #fff + color: #fff; } .emby-button.show-focus:focus { background: #00a4dc; - color: #fff + color: #fff; } .emby-tab-button { @@ -351,57 +351,57 @@ html { .guide-channelHeaderCell, .programCell { border-color: #555; - border-color: rgba(0, 0, 0, .1) + border-color: rgba(0, 0, 0, .1); } .programCell-sports { - background: #3949ab !important + background: #3949ab !important; } .programCell-movie { - background: #5e35b1 !important + background: #5e35b1 !important; } .programCell-kids { - background: #039be5 !important + background: #039be5 !important; } .programCell-news { - background: #43a047 !important + background: #43a047 !important; } .programCell-active { - background: rgba(0, 0, 0, .1) !important + background: rgba(0, 0, 0, .1) !important; } .guide-channelHeaderCell:focus, .programCell:focus { background-color: #00a4dc !important; - color: #fff !important + color: #fff !important; } .guide-programTextIcon { color: #1e1e1e; - background: #555 + background: #555; } .guide-headerTimeslots { - color: inherit + color: inherit; } .guide-date-tab-button { color: #555; - color: rgba(0, 0, 0, .54) + color: rgba(0, 0, 0, .54); } .guide-date-tab-button.emby-tab-button-active, .guide-date-tab-button:focus { - color: #00a4dc + color: #00a4dc; } .guide-date-tab-button.show-focus:focus { background-color: #00a4dc; - color: #fff + color: #fff; } .infoBanner { @@ -409,31 +409,31 @@ html { background: #fff3a5; padding: 1em; -webkit-border-radius: .25em; - border-radius: .25em + border-radius: .25em; } .ratingbutton-icon-withrating { - color: #c33 + color: #c33; } .downloadbutton-icon-complete, .downloadbutton-icon-on { - color: #4285f4 + color: #4285f4; } .playstatebutton-icon-played { - color: #c33 + color: #c33; } .repeatButton-active { - color: #4285f4 + color: #4285f4; } .card:focus .cardBox.visualCardBox, .card:focus .cardBox:not(.visualCardBox) .cardScalable { - border-color: #00a4dc !important + border-color: #00a4dc !important; } .metadataSidebarIcon { - color: #00a4dc + color: #00a4dc; } diff --git a/src/themes/blueradiance/theme.css b/src/themes/blueradiance/theme.css index 8cade96fc4..2abc0d6b1b 100644 --- a/src/themes/blueradiance/theme.css +++ b/src/themes/blueradiance/theme.css @@ -1,18 +1,18 @@ .skinHeader, html { color: #ddd; - color: rgba(255, 255, 255, .8) + color: rgba(255, 255, 255, .8); } .wizardStartForm, .ui-corner-all, .ui-shadow { - background-color: #303030 + background-color: #303030; } .emby-collapsible-button { border-color: #383838; - border-color: rgba(255, 255, 255, .135) + border-color: rgba(255, 255, 255, .135); } .skinHeader-withBackground { @@ -20,7 +20,7 @@ html { background: -webkit-gradient(linear, left top, right top, from(#291A31), color-stop(#033664), color-stop(#011432), color-stop(#141A3A), to(#291A31)); background: -webkit-linear-gradient(left, #291A31, #033664, #011432, #141A3A, #291A31); background: -o-linear-gradient(left, #291A31, #033664, #011432, #141A3A, #291A31); - background: linear-gradient(to right, #291A31, #033664, #011432, #141A3A, #291A31) + background: linear-gradient(to right, #291A31, #033664, #011432, #141A3A, #291A31); } .skinHeader.semiTransparent { @@ -34,27 +34,27 @@ html { } .pageTitleWithDefaultLogo { - background-image: url(../../assets/img/banner-light.png) + background-image: url(../../assets/img/banner-light.png); } .dialog, html { - background-color: #033361 + background-color: #033361; } .backgroundContainer { background: url(bg.jpg) center top no-repeat #033361; -webkit-background-size: cover; - background-size: cover + background-size: cover; } .backgroundContainer.withBackdrop { - opacity: .86 + opacity: .86; } @media (orientation:portrait) { .backgroundContainer { - background-position: 30% top + background-position: 30% top; } } @@ -70,31 +70,31 @@ html { .fab, .raised { background: rgba(0, 0, 0, .5); - color: rgba(255, 255, 255, .87) + color: rgba(255, 255, 255, .87); } .fab:focus, .raised:focus { - background: rgba(0, 0, 0, .7) + background: rgba(0, 0, 0, .7); } .button-submit { background: #00a4dc; - color: #fff + color: #fff; } .button-submit:focus { background: #0cb0e8; - color: #fff + color: #fff; } .button-delete { background: rgb(247, 0, 0); - color: rgba(255, 255, 255, .87) + color: rgba(255, 255, 255, .87); } .checkboxLabel { - color: inherit + color: inherit; } .checkboxListLabel, @@ -103,17 +103,17 @@ html { .paperListLabel, .textareaLabelUnfocused { color: #bbb; - color: rgba(255, 255, 255, .7) + color: rgba(255, 255, 255, .7); } .inputLabelFocused, .selectLabelFocused, .textareaLabelFocused { - color: #00a4dc + color: #00a4dc; } .checkboxOutline { - border-color: currentColor + border-color: currentColor; } .collapseContent, @@ -121,27 +121,27 @@ html { .formDialogHeader:not(.formDialogHeader-clear), .paperList, .visualCardBox { - background-color: rgba(0, 0, 0, .5) + background-color: rgba(0, 0, 0, .5); } .defaultCardBackground1 { - background-color: #d2b019 + background-color: #d2b019; } .defaultCardBackground2 { - background-color: #338abb + background-color: #338abb; } .defaultCardBackground3 { - background-color: #6b689d + background-color: #6b689d; } .defaultCardBackground4 { - background-color: #dd452b + background-color: #dd452b; } .defaultCardBackground5 { - background-color: #5ccea9 + background-color: #5ccea9; } .cardText-secondary, @@ -152,100 +152,100 @@ html { .programSecondaryTitle, .secondaryText { color: #999; - color: rgba(255, 255, 255, .5) + color: rgba(255, 255, 255, .5); } .actionsheetDivider { background: #444; - background: rgba(255, 255, 255, .14) + background: rgba(255, 255, 255, .14); } .cardFooter-vibrant .cardText-secondary { color: inherit; - opacity: .5 + opacity: .5; } .actionSheetMenuItem:hover { - background-color: rgba(0, 0, 0, .5) + background-color: rgba(0, 0, 0, .5); } .toast { background: #303030; color: #fff; - color: rgba(255, 255, 255, .87) + color: rgba(255, 255, 255, .87); } .appfooter { background: #033664; color: #ccc; - color: rgba(255, 255, 255, .78) + color: rgba(255, 255, 255, .78); } @supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)) { .appfooter-blurred { background: rgba(1, 2, 50, .7); - backdrop-filter: blur(20px) + backdrop-filter: blur(20px); } } .itemSelectionPanel { - border: 1px solid #00a4dc + border: 1px solid #00a4dc; } .selectionCommandsPanel { background: #00a4dc; - color: #fff + color: #fff; } .upNextDialog-countdownText { - color: #00a4dc + color: #00a4dc; } .alphaPickerButton { color: #999; color: rgba(255, 255, 255, .5); - background-color: transparent + background-color: transparent; } .alphaPickerButton-selected { - color: #fff + color: #fff; } .alphaPickerButton-tv:focus { background-color: #00a4dc; - color: #fff !important + color: #fff !important; } .detailTableBodyRow-shaded:nth-child(even) { background: #1c1c1c; - background: rgba(30, 30, 30, .9) + background: rgba(30, 30, 30, .9); } .listItem-border { - border-color: rgba(255, 255, 255, .1) !important + border-color: rgba(255, 255, 255, .1) !important; } .listItem:focus { - background: rgba(0, 0, 0, .3) + background: rgba(0, 0, 0, .3); } .progressring-spiner { - border-color: #00a4dc + border-color: #00a4dc; } .button-flat-accent, .button-link { - color: #00a4dc + color: #00a4dc; } .mediaInfoText { color: #ddd; - background: rgba(170, 170, 190, .2) + background: rgba(170, 170, 190, .2); } .mediaInfoTimerIcon, .starIcon { - color: #cb272a + color: #cb272a; } .emby-input, @@ -254,36 +254,36 @@ html { background: rgba(0, 0, 0, .5); border: .07em solid transparent; -webkit-border-radius: .15em; - border-radius: .15em + border-radius: .15em; } .emby-input:focus, .emby-textarea:focus { - border-color: #00a4dc + border-color: #00a4dc; } .emby-select-withcolor { color: inherit; background: rgba(0, 0, 0, .5); - border: .07em solid transparent + border: .07em solid transparent; } .emby-select-withcolor>option { color: inherit; - background: #222 + background: #222; } .emby-select-withcolor:focus { - border-color: #00a4dc !important + border-color: #00a4dc !important; } .emby-select-tv-withcolor:focus { background-color: #00a4dc !important; - color: #fff !important + color: #fff !important; } .emby-checkbox:checked+span+.checkboxOutline { - border-color: #00a4dc + border-color: #00a4dc; } .emby-checkbox:focus+span+.checkboxOutline { @@ -292,7 +292,7 @@ html { .emby-checkbox:checked+span+.checkboxOutline, .itemProgressBarForeground { - background-color: #00a4dc + background-color: #00a4dc; } .emby-checkbox:focus:not(:checked)+span+.checkboxOutline { @@ -300,39 +300,39 @@ html { } .itemProgressBarForeground-recording { - background-color: #cb272a + background-color: #cb272a; } .countIndicator, .fullSyncIndicator, .playedIndicator { - background: #00a4dc + background: #00a4dc; } .fullSyncIndicator { - color: #fff + color: #fff; } .mainDrawer { - background-color: rgba(0, 0, 0, .5) + background-color: rgba(0, 0, 0, .5); } .drawer-open { - background-color: #011432 + background-color: #011432; } .navMenuOption:hover { - background: rgba(221, 221, 221, 0.068) + background: rgba(221, 221, 221, 0.068); } .navMenuOption-selected { background: #00a4dc !important; - color: #fff + color: #fff; } .emby-button.show-focus:focus { background: #00a4dc; - color: #fff + color: #fff; } .emby-tab-button { @@ -340,7 +340,7 @@ html { } .emby-tab-button-active { - color: #00a4dc + color: #00a4dc; } .emby-tab-button.show-focus:focus { @@ -354,57 +354,57 @@ html { .channelPrograms, .guide-channelHeaderCell, .programCell { - border-color: rgba(255, 255, 255, .05) + border-color: rgba(255, 255, 255, .05); } .programCell-sports { - background: #3949ab !important + background: #3949ab !important; } .programCell-movie { - background: #5e35b1 !important + background: #5e35b1 !important; } .programCell-kids { - background: #039be5 !important + background: #039be5 !important; } .programCell-news { - background: #43a047 !important + background: #43a047 !important; } .programCell-active { - background: rgba(0, 0, 0, .4) !important + background: rgba(0, 0, 0, .4) !important; } .guide-channelHeaderCell:focus, .programCell:focus { background-color: #00a4dc !important; - color: #fff !important + color: #fff !important; } .guide-programTextIcon { color: #1e1e1e; - background: #555 + background: #555; } .guide-headerTimeslots { - color: inherit + color: inherit; } .guide-date-tab-button { color: #555; - color: rgba(255, 255, 255, .3) + color: rgba(255, 255, 255, .3); } .guide-date-tab-button.emby-tab-button-active, .guide-date-tab-button:focus { - color: #00a4dc + color: #00a4dc; } .guide-date-tab-button.show-focus:focus { background-color: #00a4dc; - color: #fff + color: #fff; } .infoBanner { @@ -412,54 +412,56 @@ html { background: #111; padding: 1em; -webkit-border-radius: .25em; - border-radius: .25em + border-radius: .25em; } .ratingbutton-icon-withrating { - color: #c33 + color: #c33; } .downloadbutton-icon-complete, .downloadbutton-icon-on { - color: #4285f4 + color: #4285f4; } .playstatebutton-icon-played { - color: #c33 + color: #c33; } .repeatButton-active { - color: #4285f4 + color: #4285f4; } .card:focus .cardBox.visualCardBox, .card:focus .cardBox:not(.visualCardBox) .cardScalable { - border-color: #00a4dc !important + border-color: #00a4dc !important; } ::-webkit-scrollbar-track { - -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3) + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3); + box-shadow: inset 0 0 6px rgba(0, 0, 0, .3); } ::-webkit-scrollbar-track-piece { - background-color: #3b3b3b + background-color: #3b3b3b; } .layout-desktop ::-webkit-scrollbar { width: 1em; - height: 1em + height: 1em; } ::-webkit-scrollbar-thumb:horizontal, ::-webkit-scrollbar-thumb:vertical { + border-radius: 2px; -webkit-border-radius: 2px; - background: center no-repeat #888 + background: center no-repeat #888; } .timeslotHeaders-desktop::-webkit-scrollbar { - height: .7em + height: .7em; } .metadataSidebarIcon { - color: #00a4dc + color: #00a4dc; } diff --git a/src/themes/dark/theme.css b/src/themes/dark/theme.css index 7e0eec8c65..e02de9379a 100644 --- a/src/themes/dark/theme.css +++ b/src/themes/dark/theme.css @@ -1,22 +1,22 @@ .skinHeader, html { color: #ddd; - color: rgba(255, 255, 255, .8) + color: rgba(255, 255, 255, .8); } .wizardStartForm, .ui-corner-all, .ui-shadow { - background-color: #101010 + background-color: #101010; } .emby-collapsible-button { border-color: #383838; - border-color: rgba(255, 255, 255, .135) + border-color: rgba(255, 255, 255, .135); } .skinHeader-withBackground { - background-color: #101010 + background-color: #101010; } .skinHeader.semiTransparent { @@ -26,17 +26,17 @@ html { } .pageTitleWithDefaultLogo { - background-image: url(../../assets/img/banner-light.png) + background-image: url(../../assets/img/banner-light.png); } .backgroundContainer, .dialog, html { - background-color: #101010 + background-color: #101010; } .backgroundContainer.withBackdrop { - background-color: rgba(0, 0, 0, .86) + background-color: rgba(0, 0, 0, .86); } .paper-icon-button-light:hover:not(:disabled) { @@ -51,31 +51,31 @@ html { .fab, .raised { background: #303030; - color: rgba(255, 255, 255, .87) + color: rgba(255, 255, 255, .87); } .fab:focus, .raised:focus { - background: #383838 + background: #383838; } .button-submit { background: #00a4dc; - color: #fff + color: #fff; } .button-submit:focus { background: #0cb0e8; - color: #fff + color: #fff; } .button-delete { background: rgb(247, 0, 0); - color: rgba(255, 255, 255, .87) + color: rgba(255, 255, 255, .87); } .checkboxLabel { - color: inherit + color: inherit; } .checkboxListLabel, @@ -84,17 +84,17 @@ html { .paperListLabel, .textareaLabelUnfocused { color: #bbb; - color: rgba(255, 255, 255, .7) + color: rgba(255, 255, 255, .7); } .inputLabelFocused, .selectLabelFocused, .textareaLabelFocused { - color: #00a4dc + color: #00a4dc; } .checkboxOutline { - border-color: currentColor + border-color: currentColor; } .collapseContent, @@ -102,27 +102,27 @@ html { .formDialogHeader:not(.formDialogHeader-clear), .paperList, .visualCardBox { - background-color: #242424 + background-color: #242424; } .defaultCardBackground1 { - background-color: #d2b019 + background-color: #d2b019; } .defaultCardBackground2 { - background-color: #338abb + background-color: #338abb; } .defaultCardBackground3 { - background-color: #6b689d + background-color: #6b689d; } .defaultCardBackground4 { - background-color: #dd452b + background-color: #dd452b; } .defaultCardBackground5 { - background-color: #5ccea9 + background-color: #5ccea9; } .cardText-secondary, @@ -133,93 +133,93 @@ html { .programSecondaryTitle, .secondaryText { color: #999; - color: rgba(255, 255, 255, .5) + color: rgba(255, 255, 255, .5); } .actionsheetDivider { background: #444; - background: rgba(255, 255, 255, .14) + background: rgba(255, 255, 255, .14); } .cardFooter-vibrant .cardText-secondary { color: inherit; - opacity: .5 + opacity: .5; } .actionSheetMenuItem:hover { - background-color: #242424 + background-color: #242424; } .toast { background: #303030; color: #fff; - color: rgba(255, 255, 255, .87) + color: rgba(255, 255, 255, .87); } .appfooter { background: #101010; color: #ccc; - color: rgba(255, 255, 255, .78) + color: rgba(255, 255, 255, .78); } .itemSelectionPanel { - border: 1px solid #00a4dc + border: 1px solid #00a4dc; } .selectionCommandsPanel { background: #00a4dc; - color: #fff + color: #fff; } .upNextDialog-countdownText { - color: #00a4dc + color: #00a4dc; } .alphaPickerButton { color: #999; color: rgba(255, 255, 255, .5); - background-color: transparent + background-color: transparent; } .alphaPickerButton-selected { - color: #fff + color: #fff; } .alphaPickerButton-tv:focus { background-color: #00a4dc; - color: #fff !important + color: #fff !important; } .detailTableBodyRow-shaded:nth-child(even) { background: #1c1c1c; - background: rgba(30, 30, 30, .9) + background: rgba(30, 30, 30, .9); } .listItem-border { - border-color: rgba(34, 34, 34, .9) !important + border-color: rgba(34, 34, 34, .9) !important; } .listItem:focus { - background: #333 + background: #333; } .progressring-spiner { - border-color: #00a4dc + border-color: #00a4dc; } .button-flat-accent, .button-link { - color: #00a4dc + color: #00a4dc; } .mediaInfoText { color: #ddd; - background: rgba(170, 170, 190, .2) + background: rgba(170, 170, 190, .2); } .mediaInfoTimerIcon, .starIcon { - color: #cb272a + color: #cb272a; } .emby-input, @@ -228,36 +228,36 @@ html { background: #292929; border: .07em solid #292929; -webkit-border-radius: .15em; - border-radius: .15em + border-radius: .15em; } .emby-input:focus, .emby-textarea:focus { - border-color: #00a4dc + border-color: #00a4dc; } .emby-select-withcolor { color: inherit; background: #292929; - border: .07em solid #292929 + border: .07em solid #292929; } .emby-select-withcolor>option { color: inherit; - background: #222 + background: #222; } .emby-select-withcolor:focus { - border-color: #00a4dc !important + border-color: #00a4dc !important; } .emby-select-tv-withcolor:focus { background-color: #00a4dc !important; - color: #fff !important + color: #fff !important; } .emby-checkbox:checked+span+.checkboxOutline { - border-color: #00a4dc + border-color: #00a4dc; } .emby-checkbox:focus+span+.checkboxOutline { @@ -266,7 +266,7 @@ html { .emby-checkbox:checked+span+.checkboxOutline, .itemProgressBarForeground { - background-color: #00a4dc + background-color: #00a4dc; } .emby-checkbox:focus:not(:checked)+span+.checkboxOutline { @@ -274,35 +274,35 @@ html { } .itemProgressBarForeground-recording { - background-color: #cb272a + background-color: #cb272a; } .countIndicator, .fullSyncIndicator, .playedIndicator { - background: #00a4dc + background: #00a4dc; } .fullSyncIndicator { - color: #fff + color: #fff; } .mainDrawer { - background-color: #101010 + background-color: #101010; } .navMenuOption:hover { - background: #252528 + background: #252528; } .navMenuOption-selected { background: #00a4dc !important; - color: #fff + color: #fff; } .emby-button.show-focus:focus { background: #00a4dc; - color: #fff + color: #fff; } .emby-tab-button { @@ -324,57 +324,57 @@ html { .channelPrograms, .guide-channelHeaderCell, .programCell { - border-color: rgba(255, 255, 255, .05) + border-color: rgba(255, 255, 255, .05); } .programCell-sports { - background: #3949ab !important + background: #3949ab !important; } .programCell-movie { - background: #5e35b1 !important + background: #5e35b1 !important; } .programCell-kids { - background: #039be5 !important + background: #039be5 !important; } .programCell-news { - background: #43a047 !important + background: #43a047 !important; } .programCell-active { - background: #1e1e1e !important + background: #1e1e1e !important; } .guide-channelHeaderCell:focus, .programCell:focus { background-color: #00a4dc !important; - color: #fff !important + color: #fff !important; } .guide-programTextIcon { color: #1e1e1e; - background: #555 + background: #555; } .guide-headerTimeslots { - color: inherit + color: inherit; } .guide-date-tab-button { color: #555; - color: rgba(255, 255, 255, .3) + color: rgba(255, 255, 255, .3); } .guide-date-tab-button.emby-tab-button-active, .guide-date-tab-button:focus { - color: #00a4dc + color: #00a4dc; } .guide-date-tab-button.show-focus:focus { background-color: #00a4dc; - color: #fff + color: #fff; } .infoBanner { @@ -382,54 +382,56 @@ html { background: #111; padding: 1em; -webkit-border-radius: .25em; - border-radius: .25em + border-radius: .25em; } .ratingbutton-icon-withrating { - color: #c33 + color: #c33; } .downloadbutton-icon-complete, .downloadbutton-icon-on { - color: #4285f4 + color: #4285f4; } .playstatebutton-icon-played { - color: #c33 + color: #c33; } .repeatButton-active { - color: #4285f4 + color: #4285f4; } .card:focus .cardBox.visualCardBox, .card:focus .cardBox:not(.visualCardBox) .cardScalable { - border-color: #00a4dc !important + border-color: #00a4dc !important; } ::-webkit-scrollbar-track { - -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3) + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3); + box-shadow: inset 0 0 6px rgba(0, 0, 0, .3); } ::-webkit-scrollbar-track-piece { - background-color: #3b3b3b + background-color: #3b3b3b; } .layout-desktop ::-webkit-scrollbar { width: 1em; - height: 1em + height: 1em; } ::-webkit-scrollbar-thumb:horizontal, ::-webkit-scrollbar-thumb:vertical { + border-radius: 2px; -webkit-border-radius: 2px; - background: center no-repeat #888 + background: center no-repeat #888; } .timeslotHeaders-desktop::-webkit-scrollbar { - height: .7em + height: .7em; } .metadataSidebarIcon { - color: #00a4dc + color: #00a4dc; } diff --git a/src/themes/emby/theme.css b/src/themes/emby/theme.css new file mode 100644 index 0000000000..64e9bfdd2d --- /dev/null +++ b/src/themes/emby/theme.css @@ -0,0 +1,432 @@ +.skinHeader, +html { + color: #ddd; + color: rgba(255, 255, 255, .8); +} + +.wizardStartForm, +.ui-corner-all, +.ui-shadow { + background-color: #1f1f1f; +} + +.emby-collapsible-button { + border-color: #383838; + border-color: rgba(255, 255, 255, .135); +} + +.skinHeader-withBackground { + background-color: #1f1f1f; +} + +.skinHeader.semiTransparent { + backdrop-filter: none !important; + background-color: rgba(0, 0, 0, 0.4); +} + +.pageTitleWithDefaultLogo { + background-image: url(../logowhite.png); +} + +.backgroundContainer, +.dialog, +html { + background-color: #1a1a1a; +} + +.backgroundContainer.withBackdrop { + background-color: rgba(0, 0, 0, .86); +} + +.paper-icon-button-light:hover:not(:disabled) { + color: #52b54b; + background-color: rgba(82, 181, 75, .2); +} + +.paper-icon-button-light.show-focus:focus { + color: #52b54b; +} + +.fab, +.raised { + background: #303030; + color: rgba(255, 255, 255, .87); +} + +.fab:focus, +.raised:focus { + background: #383838; +} + +.button-submit { + background: #52b54b; + color: #fff; +} + +.button-submit:focus { + background: #5ec157; + color: #fff; +} + +.button-delete { + background: rgb(247, 0, 0); + color: rgba(255, 255, 255, .87); +} + +.checkboxLabel { + color: inherit; +} + +.checkboxListLabel, +.inputLabel, +.inputLabelUnfocused, +.paperListLabel, +.textareaLabelUnfocused { + color: #bbb; + color: rgba(255, 255, 255, .7); +} + +.inputLabelFocused, +.selectLabelFocused, +.textareaLabelFocused { + color: #52b54b; +} + +.checkboxOutline { + border-color: currentColor; +} + +.collapseContent, +.formDialogFooter:not(.formDialogFooter-clear), +.formDialogHeader:not(.formDialogHeader-clear), +.paperList, +.visualCardBox { + background-color: #242424; +} + +.defaultCardBackground1 { + background-color: #d2b019; +} + +.defaultCardBackground2 { + background-color: #338abb; +} + +.defaultCardBackground3 { + background-color: #6b689d; +} + +.defaultCardBackground4 { + background-color: #dd452b; +} + +.defaultCardBackground5 { + background-color: #5ccea9; +} + +.cardText-secondary, +.fieldDescription, +.guide-programNameCaret, +.listItem .secondary, +.nowPlayingBarSecondaryText, +.programSecondaryTitle, +.secondaryText { + color: #999; + color: rgba(255, 255, 255, .5); +} + +.actionsheetDivider { + background: #444; + background: rgba(255, 255, 255, .14); +} + +.cardFooter-vibrant .cardText-secondary { + color: inherit; + opacity: .5; +} + +.actionSheetMenuItem:hover { + background-color: #242424; +} + +.toast { + background: #303030; + color: #fff; + color: rgba(255, 255, 255, .87); +} + +.appfooter { + background: #101010; + color: #ccc; + color: rgba(255, 255, 255, .78); +} + +.itemSelectionPanel { + border: 1px solid #52b54b; +} + +.selectionCommandsPanel { + background: #52b54b; + color: #fff; +} + +.upNextDialog-countdownText { + color: #52b54b; +} + +.alphaPickerButton { + color: #999; + color: rgba(255, 255, 255, .5); + background-color: transparent; +} + +.alphaPickerButton-selected { + color: #fff; +} + +.alphaPickerButton-tv:focus { + background-color: #52b54b; + color: #fff !important; +} + +.detailTableBodyRow-shaded:nth-child(even) { + background: #1c1c1c; + background: rgba(30, 30, 30, .9); +} + +.listItem-border { + border-color: rgba(34, 34, 34, .9) !important; +} + +.listItem:focus { + background: #333; +} + +.progressring-spiner { + border-color: #52b54b; +} + +.button-flat-accent, +.button-link { + color: #52b54b; +} + +.mediaInfoText { + color: #ddd; + background: rgba(170, 170, 190, .2); +} + +.mediaInfoTimerIcon, +.starIcon { + color: #cb272a; +} + +.emby-input, +.emby-textarea { + color: inherit; + background: #292929; + border: .07em solid #292929; + border-radius: .15em; +} + +.emby-input:focus, +.emby-textarea:focus { + border-color: #52b54b; +} + +.emby-select-withcolor { + color: inherit; + background: #292929; + border: .07em solid #292929; +} + +.emby-select-withcolor>option { + color: inherit; + background: #222; +} + +.emby-select-withcolor:focus { + border-color: #52b54b !important; +} + +.emby-select-tv-withcolor:focus { + background-color: #52b54b !important; + color: #fff !important; +} + +.emby-checkbox:checked+span+.checkboxOutline { + border-color: #52b54b; +} + +.emby-checkbox:focus+span+.checkboxOutline { + border-color: #fff; +} + +.emby-checkbox:checked+span+.checkboxOutline, +.itemProgressBarForeground { + background-color: #52b54b; +} + +.emby-checkbox:focus:not(:checked)+span+.checkboxOutline { + border-color: #52b54b; +} + +.itemProgressBarForeground-recording { + background-color: #cb272a; +} + +.countIndicator, +.fullSyncIndicator, +.playedIndicator { + background: #52b54b; +} + +.fullSyncIndicator { + color: #fff; +} + +.mainDrawer { + background-color: #1c1c1c; +} + +.navMenuOption:hover { + background: #252528; +} + +.navMenuOption-selected { + background: #52b54b !important; + color: #fff; +} + +.emby-button.show-focus:focus { + background: #52b54b; + color: #fff; +} + +.emby-tab-button { + color: #999; +} + +.emby-tab-button-active { + color: #52b54b; +} + +.emby-tab-button.show-focus:focus { + color: #52b54b; +} + +.emby-tab-button:hover { + color: #52b54b; +} + +.channelPrograms, +.guide-channelHeaderCell, +.programCell { + border-color: rgba(255, 255, 255, .05); +} + +.programCell-sports { + background: #3949ab !important; +} + +.programCell-movie { + background: #5e35b1 !important; +} + +.programCell-kids { + background: #039be5 !important; +} + +.programCell-news { + background: #43a047 !important; +} + +.programCell-active { + background: #1e1e1e !important; +} + +.guide-channelHeaderCell:focus, +.programCell:focus { + background-color: #52b54b !important; + color: #fff !important; +} + +.guide-programTextIcon { + color: #1e1e1e; + background: #555; +} + +.guide-headerTimeslots { + color: inherit; +} + +.guide-date-tab-button { + color: #555; + color: rgba(255, 255, 255, .3); +} + +.guide-date-tab-button.emby-tab-button-active, +.guide-date-tab-button:focus { + color: #52b54b; +} + +.guide-date-tab-button.show-focus:focus { + background-color: #52b54b; + color: #fff; +} + +.infoBanner { + color: #ddd; + background: #111; + padding: 1em; + border-radius: .25em; +} + +.ratingbutton-icon-withrating { + color: #c33; +} + +.downloadbutton-icon-complete, +.downloadbutton-icon-on { + color: #4285f4; +} + +.playstatebutton-icon-played { + color: #c33; +} + +.repeatButton-active { + color: #4285f4; +} + +.card:focus .cardBox.visualCardBox, +.card:focus .cardBox:not(.visualCardBox) .cardScalable { + border-color: #52b54b !important; +} + +::-webkit-scrollbar-track { + box-shadow: inset 0 0 6px rgba(0, 0, 0, .3); +} + +::-webkit-scrollbar-track-piece { + background-color: #3b3b3b; +} + +.layout-desktop ::-webkit-scrollbar { + width: 1em; + height: 1em; +} + +::-webkit-scrollbar-thumb:horizontal, +::-webkit-scrollbar-thumb:vertical { + border-radius: 2px; + background: center no-repeat #888; +} + +.timeslotHeaders-desktop::-webkit-scrollbar { + height: .7em; +} + +.metadataSidebarIcon { + color: #00a4dc; +} diff --git a/src/themes/light/theme.css b/src/themes/light/theme.css index 159f50fa46..292db2b2be 100644 --- a/src/themes/light/theme.css +++ b/src/themes/light/theme.css @@ -1,22 +1,22 @@ .skinHeader, html { color: #222; - color: rgba(0, 0, 0, .87) + color: rgba(0, 0, 0, .87); } .wizardStartForm, .ui-corner-all, .ui-shadow { - background-color: #303030 + background-color: #303030; } .emby-collapsible-button { border-color: #ccc; - border-color: rgba(0, 0, 0, .158) + border-color: rgba(0, 0, 0, .158); } .collapseContent { - background-color: #eaeaea + background-color: #eaeaea; } .skinHeader-withBackground { @@ -24,12 +24,12 @@ html { color: #ccc; color: rgba(255, 255, 255, .87); -webkit-box-shadow: 0 .0725em .29em 0 rgba(0, 0, 0, .37); - box-shadow: 0 .0725em .29em 0 rgba(0, 0, 0, .37) + box-shadow: 0 .0725em .29em 0 rgba(0, 0, 0, .37); } .osdHeader { -webkit-box-shadow: none !important; - box-shadow: none !important + box-shadow: none !important; } .skinHeader.semiTransparent { @@ -39,20 +39,20 @@ html { } .pageTitleWithDefaultLogo { - background-image: url(../../assets/img/banner-light.png) + background-image: url(../../assets/img/banner-light.png); } .backgroundContainer, html { - background-color: #f2f2f2 + background-color: #f2f2f2; } .backgroundContainer.withBackdrop { - background-color: rgba(255, 255, 255, .80) + background-color: rgba(255, 255, 255, .80); } .dialog { - background-color: #f0f0f0 + background-color: #f0f0f0; } .paper-icon-button-light:hover:not(:disabled) { @@ -67,30 +67,30 @@ html { .fab, .raised { background: #d8d8d8; - color: inherit + color: inherit; } .fab:focus, .raised:focus { - background: #ccc + background: #ccc; } .button-submit { background: #00a4dc; - color: #fff + color: #fff; } .button-submit:focus { - background: #0cb0e8 + background: #0cb0e8; } .button-delete { background: rgb(247, 0, 0); - color: rgba(255, 255, 255, .87) + color: rgba(255, 255, 255, .87); } .checkboxLabel { - color: inherit + color: inherit; } .checkboxListLabel, @@ -98,55 +98,55 @@ html { .inputLabelUnfocused, .paperListLabel, .textareaLabelUnfocused { - color: #555 + color: #555; } .button-link, .inputLabelFocused, .selectLabelFocused, .textareaLabelFocused { - color: green + color: green; } .checkboxOutline { - border-color: currentColor + border-color: currentColor; } .paperList, .visualCardBox { - background-color: #fff + background-color: #fff; } .defaultCardBackground1 { - background-color: #009688 + background-color: #009688; } .defaultCardBackground2 { - background-color: #d32f2f + background-color: #d32f2f; } .defaultCardBackground3 { - background-color: #0288d1 + background-color: #0288d1; } .defaultCardBackground4 { - background-color: #388e3c + background-color: #388e3c; } .defaultCardBackground5 { - background-color: #f57f17 + background-color: #f57f17; } .formDialogHeader:not(.formDialogHeader-clear) { background-color: #00a4dc; - color: #fff + color: #fff; } .formDialogFooter:not(.formDialogFooter-clear) { background-color: #f0f0f0; border-top: 1px solid #ddd; border-top: 1px solid rgba(0, 0, 0, .08); - color: inherit + color: inherit; } .cardText-secondary, @@ -156,92 +156,92 @@ html { .nowPlayingBarSecondaryText, .programSecondaryTitle, .secondaryText { - color: #888 + color: #888; } .actionsheetDivider { background: #ddd; - background: rgba(0, 0, 0, .14) + background: rgba(0, 0, 0, .14); } .cardFooter-vibrant .cardText-secondary { color: inherit; - opacity: .5 + opacity: .5; } .formDialogHeader a, .toast { - color: #fff + color: #fff; } .actionSheetMenuItem:hover { - background-color: #ddd + background-color: #ddd; } .toast { background: #303030; - color: rgba(255, 255, 255, .87) + color: rgba(255, 255, 255, .87); } .appfooter { background: #282828; color: #ccc; - color: rgba(255, 255, 255, .78) + color: rgba(255, 255, 255, .78); } .nowPlayingBarSecondaryText { - color: #999 + color: #999; } .itemSelectionPanel { - border: 1px solid #00a4dc + border: 1px solid #00a4dc; } .selectionCommandsPanel { background: #00a4dc; - color: #fff + color: #fff; } .upNextDialog-countdownText { - color: #00a4dc + color: #00a4dc; } .alphaPickerButton { color: #555; color: rgba(0, 0, 0, .7); - background-color: transparent + background-color: transparent; } .alphaPickerButton-selected, .alphaPickerButton-tv:focus { background-color: #00a4dc; - color: #fff !important + color: #fff !important; } .detailTableBodyRow-shaded:nth-child(even) { - background: #f8f8f8 + background: #f8f8f8; } .listItem-border { - border-color: #f0f0f0 !important + border-color: #f0f0f0 !important; } .listItem:focus { - background: #ddd + background: #ddd; } .progressring-spiner { - border-color: #00a4dc + border-color: #00a4dc; } .mediaInfoText { color: #333; - background: #fff + background: #fff; } .mediaInfoTimerIcon, .starIcon { - color: #cb272a + color: #cb272a; } .emby-input, @@ -250,23 +250,23 @@ html { background: #fff; border: .07em solid rgba(0, 0, 0, .158); -webkit-border-radius: .15em; - border-radius: .15em + border-radius: .15em; } .emby-input:focus, .emby-textarea:focus { - border-color: #00a4dc + border-color: #00a4dc; } .emby-select-withcolor { color: inherit; background: #fff; - border: .07em solid rgba(0, 0, 0, .158) + border: .07em solid rgba(0, 0, 0, .158); } .emby-checkbox:checked+span+.checkboxOutline, .emby-select-withcolor:focus { - border-color: #00a4dc + border-color: #00a4dc; } .emby-checkbox:focus+span+.checkboxOutline { @@ -275,7 +275,7 @@ html { .emby-checkbox:checked+span+.checkboxOutline, .itemProgressBarForeground { - background-color: #00a4dc + background-color: #00a4dc; } .emby-checkbox:focus:not(:checked)+span+.checkboxOutline { @@ -284,44 +284,44 @@ html { .emby-select-withcolor>option { color: #000; - background: #fff + background: #fff; } .emby-select-tv-withcolor:focus { background-color: #00a4dc; - color: #fff + color: #fff; } .itemProgressBarForeground-recording { - background-color: #cb272a + background-color: #cb272a; } .countIndicator, .fullSyncIndicator, .playedIndicator { - background: #00a4dc + background: #00a4dc; } .fullSyncIndicator { - color: #fff + color: #fff; } .mainDrawer { - background: #fff + background: #fff; } .navMenuOption:hover { - background: #f2f2f2 + background: #f2f2f2; } .navMenuOption-selected { background: #00a4dc !important; - color: #fff + color: #fff; } .emby-button.show-focus:focus { background: #00a4dc; - color: #fff + color: #fff; } .emby-tab-button { @@ -343,57 +343,57 @@ html { .channelPrograms, .guide-channelHeaderCell, .programCell { - border-color: rgba(0, 0, 0, .12) + border-color: rgba(0, 0, 0, .12); } .programCell-sports { - background: #3949ab !important + background: #3949ab !important; } .programCell-movie { - background: #5e35b1 !important + background: #5e35b1 !important; } .programCell-kids { - background: #039be5 !important + background: #039be5 !important; } .programCell-news { - background: #43a047 !important + background: #43a047 !important; } .programCell-active { - background: rgba(0, 0, 0, .1) !important + background: rgba(0, 0, 0, .1) !important; } .guide-channelHeaderCell:focus, .programCell:focus { background-color: #00a4dc !important; - color: #fff !important + color: #fff !important; } .guide-programTextIcon { color: #1e1e1e; - background: #555 + background: #555; } .guide-headerTimeslots { - color: inherit + color: inherit; } .guide-date-tab-button { color: #555; - color: rgba(0, 0, 0, .54) + color: rgba(0, 0, 0, .54); } .guide-date-tab-button.emby-tab-button-active, .guide-date-tab-button:focus { - color: #00a4dc + color: #00a4dc; } .guide-date-tab-button.show-focus:focus { background-color: #00a4dc; - color: #fff + color: #fff; } .infoBanner { @@ -401,31 +401,31 @@ html { background: #fff3a5; padding: 1em; -webkit-border-radius: .25em; - border-radius: .25em + border-radius: .25em; } .ratingbutton-icon-withrating { - color: #c33 + color: #c33; } .downloadbutton-icon-complete, .downloadbutton-icon-on { - color: #4285f4 + color: #4285f4; } .playstatebutton-icon-played { - color: #c33 + color: #c33; } .repeatButton-active { - color: #4285f4 + color: #4285f4; } .card:focus .cardBox.visualCardBox, .card:focus .cardBox:not(.visualCardBox) .cardScalable { - border-color: #00a4dc !important + border-color: #00a4dc !important; } .metadataSidebarIcon { - color: #00a4dc + color: #00a4dc; } diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index 6594b48eb5..5747396acf 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -1,18 +1,18 @@ .skinHeader, html { color: #f8f8fe; - color: rgba(248, 248, 254, 0.973) + color: rgba(248, 248, 254, 0.973); } .wizardStartForm, .ui-corner-all, .ui-shadow { - background-color: #303030 + background-color: #303030; } .emby-collapsible-button { border-color: #383838; - border-color: rgba(255, 255, 255, .135) + border-color: rgba(255, 255, 255, .135); } .skinHeader-withBackground { @@ -29,32 +29,32 @@ html { background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, .6)), to(rgba(0, 0, 0, 0))); background: -webkit-linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)); background: -o-linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)); - background: linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)) + background: linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)); background-color: rgba(0, 0, 0, .3); } .pageTitleWithDefaultLogo { - background-image: url(../../assets/img/banner-light.png) + background-image: url(../../assets/img/banner-light.png); } .dialog, html { - background-color: #230c33 + background-color: #230c33; } .backgroundContainer { background: url(bg.jpg) center top no-repeat #030322; -webkit-background-size: cover; - background-size: cover + background-size: cover; } .backgroundContainer.withBackdrop { - opacity: .86 + opacity: .86; } @media (orientation:portrait) { .backgroundContainer { - background-position: 30% top + background-position: 30% top; } } @@ -91,12 +91,12 @@ progress::-webkit-progress-value { .fab:focus, .raised:focus { - background: #ff77f1 + background: #ff77f1; } div[data-role=controlgroup] a.ui-btn-active { background: #55828b !important; - color: #e1e5f2 !important + color: #e1e5f2 !important; } a[data-role=button] { @@ -114,7 +114,7 @@ a[data-role=button] { .button-alt, .btnOption { background: rgb(72, 195, 200); - color: rgb(225, 229, 242) + color: rgb(225, 229, 242); } #btnResetPassword, @@ -128,7 +128,7 @@ a[data-role=button] { .alphaPickerButton { color: #999; color: rgba(255, 255, 255, .5); - background-color: transparent + background-color: transparent; } #btnResetPassword:hover, @@ -150,31 +150,31 @@ a[data-role=button] { .btnManual:hover, .block:hover { background: rgb(12, 232, 214); - color: rgba(255, 255, 255, .87) + color: rgba(255, 255, 255, .87); } .button-submit:focus { - background: #ff77f1 + background: #ff77f1; } .button-delete { background: rgb(247, 0, 0); - color: rgba(255, 255, 255, .87) + color: rgba(255, 255, 255, .87); } .itemName { - color: #f1f7ee + color: #f1f7ee; } .textareaLabel, .sectionTitle, .fieldDescription, .checkboxLabel { - color: #f1f7ee + color: #f1f7ee; } .checkboxLabel { - color: inherit + color: inherit; } .selectLabel, @@ -190,15 +190,15 @@ a[data-role=button] { .inputLabelFocused, .selectLabelFocused, .textareaLabelFocused { - color: #ff77f1 + color: #ff77f1; } .checkboxOutline { - border-color: currentColor + border-color: currentColor; } .cardContent { - border-radius: 1.000em + border-radius: 1.000em; } .collapseContent, @@ -207,7 +207,7 @@ a[data-role=button] { .paperList, .visualCardBox { background-color: rgba(0, 0, 0, .5); - border-radius: 1.000em + border-radius: 1.000em; } .cardOverlayContainer { @@ -219,23 +219,23 @@ a[data-role=button] { } .defaultCardBackground1 { - background-color: #d2b019 + background-color: #d2b019; } .defaultCardBackground2 { - background-color: #338abb + background-color: #338abb; } .defaultCardBackground3 { - background-color: #6b689d + background-color: #6b689d; } .defaultCardBackground4 { - background-color: #dd452b + background-color: #dd452b; } .defaultCardBackground5 { - background-color: #5ccea9 + background-color: #5ccea9; } .cardText-secondary, @@ -246,94 +246,94 @@ a[data-role=button] { .programSecondaryTitle, .secondaryText { color: #999; - color: rgba(255, 255, 255, .5) + color: rgba(255, 255, 255, .5); } .actionsheetDivider { background: #444; - background: rgba(255, 255, 255, .14) + background: rgba(255, 255, 255, .14); } .cardFooter-vibrant .cardText-secondary { color: inherit; - opacity: .5 + opacity: .5; } .actionSheetMenuItem:hover { - background-color: rgba(0, 0, 0, .5) + background-color: rgba(0, 0, 0, .5); } .toast { background: #303030; color: #f8f8fe; - color: rgba(255, 255, 255, .87) + color: rgba(255, 255, 255, .87); } .appfooter { background: #06256f; color: #ccc; - color: rgba(255, 255, 255, .78) + color: rgba(255, 255, 255, .78); } @supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)) { .appfooter-blurred { background: rgba(6, 37, 111, .7); - backdrop-filter: blur(20px) + backdrop-filter: blur(20px); } } .itemSelectionPanel { - border: 1px solid #48c3c8 + border: 1px solid #48c3c8; } .selectionCommandsPanel { background: #48c3c8; - color: #f8f8fe + color: #f8f8fe; } .upNextDialog-countdownText { - color: #48c3c8 + color: #48c3c8; } .alphaPickerButton-selected { - color: #0ce8d6 + color: #0ce8d6; } .alphaPickerButton-tv:focus { background: #ff77f1; - color: #f8f8fe !important + color: #f8f8fe !important; } .detailTableBodyRow-shaded:nth-child(even) { background: #1c1c1c; - background: rgba(30, 30, 30, .9) + background: rgba(30, 30, 30, .9); } .listItem-border { - border-color: rgba(255, 255, 255, .1) !important + border-color: rgba(255, 255, 255, .1) !important; } .listItem:focus { - background: rgba(0, 0, 0, .3) + background: rgba(0, 0, 0, .3); } .progressring-spiner { - border-color: #48c3c8 + border-color: #48c3c8; } .button-flat-accent, .button-link { - color: #48c3c8 + color: #48c3c8; } .mediaInfoText { color: #f8f8fe; - background: rgba(170, 170, 190, .2) + background: rgba(170, 170, 190, .2); } .mediaInfoTimerIcon, .starIcon { - color: #f2b01e + color: #f2b01e; } .emby-input, @@ -342,32 +342,32 @@ a[data-role=button] { background: rgba(0, 0, 0, .5); border: .07em solid transparent; -webkit-border-radius: .15em; - border-radius: .15em + border-radius: .15em; } .emby-input:focus, .emby-textarea:focus { - border-color: #ff77f1 + border-color: #ff77f1; } .emby-select-withcolor { color: inherit; background: rgba(0, 0, 0, .5); - border: .07em solid transparent + border: .07em solid transparent; } .emby-select-withcolor>option { color: inherit; - background: #030322d7 + background: #030322d7; } .emby-select-withcolor:focus { - border-color: #ff77f1 !important + border-color: #ff77f1 !important; } .emby-select-tv-withcolor:focus { background-color: #ff77f1 !important; - color: #fff !important + color: #fff !important; } .emby-checkbox:checked+span+.checkboxOutline { @@ -392,7 +392,7 @@ a[data-role=button] { } .itemProgressBarForeground-recording { - background-color: #cb272a + background-color: #cb272a; } .countIndicator, @@ -402,30 +402,30 @@ a[data-role=button] { } .fullSyncIndicator { - color: #fff + color: #fff; } .mainDrawer { color: #f8f8fe; - background: rgba(0, 0, 0, .5) + background: rgba(0, 0, 0, .5); } .drawer-open { - background-color: #030322 + background-color: #030322; } .navMenuOption:hover { - background: rgba(221, 221, 221, 0.068) + background: rgba(221, 221, 221, 0.068); } .navMenuOption-selected { background: #6f0765 !important; - color: #f8f8fe + color: #f8f8fe; } .emby-button.show-focus:focus { background: #8ae9c1; - color: #f8f8fe + color: #f8f8fe; } .emby-tab-button { @@ -447,57 +447,57 @@ a[data-role=button] { .channelPrograms, .guide-channelHeaderCell, .programCell { - border-color: rgba(255, 255, 255, .05) + border-color: rgba(255, 255, 255, .05); } .programCell-sports { - background: #3949ab !important + background: #3949ab !important; } .programCell-movie { - background: #5e35b1 !important + background: #5e35b1 !important; } .programCell-kids { - background: #039be5 !important + background: #039be5 !important; } .programCell-news { - background: #43a047 !important + background: #43a047 !important; } .programCell-active { - background: rgba(0, 0, 0, .4) !important + background: rgba(0, 0, 0, .4) !important; } .guide-channelHeaderCell:focus, .programCell:focus { background-color: #48c3c8 !important; - color: #fff !important + color: #fff !important; } .guide-programTextIcon { color: #1e1e1e; - background: #555 + background: #555; } .guide-headerTimeslots { - color: inherit + color: inherit; } .guide-date-tab-button { color: #555; - color: rgba(255, 255, 255, .3) + color: rgba(255, 255, 255, .3); } .guide-date-tab-button.emby-tab-button-active, .guide-date-tab-button:focus { - color: #ff77f1 + color: #ff77f1; } .guide-date-tab-button.show-focus:focus { background-color: #48c3c8; - color: #fff + color: #fff; } .infoBanner { @@ -505,24 +505,24 @@ a[data-role=button] { background: #dbe6ff; padding: 1em; -webkit-border-radius: .25em; - border-radius: .25em + border-radius: .25em; } .ratingbutton-icon-withrating { - color: #c33 + color: #c33; } .downloadbutton-icon-complete, .downloadbutton-icon-on { - color: #4285f4 + color: #4285f4; } .playstatebutton-icon-played { - color: #c33 + color: #c33; } .repeatButton-active { - color: #4285f4 + color: #4285f4; } .personCard .cardScalable { @@ -532,36 +532,38 @@ a[data-role=button] { .card:focus .cardBox.visualCardBox, .card:focus .cardBox:not(.visualCardBox) .cardScalable { - border-color: #ff77f1 !important + border-color: #ff77f1 !important; } .layout-desktop, .scrollY { scrollbar-width: thin; - scrollbar-color: #888 rgba(59, 59, 59, 0.5) + scrollbar-color: #888 rgba(59, 59, 59, 0.5); } ::-webkit-scrollbar-track { - -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3) + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3); + box-shadow: inset 0 0 6px rgba(0, 0, 0, .3); } ::-webkit-scrollbar-track-piece { - background-color: rgba(59, 59, 59, 0.5) + background-color: rgba(59, 59, 59, 0.5); } .layout-desktop ::-webkit-scrollbar { width: .4em; - height: 1em + height: 1em; } ::-webkit-scrollbar-thumb:horizontal, ::-webkit-scrollbar-thumb:vertical { + border-radius: 2px; -webkit-border-radius: 2px; - background: center no-repeat #888 + background: center no-repeat #888; } .timeslotHeaders-desktop::-webkit-scrollbar { - height: .7em + height: .7em; } .mediaInfoOfficialRating { @@ -571,7 +573,7 @@ a[data-role=button] { } .metadataSidebarIcon { - color: #dbe6ff + color: #dbe6ff; } .personCard .overflowPortraitCard { diff --git a/src/themes/wmc/theme.css b/src/themes/wmc/theme.css index dcc4a8b994..cef12280fc 100644 --- a/src/themes/wmc/theme.css +++ b/src/themes/wmc/theme.css @@ -1,23 +1,23 @@ html { color: #eee; color: rgba(255, 255, 255, .9); - background-color: #0f3562 + background-color: #0f3562; } .wizardStartForm, .ui-corner-all, .ui-shadow { - background-color: #0c2450 + background-color: #0c2450; } .emby-collapsible-button { border-color: #383838; - border-color: rgba(255, 255, 255, .135) + border-color: rgba(255, 255, 255, .135); } .skinHeader { color: #ccc; - color: rgba(255, 255, 255, .78) + color: rgba(255, 255, 255, .78); } .formDialogHeader:not(.formDialogHeader-clear), @@ -40,7 +40,7 @@ html { } .pageTitleWithDefaultLogo { - background-image: url(../../assets/img/banner-light.png) + background-image: url(../../assets/img/banner-light.png); } .backgroundContainer, @@ -53,7 +53,7 @@ html { } .backgroundContainer.withBackdrop { - background: rgba(17, 98, 164, .9) + background: rgba(17, 98, 164, .9); } .paper-icon-button-light:hover:not(:disabled) { @@ -68,31 +68,31 @@ html { .fab, .raised { background: #082845; - color: #fff + color: #fff; } .fab:focus, .raised:focus { - background: #143451 + background: #143451; } .button-submit { background: #00a4dc; - color: #fff + color: #fff; } .button-submit:focus { background: #0cb0e8; - color: #fff + color: #fff; } .button-delete { background: rgb(247, 0, 0); - color: rgba(255, 255, 255, .87) + color: rgba(255, 255, 255, .87); } .checkboxLabel { - color: inherit + color: inherit; } .checkboxListLabel, @@ -101,43 +101,43 @@ html { .paperListLabel, .textareaLabelUnfocused { color: #bbb; - color: rgba(255, 255, 255, .7) + color: rgba(255, 255, 255, .7); } .inputLabelFocused, .selectLabelFocused, .textareaLabelFocused { - color: #00a4dc + color: #00a4dc; } .checkboxOutline { - border-color: currentColor + border-color: currentColor; } .collapseContent, .paperList, .visualCardBox { - background-color: #0f3562 + background-color: #0f3562; } .defaultCardBackground1 { - background-color: #d2b019 + background-color: #d2b019; } .defaultCardBackground2 { - background-color: #338abb + background-color: #338abb; } .defaultCardBackground3 { - background-color: #6b689d + background-color: #6b689d; } .defaultCardBackground4 { - background-color: #dd452b + background-color: #dd452b; } .defaultCardBackground5 { - background-color: #5ccea9 + background-color: #5ccea9; } .cardText-secondary, @@ -148,23 +148,23 @@ html { .programSecondaryTitle, .secondaryText { color: #999; - color: rgba(255, 255, 255, .5) + color: rgba(255, 255, 255, .5); } .actionsheetDivider { background: #ddd; - background: rgba(255, 255, 255, .14) + background: rgba(255, 255, 255, .14); } .cardFooter-vibrant .cardText-secondary { color: inherit; - opacity: .5 + opacity: .5; } .toast { background: #081b3b; color: #fff; - color: rgba(255, 255, 255, .87) + color: rgba(255, 255, 255, .87); } .appfooter, @@ -178,60 +178,60 @@ html { } .itemSelectionPanel { - border: 1px solid #00a4dc + border: 1px solid #00a4dc; } .selectionCommandsPanel { background: #00a4dc; - color: #fff + color: #fff; } .upNextDialog-countdownText { - color: #00a4dc + color: #00a4dc; } .alphaPickerButton { color: #999; color: rgba(255, 255, 255, .5); - background-color: transparent + background-color: transparent; } .alphaPickerButton-selected, .alphaPickerButton-tv:focus { background-color: #00a4dc; - color: #fff !important + color: #fff !important; } .detailTableBodyRow-shaded:nth-child(even) { background: #1c1c1c; - background: rgba(0, 0, 0, .3) + background: rgba(0, 0, 0, .3); } .listItem-border { - border-color: rgba(0, 0, 0, .3) !important + border-color: rgba(0, 0, 0, .3) !important; } .listItem:focus { - background: #333 + background: #333; } .progressring-spiner { - border-color: #00a4dc + border-color: #00a4dc; } .button-flat-accent, .button-link { - color: #00a4dc + color: #00a4dc; } .mediaInfoText { color: #ddd; - background: rgba(170, 170, 190, .2) + background: rgba(170, 170, 190, .2); } .mediaInfoTimerIcon, .starIcon { - color: #cb272a + color: #cb272a; } .emby-input, @@ -240,23 +240,23 @@ html { background: rgba(255, 255, 255, .2); border: .07em solid rgba(255, 255, 255, .135); -webkit-border-radius: .15em; - border-radius: .15em + border-radius: .15em; } .emby-input:focus, .emby-textarea:focus { - border-color: #00a4dc + border-color: #00a4dc; } .emby-select-withcolor { color: inherit; background: rgba(255, 255, 255, .2); - border: .07em solid rgba(255, 255, 255, .135) + border: .07em solid rgba(255, 255, 255, .135); } .emby-checkbox:checked+span+.checkboxOutline, .emby-select-withcolor:focus { - border-color: #00a4dc + border-color: #00a4dc; } .emby-checkbox:focus+span+.checkboxOutline { @@ -265,7 +265,7 @@ html { .emby-checkbox:checked+span+.checkboxOutline, .itemProgressBarForeground { - background-color: #00a4dc + background-color: #00a4dc; } .emby-checkbox:focus:not(:checked)+span+.checkboxOutline { @@ -274,48 +274,48 @@ html { .emby-select-withcolor>option { color: #000; - background: #fff + background: #fff; } .emby-select-tv-withcolor:focus { background-color: #00a4dc; - color: #fff + color: #fff; } .itemProgressBarForeground-recording { - background-color: #cb272a + background-color: #cb272a; } .countIndicator, .fullSyncIndicator, .playedIndicator { - background: #00a4dc + background: #00a4dc; } .fullSyncIndicator { - color: #fff + color: #fff; } .mainDrawer { background-color: #0f3562; color: #ccc; - color: rgba(255, 255, 255, .7) + color: rgba(255, 255, 255, .7); } .actionSheetMenuItem:hover, .navMenuOption:hover { background: #252528; - background: rgba(0, 0, 0, .2) + background: rgba(0, 0, 0, .2); } .navMenuOption-selected { background: #00a4dc !important; - color: #fff + color: #fff; } .emby-button.show-focus:focus { background: #00a4dc; - color: #fff + color: #fff; } .emby-tab-button { @@ -323,7 +323,7 @@ html { } .emby-tab-button-active { - color: #fff + color: #fff; } .emby-tab-button.show-focus:focus { @@ -338,57 +338,57 @@ html { .guide-channelHeaderCell, .programCell { border-color: #999; - border-color: rgba(255, 255, 255, .1) + border-color: rgba(255, 255, 255, .1); } .programCell-sports { - background: #3949ab !important + background: #3949ab !important; } .programCell-movie { - background: #5e35b1 !important + background: #5e35b1 !important; } .programCell-kids { - background: #039be5 !important + background: #039be5 !important; } .programCell-news { - background: #43a047 !important + background: #43a047 !important; } .programCell-active { - background: rgba(0, 0, 0, .3) !important + background: rgba(0, 0, 0, .3) !important; } .guide-channelHeaderCell:focus, .programCell:focus { background-color: #00a4dc !important; - color: #fff !important + color: #fff !important; } .guide-programTextIcon { color: #1e1e1e; - background: #555 + background: #555; } .guide-headerTimeslots { - color: inherit + color: inherit; } .guide-date-tab-button { color: #555; - color: rgba(255, 255, 255, .3) + color: rgba(255, 255, 255, .3); } .guide-date-tab-button.emby-tab-button-active, .guide-date-tab-button:focus { - color: #00a4dc + color: #00a4dc; } .guide-date-tab-button.show-focus:focus { background-color: #00a4dc; - color: #fff + color: #fff; } .infoBanner { @@ -396,52 +396,52 @@ html { background: #fff3a5; padding: 1em; -webkit-border-radius: .25em; - border-radius: .25em + border-radius: .25em; } .ratingbutton-icon-withrating { - color: #c33 + color: #c33; } .downloadbutton-icon-complete, .downloadbutton-icon-on { - color: #4285f4 + color: #4285f4; } .playstatebutton-icon-played { - color: #c33 + color: #c33; } .repeatButton-active { - color: #4285f4 + color: #4285f4; } .card:focus .cardBox.visualCardBox, .card:focus .cardBox:not(.visualCardBox) .cardScalable { - border-color: #fff !important + border-color: #fff !important; } ::-webkit-scrollbar-track { - box-shadow: inset 0 0 6px rgba(0, 0, 0, .3) - -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3) + box-shadow: inset 0 0 6px rgba(0, 0, 0, .3); + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3); } ::-webkit-scrollbar-track-piece { - background-color: #081b3b + background-color: #081b3b; } .layout-desktop ::-webkit-scrollbar { width: 1em; - height: 1em + height: 1em; } ::-webkit-scrollbar-thumb:horizontal, ::-webkit-scrollbar-thumb:vertical { border-radius: 2px; -webkit-border-radius: 2px; - background: center no-repeat rgba(255, 255, 255, .7) + background: center no-repeat rgba(255, 255, 255, .7); } .metadataSidebarIcon { - color: #00a4dc + color: #00a4dc; } From 0c0853a80aefe65e1dd81a03d276b0ccee63db42 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 14:50:51 +0100 Subject: [PATCH 052/105] Fix declaration-colon-space-after (CSS) --- src/assets/css/dashboard.css | 14 +++++++------- src/assets/css/videoosd.css | 2 ++ .../emby-scrollbuttons/emby-scrollbuttons.css | 4 ++-- src/themes/purplehaze/theme.css | 4 ++-- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/assets/css/dashboard.css b/src/assets/css/dashboard.css index d912a4930d..6c15a9bc67 100644 --- a/src/assets/css/dashboard.css +++ b/src/assets/css/dashboard.css @@ -283,13 +283,13 @@ div[data-role=controlgroup] a.ui-btn-active { } .activitylogUserPhoto { - height:1.71em; - width:1.71em; - border-radius:100%; - margin-right:.5em; - background-size:cover; - background-repeat:no-repeat; - background-position:center; + height: 1.71em; + width: 1.71em; + border-radius: 100%; + margin-right: .5em; + background-size: cover; + background-repeat: no-repeat; + background-position: center; } @media all and (min-width:40em) { diff --git a/src/assets/css/videoosd.css b/src/assets/css/videoosd.css index 57d27a9c5b..c5709aee0c 100644 --- a/src/assets/css/videoosd.css +++ b/src/assets/css/videoosd.css @@ -224,12 +224,14 @@ @-moz-keyframes spin { 100% { -moz-transform: rotate(360deg); + transform:rotate(360deg); } } @-webkit-keyframes spin { 100% { -webkit-transform: rotate(360deg); + transform:rotate(360deg); } } diff --git a/src/components/emby-scrollbuttons/emby-scrollbuttons.css b/src/components/emby-scrollbuttons/emby-scrollbuttons.css index f09c109921..32e60292ad 100644 --- a/src/components/emby-scrollbuttons/emby-scrollbuttons.css +++ b/src/components/emby-scrollbuttons/emby-scrollbuttons.css @@ -4,8 +4,8 @@ right: 0; align-items: center; justify-content: center; - min-width:104px; - min-height:24px; + min-width: 104px; + min-height: 24px; padding-top: 1.25em; z-index: 1; color: #fff; diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index 5747396acf..1e17a91a4f 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -372,7 +372,7 @@ a[data-role=button] { .emby-checkbox:checked+span+.checkboxOutline { background-color: #030322; - border:2px solid rgb(72, 195, 200); + border: 2px solid rgb(72, 195, 200); } .emby-checkbox:checked + span + .checkboxOutline > .checkboxIcon-checked { @@ -384,7 +384,7 @@ a[data-role=button] { } .emby-checkbox:focus:not(:checked)+span+.checkboxOutline { - border:2px solid #ff77f1; + border: 2px solid #ff77f1; } .itemProgressBarForeground { From 2ac83a43d1eb611a9a13230562f204f22f666685 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 14:52:38 +0100 Subject: [PATCH 053/105] Fix function-comma-space-after (CSS) --- src/components/cardbuilder/card.css | 12 ++++++------ src/components/indicators/indicators.css | 2 +- src/components/loading/loading.css | 8 ++++---- src/components/nowplayingbar/nowplayingbar.css | 2 +- src/components/playerstats/playerstats.css | 2 +- src/components/slideshow/style.css | 2 +- src/components/subtitlesync/subtitlesync.css | 2 +- src/elements/emby-radio/emby-radio.css | 6 +++--- src/elements/emby-toggle/emby-toggle.css | 8 ++++---- src/themes/appletv/theme.css | 2 +- src/themes/blueradiance/theme.css | 2 +- src/themes/dark/theme.css | 2 +- src/themes/light/theme.css | 2 +- src/themes/purplehaze/theme.css | 3 +-- src/themes/wmc/theme.css | 2 +- 15 files changed, 28 insertions(+), 29 deletions(-) diff --git a/src/components/cardbuilder/card.css b/src/components/cardbuilder/card.css index 00a11a8eb5..afc867c049 100644 --- a/src/components/cardbuilder/card.css +++ b/src/components/cardbuilder/card.css @@ -263,7 +263,7 @@ button::-moz-focus-inner { } .innerCardFooter { - background: rgba(0,0,0,.7); + background: rgba(0, 0, 0, .7); position: absolute; bottom: 0; left: 0; @@ -403,7 +403,7 @@ button::-moz-focus-inner { } .cardOverlayButtonIcon { - background-color: rgba(0,0,0,.7) !important; + background-color: rgba(0, 0, 0, .7) !important; border-radius: 100em; width: 1.5em !important; height: 1.5em !important; @@ -425,8 +425,8 @@ button::-moz-focus-inner { height: 2.6em; top: 50%; left: 50%; - background-color: rgba(0,0,0,.5) !important; - border: .06em solid rgba(255,255,255,.6); + background-color: rgba(0, 0, 0, .5) !important; + border: .06em solid rgba(255, 255, 255, .6); padding: .38em !important; color: rgba(255, 255, 255, .76); transition: transform 200ms ease-out; @@ -730,7 +730,7 @@ button::-moz-focus-inner { } .cardOverlayContainer { - background: rgba(0,0,0,0.5); + background: rgba(0, 0, 0, 0.5); opacity: 0; transition: opacity .2s; position: absolute; @@ -761,7 +761,7 @@ button::-moz-focus-inner { } .cardOverlayFab-primary { - background-color: rgba(0,0,0,0.7); + background-color: rgba(0, 0, 0, 0.7); font-size: 130%; padding: 0; width: 3em; diff --git a/src/components/indicators/indicators.css b/src/components/indicators/indicators.css index 774fac4f4c..906aa89bbd 100644 --- a/src/components/indicators/indicators.css +++ b/src/components/indicators/indicators.css @@ -1,6 +1,6 @@ .itemProgressBar { background: #333; - background: rgba(51,51,51,.8); + background: rgba(51, 51, 51, .8); position: relative; height: .28em; } diff --git a/src/components/loading/loading.css b/src/components/loading/loading.css index 210746be12..4025bbd0c1 100644 --- a/src/components/loading/loading.css +++ b/src/components/loading/loading.css @@ -33,7 +33,7 @@ } .mdl-spinner__layer-1 { - border-color: rgb(66,165,245); + border-color: rgb(66, 165, 245); } .mdl-spinner__layer-1-active { @@ -42,7 +42,7 @@ } .mdl-spinner__layer-2 { - border-color: rgb(244,67,54); + border-color: rgb(244, 67, 54); } .mdl-spinner__layer-2-active { @@ -51,7 +51,7 @@ } .mdl-spinner__layer-3 { - border-color: rgb(253,216,53); + border-color: rgb(253, 216, 53); } .mdl-spinner__layer-3-active { @@ -60,7 +60,7 @@ } .mdl-spinner__layer-4 { - border-color: rgb(76,175,80); + border-color: rgb(76, 175, 80); } .mdl-spinner__layer-4-active { diff --git a/src/components/nowplayingbar/nowplayingbar.css b/src/components/nowplayingbar/nowplayingbar.css index 120a0508a0..965de35c64 100644 --- a/src/components/nowplayingbar/nowplayingbar.css +++ b/src/components/nowplayingbar/nowplayingbar.css @@ -16,7 +16,7 @@ } .nowPlayingBar-hidden { - transform: translate3d(0,100%,0); + transform: translate3d(0, 100%, 0); } .nowPlayingBarTop { diff --git a/src/components/playerstats/playerstats.css b/src/components/playerstats/playerstats.css index 6e363a8982..5ae6f154b5 100644 --- a/src/components/playerstats/playerstats.css +++ b/src/components/playerstats/playerstats.css @@ -1,5 +1,5 @@ .playerStats { - background: rgba(28,28,28,0.8); + background: rgba(28, 28, 28, 0.8); border-radius: .3em; color: #fff; left: 1.5em; diff --git a/src/components/slideshow/style.css b/src/components/slideshow/style.css index 43211a8fef..5d0bd40047 100644 --- a/src/components/slideshow/style.css +++ b/src/components/slideshow/style.css @@ -121,7 +121,7 @@ .slideTextInner { margin: 0 auto; max-width: 60%; - background: rgba(0,0,0,.8); + background: rgba(0, 0, 0, .8); display: inline-block; padding: .5em 1em; border-radius: .25em; diff --git a/src/components/subtitlesync/subtitlesync.css b/src/components/subtitlesync/subtitlesync.css index b4552a50e2..5b9c9a5105 100644 --- a/src/components/subtitlesync/subtitlesync.css +++ b/src/components/subtitlesync/subtitlesync.css @@ -3,7 +3,7 @@ margin-left: 30%; margin-right: 30%; height: 4.2em; - background: rgba(28,28,28,0.8); + background: rgba(28, 28, 28, 0.8); border-radius: .3em; color: #fff; position: absolute; diff --git a/src/elements/emby-radio/emby-radio.css b/src/elements/emby-radio/emby-radio.css index 2e27f48210..987fce436e 100644 --- a/src/elements/emby-radio/emby-radio.css +++ b/src/elements/emby-radio/emby-radio.css @@ -50,7 +50,7 @@ } .mdl-radio__button:disabled + .mdl-radio__label + .mdl-radio__outer-circle { - border: 2px solid rgba(0,0,0, 0.26); + border: 2px solid rgba(0, 0, 0, 0.26); cursor: auto; } @@ -81,7 +81,7 @@ } .mdl-radio__button:disabled + .mdl-radio__label + .mdl-radio__outer-circle + .mdl-radio__inner-circle { - background: rgba(0,0,0, 0.26); + background: rgba(0, 0, 0, 0.26); cursor: auto; } @@ -98,6 +98,6 @@ } .mdl-radio__button:disabled + .mdl-radio__label { - color: rgba(0,0,0, 0.26); + color: rgba(0, 0, 0, 0.26); cursor: auto; } diff --git a/src/elements/emby-toggle/emby-toggle.css b/src/elements/emby-toggle/emby-toggle.css index fb91419cbc..c893736c2f 100644 --- a/src/elements/emby-toggle/emby-toggle.css +++ b/src/elements/emby-toggle/emby-toggle.css @@ -41,7 +41,7 @@ } .mdl-switch__track { - background: rgba(128,128,128, 0.5); + background: rgba(128, 128, 128, 0.5); height: 1em; border-radius: 1em; cursor: pointer; @@ -52,7 +52,7 @@ } .mdl-switch__input[disabled] + .mdl-switch__label + .mdl-switch__trackContainer > .mdl-switch__track { - background: rgba(0,0,0, 0.12); + background: rgba(0, 0, 0, 0.12); cursor: auto; } @@ -81,7 +81,7 @@ } .mdl-switch__input[disabled] + .mdl-switch__label + .mdl-switch__trackContainer > .mdl-switch__thumb { - background: rgb(189,189,189); + background: rgb(189, 189, 189); cursor: auto; } @@ -117,6 +117,6 @@ } .mdl-switch__input[disabled] .mdl-switch__label { - color: rgb(189,189,189); + color: rgb(189, 189, 189); cursor: auto; } diff --git a/src/themes/appletv/theme.css b/src/themes/appletv/theme.css index 58ea6618c5..4bd2f13261 100644 --- a/src/themes/appletv/theme.css +++ b/src/themes/appletv/theme.css @@ -62,7 +62,7 @@ html { .paper-icon-button-light:hover:not(:disabled) { color: #00a4dc; - background-color: rgba(0,164,220, .2); + background-color: rgba(0, 164, 220, .2); } .paper-icon-button-light.show-focus:focus { diff --git a/src/themes/blueradiance/theme.css b/src/themes/blueradiance/theme.css index 2abc0d6b1b..3ea3221607 100644 --- a/src/themes/blueradiance/theme.css +++ b/src/themes/blueradiance/theme.css @@ -60,7 +60,7 @@ html { .paper-icon-button-light:hover:not(:disabled) { color: #00a4dc; - background-color: rgba(0,164,220, .2); + background-color: rgba(0, 164, 220, .2); } .paper-icon-button-light.show-focus:focus { diff --git a/src/themes/dark/theme.css b/src/themes/dark/theme.css index e02de9379a..7b77d43047 100644 --- a/src/themes/dark/theme.css +++ b/src/themes/dark/theme.css @@ -41,7 +41,7 @@ html { .paper-icon-button-light:hover:not(:disabled) { color: #00a4dc; - background-color: rgba(0,164,220, .2); + background-color: rgba(0, 164, 220, .2); } .paper-icon-button-light.show-focus:focus { diff --git a/src/themes/light/theme.css b/src/themes/light/theme.css index 292db2b2be..0013c6956c 100644 --- a/src/themes/light/theme.css +++ b/src/themes/light/theme.css @@ -57,7 +57,7 @@ html { .paper-icon-button-light:hover:not(:disabled) { color: #00a4dc; - background-color: rgba(0,164,220, .2); + background-color: rgba(0, 164, 220, .2); } .paper-icon-button-light.show-focus:focus { diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index 1e17a91a4f..8fecd316e8 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -20,7 +20,6 @@ html { background: -moz-linear-gradient(left, #000420 0%, #06256f 18%, #2b052b 38%, #2b052b 68%, #06256f 81%, #000420 100%); background: -webkit-linear-gradient(left, #000420 0%,#06256f 18%,#2b052b 38%,#2b052b 68%,#06256f 81%,#000420 100%); background: linear-gradient(to right, #000420 0%,#06256f 18%,#2b052b 38%,#2b052b 68%,#06256f 81%,#000420 100%); - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#000420', endColorstr='#000420',GradientType=1 ); } .skinHeader.semiTransparent { @@ -60,7 +59,7 @@ html { .paper-icon-button-light:hover:not(:disabled) { color: rgb(12, 232, 214); - background-color: rgba(0,164,220, .2); + background-color: rgba(0, 164, 220, .2); } .paper-icon-button-light.show-focus:focus { diff --git a/src/themes/wmc/theme.css b/src/themes/wmc/theme.css index cef12280fc..c633fc22dd 100644 --- a/src/themes/wmc/theme.css +++ b/src/themes/wmc/theme.css @@ -58,7 +58,7 @@ html { .paper-icon-button-light:hover:not(:disabled) { color: #00a4dc; - background-color: rgba(0,164,220, .2); + background-color: rgba(0, 164, 220, .2); } .paper-icon-button-light.show-focus:focus { From c243d00add12f96d18cf152788a8652a756cd6e6 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 14:54:06 +0100 Subject: [PATCH 054/105] Fix function-name-case (CSS) --- src/elements/emby-slider/emby-slider.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index 1f318ebfac..1b94a44a9b 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -105,7 +105,7 @@ background: #00a4dc; background-image: none; border: none; - transform: Scale(1.4, 1.4); + transform: scale(1.4, 1.4); } .mdl-slider::-ms-thumb { From 61719e3ab23fc33ae06e6baf7aa60b0fcd732d1b Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 14:55:55 +0100 Subject: [PATCH 055/105] Fix length-zero-no-unit (CSS) --- src/assets/css/dashboard.css | 4 ++-- src/elements/emby-button/emby-button.css | 2 +- src/elements/emby-radio/emby-radio.css | 2 +- src/themes/purplehaze/theme.css | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/assets/css/dashboard.css b/src/assets/css/dashboard.css index 6c15a9bc67..b1747991e0 100644 --- a/src/assets/css/dashboard.css +++ b/src/assets/css/dashboard.css @@ -347,7 +347,7 @@ div[data-role=controlgroup] a.ui-btn-active { .sessionNowPlayingDetails { display: flex; position: absolute; - bottom: 0px; + bottom: 0; width: 100%; } @@ -370,7 +370,7 @@ div[data-role=controlgroup] a.ui-btn-active { .playbackProgress, .transcodingProgress { - margin: 0px; + margin: 0; width: 100%; background: transparent !important; } diff --git a/src/elements/emby-button/emby-button.css b/src/elements/emby-button/emby-button.css index fc55679678..e58501c8b3 100644 --- a/src/elements/emby-button/emby-button.css +++ b/src/elements/emby-button/emby-button.css @@ -175,7 +175,7 @@ justify-content: center; font-size: 82%; border-radius: 100em; - box-shadow: 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12), 0px 2px 4px -1px rgba(0, 0, 0, 0.2); + box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.2); background: #03a9f4; font-weight: bold; } diff --git a/src/elements/emby-radio/emby-radio.css b/src/elements/emby-radio/emby-radio.css index 987fce436e..a41acee5ef 100644 --- a/src/elements/emby-radio/emby-radio.css +++ b/src/elements/emby-radio/emby-radio.css @@ -86,7 +86,7 @@ } .mdl-radio__button:focus + .mdl-radio__label + .mdl-radio__outer-circle + .mdl-radio__inner-circle { - box-shadow: 0 0 0px 10px rgba(255, 255, 255, 0.76); + 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 { diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index 8fecd316e8..b6351de419 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -213,8 +213,8 @@ a[data-role=button] { border-radius: 0.8em; } .visualCardBox .cardOverlayContainer { - border-bottom-right-radius: 0em; - border-bottom-left-radius: 0em; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; } .defaultCardBackground1 { From 870a48e78b78c8e952fa1d8d647b4ce7411b0131 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 14:56:36 +0100 Subject: [PATCH 056/105] Fix max-empty-lines (CSS) --- src/components/cardbuilder/card.css | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/cardbuilder/card.css b/src/components/cardbuilder/card.css index afc867c049..3745561954 100644 --- a/src/components/cardbuilder/card.css +++ b/src/components/cardbuilder/card.css @@ -530,7 +530,6 @@ button::-moz-focus-inner { } } - @media (min-width: 87.5em) { .squareCard, .portraitCard { width: 14.285714285714285714285714285714%; From c7264691d2487cd49307860792c7eb50430b2ebf Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 14:57:31 +0100 Subject: [PATCH 057/105] Fix media-feature-colon-space-after (CSS) --- src/assets/css/dashboard.css | 16 +++--- src/assets/css/librarybrowser.css | 54 +++++++++---------- src/assets/css/livetv.css | 2 +- src/assets/css/metadataeditor.css | 4 +- src/assets/css/site.css | 2 +- src/assets/css/videoosd.css | 14 ++--- src/components/filterdialog/style.css | 6 +-- src/components/guide/guide.css | 8 +-- .../remotecontrol/remotecontrol.css | 16 +++--- src/themes/blueradiance/theme.css | 2 +- src/themes/purplehaze/theme.css | 2 +- 11 files changed, 63 insertions(+), 63 deletions(-) diff --git a/src/assets/css/dashboard.css b/src/assets/css/dashboard.css index b1747991e0..39ffc4e299 100644 --- a/src/assets/css/dashboard.css +++ b/src/assets/css/dashboard.css @@ -47,7 +47,7 @@ progress[aria-valuenow]:before { margin-bottom: 2.2em !important; } -@media all and (min-width:50em) { +@media all and (min-width: 50em) { .type-interior>div[data-role=content], .type-interior>.ui-panel-content-wrap>div[data-role=content] { @@ -160,7 +160,7 @@ div[data-role=controlgroup] a.ui-btn-active { padding-top: 9em !important; } -@media all and (min-width:40em) { +@media all and (min-width: 40em) { .content-primary { padding-top: 7em; } @@ -170,7 +170,7 @@ div[data-role=controlgroup] a.ui-btn-active { } } -@media all and (min-width:84em) { +@media all and (min-width: 84em) { .withTabs .content-primary { padding-top: 7em !important; } @@ -232,7 +232,7 @@ div[data-role=controlgroup] a.ui-btn-active { width: 50%; } -@media all and (min-width:70em) { +@media all and (min-width: 70em) { .dashboardSections { -webkit-flex-wrap: wrap; flex-wrap: wrap; @@ -292,13 +292,13 @@ div[data-role=controlgroup] a.ui-btn-active { background-position: center; } -@media all and (min-width:40em) { +@media all and (min-width: 40em) { .activeSession { width: 100% !important; } } -@media all and (min-width:50em) { +@media all and (min-width: 50em) { .activeSession { width: 50% !important; } @@ -394,13 +394,13 @@ div[data-role=controlgroup] a.ui-btn-active { background-color: #dd4919; } -@media all and (max-width:34.375em) { +@media all and (max-width: 34.375em) { .sessionAppName { max-width: 160px; } } -@media all and (max-width:31.25em) { +@media all and (max-width: 31.25em) { .sessionAppName { max-width: 150px; } diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index e4dc776d55..756df82ac2 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -239,7 +239,7 @@ padding-bottom: 10vh; } -@media all and (min-width:40em) { +@media all and (min-width: 40em) { .dashboardDocument .adminDrawerLogo, .dashboardDocument .mainDrawerButton { @@ -267,13 +267,13 @@ } } -@media all and (max-width:60em) { +@media all and (max-width: 60em) { .libraryDocument .mainDrawerButton { display: none; } } -@media all and (max-width:84em) { +@media all and (max-width: 84em) { .withSectionTabs .headerTop { padding-bottom: 0.2em; } @@ -283,7 +283,7 @@ } } -@media all and (min-width:84em) { +@media all and (min-width: 84em) { .headerTop { padding: 1.489em 0; } @@ -325,7 +325,7 @@ white-space: nowrap; } -@media all and (max-width:37.5em) { +@media all and (max-width: 37.5em) { .headerSelectedPlayer { display: none; } @@ -523,19 +523,19 @@ background-size: contain; } -@media all and (max-width:87.5em) { +@media all and (max-width: 87.5em) { .detailLogo { right: 5%; } } -@media all and (max-width:75em) { +@media all and (max-width: 75em) { .detailLogo { right: 2%; } } -@media all and (max-width:68.75em) { +@media all and (max-width: 68.75em) { .detailLogo { width: 14.91em; height: 3.5em; @@ -553,7 +553,7 @@ -webkit-box-shadow: 0 .0725em .29em 0 rgba(0, 0, 0, .37); } -@media all and (max-width:62.5em) { +@media all and (max-width: 62.5em) { .detailPageContent { position: relative; } @@ -563,7 +563,7 @@ } } -@media all and (max-width:75em) { +@media all and (max-width: 75em) { .lnkSibling { display: none !important; } @@ -589,7 +589,7 @@ font-size: 3.5em; } -@media all and (max-width:62.5em) { +@media all and (max-width: 62.5em) { .parentName { margin-bottom: 1em; } @@ -603,13 +603,13 @@ } } -@media all and (min-width:31.25em) { +@media all and (min-width: 31.25em) { .mobileDetails { display: none; } } -@media all and (max-width:31.25em) { +@media all and (max-width: 31.25em) { .desktopDetails { display: none !important; } @@ -676,21 +676,21 @@ margin: 0 .5em 0 0 !important; } -@media all and (min-width:29em) { +@media all and (min-width: 29em) { .detailButton-mobile { padding-left: .75em !important; padding-right: .75em !important; } } -@media all and (min-width:32em) { +@media all and (min-width: 32em) { .detailButton-mobile { padding-left: .8em !important; padding-right: .8em !important; } } -@media all and (min-width:35em) { +@media all and (min-width: 35em) { .detailButton-mobile { padding-left: .85em !important; padding-right: .85em !important; @@ -730,7 +730,7 @@ font-weight: 400; } -@media all and (max-width:62.5em) { +@media all and (max-width: 62.5em) { .mainDetailButtons { margin-left: -.5em; } @@ -740,7 +740,7 @@ } } -@media all and (min-width:62.5em) { +@media all and (min-width: 62.5em) { .detailFloatingButton { display: none !important; } @@ -751,7 +751,7 @@ } } -@media all and (max-width:50em) { +@media all and (max-width: 50em) { .editorMenuLink { display: none; } @@ -768,7 +768,7 @@ align-items: center; } -@media all and (max-width:31.25em) { +@media all and (max-width: 31.25em) { .mobileDetails .itemMiscInfo { text-align: center; -webkit-box-pack: center; @@ -790,7 +790,7 @@ border-collapse: collapse; } -@media all and (max-width:62.5em) { +@media all and (max-width: 62.5em) { .detailPageContent-nodetailimg { padding-top: 0; } @@ -839,19 +839,19 @@ margin: 0 auto; } -@media all and (max-height:31.25em) { +@media all and (max-height: 31.25em) { .itemBackdrop { height: 52vh; } } -@media all and (max-width:75em) { +@media all and (max-width: 75em) { .listViewUserDataButtons { display: none !important; } } -@media all and (max-width:62.5em) { +@media all and (max-width: 62.5em) { .detailsHiddenOnMobile { display: none; } @@ -987,7 +987,7 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { margin-bottom: -1em; } -@media all and (min-height:31.25em) { +@media all and (min-height: 31.25em) { .padded-left-withalphapicker { padding-left: 7.5%; } @@ -1018,13 +1018,13 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { justify-content: center; } -@media all and (min-width:40em) { +@media all and (min-width: 40em) { .listIconButton-autohide { display: none !important; } } -@media all and (max-width:40em) { +@media all and (max-width: 40em) { .listTextButton-autohide { display: none !important; } diff --git a/src/assets/css/livetv.css b/src/assets/css/livetv.css index fa33094534..b91864178d 100644 --- a/src/assets/css/livetv.css +++ b/src/assets/css/livetv.css @@ -2,7 +2,7 @@ padding-bottom: 15em; } -@media all and (min-width:62.5em) { +@media all and (min-width: 62.5em) { #guideTab { padding-left: .5em; } diff --git a/src/assets/css/metadataeditor.css b/src/assets/css/metadataeditor.css index 5109ca1da2..36cb6b0014 100644 --- a/src/assets/css/metadataeditor.css +++ b/src/assets/css/metadataeditor.css @@ -51,7 +51,7 @@ margin-right: .4em; } -@media all and (min-width:50em) { +@media all and (min-width: 50em) { .editPageSidebar { position: fixed; top: 5.2em; @@ -68,7 +68,7 @@ } } -@media all and (min-width:112.5em) { +@media all and (min-width: 112.5em) { .editPageSidebar { width: 25%; } diff --git a/src/assets/css/site.css b/src/assets/css/site.css index 5b060dd0e6..cbcafd76c3 100644 --- a/src/assets/css/site.css +++ b/src/assets/css/site.css @@ -73,7 +73,7 @@ div[data-role=page] { padding-bottom: 5em !important; } -@media all and (min-width:50em) { +@media all and (min-width: 50em) { .readOnlyContent, form { max-width: 54em; diff --git a/src/assets/css/videoosd.css b/src/assets/css/videoosd.css index c5709aee0c..87238a1f92 100644 --- a/src/assets/css/videoosd.css +++ b/src/assets/css/videoosd.css @@ -53,14 +53,14 @@ min-width: 20vh; } -@media all and (orientation:portrait) { +@media all and (orientation: portrait) { .chapterThumb { height: 30vw; min-width: 30vw; } } -@media all and (max-height:50em) and (orientation:landscape) { +@media all and (max-height: 50em) and (orientation: landscape) { .chapterThumb { height: 30vh; min-width: 30vh; @@ -253,7 +253,7 @@ position: fixed; } -@media all and (max-width:30em) { +@media all and (max-width: 30em) { .btnFastForward, .btnRewind, @@ -263,26 +263,26 @@ } } -@media all and (max-width:33.75em) { +@media all and (max-width: 33.75em) { .videoOsdBottom .paper-icon-button-light { margin: 0; } } -@media all and (max-width:43em) { +@media all and (max-width: 43em) { .videoOsdBottom .volumeButtons, .osdMediaStatus span { display: none !important; } } -@media all and (max-width:50em) { +@media all and (max-width: 50em) { .videoOsdBottom .btnFastForward, .videoOsdBottom .btnRewind { display: none !important; } } -@media all and (max-width:75em) { +@media all and (max-width: 75em) { .videoOsdBottom .endsAtText { display: none !important; } diff --git a/src/components/filterdialog/style.css b/src/components/filterdialog/style.css index 393b04b241..f05ef2e4a8 100644 --- a/src/components/filterdialog/style.css +++ b/src/components/filterdialog/style.css @@ -11,14 +11,14 @@ max-width: none !important; } -@media all and (min-height:600px) { +@media all and (min-height: 600px) { .dynamicFilterDialog { top: 10% !important; bottom: 25% !important; } } -@media all and (max-width:400px) { +@media all and (max-width: 400px) { .dynamicFilterDialog { width: auto; left: 10vw !important; @@ -27,7 +27,7 @@ } } -@media all and (min-width:400px) { +@media all and (min-width: 400px) { .dynamicFilterDialog { width: 20.16em; margin-left: -10.08em !important; diff --git a/src/components/guide/guide.css b/src/components/guide/guide.css index 6b895248bd..8e14cb72a0 100644 --- a/src/components/guide/guide.css +++ b/src/components/guide/guide.css @@ -166,25 +166,25 @@ width: 24vw; } -@media all and (min-width:31.25em) { +@media all and (min-width: 31.25em) { .channelsContainer, .guide-channelTimeslotHeader { width: 16vw; } } -@media all and (min-width:37.5em) { +@media all and (min-width: 37.5em) { .channelsContainer, .guide-channelTimeslotHeader { width: 16vw; } } -@media all and (min-width:50em) { +@media all and (min-width: 50em) { .channelsContainer, .guide-channelTimeslotHeader { width: 14vw; } } -@media all and (min-width:80em) { +@media all and (min-width: 80em) { .channelsContainer, .guide-channelTimeslotHeader { width: 12vw; } diff --git a/src/components/remotecontrol/remotecontrol.css b/src/components/remotecontrol/remotecontrol.css index cc60bd55a4..fb6e6f915b 100644 --- a/src/components/remotecontrol/remotecontrol.css +++ b/src/components/remotecontrol/remotecontrol.css @@ -66,7 +66,7 @@ flex-shrink: 0; } -@media all and (min-width:50em) { +@media all and (min-width: 50em) { .nowPlayingPageImageContainer { width: 16%; } @@ -102,7 +102,7 @@ -ms-user-select: none } -@media all and (orientation:portrait) and (max-width:50em) { +@media all and (orientation: portrait) and (max-width: 50em) { .nowPlayingInfoContainer { -webkit-box-orient: vertical !important; -webkit-box-direction: normal !important; @@ -144,7 +144,7 @@ } } -@media all and (orientation:portrait) and (max-width:40em) { +@media all and (orientation: portrait) and (max-width: 40em) { .nowPlayingPageImage { height: 30vh; } @@ -172,7 +172,7 @@ justify-content: center; } -@media all and (min-width:50em) { +@media all and (min-width: 50em) { .nowPlayingSecondaryButtons { -webkit-box-flex: 1; -webkit-flex-grow: 1; @@ -183,7 +183,7 @@ } } -@media all and (min-width:80em) { +@media all and (min-width: 80em) { .nowPlayingPageImageContainer { margin-right: .75em; } @@ -214,7 +214,7 @@ width: 9em; } -@media all and (max-width:50em) { +@media all and (max-width: 50em) { .nowPlayingInfoButtons .nowPlayingPageUserDataButtons { display: none !important; } @@ -223,13 +223,13 @@ } } -@media all and (max-width:47em) { +@media all and (max-width: 47em) { .nowPlayingInfoButtons .repeatToggleButton { display: none !important; } } -@media all and (max-width:34em) { +@media all and (max-width: 34em) { .nowPlayingInfoButtons .btnNowPlayingFastForward, .nowPlayingInfoButtons .btnNowPlayingRewind, .nowPlayingInfoButtons .playlist .listItemMediaInfo { diff --git a/src/themes/blueradiance/theme.css b/src/themes/blueradiance/theme.css index 3ea3221607..140adccfb9 100644 --- a/src/themes/blueradiance/theme.css +++ b/src/themes/blueradiance/theme.css @@ -52,7 +52,7 @@ html { opacity: .86; } -@media (orientation:portrait) { +@media (orientation: portrait) { .backgroundContainer { background-position: 30% top; } diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index b6351de419..13838c1798 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -51,7 +51,7 @@ html { opacity: .86; } -@media (orientation:portrait) { +@media (orientation: portrait) { .backgroundContainer { background-position: 30% top; } From 2a074d10f1a8114262b537645d7ff37e5d0f9143 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 14:59:39 +0100 Subject: [PATCH 058/105] Fix no-missing-end-of-source-newline (CSS) --- src/assets/css/clearbutton.css | 2 +- src/assets/css/detailtable.css | 2 +- src/assets/css/flexstyles.css | 2 +- src/assets/css/ios.css | 2 +- src/assets/css/livetv.css | 2 +- src/components/appfooter/appfooter.css | 2 +- src/components/directorybrowser/directorybrowser.css | 2 +- src/components/headroom/headroom.css | 2 +- src/components/imageeditor/imageeditor.css | 2 +- src/components/images/style.css | 2 +- src/components/imageuploader/style.css | 2 +- src/components/indicators/indicators.css | 2 +- src/components/navdrawer/navdrawer.css | 2 +- src/components/playback/iconosd.css | 2 +- src/components/recordingcreator/recordingfields.css | 2 +- src/components/subtitleeditor/subtitleeditor.css | 2 +- src/components/subtitlesync/subtitlesync.css | 2 +- src/components/userdatabuttons/userdatabuttons.css | 2 +- src/components/viewManager/viewContainer.css | 2 +- src/components/youtubeplayer/style.css | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/assets/css/clearbutton.css b/src/assets/css/clearbutton.css index 2d3f8d6800..9e6c105258 100644 --- a/src/assets/css/clearbutton.css +++ b/src/assets/css/clearbutton.css @@ -9,4 +9,4 @@ vertical-align: middle; font-family: inherit; font-size: inherit; -} \ No newline at end of file +} diff --git a/src/assets/css/detailtable.css b/src/assets/css/detailtable.css index 960cd69eae..5f6df2a321 100644 --- a/src/assets/css/detailtable.css +++ b/src/assets/css/detailtable.css @@ -16,4 +16,4 @@ font-weight: 700; text-align: left; vertical-align: top; -} \ No newline at end of file +} diff --git a/src/assets/css/flexstyles.css b/src/assets/css/flexstyles.css index b35e25d57b..a5a479f2f5 100644 --- a/src/assets/css/flexstyles.css +++ b/src/assets/css/flexstyles.css @@ -44,4 +44,4 @@ .align-self-flex-end { align-self: flex-end; -} \ No newline at end of file +} diff --git a/src/assets/css/ios.css b/src/assets/css/ios.css index 1d133d13be..57de0c5fdd 100644 --- a/src/assets/css/ios.css +++ b/src/assets/css/ios.css @@ -5,4 +5,4 @@ html { .formDialogFooter { position: static !important; margin: 0 -1em !important; -} \ No newline at end of file +} diff --git a/src/assets/css/livetv.css b/src/assets/css/livetv.css index b91864178d..3b6074dfb1 100644 --- a/src/assets/css/livetv.css +++ b/src/assets/css/livetv.css @@ -6,4 +6,4 @@ #guideTab { padding-left: .5em; } -} \ No newline at end of file +} diff --git a/src/components/appfooter/appfooter.css b/src/components/appfooter/appfooter.css index 4cb342e34a..06776650f2 100644 --- a/src/components/appfooter/appfooter.css +++ b/src/components/appfooter/appfooter.css @@ -10,4 +10,4 @@ .appfooter.headroom--unpinned { transform: translateY(100%) !important; - } \ No newline at end of file + } diff --git a/src/components/directorybrowser/directorybrowser.css b/src/components/directorybrowser/directorybrowser.css index d47293e005..97a5945f52 100644 --- a/src/components/directorybrowser/directorybrowser.css +++ b/src/components/directorybrowser/directorybrowser.css @@ -5,4 +5,4 @@ .lblDirectoryPickerPath { white-space: nowrap; -} \ No newline at end of file +} diff --git a/src/components/headroom/headroom.css b/src/components/headroom/headroom.css index caac40a1b6..df985892ff 100644 --- a/src/components/headroom/headroom.css +++ b/src/components/headroom/headroom.css @@ -8,4 +8,4 @@ .headroom--unpinned:not(.headroomDisabled) { transform: translateY(-100%); -} \ No newline at end of file +} diff --git a/src/components/imageeditor/imageeditor.css b/src/components/imageeditor/imageeditor.css index d45400cac9..5587e7d8d1 100644 --- a/src/components/imageeditor/imageeditor.css +++ b/src/components/imageeditor/imageeditor.css @@ -6,4 +6,4 @@ .first-imageEditor-buttons { margin-top: 2em; -} \ No newline at end of file +} diff --git a/src/components/images/style.css b/src/components/images/style.css index 5cf39c1e4b..dc0fc6f615 100644 --- a/src/components/images/style.css +++ b/src/components/images/style.css @@ -44,4 +44,4 @@ 100% { opacity: 1; } -} \ No newline at end of file +} diff --git a/src/components/imageuploader/style.css b/src/components/imageuploader/style.css index bd86d8bff3..a4b3ee910d 100644 --- a/src/components/imageuploader/style.css +++ b/src/components/imageuploader/style.css @@ -8,4 +8,4 @@ display: flex; align-items: center; justify-content: center; -} \ No newline at end of file +} diff --git a/src/components/indicators/indicators.css b/src/components/indicators/indicators.css index 906aa89bbd..3bbd7edf9e 100644 --- a/src/components/indicators/indicators.css +++ b/src/components/indicators/indicators.css @@ -93,4 +93,4 @@ font-size: 84%; font-weight: 500; margin: 0 .25em; -} \ No newline at end of file +} diff --git a/src/components/navdrawer/navdrawer.css b/src/components/navdrawer/navdrawer.css index 7ec6b4e73b..b592c61397 100644 --- a/src/components/navdrawer/navdrawer.css +++ b/src/components/navdrawer/navdrawer.css @@ -49,4 +49,4 @@ .tmla-mask.backdrop { opacity: 1; -} \ No newline at end of file +} diff --git a/src/components/playback/iconosd.css b/src/components/playback/iconosd.css index 3f0feeca2e..f905767cfd 100644 --- a/src/components/playback/iconosd.css +++ b/src/components/playback/iconosd.css @@ -37,4 +37,4 @@ .brightnessOsdProgressInner { background: #ff9800; -} \ No newline at end of file +} diff --git a/src/components/recordingcreator/recordingfields.css b/src/components/recordingcreator/recordingfields.css index baa7845da8..f07a22f1af 100644 --- a/src/components/recordingcreator/recordingfields.css +++ b/src/components/recordingcreator/recordingfields.css @@ -9,4 +9,4 @@ .recordSeriesContainer { margin-bottom: .8em; -} \ No newline at end of file +} diff --git a/src/components/subtitleeditor/subtitleeditor.css b/src/components/subtitleeditor/subtitleeditor.css index a97b20b38a..08e6faffba 100644 --- a/src/components/subtitleeditor/subtitleeditor.css +++ b/src/components/subtitleeditor/subtitleeditor.css @@ -1,3 +1,3 @@ .originalSubtitleFileLabel { margin-right: 1em; -} \ No newline at end of file +} diff --git a/src/components/subtitlesync/subtitlesync.css b/src/components/subtitlesync/subtitlesync.css index 5b9c9a5105..321145be5e 100644 --- a/src/components/subtitlesync/subtitlesync.css +++ b/src/components/subtitlesync/subtitlesync.css @@ -45,4 +45,4 @@ flex-grow: 1; border-radius: .3em; z-index: 1; -} \ No newline at end of file +} diff --git a/src/components/userdatabuttons/userdatabuttons.css b/src/components/userdatabuttons/userdatabuttons.css index 9d8ce097c7..f93f47ffcc 100644 --- a/src/components/userdatabuttons/userdatabuttons.css +++ b/src/components/userdatabuttons/userdatabuttons.css @@ -1,3 +1,3 @@ .btnUserDataOn { color: #c33 !important; -} \ No newline at end of file +} diff --git a/src/components/viewManager/viewContainer.css b/src/components/viewManager/viewContainer.css index 00ef2c4495..9c46dd18a3 100644 --- a/src/components/viewManager/viewContainer.css +++ b/src/components/viewManager/viewContainer.css @@ -67,4 +67,4 @@ to { transform: translate3d(100%, 0, 0); } -} \ No newline at end of file +} diff --git a/src/components/youtubeplayer/style.css b/src/components/youtubeplayer/style.css index 8c59a541cf..87526c47a9 100644 --- a/src/components/youtubeplayer/style.css +++ b/src/components/youtubeplayer/style.css @@ -18,4 +18,4 @@ padding: 0 !important; width: 100%; height: 100%; - } \ No newline at end of file + } From ea28429cdfaad6e2babbff1c87f4d8c4a8da1d1f Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 15:00:37 +0100 Subject: [PATCH 059/105] Fix number-leading-zero (CSS) --- src/assets/css/dashboard.css | 26 +++---- src/assets/css/detailtable.css | 2 +- src/assets/css/librarybrowser.css | 58 +++++++-------- src/assets/css/livetv.css | 2 +- src/assets/css/metadataeditor.css | 6 +- src/assets/css/site.css | 8 +-- src/assets/css/videoosd.css | 20 +++--- src/components/actionsheet/actionsheet.css | 24 +++---- src/components/alphapicker/style.css | 8 +-- src/components/cardbuilder/card.css | 46 ++++++------ src/components/dialogHelper/dialoghelper.css | 6 +- .../directorybrowser/directorybrowser.css | 4 +- src/components/formdialog.css | 8 +-- src/components/guide/guide.css | 40 +++++------ src/components/homesections/homesections.css | 2 +- src/components/htmlvideoplayer/style.css | 2 +- src/components/indicators/indicators.css | 10 +-- src/components/lazyloader/lazyedgehack.css | 4 +- src/components/listview/listview.css | 34 ++++----- src/components/loading/loading.css | 2 +- src/components/mediainfo/mediainfo.css | 18 ++--- src/components/multiselect/multiselect.css | 4 +- src/components/navdrawer/navdrawer.css | 2 +- .../nowplayingbar/nowplayingbar.css | 2 +- src/components/playback/iconosd.css | 14 ++-- src/components/playerstats/playerstats.css | 8 +-- .../recordingcreator/recordingcreator.css | 2 +- .../recordingcreator/recordingfields.css | 2 +- .../remotecontrol/remotecontrol.css | 14 ++-- src/components/search/searchfields.css | 4 +- src/components/slideshow/style.css | 30 ++++---- src/components/subtitlesync/subtitlesync.css | 4 +- src/components/toast/toast.css | 4 +- src/components/upnextdialog/upnextdialog.css | 2 +- src/elements/emby-button/emby-button.css | 8 +-- src/elements/emby-checkbox/emby-checkbox.css | 6 +- src/elements/emby-collapse/emby-collapse.css | 8 +-- src/elements/emby-input/emby-input.css | 4 +- .../emby-progressring/emby-progressring.css | 6 +- src/elements/emby-radio/emby-radio.css | 4 +- src/elements/emby-select/emby-select.css | 18 ++--- src/elements/emby-slider/emby-slider.css | 18 ++--- src/elements/emby-textarea/emby-textarea.css | 6 +- src/elements/emby-toggle/emby-toggle.css | 12 ++-- src/themes/appletv/theme.css | 48 ++++++------- src/themes/blueradiance/theme.css | 58 +++++++-------- src/themes/dark/theme.css | 40 +++++------ src/themes/emby/theme.css | 48 ++++++------- src/themes/light/theme.css | 30 ++++---- src/themes/purplehaze/theme.css | 70 +++++++++---------- src/themes/wmc/theme.css | 44 ++++++------ 51 files changed, 425 insertions(+), 425 deletions(-) diff --git a/src/assets/css/dashboard.css b/src/assets/css/dashboard.css index 39ffc4e299..e954a9fb42 100644 --- a/src/assets/css/dashboard.css +++ b/src/assets/css/dashboard.css @@ -11,7 +11,7 @@ } .dashboardFooter a { - margin: 0 .7em; + margin: 0 0.7em; } progress { @@ -39,7 +39,7 @@ progress::-webkit-progress-value { } progress[aria-valuenow]:before { - border-radius: .4em; + border-radius: 0.4em; background-color: #00a4dc; } @@ -83,9 +83,9 @@ a[data-role=button] { cursor: pointer !important; font-family: inherit !important; font-weight: 500 !important; - margin: 0 .25em !important; + margin: 0 0.25em !important; display: inline-block; - padding: .8em 1em; + padding: 0.8em 1em; text-align: center; text-decoration: none !important; } @@ -115,7 +115,7 @@ div[data-role=controlgroup] a[data-role=button]:last-child { div[data-role=controlgroup] a[data-role=button]+a[data-role=button] { border-left-width: 0 !important; - margin: 0 0 0 -.4em !important; + margin: 0 0 0 -0.4em !important; } div[data-role=controlgroup] a.ui-btn-active { @@ -136,9 +136,9 @@ div[data-role=controlgroup] a.ui-btn-active { .wizardContent h2 img { height: 2.5em; vertical-align: middle; - margin-right: .5em; + margin-right: 0.5em; position: relative; - top: -.3em; + top: -0.3em; } .header .imageLink { @@ -224,8 +224,8 @@ div[data-role=controlgroup] a.ui-btn-active { } .dashboardSection h3 { - margin-top: .5em; - margin-bottom: .5em; + margin-top: 0.5em; + margin-bottom: 0.5em; } .activeRecordingItems>.card { @@ -261,7 +261,7 @@ div[data-role=controlgroup] a.ui-btn-active { .wizardContent { max-width: 62em; - padding: .5em 2em 1em; + padding: 0.5em 2em 1em; margin: 0 auto; background: #fff; } @@ -286,7 +286,7 @@ div[data-role=controlgroup] a.ui-btn-active { height: 1.71em; width: 1.71em; border-radius: 100%; - margin-right: .5em; + margin-right: 0.5em; background-size: cover; background-repeat: no-repeat; background-position: center; @@ -305,7 +305,7 @@ div[data-role=controlgroup] a.ui-btn-active { } .sessionCardFooter { - padding-top: .5em !important; + padding-top: 0.5em !important; padding-bottom: 1em !important; border-top: 1px solid #eee; text-align: center; @@ -336,7 +336,7 @@ div[data-role=controlgroup] a.ui-btn-active { .sessionNowPlayingContent-withbackground+.sessionNowPlayingInnerContent { color: #fff !important; - background: rgba(0, 0, 0, .7); + background: rgba(0, 0, 0, 0.7); } .sessionAppName { diff --git a/src/assets/css/detailtable.css b/src/assets/css/detailtable.css index 5f6df2a321..4e2e16511c 100644 --- a/src/assets/css/detailtable.css +++ b/src/assets/css/detailtable.css @@ -1,7 +1,7 @@ .detailTableBodyCell, .detailTableHeaderCell { border-spacing: 0; - padding: .4em; + padding: 0.4em; } .detailTable { diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 756df82ac2..4004835cef 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -109,7 +109,7 @@ display: -webkit-inline-box; display: -webkit-inline-flex; display: inline-flex; - margin: .3em 0 0 .5em; + margin: 0.3em 0 0 0.5em; height: 1.7em; -webkit-box-align: center; -webkit-align-items: center; @@ -162,7 +162,7 @@ } .headerTop { - padding: .54em 0; + padding: 0.54em 0; } .headerLeft { @@ -215,7 +215,7 @@ .sidebarHeader { padding-left: 1.2em; - margin: 1em 0 .5em; + margin: 1em 0 0.5em; } .dashboardDocument .skinBody { @@ -337,7 +337,7 @@ .headerArrowImage { height: 20px; - margin-left: .5em; + margin-left: 0.5em; } .backdropContainer { @@ -360,7 +360,7 @@ } .viewSettings { - margin: 0 0 .25em; + margin: 0 0 0.25em; } .listTopPaging, @@ -369,7 +369,7 @@ } .viewControls+.listTopPaging { - margin-left: .5em !important; + margin-left: 0.5em !important; } .criticReview { @@ -388,7 +388,7 @@ } .criticReview:first-child { - margin-top: .5em; + margin-top: 0.5em; } .criticReview img { @@ -396,7 +396,7 @@ } .criticRatingScore { - margin-bottom: .5em; + margin-bottom: 0.5em; } .itemTag { @@ -413,12 +413,12 @@ } .itemLinks p { - margin: .5em 0; + margin: 0.5em 0; } .reviewLink, .reviewerName { - margin-top: .5em; + margin-top: 0.5em; } .reviewerName { @@ -431,7 +431,7 @@ .reviewScore { position: absolute; - left: .8em; + left: 0.8em; } .itemBackdrop { @@ -452,7 +452,7 @@ .desktopMiscInfoContainer { position: absolute; - bottom: .75em; + bottom: 0.75em; } .detailPagePrimaryContainer { @@ -571,12 +571,12 @@ .parentName { display: block; - margin-bottom: .5em; + margin-bottom: 0.5em; } .emby-button.detailFloatingButton { position: absolute; - background-color: rgba(0, 0, 0, .5) !important; + background-color: rgba(0, 0, 0, 0.5) !important; z-index: 1; top: 50%; left: 50%; @@ -623,7 +623,7 @@ } .itemName { - margin: .5em 0; + margin: 0.5em 0; } .empty { @@ -669,31 +669,31 @@ -webkit-align-items: center; align-items: center; margin: 0 !important; - padding: .5em .7em !important; + padding: 0.5em 0.7em !important; } .detailButton { - margin: 0 .5em 0 0 !important; + margin: 0 0.5em 0 0 !important; } @media all and (min-width: 29em) { .detailButton-mobile { - padding-left: .75em !important; - padding-right: .75em !important; + padding-left: 0.75em !important; + padding-right: 0.75em !important; } } @media all and (min-width: 32em) { .detailButton-mobile { - padding-left: .8em !important; - padding-right: .8em !important; + padding-left: 0.8em !important; + padding-right: 0.8em !important; } } @media all and (min-width: 35em) { .detailButton-mobile { - padding-left: .85em !important; - padding-right: .85em !important; + padding-left: 0.85em !important; + padding-right: 0.85em !important; } } @@ -725,14 +725,14 @@ } .detailButton-mobile-text { - margin-top: .7em; + margin-top: 0.7em; font-size: 80%; font-weight: 400; } @media all and (max-width: 62.5em) { .mainDetailButtons { - margin-left: -.5em; + margin-left: -0.5em; } .detailButton { @@ -830,7 +830,7 @@ } .timelineHeader { - margin-bottom: .25em; + margin-bottom: 0.25em; line-height: 1.25em; line-height: initial; } @@ -867,7 +867,7 @@ } .bulletSeparator { - margin: 0 .35em; + margin: 0 0.35em; } .mediaInfoIcons { @@ -921,7 +921,7 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { } .sectionTitleButton + .sectionTitleButton { - margin-left: .5em !important; + margin-left: 0.5em !important; } .sectionTitleIconButton { @@ -929,7 +929,7 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { -webkit-flex-shrink: 0; flex-shrink: 0; font-size: 84% !important; - padding: .5em !important; + padding: 0.5em !important; } .horizontalItemsContainer { diff --git a/src/assets/css/livetv.css b/src/assets/css/livetv.css index 3b6074dfb1..695adff8c5 100644 --- a/src/assets/css/livetv.css +++ b/src/assets/css/livetv.css @@ -4,6 +4,6 @@ @media all and (min-width: 62.5em) { #guideTab { - padding-left: .5em; + padding-left: 0.5em; } } diff --git a/src/assets/css/metadataeditor.css b/src/assets/css/metadataeditor.css index 36cb6b0014..190f53187f 100644 --- a/src/assets/css/metadataeditor.css +++ b/src/assets/css/metadataeditor.css @@ -7,7 +7,7 @@ } .libraryTree { - margin-left: .25em; + margin-left: 0.25em; } .offlineEditorNode { @@ -16,7 +16,7 @@ .editorNode img { height: 18px; - margin: 0 .35em; + margin: 0 0.35em; vertical-align: middle; position: relative; top: -2px; @@ -48,7 +48,7 @@ } .metadataSidebarIcon { - margin-right: .4em; + margin-right: 0.4em; } @media all and (min-width: 50em) { diff --git a/src/assets/css/site.css b/src/assets/css/site.css index cbcafd76c3..4dc30280db 100644 --- a/src/assets/css/site.css +++ b/src/assets/css/site.css @@ -56,13 +56,13 @@ div[data-role=page] { } .fieldDescription { - padding-left: .15em; + padding-left: 0.15em; font-weight: 400; white-space: normal !important; } .fieldDescription+.fieldDescription { - margin-top: .3em; + margin-top: 0.3em; } .content-primary, @@ -82,8 +82,8 @@ div[data-role=page] { .headerHelpButton { margin-left: 1.25em !important; - padding-bottom: .4em !important; - padding-top: .4em !important; + padding-bottom: 0.4em !important; + padding-top: 0.4em !important; } .mediaInfoContent { diff --git a/src/assets/css/videoosd.css b/src/assets/css/videoosd.css index 87238a1f92..59318cb6fc 100644 --- a/src/assets/css/videoosd.css +++ b/src/assets/css/videoosd.css @@ -72,19 +72,19 @@ bottom: 0; left: 0; right: 0; - background: rgba(0, 0, 0, .7); - padding: .25em .5em; + background: rgba(0, 0, 0, 0.7); + padding: 0.25em 0.5em; user-select: none; } .chapterThumbText { - padding: .25em 0; + padding: 0.25em 0; margin: 0; opacity: 1; } .chapterThumbText-dim { - opacity: .6; + opacity: 0.6; } .videoOsdBottom { @@ -146,7 +146,7 @@ } .volumeButtons { - margin: 0 .5em 0 auto; + margin: 0 0.5em 0 auto; display: flex; -webkit-align-items: center; align-items: center; @@ -163,7 +163,7 @@ .osdPoster { width: 10%; position: relative; - margin-right: .5em; + margin-right: 0.5em; } .osdPoster img { @@ -172,7 +172,7 @@ width: 100%; -webkit-box-shadow: 0 0 1.9vh #000; box-shadow: 0 0 1.9vh #000; - border: .08em solid #222; + border: 0.08em solid #222; user-drag: none; user-select: none; -moz-user-select: none; @@ -193,7 +193,7 @@ } .osdSecondaryMediaInfo { - padding-left: .6em !important; + padding-left: 0.6em !important; } .osdTextContainer { @@ -207,8 +207,8 @@ -moz-user-select: none; -ms-user-select: none; user-select: none; - margin-bottom: .7em; - padding-left: .5em; + margin-bottom: 0.7em; + padding-left: 0.5em; } .osdMainTextContainer { diff --git a/src/components/actionsheet/actionsheet.css b/src/components/actionsheet/actionsheet.css index 8e5084038a..87d6e9466c 100644 --- a/src/components/actionsheet/actionsheet.css +++ b/src/components/actionsheet/actionsheet.css @@ -4,7 +4,7 @@ padding: 0; border: none; max-height: 84%; - border-radius: .1em !important; + border-radius: 0.1em !important; } .actionsheet-not-fullscreen { @@ -24,7 +24,7 @@ .actionSheetContent { margin: 0 !important; - padding: .4em 0 !important; + padding: 0.4em 0 !important; flex-direction: column; display: flex; justify-content: center; @@ -45,7 +45,7 @@ } .actionsheetListItemBody { - padding: .4em 1em .4em .6em !important; + padding: 0.4em 1em 0.4em 0.6em !important; } .actionSheetItemText { @@ -59,13 +59,13 @@ } .actionSheetItemAsideText { - opacity: .7; + opacity: 0.7; font-size: 90%; display: flex; justify-content: flex-end; flex-shrink: 0; margin-left: 5em; - margin-right: .5em; + margin-right: 0.5em; } .actionSheetScroller { @@ -83,14 +83,14 @@ } .actionsheetDivider { - height: .07em; - margin: .25em 0; + height: 0.07em; + margin: 0.25em 0; flex-shrink: 0; } .actionSheetTitle { - margin: .6em 0 .7em !important; - padding: 0 .9em; + margin: 0.6em 0 0.7em !important; + padding: 0 0.9em; flex-grow: 0; } @@ -100,7 +100,7 @@ } .actionsheetMenuItemIcon { - margin: 0 .85em 0 .45em !important; + margin: 0 0.85em 0 0.45em !important; padding: 0 !important; } @@ -110,6 +110,6 @@ .btnCloseActionSheet { position: fixed; - top: .75em; - left: .5em; + top: 0.75em; + left: 0.5em; } diff --git a/src/components/alphapicker/style.css b/src/components/alphapicker/style.css index 29543421eb..78f74404ff 100644 --- a/src/components/alphapicker/style.css +++ b/src/components/alphapicker/style.css @@ -35,9 +35,9 @@ font-size: inherit; min-width: initial; margin: 0; - padding: .1em .4em; + padding: 0.1em 0.4em; width: auto; - border-radius: .1em; + border-radius: 0.1em; font-weight: normal; flex-shrink: 0; flex-grow: 1; @@ -113,11 +113,11 @@ } .alphaPicker-fixed-left { - left: .4em; + left: 0.4em; } .alphaPicker-fixed-right { - right: .4em; + right: 0.4em; } @media all and (min-width: 62.5em) { diff --git a/src/components/cardbuilder/card.css b/src/components/cardbuilder/card.css index 3745561954..dd8a73248e 100644 --- a/src/components/cardbuilder/card.css +++ b/src/components/cardbuilder/card.css @@ -93,12 +93,12 @@ button::-moz-focus-inner { } .card.show-focus:not(.show-animation) .cardBox { - margin: .4em; + margin: 0.4em; } .card.show-focus:not(.show-animation) .cardBox.visualCardBox, .card.show-focus:not(.show-animation) .cardBox:not(.visualCardBox) .cardScalable { - border: .5em solid transparent; + border: 0.5em solid transparent; } .card.show-animation:focus > .cardBox { @@ -123,7 +123,7 @@ button::-moz-focus-inner { .btnCardOptions { position: absolute; - bottom: .25em; + bottom: 0.25em; right: 0; margin: 0 !important; z-index: 1; @@ -134,8 +134,8 @@ button::-moz-focus-inner { position: absolute; align-items: center; justify-content: center; - top: .3em; - left: .3em; + top: 0.3em; + left: 0.3em; text-align: center; vertical-align: middle; width: 1.6em; @@ -253,17 +253,17 @@ button::-moz-focus-inner { } .cardFooter { - padding: .3em .3em .5em .3em; + padding: 0.3em 0.3em 0.5em 0.3em; position: relative; } .visualCardBox { box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37); - border-radius: .145em; + border-radius: 0.145em; } .innerCardFooter { - background: rgba(0, 0, 0, .7); + background: rgba(0, 0, 0, 0.7); position: absolute; bottom: 0; left: 0; @@ -283,7 +283,7 @@ button::-moz-focus-inner { } .cardText { - padding: .06em .5em; + padding: 0.06em 0.5em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; @@ -295,7 +295,7 @@ button::-moz-focus-inner { } .cardText-first { - padding-top: .24em; + padding-top: 0.24em; } .textActionButton { @@ -322,7 +322,7 @@ button::-moz-focus-inner { } .innerCardFooter > .cardText { - padding: .3em .5em; + padding: 0.3em 0.5em; } .cardFooter-withlogo { @@ -361,12 +361,12 @@ button::-moz-focus-inner { .cardImageIcon-small { font-size: 3em; - margin-bottom: .1em; + margin-bottom: 0.1em; } .cardIndicators { - right: .225em; - top: .225em; + right: 0.225em; + top: 0.225em; position: absolute; display: flex; align-items: center; @@ -383,16 +383,16 @@ button::-moz-focus-inner { } .programAttributeIndicator { - padding: .18em .5em; + padding: 0.18em 0.5em; color: #fff; font-weight: 500; } .cardOverlayButton { - color: rgba(255, 255, 255, .76); + color: rgba(255, 255, 255, 0.76); margin: 0; z-index: 1; - padding: .75em; + padding: 0.75em; font-size: 88%; } @@ -403,7 +403,7 @@ button::-moz-focus-inner { } .cardOverlayButtonIcon { - background-color: rgba(0, 0, 0, .7) !important; + background-color: rgba(0, 0, 0, 0.7) !important; border-radius: 100em; width: 1.5em !important; height: 1.5em !important; @@ -425,10 +425,10 @@ button::-moz-focus-inner { height: 2.6em; top: 50%; left: 50%; - background-color: rgba(0, 0, 0, .5) !important; - border: .06em solid rgba(255, 255, 255, .6); - padding: .38em !important; - color: rgba(255, 255, 255, .76); + background-color: rgba(0, 0, 0, 0.5) !important; + border: 0.06em solid rgba(255, 255, 255, 0.6); + padding: 0.38em !important; + color: rgba(255, 255, 255, 0.76); transition: transform 200ms ease-out; } @@ -731,7 +731,7 @@ button::-moz-focus-inner { .cardOverlayContainer { background: rgba(0, 0, 0, 0.5); opacity: 0; - transition: opacity .2s; + transition: opacity 0.2s; position: absolute; top: 0; left: 0; diff --git a/src/components/dialogHelper/dialoghelper.css b/src/components/dialogHelper/dialoghelper.css index 2cc20b5ff2..875ebfab26 100644 --- a/src/components/dialogHelper/dialoghelper.css +++ b/src/components/dialogHelper/dialoghelper.css @@ -51,13 +51,13 @@ to { opacity: 0; - transform: scale(.5); + transform: scale(0.5); } } @keyframes scaleup { from { - transform: scale(.5); + transform: scale(0.5); opacity: 0; } @@ -169,5 +169,5 @@ } .dialogBackdropOpened { - opacity: .5; + opacity: 0.5; } diff --git a/src/components/directorybrowser/directorybrowser.css b/src/components/directorybrowser/directorybrowser.css index 97a5945f52..ef6d58934f 100644 --- a/src/components/directorybrowser/directorybrowser.css +++ b/src/components/directorybrowser/directorybrowser.css @@ -1,6 +1,6 @@ #ulDirectoryPickerList a { - padding-top: .4em; - padding-bottom: .4em; + padding-top: 0.4em; + padding-bottom: 0.4em; } .lblDirectoryPickerPath { diff --git a/src/components/formdialog.css b/src/components/formdialog.css index b976d8130e..5eb1ba6ea3 100644 --- a/src/components/formdialog.css +++ b/src/components/formdialog.css @@ -5,7 +5,7 @@ } .formDialogHeader { - padding: 1em .5em; + padding: 1em 0.5em; display: flex; align-items: center; flex-shrink: 0; @@ -23,7 +23,7 @@ } .dialogContentInner { - padding: .5em 1em 20em 1em; + padding: 0.5em 1em 20em 1em; } .dialogContentInner-mini { @@ -62,11 +62,11 @@ padding-bottom: 1.5em; flex-direction: column; width: 80% !important; - padding-top: .5em; + padding-top: 0.5em; } .formDialogFooterItem { - margin: .5em !important; + margin: 0.5em !important; flex-grow: 1; text-align: center; flex-basis: 0; diff --git a/src/components/guide/guide.css b/src/components/guide/guide.css index 8e14cb72a0..524b3c7e2e 100644 --- a/src/components/guide/guide.css +++ b/src/components/guide/guide.css @@ -14,12 +14,12 @@ } .layout-desktop .tvGuideHeader { - margin-bottom: .5em; + margin-bottom: 0.5em; } .guideHeaderDateSelection { font-size: 86%; - padding: .4em 0; + padding: 0.4em 0; } .guide-headerTimeslots { @@ -39,10 +39,10 @@ .guideProgramIndicator { text-transform: uppercase; - border-radius: .25em; - margin-right: .5em; + border-radius: 0.25em; + margin-right: 0.5em; font-size: 82%; - padding: .2em .25em; + padding: 0.2em 0.25em; display: inline-flex; align-items: center; justify-content: center; @@ -87,7 +87,7 @@ } .guideSpacer { - width: .3em; + width: 0.3em; flex-shrink: 0; } @@ -119,7 +119,7 @@ .timeslotHeader { display: inline-flex; align-items: center; - text-indent: .25em; + text-indent: 0.25em; width: 2.0833333333333333333333333333333%; } @@ -145,7 +145,7 @@ text-align: left; contain: strict; flex-shrink: 0; - border-radius: .12em; + border-radius: 0.12em; color: inherit; } @@ -255,7 +255,7 @@ } .guideProgramName { - padding: 0 .7em 0; + padding: 0 0.7em 0; overflow: hidden; text-overflow: ellipsis; align-items: center; @@ -283,11 +283,11 @@ .guideProgramSecondaryInfo { display: flex; align-items: center; - margin-top: .1em; + margin-top: 0.1em; } .programIcon { - margin-left: .5em; + margin-left: 0.5em; height: 1em; width: 1em; font-size: 1.6em; @@ -298,16 +298,16 @@ .guide-programTextIcon { font-weight: bold; - font-size: .9em; - padding: .16em .3em; - border-radius: .25em; - margin-right: .35em; + font-size: 0.9em; + padding: 0.16em 0.3em; + border-radius: 0.25em; + margin-right: 0.35em; width: auto; height: auto; } .guide-programTextIcon-tv { - font-size: .74em; + font-size: 0.74em; } .guideChannelNumber { @@ -372,7 +372,7 @@ .seriesTimerIcon-inactive { color: inherit !important; - opacity: .7; + opacity: 0.7; } .guideOptions { @@ -405,8 +405,8 @@ } .guide-date-tab-button { - padding: .3em .7em !important; - margin: 0 .3em !important; + padding: 0.3em 0.7em !important; + margin: 0 0.3em !important; font-weight: normal; } @@ -415,6 +415,6 @@ } .guide-date-tab-button.show-focus:focus { - border-radius: .15em !important; + border-radius: 0.15em !important; transform: none !important; } diff --git a/src/components/homesections/homesections.css b/src/components/homesections/homesections.css index 8751308eb0..58eabb091a 100644 --- a/src/components/homesections/homesections.css +++ b/src/components/homesections/homesections.css @@ -1,6 +1,6 @@ .homeLibraryButton { min-width: 18%; - margin: .5em !important; + margin: 0.5em !important; } @media all and (max-width: 50em) { diff --git a/src/components/htmlvideoplayer/style.css b/src/components/htmlvideoplayer/style.css index 32c090eeae..5ecf4af66a 100644 --- a/src/components/htmlvideoplayer/style.css +++ b/src/components/htmlvideoplayer/style.css @@ -72,7 +72,7 @@ video::-webkit-media-controls { @keyframes htmlvideoplayer-zoomin { from { transform: scale3d(0.2, 0.2, 0.2); - opacity: .6; + opacity: 0.6; } to { diff --git a/src/components/indicators/indicators.css b/src/components/indicators/indicators.css index 3bbd7edf9e..28132aab7f 100644 --- a/src/components/indicators/indicators.css +++ b/src/components/indicators/indicators.css @@ -1,8 +1,8 @@ .itemProgressBar { background: #333; - background: rgba(51, 51, 51, .8); + background: rgba(51, 51, 51, 0.8); position: relative; - height: .28em; + height: 0.28em; } .itemProgressBarForeground { @@ -32,7 +32,7 @@ } .indicator + .indicator { - margin-left: .25em; + margin-left: 0.25em; } .indicatorIcon { @@ -87,10 +87,10 @@ .missingIndicator, .unairedIndicator { background: #c33; - padding: .25em .5em; + padding: 0.25em 0.5em; border-radius: 100em; color: #fff; font-size: 84%; font-weight: 500; - margin: 0 .25em; + margin: 0 0.25em; } diff --git a/src/components/lazyloader/lazyedgehack.css b/src/components/lazyloader/lazyedgehack.css index e0fea48c40..e358872f16 100644 --- a/src/components/lazyloader/lazyedgehack.css +++ b/src/components/lazyloader/lazyedgehack.css @@ -1,5 +1,5 @@ .lazy { /* In edge, intersection observer will not fire on 0px sized elements */ - min-width: .1em; - min-height: .1em; + min-width: 0.1em; + min-height: 0.1em; } diff --git a/src/components/listview/listview.css b/src/components/listview/listview.css index 347d983f96..69420d011d 100644 --- a/src/components/listview/listview.css +++ b/src/components/listview/listview.css @@ -10,7 +10,7 @@ display: block; align-items: center; text-align: left; - padding: .25em .25em .25em .5em; + padding: 0.25em 0.25em 0.25em 0.5em; cursor: pointer; overflow: hidden; } @@ -71,13 +71,13 @@ } .listViewDragHandle { - margin-left: -.25em !important; + margin-left: -0.25em !important; touch-action: none; } .listItemBody { flex-grow: 1; - padding: .85em .75em; + padding: 0.85em 0.75em; overflow: hidden; text-overflow: ellipsis; flex-direction: column; @@ -91,7 +91,7 @@ } .layout-tv .listItemBody { - padding: .35em .75em; + padding: 0.35em 0.75em; } .listItemBody-noleftpadding { @@ -100,7 +100,7 @@ .listItemBodyText { margin: 0; - padding: .1em 0; + padding: 0.1em 0; overflow: hidden; text-overflow: ellipsis; } @@ -126,7 +126,7 @@ width: 19.5vw; height: 13vw; background-position: center center; - margin-right: .75em; + margin-right: 0.75em; } .listItemImageButton { @@ -166,13 +166,13 @@ } .listItemBody { - padding-left: .75em; + padding-left: 0.75em; } } @media all and (max-width: 50em) { .listItemBody { - padding-right: .5em; + padding-right: 0.5em; } } @@ -185,15 +185,15 @@ width: 1em !important; height: 1em !important; font-size: 143%; - padding: 0 .25em 0 0; + padding: 0 0.25em 0 0; } .listItemIcon:not(.listItemIcon-transparent) { background-color: #00a4dc; color: #fff; - padding: .5em; + padding: 0.5em; border-radius: 100em; - margin: 0 .2em 0 .4em; + margin: 0 0.2em 0 0.4em; } .listItemProgressBar { @@ -204,7 +204,7 @@ } .listItem:focus { - border-radius: .2em; + border-radius: 0.2em; } .listItem:focus .secondary { @@ -212,7 +212,7 @@ } .listItem-focusscale { - transition: transform .2s ease-out; + transition: transform 0.2s ease-out; } .listItem-focusscale:focus { @@ -220,7 +220,7 @@ } .paperList { - margin: .5em auto; + margin: 0.5em auto; } .paperList-clear { @@ -239,8 +239,8 @@ } .listItemIndicators { - right: .324em; - top: .324em; + right: 0.324em; + top: 0.324em; position: absolute; display: flex; align-items: center; @@ -249,7 +249,7 @@ .listItem-bottomoverview { font-size: 88%; margin-bottom: 1em; - margin-top: .2em; + margin-top: 0.2em; } @media all and (max-width: 50em) { diff --git a/src/components/loading/loading.css b/src/components/loading/loading.css index 4025bbd0c1..d612f64e7f 100644 --- a/src/components/loading/loading.css +++ b/src/components/loading/loading.css @@ -348,7 +348,7 @@ .mdl-spinner__circle { box-sizing: border-box; height: 100%; - border-width: .21em; + border-width: 0.21em; border-style: solid; border-color: inherit; border-bottom-color: transparent !important; diff --git a/src/components/mediainfo/mediainfo.css b/src/components/mediainfo/mediainfo.css index 2203ba6676..b957c3a5b2 100644 --- a/src/components/mediainfo/mediainfo.css +++ b/src/components/mediainfo/mediainfo.css @@ -4,13 +4,13 @@ } .mediaInfoText { - padding: .22em .5em; - border-radius: .25em; + padding: 0.22em 0.5em; + border-radius: 0.25em; font-size: 92%; display: flex; align-items: center; white-space: nowrap; - margin: 0 .5em 0 0; + margin: 0 0.5em 0 0; } .mediaInfoText-upper { @@ -21,7 +21,7 @@ width: auto; height: auto; font-size: 1.6em; - margin-right: .6em; + margin-right: 0.6em; } .mediaInfoItem:last-child { @@ -63,8 +63,8 @@ .mediaInfoProgramAttribute { text-transform: uppercase; - padding: .16em .6em; - border-radius: .15em; + padding: 0.16em 0.6em; + border-radius: 0.15em; font-size: 80%; } @@ -73,13 +73,13 @@ } .mediaInfoOfficialRating { - border: .09em solid currentColor; - padding: 0 .6em; + border: 0.09em solid currentColor; + padding: 0 0.6em; height: 1.3em; line-height: 1.8em; display: flex; align-items: center; justify-content: center; - border-radius: .1em; + border-radius: 0.1em; font-size: 96%; } diff --git a/src/components/multiselect/multiselect.css b/src/components/multiselect/multiselect.css index 9c2a58cd20..e9c66c57a4 100644 --- a/src/components/multiselect/multiselect.css +++ b/src/components/multiselect/multiselect.css @@ -4,7 +4,7 @@ left: 0; right: 0; top: 0; - background-color: rgba(0, 0, 0, .3); + background-color: rgba(0, 0, 0, 0.3); z-index: 99998; } @@ -13,7 +13,7 @@ top: 0; left: 0; right: 0; - padding: 1em .5em; + padding: 1em 0.5em; display: flex; align-items: center; z-index: 99999; diff --git a/src/components/navdrawer/navdrawer.css b/src/components/navdrawer/navdrawer.css index b592c61397..b19731d778 100644 --- a/src/components/navdrawer/navdrawer.css +++ b/src/components/navdrawer/navdrawer.css @@ -44,7 +44,7 @@ -o-transition: opacity ease-in-out .38s, visibility ease-in-out .38s; transition: opacity ease-in-out .38s, visibility ease-in-out .38s; will-change: opacity; - background-color: rgba(0, 0, 0, .3); + background-color: rgba(0, 0, 0, 0.3); } .tmla-mask.backdrop { diff --git a/src/components/nowplayingbar/nowplayingbar.css b/src/components/nowplayingbar/nowplayingbar.css index 965de35c64..0339452da3 100644 --- a/src/components/nowplayingbar/nowplayingbar.css +++ b/src/components/nowplayingbar/nowplayingbar.css @@ -74,7 +74,7 @@ .nowPlayingBarPositionContainer { position: absolute !important; left: 0; - top: -.56em; + top: -0.56em; right: 0; z-index: 1; } diff --git a/src/components/playback/iconosd.css b/src/components/playback/iconosd.css index f905767cfd..8f197a179e 100644 --- a/src/components/playback/iconosd.css +++ b/src/components/playback/iconosd.css @@ -4,11 +4,11 @@ right: 3%; z-index: 100000; background: #222; - background: rgba(0, 0, 0, .8); + background: rgba(0, 0, 0, 0.8); padding: 1em; color: #fff; backdrop-filter: blur(5px); - border-radius: .25em; + border-radius: 0.25em; transition: opacity 200ms ease-out; } @@ -19,20 +19,20 @@ .iconOsdIcon { font-size: 320%; display: block; - margin: .25em .7em; + margin: 0.25em 0.7em; } .iconOsdProgressOuter { - margin: 1.5em .25em 1em; - height: .35em; + margin: 1.5em 0.25em 1em; + height: 0.35em; background: #222; - border-radius: .25em; + border-radius: 0.25em; } .iconOsdProgressInner { background: #00a4dc; height: 100%; - border-radius: .25em; + border-radius: 0.25em; } .brightnessOsdProgressInner { diff --git a/src/components/playerstats/playerstats.css b/src/components/playerstats/playerstats.css index 5ae6f154b5..dfdf75a2e0 100644 --- a/src/components/playerstats/playerstats.css +++ b/src/components/playerstats/playerstats.css @@ -1,6 +1,6 @@ .playerStats { background: rgba(28, 28, 28, 0.8); - border-radius: .3em; + border-radius: 0.3em; color: #fff; left: 1.5em; position: absolute; @@ -22,8 +22,8 @@ .playerStats-closeButton { position: absolute; - top: .25em; - right: .25em; + top: 0.25em; + right: 0.25em; color: #ccc; z-index: 1; } @@ -43,7 +43,7 @@ .playerStats-stat-label { font-weight: 500; - margin: 0 .5em 0 0; + margin: 0 0.5em 0 0; } .playerStats-stat-header { diff --git a/src/components/recordingcreator/recordingcreator.css b/src/components/recordingcreator/recordingcreator.css index dc1ba9b31a..031d04b860 100644 --- a/src/components/recordingcreator/recordingcreator.css +++ b/src/components/recordingcreator/recordingcreator.css @@ -9,7 +9,7 @@ } .recordingDialog-itemName { - margin-top: .7em; + margin-top: 0.7em; } .recordingDetailsContainer { diff --git a/src/components/recordingcreator/recordingfields.css b/src/components/recordingcreator/recordingfields.css index f07a22f1af..db0c7e0692 100644 --- a/src/components/recordingcreator/recordingfields.css +++ b/src/components/recordingcreator/recordingfields.css @@ -8,5 +8,5 @@ } .recordSeriesContainer { - margin-bottom: .8em; + margin-bottom: 0.8em; } diff --git a/src/components/remotecontrol/remotecontrol.css b/src/components/remotecontrol/remotecontrol.css index fb6e6f915b..3ecb55d169 100644 --- a/src/components/remotecontrol/remotecontrol.css +++ b/src/components/remotecontrol/remotecontrol.css @@ -33,11 +33,11 @@ } .nowPlayingPageTitle { - margin: 0 0 .5em .5em; + margin: 0 0 0.5em 0.5em; } .nowPlayingPositionSliderContainer { - margin: .7em 0 .7em 1em; + margin: 0.7em 0 0.7em 1em; } .nowPlayingInfoButtons { @@ -60,7 +60,7 @@ .nowPlayingPageImageContainer { width: 20%; - margin-right: .25em; + margin-right: 0.25em; position: relative; -webkit-flex-shrink: 0; flex-shrink: 0; @@ -93,7 +93,7 @@ width: 100%; -webkit-box-shadow: 0 0 1.9vh #000; box-shadow: 0 0 1.9vh #000; - border: .1em solid #222; + border: 0.1em solid #222; user-drag: none; user-select: none; -moz-user-select: none; @@ -115,11 +115,11 @@ .nowPlayingPageTitle { text-align: center; - margin: .5em 0 .75em; + margin: 0.5em 0 0.75em; } .nowPlayingPositionSliderContainer { - margin: .7em 1em; + margin: 0.7em 1em; } .nowPlayingInfoButtons { @@ -185,7 +185,7 @@ @media all and (min-width: 80em) { .nowPlayingPageImageContainer { - margin-right: .75em; + margin-right: 0.75em; } } diff --git a/src/components/search/searchfields.css b/src/components/search/searchfields.css index 01981ed998..08d8515c86 100644 --- a/src/components/search/searchfields.css +++ b/src/components/search/searchfields.css @@ -4,8 +4,8 @@ } .searchfields-icon { - margin-bottom: .1em; - margin-right: .25em; + margin-bottom: 0.1em; + margin-right: 0.25em; font-size: 2em; align-self: flex-end; } diff --git a/src/components/slideshow/style.css b/src/components/slideshow/style.css index 5d0bd40047..046aff2bd8 100644 --- a/src/components/slideshow/style.css +++ b/src/components/slideshow/style.css @@ -27,8 +27,8 @@ .slideshowImageText { position: fixed; - bottom: .25em; - right: .5em; + bottom: 0.25em; + right: 0.5em; color: #fff; z-index: 1002; font-weight: normal; @@ -52,26 +52,26 @@ .slideshowButtonIcon { color: #fff; - opacity: .7; + opacity: 0.7; } .btnSlideshowPrevious { - left: .5vh; + left: 0.5vh; top: 45vh; z-index: 1002; position: absolute; } .btnSlideshowNext { - right: .5vh; + right: 0.5vh; top: 45vh; z-index: 1002; position: absolute; } .topActionButtons { - right: .5vh; - top: .5vh; + right: 0.5vh; + top: 0.5vh; z-index: 1002; position: absolute; } @@ -81,9 +81,9 @@ left: 0; bottom: 0; right: 0; - background-color: rgba(0, 0, 0, .7); + background-color: rgba(0, 0, 0, 0.7); color: #fff; - padding: .5%; + padding: 0.5%; display: flex; flex-direction: row; align-items: center; @@ -95,9 +95,9 @@ left: 0; top: 0; right: 0; - background-color: rgba(0, 0, 0, .7); + background-color: rgba(0, 0, 0, 0.7); color: #fff; - padding: .5%; + padding: 0.5%; display: flex; flex-direction: row; align-items: center; @@ -121,14 +121,14 @@ .slideTextInner { margin: 0 auto; max-width: 60%; - background: rgba(0, 0, 0, .8); + background: rgba(0, 0, 0, 0.8); display: inline-block; - padding: .5em 1em; - border-radius: .25em; + padding: 0.5em 1em; + border-radius: 0.25em; } .slideTitle { - margin: 0 0 .25em; + margin: 0 0 0.25em; } .slideSubtitle { diff --git a/src/components/subtitlesync/subtitlesync.css b/src/components/subtitlesync/subtitlesync.css index 321145be5e..2ff8a3e905 100644 --- a/src/components/subtitlesync/subtitlesync.css +++ b/src/components/subtitlesync/subtitlesync.css @@ -4,7 +4,7 @@ margin-right: 30%; height: 4.2em; background: rgba(28, 28, 28, 0.8); - border-radius: .3em; + border-radius: 0.3em; color: #fff; position: absolute; } @@ -43,6 +43,6 @@ -webkit-box-flex: 1; -webkit-flex-grow: 1; flex-grow: 1; - border-radius: .3em; + border-radius: 0.3em; z-index: 1; } diff --git a/src/components/toast/toast.css b/src/components/toast/toast.css index 09d89abca5..28d6cb52fc 100644 --- a/src/components/toast/toast.css +++ b/src/components/toast/toast.css @@ -3,9 +3,9 @@ min-width: 20em; box-sizing: border-box; box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37); - border-radius: .15em; + border-radius: 0.15em; cursor: default; - transition: transform .3s ease-out; + transition: transform 0.3s ease-out; min-height: initial; padding: 1em 1.5em; bottom: 1em; diff --git a/src/components/upnextdialog/upnextdialog.css b/src/components/upnextdialog/upnextdialog.css index 336a90d58e..7c9c13207f 100644 --- a/src/components/upnextdialog/upnextdialog.css +++ b/src/components/upnextdialog/upnextdialog.css @@ -28,7 +28,7 @@ position: relative; margin-right: 1em; flex-shrink: 0; - margin-bottom: .5em; + margin-bottom: 0.5em; } .upNextDialog-button { diff --git a/src/elements/emby-button/emby-button.css b/src/elements/emby-button/emby-button.css index e58501c8b3..eedf616680 100644 --- a/src/elements/emby-button/emby-button.css +++ b/src/elements/emby-button/emby-button.css @@ -45,7 +45,7 @@ } .button-flat:hover { - opacity: .5; + opacity: 0.5; } .button-link { @@ -82,7 +82,7 @@ display: block; align-items: center; justify-content: center; - margin: .25em 0; + margin: 0.25em 0; width: 100%; } @@ -91,7 +91,7 @@ display: inline-flex; align-items: center; box-sizing: border-box; - margin: 0 .29em; + margin: 0 0.29em; background: transparent; text-align: center; font-size: inherit; @@ -107,7 +107,7 @@ min-height: initial; width: auto; height: auto; - padding: .556em; + padding: 0.556em; vertical-align: middle; border: 0; /* These are getting an outline in opera tv browsers, which run chrome 30 */ diff --git a/src/elements/emby-checkbox/emby-checkbox.css b/src/elements/emby-checkbox/emby-checkbox.css index 254f092ac9..b7637c6df0 100644 --- a/src/elements/emby-checkbox/emby-checkbox.css +++ b/src/elements/emby-checkbox/emby-checkbox.css @@ -55,7 +55,7 @@ margin: 0; overflow: hidden; border: 2px solid currentcolor; - border-radius: .14em; + border-radius: 0.14em; z-index: 2; display: flex; align-items: center; @@ -102,7 +102,7 @@ .checkboxList-verticalwrap > .emby-checkbox-label { display: inline-flex; - margin: .3em 0 .3em 0; + margin: 0.3em 0 0.3em 0; width: 12em; } @@ -111,7 +111,7 @@ } .checkboxListLabel { - margin-bottom: .25em; + margin-bottom: 0.25em; } @keyframes repaintChrome { diff --git a/src/elements/emby-collapse/emby-collapse.css b/src/elements/emby-collapse/emby-collapse.css index 50674313a4..dd22c20b5b 100644 --- a/src/elements/emby-collapse/emby-collapse.css +++ b/src/elements/emby-collapse/emby-collapse.css @@ -1,5 +1,5 @@ .emby-collapse { - margin: .5em 0; + margin: 0.5em 0; } .collapseContent { @@ -18,9 +18,9 @@ text-transform: none; width: 100%; text-align: left; - border-width: 0 0 .1em 0; + border-width: 0 0 0.1em 0; border-style: solid; - padding-left: .1em; + padding-left: 0.1em; background: transparent; box-shadow: none; } @@ -29,7 +29,7 @@ transform-origin: 50% 50%; transition: transform 180ms ease-out; position: absolute; - right: .5em; + right: 0.5em; font-size: 1.5em; } diff --git a/src/elements/emby-input/emby-input.css b/src/elements/emby-input/emby-input.css index d888eb570d..273638e599 100644 --- a/src/elements/emby-input/emby-input.css +++ b/src/elements/emby-input/emby-input.css @@ -27,11 +27,11 @@ .inputLabel { display: inline-block; - margin-bottom: .25em; + margin-bottom: 0.25em; } .emby-input + .fieldDescription { - margin-top: .25em; + margin-top: 0.25em; } .emby-input-iconbutton { diff --git a/src/elements/emby-progressring/emby-progressring.css b/src/elements/emby-progressring/emby-progressring.css index 7bef7c35f7..014db3aedf 100644 --- a/src/elements/emby-progressring/emby-progressring.css +++ b/src/elements/emby-progressring/emby-progressring.css @@ -11,9 +11,9 @@ width: 100%; height: 100%; border-radius: 50%; - border: .25em solid rgba(0, 0, 0, 1); + border: 0.25em solid rgba(0, 0, 0, 1); box-sizing: border-box; - background: rgba(0, 0, 0, .9); + background: rgba(0, 0, 0, 0.9); display: flex; align-items: center; justify-content: center; @@ -51,7 +51,7 @@ width: 200%; height: 200%; border-radius: 50%; - border-width: .25em; + border-width: 0.25em; border-style: solid; box-sizing: border-box; } diff --git a/src/elements/emby-radio/emby-radio.css b/src/elements/emby-radio/emby-radio.css index a41acee5ef..bda1083d38 100644 --- a/src/elements/emby-radio/emby-radio.css +++ b/src/elements/emby-radio/emby-radio.css @@ -10,8 +10,8 @@ .radio-label-block { display: flex; align-items: center; - margin-top: .5em; - margin-bottom: .5em; + margin-top: 0.5em; + margin-bottom: 0.5em; } .mdl-radio__button { diff --git a/src/elements/emby-select/emby-select.css b/src/elements/emby-select/emby-select.css index 391f131a63..b99f9879bf 100644 --- a/src/elements/emby-select/emby-select.css +++ b/src/elements/emby-select/emby-select.css @@ -30,7 +30,7 @@ } .selectContainer-inline > .emby-select { - padding: .3em 1.9em .3em .5em; + padding: 0.3em 1.9em 0.3em 0.5em; font-size: inherit; } @@ -51,7 +51,7 @@ } .emby-select + .fieldDescription { - margin-top: .25em; + margin-top: 0.25em; } .selectContainer { @@ -67,32 +67,32 @@ .selectLabel { display: block; - margin-bottom: .25em; + margin-bottom: 0.25em; } .selectContainer-inline > .selectLabel { margin-bottom: 0; - margin-right: .5em; + margin-right: 0.5em; flex-shrink: 0; } .emby-select-withcolor { -webkit-appearance: none; appearance: none; - border-radius: .2em; + border-radius: 0.2em; } .selectArrowContainer { position: absolute; - right: .3em; - top: .2em; + right: 0.3em; + top: 0.2em; color: inherit; pointer-events: none; } .selectContainer-inline > .selectArrowContainer { top: initial; - bottom: .24em; + bottom: 0.24em; font-size: 90%; } @@ -101,7 +101,7 @@ } .selectArrow { - margin-top: .35em; + margin-top: 0.35em; font-size: 1.7em; } diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index 1b94a44a9b..111fd23439 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -56,7 +56,7 @@ .mdl-slider::-ms-track { background: none; color: transparent; - height: .2em; + height: 0.2em; width: 100%; border: none; } @@ -116,13 +116,13 @@ border-radius: 50%; background: #00a4dc; border: none; - transform: scale(.9, .9); + transform: scale(0.9, 0.9); transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1), border 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1), background 0.28s cubic-bezier(0.4, 0, 0.2, 1); } .mdl-slider-hoverthumb::-ms-thumb { - margin-left: -.4em; - transform: scale(.5, .5); + margin-left: -0.4em; + transform: scale(0.5, 0.5); } .mdl-slider:hover::-ms-thumb { @@ -160,15 +160,15 @@ .mdl-slider-background-flex-container { width: 100%; box-sizing: border-box; - margin-top: -.05em; + margin-top: -0.05em; top: 50%; position: absolute; } .mdl-slider-background-flex { background: #333; - height: .2em; - margin-top: -.08em; + height: 0.2em; + margin-top: -0.08em; width: 100%; top: 50%; left: 0; @@ -207,7 +207,7 @@ .mdl-slider-background-upper { /* transition: left 0.18s cubic-bezier(0.4, 0, 0.2, 1), width 0.18s cubic-bezier(0.4, 0, 0.2, 1); */ background: #666; - background: rgba(255, 255, 255, .4); + background: rgba(255, 255, 255, 0.4); position: absolute; left: 0; width: 0; @@ -229,5 +229,5 @@ .sliderBubbleText { margin: 0; - padding: .5em .75em; + padding: 0.5em 0.75em; } diff --git a/src/elements/emby-textarea/emby-textarea.css b/src/elements/emby-textarea/emby-textarea.css index 6ac8262236..54ca33f6b7 100644 --- a/src/elements/emby-textarea/emby-textarea.css +++ b/src/elements/emby-textarea/emby-textarea.css @@ -23,10 +23,10 @@ .textareaLabel { display: inline-block; - transition: all .2s ease-out; - margin-bottom: .25em; + transition: all 0.2s ease-out; + margin-bottom: 0.25em; } .emby-textarea + .fieldDescription { - margin-top: .25em; + margin-top: 0.25em; } diff --git a/src/elements/emby-toggle/emby-toggle.css b/src/elements/emby-toggle/emby-toggle.css index c893736c2f..3b5c5a5f64 100644 --- a/src/elements/emby-toggle/emby-toggle.css +++ b/src/elements/emby-toggle/emby-toggle.css @@ -60,7 +60,7 @@ background: #999; position: absolute; left: 0; - top: -.25em; + top: -0.25em; height: 1.44em; width: 1.44em; border-radius: 50%; @@ -77,7 +77,7 @@ .mdl-switch__input:checked + .mdl-switch__label + .mdl-switch__trackContainer > .mdl-switch__thumb { background: #00a4dc; left: 1.466em; - box-shadow: 0 3px 0.28em 0 rgba(0, 0, 0, 0.14), 0 3px 3px -2px rgba(0, 0, 0, 0.2), 0 1px .56em 0 rgba(0, 0, 0, 0.12); + box-shadow: 0 3px 0.28em 0 rgba(0, 0, 0, 0.14), 0 3px 3px -2px rgba(0, 0, 0, 0.2), 0 1px 0.56em 0 rgba(0, 0, 0, 0.12); } .mdl-switch__input[disabled] + .mdl-switch__label + .mdl-switch__trackContainer > .mdl-switch__thumb { @@ -93,14 +93,14 @@ transform: translate(-50%, -50%); display: inline-block; box-sizing: border-box; - width: .6em; - height: .6em; + width: 0.6em; + height: 0.6em; border-radius: 50%; background-color: transparent; } .mdl-switch__input:focus + .mdl-switch__label + .mdl-switch__trackContainer .mdl-switch__focus-helper { - box-shadow: 0 0 0 1.39em rgba(0, 0, 0, .05); + box-shadow: 0 0 0 1.39em rgba(0, 0, 0, 0.05); } .mdl-switch__input:checked:focus + .mdl-switch__label + .mdl-switch__trackContainer .mdl-switch__focus-helper { @@ -113,7 +113,7 @@ margin: 0; display: inline-flex; align-items: center; - margin-left: .7em; + margin-left: 0.7em; } .mdl-switch__input[disabled] .mdl-switch__label { diff --git a/src/themes/appletv/theme.css b/src/themes/appletv/theme.css index 4bd2f13261..1b60a45c24 100644 --- a/src/themes/appletv/theme.css +++ b/src/themes/appletv/theme.css @@ -1,7 +1,7 @@ .skinHeader, html { color: #222; - color: rgba(0, 0, 0, .87); + color: rgba(0, 0, 0, 0.87); } .wizardStartForm, @@ -12,7 +12,7 @@ html { .emby-collapsible-button { border-color: #ccc; - border-color: rgba(0, 0, 0, .158); + border-color: rgba(0, 0, 0, 0.158); } .collapseContent { @@ -21,7 +21,7 @@ html { .formDialogHeader:not(.formDialogHeader-clear), .skinHeader-withBackground { - color: rgba(0, 0, 0, .7); + color: rgba(0, 0, 0, 0.7); background: #303030; background: -webkit-gradient(linear, left top, right top, from(#BCBCBC), color-stop(#A7B4B7), color-stop(#BEB5A5), color-stop(#ADBEC2), to(#B9C7CB)); background: -webkit-linear-gradient(left, #BCBCBC, #A7B4B7, #BEB5A5, #ADBEC2, #B9C7CB); @@ -62,7 +62,7 @@ html { .paper-icon-button-light:hover:not(:disabled) { color: #00a4dc; - background-color: rgba(0, 164, 220, .2); + background-color: rgba(0, 164, 220, 0.2); } .paper-icon-button-light.show-focus:focus { @@ -72,13 +72,13 @@ html { .fab, .raised { background: #fff; - background: rgba(0, 0, 0, .14); + background: rgba(0, 0, 0, 0.14); color: inherit; } .fab:focus, .raised:focus { - background: rgba(0, 0, 0, .24); + background: rgba(0, 0, 0, 0.24); } .button-submit { @@ -92,7 +92,7 @@ html { .button-delete { background: rgb(247, 0, 0); - color: rgba(255, 255, 255, .87); + color: rgba(255, 255, 255, 0.87); } .checkboxLabel { @@ -105,7 +105,7 @@ html { .paperListLabel, .textareaLabelUnfocused { color: #555; - color: rgba(0, 0, 0, .7); + color: rgba(0, 0, 0, 0.7); } .button-link, @@ -122,7 +122,7 @@ html { .paperList, .visualCardBox { background-color: #fff; - background-color: rgba(0, 0, 0, .1); + background-color: rgba(0, 0, 0, 0.1); } .defaultCardBackground1 { @@ -147,7 +147,7 @@ html { .formDialogFooter:not(.formDialogFooter-clear) { border-top: 1px solid #ddd; - border-top: 1px solid rgba(0, 0, 0, .08); + border-top: 1px solid rgba(0, 0, 0, 0.08); } .cardText-secondary, @@ -158,17 +158,17 @@ html { .programSecondaryTitle, .secondaryText { color: #888; - color: rgba(0, 0, 0, .5); + color: rgba(0, 0, 0, 0.5); } .actionsheetDivider { background: #ddd; - background: rgba(0, 0, 0, .14); + background: rgba(0, 0, 0, 0.14); } .cardFooter-vibrant .cardText-secondary { color: inherit; - opacity: .5; + opacity: 0.5; } .formDialogHeader a, @@ -182,12 +182,12 @@ html { .toast { background: #303030; - color: rgba(255, 255, 255, .87); + color: rgba(255, 255, 255, 0.87); } .appfooter, .formDialogFooter:not(.formDialogFooter-clear) { - color: rgba(0, 0, 0, .7); + color: rgba(0, 0, 0, 0.7); background: #303030; background: -webkit-gradient(linear, left top, right top, from(#BCBCBC), color-stop(#A7B4B7), color-stop(#BEB5A5), color-stop(#ADBEC2), to(#B9C7CB)); background: -webkit-linear-gradient(left, #BCBCBC, #A7B4B7, #BEB5A5, #ADBEC2, #B9C7CB); @@ -214,7 +214,7 @@ html { .alphaPickerButton { color: #555; - color: rgba(0, 0, 0, .7); + color: rgba(0, 0, 0, 0.7); background-color: transparent; } @@ -226,15 +226,15 @@ html { .detailTableBodyRow-shaded:nth-child(even) { background: #f8f8f8; - background: rgba(0, 0, 0, .1); + background: rgba(0, 0, 0, 0.1); } .listItem-border { - border-color: rgba(0, 0, 0, .1) !important; + border-color: rgba(0, 0, 0, 0.1) !important; } .listItem:focus { - background: rgba(0, 0, 0, .2); + background: rgba(0, 0, 0, 0.2); } .progressring-spiner { @@ -267,8 +267,8 @@ html { .emby-select-withcolor { color: inherit; - background: rgba(255, 255, 255, .9); - border: .07em solid rgba(0, 0, 0, .158); + background: rgba(255, 255, 255, 0.9); + border: 0.07em solid rgba(0, 0, 0, 0.158); } .emby-checkbox:checked+span+.checkboxOutline, @@ -351,7 +351,7 @@ html { .guide-channelHeaderCell, .programCell { border-color: #555; - border-color: rgba(0, 0, 0, .1); + border-color: rgba(0, 0, 0, 0.1); } .programCell-sports { @@ -371,7 +371,7 @@ html { } .programCell-active { - background: rgba(0, 0, 0, .1) !important; + background: rgba(0, 0, 0, 0.1) !important; } .guide-channelHeaderCell:focus, @@ -391,7 +391,7 @@ html { .guide-date-tab-button { color: #555; - color: rgba(0, 0, 0, .54); + color: rgba(0, 0, 0, 0.54); } .guide-date-tab-button.emby-tab-button-active, diff --git a/src/themes/blueradiance/theme.css b/src/themes/blueradiance/theme.css index 140adccfb9..1a4df079d5 100644 --- a/src/themes/blueradiance/theme.css +++ b/src/themes/blueradiance/theme.css @@ -1,7 +1,7 @@ .skinHeader, html { color: #ddd; - color: rgba(255, 255, 255, .8); + color: rgba(255, 255, 255, 0.8); } .wizardStartForm, @@ -12,7 +12,7 @@ html { .emby-collapsible-button { border-color: #383838; - border-color: rgba(255, 255, 255, .135); + border-color: rgba(255, 255, 255, 0.135); } .skinHeader-withBackground { @@ -49,7 +49,7 @@ html { } .backgroundContainer.withBackdrop { - opacity: .86; + opacity: 0.86; } @media (orientation: portrait) { @@ -60,7 +60,7 @@ html { .paper-icon-button-light:hover:not(:disabled) { color: #00a4dc; - background-color: rgba(0, 164, 220, .2); + background-color: rgba(0, 164, 220, 0.2); } .paper-icon-button-light.show-focus:focus { @@ -69,13 +69,13 @@ html { .fab, .raised { - background: rgba(0, 0, 0, .5); - color: rgba(255, 255, 255, .87); + background: rgba(0, 0, 0, 0.5); + color: rgba(255, 255, 255, 0.87); } .fab:focus, .raised:focus { - background: rgba(0, 0, 0, .7); + background: rgba(0, 0, 0, 0.7); } .button-submit { @@ -90,7 +90,7 @@ html { .button-delete { background: rgb(247, 0, 0); - color: rgba(255, 255, 255, .87); + color: rgba(255, 255, 255, 0.87); } .checkboxLabel { @@ -103,7 +103,7 @@ html { .paperListLabel, .textareaLabelUnfocused { color: #bbb; - color: rgba(255, 255, 255, .7); + color: rgba(255, 255, 255, 0.7); } .inputLabelFocused, @@ -121,7 +121,7 @@ html { .formDialogHeader:not(.formDialogHeader-clear), .paperList, .visualCardBox { - background-color: rgba(0, 0, 0, .5); + background-color: rgba(0, 0, 0, 0.5); } .defaultCardBackground1 { @@ -152,38 +152,38 @@ html { .programSecondaryTitle, .secondaryText { color: #999; - color: rgba(255, 255, 255, .5); + color: rgba(255, 255, 255, 0.5); } .actionsheetDivider { background: #444; - background: rgba(255, 255, 255, .14); + background: rgba(255, 255, 255, 0.14); } .cardFooter-vibrant .cardText-secondary { color: inherit; - opacity: .5; + opacity: 0.5; } .actionSheetMenuItem:hover { - background-color: rgba(0, 0, 0, .5); + background-color: rgba(0, 0, 0, 0.5); } .toast { background: #303030; color: #fff; - color: rgba(255, 255, 255, .87); + color: rgba(255, 255, 255, 0.87); } .appfooter { background: #033664; color: #ccc; - color: rgba(255, 255, 255, .78); + color: rgba(255, 255, 255, 0.78); } @supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)) { .appfooter-blurred { - background: rgba(1, 2, 50, .7); + background: rgba(1, 2, 50, 0.7); backdrop-filter: blur(20px); } } @@ -203,7 +203,7 @@ html { .alphaPickerButton { color: #999; - color: rgba(255, 255, 255, .5); + color: rgba(255, 255, 255, 0.5); background-color: transparent; } @@ -218,15 +218,15 @@ html { .detailTableBodyRow-shaded:nth-child(even) { background: #1c1c1c; - background: rgba(30, 30, 30, .9); + background: rgba(30, 30, 30, 0.9); } .listItem-border { - border-color: rgba(255, 255, 255, .1) !important; + border-color: rgba(255, 255, 255, 0.1) !important; } .listItem:focus { - background: rgba(0, 0, 0, .3); + background: rgba(0, 0, 0, 0.3); } .progressring-spiner { @@ -240,7 +240,7 @@ html { .mediaInfoText { color: #ddd; - background: rgba(170, 170, 190, .2); + background: rgba(170, 170, 190, 0.2); } .mediaInfoTimerIcon, @@ -264,8 +264,8 @@ html { .emby-select-withcolor { color: inherit; - background: rgba(0, 0, 0, .5); - border: .07em solid transparent; + background: rgba(0, 0, 0, 0.5); + border: 0.07em solid transparent; } .emby-select-withcolor>option { @@ -314,7 +314,7 @@ html { } .mainDrawer { - background-color: rgba(0, 0, 0, .5); + background-color: rgba(0, 0, 0, 0.5); } .drawer-open { @@ -354,7 +354,7 @@ html { .channelPrograms, .guide-channelHeaderCell, .programCell { - border-color: rgba(255, 255, 255, .05); + border-color: rgba(255, 255, 255, 0.05); } .programCell-sports { @@ -374,7 +374,7 @@ html { } .programCell-active { - background: rgba(0, 0, 0, .4) !important; + background: rgba(0, 0, 0, 0.4) !important; } .guide-channelHeaderCell:focus, @@ -394,7 +394,7 @@ html { .guide-date-tab-button { color: #555; - color: rgba(255, 255, 255, .3); + color: rgba(255, 255, 255, 0.3); } .guide-date-tab-button.emby-tab-button-active, @@ -459,7 +459,7 @@ html { } .timeslotHeaders-desktop::-webkit-scrollbar { - height: .7em; + height: 0.7em; } .metadataSidebarIcon { diff --git a/src/themes/dark/theme.css b/src/themes/dark/theme.css index 7b77d43047..1a4882236a 100644 --- a/src/themes/dark/theme.css +++ b/src/themes/dark/theme.css @@ -1,7 +1,7 @@ .skinHeader, html { color: #ddd; - color: rgba(255, 255, 255, .8); + color: rgba(255, 255, 255, 0.8); } .wizardStartForm, @@ -12,7 +12,7 @@ html { .emby-collapsible-button { border-color: #383838; - border-color: rgba(255, 255, 255, .135); + border-color: rgba(255, 255, 255, 0.135); } .skinHeader-withBackground { @@ -36,12 +36,12 @@ html { } .backgroundContainer.withBackdrop { - background-color: rgba(0, 0, 0, .86); + background-color: rgba(0, 0, 0, 0.86); } .paper-icon-button-light:hover:not(:disabled) { color: #00a4dc; - background-color: rgba(0, 164, 220, .2); + background-color: rgba(0, 164, 220, 0.2); } .paper-icon-button-light.show-focus:focus { @@ -51,7 +51,7 @@ html { .fab, .raised { background: #303030; - color: rgba(255, 255, 255, .87); + color: rgba(255, 255, 255, 0.87); } .fab:focus, @@ -71,7 +71,7 @@ html { .button-delete { background: rgb(247, 0, 0); - color: rgba(255, 255, 255, .87); + color: rgba(255, 255, 255, 0.87); } .checkboxLabel { @@ -84,7 +84,7 @@ html { .paperListLabel, .textareaLabelUnfocused { color: #bbb; - color: rgba(255, 255, 255, .7); + color: rgba(255, 255, 255, 0.7); } .inputLabelFocused, @@ -133,17 +133,17 @@ html { .programSecondaryTitle, .secondaryText { color: #999; - color: rgba(255, 255, 255, .5); + color: rgba(255, 255, 255, 0.5); } .actionsheetDivider { background: #444; - background: rgba(255, 255, 255, .14); + background: rgba(255, 255, 255, 0.14); } .cardFooter-vibrant .cardText-secondary { color: inherit; - opacity: .5; + opacity: 0.5; } .actionSheetMenuItem:hover { @@ -153,13 +153,13 @@ html { .toast { background: #303030; color: #fff; - color: rgba(255, 255, 255, .87); + color: rgba(255, 255, 255, 0.87); } .appfooter { background: #101010; color: #ccc; - color: rgba(255, 255, 255, .78); + color: rgba(255, 255, 255, 0.78); } .itemSelectionPanel { @@ -177,7 +177,7 @@ html { .alphaPickerButton { color: #999; - color: rgba(255, 255, 255, .5); + color: rgba(255, 255, 255, 0.5); background-color: transparent; } @@ -192,11 +192,11 @@ html { .detailTableBodyRow-shaded:nth-child(even) { background: #1c1c1c; - background: rgba(30, 30, 30, .9); + background: rgba(30, 30, 30, 0.9); } .listItem-border { - border-color: rgba(34, 34, 34, .9) !important; + border-color: rgba(34, 34, 34, 0.9) !important; } .listItem:focus { @@ -214,7 +214,7 @@ html { .mediaInfoText { color: #ddd; - background: rgba(170, 170, 190, .2); + background: rgba(170, 170, 190, 0.2); } .mediaInfoTimerIcon, @@ -239,7 +239,7 @@ html { .emby-select-withcolor { color: inherit; background: #292929; - border: .07em solid #292929; + border: 0.07em solid #292929; } .emby-select-withcolor>option { @@ -324,7 +324,7 @@ html { .channelPrograms, .guide-channelHeaderCell, .programCell { - border-color: rgba(255, 255, 255, .05); + border-color: rgba(255, 255, 255, 0.05); } .programCell-sports { @@ -364,7 +364,7 @@ html { .guide-date-tab-button { color: #555; - color: rgba(255, 255, 255, .3); + color: rgba(255, 255, 255, 0.3); } .guide-date-tab-button.emby-tab-button-active, @@ -429,7 +429,7 @@ html { } .timeslotHeaders-desktop::-webkit-scrollbar { - height: .7em; + height: 0.7em; } .metadataSidebarIcon { diff --git a/src/themes/emby/theme.css b/src/themes/emby/theme.css index 64e9bfdd2d..32827ad209 100644 --- a/src/themes/emby/theme.css +++ b/src/themes/emby/theme.css @@ -1,7 +1,7 @@ .skinHeader, html { color: #ddd; - color: rgba(255, 255, 255, .8); + color: rgba(255, 255, 255, 0.8); } .wizardStartForm, @@ -12,7 +12,7 @@ html { .emby-collapsible-button { border-color: #383838; - border-color: rgba(255, 255, 255, .135); + border-color: rgba(255, 255, 255, 0.135); } .skinHeader-withBackground { @@ -35,12 +35,12 @@ html { } .backgroundContainer.withBackdrop { - background-color: rgba(0, 0, 0, .86); + background-color: rgba(0, 0, 0, 0.86); } .paper-icon-button-light:hover:not(:disabled) { color: #52b54b; - background-color: rgba(82, 181, 75, .2); + background-color: rgba(82, 181, 75, 0.2); } .paper-icon-button-light.show-focus:focus { @@ -50,7 +50,7 @@ html { .fab, .raised { background: #303030; - color: rgba(255, 255, 255, .87); + color: rgba(255, 255, 255, 0.87); } .fab:focus, @@ -70,7 +70,7 @@ html { .button-delete { background: rgb(247, 0, 0); - color: rgba(255, 255, 255, .87); + color: rgba(255, 255, 255, 0.87); } .checkboxLabel { @@ -83,7 +83,7 @@ html { .paperListLabel, .textareaLabelUnfocused { color: #bbb; - color: rgba(255, 255, 255, .7); + color: rgba(255, 255, 255, 0.7); } .inputLabelFocused, @@ -132,17 +132,17 @@ html { .programSecondaryTitle, .secondaryText { color: #999; - color: rgba(255, 255, 255, .5); + color: rgba(255, 255, 255, 0.5); } .actionsheetDivider { background: #444; - background: rgba(255, 255, 255, .14); + background: rgba(255, 255, 255, 0.14); } .cardFooter-vibrant .cardText-secondary { color: inherit; - opacity: .5; + opacity: 0.5; } .actionSheetMenuItem:hover { @@ -152,13 +152,13 @@ html { .toast { background: #303030; color: #fff; - color: rgba(255, 255, 255, .87); + color: rgba(255, 255, 255, 0.87); } .appfooter { background: #101010; color: #ccc; - color: rgba(255, 255, 255, .78); + color: rgba(255, 255, 255, 0.78); } .itemSelectionPanel { @@ -176,7 +176,7 @@ html { .alphaPickerButton { color: #999; - color: rgba(255, 255, 255, .5); + color: rgba(255, 255, 255, 0.5); background-color: transparent; } @@ -191,11 +191,11 @@ html { .detailTableBodyRow-shaded:nth-child(even) { background: #1c1c1c; - background: rgba(30, 30, 30, .9); + background: rgba(30, 30, 30, 0.9); } .listItem-border { - border-color: rgba(34, 34, 34, .9) !important; + border-color: rgba(34, 34, 34, 0.9) !important; } .listItem:focus { @@ -213,7 +213,7 @@ html { .mediaInfoText { color: #ddd; - background: rgba(170, 170, 190, .2); + background: rgba(170, 170, 190, 0.2); } .mediaInfoTimerIcon, @@ -225,8 +225,8 @@ html { .emby-textarea { color: inherit; background: #292929; - border: .07em solid #292929; - border-radius: .15em; + border: 0.07em solid #292929; + border-radius: 0.15em; } .emby-input:focus, @@ -237,7 +237,7 @@ html { .emby-select-withcolor { color: inherit; background: #292929; - border: .07em solid #292929; + border: 0.07em solid #292929; } .emby-select-withcolor>option { @@ -322,7 +322,7 @@ html { .channelPrograms, .guide-channelHeaderCell, .programCell { - border-color: rgba(255, 255, 255, .05); + border-color: rgba(255, 255, 255, 0.05); } .programCell-sports { @@ -362,7 +362,7 @@ html { .guide-date-tab-button { color: #555; - color: rgba(255, 255, 255, .3); + color: rgba(255, 255, 255, 0.3); } .guide-date-tab-button.emby-tab-button-active, @@ -379,7 +379,7 @@ html { color: #ddd; background: #111; padding: 1em; - border-radius: .25em; + border-radius: 0.25em; } .ratingbutton-icon-withrating { @@ -405,7 +405,7 @@ html { } ::-webkit-scrollbar-track { - box-shadow: inset 0 0 6px rgba(0, 0, 0, .3); + box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); } ::-webkit-scrollbar-track-piece { @@ -424,7 +424,7 @@ html { } .timeslotHeaders-desktop::-webkit-scrollbar { - height: .7em; + height: 0.7em; } .metadataSidebarIcon { diff --git a/src/themes/light/theme.css b/src/themes/light/theme.css index 0013c6956c..c4af696c2b 100644 --- a/src/themes/light/theme.css +++ b/src/themes/light/theme.css @@ -1,7 +1,7 @@ .skinHeader, html { color: #222; - color: rgba(0, 0, 0, .87); + color: rgba(0, 0, 0, 0.87); } .wizardStartForm, @@ -12,7 +12,7 @@ html { .emby-collapsible-button { border-color: #ccc; - border-color: rgba(0, 0, 0, .158); + border-color: rgba(0, 0, 0, 0.158); } .collapseContent { @@ -48,7 +48,7 @@ html { } .backgroundContainer.withBackdrop { - background-color: rgba(255, 255, 255, .80); + background-color: rgba(255, 255, 255, 0.80); } .dialog { @@ -57,7 +57,7 @@ html { .paper-icon-button-light:hover:not(:disabled) { color: #00a4dc; - background-color: rgba(0, 164, 220, .2); + background-color: rgba(0, 164, 220, 0.2); } .paper-icon-button-light.show-focus:focus { @@ -86,7 +86,7 @@ html { .button-delete { background: rgb(247, 0, 0); - color: rgba(255, 255, 255, .87); + color: rgba(255, 255, 255, 0.87); } .checkboxLabel { @@ -145,7 +145,7 @@ html { .formDialogFooter:not(.formDialogFooter-clear) { background-color: #f0f0f0; border-top: 1px solid #ddd; - border-top: 1px solid rgba(0, 0, 0, .08); + border-top: 1px solid rgba(0, 0, 0, 0.08); color: inherit; } @@ -161,12 +161,12 @@ html { .actionsheetDivider { background: #ddd; - background: rgba(0, 0, 0, .14); + background: rgba(0, 0, 0, 0.14); } .cardFooter-vibrant .cardText-secondary { color: inherit; - opacity: .5; + opacity: 0.5; } .formDialogHeader a, @@ -180,13 +180,13 @@ html { .toast { background: #303030; - color: rgba(255, 255, 255, .87); + color: rgba(255, 255, 255, 0.87); } .appfooter { background: #282828; color: #ccc; - color: rgba(255, 255, 255, .78); + color: rgba(255, 255, 255, 0.78); } .nowPlayingBarSecondaryText { @@ -208,7 +208,7 @@ html { .alphaPickerButton { color: #555; - color: rgba(0, 0, 0, .7); + color: rgba(0, 0, 0, 0.7); background-color: transparent; } @@ -261,7 +261,7 @@ html { .emby-select-withcolor { color: inherit; background: #fff; - border: .07em solid rgba(0, 0, 0, .158); + border: 0.07em solid rgba(0, 0, 0, 0.158); } .emby-checkbox:checked+span+.checkboxOutline, @@ -343,7 +343,7 @@ html { .channelPrograms, .guide-channelHeaderCell, .programCell { - border-color: rgba(0, 0, 0, .12); + border-color: rgba(0, 0, 0, 0.12); } .programCell-sports { @@ -363,7 +363,7 @@ html { } .programCell-active { - background: rgba(0, 0, 0, .1) !important; + background: rgba(0, 0, 0, 0.1) !important; } .guide-channelHeaderCell:focus, @@ -383,7 +383,7 @@ html { .guide-date-tab-button { color: #555; - color: rgba(0, 0, 0, .54); + color: rgba(0, 0, 0, 0.54); } .guide-date-tab-button.emby-tab-button-active, diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index 13838c1798..80d98cd237 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -12,7 +12,7 @@ html { .emby-collapsible-button { border-color: #383838; - border-color: rgba(255, 255, 255, .135); + border-color: rgba(255, 255, 255, 0.135); } .skinHeader-withBackground { @@ -48,7 +48,7 @@ html { } .backgroundContainer.withBackdrop { - opacity: .86; + opacity: 0.86; } @media (orientation: portrait) { @@ -59,7 +59,7 @@ html { .paper-icon-button-light:hover:not(:disabled) { color: rgb(12, 232, 214); - background-color: rgba(0, 164, 220, .2); + background-color: rgba(0, 164, 220, 0.2); } .paper-icon-button-light.show-focus:focus { @@ -67,25 +67,25 @@ html { } progress { - border-radius: .4em; + border-radius: 0.4em; } progress::-webkit-progress-bar { - border-radius: .4em; + border-radius: 0.4em; } progress::-moz-progress-bar { - border-radius: .4em; + border-radius: 0.4em; } progress::-webkit-progress-value { - border-radius: .4em; + border-radius: 0.4em; } .fab, .raised { - background: rgba(0, 0, 0, .5); - color: rgba(255, 255, 255, .87); + background: rgba(0, 0, 0, 0.5); + color: rgba(255, 255, 255, 0.87); } .fab:focus, @@ -120,13 +120,13 @@ a[data-role=button] { .btnForgotPassword, .btnCancel, .button-cancel { - background: rgba(0, 0, 0, .5); - color: rgba(255, 255, 255, .87); + background: rgba(0, 0, 0, 0.5); + color: rgba(255, 255, 255, 0.87); } .alphaPickerButton { color: #999; - color: rgba(255, 255, 255, .5); + color: rgba(255, 255, 255, 0.5); background-color: transparent; } @@ -149,7 +149,7 @@ a[data-role=button] { .btnManual:hover, .block:hover { background: rgb(12, 232, 214); - color: rgba(255, 255, 255, .87); + color: rgba(255, 255, 255, 0.87); } .button-submit:focus { @@ -158,7 +158,7 @@ a[data-role=button] { .button-delete { background: rgb(247, 0, 0); - color: rgba(255, 255, 255, .87); + color: rgba(255, 255, 255, 0.87); } .itemName { @@ -205,7 +205,7 @@ a[data-role=button] { .formDialogHeader:not(.formDialogHeader-clear), .paperList, .visualCardBox { - background-color: rgba(0, 0, 0, .5); + background-color: rgba(0, 0, 0, 0.5); border-radius: 1.000em; } @@ -245,38 +245,38 @@ a[data-role=button] { .programSecondaryTitle, .secondaryText { color: #999; - color: rgba(255, 255, 255, .5); + color: rgba(255, 255, 255, 0.5); } .actionsheetDivider { background: #444; - background: rgba(255, 255, 255, .14); + background: rgba(255, 255, 255, 0.14); } .cardFooter-vibrant .cardText-secondary { color: inherit; - opacity: .5; + opacity: 0.5; } .actionSheetMenuItem:hover { - background-color: rgba(0, 0, 0, .5); + background-color: rgba(0, 0, 0, 0.5); } .toast { background: #303030; color: #f8f8fe; - color: rgba(255, 255, 255, .87); + color: rgba(255, 255, 255, 0.87); } .appfooter { background: #06256f; color: #ccc; - color: rgba(255, 255, 255, .78); + color: rgba(255, 255, 255, 0.78); } @supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)) { .appfooter-blurred { - background: rgba(6, 37, 111, .7); + background: rgba(6, 37, 111, 0.7); backdrop-filter: blur(20px); } } @@ -305,15 +305,15 @@ a[data-role=button] { .detailTableBodyRow-shaded:nth-child(even) { background: #1c1c1c; - background: rgba(30, 30, 30, .9); + background: rgba(30, 30, 30, 0.9); } .listItem-border { - border-color: rgba(255, 255, 255, .1) !important; + border-color: rgba(255, 255, 255, 0.1) !important; } .listItem:focus { - background: rgba(0, 0, 0, .3); + background: rgba(0, 0, 0, 0.3); } .progressring-spiner { @@ -327,7 +327,7 @@ a[data-role=button] { .mediaInfoText { color: #f8f8fe; - background: rgba(170, 170, 190, .2); + background: rgba(170, 170, 190, 0.2); } .mediaInfoTimerIcon, @@ -351,8 +351,8 @@ a[data-role=button] { .emby-select-withcolor { color: inherit; - background: rgba(0, 0, 0, .5); - border: .07em solid transparent; + background: rgba(0, 0, 0, 0.5); + border: 0.07em solid transparent; } .emby-select-withcolor>option { @@ -406,7 +406,7 @@ a[data-role=button] { .mainDrawer { color: #f8f8fe; - background: rgba(0, 0, 0, .5); + background: rgba(0, 0, 0, 0.5); } .drawer-open { @@ -446,7 +446,7 @@ a[data-role=button] { .channelPrograms, .guide-channelHeaderCell, .programCell { - border-color: rgba(255, 255, 255, .05); + border-color: rgba(255, 255, 255, 0.05); } .programCell-sports { @@ -466,7 +466,7 @@ a[data-role=button] { } .programCell-active { - background: rgba(0, 0, 0, .4) !important; + background: rgba(0, 0, 0, 0.4) !important; } .guide-channelHeaderCell:focus, @@ -486,7 +486,7 @@ a[data-role=button] { .guide-date-tab-button { color: #555; - color: rgba(255, 255, 255, .3); + color: rgba(255, 255, 255, 0.3); } .guide-date-tab-button.emby-tab-button-active, @@ -550,7 +550,7 @@ a[data-role=button] { } .layout-desktop ::-webkit-scrollbar { - width: .4em; + width: 0.4em; height: 1em; } @@ -562,11 +562,11 @@ a[data-role=button] { } .timeslotHeaders-desktop::-webkit-scrollbar { - height: .7em; + height: 0.7em; } .mediaInfoOfficialRating { - border: .09em solid #583fa0; + border: 0.09em solid #583fa0; background-color: #dbe6ff; color: #0e0f2d; } diff --git a/src/themes/wmc/theme.css b/src/themes/wmc/theme.css index c633fc22dd..1639650437 100644 --- a/src/themes/wmc/theme.css +++ b/src/themes/wmc/theme.css @@ -1,6 +1,6 @@ html { color: #eee; - color: rgba(255, 255, 255, .9); + color: rgba(255, 255, 255, 0.9); background-color: #0f3562; } @@ -12,12 +12,12 @@ html { .emby-collapsible-button { border-color: #383838; - border-color: rgba(255, 255, 255, .135); + border-color: rgba(255, 255, 255, 0.135); } .skinHeader { color: #ccc; - color: rgba(255, 255, 255, .78); + color: rgba(255, 255, 255, 0.78); } .formDialogHeader:not(.formDialogHeader-clear), @@ -53,12 +53,12 @@ html { } .backgroundContainer.withBackdrop { - background: rgba(17, 98, 164, .9); + background: rgba(17, 98, 164, 0.9); } .paper-icon-button-light:hover:not(:disabled) { color: #00a4dc; - background-color: rgba(0, 164, 220, .2); + background-color: rgba(0, 164, 220, 0.2); } .paper-icon-button-light.show-focus:focus { @@ -88,7 +88,7 @@ html { .button-delete { background: rgb(247, 0, 0); - color: rgba(255, 255, 255, .87); + color: rgba(255, 255, 255, 0.87); } .checkboxLabel { @@ -101,7 +101,7 @@ html { .paperListLabel, .textareaLabelUnfocused { color: #bbb; - color: rgba(255, 255, 255, .7); + color: rgba(255, 255, 255, 0.7); } .inputLabelFocused, @@ -148,23 +148,23 @@ html { .programSecondaryTitle, .secondaryText { color: #999; - color: rgba(255, 255, 255, .5); + color: rgba(255, 255, 255, 0.5); } .actionsheetDivider { background: #ddd; - background: rgba(255, 255, 255, .14); + background: rgba(255, 255, 255, 0.14); } .cardFooter-vibrant .cardText-secondary { color: inherit; - opacity: .5; + opacity: 0.5; } .toast { background: #081b3b; color: #fff; - color: rgba(255, 255, 255, .87); + color: rgba(255, 255, 255, 0.87); } .appfooter, @@ -192,7 +192,7 @@ html { .alphaPickerButton { color: #999; - color: rgba(255, 255, 255, .5); + color: rgba(255, 255, 255, 0.5); background-color: transparent; } @@ -204,11 +204,11 @@ html { .detailTableBodyRow-shaded:nth-child(even) { background: #1c1c1c; - background: rgba(0, 0, 0, .3); + background: rgba(0, 0, 0, 0.3); } .listItem-border { - border-color: rgba(0, 0, 0, .3) !important; + border-color: rgba(0, 0, 0, 0.3) !important; } .listItem:focus { @@ -226,7 +226,7 @@ html { .mediaInfoText { color: #ddd; - background: rgba(170, 170, 190, .2); + background: rgba(170, 170, 190, 0.2); } .mediaInfoTimerIcon, @@ -250,8 +250,8 @@ html { .emby-select-withcolor { color: inherit; - background: rgba(255, 255, 255, .2); - border: .07em solid rgba(255, 255, 255, .135); + background: rgba(255, 255, 255, 0.2); + border: 0.07em solid rgba(255, 255, 255, 0.135); } .emby-checkbox:checked+span+.checkboxOutline, @@ -299,13 +299,13 @@ html { .mainDrawer { background-color: #0f3562; color: #ccc; - color: rgba(255, 255, 255, .7); + color: rgba(255, 255, 255, 0.7); } .actionSheetMenuItem:hover, .navMenuOption:hover { background: #252528; - background: rgba(0, 0, 0, .2); + background: rgba(0, 0, 0, 0.2); } .navMenuOption-selected { @@ -338,7 +338,7 @@ html { .guide-channelHeaderCell, .programCell { border-color: #999; - border-color: rgba(255, 255, 255, .1); + border-color: rgba(255, 255, 255, 0.1); } .programCell-sports { @@ -358,7 +358,7 @@ html { } .programCell-active { - background: rgba(0, 0, 0, .3) !important; + background: rgba(0, 0, 0, 0.3) !important; } .guide-channelHeaderCell:focus, @@ -378,7 +378,7 @@ html { .guide-date-tab-button { color: #555; - color: rgba(255, 255, 255, .3); + color: rgba(255, 255, 255, 0.3); } .guide-date-tab-button.emby-tab-button-active, From a896a6bcadad8e607e6f737f7c05d03da06dcb94 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 15:01:18 +0100 Subject: [PATCH 060/105] Fix number-no-trailing-zeros (CSS) --- src/components/listview/listview.css | 2 +- src/themes/light/theme.css | 2 +- src/themes/purplehaze/theme.css | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/listview/listview.css b/src/components/listview/listview.css index 69420d011d..bd77ca7781 100644 --- a/src/components/listview/listview.css +++ b/src/components/listview/listview.css @@ -50,7 +50,7 @@ } .listItem-border.show-focus:focus { - transform: scale(1.0) !important; + transform: scale(1) !important; } .listItemImage, .listItemIcon, .listItemAside { diff --git a/src/themes/light/theme.css b/src/themes/light/theme.css index c4af696c2b..5315343dfd 100644 --- a/src/themes/light/theme.css +++ b/src/themes/light/theme.css @@ -48,7 +48,7 @@ html { } .backgroundContainer.withBackdrop { - background-color: rgba(255, 255, 255, 0.80); + background-color: rgba(255, 255, 255, 0.8); } .dialog { diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index 80d98cd237..b5fa8372f8 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -197,7 +197,7 @@ a[data-role=button] { } .cardContent { - border-radius: 1.000em; + border-radius: 1em; } .collapseContent, @@ -206,7 +206,7 @@ a[data-role=button] { .paperList, .visualCardBox { background-color: rgba(0, 0, 0, 0.5); - border-radius: 1.000em; + border-radius: 1em; } .cardOverlayContainer { From fafd0d4ea0bff8a8b19402ab8d21b47c6a0fdc86 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 15:02:21 +0100 Subject: [PATCH 061/105] Fix rule-empty-line-before (CSS) --- src/assets/css/dashboard.css | 1 - src/assets/css/librarybrowser.css | 1 - src/assets/css/videoosd.css | 1 - src/components/alphapicker/style.css | 7 ------- src/components/cardbuilder/card.css | 4 ---- src/components/dialogHelper/dialoghelper.css | 4 ---- src/components/formdialog.css | 2 -- src/components/guide/guide.css | 7 ------- src/components/homesections/homesections.css | 1 - src/components/nowplayingbar/nowplayingbar.css | 2 +- src/components/upnextdialog/upnextdialog.css | 1 - src/themes/purplehaze/theme.css | 1 + 12 files changed, 2 insertions(+), 30 deletions(-) diff --git a/src/assets/css/dashboard.css b/src/assets/css/dashboard.css index e954a9fb42..c85c0c1755 100644 --- a/src/assets/css/dashboard.css +++ b/src/assets/css/dashboard.css @@ -48,7 +48,6 @@ progress[aria-valuenow]:before { } @media all and (min-width: 50em) { - .type-interior>div[data-role=content], .type-interior>.ui-panel-content-wrap>div[data-role=content] { padding-right: 0; diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 4004835cef..3e12d9906b 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -240,7 +240,6 @@ } @media all and (min-width: 40em) { - .dashboardDocument .adminDrawerLogo, .dashboardDocument .mainDrawerButton { display: none !important; diff --git a/src/assets/css/videoosd.css b/src/assets/css/videoosd.css index 59318cb6fc..608a0d8da3 100644 --- a/src/assets/css/videoosd.css +++ b/src/assets/css/videoosd.css @@ -254,7 +254,6 @@ } @media all and (max-width: 30em) { - .btnFastForward, .btnRewind, .osdMediaInfo, diff --git a/src/components/alphapicker/style.css b/src/components/alphapicker/style.css index 78f74404ff..c93341bc7d 100644 --- a/src/components/alphapicker/style.css +++ b/src/components/alphapicker/style.css @@ -44,7 +44,6 @@ } @media all and (max-height: 50em) { - .alphaPicker-fixed { bottom: 5em; } @@ -56,14 +55,12 @@ } @media all and (max-height: 49em) { - .alphaPicker-vertical { font-size: 94%; } } @media all and (max-height: 44em) { - .alphaPicker-vertical { font-size: 90%; } @@ -75,14 +72,12 @@ } @media all and (max-height: 37em) { - .alphaPicker-vertical { font-size: 82%; } } @media all and (max-height: 32em) { - .alphaPicker-vertical { font-size: 74%; } @@ -121,7 +116,6 @@ } @media all and (min-width: 62.5em) { - .alphaPicker-fixed-left { left: 1em; } @@ -132,7 +126,6 @@ } @media all and (max-height: 31.25em) { - .alphaPicker-fixed { display: none !important; } diff --git a/src/components/cardbuilder/card.css b/src/components/cardbuilder/card.css index dd8a73248e..d5e1f6f938 100644 --- a/src/components/cardbuilder/card.css +++ b/src/components/cardbuilder/card.css @@ -677,7 +677,6 @@ button::-moz-focus-inner { } @media (min-width: 100em) { - .overflowBackdropCard, .overflowSmallBackdropCard { width: 18.7vw; } @@ -688,21 +687,18 @@ button::-moz-focus-inner { } @media (min-width: 120em) { - .overflowSquareCard, .overflowPortraitCard { width: 10.3vw; } } @media (min-width: 131.25em) { - .overflowSquareCard, .overflowPortraitCard { width: 9.3vw; } } @media (min-width: 156.25em) { - .overflowBackdropCard, .overflowSmallBackdropCard { width: 15.6vw; } diff --git a/src/components/dialogHelper/dialoghelper.css b/src/components/dialogHelper/dialoghelper.css index 875ebfab26..ecdaa4f9ea 100644 --- a/src/components/dialogHelper/dialoghelper.css +++ b/src/components/dialogHelper/dialoghelper.css @@ -78,7 +78,6 @@ } @keyframes fadeout { - from { opacity: 1; } @@ -101,7 +100,6 @@ } @keyframes slidedown { - from { opacity: 1; transform: none; @@ -114,7 +112,6 @@ } @media all and (max-width: 80em), all and (max-height: 45em) { - .dialog-fixedSize, .dialog-fullscreen-lowres { position: fixed !important; top: 0 !important; @@ -127,7 +124,6 @@ } @media all and (min-width: 80em) and (min-height: 45em) { - .dialog-medium { width: 80%; height: 80%; diff --git a/src/components/formdialog.css b/src/components/formdialog.css index 5eb1ba6ea3..932ee8f2d0 100644 --- a/src/components/formdialog.css +++ b/src/components/formdialog.css @@ -91,7 +91,6 @@ } @media all and (min-width: 50em) { - .formDialogFooterItem { max-width: 80%; } @@ -103,7 +102,6 @@ } @media all and (min-width: 80em) { - .formDialogFooterItem { max-width: 70%; } diff --git a/src/components/guide/guide.css b/src/components/guide/guide.css index 524b3c7e2e..52a501fd3c 100644 --- a/src/components/guide/guide.css +++ b/src/components/guide/guide.css @@ -96,21 +96,18 @@ } @media all and (min-width: 37.5em) { - .channelPrograms, .timeslotHeadersInner { width: 1400vw; } } @media all and (min-width: 50em) { - .channelPrograms, .timeslotHeadersInner { width: 1200vw; } } @media all and (min-width: 80em) { - .channelPrograms, .timeslotHeadersInner { width: 810vw; } @@ -204,7 +201,6 @@ } @media all and (max-width: 50em) { - .newTvProgram, .liveTvProgram, .premiereTvProgram, .guideHdIcon { display: none; } @@ -339,14 +335,12 @@ } @media all and (min-width: 62.5em) { - .guideChannelName { max-width: 40%; } } @media all and (max-width: 62.5em) { - .guideChannelNumber { display: none; } @@ -382,7 +376,6 @@ } @media all and (max-width: 50em), all and (max-height: 37.5em) { - .tvGuideHeader { padding-left: 0; } diff --git a/src/components/homesections/homesections.css b/src/components/homesections/homesections.css index 58eabb091a..164e963148 100644 --- a/src/components/homesections/homesections.css +++ b/src/components/homesections/homesections.css @@ -4,7 +4,6 @@ } @media all and (max-width: 50em) { - .homeLibraryButton { width: 46% !important; } diff --git a/src/components/nowplayingbar/nowplayingbar.css b/src/components/nowplayingbar/nowplayingbar.css index 0339452da3..ea1a1a9e7c 100644 --- a/src/components/nowplayingbar/nowplayingbar.css +++ b/src/components/nowplayingbar/nowplayingbar.css @@ -121,7 +121,6 @@ } @media all and (max-width: 70em) { - .nowPlayingBarRight .nowPlayingBarUserDataButtons { display: none; } @@ -155,6 +154,7 @@ .nowPlayingBarRight .nowPlayingBarVolumeSliderContainer { display: none !important; } + .nowPlayingBarInfoContainer { width: 70%; } diff --git a/src/components/upnextdialog/upnextdialog.css b/src/components/upnextdialog/upnextdialog.css index 7c9c13207f..15f91b29d9 100644 --- a/src/components/upnextdialog/upnextdialog.css +++ b/src/components/upnextdialog/upnextdialog.css @@ -37,7 +37,6 @@ } @media all and (orientation: landscape) { - .upNextDialog { flex-direction: row; } diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index b5fa8372f8..80fc6cbcd2 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -212,6 +212,7 @@ a[data-role=button] { .cardOverlayContainer { border-radius: 0.8em; } + .visualCardBox .cardOverlayContainer { border-bottom-right-radius: 0; border-bottom-left-radius: 0; From ae0040165ae8ffc479c4fa2a9fa8601f487513f4 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 15:03:50 +0100 Subject: [PATCH 062/105] Fix selector-combinator-space-after (CSS) --- src/assets/css/dashboard.css | 14 +++++++------- src/assets/css/librarybrowser.css | 10 +++++----- src/assets/css/site.css | 2 +- src/components/remotecontrol/remotecontrol.css | 2 +- src/themes/appletv/theme.css | 10 +++++----- src/themes/blueradiance/theme.css | 10 +++++----- src/themes/dark/theme.css | 10 +++++----- src/themes/emby/theme.css | 10 +++++----- src/themes/light/theme.css | 10 +++++----- src/themes/purplehaze/theme.css | 8 ++++---- src/themes/wmc/theme.css | 10 +++++----- 11 files changed, 48 insertions(+), 48 deletions(-) diff --git a/src/assets/css/dashboard.css b/src/assets/css/dashboard.css index c85c0c1755..9abf8ec282 100644 --- a/src/assets/css/dashboard.css +++ b/src/assets/css/dashboard.css @@ -48,8 +48,8 @@ progress[aria-valuenow]:before { } @media all and (min-width: 50em) { - .type-interior>div[data-role=content], - .type-interior>.ui-panel-content-wrap>div[data-role=content] { + .type-interior> div[data-role=content], + .type-interior> .ui-panel-content-wrap> div[data-role=content] { padding-right: 0; padding-left: 0; padding-top: 0; @@ -112,7 +112,7 @@ div[data-role=controlgroup] a[data-role=button]:last-child { border-top-right-radius: .3125em; } -div[data-role=controlgroup] a[data-role=button]+a[data-role=button] { +div[data-role=controlgroup] a[data-role=button]+ a[data-role=button] { border-left-width: 0 !important; margin: 0 0 0 -0.4em !important; } @@ -227,7 +227,7 @@ div[data-role=controlgroup] a.ui-btn-active { margin-bottom: 0.5em; } -.activeRecordingItems>.card { +.activeRecordingItems> .card { width: 50%; } @@ -253,7 +253,7 @@ div[data-role=controlgroup] a.ui-btn-active { padding: 0 1.5em; } - .activeRecordingItems>.card { + .activeRecordingItems> .card { width: 25%; } } @@ -333,7 +333,7 @@ div[data-role=controlgroup] a.ui-btn-active { font-weight: 400; } -.sessionNowPlayingContent-withbackground+.sessionNowPlayingInnerContent { +.sessionNowPlayingContent-withbackground+ .sessionNowPlayingInnerContent { color: #fff !important; background: rgba(0, 0, 0, 0.7); } @@ -418,7 +418,7 @@ div[data-role=controlgroup] a.ui-btn-active { text-decoration: none !important; } -.appLinks a+a { +.appLinks a+ a { margin-left: 5px; } diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 3e12d9906b..b4493f11a1 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -367,7 +367,7 @@ display: inline-block; } -.viewControls+.listTopPaging { +.viewControls+ .listTopPaging { margin-left: 0.5em !important; } @@ -629,7 +629,7 @@ margin: 0; } -.detailCollapsibleSection:not(.hide)+.detailCollapsibleSection { +.detailCollapsibleSection:not(.hide)+ .detailCollapsibleSection { margin-top: -2em; } @@ -654,7 +654,7 @@ flex-shrink: 0; } -.mainDetailButtons.hide+.recordingFields { +.mainDetailButtons.hide+ .recordingFields { margin-top: 1.5em !important; } @@ -955,7 +955,7 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { padding-top: 0 !important; } -.sectionTitleTextButton>.sectionTitle { +.sectionTitleTextButton> .sectionTitle { margin-bottom: 0; margin-top: 0; } @@ -1029,6 +1029,6 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { } } -.itemsViewSettingsContainer>.button-flat { +.itemsViewSettingsContainer> .button-flat { margin: 0; } diff --git a/src/assets/css/site.css b/src/assets/css/site.css index 4dc30280db..0b376f84ad 100644 --- a/src/assets/css/site.css +++ b/src/assets/css/site.css @@ -61,7 +61,7 @@ div[data-role=page] { white-space: normal !important; } -.fieldDescription+.fieldDescription { +.fieldDescription+ .fieldDescription { margin-top: 0.3em; } diff --git a/src/components/remotecontrol/remotecontrol.css b/src/components/remotecontrol/remotecontrol.css index 3ecb55d169..5e8d112998 100644 --- a/src/components/remotecontrol/remotecontrol.css +++ b/src/components/remotecontrol/remotecontrol.css @@ -193,7 +193,7 @@ width: 30em; } -.smallBackdropPosterItem .cardOverlayInner>div { +.smallBackdropPosterItem .cardOverlayInner> div { white-space: nowrap; -o-text-overflow: ellipsis; text-overflow: ellipsis; diff --git a/src/themes/appletv/theme.css b/src/themes/appletv/theme.css index 1b60a45c24..b0f77ec1a0 100644 --- a/src/themes/appletv/theme.css +++ b/src/themes/appletv/theme.css @@ -271,25 +271,25 @@ html { border: 0.07em solid rgba(0, 0, 0, 0.158); } -.emby-checkbox:checked+span+.checkboxOutline, +.emby-checkbox:checked+ span+ .checkboxOutline, .emby-select-withcolor:focus { border-color: #00a4dc; } -.emby-checkbox:focus+span+.checkboxOutline { +.emby-checkbox:focus+ span+ .checkboxOutline { border-color: #fff; } -.emby-checkbox:checked+span+.checkboxOutline, +.emby-checkbox:checked+ span+ .checkboxOutline, .itemProgressBarForeground { background-color: #00a4dc; } -.emby-checkbox:focus:not(:checked)+span+.checkboxOutline { +.emby-checkbox:focus:not(:checked)+ span+ .checkboxOutline { border-color: #00a4dc; } -.emby-select-withcolor>option { +.emby-select-withcolor> option { color: #000; background: #fff; } diff --git a/src/themes/blueradiance/theme.css b/src/themes/blueradiance/theme.css index 1a4df079d5..435a2207ee 100644 --- a/src/themes/blueradiance/theme.css +++ b/src/themes/blueradiance/theme.css @@ -268,7 +268,7 @@ html { border: 0.07em solid transparent; } -.emby-select-withcolor>option { +.emby-select-withcolor> option { color: inherit; background: #222; } @@ -282,20 +282,20 @@ html { color: #fff !important; } -.emby-checkbox:checked+span+.checkboxOutline { +.emby-checkbox:checked+ span+ .checkboxOutline { border-color: #00a4dc; } -.emby-checkbox:focus+span+.checkboxOutline { +.emby-checkbox:focus+ span+ .checkboxOutline { border-color: #fff; } -.emby-checkbox:checked+span+.checkboxOutline, +.emby-checkbox:checked+ span+ .checkboxOutline, .itemProgressBarForeground { background-color: #00a4dc; } -.emby-checkbox:focus:not(:checked)+span+.checkboxOutline { +.emby-checkbox:focus:not(:checked)+ span+ .checkboxOutline { border-color: #00a4dc; } diff --git a/src/themes/dark/theme.css b/src/themes/dark/theme.css index 1a4882236a..82a9bdae03 100644 --- a/src/themes/dark/theme.css +++ b/src/themes/dark/theme.css @@ -242,7 +242,7 @@ html { border: 0.07em solid #292929; } -.emby-select-withcolor>option { +.emby-select-withcolor> option { color: inherit; background: #222; } @@ -256,20 +256,20 @@ html { color: #fff !important; } -.emby-checkbox:checked+span+.checkboxOutline { +.emby-checkbox:checked+ span+ .checkboxOutline { border-color: #00a4dc; } -.emby-checkbox:focus+span+.checkboxOutline { +.emby-checkbox:focus+ span+ .checkboxOutline { border-color: #fff; } -.emby-checkbox:checked+span+.checkboxOutline, +.emby-checkbox:checked+ span+ .checkboxOutline, .itemProgressBarForeground { background-color: #00a4dc; } -.emby-checkbox:focus:not(:checked)+span+.checkboxOutline { +.emby-checkbox:focus:not(:checked)+ span+ .checkboxOutline { border-color: #00a4dc; } diff --git a/src/themes/emby/theme.css b/src/themes/emby/theme.css index 32827ad209..dde1627fe9 100644 --- a/src/themes/emby/theme.css +++ b/src/themes/emby/theme.css @@ -240,7 +240,7 @@ html { border: 0.07em solid #292929; } -.emby-select-withcolor>option { +.emby-select-withcolor> option { color: inherit; background: #222; } @@ -254,20 +254,20 @@ html { color: #fff !important; } -.emby-checkbox:checked+span+.checkboxOutline { +.emby-checkbox:checked+ span+ .checkboxOutline { border-color: #52b54b; } -.emby-checkbox:focus+span+.checkboxOutline { +.emby-checkbox:focus+ span+ .checkboxOutline { border-color: #fff; } -.emby-checkbox:checked+span+.checkboxOutline, +.emby-checkbox:checked+ span+ .checkboxOutline, .itemProgressBarForeground { background-color: #52b54b; } -.emby-checkbox:focus:not(:checked)+span+.checkboxOutline { +.emby-checkbox:focus:not(:checked)+ span+ .checkboxOutline { border-color: #52b54b; } diff --git a/src/themes/light/theme.css b/src/themes/light/theme.css index 5315343dfd..c076960409 100644 --- a/src/themes/light/theme.css +++ b/src/themes/light/theme.css @@ -264,25 +264,25 @@ html { border: 0.07em solid rgba(0, 0, 0, 0.158); } -.emby-checkbox:checked+span+.checkboxOutline, +.emby-checkbox:checked+ span+ .checkboxOutline, .emby-select-withcolor:focus { border-color: #00a4dc; } -.emby-checkbox:focus+span+.checkboxOutline { +.emby-checkbox:focus+ span+ .checkboxOutline { border-color: #000; } -.emby-checkbox:checked+span+.checkboxOutline, +.emby-checkbox:checked+ span+ .checkboxOutline, .itemProgressBarForeground { background-color: #00a4dc; } -.emby-checkbox:focus:not(:checked)+span+.checkboxOutline { +.emby-checkbox:focus:not(:checked)+ span+ .checkboxOutline { border-color: #00a4dc; } -.emby-select-withcolor>option { +.emby-select-withcolor> option { color: #000; background: #fff; } diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index 80fc6cbcd2..f9113a0308 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -356,7 +356,7 @@ a[data-role=button] { border: 0.07em solid transparent; } -.emby-select-withcolor>option { +.emby-select-withcolor> option { color: inherit; background: #030322d7; } @@ -370,7 +370,7 @@ a[data-role=button] { color: #fff !important; } -.emby-checkbox:checked+span+.checkboxOutline { +.emby-checkbox:checked+ span+ .checkboxOutline { background-color: #030322; border: 2px solid rgb(72, 195, 200); } @@ -379,11 +379,11 @@ a[data-role=button] { color: rgb(12, 232, 214); } -.emby-checkbox:focus+span+.checkboxOutline { +.emby-checkbox:focus+ span+ .checkboxOutline { border-color: #ff77f1; } -.emby-checkbox:focus:not(:checked)+span+.checkboxOutline { +.emby-checkbox:focus:not(:checked)+ span+ .checkboxOutline { border: 2px solid #ff77f1; } diff --git a/src/themes/wmc/theme.css b/src/themes/wmc/theme.css index 1639650437..1f0580d9ce 100644 --- a/src/themes/wmc/theme.css +++ b/src/themes/wmc/theme.css @@ -254,25 +254,25 @@ html { border: 0.07em solid rgba(255, 255, 255, 0.135); } -.emby-checkbox:checked+span+.checkboxOutline, +.emby-checkbox:checked+ span+ .checkboxOutline, .emby-select-withcolor:focus { border-color: #00a4dc; } -.emby-checkbox:focus+span+.checkboxOutline { +.emby-checkbox:focus+ span+ .checkboxOutline { border-color: #fff; } -.emby-checkbox:checked+span+.checkboxOutline, +.emby-checkbox:checked+ span+ .checkboxOutline, .itemProgressBarForeground { background-color: #00a4dc; } -.emby-checkbox:focus:not(:checked)+span+.checkboxOutline { +.emby-checkbox:focus:not(:checked)+ span+ .checkboxOutline { border-color: #00a4dc; } -.emby-select-withcolor>option { +.emby-select-withcolor> option { color: #000; background: #fff; } From cc377df8f35e23cc929d823df3c8ed07074e57f5 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 15:04:19 +0100 Subject: [PATCH 063/105] Fix selector-combinator-space-before (CSS) --- src/assets/css/dashboard.css | 14 +++++++------- src/assets/css/librarybrowser.css | 10 +++++----- src/assets/css/site.css | 2 +- src/components/remotecontrol/remotecontrol.css | 2 +- src/themes/appletv/theme.css | 10 +++++----- src/themes/blueradiance/theme.css | 10 +++++----- src/themes/dark/theme.css | 10 +++++----- src/themes/emby/theme.css | 10 +++++----- src/themes/light/theme.css | 10 +++++----- src/themes/purplehaze/theme.css | 8 ++++---- src/themes/wmc/theme.css | 10 +++++----- 11 files changed, 48 insertions(+), 48 deletions(-) diff --git a/src/assets/css/dashboard.css b/src/assets/css/dashboard.css index 9abf8ec282..2b6d97e068 100644 --- a/src/assets/css/dashboard.css +++ b/src/assets/css/dashboard.css @@ -48,8 +48,8 @@ progress[aria-valuenow]:before { } @media all and (min-width: 50em) { - .type-interior> div[data-role=content], - .type-interior> .ui-panel-content-wrap> div[data-role=content] { + .type-interior > div[data-role=content], + .type-interior > .ui-panel-content-wrap > div[data-role=content] { padding-right: 0; padding-left: 0; padding-top: 0; @@ -112,7 +112,7 @@ div[data-role=controlgroup] a[data-role=button]:last-child { border-top-right-radius: .3125em; } -div[data-role=controlgroup] a[data-role=button]+ a[data-role=button] { +div[data-role=controlgroup] a[data-role=button] + a[data-role=button] { border-left-width: 0 !important; margin: 0 0 0 -0.4em !important; } @@ -227,7 +227,7 @@ div[data-role=controlgroup] a.ui-btn-active { margin-bottom: 0.5em; } -.activeRecordingItems> .card { +.activeRecordingItems > .card { width: 50%; } @@ -253,7 +253,7 @@ div[data-role=controlgroup] a.ui-btn-active { padding: 0 1.5em; } - .activeRecordingItems> .card { + .activeRecordingItems > .card { width: 25%; } } @@ -333,7 +333,7 @@ div[data-role=controlgroup] a.ui-btn-active { font-weight: 400; } -.sessionNowPlayingContent-withbackground+ .sessionNowPlayingInnerContent { +.sessionNowPlayingContent-withbackground + .sessionNowPlayingInnerContent { color: #fff !important; background: rgba(0, 0, 0, 0.7); } @@ -418,7 +418,7 @@ div[data-role=controlgroup] a.ui-btn-active { text-decoration: none !important; } -.appLinks a+ a { +.appLinks a + a { margin-left: 5px; } diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index b4493f11a1..6ee1f63d5b 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -367,7 +367,7 @@ display: inline-block; } -.viewControls+ .listTopPaging { +.viewControls + .listTopPaging { margin-left: 0.5em !important; } @@ -629,7 +629,7 @@ margin: 0; } -.detailCollapsibleSection:not(.hide)+ .detailCollapsibleSection { +.detailCollapsibleSection:not(.hide) + .detailCollapsibleSection { margin-top: -2em; } @@ -654,7 +654,7 @@ flex-shrink: 0; } -.mainDetailButtons.hide+ .recordingFields { +.mainDetailButtons.hide + .recordingFields { margin-top: 1.5em !important; } @@ -955,7 +955,7 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { padding-top: 0 !important; } -.sectionTitleTextButton> .sectionTitle { +.sectionTitleTextButton > .sectionTitle { margin-bottom: 0; margin-top: 0; } @@ -1029,6 +1029,6 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { } } -.itemsViewSettingsContainer> .button-flat { +.itemsViewSettingsContainer > .button-flat { margin: 0; } diff --git a/src/assets/css/site.css b/src/assets/css/site.css index 0b376f84ad..f5821266f8 100644 --- a/src/assets/css/site.css +++ b/src/assets/css/site.css @@ -61,7 +61,7 @@ div[data-role=page] { white-space: normal !important; } -.fieldDescription+ .fieldDescription { +.fieldDescription + .fieldDescription { margin-top: 0.3em; } diff --git a/src/components/remotecontrol/remotecontrol.css b/src/components/remotecontrol/remotecontrol.css index 5e8d112998..6f36fc866c 100644 --- a/src/components/remotecontrol/remotecontrol.css +++ b/src/components/remotecontrol/remotecontrol.css @@ -193,7 +193,7 @@ width: 30em; } -.smallBackdropPosterItem .cardOverlayInner> div { +.smallBackdropPosterItem .cardOverlayInner > div { white-space: nowrap; -o-text-overflow: ellipsis; text-overflow: ellipsis; diff --git a/src/themes/appletv/theme.css b/src/themes/appletv/theme.css index b0f77ec1a0..6b25ba6140 100644 --- a/src/themes/appletv/theme.css +++ b/src/themes/appletv/theme.css @@ -271,25 +271,25 @@ html { border: 0.07em solid rgba(0, 0, 0, 0.158); } -.emby-checkbox:checked+ span+ .checkboxOutline, +.emby-checkbox:checked + span + .checkboxOutline, .emby-select-withcolor:focus { border-color: #00a4dc; } -.emby-checkbox:focus+ span+ .checkboxOutline { +.emby-checkbox:focus + span + .checkboxOutline { border-color: #fff; } -.emby-checkbox:checked+ span+ .checkboxOutline, +.emby-checkbox:checked + span + .checkboxOutline, .itemProgressBarForeground { background-color: #00a4dc; } -.emby-checkbox:focus:not(:checked)+ span+ .checkboxOutline { +.emby-checkbox:focus:not(:checked) + span + .checkboxOutline { border-color: #00a4dc; } -.emby-select-withcolor> option { +.emby-select-withcolor > option { color: #000; background: #fff; } diff --git a/src/themes/blueradiance/theme.css b/src/themes/blueradiance/theme.css index 435a2207ee..e86e8f4459 100644 --- a/src/themes/blueradiance/theme.css +++ b/src/themes/blueradiance/theme.css @@ -268,7 +268,7 @@ html { border: 0.07em solid transparent; } -.emby-select-withcolor> option { +.emby-select-withcolor > option { color: inherit; background: #222; } @@ -282,20 +282,20 @@ html { color: #fff !important; } -.emby-checkbox:checked+ span+ .checkboxOutline { +.emby-checkbox:checked + span + .checkboxOutline { border-color: #00a4dc; } -.emby-checkbox:focus+ span+ .checkboxOutline { +.emby-checkbox:focus + span + .checkboxOutline { border-color: #fff; } -.emby-checkbox:checked+ span+ .checkboxOutline, +.emby-checkbox:checked + span + .checkboxOutline, .itemProgressBarForeground { background-color: #00a4dc; } -.emby-checkbox:focus:not(:checked)+ span+ .checkboxOutline { +.emby-checkbox:focus:not(:checked) + span + .checkboxOutline { border-color: #00a4dc; } diff --git a/src/themes/dark/theme.css b/src/themes/dark/theme.css index 82a9bdae03..c2f4308dd0 100644 --- a/src/themes/dark/theme.css +++ b/src/themes/dark/theme.css @@ -242,7 +242,7 @@ html { border: 0.07em solid #292929; } -.emby-select-withcolor> option { +.emby-select-withcolor > option { color: inherit; background: #222; } @@ -256,20 +256,20 @@ html { color: #fff !important; } -.emby-checkbox:checked+ span+ .checkboxOutline { +.emby-checkbox:checked + span + .checkboxOutline { border-color: #00a4dc; } -.emby-checkbox:focus+ span+ .checkboxOutline { +.emby-checkbox:focus + span + .checkboxOutline { border-color: #fff; } -.emby-checkbox:checked+ span+ .checkboxOutline, +.emby-checkbox:checked + span + .checkboxOutline, .itemProgressBarForeground { background-color: #00a4dc; } -.emby-checkbox:focus:not(:checked)+ span+ .checkboxOutline { +.emby-checkbox:focus:not(:checked) + span + .checkboxOutline { border-color: #00a4dc; } diff --git a/src/themes/emby/theme.css b/src/themes/emby/theme.css index dde1627fe9..b2225a88d5 100644 --- a/src/themes/emby/theme.css +++ b/src/themes/emby/theme.css @@ -240,7 +240,7 @@ html { border: 0.07em solid #292929; } -.emby-select-withcolor> option { +.emby-select-withcolor > option { color: inherit; background: #222; } @@ -254,20 +254,20 @@ html { color: #fff !important; } -.emby-checkbox:checked+ span+ .checkboxOutline { +.emby-checkbox:checked + span + .checkboxOutline { border-color: #52b54b; } -.emby-checkbox:focus+ span+ .checkboxOutline { +.emby-checkbox:focus + span + .checkboxOutline { border-color: #fff; } -.emby-checkbox:checked+ span+ .checkboxOutline, +.emby-checkbox:checked + span + .checkboxOutline, .itemProgressBarForeground { background-color: #52b54b; } -.emby-checkbox:focus:not(:checked)+ span+ .checkboxOutline { +.emby-checkbox:focus:not(:checked) + span + .checkboxOutline { border-color: #52b54b; } diff --git a/src/themes/light/theme.css b/src/themes/light/theme.css index c076960409..beb672aecd 100644 --- a/src/themes/light/theme.css +++ b/src/themes/light/theme.css @@ -264,25 +264,25 @@ html { border: 0.07em solid rgba(0, 0, 0, 0.158); } -.emby-checkbox:checked+ span+ .checkboxOutline, +.emby-checkbox:checked + span + .checkboxOutline, .emby-select-withcolor:focus { border-color: #00a4dc; } -.emby-checkbox:focus+ span+ .checkboxOutline { +.emby-checkbox:focus + span + .checkboxOutline { border-color: #000; } -.emby-checkbox:checked+ span+ .checkboxOutline, +.emby-checkbox:checked + span + .checkboxOutline, .itemProgressBarForeground { background-color: #00a4dc; } -.emby-checkbox:focus:not(:checked)+ span+ .checkboxOutline { +.emby-checkbox:focus:not(:checked) + span + .checkboxOutline { border-color: #00a4dc; } -.emby-select-withcolor> option { +.emby-select-withcolor > option { color: #000; background: #fff; } diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index f9113a0308..f8406f2340 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -356,7 +356,7 @@ a[data-role=button] { border: 0.07em solid transparent; } -.emby-select-withcolor> option { +.emby-select-withcolor > option { color: inherit; background: #030322d7; } @@ -370,7 +370,7 @@ a[data-role=button] { color: #fff !important; } -.emby-checkbox:checked+ span+ .checkboxOutline { +.emby-checkbox:checked + span + .checkboxOutline { background-color: #030322; border: 2px solid rgb(72, 195, 200); } @@ -379,11 +379,11 @@ a[data-role=button] { color: rgb(12, 232, 214); } -.emby-checkbox:focus+ span+ .checkboxOutline { +.emby-checkbox:focus + span + .checkboxOutline { border-color: #ff77f1; } -.emby-checkbox:focus:not(:checked)+ span+ .checkboxOutline { +.emby-checkbox:focus:not(:checked) + span + .checkboxOutline { border: 2px solid #ff77f1; } diff --git a/src/themes/wmc/theme.css b/src/themes/wmc/theme.css index 1f0580d9ce..c3c97f5f03 100644 --- a/src/themes/wmc/theme.css +++ b/src/themes/wmc/theme.css @@ -254,25 +254,25 @@ html { border: 0.07em solid rgba(255, 255, 255, 0.135); } -.emby-checkbox:checked+ span+ .checkboxOutline, +.emby-checkbox:checked + span + .checkboxOutline, .emby-select-withcolor:focus { border-color: #00a4dc; } -.emby-checkbox:focus+ span+ .checkboxOutline { +.emby-checkbox:focus + span + .checkboxOutline { border-color: #fff; } -.emby-checkbox:checked+ span+ .checkboxOutline, +.emby-checkbox:checked + span + .checkboxOutline, .itemProgressBarForeground { background-color: #00a4dc; } -.emby-checkbox:focus:not(:checked)+ span+ .checkboxOutline { +.emby-checkbox:focus:not(:checked) + span + .checkboxOutline { border-color: #00a4dc; } -.emby-select-withcolor> option { +.emby-select-withcolor > option { color: #000; background: #fff; } From ce79cb653703775ca255effdd248adaac9e9238d Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 15:07:52 +0100 Subject: [PATCH 064/105] Fix selector-pseudo-element-colon-notation (CSS) --- src/assets/css/dashboard.css | 4 ++-- src/assets/css/librarybrowser.css | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/assets/css/dashboard.css b/src/assets/css/dashboard.css index 2b6d97e068..736478556b 100644 --- a/src/assets/css/dashboard.css +++ b/src/assets/css/dashboard.css @@ -22,7 +22,7 @@ progress { background: #ccc !important; } -progress[role]:after { +progress[role]::after { background-image: none; } @@ -38,7 +38,7 @@ progress::-webkit-progress-value { background-color: #00a4dc; } -progress[aria-valuenow]:before { +progress[aria-valuenow]::before { border-radius: 0.4em; background-color: #00a4dc; } diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 6ee1f63d5b..af6501c178 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -824,7 +824,7 @@ background-color: #c33; } -.recordingProgressBar[aria-valuenow]:before { +.recordingProgressBar[aria-valuenow]::before { background-color: #c33; } From 27714cb8fb387a81496518dfe612ab4e208c3df4 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 15:45:20 +0100 Subject: [PATCH 065/105] Add stylelint config --- .stylelintrc | 160 ++++++++++++++++ package.json | 3 + yarn.lock | 507 ++++++++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 643 insertions(+), 27 deletions(-) create mode 100644 .stylelintrc diff --git a/.stylelintrc b/.stylelintrc new file mode 100644 index 0000000000..5f0bc35c21 --- /dev/null +++ b/.stylelintrc @@ -0,0 +1,160 @@ +{ + "plugins": [ + "stylelint-no-browser-hacks/lib", + "stylelint-order", + "stylelint-config-rational-order/plugin" + ], + "rules": { + "at-rule-empty-line-before": [ "always", { + except: [ + "blockless-after-same-name-blockless", + "first-nested", + ], + ignore: ["after-comment"], + } ], + "at-rule-name-case": "lower", + "at-rule-name-space-after": "always-single-line", + "at-rule-no-unknown": true, + "at-rule-semicolon-newline-after": "always", + "block-closing-brace-empty-line-before": "never", + "block-closing-brace-newline-after": "always", + "block-closing-brace-newline-before": "always-multi-line", + "block-closing-brace-space-before": "always-single-line", + "block-no-empty": true, + "block-opening-brace-newline-after": "always-multi-line", + "block-opening-brace-space-after": "always-single-line", + "block-opening-brace-space-before": "always", + "color-hex-case": "lower", + "color-hex-length": "short", + "color-no-invalid-hex": true, + "comment-empty-line-before": [ "always", { + except: ["first-nested"], + ignore: ["stylelint-commands"], + } ], + "comment-no-empty": true, + "comment-whitespace-inside": "always", + "custom-property-empty-line-before": [ "always", { + except: [ + "after-custom-property", + "first-nested", + ], + ignore: [ + "after-comment", + "inside-single-line-block", + ], + } ], + "declaration-bang-space-after": "never", + "declaration-bang-space-before": "always", + "declaration-block-no-duplicate-properties": [ + true, + { + ignore: ["consecutive-duplicates-with-different-values"] + } + ], + "declaration-block-no-shorthand-property-overrides": true, + "declaration-block-semicolon-newline-after": "always-multi-line", + "declaration-block-semicolon-space-after": "always-single-line", + "declaration-block-semicolon-space-before": "never", + "declaration-block-single-line-max-declarations": 1, + "declaration-block-trailing-semicolon": "always", + "declaration-colon-newline-after": "always-multi-line", + "declaration-colon-space-after": "always-single-line", + "declaration-colon-space-before": "never", + "declaration-empty-line-before": [ "always", { + except: [ + "after-declaration", + "first-nested", + ], + ignore: [ + "after-comment", + "inside-single-line-block", + ], + } ], + "font-family-no-duplicate-names": true, + "function-calc-no-invalid": true, + "function-calc-no-unspaced-operator": true, + "function-comma-newline-after": "always-multi-line", + "function-comma-space-after": "always-single-line", + "function-comma-space-before": "never", + "function-linear-gradient-no-nonstandard-direction": true, + "function-max-empty-lines": 0, + "function-name-case": "lower", + "function-parentheses-newline-inside": "always-multi-line", + "function-parentheses-space-inside": "never-single-line", + "function-whitespace-after": "always", + "indentation": 2, + "keyframe-declaration-no-important": true, + "length-zero-no-unit": true, + "max-empty-lines": 1, + "media-feature-colon-space-after": "always", + "media-feature-colon-space-before": "never", + "media-feature-name-case": "lower", + "media-feature-name-no-unknown": true, + "media-feature-parentheses-space-inside": "never", + "media-feature-range-operator-space-after": "always", + "media-feature-range-operator-space-before": "always", + "media-query-list-comma-newline-after": "always-multi-line", + "media-query-list-comma-space-after": "always-single-line", + "media-query-list-comma-space-before": "never", + "no-descending-specificity": true, + "no-duplicate-at-import-rules": true, + "no-duplicate-selectors": true, + "no-empty-source": true, + "no-eol-whitespace": true, + "no-extra-semicolons": true, + "no-invalid-double-slash-comments": true, + "no-missing-end-of-source-newline": true, + "order/properties-order": [], + "number-leading-zero": "always", + "number-no-trailing-zeros": true, + "plugin/no-browser-hacks": true, + "plugin/rational-order": [true, { + "border-in-box-model": false, + "empty-line-between-groups": true, + }], + "property-case": "lower", + "property-no-unknown": [ + true, + { + "ignoreProperties": [ + "user-drag" + ] + } + ], + "rule-empty-line-before": [ "always-multi-line", { + except: ["first-nested"], + ignore: ["after-comment"], + } ], + "selector-attribute-brackets-space-inside": "never", + "selector-attribute-operator-space-after": "never", + "selector-attribute-operator-space-before": "never", + "selector-combinator-space-after": "always", + "selector-combinator-space-before": "always", + "selector-descendant-combinator-no-non-space": true, + "selector-list-comma-newline-after": "always", + "selector-list-comma-space-before": "never", + "selector-max-empty-lines": 0, + "selector-pseudo-class-case": "lower", + "selector-pseudo-class-no-unknown": true, + "selector-pseudo-class-parentheses-space-inside": "never", + "selector-pseudo-element-case": "lower", + "selector-pseudo-element-colon-notation": "double", + "selector-pseudo-element-no-unknown": [ + true, + { + "ignorePseudoElements": [ + "cue" + ] + } + ], + "selector-type-case": "lower", + "selector-type-no-unknown": true, + "string-no-newline": true, + "unit-case": "lower", + "unit-no-unknown": true, + "value-list-comma-newline-after": "always-multi-line", + "value-list-comma-space-after": "always-single-line", + "value-list-comma-space-before": "never", + "value-list-max-empty-lines": 0, + } +} \ No newline at end of file diff --git a/package.json b/package.json index f46fe59035..ba614a3a33 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,9 @@ "html-webpack-plugin": "^3.2.0", "style-loader": "^0.23.1", "stylelint": "^13.0.0", + "stylelint-config-rational-order": "^0.1.2", + "stylelint-no-browser-hacks": "^1.2.1", + "stylelint-order": "^4.0.0", "webpack": "^4.41.0", "webpack-cli": "^3.3.9", "webpack-concat-plugin": "^3.0.0", diff --git a/yarn.lock b/yarn.lock index b79e6a51fb..73a3ff982d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -523,6 +523,11 @@ ansi-regex@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -581,6 +586,11 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -591,7 +601,7 @@ array-flatten@^2.1.0: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== -array-union@^1.0.1: +array-union@^1.0.1, array-union@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= @@ -959,6 +969,15 @@ camel-case@3.0.x: no-case "^2.2.0" upper-case "^1.1.1" +camelcase-keys@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" + integrity sha1-oqpfsa9oh1glnDLBQUJteJI7m3c= + dependencies: + camelcase "^4.1.0" + map-obj "^2.0.0" + quick-lru "^1.0.0" + camelcase-keys@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.1.1.tgz#0d24dde78cea4c7d2da7f4ea40b7995083328c8d" @@ -968,6 +987,11 @@ camelcase-keys@^6.1.1: map-obj "^4.0.0" quick-lru "^4.0.1" +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + camelcase@^5.0.0, camelcase@^5.2.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" @@ -982,6 +1006,17 @@ chalk@2.4.2, chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + chalk@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" @@ -1128,6 +1163,14 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" +clone-regexp@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-1.0.1.tgz#051805cd33173375d82118fc0918606da39fd60f" + integrity sha512-Fcij9IwRW27XedRIJnSOEupS7RVcXtObJXbcUOX93UCLqqOdRpkvzKywOOSizmEK/Is3S/RHX9dLdfo6R1Q1mw== + dependencies: + is-regexp "^1.0.0" + is-supported-regexp-flag "^1.0.0" + clone-regexp@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-2.2.0.tgz#7d65e00885cd8796405c35a737e7a86b7429e36f" @@ -1436,6 +1479,13 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= + dependencies: + array-find-index "^1.0.1" + cyclist@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" @@ -1460,14 +1510,14 @@ debug@^3.0.0, debug@^3.2.5, debug@^3.2.6: dependencies: ms "^2.1.1" -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: +debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== dependencies: ms "^2.1.1" -decamelize-keys@^1.1.0: +decamelize-keys@^1.0.0, decamelize-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= @@ -1612,7 +1662,7 @@ dir-glob@2.0.0: arrify "^1.0.1" path-type "^3.0.0" -dir-glob@^2.0.0: +dir-glob@^2.0.0, dir-glob@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== @@ -1834,7 +1884,7 @@ escape-html@~1.0.3: resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= @@ -1987,6 +2037,13 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execall@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execall/-/execall-1.0.0.tgz#73d0904e395b3cab0658b08d09ec25307f29bb73" + integrity sha1-c9CQTjlbPKsGWLCNCewlMH8pu3M= + dependencies: + clone-regexp "^1.0.0" + execall@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/execall/-/execall-2.0.0.tgz#16a06b5fe5099df7d00be5d9c06eecded1663b45" @@ -2098,7 +2155,7 @@ fast-deep-equal@^2.0.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= -fast-glob@^2.0.2: +fast-glob@^2.0.2, fast-glob@^2.2.6: version "2.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== @@ -2164,6 +2221,13 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" +file-entry-cache@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-4.0.0.tgz#633567d15364aefe0b299e1e217735e8f3a9f6e8" + integrity sha512-AVSwsnbV8vH/UVbvgEhf3saVQXORNv0ZzSkvkhQIaia5Tia+JhGTaa/ePUSVoPHQyGayQNmYfkzFi3WZV5zcpA== + dependencies: + flat-cache "^2.0.1" + file-entry-cache@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" @@ -2218,6 +2282,13 @@ find-cache-dir@^2.1.0: make-dir "^2.0.0" pkg-dir "^3.0.0" +find-up@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -2257,6 +2328,11 @@ flatted@^2.0.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + flush-write-stream@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" @@ -2350,6 +2426,11 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +gather-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gather-stream/-/gather-stream-1.0.0.tgz#b33994af457a8115700d410f317733cbe7a0904b" + integrity sha1-szmUr0V6gRVwDUEPMXczy+egkEs= + gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -2379,6 +2460,11 @@ get-caller-file@^2.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-stdin@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" + integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== + get-stdin@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" @@ -2517,12 +2603,26 @@ globby@^8.0.1: pify "^3.0.0" slash "^1.0.0" +globby@^9.0.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" + integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^1.0.2" + dir-glob "^2.2.2" + fast-glob "^2.2.6" + glob "^7.1.3" + ignore "^4.0.3" + pify "^4.0.1" + slash "^2.0.0" + globjoin@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" integrity sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM= -gonzales-pe@^4.2.4: +gonzales-pe@^4.2.3, gonzales-pe@^4.2.4: version "4.2.4" resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.2.4.tgz#356ae36a312c46fe0f1026dd6cb539039f8500d2" integrity sha512-v0Ts/8IsSbh9n1OJRnSfa7Nlxi4AkXIsWB6vPept8FDbL4bXn3FNuxjYtO/nmBGu7GDkL9MFeGebeSu6l55EPQ== @@ -2544,6 +2644,18 @@ hard-rejection@^2.0.0: resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -2685,6 +2797,11 @@ html-minifier@^3.2.3: relateurl "0.2.x" uglify-js "3.4.x" +html-tags@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b" + integrity sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos= + html-tags@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" @@ -2822,7 +2939,7 @@ ignore@^3.3.5: resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== -ignore@^4.0.6: +ignore@^4.0.3, ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== @@ -2848,6 +2965,11 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= +indent-string@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= + indent-string@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" @@ -2948,6 +3070,11 @@ ipaddr.js@^1.9.0: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== +irregular-plurals@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-1.4.0.tgz#2ca9b033651111855412f16be5d77c62a458a766" + integrity sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y= + is-absolute-url@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" @@ -3167,6 +3294,11 @@ is-regex@^1.0.4: dependencies: has "^1.0.1" +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + is-regexp@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-2.1.0.tgz#cd734a56864e23b956bf4e7c66c396a4c0b22c2d" @@ -3177,6 +3309,11 @@ is-stream@^1.1.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= +is-supported-regexp-flag@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.1.tgz#21ee16518d2c1dd3edd3e9a0d57e50207ac364ca" + integrity sha512-3vcJecUUrpgCqc/ca0aWeNu64UGgxcvO60K/Fkr1N6RSvfGCTU60UKN68JDmKokgba0rFFJs12EnzOQa14ubKQ== + is-symbol@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" @@ -3236,6 +3373,11 @@ jquery@>=1.9.1, jquery@^3.4.1: resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2" integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw== +js-base64@^2.1.9: + version "2.5.1" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121" + integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw== + js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -3329,6 +3471,11 @@ kind-of@^6.0.0, kind-of@^6.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== +known-css-properties@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.11.0.tgz#0da784f115ea77c76b81536d7052e90ee6c86a8a" + integrity sha512-bEZlJzXo5V/ApNNa5z375mJC6Nrz4vG43UgcSCrg2OHC+yuB6j0iDSrY7RQ/+PRofFB03wNIIt9iXIVLr4wc7w== + known-css-properties@^0.17.0: version "0.17.0" resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.17.0.tgz#1c535f530ee8e9e3e27bb6a718285780e1d07326" @@ -3341,6 +3488,11 @@ lcid@^2.0.0: dependencies: invert-kv "^2.0.0" +leven@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" + integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= + leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -3369,6 +3521,16 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + loader-runner@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" @@ -3393,6 +3555,14 @@ loader-utils@^0.2.16: json5 "^0.5.0" object-assign "^4.0.1" +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -3408,12 +3578,19 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3: +lodash@^4.1.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== -log-symbols@^2.2.0: +log-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" + integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= + dependencies: + chalk "^1.0.0" + +log-symbols@^2.0.0, log-symbols@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== @@ -3437,6 +3614,14 @@ longest-streak@^2.0.1: resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.3.tgz#3de7a3f47ee18e9074ded8575b5c091f5d0a4105" integrity sha512-9lz5IVdpwsKLMzQi0MQ+oD9EA0mIGcWYP7jXMTZVXP8D42PwuAk+M/HBFYQoxt1G5OR8m7aSIgb1UymfWGBWEw== +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + lower-case@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" @@ -3479,6 +3664,11 @@ map-obj@^1.0.0: resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= +map-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" + integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk= + map-obj@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.1.0.tgz#b91221b542734b9f14256c0132c897c5d7256fd5" @@ -3501,7 +3691,7 @@ markdown-table@^1.1.0: resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60" integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== -mathml-tag-names@^2.1.1: +mathml-tag-names@^2.0.1, mathml-tag-names@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.1.tgz#6dff66c99d55ecf739ca53c492e626f1d12a33cc" integrity sha512-pWB896KPGSGkp1XtyzRBftpTzwSOL0Gfk0wLvxt4f2mgzjY19o0LxJ3U25vNWTzsh7da+KTbuXQoQ3lOJZ8WHw== @@ -3544,6 +3734,21 @@ memory-fs@^0.4.0, memory-fs@^0.4.1: errno "^0.1.3" readable-stream "^2.0.1" +meow@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4" + integrity sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig== + dependencies: + camelcase-keys "^4.0.0" + decamelize-keys "^1.0.0" + loud-rejection "^1.0.0" + minimist-options "^3.0.1" + normalize-package-data "^2.3.4" + read-pkg-up "^3.0.0" + redent "^2.0.0" + trim-newlines "^2.0.0" + yargs-parser "^10.0.0" + meow@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/meow/-/meow-6.0.0.tgz#949196fdf21d979379e3bdccb0411e60f8cffd93" @@ -3670,6 +3875,14 @@ minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" +minimist-options@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" + integrity sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + minimist-options@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.0.2.tgz#29c4021373ded40d546186725e57761e4b1984a7" @@ -3905,7 +4118,7 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -normalize-package-data@^2.5.0: +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" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -4157,6 +4370,11 @@ p-retry@^3.0.1: dependencies: retry "^0.12.0" +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" @@ -4300,7 +4518,7 @@ pify@^3.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= -pify@^4.0.1: +pify@^4.0.0, pify@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== @@ -4324,6 +4542,13 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" +plur@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/plur/-/plur-2.1.2.tgz#7482452c1a0f508e3e344eaec312c91c29dc655a" + integrity sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo= + dependencies: + irregular-plurals "^1.0.0" + portfinder@^1.0.24: version "1.0.24" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.24.tgz#11efbc6865f12f37624b6531ead1d809ed965cfa" @@ -4370,7 +4595,17 @@ postcss-modules-values@^2.0.0: icss-replace-symbols "^1.1.0" postcss "^7.0.6" -postcss-reporter@^6.0.1: +postcss-reporter@^1.3.3: + version "1.4.1" + resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-1.4.1.tgz#c136f0a5b161915f379dd3765c61075f7e7b9af2" + integrity sha1-wTbwpbFhkV83ndN2XGEHX357mvI= + dependencies: + chalk "^1.0.0" + lodash "^4.1.0" + log-symbols "^1.0.2" + postcss "^5.0.0" + +postcss-reporter@^6.0.0, postcss-reporter@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-6.0.1.tgz#7c055120060a97c8837b4e48215661aafb74245f" integrity sha512-LpmQjfRWyabc+fRygxZjpRxfhRf9u/fdlKf4VHG4TSPbV2XNsuISzYW1KL+1aQzx53CAppa1bKG4APIB/DOXXw== @@ -4385,13 +4620,21 @@ postcss-resolve-nested-selector@^0.1.1: resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e" integrity sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4= -postcss-safe-parser@^4.0.1: +postcss-safe-parser@^4.0.0, postcss-safe-parser@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz#8756d9e4c36fdce2c72b091bbc8ca176ab1fcdea" integrity sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ== dependencies: postcss "^7.0.0" +postcss-sass@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/postcss-sass/-/postcss-sass-0.3.5.tgz#6d3e39f101a53d2efa091f953493116d32beb68c" + integrity sha512-B5z2Kob4xBxFjcufFnhQ2HqJQ2y/Zs/ic5EZbCywCkxKd756Q40cIQ/veRDwSrw1BF6+4wUgmpm0sBASqVi65A== + dependencies: + gonzales-pe "^4.2.3" + postcss "^7.0.1" + postcss-sass@^0.4.2: version "0.4.2" resolved "https://registry.yarnpkg.com/postcss-sass/-/postcss-sass-0.4.2.tgz#7d1f8ddf6960d329de28fb3ff43c9c42013646bc" @@ -4407,6 +4650,15 @@ postcss-scss@^2.0.0: dependencies: postcss "^7.0.0" +postcss-selector-parser@^2.0.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" + integrity sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A= + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + postcss-selector-parser@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865" @@ -4425,6 +4677,22 @@ postcss-selector-parser@^6.0.0: indexes-of "^1.0.1" uniq "^1.0.1" +postcss-sorting@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-sorting/-/postcss-sorting-4.1.0.tgz#a107f0bf3852977fa64e4442bc340c88d5aacdb3" + integrity sha512-r4T2oQd1giURJdHQ/RMb72dKZCuLOdWx2B/XhXN1Y1ZdnwXsKH896Qz6vD4tFy9xSjpKNYhlZoJmWyhH/7JUQw== + dependencies: + lodash "^4.17.4" + postcss "^7.0.0" + +postcss-sorting@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-sorting/-/postcss-sorting-5.0.1.tgz#10d5d0059eea8334dacc820c0121864035bc3f11" + integrity sha512-Y9fUFkIhfrm6i0Ta3n+89j56EFqaNRdUKqXyRp6kvTcSXnmgEjaVowCXH+JBe9+YKWqd4nc28r2sgwnzJalccA== + dependencies: + lodash "^4.17.14" + postcss "^7.0.17" + postcss-syntax@^0.36.2: version "0.36.2" resolved "https://registry.yarnpkg.com/postcss-syntax/-/postcss-syntax-0.36.2.tgz#f08578c7d95834574e5593a82dfbfa8afae3b51c" @@ -4444,10 +4712,10 @@ postcss@^7.0.14, postcss@^7.0.5, postcss@^7.0.6: source-map "^0.6.1" supports-color "^6.1.0" -postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.7: - version "7.0.26" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.26.tgz#5ed615cfcab35ba9bbb82414a4fa88ea10429587" - integrity sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA== +postcss@^7.0.14, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.17" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.17.tgz#4da1bdff5322d4a0acaab4d87f3e782436bad31f" + integrity sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ== dependencies: chalk "^2.4.2" source-map "^0.6.1" @@ -4571,6 +4839,11 @@ querystringify@^2.1.1: resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== +quick-lru@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" + integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= + quick-lru@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" @@ -4616,6 +4889,21 @@ rc@^1.2.7: 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" + integrity sha1-JezP86FTtoCa+ssj7hU4fbng7mE= + dependencies: + gather-stream "^1.0.0" + +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= + dependencies: + find-up "^2.0.0" + read-pkg "^3.0.0" + read-pkg-up@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" @@ -4625,6 +4913,15 @@ read-pkg-up@^7.0.0: read-pkg "^5.2.0" type-fest "^0.8.1" +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + read-pkg@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" @@ -4666,6 +4963,14 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" +redent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" + integrity sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo= + dependencies: + indent-string "^3.0.0" + strip-indent "^2.0.0" + redent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" @@ -5104,6 +5409,11 @@ slash@^1.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -5445,11 +5755,21 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= +strip-indent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" + integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= + strip-indent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" @@ -5475,6 +5795,57 @@ style-search@^0.1.0: resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902" integrity sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI= +stylehacks@^2.3: + version "2.3.2" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-2.3.2.tgz#64c83e0438a68c9edf449e8c552a7d9ab6009b0b" + integrity sha1-ZMg+BDimjJ7fRJ6MVSp9mrYAmws= + dependencies: + browserslist "^1.1.3" + chalk "^1.1.1" + log-symbols "^1.0.2" + minimist "^1.2.0" + plur "^2.1.2" + postcss "^5.0.18" + postcss-reporter "^1.3.3" + postcss-selector-parser "^2.0.0" + read-file-stdin "^0.2.1" + text-table "^0.2.0" + write-file-stdout "0.0.2" + +stylelint-config-rational-order@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/stylelint-config-rational-order/-/stylelint-config-rational-order-0.1.2.tgz#4e98e390783d437f0ec41fb73bc41992e78d02a0" + integrity sha512-Qo7ZQaihCwTqijfZg4sbdQQHtugOX/B1/fYh018EiDZHW+lkqH9uHOnsDwDPGZrYJuB6CoyI7MZh2ecw2dOkew== + dependencies: + stylelint "^9.10.1" + stylelint-order "^2.2.1" + +stylelint-no-browser-hacks@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/stylelint-no-browser-hacks/-/stylelint-no-browser-hacks-1.2.1.tgz#c6ae1a53d04d3a8d32de40b6e9b6dec3ec607dea" + integrity sha512-lPcqHx3e/WnrXdw0wdnKtcjcSCAYEXjwSitXRw0OQ2qPF+iLyDFoarbn4qcw38Uuu7q29fhj+w2mECLM0fUOlw== + dependencies: + stylehacks "^2.3" + stylelint "^9.1" + +stylelint-order@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/stylelint-order/-/stylelint-order-2.2.1.tgz#cd2d4a0d81d91c705f1d275a58487e5ad5aa5828" + integrity sha512-019KBV9j8qp1MfBjJuotse6MgaZqGVtXMc91GU9MsS9Feb+jYUvUU3Z8XiClqPdqJZQ0ryXQJGg3U3PcEjXwfg== + dependencies: + lodash "^4.17.10" + postcss "^7.0.2" + postcss-sorting "^4.1.0" + +stylelint-order@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/stylelint-order/-/stylelint-order-4.0.0.tgz#2a945c2198caac3ff44687d7c8582c81d044b556" + integrity sha512-bXV0v+jfB0+JKsqIn3mLglg1Dj2QCYkFHNfL1c+rVMEmruZmW5LUqT/ARBERfBm8SFtCuXpEdatidw/3IkcoiA== + dependencies: + lodash "^4.17.15" + postcss "^7.0.26" + postcss-sorting "^5.0.1" + stylelint@^13.0.0: version "13.0.0" resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-13.0.0.tgz#532007f7154c1a5ed14245d857a5884316f5111f" @@ -5529,6 +5900,59 @@ stylelint@^13.0.0: v8-compile-cache "^2.1.0" write-file-atomic "^3.0.1" +stylelint@^9.1, stylelint@^9.10.1: + version "9.10.1" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-9.10.1.tgz#5f0ee3701461dff1d68284e1386efe8f0677a75d" + integrity sha512-9UiHxZhOAHEgeQ7oLGwrwoDR8vclBKlSX7r4fH0iuu0SfPwFaLkb1c7Q2j1cqg9P7IDXeAV2TvQML/fRQzGBBQ== + dependencies: + autoprefixer "^9.0.0" + balanced-match "^1.0.0" + chalk "^2.4.1" + cosmiconfig "^5.0.0" + debug "^4.0.0" + execall "^1.0.0" + file-entry-cache "^4.0.0" + get-stdin "^6.0.0" + global-modules "^2.0.0" + globby "^9.0.0" + globjoin "^0.1.4" + html-tags "^2.0.0" + ignore "^5.0.4" + import-lazy "^3.1.0" + imurmurhash "^0.1.4" + known-css-properties "^0.11.0" + leven "^2.1.0" + lodash "^4.17.4" + log-symbols "^2.0.0" + mathml-tag-names "^2.0.1" + meow "^5.0.0" + micromatch "^3.1.10" + normalize-selector "^0.2.0" + pify "^4.0.0" + postcss "^7.0.13" + postcss-html "^0.36.0" + postcss-jsx "^0.36.0" + postcss-less "^3.1.0" + postcss-markdown "^0.36.0" + postcss-media-query-parser "^0.2.3" + postcss-reporter "^6.0.0" + postcss-resolve-nested-selector "^0.1.1" + postcss-safe-parser "^4.0.0" + postcss-sass "^0.3.5" + postcss-scss "^2.0.0" + postcss-selector-parser "^3.1.0" + postcss-syntax "^0.36.2" + postcss-value-parser "^3.3.0" + resolve-from "^4.0.0" + signal-exit "^3.0.2" + slash "^2.0.0" + specificity "^0.4.1" + string-width "^3.0.0" + style-search "^0.1.0" + sugarss "^2.0.0" + svg-tags "^1.0.0" + table "^5.0.0" + sugarss@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-2.0.0.tgz#ddd76e0124b297d40bf3cca31c8b22ecb43bc61d" @@ -5543,6 +5967,18 @@ supports-color@6.1.0, supports-color@^6.1.0: dependencies: has-flag "^3.0.0" +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= + dependencies: + has-flag "^1.0.0" + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -5567,20 +6003,20 @@ swiper@^3.4.2: resolved "https://registry.yarnpkg.com/swiper/-/swiper-3.4.2.tgz#39d6b410b1a39833e1f72d3b72999df5f5e38392" integrity sha1-Oda0ELGjmDPh9y07cpmd9fXjg5I= -table@^5.2.3: - version "5.4.5" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.5.tgz#c8f4ea2d8fee08c0027fac27b0ec0a4fe01dfa42" - integrity sha512-oGa2Hl7CQjfoaogtrOHEJroOcYILTx7BZWLGsJIlzoWmB2zmguhNfPJZsWPKYek/MgCxfco54gEi31d1uN2hFA== +table@^5.0.0, table@^5.4.6: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== dependencies: ajv "^6.10.2" lodash "^4.17.14" slice-ansi "^2.1.0" string-width "^3.0.0" -table@^5.4.6: - version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== +table@^5.2.3: + version "5.4.5" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.5.tgz#c8f4ea2d8fee08c0027fac27b0ec0a4fe01dfa42" + integrity sha512-oGa2Hl7CQjfoaogtrOHEJroOcYILTx7BZWLGsJIlzoWmB2zmguhNfPJZsWPKYek/MgCxfco54gEi31d1uN2hFA== dependencies: ajv "^6.10.2" lodash "^4.17.14" @@ -5718,6 +6154,11 @@ toposort@^1.0.0: resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= +trim-newlines@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" + integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA= + trim-newlines@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.0.tgz#79726304a6a898aa8373427298d54c2ee8b1cb30" @@ -6306,6 +6747,11 @@ write-file-atomic@^3.0.1: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" +write-file-stdout@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/write-file-stdout/-/write-file-stdout-0.0.2.tgz#c252d7c7c5b1b402897630e3453c7bfe690d9ca1" + integrity sha1-wlLXx8WxtAKJdjDjRTx7/mkNnKE= + write@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" @@ -6347,6 +6793,13 @@ yaml@^1.7.2: dependencies: "@babel/runtime" "^7.6.3" +yargs-parser@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" + integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== + dependencies: + camelcase "^4.1.0" + yargs-parser@^11.1.1: version "11.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" From e411ceab5a4106448f98e24744afca9cf32e0d55 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 16:05:35 +0100 Subject: [PATCH 066/105] Add CSS linting to CI --- .ci/azure-pipelines.yml | 4 ++++ .stylelintrc | 10 ---------- package.json | 1 + 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/.ci/azure-pipelines.yml b/.ci/azure-pipelines.yml index 0d6b018e07..1b16b94b62 100644 --- a/.ci/azure-pipelines.yml +++ b/.ci/azure-pipelines.yml @@ -57,3 +57,7 @@ jobs: - script: 'yarn run lint' displayName: 'Run ESLint' + + - script: | + yarn run stylelint + displayName: 'Run stylelint' diff --git a/.stylelintrc b/.stylelintrc index 5f0bc35c21..c093f6c7f9 100644 --- a/.stylelintrc +++ b/.stylelintrc @@ -60,16 +60,6 @@ "declaration-colon-newline-after": "always-multi-line", "declaration-colon-space-after": "always-single-line", "declaration-colon-space-before": "never", - "declaration-empty-line-before": [ "always", { - except: [ - "after-declaration", - "first-nested", - ], - ignore: [ - "after-comment", - "inside-single-line-block", - ], - } ], "font-family-no-duplicate-names": true, "function-calc-no-invalid": true, "function-calc-no-unspaced-operator": true, diff --git a/package.json b/package.json index ba614a3a33..1b144ea30a 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ "serve": "webpack-dev-server --config webpack.dev.js --open", "build": "webpack --config webpack.prod.js", "lint": "eslint \"src\"", + "stylelint": "stylelint src/**/*.css", "prepare": "webpack --config webpack.prod.js" } } From c53d92accf166718cdc98b48a29bcfdb3352e798 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Mon, 20 Jan 2020 21:14:01 +0100 Subject: [PATCH 067/105] Fix unexpected unit remaining --- .stylelintrc | 8 -------- src/assets/css/librarybrowser.css | 2 +- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/.stylelintrc b/.stylelintrc index c093f6c7f9..57ef97a70d 100644 --- a/.stylelintrc +++ b/.stylelintrc @@ -1,8 +1,6 @@ { "plugins": [ "stylelint-no-browser-hacks/lib", - "stylelint-order", - "stylelint-config-rational-order/plugin" ], "rules": { "at-rule-empty-line-before": [ "always", { @@ -72,7 +70,6 @@ "function-parentheses-newline-inside": "always-multi-line", "function-parentheses-space-inside": "never-single-line", "function-whitespace-after": "always", - "indentation": 2, "keyframe-declaration-no-important": true, "length-zero-no-unit": true, "max-empty-lines": 1, @@ -94,14 +91,9 @@ "no-extra-semicolons": true, "no-invalid-double-slash-comments": true, "no-missing-end-of-source-newline": true, - "order/properties-order": [], "number-leading-zero": "always", "number-no-trailing-zeros": true, "plugin/no-browser-hacks": true, - "plugin/rational-order": [true, { - "border-in-box-model": false, - "empty-line-between-groups": true, - }], "property-case": "lower", "property-no-unknown": [ true, diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index af6501c178..0749c13581 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -25,7 +25,7 @@ } .itemDetailPage { - padding-top: 0em !important; + padding-top: 0 !important; } .standalonePage { From 1646cac34ac75699e87e90b5bc4a872b19397dd2 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Mon, 20 Jan 2020 21:34:18 +0100 Subject: [PATCH 068/105] Remove IE11 from browsersist --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 1b144ea30a..55c02ffbd9 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,6 @@ "Chrome 53", "Chrome 56", "Chrome 63", - "Explorer 11", "Firefox ESR" ], "scripts": { From 8634ae8400059e89027ffdc560c8c09682d61181 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Wed, 22 Jan 2020 21:40:45 +0100 Subject: [PATCH 069/105] Fix rebasing issues --- src/assets/css/dashboard.css | 26 ++--- src/assets/css/fonts.css | 4 +- src/assets/css/librarybrowser.css | 80 ++++++-------- src/assets/css/scrollstyles.css | 17 ++- src/assets/css/site.css | 2 +- src/assets/css/videoosd.css | 27 ++--- src/components/cardbuilder/card.css | 102 ++++++++++++------ src/components/dialogHelper/dialoghelper.css | 6 +- src/components/formdialog.css | 4 +- src/components/guide/guide.css | 56 +++++++--- src/components/homesections/homesections.css | 4 +- src/components/images/style.css | 37 +++---- src/components/imageuploader/style.css | 5 +- src/components/indicators/indicators.css | 3 +- src/components/listview/listview.css | 16 ++- src/components/navdrawer/navdrawer.css | 10 +- .../nowplayingbar/nowplayingbar.css | 10 +- .../remotecontrol/remotecontrol.css | 17 +-- src/components/slideshow/style.css | 8 +- src/components/viewManager/viewContainer.css | 2 + src/elements/emby-button/emby-button.css | 10 +- src/elements/emby-checkbox/emby-checkbox.css | 1 + src/elements/emby-input/emby-input.css | 8 +- src/elements/emby-radio/emby-radio.css | 1 + src/elements/emby-select/emby-select.css | 8 +- src/elements/emby-slider/emby-slider.css | 4 +- src/elements/emby-textarea/emby-textarea.css | 8 +- src/themes/appletv/theme.css | 38 +++---- src/themes/blueradiance/theme.css | 34 +++--- src/themes/dark/theme.css | 14 +-- src/themes/light/theme.css | 16 +-- src/themes/purplehaze/theme.css | 30 +++--- src/themes/wmc/theme.css | 50 ++++----- 33 files changed, 382 insertions(+), 276 deletions(-) diff --git a/src/assets/css/dashboard.css b/src/assets/css/dashboard.css index 736478556b..8c8a9ca7f1 100644 --- a/src/assets/css/dashboard.css +++ b/src/assets/css/dashboard.css @@ -2,7 +2,7 @@ .dashboardSections { flex-direction: column; -webkit-box-orient: vertical; - -webkit-box-direction: normal + -webkit-box-direction: normal; } .dashboardFooter { @@ -99,17 +99,17 @@ div[data-role=controlgroup] a[data-role=button] { } div[data-role=controlgroup] a[data-role=button]:first-child { - -webkit-border-bottom-left-radius: .3125em; - border-bottom-left-radius: .3125em; - -webkit-border-top-left-radius: .3125em; - border-top-left-radius: .3125em; + -webkit-border-bottom-left-radius: 0.3125em; + border-bottom-left-radius: 0.3125em; + -webkit-border-top-left-radius: 0.3125em; + border-top-left-radius: 0.3125em; } div[data-role=controlgroup] a[data-role=button]:last-child { - -webkit-border-bottom-right-radius: .3125em; - border-bottom-right-radius: .3125em; - -webkit-border-top-right-radius: .3125em; - border-top-right-radius: .3125em; + -webkit-border-bottom-right-radius: 0.3125em; + border-bottom-right-radius: 0.3125em; + -webkit-border-top-right-radius: 0.3125em; + border-top-right-radius: 0.3125em; } div[data-role=controlgroup] a[data-role=button] + a[data-role=button] { @@ -425,12 +425,12 @@ div[data-role=controlgroup] a.ui-btn-active { @-webkit-keyframes rotating { from { -webkit-transform: rotate(0); - transform: rotate(0) + transform: rotate(0); } to { -webkit-transform: rotate(360deg); - transform: rotate(360deg) + transform: rotate(360deg); } } @@ -452,8 +452,8 @@ div[data-role=controlgroup] a.ui-btn-active { } .pluginPreviewImg { - -webkit-box-shadow: 0 .0725em .29em 0 rgba(0, 0, 0, .37); - box-shadow: 0 .0725em .29em 0 rgba(0, 0, 0, .37); + -webkit-box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37); + box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37); } .ui-bar-a { diff --git a/src/assets/css/fonts.css b/src/assets/css/fonts.css index c52eb653e8..1fd4a14a02 100644 --- a/src/assets/css/fonts.css +++ b/src/assets/css/fonts.css @@ -5,7 +5,9 @@ html { text-size-adjust: 100%; } -h1, h2, h3 { +h1, + h2, + h3 { /* For better bolding, since Helvetica does not support 500 weight, and 600 is too thick */ font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen-Sans", "Ubuntu", "Cantarell", "Helvetica Neue", 'Open Sans', sans-serif; } diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 0749c13581..26b65115b6 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -48,9 +48,9 @@ z-index: 1; margin: 0 !important; top: 6.9em !important; - -webkit-transition: -webkit-transform .2s ease-out; - -o-transition: transform .2s ease-out; - transition: transform .2s ease-out; + -webkit-transition: -webkit-transform 0.2s ease-out; + -o-transition: transform 0.2s ease-out; + transition: transform 0.2s ease-out; } .pageTabContent:not(.is-active) { @@ -84,9 +84,15 @@ display: none; } -.headerLeft, -.headerRight { - justify-content: center; +.headerLeft { + display: flex; + -webkit-align-items: center; + align-items: center; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + flex-grow: 1; + overflow: hidden; + justify-content: flex-start; } .headerRight { @@ -121,7 +127,7 @@ .headerLeft, .skinHeader { display: -webkit-box; - display: -webkit-flex + display: -webkit-flex; } .detailButton-mobile, @@ -129,7 +135,7 @@ flex-direction: column; -webkit-flex-direction: column; -webkit-box-orient: vertical; - -webkit-box-direction: normal + -webkit-box-direction: normal; } .pageTitleWithLogo { @@ -152,11 +158,6 @@ contain: layout style paint; } -.headerLeft, -.headerRight { - -webkit-box-align: center -} - .hiddenViewMenuBar .skinHeader { display: none; } @@ -165,17 +166,6 @@ padding: 0.54em 0; } -.headerLeft { - display: flex; - -webkit-align-items: center; - align-items: center; - -webkit-box-flex: 1; - -webkit-flex-grow: 1; - flex-grow: 1; - overflow: hidden; - justify-content: flex-start; -} - .sectionTabs { width: 100%; } @@ -193,7 +183,7 @@ align-items: center; text-decoration: none; color: inherit; - padding: .9em 0 .9em 2.4em !important; + padding: 0.9em 0 0.9em 2.4em !important; -webkit-box-flex: 1; -webkit-flex-grow: 1; flex-grow: 1; @@ -219,9 +209,9 @@ } .dashboardDocument .skinBody { - -webkit-transition: left ease-in-out .3s, padding ease-in-out .3s; - -o-transition: left ease-in-out .3s, padding ease-in-out .3s; - transition: left ease-in-out .3s, padding ease-in-out .3s; + -webkit-transition: left ease-in-out 0.3s, padding ease-in-out 0.3s; + -o-transition: left ease-in-out 0.3s, padding ease-in-out 0.3s; + transition: left ease-in-out 0.3s, padding ease-in-out 0.3s; position: absolute; top: 0; right: 0; @@ -374,9 +364,9 @@ .criticReview { margin: 1.5em 0; background: #222; - padding: .8em .8em .8em 3em; - -webkit-border-radius: .3em; - border-radius: .3em; + padding: 0.8em 0.8em 0.8em 3em; + -webkit-border-radius: 0.3em; + border-radius: 0.3em; position: relative; } @@ -548,8 +538,8 @@ .itemDetailImage { width: 100% !important; - box-shadow: 0 .0725em .29em 0 rgba(0, 0, 0, .37); - -webkit-box-shadow: 0 .0725em .29em 0 rgba(0, 0, 0, .37); + box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37); + -webkit-box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37); } @media all and (max-width: 62.5em) { @@ -573,6 +563,15 @@ margin-bottom: 0.5em; } +.btnSyncComplete { + background: #673ab7 !important; +} + +.btnSyncComplete i { + -webkit-border-radius: 100em; + border-radius: 100em; +} + .emby-button.detailFloatingButton { position: absolute; background-color: rgba(0, 0, 0, 0.5) !important; @@ -581,7 +580,7 @@ left: 50%; margin: -2.2em 0 0 -2.2em; padding: 0.4em !important; - color: rgba(255, 255, 255, .76); + color: rgba(255, 255, 255, 0.76); } .emby-button.detailFloatingButton i { @@ -618,7 +617,7 @@ .mainDetailButtons { display: flex; display: -webkit-box; - display: -webkit-flex + display: -webkit-flex; } .itemName { @@ -649,7 +648,7 @@ .recordingFields button { margin-left: 0; - margin-right: .5em; + margin-right: 0.5em; -webkit-flex-shrink: 0; flex-shrink: 0; } @@ -856,15 +855,6 @@ } } -.btnSyncComplete { - background: #673ab7 !important; -} - -.btnSyncComplete i { - -webkit-border-radius: 100em; - border-radius: 100em -} - .bulletSeparator { margin: 0 0.35em; } diff --git a/src/assets/css/scrollstyles.css b/src/assets/css/scrollstyles.css index 431cd2ba1f..34ce01c96d 100644 --- a/src/assets/css/scrollstyles.css +++ b/src/assets/css/scrollstyles.css @@ -9,7 +9,8 @@ scroll-behavior: smooth; } -.hiddenScrollX, .layout-tv .scrollX { +.hiddenScrollX, + .layout-tv .scrollX { -ms-overflow-style: none; } @@ -17,7 +18,8 @@ overflow: -moz-scrollbars-none; } -.hiddenScrollX::-webkit-scrollbar, .layout-tv .scrollX::-webkit-scrollbar { +.hiddenScrollX::-webkit-scrollbar, + .layout-tv .scrollX::-webkit-scrollbar { height: 0 !important; display: none; } @@ -35,17 +37,22 @@ scroll-behavior: smooth; } -.hiddenScrollY, .layout-tv .smoothScrollY { +.hiddenScrollY, + .layout-tv .smoothScrollY { -ms-overflow-style: none; + /* Can't do this because it not only hides the scrollbar, but also prevents scrolling */ - /*overflow: -moz-scrollbars-none;*/ + + /* overflow: -moz-scrollbars-none; */ } .hiddenScrollY-forced { overflow: -moz-scrollbars-none; } -.hiddenScrollY::-webkit-scrollbar, .layout-tv .smoothScrollY::-webkit-scrollbar, .layout-tv .scrollY::-webkit-scrollbar { +.hiddenScrollY::-webkit-scrollbar, + .layout-tv .smoothScrollY::-webkit-scrollbar, + .layout-tv .scrollY::-webkit-scrollbar { width: 0 !important; display: none; } diff --git a/src/assets/css/site.css b/src/assets/css/site.css index f5821266f8..55ce4c8807 100644 --- a/src/assets/css/site.css +++ b/src/assets/css/site.css @@ -31,7 +31,7 @@ html { body { overflow-x: hidden; background-color: transparent !important; - -webkit-font-smoothing: antialiased + -webkit-font-smoothing: antialiased; } .mainAnimatedPage { diff --git a/src/assets/css/videoosd.css b/src/assets/css/videoosd.css index 608a0d8da3..c0a09bdc84 100644 --- a/src/assets/css/videoosd.css +++ b/src/assets/css/videoosd.css @@ -3,7 +3,7 @@ user-select: none; -webkit-user-select: none; -moz-user-select: none; - -ms-user-select: none + -ms-user-select: none; } .osdPoster img, @@ -15,9 +15,9 @@ } .osdHeader { - -webkit-transition: opacity .3s ease-out; - -o-transition: opacity .3s ease-out; - transition: opacity .3s ease-out; + -webkit-transition: opacity 0.3s ease-out; + -o-transition: opacity 0.3s ease-out; + transition: opacity 0.3s ease-out; position: relative; z-index: 1; background: rgba(0, 0, 0, 0.7) !important; @@ -118,7 +118,7 @@ } .videoOsdBottom .buttons { - padding: .25em 0 0; + padding: 0.25em 0 0; display: -webkit-box; display: -webkit-flex; display: flex; @@ -142,7 +142,7 @@ display: -webkit-box; display: -webkit-flex; align-items: center; - -webkit-box-align: center + -webkit-box-align: center; } .volumeButtons { @@ -224,28 +224,28 @@ @-moz-keyframes spin { 100% { -moz-transform: rotate(360deg); - transform:rotate(360deg); + transform: rotate(360deg); } } @-webkit-keyframes spin { 100% { -webkit-transform: rotate(360deg); - transform:rotate(360deg); + transform: rotate(360deg); } } @keyframes spin { 100% { -webkit-transform: rotate(360deg); - transform:rotate(360deg); + transform: rotate(360deg); } } .osdMediaStatus .animate { - -webkit-animation:spin 4s linear infinite; - -moz-animation:spin 4s linear infinite; - animation:spin 4s linear infinite; + -webkit-animation: spin 4s linear infinite; + -moz-animation: spin 4s linear infinite; + animation: spin 4s linear infinite; } .pageContainer { @@ -276,7 +276,8 @@ } @media all and (max-width: 50em) { - .videoOsdBottom .btnFastForward, .videoOsdBottom .btnRewind { + .videoOsdBottom .btnFastForward, + .videoOsdBottom .btnRewind { display: none !important; } } diff --git a/src/components/cardbuilder/card.css b/src/components/cardbuilder/card.css index d5e1f6f938..c5232bb54e 100644 --- a/src/components/cardbuilder/card.css +++ b/src/components/cardbuilder/card.css @@ -18,7 +18,7 @@ button::-moz-focus-inner { padding: 0; display: block; color: inherit !important; - -webkit-tap-highlight-color: rgba(0,0,0,0); + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none !important; cursor: pointer; contain: layout style; @@ -55,17 +55,27 @@ button::-moz-focus-inner { contain: layout style; } -.cardPadder-backdrop, .cardPadder-mixedBackdrop, .cardPadder-smallBackdrop, .cardPadder-overflowBackdrop, .cardPadder-overflowSmallBackdrop { +.cardPadder-backdrop, + .cardPadder-mixedBackdrop, + .cardPadder-smallBackdrop, + .cardPadder-overflowBackdrop, + .cardPadder-overflowSmallBackdrop { padding-bottom: 56.25%; contain: strict; } -.cardPadder-square, .cardPadder-mixedSquare, .cardPadder-overflowSquare, .overflowSquareCard-textCardPadder { +.cardPadder-square, + .cardPadder-mixedSquare, + .cardPadder-overflowSquare, + .overflowSquareCard-textCardPadder { padding-bottom: 100%; contain: strict; } -.cardPadder-portrait, .cardPadder-mixedPortrait, .cardPadder-overflowPortrait, .overflowPortraitCard-textCardPadder { +.cardPadder-portrait, + .cardPadder-mixedPortrait, + .cardPadder-overflowPortrait, + .overflowPortraitCard-textCardPadder { padding-bottom: 150%; contain: strict; } @@ -80,8 +90,9 @@ button::-moz-focus-inner { margin: 0.6em; transition: none; border: 0 solid transparent; + /* These both are needed in case cardBox is a button */ - -webkit-tap-highlight-color: rgba(0,0,0,0); + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none !important; contain: layout; contain: style; @@ -156,6 +167,7 @@ button::-moz-focus-inner { position: relative; background-clip: content-box !important; color: inherit; + /* This is only needed for scalable cards */ height: 100%; contain: strict; @@ -177,13 +189,16 @@ button::-moz-focus-inner { left: 0; right: 0; bottom: 0; + /* Needed in case this is a button */ display: block; + /* Needed in case this is a button */ margin: 0 !important; + /* Needed in safari */ height: 100%; - -webkit-tap-highlight-color: rgba(0,0,0,0); + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none !important; contain: strict; } @@ -227,6 +242,7 @@ button::-moz-focus-inner { .cardImage-img { max-height: 100%; max-width: 100%; + /* This is simply for lazy image purposes, to ensure the image is visible sooner when scrolling */ min-height: 70%; min-width: 70%; @@ -303,7 +319,7 @@ button::-moz-focus-inner { background: transparent; padding: 0 !important; cursor: pointer; - -webkit-tap-highlight-color: rgba(0,0,0,0); + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none !important; color: inherit; vertical-align: middle; @@ -475,13 +491,15 @@ button::-moz-focus-inner { width: 33.333333333333333333333333333333%; } - .squareCard, .portraitCard { + .squareCard, + .portraitCard { width: 33.333333333333333333333333333333%; } } @media (min-width: 43.75em) { - .squareCard, .portraitCard { + .squareCard, + .portraitCard { width: 25%; } } @@ -497,7 +515,8 @@ button::-moz-focus-inner { width: 50%; } - .squareCard, .portraitCard { + .squareCard, + .portraitCard { width: 20%; } @@ -517,7 +536,8 @@ button::-moz-focus-inner { width: 25%; } - .squareCard, .portraitCard { + .squareCard, + .portraitCard { width: 16.666666666666666666666666666667%; } @@ -531,7 +551,8 @@ button::-moz-focus-inner { } @media (min-width: 87.5em) { - .squareCard, .portraitCard { + .squareCard, + .portraitCard { width: 14.285714285714285714285714285714%; } @@ -549,13 +570,15 @@ button::-moz-focus-inner { width: 20%; } - .squareCard, .portraitCard { + .squareCard, + .portraitCard { width: 12.5%; } } @media (min-width: 120em) { - .squareCard, .portraitCard { + .squareCard, + .portraitCard { width: 11.111111111111111111111111111111%; } } @@ -565,7 +588,8 @@ button::-moz-focus-inner { width: 25%; } - .squareCard, .portraitCard { + .squareCard, + .portraitCard { width: 10%; } } @@ -596,7 +620,8 @@ button::-moz-focus-inner { width: 72vw; } -.overflowSquareCard, .overflowPortraitCard { +.overflowSquareCard, + .overflowPortraitCard { width: 40vw; } @@ -621,29 +646,34 @@ button::-moz-focus-inner { } @media (min-width: 43.75em) { - .overflowSquareCard, .overflowPortraitCard { + .overflowSquareCard, + .overflowPortraitCard { width: 23.1vw; } } @media (min-width: 48.125em) { - .overflowBackdropCard, .overflowSmallBackdropCard { + .overflowBackdropCard, + .overflowSmallBackdropCard { width: 30vw; } } @media (orientation: landscape) { - .overflowBackdropCard, .overflowSmallBackdropCard { + .overflowBackdropCard, + .overflowSmallBackdropCard { width: 30vw; } - .overflowSquareCard, .overflowPortraitCard { + .overflowSquareCard, + .overflowPortraitCard { width: 23.1vw; } } @media (orientation: landscape) and (min-width: 48.125em) { - .overflowBackdropCard, .overflowSmallBackdropCard { + .overflowBackdropCard, + .overflowSmallBackdropCard { width: 23.1vw; } } @@ -655,51 +685,60 @@ button::-moz-focus-inner { } @media (min-width: 50em) { - .overflowSquareCard, .overflowPortraitCard { + .overflowSquareCard, + .overflowPortraitCard { width: 18.5vw; } } @media (min-width: 75em) { - .overflowBackdropCard, .overflowSmallBackdropCard { + .overflowBackdropCard, + .overflowSmallBackdropCard { width: 23.1vw; } - .overflowSquareCard, .overflowPortraitCard { + .overflowSquareCard, + .overflowPortraitCard { width: 15.5vw; } } @media (min-width: 87.5em) { - .overflowSquareCard, .overflowPortraitCard { + .overflowSquareCard, + .overflowPortraitCard { width: 13.3vw; } } @media (min-width: 100em) { - .overflowBackdropCard, .overflowSmallBackdropCard { + .overflowBackdropCard, + .overflowSmallBackdropCard { width: 18.7vw; } - .overflowSquareCard, .overflowPortraitCard { + .overflowSquareCard, + .overflowPortraitCard { width: 11.6vw; } } @media (min-width: 120em) { - .overflowSquareCard, .overflowPortraitCard { + .overflowSquareCard, + .overflowPortraitCard { width: 10.3vw; } } @media (min-width: 131.25em) { - .overflowSquareCard, .overflowPortraitCard { + .overflowSquareCard, + .overflowPortraitCard { width: 9.3vw; } } @media (min-width: 156.25em) { - .overflowBackdropCard, .overflowSmallBackdropCard { + .overflowBackdropCard, + .overflowSmallBackdropCard { width: 15.6vw; } } @@ -716,7 +755,8 @@ button::-moz-focus-inner { padding-bottom: 87.75%; } -.itemsContainer-tv > .overflowSquareCard, .itemsContainer-tv > .overflowPortraitCard { +.itemsContainer-tv > .overflowSquareCard, + .itemsContainer-tv > .overflowPortraitCard { width: 15.6vw; } diff --git a/src/components/dialogHelper/dialoghelper.css b/src/components/dialogHelper/dialoghelper.css index ecdaa4f9ea..0076eada65 100644 --- a/src/components/dialogHelper/dialoghelper.css +++ b/src/components/dialogHelper/dialoghelper.css @@ -15,11 +15,12 @@ .dialog { margin: 0; - border-radius: .2em; + border-radius: 0.2em; -webkit-font-smoothing: antialiased; border: 0; padding: 0; will-change: transform, opacity; + /* Strict does not work well with actionsheet */ contain: style paint; box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.4); @@ -112,7 +113,8 @@ } @media all and (max-width: 80em), all and (max-height: 45em) { - .dialog-fixedSize, .dialog-fullscreen-lowres { + .dialog-fixedSize, + .dialog-fullscreen-lowres { position: fixed !important; top: 0 !important; bottom: 0 !important; diff --git a/src/components/formdialog.css b/src/components/formdialog.css index 932ee8f2d0..788331da94 100644 --- a/src/components/formdialog.css +++ b/src/components/formdialog.css @@ -12,7 +12,8 @@ } .formDialogHeaderTitle { - margin-left: .25em; + margin-left: 0.25em; + /* In case of h1, h2, h3 */ margin-top: 0; margin-bottom: 0; @@ -46,6 +47,7 @@ display: flex; position: absolute; padding: 1.25em 1em; + /* Without this emby-checkbox is able to appear on top */ z-index: 1; align-items: center; diff --git a/src/components/guide/guide.css b/src/components/guide/guide.css index 52a501fd3c..119f0c142e 100644 --- a/src/components/guide/guide.css +++ b/src/components/guide/guide.css @@ -91,24 +91,28 @@ flex-shrink: 0; } -.channelPrograms, .timeslotHeadersInner { +.channelPrograms, + .timeslotHeadersInner { width: 1800vw; } @media all and (min-width: 37.5em) { - .channelPrograms, .timeslotHeadersInner { + .channelPrograms, + .timeslotHeadersInner { width: 1400vw; } } @media all and (min-width: 50em) { - .channelPrograms, .timeslotHeadersInner { + .channelPrograms, + .timeslotHeadersInner { width: 1200vw; } } @media all and (min-width: 80em) { - .channelPrograms, .timeslotHeadersInner { + .channelPrograms, + .timeslotHeadersInner { width: 810vw; } } @@ -120,11 +124,13 @@ width: 2.0833333333333333333333333333333%; } -.programCell, .guide-channelHeaderCell { +.programCell, + .guide-channelHeaderCell { outline: none !important; } -.guide-channelHeaderCell, .guide-channelTimeslotHeader { +.guide-channelHeaderCell, + .guide-channelTimeslotHeader { padding: 0 !important; cursor: pointer; outline: none !important; @@ -138,6 +144,7 @@ display: flex; align-items: center; text-decoration: none; + /* Needed in firefox */ text-align: left; contain: strict; @@ -159,30 +166,35 @@ /* Important - have to put the fixed width on channelsContainer, not the individual channelHeaderCell This was causing channelsContainer to extend beyond the fixed width on ps4, tizen, lg and opera tv. */ -.channelsContainer, .guide-channelTimeslotHeader { +.channelsContainer, + .guide-channelTimeslotHeader { width: 24vw; } @media all and (min-width: 31.25em) { - .channelsContainer, .guide-channelTimeslotHeader { + .channelsContainer, + .guide-channelTimeslotHeader { width: 16vw; } } @media all and (min-width: 37.5em) { - .channelsContainer, .guide-channelTimeslotHeader { + .channelsContainer, + .guide-channelTimeslotHeader { width: 16vw; } } @media all and (min-width: 50em) { - .channelsContainer, .guide-channelTimeslotHeader { + .channelsContainer, + .guide-channelTimeslotHeader { width: 14vw; } } @media all and (min-width: 80em) { - .channelsContainer, .guide-channelTimeslotHeader { + .channelsContainer, + .guide-channelTimeslotHeader { width: 12vw; } } @@ -201,20 +213,26 @@ } @media all and (max-width: 50em) { - .newTvProgram, .liveTvProgram, .premiereTvProgram, .guideHdIcon { + .newTvProgram, + .liveTvProgram, + .premiereTvProgram, + .guideHdIcon { display: none; } } - .channelPrograms + .channelPrograms, .guide-channelHeaderCell + .guide-channelHeaderCell { + .channelPrograms + .channelPrograms, + .guide-channelHeaderCell + .guide-channelHeaderCell { margin-top: -1px; } -.channelPrograms-tv, .guide-channelHeaderCell-tv { +.channelPrograms-tv, + .guide-channelHeaderCell-tv { height: 3em; } -.guide-channelTimeslotHeader, .timeslotHeader { +.guide-channelTimeslotHeader, + .timeslotHeader { background: transparent !important; height: 2.8em; } @@ -243,6 +261,7 @@ text-decoration: none; overflow: hidden; align-items: center; + /* Needed for Firefox */ text-align: left; contain: strict; @@ -259,6 +278,7 @@ position: relative; flex-grow: 1; contain: layout style paint; + /* transition: transform 60ms ease-out; */ } @@ -356,11 +376,13 @@ flex-direction: column; } -.channelsContainer, .programGrid { +.channelsContainer, + .programGrid { contain: layout style paint; } -.timerIcon, .seriesTimerIcon { +.timerIcon, + .seriesTimerIcon { color: #c33 !important; } diff --git a/src/components/homesections/homesections.css b/src/components/homesections/homesections.css index 164e963148..2a119c0981 100644 --- a/src/components/homesections/homesections.css +++ b/src/components/homesections/homesections.css @@ -10,8 +10,8 @@ } .homeLibraryIcon { - margin-left: .5em; - margin-right: .5em; + margin-left: 0.5em; + margin-right: 0.5em; -webkit-flex-shrink: 0; flex-shrink: 0; } diff --git a/src/components/images/style.css b/src/components/images/style.css index dc0fc6f615..2836dd0159 100644 --- a/src/components/images/style.css +++ b/src/components/images/style.css @@ -1,5 +1,22 @@ .lazy-image-fadein { + opacity: 0; animation: lazy-image-fadein 330ms ease-in normal both; + -webkit-animation-duration: 0.8s; + -moz-animation-duration: 0.8s; + -o-animation-duration: 0.8s; + animation-duration: 0.8s; + -webkit-animation-name: popInAnimation; + -moz-animation-name: popInAnimation; + -o-animation-name: popInAnimation; + animation-name: popInAnimation; + -webkit-animation-fill-mode: forwards; + -moz-animation-fill-mode: forwards; + -o-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-animation-timing-function: cubic-bezier(0, 0, 0.5, 1); + -moz-animation-timing-function: cubic-bezier(0, 0, 0.5, 1); + -o-animation-timing-function: cubic-bezier(0, 0, 0.5, 1); + animation-timing-function: cubic-bezier(0, 0, 0.5, 1); } .lazy-image-fadein-fast { @@ -16,26 +33,6 @@ } } -.lazy-image-fadein { - opacity: 0; - -webkit-animation-duration: .8s; - -moz-animation-duration: .8s; - -o-animation-duration: .8s; - animation-duration: .8s; - -webkit-animation-name: popInAnimation; - -moz-animation-name: popInAnimation; - -o-animation-name: popInAnimation; - animation-name: popInAnimation; - -webkit-animation-fill-mode: forwards; - -moz-animation-fill-mode: forwards; - -o-animation-fill-mode: forwards; - animation-fill-mode: forwards; - -webkit-animation-timing-function: cubic-bezier(0,0,.5,1); - -moz-animation-timing-function: cubic-bezier(0,0,.5,1); - -o-animation-timing-function: cubic-bezier(0,0,.5,1); - animation-timing-function: cubic-bezier(0,0,.5,1); -} - @keyframes popInAnimation { 0% { opacity: 0; diff --git a/src/components/imageuploader/style.css b/src/components/imageuploader/style.css index a4b3ee910d..dc4fecb108 100644 --- a/src/components/imageuploader/style.css +++ b/src/components/imageuploader/style.css @@ -1,6 +1,7 @@ .imageEditor-dropZone { - border: .2em dashed currentcolor; - border-radius: .25em; + border: 0.2em dashed currentcolor; + border-radius: 0.25em; + /* padding: 1.6em; */ text-align: center; position: relative; diff --git a/src/components/indicators/indicators.css b/src/components/indicators/indicators.css index 28132aab7f..4343b69867 100644 --- a/src/components/indicators/indicators.css +++ b/src/components/indicators/indicators.css @@ -85,7 +85,8 @@ color: #333; } -.missingIndicator, .unairedIndicator { +.missingIndicator, + .unairedIndicator { background: #c33; padding: 0.25em 0.5em; border-radius: 100em; diff --git a/src/components/listview/listview.css b/src/components/listview/listview.css index bd77ca7781..9a355d1b00 100644 --- a/src/components/listview/listview.css +++ b/src/components/listview/listview.css @@ -53,11 +53,15 @@ transform: scale(1) !important; } -.listItemImage, .listItemIcon, .listItemAside { +.listItemImage, + .listItemIcon, + .listItemAside { flex-shrink: 0; } -.listItemBody, .listItemImage, .listItemIcon { +.listItemBody, + .listItemImage, + .listItemIcon { display: inline-block; vertical-align: middle; } @@ -85,7 +89,9 @@ justify-content: center; } -.listItem, .listItemBody, .listItemMediaInfo { +.listItem, + .listItemBody, + .listItemMediaInfo { display: flex; contain: layout style; } @@ -253,7 +259,9 @@ } @media all and (max-width: 50em) { - .listItem .endsAt, .listItem .criticRating, .listItem-overview { + .listItem .endsAt, + .listItem .criticRating, + .listItem-overview { display: none !important; } } diff --git a/src/components/navdrawer/navdrawer.css b/src/components/navdrawer/navdrawer.css index b19731d778..6d5d098de2 100644 --- a/src/components/navdrawer/navdrawer.css +++ b/src/components/navdrawer/navdrawer.css @@ -25,8 +25,8 @@ } .drawer-open { - -webkit-box-shadow: 2px 0 12px rgba(0, 0, 0, .4); - box-shadow: 2px 0 12px rgba(0, 0, 0, .4); + -webkit-box-shadow: 2px 0 12px rgba(0, 0, 0, 0.4); + box-shadow: 2px 0 12px rgba(0, 0, 0, 0.4); } .scrollContainer { @@ -40,9 +40,9 @@ right: 0; opacity: 0; z-index: 1098; - -webkit-transition: opacity ease-in-out .38s, visibility ease-in-out .38s; - -o-transition: opacity ease-in-out .38s, visibility ease-in-out .38s; - transition: opacity ease-in-out .38s, visibility ease-in-out .38s; + -webkit-transition: opacity ease-in-out 0.38s, visibility ease-in-out 0.38s; + -o-transition: opacity ease-in-out 0.38s, visibility ease-in-out 0.38s; + transition: opacity ease-in-out 0.38s, visibility ease-in-out 0.38s; will-change: opacity; background-color: rgba(0, 0, 0, 0.3); } diff --git a/src/components/nowplayingbar/nowplayingbar.css b/src/components/nowplayingbar/nowplayingbar.css index ea1a1a9e7c..75a8ba0b6b 100644 --- a/src/components/nowplayingbar/nowplayingbar.css +++ b/src/components/nowplayingbar/nowplayingbar.css @@ -28,7 +28,8 @@ justify-content: center; } -.mediaButton, .nowPlayingBarUserDataButtons .btnUserItemRating { +.mediaButton, + .nowPlayingBarUserDataButtons .btnUserItemRating { vertical-align: middle; margin: 0; text-align: center; @@ -62,6 +63,7 @@ .nowPlayingBarCenter { vertical-align: middle; text-align: center; + /* Need this to make sure it's on top of nowPlayingBarPositionContainer so that buttons are fully clickable */ z-index: 2; flex-grow: 1; @@ -89,7 +91,8 @@ .nowPlayingBarRight { position: relative; - margin: 0 .5em 0 auto; + margin: 0 0.5em 0 auto; + /* Need this to make sure it's on top of nowPlayingBarPositionContainer so that buttons are fully clickable */ z-index: 2; display: flex; @@ -161,7 +164,8 @@ } @media all and (max-width: 24em) { - .nowPlayingBar .muteButton, .nowPlayingBar .unmuteButton { + .nowPlayingBar .muteButton, + .nowPlayingBar .unmuteButton { display: none; } } diff --git a/src/components/remotecontrol/remotecontrol.css b/src/components/remotecontrol/remotecontrol.css index 6f36fc866c..83a1c48e5f 100644 --- a/src/components/remotecontrol/remotecontrol.css +++ b/src/components/remotecontrol/remotecontrol.css @@ -12,23 +12,23 @@ text-align: center; } -.btnArrowUp{ +.btnArrowUp { border-radius: 40% 40% 10% 10%; } -.btnArrowLeft{ +.btnArrowLeft { border-radius: 40% 10% 10% 40%; } -.btnArrowRight{ +.btnArrowRight { border-radius: 10% 40% 40% 10%; } -.btnArrowDown{ +.btnArrowDown { border-radius: 10% 10% 40% 40%; } -.btnOk{ +.btnOk { border-radius: 10%; } @@ -55,7 +55,7 @@ .nowPlayingTime { display: flex; display: -webkit-box; - display: -webkit-flex + display: -webkit-flex; } .nowPlayingPageImageContainer { @@ -99,7 +99,7 @@ -moz-user-select: none; -webkit-user-drag: none; -webkit-user-select: none; - -ms-user-select: none + -ms-user-select: none; } @media all and (orientation: portrait) and (max-width: 50em) { @@ -218,7 +218,8 @@ .nowPlayingInfoButtons .nowPlayingPageUserDataButtons { display: none !important; } - .navigationSection .collapseContent i{ + + .navigationSection .collapseContent i { font-size: 4em; } } diff --git a/src/components/slideshow/style.css b/src/components/slideshow/style.css index 046aff2bd8..f95952a0d3 100644 --- a/src/components/slideshow/style.css +++ b/src/components/slideshow/style.css @@ -3,11 +3,14 @@ background: #000; } -.slideshowSwiperContainer, .swiper-wrapper, .swiper-slide { +.slideshowSwiperContainer, + .swiper-wrapper, + .swiper-slide { background: #000; } -.slideshowImage, .slideshowSwiperContainer { +.slideshowImage, + .slideshowSwiperContainer { position: fixed; top: 0; right: 0; @@ -32,6 +35,7 @@ color: #fff; z-index: 1002; font-weight: normal; + /* Add an outline */ text-shadow: 3px 3px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000; } diff --git a/src/components/viewManager/viewContainer.css b/src/components/viewManager/viewContainer.css index 9c46dd18a3..61d9345014 100644 --- a/src/components/viewManager/viewContainer.css +++ b/src/components/viewManager/viewContainer.css @@ -5,7 +5,9 @@ right: 0; bottom: 0; contain: layout style size; + /* Can't use will-change because it causes the alpha picker to move when the page scrolls */ + /* will-change: transform; */ } diff --git a/src/elements/emby-button/emby-button.css b/src/elements/emby-button/emby-button.css index eedf616680..9d4c287906 100644 --- a/src/elements/emby-button/emby-button.css +++ b/src/elements/emby-button/emby-button.css @@ -8,6 +8,7 @@ font-size: inherit; font-family: inherit; color: inherit; + /* These are getting an outline in opera tv browsers, which run chrome 30 */ outline: none !important; outline-width: 0; @@ -22,9 +23,11 @@ border: 0; border-radius: 0.2em; font-weight: 600; + /* Disable webkit tap highlighting */ - -webkit-tap-highlight-color: rgba(0,0,0,0); + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); text-decoration: none; + /* Not crazy about this but it normalizes heights between anchors and buttons */ line-height: 1.35; transform-origin: center; @@ -110,12 +113,14 @@ padding: 0.556em; vertical-align: middle; border: 0; + /* These are getting an outline in opera tv browsers, which run chrome 30 */ outline: none !important; overflow: hidden; border-radius: 50%; + /* Disable webkit tap highlighting */ - -webkit-tap-highlight-color: rgba(0,0,0,0); + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); justify-content: center; transform-origin: center; transition: 0.2s; @@ -137,6 +142,7 @@ .paper-icon-button-light > i { font-size: 1.66956521739130434em; + /* Make sure its on top of the ripple */ position: relative; z-index: 1; diff --git a/src/elements/emby-checkbox/emby-checkbox.css b/src/elements/emby-checkbox/emby-checkbox.css index b7637c6df0..b34d1f6d5c 100644 --- a/src/elements/emby-checkbox/emby-checkbox.css +++ b/src/elements/emby-checkbox/emby-checkbox.css @@ -32,6 +32,7 @@ .emby-checkbox { position: absolute; + /* This is for focusing purposes, so the focusManager doesn't skip over it */ width: 1px; height: 1px; diff --git a/src/elements/emby-input/emby-input.css b/src/elements/emby-input/emby-input.css index 273638e599..8cd082aaaa 100644 --- a/src/elements/emby-input/emby-input.css +++ b/src/elements/emby-input/emby-input.css @@ -2,18 +2,22 @@ display: block; margin: 0; margin-bottom: 0 !important; + /* Remove select styling */ + /* Font size must the 16px or larger to prevent iOS page zoom on focus */ font-size: 110%; + /* General select styles: change as needed */ font-family: inherit; font-weight: inherit; - padding: .4em .25em; + padding: 0.4em 0.25em; + /* Prevent padding from causing width overflow */ -webkit-box-sizing: border-box; box-sizing: border-box; outline: none !important; - -webkit-tap-highlight-color: rgba(0,0,0,0); + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); width: 100%; } diff --git a/src/elements/emby-radio/emby-radio.css b/src/elements/emby-radio/emby-radio.css index bda1083d38..6db3c39e4d 100644 --- a/src/elements/emby-radio/emby-radio.css +++ b/src/elements/emby-radio/emby-radio.css @@ -17,6 +17,7 @@ .mdl-radio__button { line-height: 24px; position: absolute; + /* 1px is for focusing purposes, so the focusManager doesn't skip over it */ width: 1px; height: 1px; diff --git a/src/elements/emby-select/emby-select.css b/src/elements/emby-select/emby-select.css index b99f9879bf..32c2905b48 100644 --- a/src/elements/emby-select/emby-select.css +++ b/src/elements/emby-select/emby-select.css @@ -2,17 +2,21 @@ display: block; margin: 0; margin-bottom: 0 !important; + /* Remove select styling */ + /* Font size must the 16px or larger to prevent iOS page zoom on focus */ font-size: 110%; + /* General select styles: change as needed */ font-family: inherit; font-weight: inherit; - padding: .5em 1.9em .5em .5em; + padding: 0.5em 1.9em 0.5em 0.5em; + /* Prevent padding from causing width overflow */ box-sizing: border-box; outline: none !important; - -webkit-tap-highlight-color: rgba(0,0,0,0); + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); width: 100%; } diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index 111fd23439..53fd0793e2 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -25,8 +25,9 @@ z-index: 1; cursor: pointer; margin: 0; + /* Disable webkit tap highlighting */ - -webkit-tap-highlight-color: rgba(0,0,0,0); + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); display: block; } @@ -199,6 +200,7 @@ .mdl-slider-background-lower-withtransform { width: 100%; + /* transition: transform 0.18s cubic-bezier(0.4, 0, 0.2, 1); */ transform-origin: left center; transform: scaleX(0); diff --git a/src/elements/emby-textarea/emby-textarea.css b/src/elements/emby-textarea/emby-textarea.css index 54ca33f6b7..44dfaee514 100644 --- a/src/elements/emby-textarea/emby-textarea.css +++ b/src/elements/emby-textarea/emby-textarea.css @@ -2,18 +2,22 @@ display: block; margin: 0; margin-bottom: 0 !important; + /* Remove select styling */ + /* Font size must the 16px or larger to prevent iOS page zoom on focus */ font-size: inherit; + /* General select styles: change as needed */ font-family: inherit; font-weight: inherit; color: inherit; - padding: .35em .25em; + padding: 0.35em 0.25em; + /* Prevent padding from causing width overflow */ box-sizing: border-box; outline: none !important; - -webkit-tap-highlight-color: rgba(0,0,0,0); + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); width: 100%; } diff --git a/src/themes/appletv/theme.css b/src/themes/appletv/theme.css index 6b25ba6140..ee2a3565d1 100644 --- a/src/themes/appletv/theme.css +++ b/src/themes/appletv/theme.css @@ -23,10 +23,10 @@ html { .skinHeader-withBackground { color: rgba(0, 0, 0, 0.7); background: #303030; - background: -webkit-gradient(linear, left top, right top, from(#BCBCBC), color-stop(#A7B4B7), color-stop(#BEB5A5), color-stop(#ADBEC2), to(#B9C7CB)); - background: -webkit-linear-gradient(left, #BCBCBC, #A7B4B7, #BEB5A5, #ADBEC2, #B9C7CB); - background: -o-linear-gradient(left, #BCBCBC, #A7B4B7, #BEB5A5, #ADBEC2, #B9C7CB); - background: linear-gradient(to right, #BCBCBC, #A7B4B7, #BEB5A5, #ADBEC2, #B9C7CB); + background: -webkit-gradient(linear, left top, right top, from(#bcbcbc), color-stop(#a7b4b7), color-stop(#beb5a5), color-stop(#adbec2), to(#b9c7cb)); + background: -webkit-linear-gradient(left, #bcbcbc, #a7b4b7, #beb5a5, #adbec2, #b9c7cb); + background: -o-linear-gradient(left, #bcbcbc, #a7b4b7, #beb5a5, #adbec2, #b9c7cb); + background: linear-gradient(to right, #bcbcbc, #a7b4b7, #beb5a5, #adbec2, #b9c7cb); } .skinHeader.semiTransparent { @@ -44,16 +44,16 @@ html { .backgroundContainer, .dialog { - background: #D5E9F2; + background: #d5e9f2; -webkit-background-size: 100% 100%; background-size: 100% 100%; } .backgroundContainer.withBackdrop { - background: -webkit-gradient(linear, left top, left bottom, from(rgba(192, 212, 222, .94)), color-stop(rgba(235, 250, 254, .94)), color-stop(rgba(227, 220, 212, .94)), color-stop(rgba(206, 214, 216, .94)), to(rgba(192, 211, 218, .94))); - background: -webkit-linear-gradient(top, rgba(192, 212, 222, .94), rgba(235, 250, 254, .94), rgba(227, 220, 212, .94), rgba(206, 214, 216, .94), rgba(192, 211, 218, .94)); - background: -o-linear-gradient(top, rgba(192, 212, 222, .94), rgba(235, 250, 254, .94), rgba(227, 220, 212, .94), rgba(206, 214, 216, .94), rgba(192, 211, 218, .94)); - background: linear-gradient(to bottom, rgba(192, 212, 222, .94), rgba(235, 250, 254, .94), rgba(227, 220, 212, .94), rgba(206, 214, 216, .94), rgba(192, 211, 218, .94)); + background: -webkit-gradient(linear, left top, left bottom, from(rgba(192, 212, 222, 0.94)), color-stop(rgba(235, 250, 254, 0.94)), color-stop(rgba(227, 220, 212, 0.94)), color-stop(rgba(206, 214, 216, 0.94)), to(rgba(192, 211, 218, 0.94))); + background: -webkit-linear-gradient(top, rgba(192, 212, 222, 0.94), rgba(235, 250, 254, 0.94), rgba(227, 220, 212, 0.94), rgba(206, 214, 216, 0.94), rgba(192, 211, 218, 0.94)); + background: -o-linear-gradient(top, rgba(192, 212, 222, 0.94), rgba(235, 250, 254, 0.94), rgba(227, 220, 212, 0.94), rgba(206, 214, 216, 0.94), rgba(192, 211, 218, 0.94)); + background: linear-gradient(to bottom, rgba(192, 212, 222, 0.94), rgba(235, 250, 254, 0.94), rgba(227, 220, 212, 0.94), rgba(206, 214, 216, 0.94), rgba(192, 211, 218, 0.94)); } .actionSheet { @@ -189,10 +189,10 @@ html { .formDialogFooter:not(.formDialogFooter-clear) { color: rgba(0, 0, 0, 0.7); background: #303030; - background: -webkit-gradient(linear, left top, right top, from(#BCBCBC), color-stop(#A7B4B7), color-stop(#BEB5A5), color-stop(#ADBEC2), to(#B9C7CB)); - background: -webkit-linear-gradient(left, #BCBCBC, #A7B4B7, #BEB5A5, #ADBEC2, #B9C7CB); - background: -o-linear-gradient(left, #BCBCBC, #A7B4B7, #BEB5A5, #ADBEC2, #B9C7CB); - background: linear-gradient(to right, #BCBCBC, #A7B4B7, #BEB5A5, #ADBEC2, #B9C7CB); + background: -webkit-gradient(linear, left top, right top, from(#bcbcbc), color-stop(#a7b4b7), color-stop(#beb5a5), color-stop(#adbec2), to(#b9c7cb)); + background: -webkit-linear-gradient(left, #bcbcbc, #a7b4b7, #beb5a5, #adbec2, #b9c7cb); + background: -o-linear-gradient(left, #bcbcbc, #a7b4b7, #beb5a5, #adbec2, #b9c7cb); + background: linear-gradient(to right, #bcbcbc, #a7b4b7, #beb5a5, #adbec2, #b9c7cb); } .nowPlayingBarSecondaryText { @@ -254,10 +254,10 @@ html { .emby-input, .emby-textarea { color: inherit; - background: rgba(255, 255, 255, .9); - border: .07em solid rgba(0, 0, 0, .158); - -webkit-border-radius: .15em; - border-radius: .15em; + background: rgba(255, 255, 255, 0.9); + border: 0.07em solid rgba(0, 0, 0, 0.158); + -webkit-border-radius: 0.15em; + border-radius: 0.15em; } .emby-input:focus, @@ -408,8 +408,8 @@ html { color: #000; background: #fff3a5; padding: 1em; - -webkit-border-radius: .25em; - border-radius: .25em; + -webkit-border-radius: 0.25em; + border-radius: 0.25em; } .ratingbutton-icon-withrating { diff --git a/src/themes/blueradiance/theme.css b/src/themes/blueradiance/theme.css index e86e8f4459..59cf8c5b14 100644 --- a/src/themes/blueradiance/theme.css +++ b/src/themes/blueradiance/theme.css @@ -17,20 +17,20 @@ html { .skinHeader-withBackground { background: #303030; - background: -webkit-gradient(linear, left top, right top, from(#291A31), color-stop(#033664), color-stop(#011432), color-stop(#141A3A), to(#291A31)); - background: -webkit-linear-gradient(left, #291A31, #033664, #011432, #141A3A, #291A31); - background: -o-linear-gradient(left, #291A31, #033664, #011432, #141A3A, #291A31); - background: linear-gradient(to right, #291A31, #033664, #011432, #141A3A, #291A31); + background: -webkit-gradient(linear, left top, right top, from(#291a31), color-stop(#033664), color-stop(#011432), color-stop(#141a3a), to(#291a31)); + background: -webkit-linear-gradient(left, #291a31, #033664, #011432, #141a3a, #291a31); + background: -o-linear-gradient(left, #291a31, #033664, #011432, #141a3a, #291a31); + background: linear-gradient(to right, #291a31, #033664, #011432, #141a3a, #291a31); } .skinHeader.semiTransparent { -webkit-backdrop-filter: none !important; backdrop-filter: none !important; - background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, .6)), to(rgba(0, 0, 0, 0))); - background: -webkit-linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)); - background: -o-linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)); - background: linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)); - background-color: rgba(0, 0, 0, .3); + background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.6)), to(rgba(0, 0, 0, 0))); + background: -webkit-linear-gradient(rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0)); + background: -o-linear-gradient(rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0)); + background: linear-gradient(rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0)); + background-color: rgba(0, 0, 0, 0.3); } .pageTitleWithDefaultLogo { @@ -251,10 +251,10 @@ html { .emby-input, .emby-textarea { color: inherit; - background: rgba(0, 0, 0, .5); - border: .07em solid transparent; - -webkit-border-radius: .15em; - border-radius: .15em; + background: rgba(0, 0, 0, 0.5); + border: 0.07em solid transparent; + -webkit-border-radius: 0.15em; + border-radius: 0.15em; } .emby-input:focus, @@ -411,8 +411,8 @@ html { color: #ddd; background: #111; padding: 1em; - -webkit-border-radius: .25em; - border-radius: .25em; + -webkit-border-radius: 0.25em; + border-radius: 0.25em; } .ratingbutton-icon-withrating { @@ -438,8 +438,8 @@ html { } ::-webkit-scrollbar-track { - -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3); - box-shadow: inset 0 0 6px rgba(0, 0, 0, .3); + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); } ::-webkit-scrollbar-track-piece { diff --git a/src/themes/dark/theme.css b/src/themes/dark/theme.css index c2f4308dd0..ff66451fdd 100644 --- a/src/themes/dark/theme.css +++ b/src/themes/dark/theme.css @@ -226,9 +226,9 @@ html { .emby-textarea { color: inherit; background: #292929; - border: .07em solid #292929; - -webkit-border-radius: .15em; - border-radius: .15em; + border: 0.07em solid #292929; + -webkit-border-radius: 0.15em; + border-radius: 0.15em; } .emby-input:focus, @@ -381,8 +381,8 @@ html { color: #ddd; background: #111; padding: 1em; - -webkit-border-radius: .25em; - border-radius: .25em; + -webkit-border-radius: 0.25em; + border-radius: 0.25em; } .ratingbutton-icon-withrating { @@ -408,8 +408,8 @@ html { } ::-webkit-scrollbar-track { - -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3); - box-shadow: inset 0 0 6px rgba(0, 0, 0, .3); + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); } ::-webkit-scrollbar-track-piece { diff --git a/src/themes/light/theme.css b/src/themes/light/theme.css index beb672aecd..f248ab9313 100644 --- a/src/themes/light/theme.css +++ b/src/themes/light/theme.css @@ -22,9 +22,9 @@ html { .skinHeader-withBackground { background-color: #303030; color: #ccc; - color: rgba(255, 255, 255, .87); - -webkit-box-shadow: 0 .0725em .29em 0 rgba(0, 0, 0, .37); - box-shadow: 0 .0725em .29em 0 rgba(0, 0, 0, .37); + color: rgba(255, 255, 255, 0.87); + -webkit-box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37); + box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37); } .osdHeader { @@ -248,9 +248,9 @@ html { .emby-textarea { color: inherit; background: #fff; - border: .07em solid rgba(0, 0, 0, .158); - -webkit-border-radius: .15em; - border-radius: .15em; + border: 0.07em solid rgba(0, 0, 0, 0.158); + -webkit-border-radius: 0.15em; + border-radius: 0.15em; } .emby-input:focus, @@ -400,8 +400,8 @@ html { color: #000; background: #fff3a5; padding: 1em; - -webkit-border-radius: .25em; - border-radius: .25em; + -webkit-border-radius: 0.25em; + border-radius: 0.25em; } .ratingbutton-icon-withrating { diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index f8406f2340..3425109479 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -18,18 +18,18 @@ html { .skinHeader-withBackground { background: #000420; background: -moz-linear-gradient(left, #000420 0%, #06256f 18%, #2b052b 38%, #2b052b 68%, #06256f 81%, #000420 100%); - background: -webkit-linear-gradient(left, #000420 0%,#06256f 18%,#2b052b 38%,#2b052b 68%,#06256f 81%,#000420 100%); - background: linear-gradient(to right, #000420 0%,#06256f 18%,#2b052b 38%,#2b052b 68%,#06256f 81%,#000420 100%); + background: -webkit-linear-gradient(left, #000420 0%, #06256f 18%, #2b052b 38%, #2b052b 68%, #06256f 81%, #000420 100%); + background: linear-gradient(to right, #000420 0%, #06256f 18%, #2b052b 38%, #2b052b 68%, #06256f 81%, #000420 100%); } .skinHeader.semiTransparent { -webkit-backdrop-filter: none !important; backdrop-filter: none !important; - background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, .6)), to(rgba(0, 0, 0, 0))); - background: -webkit-linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)); - background: -o-linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)); - background: linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)); - background-color: rgba(0, 0, 0, .3); + background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.6)), to(rgba(0, 0, 0, 0))); + background: -webkit-linear-gradient(rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0)); + background: -o-linear-gradient(rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0)); + background: linear-gradient(rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0)); + background-color: rgba(0, 0, 0, 0.3); } .pageTitleWithDefaultLogo { @@ -339,10 +339,10 @@ a[data-role=button] { .emby-input, .emby-textarea { color: inherit; - background: rgba(0, 0, 0, .5); - border: .07em solid transparent; - -webkit-border-radius: .15em; - border-radius: .15em; + background: rgba(0, 0, 0, 0.5); + border: 0.07em solid transparent; + -webkit-border-radius: 0.15em; + border-radius: 0.15em; } .emby-input:focus, @@ -504,8 +504,8 @@ a[data-role=button] { color: #0e0f2d; background: #dbe6ff; padding: 1em; - -webkit-border-radius: .25em; - border-radius: .25em; + -webkit-border-radius: 0.25em; + border-radius: 0.25em; } .ratingbutton-icon-withrating { @@ -542,8 +542,8 @@ a[data-role=button] { } ::-webkit-scrollbar-track { - -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3); - box-shadow: inset 0 0 6px rgba(0, 0, 0, .3); + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); } ::-webkit-scrollbar-track-piece { diff --git a/src/themes/wmc/theme.css b/src/themes/wmc/theme.css index c3c97f5f03..8190f1ac5a 100644 --- a/src/themes/wmc/theme.css +++ b/src/themes/wmc/theme.css @@ -32,11 +32,11 @@ html { .skinHeader.semiTransparent { -webkit-backdrop-filter: none !important; backdrop-filter: none !important; - background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, .6)), to(rgba(0, 0, 0, 0))); - background: -webkit-linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)); - background: -o-linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)); - background: linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)); - background-color: rgba(0, 0, 0, .3); + background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.6)), to(rgba(0, 0, 0, 0))); + background: -webkit-linear-gradient(rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0)); + background: -o-linear-gradient(rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0)); + background: linear-gradient(rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0)); + background-color: rgba(0, 0, 0, 0.3); } .pageTitleWithDefaultLogo { @@ -45,11 +45,11 @@ html { .backgroundContainer, .dialog { - background: -webkit-gradient(linear, left top, left bottom, from(#0F3562), color-stop(#1162A4), to(#03215F)); - background: -webkit-linear-gradient(top, #0F3562, #1162A4, #03215F); - background: -o-linear-gradient(top, #0F3562, #1162A4, #03215F); - background: linear-gradient(to bottom, #0F3562, #1162A4, #03215F); - background-color: #0F3562; + background: -webkit-gradient(linear, left top, left bottom, from(#0f3562), color-stop(#1162a4), to(#03215f)); + background: -webkit-linear-gradient(top, #0f3562, #1162a4, #03215f); + background: -o-linear-gradient(top, #0f3562, #1162a4, #03215f); + background: linear-gradient(to bottom, #0f3562, #1162a4, #03215f); + background-color: #0f3562; } .backgroundContainer.withBackdrop { @@ -169,12 +169,12 @@ html { .appfooter, .formDialogFooter:not(.formDialogFooter-clear) { - background: #0C2450; - background: -webkit-gradient(linear, left bottom, left top, from(#0C2450), to(#081B3B)); - background: -webkit-linear-gradient(bottom, #0C2450, #081B3B); - background: -o-linear-gradient(bottom, #0C2450, #081B3B); - background: linear-gradient(to top, #0C2450, #081B3B); - color: rgba(255, 255, 255, .78); + background: #0c2450; + background: -webkit-gradient(linear, left bottom, left top, from(#0c2450), to(#081b3b)); + background: -webkit-linear-gradient(bottom, #0c2450, #081b3b); + background: -o-linear-gradient(bottom, #0c2450, #081b3b); + background: linear-gradient(to top, #0c2450, #081b3b); + color: rgba(255, 255, 255, 0.78); } .itemSelectionPanel { @@ -237,10 +237,10 @@ html { .emby-input, .emby-textarea { color: inherit; - background: rgba(255, 255, 255, .2); - border: .07em solid rgba(255, 255, 255, .135); - -webkit-border-radius: .15em; - border-radius: .15em; + background: rgba(255, 255, 255, 0.2); + border: 0.07em solid rgba(255, 255, 255, 0.135); + -webkit-border-radius: 0.15em; + border-radius: 0.15em; } .emby-input:focus, @@ -395,8 +395,8 @@ html { color: #000; background: #fff3a5; padding: 1em; - -webkit-border-radius: .25em; - border-radius: .25em; + -webkit-border-radius: 0.25em; + border-radius: 0.25em; } .ratingbutton-icon-withrating { @@ -422,8 +422,8 @@ html { } ::-webkit-scrollbar-track { - box-shadow: inset 0 0 6px rgba(0, 0, 0, .3); - -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3); + box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); } ::-webkit-scrollbar-track-piece { @@ -439,7 +439,7 @@ html { ::-webkit-scrollbar-thumb:vertical { border-radius: 2px; -webkit-border-radius: 2px; - background: center no-repeat rgba(255, 255, 255, .7); + background: center no-repeat rgba(255, 255, 255, 0.7); } .metadataSidebarIcon { From c96aad1c95a4cf358c5f164f0f8dbe712ccb0749 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 25 Jan 2020 11:42:43 +0100 Subject: [PATCH 070/105] Fix intentation (CSS) --- .stylelintrc | 1 + src/assets/css/fonts.css | 4 +- src/assets/css/scrollstyles.css | 10 +-- src/assets/css/videoosd.css | 2 +- src/components/appfooter/appfooter.css | 6 +- src/components/cardbuilder/card.css | 68 +++++++-------- src/components/dialogHelper/dialoghelper.css | 2 +- src/components/guide/guide.css | 58 ++++++------- src/components/indicators/indicators.css | 2 +- src/components/listview/listview.css | 16 ++-- src/components/loading/loading.css | 6 +- .../nowplayingbar/nowplayingbar.css | 4 +- src/components/slideshow/style.css | 6 +- src/components/youtubeplayer/style.css | 18 ++-- src/elements/emby-button/emby-button.css | 46 +++++------ src/elements/emby-checkbox/emby-checkbox.css | 10 +-- src/elements/emby-input/emby-input.css | 6 +- src/elements/emby-select/emby-select.css | 32 ++++---- src/elements/emby-slider/emby-slider.css | 82 +++++++++---------- src/elements/emby-textarea/emby-textarea.css | 6 +- src/themes/appletv/theme.css | 2 +- src/themes/blueradiance/theme.css | 2 +- src/themes/dark/theme.css | 2 +- src/themes/emby/theme.css | 2 +- src/themes/light/theme.css | 2 +- src/themes/wmc/theme.css | 2 +- 26 files changed, 199 insertions(+), 198 deletions(-) diff --git a/.stylelintrc b/.stylelintrc index 57ef97a70d..93e3592099 100644 --- a/.stylelintrc +++ b/.stylelintrc @@ -70,6 +70,7 @@ "function-parentheses-newline-inside": "always-multi-line", "function-parentheses-space-inside": "never-single-line", "function-whitespace-after": "always", + "indentation": 4, "keyframe-declaration-no-important": true, "length-zero-no-unit": true, "max-empty-lines": 1, diff --git a/src/assets/css/fonts.css b/src/assets/css/fonts.css index 1fd4a14a02..30fd1e2eb6 100644 --- a/src/assets/css/fonts.css +++ b/src/assets/css/fonts.css @@ -6,8 +6,8 @@ html { } h1, - h2, - h3 { +h2, +h3 { /* For better bolding, since Helvetica does not support 500 weight, and 600 is too thick */ font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen-Sans", "Ubuntu", "Cantarell", "Helvetica Neue", 'Open Sans', sans-serif; } diff --git a/src/assets/css/scrollstyles.css b/src/assets/css/scrollstyles.css index 34ce01c96d..1cb3207e06 100644 --- a/src/assets/css/scrollstyles.css +++ b/src/assets/css/scrollstyles.css @@ -10,7 +10,7 @@ } .hiddenScrollX, - .layout-tv .scrollX { +.layout-tv .scrollX { -ms-overflow-style: none; } @@ -19,7 +19,7 @@ } .hiddenScrollX::-webkit-scrollbar, - .layout-tv .scrollX::-webkit-scrollbar { +.layout-tv .scrollX::-webkit-scrollbar { height: 0 !important; display: none; } @@ -38,7 +38,7 @@ } .hiddenScrollY, - .layout-tv .smoothScrollY { +.layout-tv .smoothScrollY { -ms-overflow-style: none; /* Can't do this because it not only hides the scrollbar, but also prevents scrolling */ @@ -51,8 +51,8 @@ } .hiddenScrollY::-webkit-scrollbar, - .layout-tv .smoothScrollY::-webkit-scrollbar, - .layout-tv .scrollY::-webkit-scrollbar { +.layout-tv .smoothScrollY::-webkit-scrollbar, +.layout-tv .scrollY::-webkit-scrollbar { width: 0 !important; display: none; } diff --git a/src/assets/css/videoosd.css b/src/assets/css/videoosd.css index c0a09bdc84..f4f198325b 100644 --- a/src/assets/css/videoosd.css +++ b/src/assets/css/videoosd.css @@ -277,7 +277,7 @@ @media all and (max-width: 50em) { .videoOsdBottom .btnFastForward, - .videoOsdBottom .btnRewind { + .videoOsdBottom .btnRewind { display: none !important; } } diff --git a/src/components/appfooter/appfooter.css b/src/components/appfooter/appfooter.css index 06776650f2..93cb3a75a5 100644 --- a/src/components/appfooter/appfooter.css +++ b/src/components/appfooter/appfooter.css @@ -8,6 +8,6 @@ contain: layout style; } - .appfooter.headroom--unpinned { - transform: translateY(100%) !important; - } +.appfooter.headroom--unpinned { + transform: translateY(100%) !important; +} diff --git a/src/components/cardbuilder/card.css b/src/components/cardbuilder/card.css index c5232bb54e..96bd28e8d1 100644 --- a/src/components/cardbuilder/card.css +++ b/src/components/cardbuilder/card.css @@ -56,26 +56,26 @@ button::-moz-focus-inner { } .cardPadder-backdrop, - .cardPadder-mixedBackdrop, - .cardPadder-smallBackdrop, - .cardPadder-overflowBackdrop, - .cardPadder-overflowSmallBackdrop { +.cardPadder-mixedBackdrop, +.cardPadder-smallBackdrop, +.cardPadder-overflowBackdrop, +.cardPadder-overflowSmallBackdrop { padding-bottom: 56.25%; contain: strict; } .cardPadder-square, - .cardPadder-mixedSquare, - .cardPadder-overflowSquare, - .overflowSquareCard-textCardPadder { +.cardPadder-mixedSquare, +.cardPadder-overflowSquare, +.overflowSquareCard-textCardPadder { padding-bottom: 100%; contain: strict; } .cardPadder-portrait, - .cardPadder-mixedPortrait, - .cardPadder-overflowPortrait, - .overflowPortraitCard-textCardPadder { +.cardPadder-mixedPortrait, +.cardPadder-overflowPortrait, +.overflowPortraitCard-textCardPadder { padding-bottom: 150%; contain: strict; } @@ -492,14 +492,14 @@ button::-moz-focus-inner { } .squareCard, - .portraitCard { + .portraitCard { width: 33.333333333333333333333333333333%; } } @media (min-width: 43.75em) { .squareCard, - .portraitCard { + .portraitCard { width: 25%; } } @@ -516,7 +516,7 @@ button::-moz-focus-inner { } .squareCard, - .portraitCard { + .portraitCard { width: 20%; } @@ -537,7 +537,7 @@ button::-moz-focus-inner { } .squareCard, - .portraitCard { + .portraitCard { width: 16.666666666666666666666666666667%; } @@ -552,7 +552,7 @@ button::-moz-focus-inner { @media (min-width: 87.5em) { .squareCard, - .portraitCard { + .portraitCard { width: 14.285714285714285714285714285714%; } @@ -571,14 +571,14 @@ button::-moz-focus-inner { } .squareCard, - .portraitCard { + .portraitCard { width: 12.5%; } } @media (min-width: 120em) { .squareCard, - .portraitCard { + .portraitCard { width: 11.111111111111111111111111111111%; } } @@ -589,7 +589,7 @@ button::-moz-focus-inner { } .squareCard, - .portraitCard { + .portraitCard { width: 10%; } } @@ -621,7 +621,7 @@ button::-moz-focus-inner { } .overflowSquareCard, - .overflowPortraitCard { +.overflowPortraitCard { width: 40vw; } @@ -647,33 +647,33 @@ button::-moz-focus-inner { @media (min-width: 43.75em) { .overflowSquareCard, - .overflowPortraitCard { + .overflowPortraitCard { width: 23.1vw; } } @media (min-width: 48.125em) { .overflowBackdropCard, - .overflowSmallBackdropCard { + .overflowSmallBackdropCard { width: 30vw; } } @media (orientation: landscape) { .overflowBackdropCard, - .overflowSmallBackdropCard { + .overflowSmallBackdropCard { width: 30vw; } .overflowSquareCard, - .overflowPortraitCard { + .overflowPortraitCard { width: 23.1vw; } } @media (orientation: landscape) and (min-width: 48.125em) { .overflowBackdropCard, - .overflowSmallBackdropCard { + .overflowSmallBackdropCard { width: 23.1vw; } } @@ -686,59 +686,59 @@ button::-moz-focus-inner { @media (min-width: 50em) { .overflowSquareCard, - .overflowPortraitCard { + .overflowPortraitCard { width: 18.5vw; } } @media (min-width: 75em) { .overflowBackdropCard, - .overflowSmallBackdropCard { + .overflowSmallBackdropCard { width: 23.1vw; } .overflowSquareCard, - .overflowPortraitCard { + .overflowPortraitCard { width: 15.5vw; } } @media (min-width: 87.5em) { .overflowSquareCard, - .overflowPortraitCard { + .overflowPortraitCard { width: 13.3vw; } } @media (min-width: 100em) { .overflowBackdropCard, - .overflowSmallBackdropCard { + .overflowSmallBackdropCard { width: 18.7vw; } .overflowSquareCard, - .overflowPortraitCard { + .overflowPortraitCard { width: 11.6vw; } } @media (min-width: 120em) { .overflowSquareCard, - .overflowPortraitCard { + .overflowPortraitCard { width: 10.3vw; } } @media (min-width: 131.25em) { .overflowSquareCard, - .overflowPortraitCard { + .overflowPortraitCard { width: 9.3vw; } } @media (min-width: 156.25em) { .overflowBackdropCard, - .overflowSmallBackdropCard { + .overflowSmallBackdropCard { width: 15.6vw; } } @@ -756,7 +756,7 @@ button::-moz-focus-inner { } .itemsContainer-tv > .overflowSquareCard, - .itemsContainer-tv > .overflowPortraitCard { +.itemsContainer-tv > .overflowPortraitCard { width: 15.6vw; } diff --git a/src/components/dialogHelper/dialoghelper.css b/src/components/dialogHelper/dialoghelper.css index 0076eada65..df2adf075f 100644 --- a/src/components/dialogHelper/dialoghelper.css +++ b/src/components/dialogHelper/dialoghelper.css @@ -114,7 +114,7 @@ @media all and (max-width: 80em), all and (max-height: 45em) { .dialog-fixedSize, - .dialog-fullscreen-lowres { + .dialog-fullscreen-lowres { position: fixed !important; top: 0 !important; bottom: 0 !important; diff --git a/src/components/guide/guide.css b/src/components/guide/guide.css index 119f0c142e..3b776e6dde 100644 --- a/src/components/guide/guide.css +++ b/src/components/guide/guide.css @@ -92,27 +92,27 @@ } .channelPrograms, - .timeslotHeadersInner { +.timeslotHeadersInner { width: 1800vw; } @media all and (min-width: 37.5em) { .channelPrograms, - .timeslotHeadersInner { + .timeslotHeadersInner { width: 1400vw; } } @media all and (min-width: 50em) { .channelPrograms, - .timeslotHeadersInner { + .timeslotHeadersInner { width: 1200vw; } } @media all and (min-width: 80em) { .channelPrograms, - .timeslotHeadersInner { + .timeslotHeadersInner { width: 810vw; } } @@ -125,12 +125,12 @@ } .programCell, - .guide-channelHeaderCell { +.guide-channelHeaderCell { outline: none !important; } .guide-channelHeaderCell, - .guide-channelTimeslotHeader { +.guide-channelTimeslotHeader { padding: 0 !important; cursor: pointer; outline: none !important; @@ -167,34 +167,34 @@ This was causing channelsContainer to extend beyond the fixed width on ps4, tizen, lg and opera tv. */ .channelsContainer, - .guide-channelTimeslotHeader { +.guide-channelTimeslotHeader { width: 24vw; } @media all and (min-width: 31.25em) { .channelsContainer, - .guide-channelTimeslotHeader { + .guide-channelTimeslotHeader { width: 16vw; } } @media all and (min-width: 37.5em) { .channelsContainer, - .guide-channelTimeslotHeader { + .guide-channelTimeslotHeader { width: 16vw; } } @media all and (min-width: 50em) { .channelsContainer, - .guide-channelTimeslotHeader { + .guide-channelTimeslotHeader { width: 14vw; } } @media all and (min-width: 80em) { .channelsContainer, - .guide-channelTimeslotHeader { + .guide-channelTimeslotHeader { width: 12vw; } } @@ -214,25 +214,25 @@ @media all and (max-width: 50em) { .newTvProgram, - .liveTvProgram, - .premiereTvProgram, - .guideHdIcon { + .liveTvProgram, + .premiereTvProgram, + .guideHdIcon { display: none; } } - .channelPrograms + .channelPrograms, - .guide-channelHeaderCell + .guide-channelHeaderCell { - margin-top: -1px; - } +.channelPrograms + .channelPrograms, +.guide-channelHeaderCell + .guide-channelHeaderCell { + margin-top: -1px; +} .channelPrograms-tv, - .guide-channelHeaderCell-tv { +.guide-channelHeaderCell-tv { height: 3em; } .guide-channelTimeslotHeader, - .timeslotHeader { +.timeslotHeader { background: transparent !important; height: 2.8em; } @@ -377,12 +377,12 @@ } .channelsContainer, - .programGrid { +.programGrid { contain: layout style paint; } .timerIcon, - .seriesTimerIcon { +.seriesTimerIcon { color: #c33 !important; } @@ -425,11 +425,11 @@ font-weight: normal; } - .guide-date-tab-button.emby-tab-button-active { - border-color: transparent !important; - } +.guide-date-tab-button.emby-tab-button-active { + border-color: transparent !important; +} - .guide-date-tab-button.show-focus:focus { - border-radius: 0.15em !important; - transform: none !important; - } +.guide-date-tab-button.show-focus:focus { + border-radius: 0.15em !important; + transform: none !important; +} diff --git a/src/components/indicators/indicators.css b/src/components/indicators/indicators.css index 4343b69867..e4e7985817 100644 --- a/src/components/indicators/indicators.css +++ b/src/components/indicators/indicators.css @@ -86,7 +86,7 @@ } .missingIndicator, - .unairedIndicator { +.unairedIndicator { background: #c33; padding: 0.25em 0.5em; border-radius: 100em; diff --git a/src/components/listview/listview.css b/src/components/listview/listview.css index 9a355d1b00..1a37e45561 100644 --- a/src/components/listview/listview.css +++ b/src/components/listview/listview.css @@ -54,14 +54,14 @@ } .listItemImage, - .listItemIcon, - .listItemAside { +.listItemIcon, +.listItemAside { flex-shrink: 0; } .listItemBody, - .listItemImage, - .listItemIcon { +.listItemImage, +.listItemIcon { display: inline-block; vertical-align: middle; } @@ -90,8 +90,8 @@ } .listItem, - .listItemBody, - .listItemMediaInfo { +.listItemBody, +.listItemMediaInfo { display: flex; contain: layout style; } @@ -260,8 +260,8 @@ @media all and (max-width: 50em) { .listItem .endsAt, - .listItem .criticRating, - .listItem-overview { + .listItem .criticRating, + .listItem-overview { display: none !important; } } diff --git a/src/components/loading/loading.css b/src/components/loading/loading.css index d612f64e7f..dae33aa9b8 100644 --- a/src/components/loading/loading.css +++ b/src/components/loading/loading.css @@ -371,9 +371,9 @@ border-color: inherit; } - .mdl-spinner__circle-clipper .mdl-spinner__circle { - width: 200%; - } +.mdl-spinner__circle-clipper .mdl-spinner__circle { + width: 200%; +} .mdl-spinner__circleLeft { border-right-color: transparent !important; diff --git a/src/components/nowplayingbar/nowplayingbar.css b/src/components/nowplayingbar/nowplayingbar.css index 75a8ba0b6b..b1e77715ff 100644 --- a/src/components/nowplayingbar/nowplayingbar.css +++ b/src/components/nowplayingbar/nowplayingbar.css @@ -29,7 +29,7 @@ } .mediaButton, - .nowPlayingBarUserDataButtons .btnUserItemRating { +.nowPlayingBarUserDataButtons .btnUserItemRating { vertical-align: middle; margin: 0; text-align: center; @@ -165,7 +165,7 @@ @media all and (max-width: 24em) { .nowPlayingBar .muteButton, - .nowPlayingBar .unmuteButton { + .nowPlayingBar .unmuteButton { display: none; } } diff --git a/src/components/slideshow/style.css b/src/components/slideshow/style.css index f95952a0d3..2bea7c9696 100644 --- a/src/components/slideshow/style.css +++ b/src/components/slideshow/style.css @@ -4,13 +4,13 @@ } .slideshowSwiperContainer, - .swiper-wrapper, - .swiper-slide { +.swiper-wrapper, +.swiper-slide { background: #000; } .slideshowImage, - .slideshowSwiperContainer { +.slideshowSwiperContainer { position: fixed; top: 0; right: 0; diff --git a/src/components/youtubeplayer/style.css b/src/components/youtubeplayer/style.css index 87526c47a9..1328e6f3d5 100644 --- a/src/components/youtubeplayer/style.css +++ b/src/components/youtubeplayer/style.css @@ -9,13 +9,13 @@ align-items: center; } - .youtubePlayerContainer.onTop { - z-index: 1000; - } +.youtubePlayerContainer.onTop { + z-index: 1000; +} - .youtubePlayerContainer video { - margin: 0 !important; - padding: 0 !important; - width: 100%; - height: 100%; - } +.youtubePlayerContainer video { + margin: 0 !important; + padding: 0 !important; + width: 100%; + height: 100%; +} diff --git a/src/elements/emby-button/emby-button.css b/src/elements/emby-button/emby-button.css index 9d4c287906..2776dec65d 100644 --- a/src/elements/emby-button/emby-button.css +++ b/src/elements/emby-button/emby-button.css @@ -131,33 +131,33 @@ z-index: 1; } - .paper-icon-button-light::-moz-focus-inner { - border: 0; - } +.paper-icon-button-light::-moz-focus-inner { + border: 0; +} - .paper-icon-button-light:disabled { - opacity: 0.3; - cursor: default; - } +.paper-icon-button-light:disabled { + opacity: 0.3; + cursor: default; +} - .paper-icon-button-light > i { - font-size: 1.66956521739130434em; +.paper-icon-button-light > i { + font-size: 1.66956521739130434em; - /* Make sure its on top of the ripple */ - position: relative; - z-index: 1; - vertical-align: middle; - } + /* Make sure its on top of the ripple */ + position: relative; + z-index: 1; + vertical-align: middle; +} - .paper-icon-button-light > div { - max-height: 100%; - transform: scale(1.8); - position: relative; - z-index: 1; - vertical-align: middle; - display: inline; - margin: 0 auto; - } +.paper-icon-button-light > div { + max-height: 100%; + transform: scale(1.8); + position: relative; + z-index: 1; + vertical-align: middle; + display: inline; + margin: 0 auto; +} .emby-button-foreground { position: relative; diff --git a/src/elements/emby-checkbox/emby-checkbox.css b/src/elements/emby-checkbox/emby-checkbox.css index b34d1f6d5c..e694342571 100644 --- a/src/elements/emby-checkbox/emby-checkbox.css +++ b/src/elements/emby-checkbox/emby-checkbox.css @@ -101,11 +101,11 @@ flex-wrap: wrap; } - .checkboxList-verticalwrap > .emby-checkbox-label { - display: inline-flex; - margin: 0.3em 0 0.3em 0; - width: 12em; - } +.checkboxList-verticalwrap > .emby-checkbox-label { + display: inline-flex; + margin: 0.3em 0 0.3em 0; + width: 12em; +} .checkboxList-paperList { padding: 1em !important; diff --git a/src/elements/emby-input/emby-input.css b/src/elements/emby-input/emby-input.css index 8cd082aaaa..65fa4ddee6 100644 --- a/src/elements/emby-input/emby-input.css +++ b/src/elements/emby-input/emby-input.css @@ -21,9 +21,9 @@ width: 100%; } - .emby-input::-moz-focus-inner { - border: 0; - } +.emby-input::-moz-focus-inner { + border: 0; +} .inputContainer { margin-bottom: 1.8em; diff --git a/src/elements/emby-select/emby-select.css b/src/elements/emby-select/emby-select.css index 32c2905b48..b508e5d0e3 100644 --- a/src/elements/emby-select/emby-select.css +++ b/src/elements/emby-select/emby-select.css @@ -20,14 +20,14 @@ width: 100%; } - .emby-select[disabled] { - background: none !important; - border-color: transparent !important; - color: inherit !important; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - } +.emby-select[disabled] { + background: none !important; + border-color: transparent !important; + color: inherit !important; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} .emby-select::-moz-focus-inner { border: 0; @@ -38,10 +38,10 @@ font-size: inherit; } - .selectContainer-inline > .emby-select[disabled] { - padding-left: 0; - padding-right: 0; - } +.selectContainer-inline > .emby-select[disabled] { + padding-left: 0; + padding-right: 0; +} .emby-select-focusscale { transition: transform 180ms ease-out !important; @@ -49,10 +49,10 @@ transform-origin: center center; } - .emby-select-focusscale:focus { - transform: scale(1.04); - z-index: 1; - } +.emby-select-focusscale:focus { + transform: scale(1.04); + z-index: 1; +} .emby-select + .fieldDescription { margin-top: 0.25em; diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index 53fd0793e2..30d4ccb6d8 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -31,55 +31,55 @@ display: block; } - .mdl-slider::-moz-focus-outer { - border: 0; - } +.mdl-slider::-moz-focus-outer { + border: 0; +} - .mdl-slider::-ms-tooltip { - display: none; - } +.mdl-slider::-ms-tooltip { + display: none; +} - .mdl-slider::-webkit-slider-runnable-track { - background: transparent; - } +.mdl-slider::-webkit-slider-runnable-track { + background: transparent; +} - .mdl-slider::-moz-range-track { - background: #444; - border: none; - width: calc(100% - 20px); - } +.mdl-slider::-moz-range-track { + background: #444; + border: none; + width: calc(100% - 20px); +} - .mdl-slider::-moz-range-progress { - background: #00a4dc; - width: calc(100% - 20px); - } +.mdl-slider::-moz-range-progress { + background: #00a4dc; + width: calc(100% - 20px); +} - .mdl-slider::-ms-track { - background: none; - color: transparent; - height: 0.2em; - width: 100%; - border: none; - } +.mdl-slider::-ms-track { + background: none; + color: transparent; + height: 0.2em; + width: 100%; + border: none; +} - .mdl-slider::-ms-fill-lower { - display: none; - } +.mdl-slider::-ms-fill-lower { + display: none; +} - .mdl-slider::-ms-fill-upper { - display: none; - } +.mdl-slider::-ms-fill-upper { + display: none; +} - .mdl-slider::-webkit-slider-thumb { - -webkit-appearance: none; - width: 1.2em; - height: 1.2em; - box-sizing: border-box; - border-radius: 50%; - background: #00a4dc; - border: none; - transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1), border 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1), background 0.28s cubic-bezier(0.4, 0, 0.2, 1); - } +.mdl-slider::-webkit-slider-thumb { + -webkit-appearance: none; + width: 1.2em; + height: 1.2em; + box-sizing: border-box; + border-radius: 50%; + background: #00a4dc; + border: none; + transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1), border 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1), background 0.28s cubic-bezier(0.4, 0, 0.2, 1); +} .mdl-slider-hoverthumb::-webkit-slider-thumb { transform: none; diff --git a/src/elements/emby-textarea/emby-textarea.css b/src/elements/emby-textarea/emby-textarea.css index 44dfaee514..0866664914 100644 --- a/src/elements/emby-textarea/emby-textarea.css +++ b/src/elements/emby-textarea/emby-textarea.css @@ -21,9 +21,9 @@ width: 100%; } - .emby-textarea::-moz-focus-inner { - border: 0; - } +.emby-textarea::-moz-focus-inner { + border: 0; +} .textareaLabel { display: inline-block; diff --git a/src/themes/appletv/theme.css b/src/themes/appletv/theme.css index ee2a3565d1..789371c454 100644 --- a/src/themes/appletv/theme.css +++ b/src/themes/appletv/theme.css @@ -7,7 +7,7 @@ html { .wizardStartForm, .ui-corner-all, .ui-shadow { - background-color: #303030; + background-color: #303030; } .emby-collapsible-button { diff --git a/src/themes/blueradiance/theme.css b/src/themes/blueradiance/theme.css index 59cf8c5b14..75c7219544 100644 --- a/src/themes/blueradiance/theme.css +++ b/src/themes/blueradiance/theme.css @@ -7,7 +7,7 @@ html { .wizardStartForm, .ui-corner-all, .ui-shadow { - background-color: #303030; + background-color: #303030; } .emby-collapsible-button { diff --git a/src/themes/dark/theme.css b/src/themes/dark/theme.css index ff66451fdd..a339c71861 100644 --- a/src/themes/dark/theme.css +++ b/src/themes/dark/theme.css @@ -7,7 +7,7 @@ html { .wizardStartForm, .ui-corner-all, .ui-shadow { - background-color: #101010; + background-color: #101010; } .emby-collapsible-button { diff --git a/src/themes/emby/theme.css b/src/themes/emby/theme.css index b2225a88d5..134bd61788 100644 --- a/src/themes/emby/theme.css +++ b/src/themes/emby/theme.css @@ -7,7 +7,7 @@ html { .wizardStartForm, .ui-corner-all, .ui-shadow { - background-color: #1f1f1f; + background-color: #1f1f1f; } .emby-collapsible-button { diff --git a/src/themes/light/theme.css b/src/themes/light/theme.css index f248ab9313..4f6017e169 100644 --- a/src/themes/light/theme.css +++ b/src/themes/light/theme.css @@ -7,7 +7,7 @@ html { .wizardStartForm, .ui-corner-all, .ui-shadow { - background-color: #303030; + background-color: #303030; } .emby-collapsible-button { diff --git a/src/themes/wmc/theme.css b/src/themes/wmc/theme.css index 8190f1ac5a..2d6a61be95 100644 --- a/src/themes/wmc/theme.css +++ b/src/themes/wmc/theme.css @@ -7,7 +7,7 @@ html { .wizardStartForm, .ui-corner-all, .ui-shadow { - background-color: #0c2450; + background-color: #0c2450; } .emby-collapsible-button { From d93c16ea729e74d656442cd12465cb967ce6f349 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 25 Jan 2020 15:32:24 +0300 Subject: [PATCH 071/105] Exit app on "go back" at server selection page --- src/components/appRouter.js | 2 +- src/scripts/routes.js | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/components/appRouter.js b/src/components/appRouter.js index 9305dbca3f..ad3a6ecd87 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -548,7 +548,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM /** * Pages of "no return" (Go back). */ - var startPages = ['home', 'login']; + var startPages = ['home', 'login', 'selectserver']; function canGoBack() { var curr = current(); diff --git a/src/scripts/routes.js b/src/scripts/routes.js index 69c996877f..b726aaf872 100644 --- a/src/scripts/routes.js +++ b/src/scripts/routes.js @@ -313,7 +313,8 @@ define([ autoFocus: false, anonymous: true, startup: true, - controller: "auth/selectserver" + controller: "auth/selectserver", + type: "selectserver" }); defineRoute({ path: "/serveractivity.html", From 4b5eb8e063c89ddfd21ef59d8b85fcdad205210e Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 25 Jan 2020 17:35:16 +0300 Subject: [PATCH 072/105] Fix click on pause button right after showOsd --- src/controllers/playback/videoosd.js | 38 +++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index 6392c3a1a8..122b2c8080 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -437,6 +437,11 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med }); currentVisibleMenu = null; toggleSubtitleSync("hide"); + + // Firefox does not blur by itself + if (document.activeElement) { + document.activeElement.blur(); + } } } @@ -1087,7 +1092,15 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med */ var NavigationKeys = ["ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown"]; + /** + * Clicked element. + * To skip 'click' handling on Firefox/Edge. + */ + var clickedElement; + function onWindowKeyDown(e) { + clickedElement = e.srcElement; + var key = keyboardnavigation.getKeyName(e); if (!currentVisibleMenu && 32 === e.keyCode) { @@ -1159,6 +1172,14 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } } + function onWindowMouseDown(e) { + clickedElement = e.srcElement; + } + + function onWindowTouchStart(e) { + clickedElement = e.srcElement; + } + function getImgUrl(item, chapter, index, maxWidth, apiClient) { if (chapter.ImageTag) { return apiClient.getScaledImageUrl(item.Id, { @@ -1289,6 +1310,12 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med dom.addEventListener(window, "keydown", onWindowKeyDown, { capture: true }); + dom.addEventListener(window, window.PointerEvent ? "pointerdown" : "mousedown", onWindowMouseDown, { + passive: true + }); + dom.addEventListener(window, "touchstart", onWindowTouchStart, { + passive: true + }); } catch (e) { require(['appRouter'], function(appRouter) { appRouter.showDirect('/'); @@ -1303,6 +1330,12 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med dom.removeEventListener(window, "keydown", onWindowKeyDown, { capture: true }); + dom.removeEventListener(window, window.PointerEvent ? "pointerdown" : "mousedown", onWindowMouseDown, { + passive: true + }); + dom.removeEventListener(window, "touchstart", onWindowTouchStart, { + passive: true + }); stopOsdHideTimer(); headerElement.classList.remove("osdHeader"); headerElement.classList.remove("osdHeader-hidden"); @@ -1472,7 +1505,10 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med playbackManager.previousTrack(currentPlayer); }); view.querySelector(".btnPause").addEventListener("click", function () { - playbackManager.playPause(currentPlayer); + // Ignore 'click' if another element was originally clicked (Firefox/Edge issue) + if (this.contains(clickedElement)) { + playbackManager.playPause(currentPlayer); + } }); view.querySelector(".btnNextTrack").addEventListener("click", function () { playbackManager.nextTrack(currentPlayer); From 95801249688955e827735901ef939c1aa34341d9 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 25 Jan 2020 18:05:54 +0300 Subject: [PATCH 073/105] Fix compatibility for older browsers (webOS 3) --- src/components/htmlvideoplayer/plugin.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/htmlvideoplayer/plugin.js b/src/components/htmlvideoplayer/plugin.js index a71b053a21..6f1ea2b110 100644 --- a/src/components/htmlvideoplayer/plugin.js +++ b/src/components/htmlvideoplayer/plugin.js @@ -1054,7 +1054,9 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa var options = { video: videoElement, subUrl: getTextTrackUrl(track, item), - fonts: attachments.map(i => i.DeliveryUrl), + fonts: attachments.map(function (i) { + return i.DeliveryUrl; + }), workerUrl: appRouter.baseUrl() + "/libraries/subtitles-octopus-worker.js", onError: function() { htmlMediaHelper.onErrorInternal(self, 'mediadecodeerror') From 0b118834519fad79c2051e1e8565e5e2300b731d Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 12:57:09 +0100 Subject: [PATCH 074/105] Move material icons to external package --- package.json | 3 +- src/apikeys.html | 2 +- .../flUhRq6tzZclQEJ-Vdg-IuiaDsNa.woff | Bin 63992 -> 0 bytes .../flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2 | Bin 49240 -> 0 bytes src/assets/css/material-icons/style.css | 25 ---------- src/bundle.js | 6 +++ .../accessschedule.template.html | 2 +- src/components/actionsheet/actionsheet.js | 6 +-- src/components/activitylog.js | 6 +-- src/components/alphapicker/alphapicker.js | 4 +- src/components/cardbuilder/cardBuilder.js | 28 +++++------ .../cardbuilder/chaptercardbuilder.js | 2 +- src/components/channelmapper/channelmapper.js | 6 +-- .../collectioneditor/collectioneditor.js | 4 +- .../directorybrowser/directorybrowser.js | 6 +-- .../emby-scrollbuttons/emby-scrollbuttons.js | 2 +- src/components/favoriteitems.js | 2 +- src/components/filtermenu/filtermenu.js | 2 +- .../guide/guide-settings.template.html | 2 +- src/components/guide/guide.js | 14 +++--- src/components/guide/tvguide.template.html | 6 +-- .../homescreensettings/homescreensettings.js | 6 +-- src/components/homesections/homesections.js | 8 ++-- .../imagedownloader/imagedownloader.js | 6 +-- .../imagedownloader.template.html | 2 +- src/components/imageeditor/imageeditor.js | 12 ++--- .../imageeditor/imageeditor.template.html | 14 +++--- .../imageoptionseditor.template.html | 2 +- .../imageuploader/imageuploader.template.html | 4 +- src/components/indicators/indicators.js | 20 ++++---- .../itemMediaInfo/itemMediaInfo.template.html | 2 +- .../itemidentifier.template.html | 2 +- .../libraryoptionseditor.js | 16 +++---- src/components/listview/listview.js | 18 +++---- src/components/mediainfo/mediainfo.js | 10 ++-- .../medialibrarycreator.js | 2 +- .../medialibrarycreator.template.html | 4 +- .../medialibraryeditor/medialibraryeditor.js | 2 +- .../medialibraryeditor.template.html | 4 +- .../metadataeditor/metadataeditor.js | 10 ++-- .../metadataeditor.template.html | 14 +++--- .../metadataeditor/personeditor.template.html | 2 +- src/components/multiselect/multiselect.js | 4 +- src/components/nowplayingbar/nowplayingbar.js | 18 +++---- src/components/playback/brightnessosd.js | 2 +- src/components/playback/volumeosd.js | 2 +- src/components/playerstats/playerstats.js | 2 +- .../playlisteditor/playlisteditor.js | 2 +- src/components/prompt/prompt.template.html | 2 +- .../recordingcreator.template.html | 2 +- .../recordingeditor.template.html | 2 +- .../recordingfields.template.html | 4 +- .../seriesrecordingeditor.template.html | 2 +- src/components/refreshdialog/refreshdialog.js | 2 +- src/components/remotecontrol/remotecontrol.js | 8 ++-- .../search/searchfields.template.html | 2 +- src/components/slideshow/slideshow.js | 2 +- src/components/sortmenu/sortmenu.js | 2 +- .../subtitleeditor/subtitleeditor.js | 8 ++-- .../subtitleeditor.template.html | 6 +-- .../subtitlesync/subtitlesync.template.html | 2 +- src/components/tunerpicker.js | 4 +- .../tvproviders/xmltv.template.html | 2 +- .../userdatabuttons/userdatabuttons.js | 2 +- src/components/viewsettings/viewsettings.js | 2 +- src/controllers/auth/selectserver.js | 2 +- src/controllers/dashboard/dashboard.js | 10 ++-- .../dashboard/notifications/notifications.js | 6 +-- .../dashboard/plugins/available.js | 2 +- .../dashboard/plugins/installed.js | 4 +- .../dashboard/scheduledtasks/scheduledtask.js | 4 +- .../scheduledtasks/scheduledtasks.js | 6 +-- src/controllers/devices.js | 4 +- src/controllers/dlnaprofile.js | 22 ++++----- src/controllers/dlnaprofiles.js | 4 +- src/controllers/favorites.js | 2 +- src/controllers/itemdetailpage.js | 2 +- src/controllers/livetvstatus.js | 8 ++-- src/controllers/medialibrarypage.js | 6 +-- src/controllers/movies/moviegenres.js | 2 +- src/controllers/shows/tvgenres.js | 2 +- src/controllers/userparentalcontrol.js | 4 +- src/controllers/userprofilespage.js | 8 ++-- src/dashboard.html | 10 ++-- src/dashboardgeneral.html | 4 +- src/dlnaprofile.html | 4 +- src/dlnaprofiles.html | 2 +- src/elements/emby-checkbox/emby-checkbox.js | 4 +- src/elements/emby-collapse/emby-collapse.js | 2 +- src/elements/emby-select/emby-select.js | 2 +- src/encodingsettings.html | 4 +- src/itemdetails.html | 28 +++++------ src/list.html | 18 +++---- src/livetv.html | 16 +++---- src/livetvsettings.html | 8 ++-- src/livetvstatus.html | 4 +- src/livetvtuner.html | 2 +- src/movies.html | 18 +++---- src/music.html | 22 ++++----- src/mypreferencesmenu.html | 18 +++---- src/networking.html | 2 +- src/nowplaying.html | 44 +++++++++--------- src/scheduledtask.html | 2 +- src/scripts/editorsidebar.js | 14 +++--- src/scripts/librarybrowser.js | 10 ++-- src/scripts/librarymenu.js | 28 +++++------ src/scripts/site.js | 4 +- src/tv.html | 12 ++--- src/userparentalcontrol.html | 4 +- src/userprofiles.html | 2 +- src/videoosd.html | 28 +++++------ src/wizardfinish.html | 4 +- src/wizardlibrary.html | 6 +-- src/wizardremoteaccess.html | 4 +- src/wizardsettings.html | 4 +- src/wizardstart.html | 2 +- src/wizarduser.html | 4 +- webpack.dev.js | 6 +++ webpack.prod.js | 6 +++ yarn.lock | 5 ++ 120 files changed, 413 insertions(+), 414 deletions(-) delete mode 100644 src/assets/css/material-icons/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.woff delete mode 100644 src/assets/css/material-icons/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2 delete mode 100644 src/assets/css/material-icons/style.css diff --git a/package.json b/package.json index 09b793cd3a..30ac728518 100644 --- a/package.json +++ b/package.json @@ -26,14 +26,15 @@ "howler": "^2.1.2", "jquery": "^3.4.1", "jstree": "^3.3.7", + "libass-wasm": "^2.1.1", "libjass": "^0.11.0", + "material-design-icons-iconfont": "^5.0.1", "native-promise-only": "^0.8.0-a", "requirejs": "^2.3.5", "resize-observer-polyfill": "^1.5.1", "shaka-player": "^2.5.5", "sortablejs": "^1.9.0", "swiper": "^3.4.2", - "libass-wasm": "^2.1.1", "webcomponents.js": "^0.7.24", "whatwg-fetch": "^1.1.1" }, diff --git a/src/apikeys.html b/src/apikeys.html index 47f032c1f4..6f766ae6c9 100644 --- a/src/apikeys.html +++ b/src/apikeys.html @@ -4,7 +4,7 @@

${HeaderApiKeys}

${HeaderApiKeysHelp}

diff --git a/src/assets/css/material-icons/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.woff b/src/assets/css/material-icons/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.woff deleted file mode 100644 index 9357bfc6ffab25813d70f9465b83aaa3c50d6fcf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63992 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

h0-G_jhHzJu%hY?R0lLoF1Q=>FbJ(C|%B- z={Ka`#K>tkNpEMLhqqspZj&U2uLk1hEnhA~__XkDo$n{pUFg6}20ilxHjMT~E$bpe z@_!`Gm=oUA&APjL2R(hV8{Raq=y#2W{P3!>YhXAy$X_+!{g^hS9-r2GeSU2!5>9kG zGLasqHsc@2Xe_BZyPQtu-1MUT{rIMkhuh~JqBjk?oUs8dJqRvYK~K-wr0VJgom=;0 zz%_Q1kCr;=Kx96~2(eWK4=|wqC=A6x(+aJsYiM_RdS5X%(D&<_Zt_t2uN3x!aNr{k z>2aU`hfI@&bdt2Dxt^sJ$!3~jFH=-mr-1fPtOR5MG`Izm*TQy?vSYsyJpb+N$>_q| z;_1tYUB3dkuEk(eLobo>PD6(sQ`5k+yU{>{X^L&6>9A?Q!Vni1F{X^` zVNBVGVM+m3_98@H!hKaZPcf)auv0JBOZCz^Y|ASp1rOjPtD^BM|63`S@l>Tue-(!3DM8=_am&NXFm^#vVs!4R@g(d#3|STS?qw@n9icx4MPkcv1DyPdu0Ia9Y=}Eb zS|o1Yv%ULztx{On?7J@2YKd32bX;#?Nl^NHUYPDky@C_W1=c$djSe9H79FUXmyB28 zU~M3Z?BPIE>J!qTzCcl&6C@X(1RH||z^`7SRtED;nELDn@rt2VaCmnJ_2hL}$K}9$1lC!!Me5yvJ=D~+(E5R0Csbn&G37yW< zYhZnd=pY;X6FWcZPk-m#5NMNCgmAgk4qx9Wf0aQKmSjIkJwc>$gdpd{9)=baP$eh{ z%Ubx~E6{Wg!ov2$>Tyl`HrTuil{{KG4rj;Uu=%gCZ0w1>>~`3{dG9sT6e97UwNzS~ z-NJK1wT)MuJeV;wrnvQV;|SBdR9Tm3u_bJ>K#0mabe_)({nqnocsh-Bp)@_ zOcZ1@9fKK%A*gZF4tp$c)QFxl2CZP8`zz!TU(;cW?efaTX#t3KvjwhEumPnRSep%N zBi}}|;I$QDvM?A9L6o0epC|DLGsA-;+HiAy32*%1I^ILDAx8MV;pM`_uI3v%$3eVH zHKnt4!d3E2NH33fbBQwv{m7pUVY!(UY^N(h8{b#*d=_Gr^)ecSdok@Z@uUOYJUb6)Ed zgEa>+m%2H3D&Pc>E}Cek#5iLJja&(4$#GRBPge9>m1U4sY|Y0a^I=*2 zd}R~kyQ1sXm!MG!M^0-TDRxwUzSy$+L|9{~3=ExNk4mcs_v5Opl#J4@30kL~Y=dlttdUtOMCmi3Bl`=Jyeeq|Pb_wFgTjP@q1M=86$_ozk-7{03Wy-_)d_JzFr%_1McNV%QD?pZ;_JBq(&e z24(*nrSIW~`xF-RM=ZJg9}(sa$BeNRWdKi2@!)O41g0N94xo8j`3L&?>R>HUce`=( zD#XKr=uJldKp&l<3&?+QwC~rbr==;%^PbI?7g-wbT9O%<8!C{aqto8QmO(zUlmjI8 zk&8=97xx^R)(&~SyFH;m|3o6Uchdh`OS-<4i(T9U$}DyZSvM`~_`nNGc<#2@?^uDm z2fe$!-id@h>2LmvaP`-%$j@Co#z@PyW0u>Lg*q{pY>-X4g%6c#?PXBw|7Fr9{V=Wd z3!k_EF2dmbyXu3rH^h`m#S|nY&PIN8G~WOODD2>&5Uw-9wyd^lm1Yw8^lYlLG-hD4j3JA5t7luKU}3iElh)-FZOR3Pv48%_3A zvI87N-;e;R0azBKXe}H|tPB+z3qJ{*k# zIdzF&j3ho2#PhbkSr+#@bh9dkx*~}qGb?-OBb6$Hw4MCK1puUbLxSia?a%aPdxuSq z=3kBLiQe9X9)C3tc~b5cs^y5?T7*_2W=JiA+vS-Tgnaasm8)d9t%D=>ianlnf_|wpHSnc28z=`lN5_$kIrtUvc(2AJj9K z=ylot=I_>Y^CjIVX!E0rWBTr+{l~06$0Xf~s1`(IUqw|wtX(YN!s}0E^_sqXTw7g* zazgO3D~W`nBobE&TIC8_m|dx~^psVYSA<$#qDh(}StL3I?LAd#Nlk#h(L?5e7{Vx07C1>V99QUeCO@=fkObJynw*8mU%CF7JIZTCGMo zhqITY6#X>TBVHN790PgAbh0it90lOSVfJ0o(<}AVhnHiMkmR9@tQy_*$)z8RhvRI$ zc{zIKY&H7iuGlDKuyFCc%G4)kn(OgE>|0V(&JDI$`RzTM1b+%k7SeW2BdaU{2Or$u z3?dquy<^#Dg$Lh|Y+U^2wU8Dfy?Us%BkD!F$oRtPHCUo!{xY@kZCq^RtIXBiscT(J=X*I2Jo8W?;UUOv;vl zLAH?m=;t%dudyRF#0x}_?TS`M=lHr#dQk!Co%?DhMGu5NIf#rcOkgc)&?^`r}5p0=HLdyRxN}u7vj3O{Jp)Gg6;ZPtCT^m}D1O_~w z#7)D4xVgZO)-S!v$p`&@$y_BA3kBD!W=I3TsF9wYG^i!F*c18wZqDhkmi<$f)+w^e zAptm{$`z8Vq$nZ1gqY`g!&oh^8cbtSg+p$K6hjFapv@?=kU@MT^$6JOBRiF1QVmgS z$)fz!nRL3TnzHQK?&fRVZ=TO21_lh1nYv?WU~OQ?ffl;gGLgW}K;WnzVF#N}4k*gN z2FWk^W&rmhS@xUqe9?;FWOX|}m69#g87^5WAcv{K4qSqJgKic=b~648@pvNC-w%8J z{hA0&W5u)RGcNgM>c6G=9{Gn41 zojL_8t5v>Y$uJ9TPFE&GUWJ#4s#gFrQLIRjws^V79wl{H#bg;QUt*2C`N2C1PC{Re zk4~yg_i`Yzm0kVntAt|u5~FSfxRIBz=YOaRB5n0ehDhsceH)o0oY;1|EU#iOCL7q4 zEJJ7>67QfDY^tSW;>Nwr#^E5_-R*Ur@P7>s^tR;>Z#X|kv}rcd@8%aC4EWJe`gD;h)A7q9UNolixFQ>vWHIY#jUk)rPklmCRk;EOP72bdSqR$BnCaaeU0zEzoO< zjMHxM84E)=Gp9P899YO8mU#3pZ>ZPn)SF+XK5u|7n3ety@eOvKd=6ibfd|_}M{4*d zx`61F3UCh_z%;sA7M{e})64-rQkOuti$qy$Yen*TmW^Ml!1$K&CstJ!To!4=+zb3c~fVMD!{u7mb*@)KRn;>9r`E5^ubjzTu z0Q`Rzh$fRvW+-}TO;K1`QJSl$DL3H{h%pR)(l_U~W6J}{cViGJ-ZA>Z9QB-f9!f#l zJ4LcEhm}nXC^C<*ve|FC=kLbCVfsN!vo~vF!^YS!%&fY7!(#^j(Gi?QHwEO}{O_WX z@jJq}{=wL!XDF8Qgppi?J-OJBXA+iNEJRcUuAp`Ek`y9IP6V|cgeynt$ho%ERVGoa zEz0@bs^|XEto9(taFl*!WbctF-=scyj0WJlMs(%V{m1T}b||BHy1q8_oA|~6n<%xs4z8z1!@e`EX1Px`debH zc!c+hC233r!r{Ot>8lU=4|bG9=u2*pK?P~vqNFGQR|;WM$;(?MZAli^tZvRO#rOQS zIlCvmbV}H-i)Vy=_)5Zf0;#k41>%oUBhiW{Wg*+J(mt)Qu%b zlAejiqh4-z9|)?lt>m%!6B&B}cWIq}ed0^Li2p+a31Uo+&Kt=%B+JYlaGoeo>?CnB zN3y-|@JFun3tHb0#Ri&^7I>^m+hYm{LJ?s~Q1KiB0+@u%L7{>eV0Hl(tSvM5FYP*% zRENeAyAz2aHQA+4HOo`F{_@W@8a>44Jx`OkPrn~|mG`U3Ax|RV8A`ILfrFFHzh*;| z2M7GsN?t%@7bWDfB}JZTb5dwMB@0sIKud~DPz07FdC9@fa#aR6NLs>V^BfA3b?uBc z1M=kILZM3R%R5W(cXgvcS=ULV932~QZy1Gp32Q{i9c@7Kt*oIHlJtt~ClH2&Rn~5$ zyk8lKIC$2hYU1E7|GjI62lno3R4SJ! zE=_kzwKF8vmN!VX17JB$0xAWK$)DUcnV!;fzR4pav;D!|aJPI}%iKY9u~sNtDO|Zy zC|JVokL8S_HZn9CbWYuUWPnS%o1aY=7BY#83E0?COB&3ek&I*{HohS(#LL=qf!3K_ z4uvkWdbc;Bz`wV9T`R!82748ACNaYd*txX4dgk24bBb4bv=&ZKfFQTu(BteX6X)MC}J*=oidGJ$8ffUbkOF*L#@^f69D^w zai(}{B^~_80wTY_F6|k(K_$b6EH$qBrzcI`#F?^m;rPM^)!l`2U4vbdtakHQWU5jp zdxu}(Y7~9%HQHfszOb}-&a*!n%(Mli5Z|SdPqBSc%d4&;4RfzjawEX1gfineqGEf4 zrjIVLM|NbV$Isq*c6|4AskHwbtL)7s3*KB$+~*xp)e&!h%CoanKGa(r%kkN1l~Q&| z{+3o)h=cv1i+v}u{VWKIyUah}>NhU-Esyu#zn3VQ#H=Wd6wfhDriX}KRB9Mi{k!io z8~40duW~fDkcFPo!+k6%_Hc3@c*u~ekhJFBE;NzOW@#pbGT0DC3y0-%`)|8_fAe!} zA4Ei3@Ak0==Ht8FD_UjD5%5*D((L|$f&IUtC_u%%wY_t3|J?cW&5!v8xAP#Q*y}A> zScwcqxm{9$6B+Fh_wjX4B-=15!>8U3#uGDER!6xAFLght_NHr(Pg0@5^ z8DgC9M&Ol62NuDE6#nF^b!~jmH9F@A4YKLc#{TPGQ}`st{I$Rv}5u&TnI^&sy`} z9*xy%u}7JrJ%&4v5w1*~Rmf5hab>D&uwM~nW)8y6ET(MO1&qe&fTunD_mxlNmz#Fzp<`ISq)2}JtpMWOQ@$=>JF+53{=ZHxpKn|G5hy% zD#1?(XPChY!=z(`5Bt32qO!1TvHqvAH>5{nKgc)V5+6|3ijm*jnwb%!&Z>_-8nb`w zQQ=@?gjPn6FbR{3u@Y@I#))P0)ff~AE?U80r7k;PA=Vh#J9As(EUrf!xXbhvWYAaY zD}cVvsw>8tv7%jtb7eTWZ90G}L?b7qrqG&|;6ZK0Sk+cmG*;49nro2CH8=@pjLp&i z16JgJ*M{i-@UKHM6a-!_QN@=_Y^A6pwq1g6?i=?KrQG(H`9WD2;Y>w-|pH?PmYDb@!jzv5xCf zmFWyD4ajzj=@no`D{#I6=M6fKo@b3pmCj0_&G}dMyVTo>9{lU4Kb`sA-({bs4c6Av zk`B2y=nl&F>8VCz>Qn5Kla0pYC#6>GwLh`qb7Y0cZ^Eo9NwX#u478wUTj5<*bi z)B4kUnrnL|2WJxp6SITOzhoMU*$g3U)A>p88(p59^v@0q%=(*OEtSx%U2?VNhz{5f zpzjCS9Qa{Kk#Q!<$rG52hR_vdJ}aY^S!RLp@!hxF@`Q3H(x^L?--su}ic+5K>G^?) zGt6^l;+9(;f0@1FdJv3mw7!4FREK77wu^S8$S0e6_m zlkBo3TK`d2UZmP*`gPU#wrwo&b^KdHHk-f~Ee=8^sv|mrq9{WFcFaK~Tj`v{imTtb8R-@vi*~~guG>oTY?eEb-j0` zq30gQXTh`1QG>~1=plv-X$cAm<>OZw*!XQ(9Nt6b6L|sr(i#E13)`Z{-kj+AqW6ufr z5;yUwQh}=G^P#@Cy{#|!8l2hq`z@*=vPHEm1Gtu8gk%7A)cy{xncG)n@e=%!OabCn zM}szOwJW#+5m8}$QE6UdR~>SVqu_!)DsswjQv!uUmlns}ff0jU{Y55x|6%z0qbLbU zZ>iRlxz01I6yet*bwv1BZKJMpdiu8MZr_+Q7z|$Q-?giMwr9`O)SjMKI&`1Yx6Dp= zcX@woJa~CL_;~;B-Tkv?@WwN?_I900mHI{{;t=iI6$0G6w#oPs@M)D!8+e#DGE|Uq zF9q7l*UOz58BoD%=a)`jR<XQR!pC(Pwbrc(WH{8XgR)wjRDe}BKLe~3SG z_lwJB0`9mf`r=zLk}&z})dPAGF(5mkEnj~~XZ7kMTfZyot>V1CBWiZIZK>4>l@=&6 zQ&-@>W+Q&Ecd$~K{@RF!5^z>xnzpW{GwL#=roiZ3ZKt&k;b;&gUqQ28<^Gd`ADKaGyQi_fP$SH8uE1i5FD9s_Fi{SJRHIs4$Wxs*vLGb zjzs|?cCOEzbGm+rpW#;>?nJ+91FteDg(yNAMVq(fSX3UI@?|MhPpdfVT5WFb=wfC% zJyX&ee8-%dTQ|*me(vzDTl#Xo{aPVCZ8opzdPO+S&mp}aUf9NZr#S--&09qsW*~kx zw6YKrWgYxtSIjMfty7z#bP16!N%d+cm&wA6K*?lDpu^p>QVMPh)&ZlDdeZ6Nw}$p3 zD|bAvJ#-2X_eh<|u0c*!e^^Iw*k0#{0b%_4J5N0XXnj{vulZku=X2W}KqoHa=4uUC zvLu)7d0bk31wixq>bQDchu+n!=`-gN1k-GDF13RPYlnVT>}>-2e-B~j-hk~8D~DL{Vm@Tk$(Cw|uPnWj3hlIb-7yCo zeD3QiH+A;(1&lQrPe%N@w_7(M%v-!CH?72!n?xRDp9aoo_YQ>i-SJtu4sDher73j*VXaeZWy<^#)kF|yMw8|J~>#wlrTorw+9nlPH!~bGvygQU()m0FMUys zvp_I4Ecf)LhH2CWCYP;|MpGkdYj+MZ7a)59B`*uruwco?SS`N%KqNB~V1a>{e@A3# z@%ZPgik&7o*^Tk#OytSH$UrhMG(CMv;kBXA)Ey~uhrE4!qfKXV)V;lRA5%2^yXFsX zw(Miens$kPFGV(3_Tf~{o{x~M!!3=F{K~b3TST5uMe9`rM=(WvqL&Z%mrDJInO-jG zZO;eJybOlp>pTb1i`z+3 ziS3fDccxk0GCcvWF=+L6nZ&{EnK3I5L_jbZ8DLsjW0mN@m1VQoyGkJ}LF8?9@zu;4hNcHmf9!-!%Tx}5)x>_YbQZGb!l z6mB(c?$XfpXf}Je9ZgP08)w3W;cv0piWD)9Z=%A)BTo?^inLBHz^RNIG<}LwA#pOf zQ&x;yhG)}jz5U+Ake;3GJp{CQ*Y}+Y?|F2R1$yV5L;Ztc*MrV=!@0+u?(JC`7}B!A z-QoPM>AoGFiAl4k`M0bu7#{5H`4^8Qc$_N8Ap{f%s@%5W$nrWsCX_0GWRky-b?utS z?FGw?KYAEmo;e~z9yh+dnu{{6n;N zSA1Rj+2*C_?#$B{4lL~Y=!a-~H;sdW{+(t-Eg58GEkJU@b)aG-8-%+XlEHM#4wYou zL8}in%4M=1V-O4CKI#l)->0*mq38(QZd=Y$ujN8wII?6~Q1}o1Z9aN?F93}ki5~o` zo>!p@4@B9$e>WGsy$5@-%Xu_<==*wKEkI|E4hVLge%Kqe`DB@}`#Du~CRr+r6A_DA z7C}-I_M~3d_jB_1$1IK@{!#YPs0OJ1kw71-4gt~e^`>6ej`Wwy{YNn9-mzh*H5~K)r12 zz5fI9xgVq!cV0fXvkWkR0KDY+z|M1d-uj$kqzdwMu-cxxO~>#{*!RVU^|NRV4&s;OoMp-l-{X$~!sb9Svt9 z73~Hvb_oIm-)grvpvFSLvMnjAC)1^QFfFCsB-HRi2f!dJ4ewtx zHTkC(_ZORu#m8{QkbW1gGwTCmYN3#eG1{tQJK>!DL*1EVIwV%LB-klwnsl|4OWMlV zMl)1LQA@?!YgTDT6#LuL7l8liOD`JlqjYru*$Z^{z^L%|1YNS88qxKUxI3=u`sh)f zw=;S$>V$2GyUw)Y(rg)7BnP#y%~!|@`!Jlr7bz4~R@I0{X21}MBuaM9UZ^{cI& z2HDU4pTc$AI$y{|O~L2Be!gF&Y)7}rwgK7RziqZHGKqlZp z=&oQ_qvt2l5k3z{I^{@BR}_6^?s#uMP6hjWkI#YFhU9{FnlkCaTKb9N7OA@_byk`> zIn@v{00+f#)to36C(O{6*;u*MspMhOgJpqW=g}y;Gj(SOhjPjq{WQ(bIeQ$;&D;*k z>Mdj8@^=iqx)9ZyU)BA)qrdv=%*C9Jc5Xw1gKTH`cXmW|MXyXGb`9I31?26rB9KXA zlv7dJ{E8~^nQ0DdJ2)0Dm4)}zT!&-lT+QD+;?iB`fS()u@=E9HX3P1Qao_WE=kGHl zp>7e?bj*rhAfpqodYx}qSlP8}W!E#EUyw~_GRHERUE6%f?ITDRjD?0psJ9P?@7$!6B>jZL@*rDh9t}mF^aNqkI;IBk7t`A<89GL@RMM&pC$7 zmiVwzZm(mq3uFh$`PSZ}8^L0$dvh{OVfXCEQ+hf|E z@nt%WRjxYcC8Hh&<>X~UAsu^&!~$N#X~}(E*njQFSR~V%ICAs|)AdVD?UFt{JIk(+ ziR~>p1cEsx?0+oMGwk*GBCr|miCoIYckYa5Lxepb@;9xK!>*PuK5(VE`dj3G)R=~G zI&*OjtpcG93!Z6c86k~XPiFJ&fu&WcJ(!Hbaj^bONbOxTcvP%3yIN)Grnz2{%3~F% z73XWzO(*Pne9btqx4F9a7^V7c7s{;bK{O1HtPg4knWB9;k5@jE^s1`&Pk>noXM`Bm zWF^Xq2t2zXWOU(@ws48UQ?R$I&GkR+b(HiH{5E2T%eF`L_7T=tWmELDDi|GtP>|`{ z#L`eLi4!^SZaMk=xA{E>TI7QE*Xr^vAS9N!2RY;XU~?;oRP>^ zBuArthI$s1kFK)QhtvM^J+26LuE7gEJv|o&TBF?8q+Xf>5oK}9q*@BK@`s~5$3FPFzRMdw zxO@D7u?)sAhjPipgr}>rOV4Q&eZImlpdrjxZ$tyL2hMtuQ9=|8y?Z5$i z7I4|;5CtXEIdX4uV30z=Ue+^wbl4GKfm?-9e1$s)(E6ob&^ZPIOmXxsi-Y+LT(o~e zX>6K8-lo^jAE#+QvrVpVH_g&^xm{9({CX{1e4S8uLn?klh-dlDygLMANRLIm-GS+C z3Q_9~IR^&^x_ispzPL~ln-WY|oK$8MhTzaQC&}qdMM^EkW4SiY} z@jc(|m7Og32nc#tHB`y4z&n)@3(Qh zhYEF`r>hn9oPBvyHqA0+^SAF*V!;i$biZWhBI3QZtnmd3DT1`29G06ERqJs$Q{N`0 z5zQ;4PCDxXJ9H+5MIs%X#>7MjjPQRW3d=V{RbSX5jZcwZ!G@Fq;`Y+_yvj< z{34USBlYn2?%w^q52xOH`szKt_q@k<&sAG@MD39zBPyCw!R=Z8Ad^ljM{XNyJe>Lt z{`hBSZeH?~58QM0G*3iKp_{D1RofUV-I>bRZATQA?ntWaS-SZr+sV1m!jrw>kSMjd zbP(}+SPNlPou?5C@XfOv5?-cgi6Pv9UE*kM6m(dRS^($-r4Et{4ou1<1RixA0wmH0 zr-Om99>;Vc;8H@V+1X(iI5>ufV$pu@aC~53BoZF(9|)!Tx{i*V>Em#v4(Zvub|F6L z|Fh%CQQ3dfv^V6*D52GJy~8~{-Y)Nu+S><|MD_Rkq8_jM`xb_&;2B6(^DITU8Msci z%=PPphs(?_aRX|j2}*nh>^E^-oOX0XjgmZIb zU?2vLp>%Zx_N1#>;+o#E7m)8*jL9spV*ioVtPS5;|@1WJF*J4 zd+l&H3I&tsu#AdBpS4&m+s7!283}#QWYUGx7wW_V{{hd0XINE~k#zcDVvmJ>+1ZP> z^y8;G{*jlb1sDGBq26@wA@twBM!DTX+EMHCpe0GH*cBDIiRLNXMe^lB8K4Umjs$S%rOSXX`f6$5o&$GA?_@`#cSbpc zeiKkcANol2@?2!MdDq#**|W)W2}#ID#Bdk5T6agDXc;cU!W4R;2_aKfh0I>XTn+vf z>q5pSAiD%)3pu8&969n|k}x6&;LS~Zm@_1)Eu8^5bGR^15^=Vzfog;Cz?Z)~dVXpC zpH8rFIyzlEa{BVLe<(II!hRge@wVs?4A!SF2a?_A+0XRH`kOC(St|g9{}U&ge+{=! zKXmGF(I1QlMy8--7rGO{hfd|j6GOvG=fzr~ah%tFk*v)_o!`K!{Xe;1H4ldRh3a^d zUH@NP!Ama-mGSmg{kus=({Oar%pd}M@tky`ZJ`CG;Yp~33@EaRJ6;H3Q?z}8=f{M7 z)v|Q4j$2!>{4|uZ@?zl)X@1xdZ+?n4C5GlNu%p2OW-zQ8g1dH7BOU ztxHjf0mUAPF^TBwliL(TED1?@({03$mSla)68tk|tHIyurV6N%BJww3eu7qyotX;O zvTmu5WH|+j1N03l9V~$>-CMtG9UQPK29vgX%gs3!sSPb$KSv1!V#YRK83PkFzF~eu zr&2bzeEsYiwb*-#vFEqWu3C$|yBOOh!%kaGh7)Mg9@DfsOM*I?1a)A=$=(~i=WwZ1 zSnhuamN*@-ncfaW1=IJ^%h|)pxZ)~y|p8l z1)9HBJK|Y5gm`?&Pi+~9Z$k(^R@)qZ55ACvG1g16kQn4wgb1IfXYRurf``9}BJ1JyYqPeqKH_R|Ihyt^KJd@1+TxOox{{GL8orxs| zg0~sBWG*CP{{Bi=K*rPk{#fEd<`(0Y!M;T7%$N`AUqKDDiP-o?nl|b)1S1=ZPCl=cxWZ`DwAkl z!fLv%D9t*PsA5D*eFxdcP;}mGYxq%HhV{gnJo1RKy1HtbmT^7Qq;cgnQW~-n6w9t# z;f-XHwoSK3w$2!R+nxUoV*VL9vNu<8J-z7+GiZKrFFLaOe6aF1Ycy%Nj}GYc_8!+G zpZGJ}#K>o}!u}QRz&#)5Y8l?BA}8A&do;!_g1yOO@tdA~HumhF;&F@~z3B_j#h&Z% zL5p)Av;dIlEu6rJE5omHO;nOc}*7iX0w|=V_t5n)zoKlHt7{lf@0JI3lHJ+?K}`dj$=d z6Jh_E(V5XR{%~R_nH++{GMGi9<)uPfepA)F_2ZR(TGLzaAn5|3X-_%1 z*2#*C;+B~dFU;%;9hlph$?TjvFu&)}j^UZ9gT;~AgOig7XR|jhElG}68bidDE;%{! zkDSWjMhV6osv58%QL^ydrUm(^E!kCRzRDff zi)x$1TyTbh;!;RM znTKwgUr;U68=S=GU`8V0AVHDl=oq?l2^oIf)F{+GIff#qqP-!JjoTX7C0Z!6c&Nk4 z2HgRtX-*_{ch2cZwlPjIrpWguZv_|*boen)JbqaGSaKT<1hUu6MuWy|q++JtY*2`M z_%mp+NgbXu+K#qcZf65%P9aFxh&dlfqKi*)7EdLh*Z^72VmyaHn@eTqxzjDAqB?!$6a`mQVAEJJ8VzHmT!P?zH52R7 zw6F}ixOAOia|E$E0RJRy@L>dbS;gqRuv2;i7S>x@UIzHuWd`%!5-#wdof6?Uw4OCv z&ot~?TQ=ELui3T-X$whgJA3T?V2eDqY}>F> z)9h9OovDVAAg%V+)iF}56va~M)G4ZPZe6=sXa{u-lUf%Wz%QBR2EBC*=>Rze7q?+E z*4NfbElCnoa1(i!8pu6M_3$8%WmGP+Tp5@PqRR77v%do=)2xq_%tcE|SY*=0%!yCW zfl_(y@!MG8BFtt_{OjC%?!NmybB{}`6;-m2EVkRkC_l#@yY*IIh(JECh1fga`OZPA zT*=XTri*hhS#aj;c(epCK4{$(hf7ePv>JfSw+WUv480l|kc+{bEegVyJf-;!H zy0f^CF`(ce1bSV!te}BYmLmQ`yFuf6IEHifSH1P9+kMnIu_v*&C+u|I?R3r!`_B4y z^aS@L5_^I@r;j?FN8L3%_ZS|3np>?6$A*>Mi^0Y5vr0~Z-#aF9xwY}J;Nt3HaBN(I zGsCf;hI2VQw2&Y~tK+DJpM&Tqfx@P^WDG`E+*+<_ zCXUVR{5}tbn1DPlQb9^svmirD?&)+zdgJET57W@Q6{L(LZRSMs0s)KzgN!#%Y--x~z~`vdG6?E-z%E3RnWeUI`Z5fkPC$!Vh*8T!}IdAGh8} z7e)5HQ}oiBE8ZJhvVz!!-`W0@FA#_IRBQ?2;2|Dl|38Wrhm|;9{tuC}2xIVW7KZf#zKh|_ekmmvE1_AqC4RLv; zEC*qbEP!PU9HMp1Jdm3L?x30t4x#%iDmkp+BRHw$qU{uuGZuu)gR0Y^IJ+Xw{w}xX z?(+0RTn@$IR2jny4p+qMrVCwttqZ62-{$ydR%3n3L?;}6XII+g=yl2?U0owx?p}v0 z-R1N%PnXOF;Zm2Q*W(=S>Kb-*_d4LvIp~xfp4Hp-d-_=IpB*int94uYxV8UzYob*V zJo`=HwyY^0kQ5itc$ARvrt4v=mEWc()P-XBUICnJh z4eFPSOO-a(Pgv9Kz{>&+>XMS22Fcfj1YuI$G&*r&W^N@olzP=z=!65gb%vl%?Dyd_ zP9Ms$3n?y3P#IfT*Wgci?y)yuuKNfpQLj~QZvG0}by4(irLVcQmeZxAHfc9mX>|+L zW{J-rd*M62PP7cUN`S%!cy2@?3$W^?OQlPTpDghWh2FTU`88a#KC#BAETrdYV{&k1 z50>SrgE03w7%Rfur+7?b-@Wq!#$md!Gd6i-31&k_ayNkB_CGjghqJ@x&O*4|G~4aH zG;n!VoG4Zz-aMHyJRT!8`DPrO zxEhnMg<)zMZ1R)A-rgWMZgn-x-Qn}Sz30QbO#q@~h7e^b79Iq~f>vmvKim(H)DgL_ z)j#+gvZw7CBnJXCeOy~#2ggnr3@Hfzf9U-FTOYaNTib#SX_?0~6OjPPiB*i=tA0O0 zRKK>8SaE0Ocb+-(@ad$xu}CN3oZp>1{qUJHJLfZQqz98w!r!Gg-b-nAj;J``WZNSu z%n94$DY4VScpCf@@8}#!#{F zmWXkHlc;L9^AK!|T(B1=8yy8JNd|O#P%^4WJb-7&s#}c7h)a@rFp((Ozt=j(XTwBe z#)5FizRlw``IKB?f6rcoJ=Du_9ALsbM)?AAaJbEKjN~UDemHsStq%fWuj!FnZ%sb@ zFnjUE7o(Rize}_J-gWtM^u-rBUomRMaTu1yIdXc+n(Dh0E2GAUssG(L$Ornh6aCzVVbnyoI#RgyG~jM4jxApQioayNtK9T`%DM zAEOIjp@*KPwdCHwQ-`2u4{v8b7yw2<$)YArO?7hE>$+YlutK3=>g6q1?dJNz0!*9W z?=u*gq62?${F^`^%#x9zh(g#o>lo5?6lY)BdgAe-MJZ7cK$wATM6x96=ClgFYrB4peYh+Cf#))w)oOw>`-^^sa!06F}{n2lnNO!;L0H#iY>zRZ_B~u_{VI! zhc_f__sC&OE*yPm?#pGeDUzhNLh$72EuGf;EpXPAz5t$MRX_?aERP+y<-ja-Jr_wC zYC6*w&Uy|X_MBaqURs(4?H>HC!z?3`!Bz9`Nw#3~&^8WH5r#PGQmw|+>QwcYUQ)`M z$r)hSlwn;dRUp;oI)@~p0LM~S3)7X-v}8^NO0~s#w^DT}N&6g=u3RbU6;wnF4y}X- zK@8Wdv(gYAhrv=2v*Nt8j%#xrvs)K9Y2>3v+uU3hY+*19(BN~xTHaO>HiW~qE2i<_ zy@0brElTmz z*NJ)BfvE?R;!1_XI|!lT7)~|lXY!p+a{wpk#}k~Zpk87{5x`o;C_RCEfc<9d)dylH zKX@Tm3O_b9`R4IAv+mfdZ;qY%=|^5O3^WM?IxhOOiCD;vRxJ&kzJFrk{?kJjFVL*O zyzfx=r8_)_?pt7Snh|`fBEOMbsKRQjYS(027gB)dQPM<_I&cBmd{wJa<#^|m{gaTfii3pmXcsuMo$E|^jjr)a=uQoZleSn z{xAe-5@u}h1l1_jrJAKNHrvvGT`A~=<(F_ZN#6$5wy(l+yoJG_NCmdeUV#=F+d?~_ zq+qN9iwPbLh6#p)rpZi`-hsV>EfUXR>(o&Fq&3$|b;L>&`C5*?wV8jd*BatzS80?G zh;pMJU4JVj{^bWKPX92Ba9OgamYkG?1@ciYPfwvf-Mk$637I}@Pf?s z;MrAD!b$%HA|MkFMfpc~^aQ8vsfiG!wnHU+m}(jI%D#82-O986h;v`h2qIQ-BNN|y z)NY@ACn$?No~x18mtL1blqx1CI%g^buIPdQ5NsV2s<+c^YGtNVDq_0-hSMc1Ev;aq zl7(Blqzel|QL~%!bGtD^_FCUy_ljS3_Ob`Ny^h)L;AvdFS3Jw~fbYe=?)&|6Pv5-k z?T$J<4+TrK-f&?%Z7jv?v0@t}xmK1IR;91gG}~HP5Wt%FVQiJ`Mnrv?qTE4B*Tb|2 z{rOgS_DrvownDQP5f8Y3l{AQ|mQ02~emi}M42)F*5WoM8VlwR{Q4iB@q^Ks3AhPe@ zP=Kb_NZun!tVM+iEg3CQjTXaKaJM+VqJ45fJj*_~grw+#5`rN-G&}~f`*17+x$K$R zi+;{?a05WH!aYCg4da`Iy^|0k6YX}A(HM`q0xBQfb7|kupQq zhG2qBdTNu^TU>%v1hRwpdr8>V>WX1B8wS0Wy>Py|BA}PjoC)VHDv~VVLz=acvc}By z^>q!yp>2^1<2lej0}q}zq>55u)y`b(xmnASqw{^8(ED{1Av3f6vI>4HLvKeCYl7eH z_4px|MTLkTYA>vcLxMdPx#@X$hi}flgbdmF(yW&8k5x;JQfZ}Ju9U1DO4HnwCeNsWu$xUYRYq&D-aGmyW#i}%I#64PXz0YaZCAQ99 zYT@-+6j`9qDmmON{3Y?BLGsWa{)jm|Y~qR;#Dl(zy!3zL!qKA_V3Dl3-8G8?OCy~Q zknOkS>RN2MxfU7pT{;5Os!T>DZ&%Eed%ONGXC(7c@7|m`l=QeG8OH~s?1`wW(5KIx zGKa%Oum0s=U@ALx>K(&FvrC@62$$EDA5wFBy-7zV;`V$n+I%MJn(rIDaC9l>%@sXU z{TGhz(v||j+}{7+Ylg)6-S9^13GNY_l{wVuCKHNssYF|*n`TAVnF15!!7#>H3&YM( zOLN(sBh`vpldpo{1W zPHDtK{MtS*y}Z`Wp-d77W^PWF#P3wR6xIt0rY20ZjVN=AX-Ccu;NV zT1%cn$N|JFWVxBMEkO+A)lHryOp5N@8HMEtbwb_D9u%Oys=K0*UArRD(-4*vyuFzo zZd=@hMSD_?Rg<-2iGsv?$zj{Tg|;v+{iDNkh87$O0;8n$Z!|PD=Tgxfs+#N%^ot|uG2Da4>{VSy zA9Ou&y}0!1CJJu_I|Qy_3DdmY7OX+yY0mvq zF08@>XgBMI!Bz~6!CE%f)=8xVhei!W$XZgG9@-@GQU2U%XhMMSki)U{5M|xs((CHNJ$&-c{XheqYuxVCa(;{9*+H6Ozy+1^N~D;bLQcyIJ1hQGJ>`B>MV zQktez!X_p4Qp_tZ9?fIRF6ODTn`GYwY=1>tzI181f&4wN_OCxmagQq!v|RXB-4;4T z%7TZW(U{B^^Md~bMpAHiN5wQk86lCt&JM=?sg1coWI*$_z%A;_RvIZ%>s&U(9wU>b<3Yia)U(sEc+4m zgG7l2q3(wWpU!fSAG8!0&;}9Gg+u|YaPZ(A2M@jl%mvEj2TCOjpz<7?fgkI^b5C6` zfN`Y@9sUf{oBbKoQE2#i`Ys&mreI^+q%a((o@oVuoplETtrSygL`7R zQAgpXI89Ixd-|9erSmE@?<}FF&Cz~p6jK18IoP(+8r^Wa6Pg9xyR;aSrS9EgffvL%1C(CuQ zUAy-!xVv3DkL)w#F5R1)+J``L{-GiN?(%dtoElH}xVtA$#wHi;Iuscjiy&!V93Spw zUeA9^FF2g8UWX%)+S&X4&S-3We){0S>7Je}G&~5cJ|cUZ%+ceX8j3`QCVO1&?yRb^ zA$7d#GKb{|k@r ze(YDzxD3_~} z@}*v(xh$=KTVBd$mof(EPH^Igkj`YkJUG-euU@SqE}55BNK5aLB=&K5<6*)lM$wv^ z8@~|Wn^#*do@%Qf$oyll?+y&GLGSx~DE;bTPIe5mlzxzO=`ciUU?}|Q?qJtL-hRBy z`u_seo~C1NczzsMt3vcND%gcDjofH~(9VfmSW%;>O9I{!=#I#8g#wQ7YNNYs%)P;! zXJooon-E$rBEn*HpL!bAUp?`Hdw7wgee2pVw_ZG3z_@+u``A6{#!+~ zR0x!%w7yRIS#r){ARgA>@2Wh=^f$XVak;)ghDEq)wJYuOqn?*8=g0vHsxb8 zr{CncHh1#m93aS_c|blobNYVy+RRaTA6$Nir~E+Kvk$@KJsp|>$iVtq<@J@XXOB0F-68u0nvk$bcOf;tSRDVf zcEfGuY65R^u|yhfy-E`khuaYyoy1=2(sWmgFX0Avup2_ALQvv1l?WbMa#4 zU%9tdqnNqv*38kl!xS@j?s1wgYs5$DWdCqLT88f&lieX4&(M;LMmK0$_ye+l;~EWn zA=@W7)3I#@)qktQ*X471S+~>W?9IyOhP#H($=P0K&>!ka_6!EPobFz)%h?qe>>hQJ zJ>ffO{ZV26mmm!Yk?0Ox{HFd0}S6ySH0rMV>a+WaH6 z$IUqZ5+ltbVFrd6(GtGc_5rdWV{_p?p>*h($jVA?Z_`AgLcN3kF^$%xl@*M@)cl-v zmU>Lf&8v*0h-8!!$!S5~Nz{!`oC=|ZVhf=YPPt_@Z>w{iD%hDZm~(tk_C*#4V*>#e z7zv&Tjy#h%LrVBd3;J>b<{ya zw=4H#PA@-|)AdC#8(F;kk;R?dFn48gcaG_~$1ddbJ*SF`i^UILUfkV*3KXB#P_G1&rA&@3^f2eakId&!@g`Ed0qRlY39;V^p1)CvBSarA?<~3-;etTgWZI{vnuQ%p$*5)d0@+#ekV(GIFXo1n%t(83Zn zoO6`eU$DO*d>BHNXkqkaZDSKTpG9*MR~uiDZ;HUaaTJz6sk1m4oBZkn`domq6VW|B zKrb1LeH5)urf-XKgOhjFxxI<5gT=|mqkF)kHsl*2%aglqi;7qfDp~Z*amPbo#z?M9 z-4VWHhtr;f4EN4Nv@{x=isy0wwx0GDPP85POnCFz;nL{1zLZOhq&5Q4Pz|_QgMC%< zqkdk%PeDtD6fR0u<%l;s@KscMtoS=o9r4bRm+Qg;`Zs z^oh6Ebrg`gn}?%Ml-LT6+cfg^HyvF$egg+H{+(xj=j)tAZnk*=ZW8hIiZmB1 zE?C^mMiZA8I}BhfFV-siq7;%c$N{EXlM^U~oaN(Uzrz}t6s~M2w0MLH&Q8=wPj|5bV1_?8s{{IjKx2=ab${WL!D9Ob9AEp~n9U#Z=-opsi5elF=XIfqPNr1jsy8|zv{*CZw_!xOKts?<$#D;#n_ zp0a%3eb++dx?ibQ2f<}u>~U_=)7S`kS-YJTY)~wwYo(G_uGy_k;mBC%AhT{s!wm$- z!daMRebpWdubju$UgV@c(^}$u)l9- zM$uw1ZRGaRp`p>CM=m@~(O^q^W`@GS^Xx(@Tc$4HpqLii{D8l*EPhLpK|&r}zZdt8U?*~G{vRP(kr|wU`b`8mt zTdKlWgqglz$v?f>j(@@0&ve-F+jlX7sk45&Y5jA;nKEr^wEhsS57K%!t?#9^Nq17) z7ByrWu6W!}@ zHdn7K^hV<&!@ajCL#a96V&kT+)ZC_daJl(?(Y>x77fgnyooU0=9bx$TDD<&|}HF^X^iIMnoo`jYChuCv0*^08;r#>&+VxFE9BCn@}U7utwe zPM}AkJu#E8Bd*|zNx+I;EtgRz2ge5W-xB*FXw4x=Cu4^-4#|SZ`)0SV8>be`{Uo^L zcKaS<&&o0yi@4nGmABsR_#!;d`;xtsFam)a?vqLCn>~!qEuqK zxd0s66B*c% zp|+Z16o4qM$ZoxK;J~HPXd)cit!cZJBZ1vXekM88I>X*}@V0}aL&Hi)+pQ@}gN01&P=5a6nRQ!dQB-lov?T5b6`h%uEt?>XjK9E`!1a}dp zmpRZw*~D1hCB3AZ>t^$2+_gErOC~_7ZMsSL$ZTflkhwl%%XQEyN!CD1!v?B>+xZ& zYqDzsa3-^p)5n9XSUYlett7;aJftS$dO8|S>+xLZHeKKGuXi67s1eSdEG#~YEyjNp z|7BQ!x1Ef|;*;@M{KRKZ#9|wcehK#IObm|ToOnbwoSRt(1OtHr^iI`Hb_Ph@U6#>6 zs$&cHaVvs+=T_;sbE^l$`rg0B2n;>f#XKIL&vU6ymiz2Qr;W9|xa}25 z(9d!{H$>6zTS9*_D$4FHcQwtf^4>0>Nbv1en`L&*9mA!ixMl@~2A5sUBu^d1f z?~bJtvtt8lB1`V_%|{}v60J6>KeYE|eW#XC2K7W#IkW@g6bpm^{y+DPn|4g3?Mi4hfY%V_i)azPUZX+Ln*cp{TwU^|u2 zJO>Um|LWl7Wb*RC+fVqzigMz1mRCnd)!PpoxNm z=#AzFj!Z@qEzT(-Z^-mlURlu$Bc%V%@bl|>Im&upQJSyouT(VUccL%cuK&-{@CK_a zKldLm`r&!#`naSJZFgO-ujnO2U#T?fIx8u-HX!4c4aZ47AA)X%LBgjUvI@vsxW!EY zdHA$K`t7jv*B=41(nGt|`; zb6tL}%X!9sr?czX{Rdr+d$YS;j>WU@?N-=ms4wX1>XnE4m=iRvX~669^m|;6{}+z) z7N7tC0C?JCU}RumU}T9BbvzRi&u{aUfs=^=1g@)Gn+K&AF);l9$Hc(I0_1WqfTaN| zjS6xA0C?JCU}RumVgLd-2^2vE%m4uQ01N;C0C?K1lYxfTK@`P*yI@z8jY}X~Nqo1E zTCwal2-XJZw%Q;lm}N50CxGW zUy=laA{h*-|0Ay^lR*kWvU+yyy+IPPE*48RI%BeB^lb2upfHGLEYkDr@u^rtyMy*1 zPAIMzOp5ew^*CiW6~T*M0l-IsN$3o}dm}FZgAz;h`Mc)cl@9W6{`RFvPOQ@dpTe+> zZ%D`H@VgwfAh0#2vU5jB3J8p5*prujDLWJ)9g<*={kHf5ZMEeMhn=BsiWJ5_uqA<# z#p1B5q@?)l*nRIQNBds9u$CNIr4p6?9bz5BXv%N1_P4uBE z)_izfgsZGPn}igc;y+T9%gQUyic9&^2*cGXs7~cu`urdaL-%kOJXefc-G$`7YIDPI zXLx30V=>9rW)M=@y`npJxuAM>&$|hHVDOl9a4$Ba7_AL!6#{ctaWj!&YTSMmU~UvWNA!_V%v%q$ysYNSuF7sH@xTj9~4v3U-63@ z;H#?BnrH=9UiDV;b)vpkPT6osSf#R-iz1{&wZ#p`gjFl&B>?Tok84*PT1!pCUIlh= zzNF40o#-`2fqUk*Y(wnoZqC>@zo1wK?p}56qRio{@q1Fc;izdJFo58ez3AOi_?avh z!2zL@kP??ntDU@b7Yyx7KLYGMNX9u zPiLl!(f#N#^j;>!V@&hG>(nxus%4&JFm%3DaqW;u;t${X9JE`M(2EDaDQ@>>xMss7LvD7$c zyfsy`l-biLb|b-{XKeYI=agY0egZ3lNOC#6%sY2udAe8H>+kLKUik7Kg5UuNhyVZpShj7yZQI$lZQDL%+qP}nwryhrM4&IQ z95@SR21T$5xB&8@w$Kvj5}Y2^;HK~__&EFqDS%i=BV-V=4|#;HO$c=pDq>Z!+E_!a&DIq=g^k+P z>}mD|`mViqw`Ga4 z9m*~)d#hZUa!k3P+<$`L0oJMj008Lt8nbPivzNQJZD-rIZQI6_?fN#RZ=WMgtC+ri zh6%8M2dn{(0Uv=%unP!)i@=j$7Ssu%psmm^xC1P~+u{F63Ymb&$RXr0l7Xhsf#?*} zM~|T|&{C`=HWr(KN!U{CHueUq$GhMXeiZ*n^dchSJdsNdBNvjlsdkh`J*Kkh-n2~b zq|eYlmT`SW2>NE5u z`V+m_=wgt@TH~5I!n|UpTSKhaI%<8jJKJMy+umTmaGE(29M*a0_H-w?i`-XUD-ZQ{ zd+)t^pYb>PU;OHzdoVRP6O@D_!=>Squp}B9NzsbvO!O)$k2}O-yg$AZrzK$0L=Zdx zhYiWR+qP%hwr$(C?KYujtO0TY-2ofe0o(y=f~`Re+yy>?azTxt zfe-<0gKonG;S6{Zyc+(5)Id5SJQ5-YkQZoKv@MFDbI|ozNvtC_9b1BJ#a`kS@wT{) zA0SE)gNTT@N0uj3$*JTGDi2kM%A^3wq1IEs=@hyX-H)C?!?Zzfqz}=T=_m9*rWjM5 zX~&FXIA#@dk@>-vW}C6?*dgpxR%GX}o7w&BDfTw|hHK1?;%sgQ_mHp659VY3EdN`m zA`B5?;gMKg93rj}UrV*69ugqUla5HAi?c%OgWbWV?88oe zr=7z%tDL)TC3lc(yGOl(UK?+ox66Ctm-o~C;r@Jom;X7a6HE-21TVve;plK?cqaT5 zm5oxOq0#ink9NiN;!g48cxiks{+IMj`0Rq<0f=n?007`@+qP}nwr$(Cz1XR3#wunV zX504v`8ZG%=mj`|t6*NRCAbm{f$yP)&`bz~4Co_V7H$F$hCx_{KO%XN8ptSQEph^h zA-9n4Xl-;Mx(S8QH2MdtiOs+ejKg!`4e%-WN&Fqrff!EABOu};@t15u_8{kyo5%op zmHbK7r}|RUsh!jlx&+;cUPF874@_%jJhPYaF?ZNPY#(+R>t$b=rkjqK1k-1819Ly~ z3iDBO!2HNk$kNub-g49O)>_5d$GX^h*80u1+=kh%+Vj}^*;m1c{u4xKH^$%%eg4`iqFgU=C|kugTbX8<$Q>k(El*XvOh$=B;K{wdV!@wS@@mMPZjNwz3)M~E;PqIhuOCXV8W z0}eSy@kEFaF8nyyLGeNm8+#~j@Z(4E+x&}3=OBiIC`laH+2aEXahZ6q;1>)VA%eu@ z+C>6C7NR`LG%h)c3x_D#;{e4KY8X=e;*bk=Ic2x*-~z4O$MDEq?P9O)tsAX{wcDwy c0_-g|RCwBBU}gY=|IG|W3|IgFC`19c00_DM9smFU diff --git a/src/assets/css/material-icons/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2 b/src/assets/css/material-icons/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2 deleted file mode 100644 index db867bc362455bfe7353790f2a2b89e558dc5750..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49240 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

${HeaderAccessSchedule} diff --git a/src/components/actionsheet/actionsheet.js b/src/components/actionsheet/actionsheet.js index d4e6b61c8a..9be09c4d25 100644 --- a/src/components/actionsheet/actionsheet.js +++ b/src/components/actionsheet/actionsheet.js @@ -158,7 +158,7 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu } if (layoutManager.tv) { - html += ''; + html += ''; } // If any items have an icon, give them all an icon just to make sure they're all lined up evenly @@ -226,9 +226,9 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu if (itemIcon) { - html += '' + itemIcon + ''; + html += '' + itemIcon + ''; } else if (renderIcon && !center) { - html += ''; + html += ''; } html += '
'; diff --git a/src/components/activitylog.js b/src/components/activitylog.js index e02fb0c868..05971f01b8 100644 --- a/src/components/activitylog.js +++ b/src/components/activitylog.js @@ -13,12 +13,12 @@ define(["events", "globalize", "dom", "datetime", "userSettings", "serverNotific } if (entry.UserId && entry.UserPrimaryImageTag) { - html += 'dvr" } else { - html += '' + icon + ''; + html += '' + icon + ''; } html += '
'; @@ -35,7 +35,7 @@ define(["events", "globalize", "dom", "datetime", "userSettings", "serverNotific html += "
"; if (entry.Overview) { - html += ''; + html += ''; } return html += "
"; diff --git a/src/components/alphapicker/alphapicker.js b/src/components/alphapicker/alphapicker.js index b9d31be5dd..a23a7dfff3 100644 --- a/src/components/alphapicker/alphapicker.js +++ b/src/components/alphapicker/alphapicker.js @@ -67,7 +67,7 @@ define(['focusManager', 'layoutManager', 'dom', 'css!./style.css', 'paper-icon-b html += '
'; if (options.mode === 'keyboard') { - html += ''; + html += ''; } else { letters = ['#']; html += mapLetters(letters, vertical).join(''); @@ -77,7 +77,7 @@ define(['focusManager', 'layoutManager', 'dom', 'css!./style.css', 'paper-icon-b html += mapLetters(letters, vertical).join(''); if (options.mode === 'keyboard') { - html += ''; + html += ''; html += '
'; letters = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 44c5b3b079..479eb17b07 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -758,7 +758,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana if (isOuterFooter && options.cardLayout && layoutManager.mobile) { if (options.cardFooterAside !== 'none') { - html += ''; + html += ''; } } @@ -1316,15 +1316,15 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana var btnCssClass = 'cardOverlayButton cardOverlayButton-br itemAction'; if (options.centerPlayButton) { - overlayButtons += ''; + overlayButtons += ''; } if (overlayPlayButton && !item.IsPlaceHolder && (item.LocationType !== 'Virtual' || !item.MediaType || item.Type === 'Program') && item.Type !== 'Person') { - overlayButtons += ''; + overlayButtons += ''; } if (options.overlayMoreButton) { - overlayButtons += ''; + overlayButtons += ''; } } @@ -1457,7 +1457,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana var btnCssClass = 'cardOverlayButton cardOverlayButton-hover itemAction paper-icon-button-light'; if (playbackManager.canPlay(item)) { - html += ''; + html += ''; } html += '
'; @@ -1466,7 +1466,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana if (itemHelper.canMarkPlayed(item)) { require(['emby-playstatebutton']); - html += ''; + html += ''; } if (itemHelper.canRate(item)) { @@ -1474,10 +1474,10 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana var likes = userData.Likes == null ? '' : userData.Likes; require(['emby-ratingbutton']); - html += ''; + html += ''; } - html += ''; + html += ''; html += '
'; html += '

'; @@ -1487,16 +1487,16 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana function getCardDefaultText(item, options) { if (item.CollectionType) { - return '' + imageHelper.getLibraryIcon(item.CollectionType) + '' + return '' + imageHelper.getLibraryIcon(item.CollectionType) + '' } if (item.Type === 'MusicAlbum') { - return 'album'; + return 'album'; } if (item.Type === 'MusicArtist' || item.Type === 'Person') { - return 'person'; + return 'person'; } if (options.defaultCardImageIcon) { - return '' + options.defaultCardImageIcon + ''; + return '' + options.defaultCardImageIcon + ''; } var defaultName = isUsingLiveTvNaming(item) ? item.Name : itemHelper.getDisplayName(item); @@ -1585,7 +1585,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana indicatorsElem = ensureIndicators(card, indicatorsElem); indicatorsElem.appendChild(playedIndicator); } - playedIndicator.innerHTML = 'check'; + playedIndicator.innerHTML = 'check'; } else { playedIndicator = card.querySelector('.playedIndicator'); @@ -1666,7 +1666,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana var icon = cell.querySelector('.timerIndicator'); if (!icon) { var indicatorsElem = ensureIndicators(cell); - indicatorsElem.insertAdjacentHTML('beforeend', 'fiber_manual_record'); + indicatorsElem.insertAdjacentHTML('beforeend', 'fiber_manual_record'); } cell.setAttribute('data-timerid', newTimerId); } diff --git a/src/components/cardbuilder/chaptercardbuilder.js b/src/components/cardbuilder/chaptercardbuilder.js index 0f42e14584..75b940285f 100644 --- a/src/components/cardbuilder/chaptercardbuilder.js +++ b/src/components/cardbuilder/chaptercardbuilder.js @@ -90,7 +90,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'layoutManager', 'browse var cardImageContainer = imgUrl ? ('
') : ('
'); if (!imgUrl) { - cardImageContainer += 'local_movies'; + cardImageContainer += 'local_movies'; } var nameHtml = ''; diff --git a/src/components/channelmapper/channelmapper.js b/src/components/channelmapper/channelmapper.js index 0247f79a55..ee89b1799d 100644 --- a/src/components/channelmapper/channelmapper.js +++ b/src/components/channelmapper/channelmapper.js @@ -71,7 +71,7 @@ define(["dialogHelper", "loading", "connectionManager", "globalize", "actionshee function getTunerChannelHtml(channel, providerName) { var html = ""; html += '
'; - html += 'dvr'; + html += 'dvr'; html += '
'; html += '

'; html += channel.Name; @@ -84,7 +84,7 @@ define(["dialogHelper", "loading", "connectionManager", "globalize", "actionshee html += "

"; html += "
"; - html += ''; + html += ''; return html += "
"; } @@ -127,7 +127,7 @@ define(["dialogHelper", "loading", "connectionManager", "globalize", "actionshee var html = ""; var title = globalize.translate("MapChannels"); html += '
"; html += "
"; - html += 'arrow_forward'; + html += 'arrow_forward'; html += "
"; return html; } @@ -116,7 +116,7 @@ define(['loading', 'dialogHelper', 'dom', 'listViewStyle', 'emby-input', 'paper- html += ''; html += "
"; if (!readOnlyAttribute) { - html += ''; + html += ''; } html += "
"; if (!readOnlyAttribute) { @@ -265,7 +265,7 @@ define(['loading', 'dialogHelper', 'dom', 'listViewStyle', 'emby-input', 'paper- var html = ""; html += '
'; - html += ''; + html += ''; html += '

'; html += options.header || Globalize.translate("HeaderSelectPath"); html += "

"; diff --git a/src/components/emby-scrollbuttons/emby-scrollbuttons.js b/src/components/emby-scrollbuttons/emby-scrollbuttons.js index deec96d9a2..0b769a9821 100644 --- a/src/components/emby-scrollbuttons/emby-scrollbuttons.js +++ b/src/components/emby-scrollbuttons/emby-scrollbuttons.js @@ -10,7 +10,7 @@ define(['layoutManager', 'dom', 'css!./emby-scrollbuttons', 'registerElement', ' var icon = direction === 'left' ? 'chevron_left' : 'chevron_right'; html += ''; return html; diff --git a/src/components/favoriteitems.js b/src/components/favoriteitems.js index 17129ea54e..7dff81f5ad 100644 --- a/src/components/favoriteitems.js +++ b/src/components/favoriteitems.js @@ -136,7 +136,7 @@ define(["loading", "libraryBrowser", "cardBuilder", "dom", "apphost", "imageLoad html += '

'; html += globalize.translate(section.name); html += "

"; - html += 'chevron_right'; + html += 'chevron_right'; html += ""; } else { html += '

' + globalize.translate(section.name) + "

"; diff --git a/src/components/filtermenu/filtermenu.js b/src/components/filtermenu/filtermenu.js index f2196bf632..6f29064dbe 100644 --- a/src/components/filtermenu/filtermenu.js +++ b/src/components/filtermenu/filtermenu.js @@ -279,7 +279,7 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost', var html = ''; html += '
'; - html += ''; + html += ''; html += '

${Filters}

'; html += '
'; diff --git a/src/components/guide/guide-settings.template.html b/src/components/guide/guide-settings.template.html index d85b4a71b9..f5a52a7475 100644 --- a/src/components/guide/guide-settings.template.html +++ b/src/components/guide/guide-settings.template.html @@ -1,5 +1,5 @@
- +

${Settings}

diff --git a/src/components/guide/guide.js b/src/components/guide/guide.js index c8ed31df0f..9144886945 100644 --- a/src/components/guide/guide.js +++ b/src/components/guide/guide.js @@ -416,7 +416,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', var status; if (item.Type === 'SeriesTimer') { - return 'fiber_smart_record'; + return 'fiber_smart_record'; } else if (item.TimerId || item.SeriesTimerId) { status = item.Status || 'Cancelled'; @@ -430,13 +430,13 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', if (item.SeriesTimerId) { if (status !== 'Cancelled') { - return 'fiber_smart_record'; + return 'fiber_smart_record'; } - return 'fiber_smart_record'; + return 'fiber_smart_record'; } - return 'fiber_manual_record'; + return 'fiber_manual_record'; } function getChannelProgramsHtml(context, date, channel, programs, options, listInfo) { @@ -550,7 +550,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', html += '
'; - html += '
keyboard_arrow_left
'; + html += '
keyboard_arrow_left
'; html += '
' + program.Name; @@ -578,7 +578,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', html += '
'; if (program.IsHD && options.showHdIcon) { - //html += 'hd'; + //html += 'hd'; if (layoutManager.tv) { html += '
HD
'; } else { @@ -1106,7 +1106,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', var icon = cell.querySelector('.timerIcon'); if (!icon) { - cell.querySelector('.guideProgramName').insertAdjacentHTML('beforeend', 'fiber_manual_record'); + cell.querySelector('.guideProgramName').insertAdjacentHTML('beforeend', 'fiber_manual_record'); } if (newTimerId) { diff --git a/src/components/guide/tvguide.template.html b/src/components/guide/tvguide.template.html index 7edffec6d1..3f95448523 100644 --- a/src/components/guide/tvguide.template.html +++ b/src/components/guide/tvguide.template.html @@ -10,7 +10,7 @@
@@ -30,9 +30,9 @@
diff --git a/src/components/homescreensettings/homescreensettings.js b/src/components/homescreensettings/homescreensettings.js index 5b966327eb..152fc691f6 100644 --- a/src/components/homescreensettings/homescreensettings.js +++ b/src/components/homescreensettings/homescreensettings.js @@ -149,7 +149,7 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa currentHtml += '
'; - currentHtml += 'folder_open'; + currentHtml += 'folder_open'; currentHtml += '
'; @@ -159,8 +159,8 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa currentHtml += '
'; - currentHtml += ''; - currentHtml += ''; + currentHtml += ''; + currentHtml += ''; currentHtml += '
'; diff --git a/src/components/homesections/homesections.js b/src/components/homesections/homesections.js index 3f86e16796..af574200f3 100644 --- a/src/components/homesections/homesections.js +++ b/src/components/homesections/homesections.js @@ -161,7 +161,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la for (var i = 0, length = items.length; i < length; i++) { var item = items[i]; var icon = imageHelper.getLibraryIcon(item.CollectionType); - html += '' + icon + '' + item.Name + ''; + html += '' + icon + '' + item.Name + ''; } html += '
'; @@ -260,7 +260,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '

'; html += globalize.translate('LatestFromLibrary', parent.Name); html += '

'; - html += 'chevron_right'; + html += 'chevron_right'; html += ''; } else { html += '

' + globalize.translate('LatestFromLibrary', parent.Name) + '

'; @@ -608,7 +608,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '

'; html += globalize.translate('HeaderOnNow'); html += '

'; - html += 'chevron_right'; + html += 'chevron_right'; html += ''; } else { @@ -683,7 +683,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '

'; html += globalize.translate('HeaderNextUp'); html += '

'; - html += 'chevron_right'; + html += 'chevron_right'; html += ''; } else { html += '

' + globalize.translate('HeaderNextUp') + '

'; diff --git a/src/components/imagedownloader/imagedownloader.js b/src/components/imagedownloader/imagedownloader.js index 7bd5159a17..019875f35c 100644 --- a/src/components/imagedownloader/imagedownloader.js +++ b/src/components/imagedownloader/imagedownloader.js @@ -116,8 +116,8 @@ define(['loading', 'apphost', 'dialogHelper', 'connectionManager', 'imageLoader' if (showControls) { html += '
'; - html += ''; - html += ''; + html += ''; + html += ''; html += '
'; } @@ -277,7 +277,7 @@ define(['loading', 'apphost', 'dialogHelper', 'connectionManager', 'imageLoader' if (enableFooterButtons) { html += '
'; - html += ''; + html += ''; html += '
'; } diff --git a/src/components/imagedownloader/imagedownloader.template.html b/src/components/imagedownloader/imagedownloader.template.html index c192fad299..0dc3cc0661 100644 --- a/src/components/imagedownloader/imagedownloader.template.html +++ b/src/components/imagedownloader/imagedownloader.template.html @@ -1,5 +1,5 @@
- +

${Search}

diff --git a/src/components/imageeditor/imageeditor.js b/src/components/imageeditor/imageeditor.js index fade0dd04c..da3d673aa7 100644 --- a/src/components/imageeditor/imageeditor.js +++ b/src/components/imageeditor/imageeditor.js @@ -155,23 +155,23 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager', if (image.ImageType === "Backdrop" || image.ImageType === "Screenshot") { if (index > 0) { - html += ''; + html += ''; } else { - html += ''; + html += ''; } if (index < numImages - 1) { - html += ''; + html += ''; } else { - html += ''; + html += ''; } } else { if (imageProviders.length) { - html += ''; + html += ''; } } - html += ''; + html += ''; html += '
'; } diff --git a/src/components/imageeditor/imageeditor.template.html b/src/components/imageeditor/imageeditor.template.html index 3524f449de..57b63550fd 100644 --- a/src/components/imageeditor/imageeditor.template.html +++ b/src/components/imageeditor/imageeditor.template.html @@ -1,5 +1,5 @@
- +

${HeaderEditImages}

@@ -12,10 +12,10 @@

${Images}

@@ -27,10 +27,10 @@

${Backdrops}

@@ -42,10 +42,10 @@

${Screenshots}

diff --git a/src/components/imageoptionseditor/imageoptionseditor.template.html b/src/components/imageoptionseditor/imageoptionseditor.template.html index 9bb1f8426b..3e9a2ae8ce 100644 --- a/src/components/imageoptionseditor/imageoptionseditor.template.html +++ b/src/components/imageoptionseditor/imageoptionseditor.template.html @@ -1,5 +1,5 @@
- +

${HeaderImageOptions}

diff --git a/src/components/imageuploader/imageuploader.template.html b/src/components/imageuploader/imageuploader.template.html index 42d894db6d..b27168075a 100644 --- a/src/components/imageuploader/imageuploader.template.html +++ b/src/components/imageuploader/imageuploader.template.html @@ -1,5 +1,5 @@
- +

${HeaderUploadImage}

@@ -14,7 +14,7 @@

${HeaderAddUpdateImage}

diff --git a/src/components/indicators/indicators.js b/src/components/indicators/indicators.js index e8813d9470..a8bd4c6200 100644 --- a/src/components/indicators/indicators.js +++ b/src/components/indicators/indicators.js @@ -90,7 +90,7 @@ define(['datetime', 'itemHelper', 'css!./indicators.css', 'material-icons'], fun } if (userData.PlayedPercentage && userData.PlayedPercentage >= 100 || (userData.Played)) { - return '
check
'; + return '
check
'; } } @@ -118,7 +118,7 @@ define(['datetime', 'itemHelper', 'css!./indicators.css', 'material-icons'], fun var status; if (item.Type === 'SeriesTimer') { - return 'fiber_smart_record'; + return 'fiber_smart_record'; } else if (item.TimerId || item.SeriesTimerId) { status = item.Status || 'Cancelled'; } else if (item.Type === 'Timer') { @@ -129,20 +129,20 @@ define(['datetime', 'itemHelper', 'css!./indicators.css', 'material-icons'], fun if (item.SeriesTimerId) { if (status !== 'Cancelled') { - return 'fiber_smart_record'; + return 'fiber_smart_record'; } - return 'fiber_smart_record'; + return 'fiber_smart_record'; } - return 'fiber_manual_record'; + return 'fiber_manual_record'; } function getSyncIndicator(item) { if (item.SyncPercent === 100) { - return '
file_download
'; + return '
file_download
'; } else if (item.SyncPercent != null) { - return '
file_download
'; + return '
file_download
'; } return ''; @@ -150,13 +150,13 @@ define(['datetime', 'itemHelper', 'css!./indicators.css', 'material-icons'], fun function getTypeIndicator(item) { if (item.Type === 'Video') { - return '
videocam
'; + return '
videocam
'; } if (item.Type === 'Folder' || item.Type === 'PhotoAlbum') { - return '
folder
'; + return '
folder
'; } if (item.Type === 'Photo') { - return '
photo
'; + return '
photo
'; } return ''; diff --git a/src/components/itemMediaInfo/itemMediaInfo.template.html b/src/components/itemMediaInfo/itemMediaInfo.template.html index 1eeab4fbd9..afe0023cdd 100644 --- a/src/components/itemMediaInfo/itemMediaInfo.template.html +++ b/src/components/itemMediaInfo/itemMediaInfo.template.html @@ -1,6 +1,6 @@

${HeaderMediaInfo}

diff --git a/src/components/itemidentifier/itemidentifier.template.html b/src/components/itemidentifier/itemidentifier.template.html index d921d580a7..229c047553 100644 --- a/src/components/itemidentifier/itemidentifier.template.html +++ b/src/components/itemidentifier/itemidentifier.template.html @@ -1,6 +1,6 @@

${Identify}

diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.js b/src/components/libraryoptionseditor/libraryoptionseditor.js index 2b289e6b77..261d20745b 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.js +++ b/src/components/libraryoptionseditor/libraryoptionseditor.js @@ -58,16 +58,16 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct for (var i = 0; i < plugins.length; i++) { var plugin = plugins[i]; html += '
'; - html += 'live_tv'; + html += 'live_tv'; html += '
'; html += '

'; html += plugin.Name; html += "

"; html += "
"; if (i > 0) { - html += ''; + html += ''; } else if (plugins.length > 1) { - html += ''; + html += ''; } html += "
"; } @@ -120,7 +120,7 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct html += plugin.Name; html += ""; html += "
"; - i > 0 ? html += '' : plugins.length > 1 && (html += ''), html += "
" + i > 0 ? html += '' : plugins.length > 1 && (html += ''), html += "
" } html += "
"; html += '
' + globalize.translate("LabelMetadataDownloadersHelp") + "
"; @@ -181,9 +181,9 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct html += ""; html += "
"; if (i > 0) { - html += ''; + html += ''; } else if (plugins.length > 1) { - html += ''; + html += ''; } html += "
"; } @@ -220,9 +220,9 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct html += ""; html += "
"; if (i > 0) { - html += ''; + html += ''; } else if (plugins.length > 1) { - html += ''; + html += ''; } html += "
"; } diff --git a/src/components/listview/listview.js b/src/components/listview/listview.js index 94535deb6f..8f93b31332 100644 --- a/src/components/listview/listview.js +++ b/src/components/listview/listview.js @@ -160,7 +160,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan var button = options.rightButtons[i]; - html += ''; + html += ''; } return html; @@ -262,9 +262,9 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan } if (!clickEntireItem && options.dragHandle) { - //html += ''; + //html += ''; // Firefox and Edge are not allowing the button to be draggable - html += 'drag_handle'; + html += 'drag_handle'; } if (options.image !== false) { @@ -298,7 +298,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan } if (playOnImageClick) { - html += ''; + html += ''; } var progressHtml = indicators.getProgressBarHtml(item, { @@ -474,15 +474,15 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan if (!clickEntireItem) { if (options.addToListButton) { - html += ''; + html += ''; } if (options.moreButton !== false) { - html += ''; + html += ''; } if (options.infoButton) { - html += ''; + html += ''; } if (options.rightButtons) { @@ -497,11 +497,11 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan var likes = userData.Likes == null ? '' : userData.Likes; if (itemHelper.canMarkPlayed(item)) { - html += ''; + html += ''; } if (itemHelper.canRate(item)) { - html += ''; + html += ''; } html += ''; diff --git a/src/components/mediainfo/mediainfo.js b/src/components/mediainfo/mediainfo.js index 04df34685d..8aaad95056 100644 --- a/src/components/mediainfo/mediainfo.js +++ b/src/components/mediainfo/mediainfo.js @@ -6,7 +6,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater var status; if (item.Type === 'SeriesTimer') { - return 'fiber_smart_record'; + return 'fiber_smart_record'; } else if (item.TimerId || item.SeriesTimerId) { status = item.Status || 'Cancelled'; @@ -20,13 +20,13 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater if (item.SeriesTimerId) { if (status !== 'Cancelled') { - return 'fiber_smart_record'; + return 'fiber_smart_record'; } - return 'fiber_smart_record'; + return 'fiber_smart_record'; } - return 'fiber_manual_record'; + return 'fiber_manual_record'; } function getProgramInfoHtml(item, options) { @@ -393,7 +393,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater if (rating) { html += '
'; - html += 'star'; + html += 'star'; html += rating; html += '
'; } diff --git a/src/components/medialibrarycreator/medialibrarycreator.js b/src/components/medialibrarycreator/medialibrarycreator.js index 183e22551f..31fa11630b 100644 --- a/src/components/medialibrarycreator/medialibrarycreator.js +++ b/src/components/medialibrarycreator/medialibrarycreator.js @@ -95,7 +95,7 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed function getFolderHtml(pathInfo, index) { var html = ""; - return html += '
', html += '
', html += '
' + pathInfo.Path + "
", pathInfo.NetworkPath && (html += '
' + pathInfo.NetworkPath + "
"), html += "
", html += '', html += "
" + return html += '
', html += '
', html += '
' + pathInfo.Path + "
", pathInfo.NetworkPath && (html += '
' + pathInfo.NetworkPath + "
"), html += "
", html += '', html += "
" } function renderPaths(page) { diff --git a/src/components/medialibrarycreator/medialibrarycreator.template.html b/src/components/medialibrarycreator/medialibrarycreator.template.html index c7073bc9f2..4dcb7812d4 100644 --- a/src/components/medialibrarycreator/medialibrarycreator.template.html +++ b/src/components/medialibrarycreator/medialibrarycreator.template.html @@ -1,5 +1,5 @@
- +

${ButtonAddMediaLibrary}

@@ -26,7 +26,7 @@

${HeadersFolders}

diff --git a/src/components/medialibraryeditor/medialibraryeditor.js b/src/components/medialibraryeditor/medialibraryeditor.js index a1ee53f72b..fa7aac026a 100644 --- a/src/components/medialibraryeditor/medialibraryeditor.js +++ b/src/components/medialibraryeditor/medialibraryeditor.js @@ -98,7 +98,7 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed html += '
' + pathInfo.NetworkPath + "
"; } html += "
"; - html += ''; + html += ''; html += "
"; return html; } diff --git a/src/components/medialibraryeditor/medialibraryeditor.template.html b/src/components/medialibraryeditor/medialibraryeditor.template.html index dd13df4ca5..07e26b777b 100644 --- a/src/components/medialibraryeditor/medialibraryeditor.template.html +++ b/src/components/medialibraryeditor/medialibraryeditor.template.html @@ -1,5 +1,5 @@
- +

@@ -20,7 +20,7 @@

${HeadersFolders}

diff --git a/src/components/metadataeditor/metadataeditor.js b/src/components/metadataeditor/metadataeditor.js index 8843dc159c..030fdc80ce 100644 --- a/src/components/metadataeditor/metadataeditor.js +++ b/src/components/metadataeditor/metadataeditor.js @@ -477,7 +477,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi html += ''; if (formatString) { - html += ''; + html += ''; } html += ''; @@ -917,7 +917,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi for (var i = 0; i < items.length; i++) { html += '
'; - html += 'live_tv'; + html += 'live_tv'; html += '
'; @@ -927,7 +927,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi html += '
'; - html += ''; + html += ''; html += '
'; } @@ -948,7 +948,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi html += '
'; - html += 'person'; + html += 'person'; html += '
'; html += ''; html += '
'; - html += ''; + html += ''; html += '
'; } diff --git a/src/components/metadataeditor/metadataeditor.template.html b/src/components/metadataeditor/metadataeditor.template.html index d44136c6b6..a09c2dd57b 100644 --- a/src/components/metadataeditor/metadataeditor.template.html +++ b/src/components/metadataeditor/metadataeditor.template.html @@ -1,15 +1,15 @@
- +

${Edit}

@@ -184,7 +184,7 @@ ${Genres}
@@ -193,7 +193,7 @@ ${People}
@@ -203,7 +203,7 @@ ${Studios}
@@ -212,7 +212,7 @@ ${Tags}
diff --git a/src/components/metadataeditor/personeditor.template.html b/src/components/metadataeditor/personeditor.template.html index 75b011aa73..57a46a0413 100644 --- a/src/components/metadataeditor/personeditor.template.html +++ b/src/components/metadataeditor/personeditor.template.html @@ -1,5 +1,5 @@
- +

${Edit}

diff --git a/src/components/multiselect/multiselect.js b/src/components/multiselect/multiselect.js index 6b2906cb0a..b1367ef66b 100644 --- a/src/components/multiselect/multiselect.js +++ b/src/components/multiselect/multiselect.js @@ -126,11 +126,11 @@ define(["browser", "appStorage", "apphost", "loading", "connectionManager", "glo var html = ""; - html += ''; + html += ''; html += '

'; var moreIcon = "more_horiz"; - html += ''; + html += ''; selectionCommandsPanel.innerHTML = html; diff --git a/src/components/nowplayingbar/nowplayingbar.js b/src/components/nowplayingbar/nowplayingbar.js index 37a1a32f56..d8191e9ef1 100644 --- a/src/components/nowplayingbar/nowplayingbar.js +++ b/src/components/nowplayingbar/nowplayingbar.js @@ -42,31 +42,31 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', // The onclicks are needed due to the return false above html += '
'; - html += ''; + html += ''; - html += ''; + html += ''; - html += ''; - html += ''; + html += ''; + html += ''; html += '
'; html += '
'; html += '
'; - html += ''; + html += ''; html += '
'; html += ''; html += '
'; - html += ''; + html += ''; html += '
'; html += '
'; - html += ''; - html += ''; + html += ''; + html += ''; html += '
'; html += '
'; @@ -571,7 +571,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', var userData = item.UserData || {}; var likes = userData.Likes == null ? '' : userData.Likes; - nowPlayingUserData.innerHTML = ''; + nowPlayingUserData.innerHTML = ''; }); } diff --git a/src/components/playback/brightnessosd.js b/src/components/playback/brightnessosd.js index b2bf9d4106..1a064ed39d 100644 --- a/src/components/playback/brightnessosd.js +++ b/src/components/playback/brightnessosd.js @@ -11,7 +11,7 @@ define(['events', 'playbackManager', 'dom', 'browser', 'css!./iconosd', 'materia function getOsdElementHtml() { var html = ''; - html += 'brightness_high'; + html += 'brightness_high'; html += '
'; diff --git a/src/components/playback/volumeosd.js b/src/components/playback/volumeosd.js index b622cc18b1..d1cd64c656 100644 --- a/src/components/playback/volumeosd.js +++ b/src/components/playback/volumeosd.js @@ -11,7 +11,7 @@ define(['events', 'playbackManager', 'dom', 'browser', 'css!./iconosd', 'materia function getOsdElementHtml() { var html = ''; - html += 'volume_up'; + html += 'volume_up'; html += '
'; diff --git a/src/components/playerstats/playerstats.js b/src/components/playerstats/playerstats.js index 4179192dd2..89adf22624 100644 --- a/src/components/playerstats/playerstats.js +++ b/src/components/playerstats/playerstats.js @@ -18,7 +18,7 @@ define(['events', 'globalize', 'playbackManager', 'connectionManager', 'playMeth if (layoutManager.tv) { button = ''; } else { - button = ''; + button = ''; } var contentClass = layoutManager.tv ? 'playerStats-content playerStats-content-tv' : 'playerStats-content'; diff --git a/src/components/playlisteditor/playlisteditor.js b/src/components/playlisteditor/playlisteditor.js index 4738211a5e..b70bdc1442 100644 --- a/src/components/playlisteditor/playlisteditor.js +++ b/src/components/playlisteditor/playlisteditor.js @@ -258,7 +258,7 @@ define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'playbackManager', var title = globalize.translate('HeaderAddToPlaylist'); html += '
'; - html += ''; + html += ''; html += '

'; html += title; html += '

'; diff --git a/src/components/prompt/prompt.template.html b/src/components/prompt/prompt.template.html index b1e7f580f0..8e78a64cbc 100644 --- a/src/components/prompt/prompt.template.html +++ b/src/components/prompt/prompt.template.html @@ -1,6 +1,6 @@

diff --git a/src/components/recordingcreator/recordingcreator.template.html b/src/components/recordingcreator/recordingcreator.template.html index 2a2840aecc..e8cb850338 100644 --- a/src/components/recordingcreator/recordingcreator.template.html +++ b/src/components/recordingcreator/recordingcreator.template.html @@ -1,5 +1,5 @@
- +

diff --git a/src/components/recordingcreator/recordingeditor.template.html b/src/components/recordingcreator/recordingeditor.template.html index 6b853704f3..b5f38dbba4 100644 --- a/src/components/recordingcreator/recordingeditor.template.html +++ b/src/components/recordingcreator/recordingeditor.template.html @@ -1,5 +1,5 @@
- +

${HeaderRecordingOptions}

diff --git a/src/components/recordingcreator/recordingfields.template.html b/src/components/recordingcreator/recordingfields.template.html index 622b0d62e7..35f5d4412d 100644 --- a/src/components/recordingcreator/recordingfields.template.html +++ b/src/components/recordingcreator/recordingfields.template.html @@ -2,7 +2,7 @@
@@ -14,7 +14,7 @@
diff --git a/src/components/recordingcreator/seriesrecordingeditor.template.html b/src/components/recordingcreator/seriesrecordingeditor.template.html index c2e8ebd0ed..0aaa687b60 100644 --- a/src/components/recordingcreator/seriesrecordingeditor.template.html +++ b/src/components/recordingcreator/seriesrecordingeditor.template.html @@ -1,5 +1,5 @@
- +

${HeaderSeriesOptions}

diff --git a/src/components/refreshdialog/refreshdialog.js b/src/components/refreshdialog/refreshdialog.js index 30074b4d0b..07ad8e2e59 100644 --- a/src/components/refreshdialog/refreshdialog.js +++ b/src/components/refreshdialog/refreshdialog.js @@ -123,7 +123,7 @@ define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionManager' var title = globalize.translate('RefreshMetadata'); html += '
'; - html += ''; + html += ''; html += '

'; html += title; html += '

'; diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index 6c43e81756..29e7e8f42b 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -135,7 +135,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL apiClient.getItem(apiClient.getCurrentUserId(), item.Id).then(function (fullItem) { var userData = fullItem.UserData || {}; var likes = null == userData.Likes ? "" : userData.Likes; - context.querySelector(".nowPlayingPageUserDataButtons").innerHTML = ''; + context.querySelector(".nowPlayingPageUserDataButtons").innerHTML = ''; }); } else { backdrop.clear(); @@ -263,13 +263,13 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL var toggleRepeatButton = context.querySelector(".repeatToggleButton"); if ("RepeatAll" == repeatMode) { - toggleRepeatButton.innerHTML = "repeat"; + toggleRepeatButton.innerHTML = "repeat"; toggleRepeatButton.classList.add("repeatButton-active"); } else if ("RepeatOne" == repeatMode) { - toggleRepeatButton.innerHTML = "repeat_one"; + toggleRepeatButton.innerHTML = "repeat_one"; toggleRepeatButton.classList.add("repeatButton-active"); } else { - toggleRepeatButton.innerHTML = "repeat"; + toggleRepeatButton.innerHTML = "repeat"; toggleRepeatButton.classList.remove("repeatButton-active"); } } diff --git a/src/components/search/searchfields.template.html b/src/components/search/searchfields.template.html index bad808cb7e..c1e9c64347 100644 --- a/src/components/search/searchfields.template.html +++ b/src/components/search/searchfields.template.html @@ -1,5 +1,5 @@
- search + search
diff --git a/src/components/slideshow/slideshow.js b/src/components/slideshow/slideshow.js index a5acd042b3..70404cdd68 100644 --- a/src/components/slideshow/slideshow.js +++ b/src/components/slideshow/slideshow.js @@ -70,7 +70,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f var tabIndex = canFocus ? '' : ' tabindex="-1"'; autoFocus = autoFocus ? ' autofocus' : ''; - return ''; + return ''; } function setUserScalable(scalable) { diff --git a/src/components/sortmenu/sortmenu.js b/src/components/sortmenu/sortmenu.js index d4f75a0806..6820b24d23 100644 --- a/src/components/sortmenu/sortmenu.js +++ b/src/components/sortmenu/sortmenu.js @@ -66,7 +66,7 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'layoutMana var html = ''; html += '
'; - html += ''; + html += ''; html += '

${Sort}

'; html += '
'; diff --git a/src/components/subtitleeditor/subtitleeditor.js b/src/components/subtitleeditor/subtitleeditor.js index 964aa81789..59ca98ff32 100644 --- a/src/components/subtitleeditor/subtitleeditor.js +++ b/src/components/subtitleeditor/subtitleeditor.js @@ -132,7 +132,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', itemHtml += '<' + tagName + ' class="' + className + '" data-index="' + s.Index + '">'; - itemHtml += 'closed_caption'; + itemHtml += 'closed_caption'; itemHtml += '
'; @@ -149,7 +149,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', if (!layoutManager.tv) { if (s.Path) { - itemHtml += ''; + itemHtml += ''; } } @@ -248,7 +248,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', html += '<' + tagName + ' class="' + className + '" data-subid="' + result.Id + '">'; - html += 'closed_caption'; + html += 'closed_caption'; var bodyClass = result.Comment || result.IsHashMatch ? 'three-line' : 'two-line'; @@ -281,7 +281,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', html += '
'; if (!layoutManager.tv) { - html += ''; + html += ''; } html += ''; diff --git a/src/components/subtitleeditor/subtitleeditor.template.html b/src/components/subtitleeditor/subtitleeditor.template.html index dc8ae25701..4d1d737b41 100644 --- a/src/components/subtitleeditor/subtitleeditor.template.html +++ b/src/components/subtitleeditor/subtitleeditor.template.html @@ -1,8 +1,8 @@
- +

${Subtitles}

- info${Help} + info${Help}
@@ -18,7 +18,7 @@
- +
diff --git a/src/components/subtitlesync/subtitlesync.template.html b/src/components/subtitlesync/subtitlesync.template.html index 4ee344333d..2aa6b10450 100644 --- a/src/components/subtitlesync/subtitlesync.template.html +++ b/src/components/subtitlesync/subtitlesync.template.html @@ -1,5 +1,5 @@
- +
0s
diff --git a/src/components/tunerpicker.js b/src/components/tunerpicker.js index 3882f2e85a..fb6760dec4 100644 --- a/src/components/tunerpicker.js +++ b/src/components/tunerpicker.js @@ -41,7 +41,7 @@ define(["dialogHelper", "dom", "layoutManager", "connectionManager", "globalize" html += '
'; html += '
'; html += '
'; - html += '
dvr
'; + html += '
dvr
'; html += "
"; html += "
"; html += '
'; @@ -128,7 +128,7 @@ define(["dialogHelper", "dom", "layoutManager", "connectionManager", "globalize" dlg.classList.add("formDialog"); var html = ""; html += '
'; - html += ''; + html += ''; html += '

'; html += globalize.translate("HeaderLiveTvTunerSetup"); html += "

"; diff --git a/src/components/tvproviders/xmltv.template.html b/src/components/tvproviders/xmltv.template.html index 288c1ebe85..7f6490e621 100644 --- a/src/components/tvproviders/xmltv.template.html +++ b/src/components/tvproviders/xmltv.template.html @@ -12,7 +12,7 @@
- +
${XmlTvPathHelp}
diff --git a/src/components/userdatabuttons/userdatabuttons.js b/src/components/userdatabuttons/userdatabuttons.js index 1c00e50caf..2636be1e1d 100644 --- a/src/components/userdatabuttons/userdatabuttons.js +++ b/src/components/userdatabuttons/userdatabuttons.js @@ -28,7 +28,7 @@ define(['connectionManager', 'globalize', 'dom', 'itemHelper', 'paper-icon-butto iconCssClass = ''; } - iconCssClass += 'md-icon'; + iconCssClass += 'material-icons'; return ''; } diff --git a/src/components/viewsettings/viewsettings.js b/src/components/viewsettings/viewsettings.js index e3c75c6293..82bafb084f 100644 --- a/src/components/viewsettings/viewsettings.js +++ b/src/components/viewsettings/viewsettings.js @@ -77,7 +77,7 @@ define(['require', 'dialogHelper', 'loading', 'apphost', 'layoutManager', 'conne var html = ''; html += '
'; - html += ''; + html += ''; html += '

${Settings}

'; html += '
'; diff --git a/src/controllers/auth/selectserver.js b/src/controllers/auth/selectserver.js index b0ee5673e0..e766dbdb5c 100644 --- a/src/controllers/auth/selectserver.js +++ b/src/controllers/auth/selectserver.js @@ -18,7 +18,7 @@ define(["loading", "appRouter", "layoutManager", "appSettings", "apphost", "focu var cardImageContainer; if (item.showIcon) { - cardImageContainer = '' + item.icon + ""; + cardImageContainer = '' + item.icon + ""; } else { cardImageContainer = '
'; } diff --git a/src/controllers/dashboard/dashboard.js b/src/controllers/dashboard/dashboard.js index 63c6f3226b..36cf80fb14 100644 --- a/src/controllers/dashboard/dashboard.js +++ b/src/controllers/dashboard/dashboard.js @@ -303,12 +303,12 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa html += '
'; var btnCssClass; btnCssClass = session.ServerId && session.NowPlayingItem && session.SupportsRemoteControl && session.DeviceId !== connectionManager.deviceId() ? "" : " hide"; - html += ''; - html += ''; + html += ''; + html += ''; btnCssClass = session.TranscodingInfo && session.TranscodingInfo.TranscodeReasons && session.TranscodingInfo.TranscodeReasons.length ? "" : " hide"; - html += ''; + html += ''; btnCssClass = session.ServerId && -1 !== session.SupportedCommands.indexOf("DisplayMessage") && session.DeviceId !== connectionManager.deviceId() ? "" : " hide"; - html += ''; + html += ''; html += "
"; html += '
'; html += DashboardPage.getSessionNowPlayingStreamInfo(session); @@ -361,7 +361,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa html += progress + "%"; html += ""; html += "" + progress + "%"; - html += ''; + html += ''; } else if (task.State === "Cancelling") { html += '' + globalize.translate("LabelStopping") + ""; } diff --git a/src/controllers/dashboard/notifications/notifications.js b/src/controllers/dashboard/notifications/notifications.js index 8b56dc506d..466728210e 100644 --- a/src/controllers/dashboard/notifications/notifications.js +++ b/src/controllers/dashboard/notifications/notifications.js @@ -31,14 +31,14 @@ define(["loading", "libraryMenu", "globalize", "listViewStyle", "emby-button"], } itemHtml += ''; if (notification.Enabled) { - itemHtml += 'notifications_active'; + itemHtml += 'notifications_active'; } else { - itemHtml += 'notifications_off'; + itemHtml += 'notifications_off'; } itemHtml += '
'; itemHtml += '
' + notification.Name + "
"; itemHtml += "
"; - itemHtml += ''; + itemHtml += ''; itemHtml += "
"; return itemHtml; }).join(""); diff --git a/src/controllers/dashboard/plugins/available.js b/src/controllers/dashboard/plugins/available.js index 1679fec5e7..5526bd9ade 100644 --- a/src/controllers/dashboard/plugins/available.js +++ b/src/controllers/dashboard/plugins/available.js @@ -103,7 +103,7 @@ define(["loading", "libraryMenu", "globalize", "cardStyle", "emby-button", "emby html += '
"; html += "
"; } else { - html += 'folder'; + html += 'folder'; } html += ""; diff --git a/src/controllers/dashboard/plugins/installed.js b/src/controllers/dashboard/plugins/installed.js index c18673738e..9c4a631c38 100644 --- a/src/controllers/dashboard/plugins/installed.js +++ b/src/controllers/dashboard/plugins/installed.js @@ -47,14 +47,14 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button" html += '
"; html += "
"; } else { - html += 'folder'; + html += 'folder'; } html += configPageUrl ? "" : "
"; html += "
"; html += '
'; html += '
'; - html += ''; + html += ''; html += "
"; html += "
"; html += configPage ? configPage.DisplayName || plugin.Name : plugin.Name; diff --git a/src/controllers/dashboard/scheduledtasks/scheduledtask.js b/src/controllers/dashboard/scheduledtasks/scheduledtask.js index 7a3e1dbcd6..03eeeeb870 100644 --- a/src/controllers/dashboard/scheduledtasks/scheduledtask.js +++ b/src/controllers/dashboard/scheduledtasks/scheduledtask.js @@ -49,7 +49,7 @@ define(["jQuery", "loading", "datetime", "dom", "globalize", "emby-input", "emby var trigger = task.Triggers[i]; html += '
'; - html += 'schedule'; + html += 'schedule'; if (trigger.MaxRuntimeMs) { html += '
'; } else { @@ -68,7 +68,7 @@ define(["jQuery", "loading", "datetime", "dom", "globalize", "emby-input", "emby } html += "
"; - html += ''; + html += ''; html += "
"; } diff --git a/src/controllers/dashboard/scheduledtasks/scheduledtasks.js b/src/controllers/dashboard/scheduledtasks/scheduledtasks.js index 87297dbcf3..cc8be8216e 100644 --- a/src/controllers/dashboard/scheduledtasks/scheduledtasks.js +++ b/src/controllers/dashboard/scheduledtasks/scheduledtasks.js @@ -40,7 +40,7 @@ define(["jQuery", "loading", "events", "globalize", "serverNotifications", "huma } html += '
'; html += ""; - html += 'schedule'; + html += 'schedule'; html += ""; html += '"; if (task.State === "Running") { - html += ''; + html += ''; } else if (task.State === "Idle") { - html += ''; + html += ''; } html += "
"; } diff --git a/src/controllers/devices.js b/src/controllers/devices.js index 4c8c37eedc..2013607d70 100644 --- a/src/controllers/devices.js +++ b/src/controllers/devices.js @@ -80,7 +80,7 @@ define(["loading", "dom", "libraryMenu", "globalize", "scripts/imagehelper", "hu deviceHtml += '
"; deviceHtml += "
"; } else { - deviceHtml += 'tablet_android'; + deviceHtml += 'tablet_android'; } deviceHtml += ""; @@ -89,7 +89,7 @@ define(["loading", "dom", "libraryMenu", "globalize", "scripts/imagehelper", "hu if (canEdit || canDelete(device.Id)) { deviceHtml += '
'; - deviceHtml += ''; + deviceHtml += ''; deviceHtml += "
"; } diff --git a/src/controllers/dlnaprofile.js b/src/controllers/dlnaprofile.js index e9239693d8..fb4cdb425e 100644 --- a/src/controllers/dlnaprofile.js +++ b/src/controllers/dlnaprofile.js @@ -76,12 +76,12 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in var index = 0; var html = '
' + headers.map(function (h) { var li = '
'; - li += 'info'; + li += 'info'; li += '
'; li += '

' + h.Name + ": " + (h.Value || "") + "

"; li += '
' + (h.Match || "") + "
"; li += "
"; - li += ''; + li += ''; li += "
"; index++; return li; @@ -132,11 +132,11 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in function renderXmlDocumentAttributes(page, attribute) { var html = '
' + attribute.map(function (h) { var li = '
'; - li += 'info'; + li += 'info'; li += '
'; li += '

' + h.Name + " = " + (h.Value || "") + "

"; li += "
"; - li += ''; + li += ''; return li += "
"; }).join("") + "
"; var elem = $(".xmlDocumentAttributeList", page).html(html).trigger("create"); @@ -174,11 +174,11 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in var index = 0; var html = '
' + profiles.map(function (h) { var li = '
'; - li += 'info'; + li += 'info'; li += '
'; li += '

' + (h.Format || "") + "

"; li += "
"; - li += ''; + li += ''; li += "
"; index++; return li; @@ -270,7 +270,7 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in } html += ""; - html += ''; + html += ''; html += "
"; } @@ -331,7 +331,7 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in } html += ""; - html += ''; + html += ''; html += "
"; } @@ -415,7 +415,7 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in } html += ""; - html += ''; + html += ''; html += "
"; } @@ -487,7 +487,7 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in } html += ""; - html += ''; + html += ''; html += "
"; } @@ -567,7 +567,7 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in } html += ""; - html += ''; + html += ''; html += "
"; } diff --git a/src/controllers/dlnaprofiles.js b/src/controllers/dlnaprofiles.js index ae708bcd4e..eae529c538 100644 --- a/src/controllers/dlnaprofiles.js +++ b/src/controllers/dlnaprofiles.js @@ -32,7 +32,7 @@ define(["jQuery", "globalize", "loading", "libraryMenu", "listViewStyle", "emby- for (var i = 0, length = profiles.length; i < length; i++) { var profile = profiles[i]; html += '"; diff --git a/src/controllers/favorites.js b/src/controllers/favorites.js index 0bfe3c4550..522ddd4712 100644 --- a/src/controllers/favorites.js +++ b/src/controllers/favorites.js @@ -248,7 +248,7 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap html += '

'; html += globalize.translate(section.name); html += "

"; - html += 'chevron_right'; + html += 'chevron_right'; html += "
"; } diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index d0616c1579..a62441e615 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -1723,7 +1723,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild html += '

'; html += "" + type.name + ""; html += "

"; - html += ''; + html += ''; html += "
"; html += '
'; var shape = "MusicAlbum" == type.type ? getSquareShape(false) : getPortraitShape(false); diff --git a/src/controllers/livetvstatus.js b/src/controllers/livetvstatus.js index 72d50a25a3..1c6386ba9f 100644 --- a/src/controllers/livetvstatus.js +++ b/src/controllers/livetvstatus.js @@ -26,11 +26,11 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo html += '
'; html += '
'; html += '
'; - html += '
dvr
'; + html += '
dvr
'; html += "
"; html += "
"; html += '
'; - html += ''; + html += ''; html += '
' + (device.FriendlyName || getTunerName(device.Type)) + "
"; html += '
'; html += device.Url || " "; @@ -101,7 +101,7 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo for (var i = 0, length = providers.length; i < length; i++) { var provider = providers[i]; html += '"; - html += ''; + html += ''; html += "
"; } diff --git a/src/controllers/medialibrarypage.js b/src/controllers/medialibrarypage.js index 543acf31da..b4291e41a6 100644 --- a/src/controllers/medialibrarypage.js +++ b/src/controllers/medialibrarypage.js @@ -267,7 +267,7 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl hasCardImageContainer = true; } else if (!virtualFolder.showNameWithIcon) { html += '
'; - html += '' + (virtualFolder.icon || imageHelper.getLibraryIcon(virtualFolder.CollectionType)) + ""; + html += '' + (virtualFolder.icon || imageHelper.getLibraryIcon(virtualFolder.CollectionType)) + ""; hasCardImageContainer = true; } @@ -280,7 +280,7 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl if (!imgUrl && virtualFolder.showNameWithIcon) { html += '

'; - html += '' + (virtualFolder.icon || imageHelper.getLibraryIcon(virtualFolder.CollectionType)) + ""; + html += '' + (virtualFolder.icon || imageHelper.getLibraryIcon(virtualFolder.CollectionType)) + ""; if (virtualFolder.showNameWithIcon) { html += '
'; @@ -297,7 +297,7 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl if (virtualFolder.showMenu !== false) { html += '
'; - html += ''; + html += ''; html += "
"; } diff --git a/src/controllers/movies/moviegenres.js b/src/controllers/movies/moviegenres.js index 6d32e4ab2a..0067f64228 100644 --- a/src/controllers/movies/moviegenres.js +++ b/src/controllers/movies/moviegenres.js @@ -145,7 +145,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader html += '

'; html += item.Name; html += "

"; - html += 'chevron_right'; + html += 'chevron_right'; html += ""; html += "
"; if (enableScrollX()) { diff --git a/src/controllers/shows/tvgenres.js b/src/controllers/shows/tvgenres.js index b6fa54f213..23397fd73e 100644 --- a/src/controllers/shows/tvgenres.js +++ b/src/controllers/shows/tvgenres.js @@ -141,7 +141,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader html += '

'; html += item.Name; html += "

"; - html += 'chevron_right'; + html += 'chevron_right'; html += ""; html += "
"; if (enableScrollX()) { diff --git a/src/controllers/userparentalcontrol.js b/src/controllers/userparentalcontrol.js index 2a862912d5..333c09f266 100644 --- a/src/controllers/userparentalcontrol.js +++ b/src/controllers/userparentalcontrol.js @@ -108,7 +108,7 @@ define(["jQuery", "datetime", "loading", "libraryMenu", "listViewStyle", "paper- li += h; li += ""; li += "
"; - li += ''; + li += ''; return li += "
"; }).join(""); @@ -143,7 +143,7 @@ define(["jQuery", "datetime", "loading", "libraryMenu", "listViewStyle", "paper- itemHtml += ""; itemHtml += '
' + getDisplayTime(a.StartHour) + " - " + getDisplayTime(a.EndHour) + "
"; itemHtml += "
"; - itemHtml += ''; + itemHtml += ''; itemHtml += "
"; index++; return itemHtml; diff --git a/src/controllers/userprofilespage.js b/src/controllers/userprofilespage.js index 7aeea9cb28..a3c247cd35 100644 --- a/src/controllers/userprofilespage.js +++ b/src/controllers/userprofilespage.js @@ -104,7 +104,7 @@ define(["loading", "dom", "globalize", "humanedate", "paper-icon-button-light", html += '
"; } else { html += '
'; - html += 'person'; + html += 'person'; } html += "
"; @@ -115,7 +115,7 @@ define(["loading", "dom", "globalize", "humanedate", "paper-icon-button-light", html += '
'; html += user.Name; html += "
"; - html += ''; + html += ''; html += "
"; html += '
'; var lastSeen = getLastSeenText(user.LastActivityDate); @@ -181,14 +181,14 @@ define(["loading", "dom", "globalize", "humanedate", "paper-icon-button-light", html += '
"; html += "
"; } else { - html += 'person'; + html += 'person'; } html += ""; html += "
"; html += '
'; html += '
'; - html += ''; + html += ''; html += "
"; html += '
'; html += user.UserName; diff --git a/src/dashboard.html b/src/dashboard.html index dc9a56abbc..4888c1110f 100644 --- a/src/dashboard.html +++ b/src/dashboard.html @@ -5,7 +5,7 @@

${TabServer}

- chevron_right + chevron_right
@@ -34,7 +34,7 @@

${HeaderActiveDevices}

- chevron_right + chevron_right
@@ -45,7 +45,7 @@

${HeaderActivity}

- chevron_right + chevron_right
@@ -62,7 +62,7 @@

${Alerts}

- chevron_right + chevron_right
@@ -71,7 +71,7 @@

${HeaderPaths}

- chevron_right + chevron_right
diff --git a/src/dashboardgeneral.html b/src/dashboardgeneral.html index 6387128d5e..f76311a44b 100644 --- a/src/dashboardgeneral.html +++ b/src/dashboardgeneral.html @@ -39,7 +39,7 @@
- +
${LabelCachePathHelp}
@@ -49,7 +49,7 @@
- +
${LabelMetadataPathHelp}
diff --git a/src/dlnaprofile.html b/src/dlnaprofile.html index 2054bce3db..2420ab4c35 100644 --- a/src/dlnaprofile.html +++ b/src/dlnaprofile.html @@ -98,7 +98,7 @@

${HeaderHttpHeaders}

@@ -221,7 +221,7 @@

${HeaderXmlDocumentAttributes}

diff --git a/src/dlnaprofiles.html b/src/dlnaprofiles.html index ac9e961370..c1ae38609c 100644 --- a/src/dlnaprofiles.html +++ b/src/dlnaprofiles.html @@ -9,7 +9,7 @@

${HeaderCustomDlnaProfiles}

- add + add ${Help}
diff --git a/src/elements/emby-checkbox/emby-checkbox.js b/src/elements/emby-checkbox/emby-checkbox.js index d6276e826c..2e49a2d185 100644 --- a/src/elements/emby-checkbox/emby-checkbox.js +++ b/src/elements/emby-checkbox/emby-checkbox.js @@ -56,8 +56,8 @@ define(['browser', 'dom', 'css!./emby-checkbox', 'registerElement'], function (b var checkedIcon = this.getAttribute('data-checkedicon') || 'check'; var uncheckedIcon = this.getAttribute('data-uncheckedicon') || ''; - var checkHtml = '' + checkedIcon + ''; - var uncheckedHtml = '' + uncheckedIcon + ''; + var checkHtml = '' + checkedIcon + ''; + var uncheckedHtml = '' + uncheckedIcon + ''; labelElement.insertAdjacentHTML('beforeend', '' + checkHtml + uncheckedHtml + ''); labelTextElement.classList.add('checkboxLabel'); diff --git a/src/elements/emby-collapse/emby-collapse.js b/src/elements/emby-collapse/emby-collapse.js index 09b8c70d8f..764e525a25 100644 --- a/src/elements/emby-collapse/emby-collapse.js +++ b/src/elements/emby-collapse/emby-collapse.js @@ -80,7 +80,7 @@ define(['browser', 'css!./emby-collapse', 'registerElement', 'emby-button'], fun var title = this.getAttribute('title'); - var html = ''; + var html = ''; this.insertAdjacentHTML('afterbegin', html); diff --git a/src/elements/emby-select/emby-select.js b/src/elements/emby-select/emby-select.js index 248e7ce570..e26d1921aa 100644 --- a/src/elements/emby-select/emby-select.js +++ b/src/elements/emby-select/emby-select.js @@ -144,7 +144,7 @@ define(['layoutManager', 'browser', 'actionsheet', 'css!./emby-select', 'registe this.parentNode.insertBefore(label, this); if (this.classList.contains('emby-select-withcolor')) { - this.parentNode.insertAdjacentHTML('beforeend', '
0
keyboard_arrow_down
'); + this.parentNode.insertAdjacentHTML('beforeend', '
0
keyboard_arrow_down
'); } }; diff --git a/src/encodingsettings.html b/src/encodingsettings.html index 3d67544c0b..6e074936f1 100644 --- a/src/encodingsettings.html +++ b/src/encodingsettings.html @@ -94,7 +94,7 @@
- +
${LabelffmpegPathHelp}
@@ -105,7 +105,7 @@
- +
${LabelTranscodingTempPathHelp}
diff --git a/src/itemdetails.html b/src/itemdetails.html index 22c18cd9d6..93115b4f91 100644 --- a/src/itemdetails.html +++ b/src/itemdetails.html @@ -1,7 +1,7 @@
@@ -17,91 +17,91 @@
diff --git a/src/list.html b/src/list.html index e31efa27e6..643d3a1baa 100644 --- a/src/list.html +++ b/src/list.html @@ -7,45 +7,45 @@ ${HeaderPlayAll}
diff --git a/src/livetv.html b/src/livetv.html index 2ff8990e4a..752b7c827b 100644 --- a/src/livetv.html +++ b/src/livetv.html @@ -7,7 +7,7 @@
@@ -16,7 +16,7 @@
@@ -25,7 +25,7 @@
@@ -34,7 +34,7 @@
@@ -43,7 +43,7 @@
@@ -52,7 +52,7 @@
@@ -63,7 +63,7 @@
- +
@@ -72,7 +72,7 @@
diff --git a/src/livetvsettings.html b/src/livetvsettings.html index 044226a085..d853063ab0 100644 --- a/src/livetvsettings.html +++ b/src/livetvsettings.html @@ -34,7 +34,7 @@
- +
${LabelRecordingPathHelp}
@@ -43,7 +43,7 @@
- +
@@ -51,7 +51,7 @@
- +
@@ -84,7 +84,7 @@
- +
diff --git a/src/livetvstatus.html b/src/livetvstatus.html index 3abd14de34..fc855f32b0 100644 --- a/src/livetvstatus.html +++ b/src/livetvstatus.html @@ -8,7 +8,7 @@ ${HeaderTunerDevices} ${Help}
@@ -21,7 +21,7 @@

${HeaderGuideProviders}

diff --git a/src/livetvtuner.html b/src/livetvtuner.html index 53e8f4b01d..fecbda90aa 100644 --- a/src/livetvtuner.html +++ b/src/livetvtuner.html @@ -24,7 +24,7 @@
- +
diff --git a/src/movies.html b/src/movies.html index c211d9686a..20e087c4b4 100644 --- a/src/movies.html +++ b/src/movies.html @@ -3,9 +3,9 @@
- - - + + +
@@ -46,8 +46,8 @@
- - + +
@@ -62,7 +62,7 @@
- +
@@ -74,9 +74,9 @@
- - - + + +
diff --git a/src/music.html b/src/music.html index e86f179208..9b3c560b82 100644 --- a/src/music.html +++ b/src/music.html @@ -37,11 +37,11 @@
- - - - - + + + + +
@@ -56,8 +56,8 @@
- - + +
@@ -72,8 +72,8 @@
- - + +
@@ -92,8 +92,8 @@
- - + +
diff --git a/src/mypreferencesmenu.html b/src/mypreferencesmenu.html index 0638a49d9d..96e9626899 100644 --- a/src/mypreferencesmenu.html +++ b/src/mypreferencesmenu.html @@ -5,7 +5,7 @@

- person + person
${ButtonProfile}
@@ -14,7 +14,7 @@
- tv + tv
${HeaderDisplay}
@@ -23,7 +23,7 @@
- home + home
${HeaderHome}
@@ -32,7 +32,7 @@
- play_circle_filled + play_circle_filled
${TitlePlayback}
@@ -41,7 +41,7 @@
- closed_caption + closed_caption
${Subtitles}
@@ -52,7 +52,7 @@

${HeaderAdmin}

- dashboard + dashboard
${TabDashboard}
@@ -60,7 +60,7 @@
- mode_edit + mode_edit
${Metadata}
@@ -71,7 +71,7 @@

${HeaderUser}

diff --git a/src/nowplaying.html b/src/nowplaying.html index bc595a6c90..78813255c8 100644 --- a/src/nowplaying.html +++ b/src/nowplaying.html @@ -14,35 +14,35 @@
@@ -55,15 +55,15 @@
@@ -78,43 +78,43 @@



@@ -161,7 +161,7 @@

${TabPlaylist}

diff --git a/src/scheduledtask.html b/src/scheduledtask.html index 8ecaf04dbe..f5bd6550f2 100644 --- a/src/scheduledtask.html +++ b/src/scheduledtask.html @@ -13,7 +13,7 @@

${HeaderTaskTriggers}

diff --git a/src/scripts/editorsidebar.js b/src/scripts/editorsidebar.js index 1ec70cc7cd..1a9b9775ef 100644 --- a/src/scripts/editorsidebar.js +++ b/src/scripts/editorsidebar.js @@ -43,20 +43,20 @@ define(["datetime", "jQuery", "material-icons"], function (datetime, $) { } var htmlName = "
"; if (item.IsFolder) { - htmlName += 'folder'; + htmlName += 'folder'; } else if (item.MediaType === "Video") { - htmlName += 'movie'; + htmlName += 'movie'; } else if (item.MediaType === "Audio") { - htmlName += 'audiotrack'; + htmlName += 'audiotrack'; } else if (item.Type === "TvChannel") { - htmlName += 'live_tv'; + htmlName += 'live_tv'; } else if (item.MediaType === "Photo") { - htmlName += 'photo'; + htmlName += 'photo'; } else if (item.MediaType === "Book") { - htmlName += 'book'; + htmlName += 'book'; } if (item.LockData) { - htmlName += 'lock'; + htmlName += 'lock'; } htmlName += name; htmlName += "
"; diff --git a/src/scripts/librarybrowser.js b/src/scripts/librarybrowser.js index b9f3b92471..268e8d7fe8 100644 --- a/src/scripts/librarybrowser.js +++ b/src/scripts/librarybrowser.js @@ -91,20 +91,20 @@ define(["userSettings"], function (userSettings) { html += '
'; if (showControls) { - html += ''; - html += ''; + html += ''; + html += ''; } if (options.addLayoutButton) { - html += ''; + html += ''; } if (options.sortButton) { - html += ''; + html += ''; } if (options.filterButton) { - html += ''; + html += ''; } html += "
"; diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js index e3d6c8d190..6a977149d2 100644 --- a/src/scripts/librarymenu.js +++ b/src/scripts/librarymenu.js @@ -68,7 +68,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " headerUserButton.innerHTML = '
"; } else { headerUserButton.classList.remove("headerUserButtonRound"); - headerUserButton.innerHTML = 'person'; + headerUserButton.innerHTML = 'person'; } } @@ -161,7 +161,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " function refreshLibraryInfoInDrawer(user, drawer) { var html = ""; html += '
'; - html += '
home' + globalize.translate("ButtonHome") + ""; + html += 'home' + globalize.translate("ButtonHome") + ""; // libraries are added here html += '
'; @@ -172,8 +172,8 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " html += '

'; html += globalize.translate("HeaderAdmin"); html += "

"; - html += 'dashboard' + globalize.translate("TabDashboard") + ""; - html += 'mode_edit' + globalize.translate("Metadata") + ""; + html += 'dashboard' + globalize.translate("TabDashboard") + ""; + html += 'mode_edit' + globalize.translate("Metadata") + ""; html += "
"; } @@ -184,10 +184,10 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " html += ""; if (appHost.supports("multiserver")) { - html += 'wifi' + globalize.translate("ButtonSelectServer") + ""; + html += 'wifi' + globalize.translate("ButtonSelectServer") + ""; } - html += 'exit_to_app' + globalize.translate("ButtonSignOut") + ""; + html += 'exit_to_app' + globalize.translate("ButtonSignOut") + ""; html += "
"; } @@ -391,7 +391,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " menuHtml += '"; if (item.icon) { - menuHtml += '' + item.icon + ""; + menuHtml += '' + item.icon + ""; } menuHtml += ''; @@ -518,7 +518,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " i.onclick; } - return '' + icon + '' + i.Name + ""; + return '' + icon + '' + i.Name + ""; }).join(""); libraryMenuOptions.innerHTML = html; var elem = libraryMenuOptions; @@ -844,16 +844,16 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " var html = ""; html += '
'; html += '
'; - html += '"; - html += ''; - html += ''; + html += '"; + html += ''; + html += ''; html += '

'; html += "
"; html += '
'; html += ''; - html += ''; - html += ''; - html += ''; + html += ''; + html += ''; + html += ''; html += "
"; html += "
"; html += '
'; diff --git a/src/scripts/site.js b/src/scripts/site.js index d7c3a1c8a4..7e04e1a2fb 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -703,7 +703,8 @@ var AppInfo = {}; "swiper", "sortable", "libjass", - "webcomponents" + "webcomponents", + "material-icons" ] }, urlArgs: urlArgs, @@ -721,7 +722,6 @@ var AppInfo = {}; // define styles // TODO determine which of these files can be moved to the components themselves - define("material-icons", ["css!assets/css/material-icons/style"], returnFirstDependency); define("systemFontsCss", ["css!assets/css/fonts"], returnFirstDependency); define("systemFontsSizedCss", ["css!assets/css/fonts.sized"], returnFirstDependency); define("scrollStyles", ["css!assets/css/scrollstyles"], returnFirstDependency); diff --git a/src/tv.html b/src/tv.html index 1327d53ffe..97df4d8e8f 100644 --- a/src/tv.html +++ b/src/tv.html @@ -3,9 +3,9 @@
- - - + + +
@@ -61,9 +61,9 @@
- - - + + +
diff --git a/src/userparentalcontrol.html b/src/userparentalcontrol.html index 6c35913338..4cb5708db7 100644 --- a/src/userparentalcontrol.html +++ b/src/userparentalcontrol.html @@ -31,7 +31,7 @@

${LabelBlockContentWithTags}

@@ -41,7 +41,7 @@

${HeaderAccessSchedule}

diff --git a/src/userprofiles.html b/src/userprofiles.html index 1272957e57..022e06b95f 100644 --- a/src/userprofiles.html +++ b/src/userprofiles.html @@ -6,7 +6,7 @@

${HeaderUsers}

${Help}
diff --git a/src/videoosd.html b/src/videoosd.html index 4d18787a5d..a099605d0d 100644 --- a/src/videoosd.html +++ b/src/videoosd.html @@ -8,7 +8,7 @@

- autorenew + autorenew ${FetchingData}
@@ -25,47 +25,47 @@
@@ -76,7 +76,7 @@
diff --git a/src/wizardfinish.html b/src/wizardfinish.html index e593c430fa..84b559ee82 100644 --- a/src/wizardfinish.html +++ b/src/wizardfinish.html @@ -5,11 +5,11 @@

${WizardCompleted}

diff --git a/src/wizardlibrary.html b/src/wizardlibrary.html index 710bf55816..74b2427981 100644 --- a/src/wizardlibrary.html +++ b/src/wizardlibrary.html @@ -3,7 +3,7 @@

${HeaderSetupLibrary}

- +

@@ -11,12 +11,12 @@
diff --git a/src/wizardremoteaccess.html b/src/wizardremoteaccess.html index f0375a4e2d..ba13059382 100644 --- a/src/wizardremoteaccess.html +++ b/src/wizardremoteaccess.html @@ -21,12 +21,12 @@
diff --git a/src/wizardsettings.html b/src/wizardsettings.html index cced04c5b3..4c00b205ec 100644 --- a/src/wizardsettings.html +++ b/src/wizardsettings.html @@ -16,12 +16,12 @@
diff --git a/src/wizardstart.html b/src/wizardstart.html index 1308fcb2ea..5dd6f7e1b8 100644 --- a/src/wizardstart.html +++ b/src/wizardstart.html @@ -20,7 +20,7 @@
diff --git a/src/wizarduser.html b/src/wizarduser.html index 7d7fdc08e0..9c8b49d869 100644 --- a/src/wizarduser.html +++ b/src/wizarduser.html @@ -22,12 +22,12 @@
diff --git a/webpack.dev.js b/webpack.dev.js index 3aecac1a53..81b69d896c 100644 --- a/webpack.dev.js +++ b/webpack.dev.js @@ -20,6 +20,12 @@ module.exports = merge(common, { { test: /\.(png|jpg|gif)$/i, use: ["file-loader"] + }, + { + test: /\.(woff|woff2|eot|ttf|otf)$/, + use: [ + 'file-loader', + ] } ] }, diff --git a/webpack.prod.js b/webpack.prod.js index 2055051dac..03fcf712ae 100644 --- a/webpack.prod.js +++ b/webpack.prod.js @@ -18,6 +18,12 @@ module.exports = merge(common, { { test: /\.(png|jpg|gif)$/i, use: ["file-loader"] + }, + { + test: /\.(woff|woff2|eot|ttf|otf)$/, + use: [ + 'file-loader', + ] } ] } diff --git a/yarn.lock b/yarn.lock index 1526957e42..18628ae127 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2938,6 +2938,11 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +material-design-icons-iconfont@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/material-design-icons-iconfont/-/material-design-icons-iconfont-5.0.1.tgz#371875ed7fe9c8c520bc7123c3231feeab731c31" + integrity sha512-Xg6rIdGrfySTqiTZ6d+nQbcFepS6R4uKbJP0oAqyeZXJY/bX6mZDnOmmUJusqLXfhIwirs0c++a6JpqVa8RFvA== + md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" From ca4e3294e8eeef0c9d1bd523916d7e2fcca4e728 Mon Sep 17 00:00:00 2001 From: ferferga Date: Sat, 25 Jan 2020 21:16:45 +0100 Subject: [PATCH 075/105] Removed 'Enable auto-update' checkbox from General settings --- src/dashboardgeneral.html | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/src/dashboardgeneral.html b/src/dashboardgeneral.html index 6387128d5e..559e80ee0a 100644 --- a/src/dashboardgeneral.html +++ b/src/dashboardgeneral.html @@ -56,21 +56,6 @@
-
-

${HeaderAutomaticUpdates}

- -
- -
${LabelAllowServerAutoRestartHelp}
-
-
-

${HeaderBranding}

From 49dd48a3e93f82b914f7bdeb19d426aef47d5d30 Mon Sep 17 00:00:00 2001 From: ferferga Date: Sat, 25 Jan 2020 23:15:27 +0100 Subject: [PATCH 076/105] Removed more code related to automatic updates --- src/controllers/dashboard/general.js | 14 -------------- src/strings/ar.json | 1 - src/strings/bg-bg.json | 1 - src/strings/cs.json | 1 - src/strings/da.json | 1 - src/strings/de.json | 1 - src/strings/el.json | 1 - src/strings/en-gb.json | 1 - src/strings/en-us.json | 1 - src/strings/es-mx.json | 1 - src/strings/es.json | 1 - src/strings/fr.json | 1 - src/strings/hr.json | 1 - src/strings/hu.json | 1 - src/strings/it.json | 1 - src/strings/ja.json | 1 - src/strings/kk.json | 1 - src/strings/ko.json | 1 - src/strings/nb.json | 1 - src/strings/nl.json | 1 - src/strings/pl.json | 1 - src/strings/pt-br.json | 1 - src/strings/pt-pt.json | 1 - src/strings/pt.json | 1 - src/strings/ro.json | 1 - src/strings/ru.json | 1 - src/strings/sk.json | 1 - src/strings/sv.json | 1 - src/strings/zh-cn.json | 1 - src/strings/zh-tw.json | 1 - 30 files changed, 43 deletions(-) diff --git a/src/controllers/dashboard/general.js b/src/controllers/dashboard/general.js index c37e5e9a46..34b275ba27 100644 --- a/src/controllers/dashboard/general.js +++ b/src/controllers/dashboard/general.js @@ -16,18 +16,6 @@ define(["jQuery", "loading", "fnchecked", "emby-checkbox", "emby-textarea", "emb return '" })).val(config.UICulture); currentLanguage = config.UICulture; - if (systemInfo.CanSelfUpdate) { - page.querySelector(".fldAutomaticUpdates").classList.remove("hide"); - } else { - page.querySelector(".fldAutomaticUpdates").classList.add("hide"); - } - $("#chkEnableAutomaticServerUpdates", page).checked(config.EnableAutoUpdate); - $("#chkEnableAutomaticRestart", page).checked(config.EnableAutomaticRestart); - if (systemInfo.CanSelfRestart) { - page.querySelector("#fldEnableAutomaticRestart").classList.remove("hide"); - } else { - page.querySelector("#fldEnableAutomaticRestart").classList.add("hide"); - } if (systemInfo.CanSelfRestart || systemInfo.CanSelfUpdate) { $(".autoUpdatesContainer", page).removeClass("hide"); } else { @@ -48,8 +36,6 @@ define(["jQuery", "loading", "fnchecked", "emby-checkbox", "emby-textarea", "emb config.MetadataNetworkPath = $("#txtMetadataNetworkPath", form).val(); var requiresReload = (config.UICulture !== currentLanguage); config.AutoRunWebApp = $("#chkAutoRunWebApp", form).checked(); - config.EnableAutomaticRestart = $("#chkEnableAutomaticRestart", form).checked(); - config.EnableAutoUpdate = $("#chkEnableAutomaticServerUpdates", form).checked(); ApiClient.updateServerConfiguration(config).then(function() { ApiClient.getNamedConfiguration(brandingConfigKey).then(function(brandingConfig) { brandingConfig.LoginDisclaimer = form.querySelector("#txtLoginDisclaimer").value; diff --git a/src/strings/ar.json b/src/strings/ar.json index d9e0040d9d..0adf5e045b 100644 --- a/src/strings/ar.json +++ b/src/strings/ar.json @@ -699,7 +699,6 @@ "OptionEnableAccessFromAllDevices": "تفعيل الدخول على كافة الأجهزة", "OptionEnableAccessToAllChannels": "تفعيل الدخول على كافة القنوات", "OptionEnableAccessToAllLibraries": "تمكين الدخول على كافة المكتبات", - "OptionEnableAutomaticServerUpdates": "تمكين التحديثات الآلية في الخادم", "OptionEnableExternalContentInSuggestions": "تمكين المحتوى الخارجي في المقترحات", "OptionEnableExternalContentInSuggestionsHelp": "السماح للعروض الإعلانية من الإنترنت وبرامج بث التلفزة الحي لتضمّن في المحتوى المقترح.", "OptionEnableForAllTuners": "تمكين كل أجهزة المولفات", diff --git a/src/strings/bg-bg.json b/src/strings/bg-bg.json index c7ce361903..d1f6b11b96 100644 --- a/src/strings/bg-bg.json +++ b/src/strings/bg-bg.json @@ -565,7 +565,6 @@ "OptionEnableAccessFromAllDevices": "Позволяване на достъпа от всички устройства", "OptionEnableAccessToAllChannels": "Позволяване на достъпа до всички канали", "OptionEnableAccessToAllLibraries": "Позволяване на достъпа до всички библиотеки", - "OptionEnableAutomaticServerUpdates": "Разрешаване на автоматичните обновления", "OptionEnded": "Приключило", "OptionEveryday": "Всеки ден", "OptionExternallyDownloaded": "Външно сваляне", diff --git a/src/strings/cs.json b/src/strings/cs.json index b0827ca887..aa2ed1a485 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -930,7 +930,6 @@ "OptionEnableAccessFromAllDevices": "Povolit přístup ze všech zařízení", "OptionEnableAccessToAllChannels": "Povolit přístup ze všech kanálů", "OptionEnableAccessToAllLibraries": "Povolit přístup ke všem knihovnám", - "OptionEnableAutomaticServerUpdates": "Povolit automatickou aktualizaci serveru", "OptionEnableExternalContentInSuggestions": "Aktivovat externí obsah v návrzích", "OptionEnableExternalContentInSuggestionsHelp": "Povolit zahrnutí internetových upoutávek a živých televizních programů do navrhovaného obsahu.", "OptionEnableForAllTuners": "Povolit pro všechna zařízení tunerů", diff --git a/src/strings/da.json b/src/strings/da.json index 4ddd00252e..cd8d9472ca 100644 --- a/src/strings/da.json +++ b/src/strings/da.json @@ -825,7 +825,6 @@ "OptionEnableAccessFromAllDevices": "Tillad adgang fra alle enheder", "OptionEnableAccessToAllChannels": "Tillad adgang til alle kanaler", "OptionEnableAccessToAllLibraries": "Tillad adgang til alle biblioteker", - "OptionEnableAutomaticServerUpdates": "Aktiver automatiske serveropdateringer", "OptionEnableExternalContentInSuggestions": "Aktiver eksternt indhold i anbefalinger", "OptionEnableExternalContentInSuggestionsHelp": "Tillad at internet-trailers og live-tv-programmer bliver inkluderet i det anbefalede indhold.", "OptionEnableForAllTuners": "Aktiver for alle tuner-enheder", diff --git a/src/strings/de.json b/src/strings/de.json index 034cf04d55..d9b40800b0 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -974,7 +974,6 @@ "OptionEnableAccessFromAllDevices": "Erlaube Zugriff von allen Geräten", "OptionEnableAccessToAllChannels": "Erlaube Zugriff auf alle Kanäle", "OptionEnableAccessToAllLibraries": "Erlaube Zugriff auf alle Bibliotheken", - "OptionEnableAutomaticServerUpdates": "Aktiviere automatische Server Updates", "OptionEnableExternalContentInSuggestions": "Aktiviere externe Inhalte in Empfehlungen", "OptionEnableExternalContentInSuggestionsHelp": "Erlaube Internet Trailer und Live TV Sendungen in Empfehlungen.", "OptionEnableForAllTuners": "Aktiviere für alle Tuner", diff --git a/src/strings/el.json b/src/strings/el.json index e189620c64..c718fa609f 100644 --- a/src/strings/el.json +++ b/src/strings/el.json @@ -868,7 +868,6 @@ "OptionEnableAccessFromAllDevices": "Πρόσβαση από όλες τις συσκευές", "OptionEnableAccessToAllChannels": "Ενεργοποιήστε την πρόσβαση σε όλα τα κανάλια", "OptionEnableAccessToAllLibraries": "Πρόσβαση σε όλες τις Βιβλιοθήκες", - "OptionEnableAutomaticServerUpdates": "Ενεργοποίηση αυτόματων ενημερώσεων διακομιστή", "OptionEnableExternalContentInSuggestionsHelp": "Να επιτρέπεται η συμπερίληψη internet trailers και προγράμματα live tv στο προτεινόμενο περιεχόμενο.", "OptionEnableM2tsMode": "Ενεργοποίηση λειτουργίας M2ts", "OptionEnded": "Τέλος", diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 1093463258..4c42629b49 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -1303,7 +1303,6 @@ "OptionEnableM2tsModeHelp": "Enable m2ts mode when encoding to mpegts.", "OptionEnableM2tsMode": "Enable M2ts mode", "OptionEnableExternalContentInSuggestions": "Enable external content in suggestions", - "OptionEnableAutomaticServerUpdates": "Enable automatic server updates", "OptionEnableAccessToAllLibraries": "Enable access to all libraries", "OptionEnableAccessToAllChannels": "Enable access to all channels", "OptionEnableAccessFromAllDevices": "Enable access from all devices", diff --git a/src/strings/en-us.json b/src/strings/en-us.json index c9c00f0da4..e587090918 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -1104,7 +1104,6 @@ "OptionEnableAccessFromAllDevices": "Enable access from all devices", "OptionEnableAccessToAllChannels": "Enable access to all channels", "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "OptionEnableAutomaticServerUpdates": "Enable automatic server updates", "OptionEnableExternalContentInSuggestions": "Enable external content in suggestions", "OptionEnableExternalContentInSuggestionsHelp": "Allow internet trailers and live TV programs to be included within suggested content.", "OptionEnableForAllTuners": "Enable for all tuner devices", diff --git a/src/strings/es-mx.json b/src/strings/es-mx.json index 26b6643ffe..f1f73c5d9e 100644 --- a/src/strings/es-mx.json +++ b/src/strings/es-mx.json @@ -1018,7 +1018,6 @@ "OptionEnableAccessFromAllDevices": "Habilitar acceso desde todos los dispositivos", "OptionEnableAccessToAllChannels": "Habilitar acceso a todos los canales", "OptionEnableAccessToAllLibraries": "Habilitar el acceso a todas las bibliotecas", - "OptionEnableAutomaticServerUpdates": "Habilitar actualizaciones automáticas del servidor", "OptionEnableExternalContentInSuggestions": "Habilitar contenido externo en las sugerencias", "OptionEnableExternalContentInSuggestionsHelp": "Permitir que los trailers de Internet y los programas de televisión en vivo se incluyan en el contenido sugerido.", "OptionEnableForAllTuners": "Habilitar para todos los dispositivos sintonizadores", diff --git a/src/strings/es.json b/src/strings/es.json index 9bb44f01e6..886478e8d6 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -928,7 +928,6 @@ "OptionEnableAccessFromAllDevices": "Habilitar acceso desde todos los equipos", "OptionEnableAccessToAllChannels": "Habilitar acceso a todos los canales", "OptionEnableAccessToAllLibraries": "Habilitar acceso a todas las bibliotecas", - "OptionEnableAutomaticServerUpdates": "Activar actualizaciones automáticas del servidor", "OptionEnableExternalContentInSuggestions": "Habilitar contenido externo en sugerencias", "OptionEnableExternalContentInSuggestionsHelp": "Permite incluir los tráilers de Internet y los programas de TV en vivo en el contenido sugerido.", "OptionEnableForAllTuners": "Activar para todos los dispositivos sintonizadores", diff --git a/src/strings/fr.json b/src/strings/fr.json index 9e29c4f14b..77c270c3a1 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1009,7 +1009,6 @@ "OptionEnableAccessFromAllDevices": "Autoriser l'accès depuis tous les appareils", "OptionEnableAccessToAllChannels": "Activer l'accès à toutes les chaînes", "OptionEnableAccessToAllLibraries": "Activer l'accès à toutes les librairies", - "OptionEnableAutomaticServerUpdates": "Activer les mises à jour automatiques du serveur", "OptionEnableExternalContentInSuggestions": "Activer le contenu externe dans les suggestions", "OptionEnableExternalContentInSuggestionsHelp": "Autoriser les bandes-annonces sur internet et les programmes TV en direct à être inclus dans le contenu suggéré.", "OptionEnableForAllTuners": "Autoriser pour tous les tuners", diff --git a/src/strings/hr.json b/src/strings/hr.json index a1c700df64..1cdccf69b3 100644 --- a/src/strings/hr.json +++ b/src/strings/hr.json @@ -755,7 +755,6 @@ "OptionEnableAccessFromAllDevices": "Omogući pristup svim uređajima", "OptionEnableAccessToAllChannels": "Omogući pristup svim kanalima", "OptionEnableAccessToAllLibraries": "Omogući pristup svim bibliotekama", - "OptionEnableAutomaticServerUpdates": "Omogući automatska ažuriranja servera", "OptionEnableExternalContentInSuggestions": "Omogući vanjske sadržaje u prijedlozima", "OptionEnableExternalContentInSuggestionsHelp": "Dopusti internet kratkim filmovima i TV programima uživo da budu uključeni u preporučenom sadržaju.", "OptionEnableForAllTuners": "Omogući za sve TV/Radio uređaje", diff --git a/src/strings/hu.json b/src/strings/hu.json index 4cc1fde947..7ea57e5156 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -411,7 +411,6 @@ "OptionEnableAccessFromAllDevices": "Hozzáférés engedélyezése minden eszközről", "OptionEnableAccessToAllChannels": "Hozzáférés engedélyezése minden csatornához", "OptionEnableAccessToAllLibraries": "Hozzáférés engedélyezése minden könyvtárhoz", - "OptionEnableAutomaticServerUpdates": "Automatikus szerverfrissítés engedélyezése", "OptionExternallyDownloaded": "Külső letöltés", "OptionFavorite": "Kedvencek", "OptionFriday": "Péntek", diff --git a/src/strings/it.json b/src/strings/it.json index 5f81717e8a..a54203665c 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -969,7 +969,6 @@ "OptionEnableAccessFromAllDevices": "Abilita l'accesso da tutti i dispositivi", "OptionEnableAccessToAllChannels": "Abilita l'accesso a tutti i canali", "OptionEnableAccessToAllLibraries": "Abilita l'accesso a tutte le librerie", - "OptionEnableAutomaticServerUpdates": "Attiva aggiornamenti automatici del server", "OptionEnableExternalContentInSuggestions": "Abilita contenuto remoto nei suggerimenti", "OptionEnableExternalContentInSuggestionsHelp": "Consenti l'inclusione di trailer Internet e programmi TV tra i contenuti suggeriti.", "OptionEnableForAllTuners": "Abilita per tutti i sintonizzatori", diff --git a/src/strings/ja.json b/src/strings/ja.json index ee0ef90de1..0dd7737459 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -643,7 +643,6 @@ "OptionDownloadLogoImage": "ロゴ", "OptionEnableAccessToAllChannels": "すべてのチャンネルへのアクセスを有効化", "OptionEnableAccessToAllLibraries": "すべてのライブラリへのアクセスを優幸化", - "OptionEnableAutomaticServerUpdates": "サーバーの自動アップデートを有効化", "OptionWeekly": "週間", "OriginalAirDateValue": "元の公開日: {0}", "RepeatOne": "リピート", diff --git a/src/strings/kk.json b/src/strings/kk.json index 45025bb1bd..3bf88ed5e1 100644 --- a/src/strings/kk.json +++ b/src/strings/kk.json @@ -1065,7 +1065,6 @@ "OptionEnableAccessFromAllDevices": "Barlyq qurylǵylardan qatynaýdy qosý", "OptionEnableAccessToAllChannels": "Barlyq arnalarǵa qatynaýdy qosý", "OptionEnableAccessToAllLibraries": "Barlyq tasyǵyshhanalarǵa qatynaýdy qosý", - "OptionEnableAutomaticServerUpdates": "Serverdiń avtomatty jańartylýyn qosý", "OptionEnableExternalContentInSuggestions": "Uynystarǵa syrtqy mazmundy qosý", "OptionEnableExternalContentInSuggestionsHelp": "Internet-treılerler men efırlik kórsetimderge usynǵan mazmunǵa kirý úshin ruqsat etedi.", "OptionEnableForAllTuners": "Barlyq túner qurylǵylary úshin qosý", diff --git a/src/strings/ko.json b/src/strings/ko.json index 0f2b32c64c..a0276b700c 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -585,7 +585,6 @@ "OptionEnableAccessFromAllDevices": "모든 기기에서 접속 허용", "OptionEnableAccessToAllChannels": "모든 채널에 접속 허용", "OptionEnableAccessToAllLibraries": "모든 라이브러리에 접속 허용", - "OptionEnableAutomaticServerUpdates": "서버 자동 업데이트 사용", "OptionEnableM2tsMode": "M2ts 모드 활성화", "OptionEnded": "종료됨", "OptionEveryday": "매일", diff --git a/src/strings/nb.json b/src/strings/nb.json index 0ad9459aca..5633be14b2 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -822,7 +822,6 @@ "OptionEnableAccessFromAllDevices": "Gi tilgang fra alle enheter", "OptionEnableAccessToAllChannels": "Gi tilgang til alle kanaler", "OptionEnableAccessToAllLibraries": "Gi tilgang til alle bibliotek", - "OptionEnableAutomaticServerUpdates": "Aktiver automatiske serveroppdateringer", "OptionEnableExternalContentInSuggestions": "Aktiver eksternt innhold i forslag", "OptionEnableExternalContentInSuggestionsHelp": "Tillat at Internett-trailere og programmer på direkte-TV inkluderes i foreslått innhold.", "OptionEnableForAllTuners": "Aktiver for alle mottakerenheter", diff --git a/src/strings/nl.json b/src/strings/nl.json index 8e5c9714a4..40d449cb9c 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -953,7 +953,6 @@ "OptionEnableAccessFromAllDevices": "Toegang vanaf alle apparaten toestaan", "OptionEnableAccessToAllChannels": "Toegang tot alle kanalen inschakelen", "OptionEnableAccessToAllLibraries": "Toegang tot alle bibliotheken inschakelen", - "OptionEnableAutomaticServerUpdates": "Schakel automatische server updates in", "OptionEnableExternalContentInSuggestions": "Inschakelen externe inhoud in suggesties", "OptionEnableExternalContentInSuggestionsHelp": "Laat internet trailers en live-tv-programma's op te nemen binnen de voorgestelde inhoud.", "OptionEnableForAllTuners": "Inschakelen voor alle tuners", diff --git a/src/strings/pl.json b/src/strings/pl.json index 15603fc139..37ef09c707 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -1026,7 +1026,6 @@ "OptionEnableAccessFromAllDevices": "Udostępniaj na wszystkich urządzeniach", "OptionEnableAccessToAllChannels": "Udostępniaj wszystkie kanały", "OptionEnableAccessToAllLibraries": "Udostępniaj wszystkie biblioteki", - "OptionEnableAutomaticServerUpdates": "Aktualizuj serwer automatycznie", "OptionEnableExternalContentInSuggestions": "Dodawaj zewnętrzną zawartość do polecanych", "OptionEnableExternalContentInSuggestionsHelp": "Umożliwia dodawanie zwiastunów i programów telewizyjnych do polecanej zawartości.", "OptionEnableForAllTuners": "Aktywuj dla wszystkich tunerów", diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index f3d3562691..06ad3fb9e5 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -994,7 +994,6 @@ "OptionEnableAccessFromAllDevices": "Ativar o acesso de todos os dispositivos", "OptionEnableAccessToAllChannels": "Ativar o acesso a todos os canais", "OptionEnableAccessToAllLibraries": "Ativar o acesso a todas as bibliotecas", - "OptionEnableAutomaticServerUpdates": "Ativar as atualizações automáticas do servidor", "OptionEnableExternalContentInSuggestions": "Ativar conteúdo externo nas sugestões", "OptionEnableExternalContentInSuggestionsHelp": "Permitir que trailers da internet e programas de TV ao vivo sejam incluídos em conteúdos sugeridos.", "OptionEnableForAllTuners": "Ativar para todos os sintonizadores", diff --git a/src/strings/pt-pt.json b/src/strings/pt-pt.json index 19f00d9e0f..d5822cd26a 100644 --- a/src/strings/pt-pt.json +++ b/src/strings/pt-pt.json @@ -581,7 +581,6 @@ "OptionEnableAccessFromAllDevices": "Ativar acesso de todos os dispositivos", "OptionEnableAccessToAllChannels": "Permitir acesso a todos os canais", "OptionEnableAccessToAllLibraries": "Permitir acesso a todas as bibliotecas", - "OptionEnableAutomaticServerUpdates": "Ativar as atualizações automáticas do servidor", "OptionEnableM2tsMode": "Ativar modo M2ts", "OptionEnableM2tsModeHelp": "Ativar o modo m2ts durante a transcodificação para mpegts.", "OptionEnded": "Terminado", diff --git a/src/strings/pt.json b/src/strings/pt.json index abf208a766..200077568d 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -1053,7 +1053,6 @@ "OptionEnableM2tsModeHelp": "Activar o modo m2ts ao codificar para mpegts.", "OptionEnableM2tsMode": "Activar modo M2ts", "OptionEnableExternalContentInSuggestionsHelp": "Permitir que trailers da Internet e programas de TV em Directo sejam incluídos no conteúdo sugerido.", - "OptionEnableAutomaticServerUpdates": "Activar actualizações automáticas do servidor", "OptionEnableAccessToAllLibraries": "Permitir acesso a todas as bibliotecas", "OptionEnableAccessFromAllDevices": "Activar acesso de todos os dispositivos", "OptionEmbedSubtitles": "Incorporar no contentor", diff --git a/src/strings/ro.json b/src/strings/ro.json index 45be057186..c21b57198b 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -1367,7 +1367,6 @@ "OptionDisplayFolderViewHelp": "Afișați dosarele alături de celelalte biblioteci media. Acest lucru poate fi util dacă doriți să aveți o vizualizare direct în dosar.", "OptionDisplayFolderView": "Afișați o vizualizare de dosar pentru a afișa dosarele media simple", "OptionDateAddedImportTime": "Utilizați data scanării în bibliotecă", - "OptionEnableAutomaticServerUpdates": "Activați actualizările automate ale serverului", "OptionDateAddedFileTime": "Utilizați data creării fișierelor", "Yesterday": "Ieri", "Yes": "Da", diff --git a/src/strings/ru.json b/src/strings/ru.json index 4e612aa5bd..b03a5a90c1 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -1036,7 +1036,6 @@ "OptionEnableAccessFromAllDevices": "Включить доступ со всех устройств", "OptionEnableAccessToAllChannels": "Включить доступ ко всем каналам", "OptionEnableAccessToAllLibraries": "Включить доступ ко всем медиатекам", - "OptionEnableAutomaticServerUpdates": "Включить автоматические обновления сервера", "OptionEnableExternalContentInSuggestions": "Включать внешнее содержание в предложения", "OptionEnableExternalContentInSuggestionsHelp": "Разрешить охват интернет-трейлеров и эфирных передач в предлагаемом содержании.", "OptionEnableForAllTuners": "Включить для всех тюнерных устройств", diff --git a/src/strings/sk.json b/src/strings/sk.json index ec536dd17a..be7a504710 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -632,7 +632,6 @@ "OptionEnableAccessFromAllDevices": "Povoliť prístup zo všetkých zariadení", "OptionEnableAccessToAllChannels": "Povoliť prístup ku všetkým kanálom", "OptionEnableAccessToAllLibraries": "Povoliť prístup ku všetkým knižniciam", - "OptionEnableAutomaticServerUpdates": "Povoliť automatické aktualizácie servera", "OptionEnableM2tsMode": "Povoliť M2ts mód", "OptionEnableM2tsModeHelp": "Povoliť režim M2TS pri kódovaní do MPEGTS.", "OptionEnded": "Ukončené", diff --git a/src/strings/sv.json b/src/strings/sv.json index cc273bec17..c7d1931201 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -962,7 +962,6 @@ "OptionEnableAccessFromAllDevices": "Aktivera åtkomst från alla enheter", "OptionEnableAccessToAllChannels": "Aktivera åtkomst till alla kanaler", "OptionEnableAccessToAllLibraries": "Aktivera åtkomst till alla bibliotek", - "OptionEnableAutomaticServerUpdates": "Aktivera automatiska serveruppdateringar", "OptionEnableExternalContentInSuggestions": "Aktivera externt innehåll under förslag", "OptionEnableExternalContentInSuggestionsHelp": "Tillåt internet trailers och livetv-program att visas under förslag på innehåll.", "OptionEnableForAllTuners": "Aktivera för alla TV-mottagare", diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index 3383782895..e7bb4d7730 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -983,7 +983,6 @@ "OptionEnableAccessFromAllDevices": "允许所有设备访问", "OptionEnableAccessToAllChannels": "允许访问所有频道", "OptionEnableAccessToAllLibraries": "允许访问所有媒体库", - "OptionEnableAutomaticServerUpdates": "开启自动服务器更新", "OptionEnableExternalContentInSuggestions": "在建议中启用外部内容", "OptionEnableExternalContentInSuggestionsHelp": "允许建议的内容中包含互联网预告片和电视直播节目。", "OptionEnableForAllTuners": "给所有调谐器开启", diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index 4397c06c56..d4d6141d14 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -1312,7 +1312,6 @@ "OptionDownloadBannerImage": "橫幅", "OptionEnableAccessToAllChannels": "允許存取所有頻道", "OptionEnableAccessToAllLibraries": "允許存取所有媒體庫", - "OptionEnableAutomaticServerUpdates": "啟用自動更新", "OptionEnableForAllTuners": "开启所有调谐器", "OptionExtractChapterImage": "開啟章節圖片擷取", "OptionEnableM2tsModeHelp": "當編碼為 MPEGTS 時啟用 M2TS 模式。", From ec22a1cd9067faba67be718ba7255d33d0491790 Mon Sep 17 00:00:00 2001 From: ManfredRichthofen <46958197+ManfredRichthofen@users.noreply.github.com> Date: Sat, 25 Jan 2020 14:49:04 -0800 Subject: [PATCH 077/105] Update emby-input.css --- src/elements/emby-input/emby-input.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/elements/emby-input/emby-input.css b/src/elements/emby-input/emby-input.css index e52329c877..68ce4cc793 100644 --- a/src/elements/emby-input/emby-input.css +++ b/src/elements/emby-input/emby-input.css @@ -17,12 +17,12 @@ width: 100%; } - .emby-input::-moz-focus-inner { - border: 0; +.emby-input::-moz-focus-inner { + border: 0; } -input:required { -box-shadow:none; +.emby-input:required { + box-shadow:none; } .inputContainer { From 8f8ebc485d572ee2a60e0f69db58bb1be4b4d687 Mon Sep 17 00:00:00 2001 From: ferferga Date: Sun, 26 Jan 2020 00:08:17 +0100 Subject: [PATCH 078/105] Switched media controls to follow other players style --- src/components/playback/mediasession.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/playback/mediasession.js b/src/components/playback/mediasession.js index 7f4b9f519e..160e6a444a 100644 --- a/src/components/playback/mediasession.js +++ b/src/components/playback/mediasession.js @@ -160,8 +160,8 @@ define(['playbackManager', 'nowPlayingHelper', 'events', 'connectionManager'], f if (navigator.mediaSession) { navigator.mediaSession.metadata = new MediaMetadata({ - title: title, - artist: artist, + title: artist, + artist: title, album: album, artwork: getImageUrls(item), albumArtist: albumArtist, @@ -185,8 +185,8 @@ define(['playbackManager', 'nowPlayingHelper', 'events', 'connectionManager'], f action: eventName, isLocalPlayer: isLocalPlayer, itemId: itemId, - title: title, - artist: artist, + title: artist, + artist: title, album: album, duration: duration, position: currentTime, From a06c56d3d072469c6ff672922608dde7b86e8035 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Sun, 26 Jan 2020 01:49:27 -0500 Subject: [PATCH 079/105] Add title attributes to card title buttons --- src/components/cardbuilder/cardBuilder.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 44c5b3b079..92cc6d38ac 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1018,7 +1018,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana return text; } - var html = ''; From 2ee9828d0dbe2acdb84476a1b970d34393e7e5a4 Mon Sep 17 00:00:00 2001 From: Alexander Brissman Date: Sat, 25 Jan 2020 18:18:12 +0000 Subject: [PATCH 080/105] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)=20Translation:=20Jellyfin/Jellyfin=20Web=20Tr?= =?UTF-8?q?anslate-URL:=20https://translate.jellyfin.org/projects/jellyfin?= =?UTF-8?q?/jellyfin-web/nb=5FNO/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/strings/nb.json | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index 0ad9459aca..a4a943d7fa 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -115,7 +115,7 @@ "ColorSpace": "Fargeutvalg", "ColorTransfer": "Overføring av farger", "Composer": "Komponist", - "ConfigureDateAdded": "Konfigurer hvordan lagt til-dato bestemmes på Jellyfin-serveren sitt dashbord under instillinger for Bibliotek", + "ConfigureDateAdded": "Konfigurer hvordan \"Dato lagt til\" bestemmes på Jellyfin-serveren sitt dashbord under instillinger for Bibliotek", "ConfirmDeleteImage": "Slett bilde?", "ConfirmDeleteItem": "Sletting av elementet vil slette det fra både filsystemet og biblioteket. Er du sikker på at du vil fortsette?", "ConfirmDeleteItems": "Sletting av disse elementene vil slette dem fra både filsystemet og mediebiblioteket. Er du sikker på at du vil fortsette?", @@ -436,7 +436,7 @@ "LabelCustomDeviceDisplayNameHelp": "Oppgi et egendefinert visningsnavn eller la det være tomt for å bruke navnet som enheten rapporterer.", "LabelCustomRating": "Egen anmeldelse:", "LabelDateAdded": "Dato lagt til:", - "LabelDateAddedBehavior": "Dato lagt til-atferd for nytt innhold:", + "LabelDateAddedBehavior": "Hvordan bestemme \"Dato lagt til\" for nytt innhold:", "LabelDateAddedBehaviorHelp": "Hvis en metadataverdi finnes, vil den alltid bli brukt fremfor noen av disse valgene.", "LabelDay": "Dag:", "LabelDeathDate": "Dødsdato:", @@ -501,7 +501,7 @@ "LabelImageFetchersHelp": "Aktiver og ranger dine foretrukne kilder for omslagsbilder i prioritert rekkefølge.", "LabelImageType": "Bildetype:", "LabelImportOnlyFavoriteChannels": "Begrens til kanaler som er merket som favoritt", - "LabelInNetworkSignInWithEasyPassword": "Tillat PIN-kode-innlogging på det lokale nettverket", + "LabelInNetworkSignInWithEasyPassword": "Tillat innlogging med PIN-kode på det lokale nettverket", "LabelInNetworkSignInWithEasyPasswordHelp": "Bruk den enkle PIN-koden for å logge inn på klienter som befinner seg i hjemmenettverket. Det vanlige passordet ditt vil kun være nødvendig ved pålogging fra eksternt nettverk. Hvis PIN-koden er tom, trenger du ikke passord i hjemmenettverket.", "LabelKeepUpTo": "Bevar opptil:", "LabelKidsCategories": "Barnekategorier:", @@ -713,7 +713,7 @@ "MessageCreateAccountAt": "Opprett en konto hos {0}", "MessageDeleteTaskTrigger": "Er du sikker på at du vil slette denne oppgaveutløseren?", "MessageDirectoryPickerBSDInstruction": "På BSD-systemer må du kanskje endre lagringsinnstillinger i FreeNAS Jail slik at Jellyfin har tilgang dit.", - "MessageDirectoryPickerInstruction": "Nettverksplasseringer kan skrives inn manuelt i tilfelle Nettverk-knappen ikke klarer å lokalisere enhetene dine. For eksempel {0} eller {1}.", + "MessageDirectoryPickerInstruction": "Nettverksbaner kan skrives inn manuelt i tilfelle søke-knappen ikke klarer å lokalisere enhetene dine. For eksempel {0} eller {1}.", "MessageDirectoryPickerLinuxInstruction": "På Linux-systemer med Arch Linux, CentOS, Debian, Fedora, openSUSE eller Ubuntu må du minimum gi tjenestebrukeren lesetilgang til lagringsplassene dine.", "MessageDownloadQueued": "Nedlasting lagt i kø.", "MessageEnablingOptionLongerScans": "Aktivering av dette alternativet kan føre til at skanning av biblioteket tar betydelig lenger tid.", @@ -1225,7 +1225,7 @@ "EnableNextVideoInfoOverlayHelp": "Vis informasjon om den neste videoen i spillelisten ved slutten av en video.", "ExtractChapterImagesHelp": "Uthenting av kapittelbilder vil gjøre det mulig for klienter å vise bilder i menyer for å velge kapitel. Denne prosessen kan være treg, ressurskrevende, og kan kreve flere gigabyte med lagringsplass. Prosessen kjører når videoer oppdages, samt som en daglig planlagt hendelse. Tidsplanen kan endres i innstillinger for planlagte hendelser. Det anbefales ikke at denne prosessen kjøres når det er mange aktive brukere innlogget.", "Extras": "Ekstramateriale", - "HeaderKodiMetadataHelp": "For å aktivere eller deaktivere NFO-metadata, gå til bibliotekoppsettet i Jellyfin og finn valgene for metadatalagring.", + "HeaderKodiMetadataHelp": "For å aktivere eller deaktivere NFO-metadata, gå til bibliotekoppsettet i Jellyfin og finn valgene for lagring av metadata.", "OptionArtist": "Artist", "HeaderPhotoAlbums": "Fotoalbum", "HeaderRestartingServer": "Serveren starter på nytt", @@ -1362,7 +1362,7 @@ "DashboardArchitecture": "Arkitektur: {0}", "LabelVideoBitrate": "Bithastighet på video:", "LabelVideoCodec": "Videokodek:", - "LabelWeb": "Web: ", + "LabelWeb": "Web:", "LabelXDlnaCap": "X-DLNA-begrensning:", "LabelXDlnaDoc": "X-DLNA-doc:", "LabelYear": "År:", @@ -1453,5 +1453,7 @@ "OptionRandom": "Tilfeldig", "HeaderFavoritePeople": "Favorittpersoner", "Raised": "Hevet", - "ButtonSplit": "Del opp" + "ButtonSplit": "Del opp", + "SelectAdminUsername": "Vennligst velg et brukernavn for administrator-kontoen.", + "HeaderNavigation": "Navigering" } From 6bea97ef0ff87f9ba41461f72a5acc90f99d0914 Mon Sep 17 00:00:00 2001 From: ferferga Date: Sun, 26 Jan 2020 14:40:32 +0100 Subject: [PATCH 081/105] Fixed logic and reduced overhead --- src/components/playback/mediasession.js | 42 +++++++++---------------- 1 file changed, 15 insertions(+), 27 deletions(-) diff --git a/src/components/playback/mediasession.js b/src/components/playback/mediasession.js index 160e6a444a..65b5ebcf80 100644 --- a/src/components/playback/mediasession.js +++ b/src/components/playback/mediasession.js @@ -97,6 +97,15 @@ define(['playbackManager', 'nowPlayingHelper', 'events', 'connectionManager'], f } function updatePlayerState(player, state, eventName) { + var now = new Date().getTime(); + lastUpdateTime = now; + + // Don't go crazy reporting position changes + if (eventName == 'timeupdate' && (now - lastUpdateTime) < 5000) { + // Only report if this item hasn't been reported yet, or if there's an actual playback change. + // Don't report on simple time updates + return; + } var item = state.NowPlayingItem; @@ -118,19 +127,9 @@ define(['playbackManager', 'nowPlayingHelper', 'events', 'connectionManager'], f } var playState = state.PlayState || {}; - var parts = nowPlayingHelper.getNowPlayingNames(item); - - var artist = parts.length === 1 ? '' : parts[0].text; - var title = parts[parts.length - 1].text; - - // Switch these two around for video - if (isVideo && parts.length > 1) { - var temp = artist; - artist = title; - title = temp; - } - + var artist = parts[parts.length - 1].text; + var title = parts.length === 1 ? '' : parts[0].text; var albumArtist; if (item.AlbumArtists && item.AlbumArtists[0]) { @@ -147,21 +146,10 @@ define(['playbackManager', 'nowPlayingHelper', 'events', 'connectionManager'], f var isPaused = playState.IsPaused || false; var canSeek = playState.CanSeek || false; - var now = new Date().getTime(); - - // Don't go crazy reporting position changes - if (eventName == 'timeupdate' && (now - lastUpdateTime) < 5000) { - // Only report if this item hasn't been reported yet, or if there's an actual playback change. - // Don't report on simple time updates - return; - } - - lastUpdateTime = now; - if (navigator.mediaSession) { navigator.mediaSession.metadata = new MediaMetadata({ - title: artist, - artist: title, + title: title, + artist: artist, album: album, artwork: getImageUrls(item), albumArtist: albumArtist, @@ -185,8 +173,8 @@ define(['playbackManager', 'nowPlayingHelper', 'events', 'connectionManager'], f action: eventName, isLocalPlayer: isLocalPlayer, itemId: itemId, - title: artist, - artist: title, + title: title, + artist: artist, album: album, duration: duration, position: currentTime, From 3682d3c22247689af7ab7879649c7bc4c1779054 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Sun, 26 Jan 2020 18:53:40 +0300 Subject: [PATCH 082/105] medialibrarycreator.js --- .../medialibrarycreator.js | 109 ++++++++++++------ 1 file changed, 71 insertions(+), 38 deletions(-) diff --git a/src/components/medialibrarycreator/medialibrarycreator.js b/src/components/medialibrarycreator/medialibrarycreator.js index 183e22551f..aeae7469a5 100644 --- a/src/components/medialibrarycreator/medialibrarycreator.js +++ b/src/components/medialibrarycreator/medialibrarycreator.js @@ -1,37 +1,44 @@ -define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionseditor/libraryoptionseditor", "emby-toggle", "emby-input", "emby-select", "paper-icon-button-light", "listViewStyle", "formDialogStyle", "emby-button", "flexStyles"], function(loading, dialogHelper, dom, $, libraryoptionseditor) { +define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionseditor/libraryoptionseditor", "emby-toggle", "emby-input", "emby-select", "paper-icon-button-light", "listViewStyle", "formDialogStyle", "emby-button", "flexStyles"], function (loading, dialogHelper, dom, $, libraryoptionseditor) { "use strict"; function onAddLibrary() { - if (isCreating) return false; + if (isCreating) { + return false; + } if (pathInfos.length == 0) { - require(["alert"], function(alert) { + require(["alert"], function (alert) { alert({ text: Globalize.translate("PleaseAddAtLeastOneFolder"), type: "error" - }) + }); }); + return false; } isCreating = true; loading.show(); - var dlg = dom.parentWithClass(this, "dlg-librarycreator"); var name = $("#txtValue", dlg).val(); var type = $("#selectCollectionType", dlg).val(); - if (type == "mixed") type = null; + + if (type == "mixed") { + type = null; + } + var libraryOptions = libraryoptionseditor.getLibraryOptions(dlg.querySelector(".libraryOptions")); libraryOptions.PathInfos = pathInfos; - ApiClient.addVirtualFolder(name, type, currentOptions.refresh, libraryOptions).then(function() { + ApiClient.addVirtualFolder(name, type, currentOptions.refresh, libraryOptions).then(function () { hasChanges = true; isCreating = false; loading.hide(); dialogHelper.close(dlg); - }, function() { - require(["toast"], function(toast) { + }, function () { + require(["toast"], function (toast) { toast(Globalize.translate("ErrorAddingMediaPathToVirtualFolder")); }); + isCreating = false; loading.hide(); }); @@ -39,16 +46,17 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed } function getCollectionTypeOptionsHtml(collectionTypeOptions) { - return collectionTypeOptions.map(function(i) { + return collectionTypeOptions.map(function (i) { return '"; }).join(""); } function initEditor(page, collectionTypeOptions) { - $("#selectCollectionType", page).html(getCollectionTypeOptionsHtml(collectionTypeOptions)).val("").on("change", function() { + $("#selectCollectionType", page).html(getCollectionTypeOptionsHtml(collectionTypeOptions)).val("").on("change", function () { var value = this.value; var dlg = $(this).parents(".dialog")[0]; libraryoptionseditor.setContentType(dlg.querySelector(".libraryOptions"), value == "mixed" ? "" : value); + if (value) { dlg.querySelector(".libraryOptions").classList.remove("hide"); } else { @@ -57,17 +65,17 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed if (value != "mixed") { var index = this.selectedIndex; + if (index != -1) { var name = this.options[index].innerHTML.replace("*", "").replace("&", "&"); $("#txtValue", dlg).val(name); - var folderOption = collectionTypeOptions.filter(function(i) { - return i.value == value + var folderOption = collectionTypeOptions.filter(function (i) { + return i.value == value; })[0]; - $(".collectionTypeFieldDescription", dlg).html(folderOption.message || "") + $(".collectionTypeFieldDescription", dlg).html(folderOption.message || ""); } } }); - page.querySelector(".btnAddFolder").addEventListener("click", onAddButtonClick); page.querySelector(".btnSubmit").addEventListener("click", onAddLibrary); page.querySelector(".folderList").addEventListener("click", onRemoveClick); @@ -81,40 +89,65 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed function onAddButtonClick() { var page = dom.parentWithClass(this, "dlg-librarycreator"); - require(["directorybrowser"], function(directoryBrowser) { - var picker = new directoryBrowser; + + require(["directorybrowser"], function (directoryBrowser) { + var picker = new directoryBrowser(); picker.show({ enableNetworkSharePath: true, - callback: function(path, networkSharePath) { - path && addMediaLocation(page, path, networkSharePath); + callback: function (path, networkSharePath) { + if (path) { + addMediaLocation(page, path, networkSharePath); + } + picker.close(); } - }) - }) + }); + }); } function getFolderHtml(pathInfo, index) { var html = ""; - return html += '
', html += '
', html += '
' + pathInfo.Path + "
", pathInfo.NetworkPath && (html += '
' + pathInfo.NetworkPath + "
"), html += "
", html += '', html += "
" + html += '
'; + html += '
'; + html += '
' + pathInfo.Path + "
"; + + if (pathInfo.NetworkPath) { + html += '
' + pathInfo.NetworkPath + "
"; + } + + html += "
"; + html += ''; + html += "
"; + return html; } function renderPaths(page) { var foldersHtml = pathInfos.map(getFolderHtml).join(""); var folderList = page.querySelector(".folderList"); folderList.innerHTML = foldersHtml; - foldersHtml ? folderList.classList.remove("hide") : folderList.classList.add("hide"); + + if (foldersHtml) { + folderList.classList.remove("hide"); + } else { + folderList.classList.add("hide"); + } } function addMediaLocation(page, path, networkSharePath) { var pathLower = path.toLowerCase(); - var pathFilter = pathInfos.filter(function(p) { + var pathFilter = pathInfos.filter(function (p) { return p.Path.toLowerCase() == pathLower; }); + if (!pathFilter.length) { var pathInfo = { Path: path }; - networkSharePath && (pathInfo.NetworkPath = networkSharePath); + + if (networkSharePath) { + pathInfo.NetworkPath = networkSharePath; + } + pathInfos.push(pathInfo); renderPaths(page); } @@ -125,7 +158,7 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed var index = parseInt(button.getAttribute("data-index")); var location = pathInfos[index].Path; var locationLower = location.toLowerCase(); - pathInfos = pathInfos.filter(function(p) { + pathInfos = pathInfos.filter(function (p) { return p.Path.toLowerCase() != locationLower; }); renderPaths(dom.parentWithClass(button, "dlg-librarycreator")); @@ -136,21 +169,22 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed } function initLibraryOptions(dlg) { - libraryoptionseditor.embed(dlg.querySelector(".libraryOptions")).then(function() { + libraryoptionseditor.embed(dlg.querySelector(".libraryOptions")).then(function () { $("#selectCollectionType", dlg).trigger("change"); onToggleAdvancedChange.call(dlg.querySelector(".chkAdvanced")); - }) + }); } function editor() { - this.show = function(options) { - return new Promise(function(resolve, reject) { + this.show = function (options) { + return new Promise(function (resolve, reject) { currentOptions = options; currentResolve = resolve; hasChanges = false; - var xhr = new XMLHttpRequest; + var xhr = new XMLHttpRequest(); xhr.open("GET", "components/medialibrarycreator/medialibrarycreator.template.html", true); - xhr.onload = function(e) { + + xhr.onload = function (e) { var template = this.response; var dlg = dialogHelper.createDialog({ size: "medium-tall", @@ -166,24 +200,23 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed initEditor(dlg, options.collectionTypeOptions); dlg.addEventListener("close", onDialogClosed); dialogHelper.open(dlg); - dlg.querySelector(".btnCancel").addEventListener("click", function() { - dialogHelper.close(dlg) + dlg.querySelector(".btnCancel").addEventListener("click", function () { + dialogHelper.close(dlg); }); pathInfos = []; renderPaths(dlg); initLibraryOptions(dlg); }; + xhr.send(); }); - } + }; } var pathInfos = []; var currentResolve; var currentOptions; - var hasChanges = false; var isCreating = false; - - return editor + return editor; }); From 807a45505aad953e456f2f375ef95aad8b0fa09c Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Sun, 26 Jan 2020 19:02:37 +0300 Subject: [PATCH 083/105] medialibraryeditor.js --- .../medialibraryeditor/medialibraryeditor.js | 106 +++++++++++------- 1 file changed, 64 insertions(+), 42 deletions(-) diff --git a/src/components/medialibraryeditor/medialibraryeditor.js b/src/components/medialibraryeditor/medialibraryeditor.js index a1ee53f72b..8336f9e175 100644 --- a/src/components/medialibraryeditor/medialibraryeditor.js +++ b/src/components/medialibraryeditor/medialibraryeditor.js @@ -1,22 +1,22 @@ -define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionseditor/libraryoptionseditor", "emby-button", "listViewStyle", "paper-icon-button-light", "formDialogStyle", "emby-toggle", "flexStyles"], function(jQuery, loading, dialogHelper, dom, libraryoptionseditor) { +define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionseditor/libraryoptionseditor", "emby-button", "listViewStyle", "paper-icon-button-light", "formDialogStyle", "emby-toggle", "flexStyles"], function (jQuery, loading, dialogHelper, dom, libraryoptionseditor) { "use strict"; function onEditLibrary() { - if (isCreating) return false; + if (isCreating) { + return false; + } isCreating = true; loading.show(); - var dlg = dom.parentWithClass(this, "dlg-libraryeditor"); var libraryOptions = libraryoptionseditor.getLibraryOptions(dlg.querySelector(".libraryOptions")); libraryOptions = Object.assign(currentOptions.library.LibraryOptions || {}, libraryOptions); - - ApiClient.updateVirtualFolderOptions(currentOptions.library.ItemId, libraryOptions).then(function() { + ApiClient.updateVirtualFolderOptions(currentOptions.library.ItemId, libraryOptions).then(function () { hasChanges = true; isCreating = false; loading.hide(); dialogHelper.close(dlg); - }, function() { + }, function () { isCreating = false; loading.hide(); }); @@ -26,11 +26,11 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed function addMediaLocation(page, path, networkSharePath) { var virtualFolder = currentOptions.library; var refreshAfterChange = currentOptions.refresh; - ApiClient.addMediaPath(virtualFolder.Name, path, networkSharePath, refreshAfterChange).then(function() { + ApiClient.addMediaPath(virtualFolder.Name, path, networkSharePath, refreshAfterChange).then(function () { hasChanges = true; refreshLibraryFromServer(page); - }, function() { - require(["toast"], function(toast) { + }, function () { + require(["toast"], function (toast) { toast(Globalize.translate("ErrorAddingMediaPathToVirtualFolder")); }); }); @@ -41,11 +41,11 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed ApiClient.updateMediaPath(virtualFolder.Name, { Path: path, NetworkPath: networkSharePath - }).then(function() { + }).then(function () { hasChanges = true; refreshLibraryFromServer(page); - }, function() { - require(["toast"], function(toast) { + }, function () { + require(["toast"], function (toast) { toast(Globalize.translate("ErrorAddingMediaPathToVirtualFolder")); }); }); @@ -54,19 +54,20 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed function onRemoveClick(btnRemovePath, location) { var button = btnRemovePath; var virtualFolder = currentOptions.library; - require(["confirm"], function(confirm) { + + require(["confirm"], function (confirm) { confirm({ title: Globalize.translate("HeaderRemoveMediaLocation"), text: Globalize.translate("MessageConfirmRemoveMediaLocation"), confirmText: Globalize.translate("ButtonDelete"), primary: "delete" - }).then(function() { + }).then(function () { var refreshAfterChange = currentOptions.refresh; - ApiClient.removeMediaPath(virtualFolder.Name, location, refreshAfterChange).then(function() { + ApiClient.removeMediaPath(virtualFolder.Name, location, refreshAfterChange).then(function () { hasChanges = true; refreshLibraryFromServer(dom.parentWithClass(button, "dlg-libraryeditor")); - }, function() { - require(["toast"], function(toast) { + }, function () { + require(["toast"], function (toast) { toast(Globalize.translate("DefaultErrorMessage")); }); }); @@ -76,13 +77,19 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed function onListItemClick(e) { var listItem = dom.parentWithClass(e.target, "listItem"); + if (listItem) { var index = parseInt(listItem.getAttribute("data-index")); var pathInfos = (currentOptions.library.LibraryOptions || {}).PathInfos || []; var pathInfo = null == index ? {} : pathInfos[index] || {}; var originalPath = pathInfo.Path || (null == index ? null : currentOptions.library.Locations[index]); var btnRemovePath = dom.parentWithClass(e.target, "btnRemovePath"); - if (btnRemovePath) return void onRemoveClick(btnRemovePath, originalPath); + + if (btnRemovePath) { + onRemoveClick(btnRemovePath, originalPath); + return; + } + showDirectoryBrowser(dom.parentWithClass(listItem, "dlg-libraryeditor"), originalPath, pathInfo.NetworkPath); } } @@ -94,9 +101,11 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed html += '

'; html += pathInfo.Path; html += "

"; + if (pathInfo.NetworkPath) { html += '
' + pathInfo.NetworkPath + "
"; } + html += "
"; html += ''; html += "
"; @@ -104,10 +113,11 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed } function refreshLibraryFromServer(page) { - ApiClient.getVirtualFolders().then(function(result) { - var library = result.filter(function(f) { - return f.Name === currentOptions.library.Name + ApiClient.getVirtualFolders().then(function (result) { + var library = result.filter(function (f) { + return f.Name === currentOptions.library.Name; })[0]; + if (library) { currentOptions.library = library; renderLibrary(page, currentOptions); @@ -117,16 +127,21 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed function renderLibrary(page, options) { var pathInfos = (options.library.LibraryOptions || {}).PathInfos || []; - pathInfos.length || (pathInfos = options.library.Locations.map(function(p) { - return { - Path: p - } - })); + + if (!pathInfos.length) { + pathInfos = options.library.Locations.map(function (p) { + return { + Path: p + }; + }); + } + if (options.library.CollectionType === 'boxsets') { page.querySelector(".folders").classList.add("hide"); } else { page.querySelector(".folders").classList.remove("hide"); } + page.querySelector(".folderList").innerHTML = pathInfos.map(getFolderHtml).join(""); } @@ -135,24 +150,31 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed } function showDirectoryBrowser(context, originalPath, networkPath) { - require(["directorybrowser"], function(directoryBrowser) { - var picker = new directoryBrowser; + require(["directorybrowser"], function (directoryBrowser) { + var picker = new directoryBrowser(); picker.show({ - enableNetworkSharePath: !0, + enableNetworkSharePath: true, pathReadOnly: null != originalPath, path: originalPath, networkSharePath: networkPath, - callback: function(path, networkSharePath) { - path && (originalPath ? updateMediaLocation(context, originalPath, networkSharePath) : addMediaLocation(context, path, networkSharePath)); + callback: function (path, networkSharePath) { + if (path) { + if (originalPath) { + updateMediaLocation(context, originalPath, networkSharePath); + } else { + addMediaLocation(context, path, networkSharePath); + } + } + picker.close(); } - }) - }) + }); + }); } function onToggleAdvancedChange() { var dlg = dom.parentWithClass(this, "dlg-libraryeditor"); - libraryoptionseditor.setAdvancedVisible(dlg.querySelector(".libraryOptions"), this.checked) + libraryoptionseditor.setAdvancedVisible(dlg.querySelector(".libraryOptions"), this.checked); } function initEditor(dlg, options) { @@ -161,7 +183,7 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed dlg.querySelector(".folderList").addEventListener("click", onListItemClick); dlg.querySelector(".chkAdvanced").addEventListener("change", onToggleAdvancedChange); dlg.querySelector(".btnSubmit").addEventListener("click", onEditLibrary); - libraryoptionseditor.embed(dlg.querySelector(".libraryOptions"), options.library.CollectionType, options.library.LibraryOptions).then(function() { + libraryoptionseditor.embed(dlg.querySelector(".libraryOptions"), options.library.CollectionType, options.library.LibraryOptions).then(function () { onToggleAdvancedChange.call(dlg.querySelector(".chkAdvanced")); }); } @@ -171,14 +193,15 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed } function editor() { - this.show = function(options) { + this.show = function (options) { var deferred = jQuery.Deferred(); currentOptions = options; currentDeferred = deferred; hasChanges = false; - var xhr = new XMLHttpRequest; + var xhr = new XMLHttpRequest(); xhr.open("GET", "components/medialibraryeditor/medialibraryeditor.template.html", true); - xhr.onload = function(e) { + + xhr.onload = function (e) { var template = this.response; var dlg = dialogHelper.createDialog({ size: "medium-tall", @@ -195,21 +218,20 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed initEditor(dlg, options); dlg.addEventListener("close", onDialogClosed); dialogHelper.open(dlg); - dlg.querySelector(".btnCancel").addEventListener("click", function() { + dlg.querySelector(".btnCancel").addEventListener("click", function () { dialogHelper.close(dlg); }); refreshLibraryFromServer(dlg); }; + xhr.send(); return deferred.promise(); - } + }; } var currentDeferred; var currentOptions; - var hasChanges = false; var isCreating = false; - return editor; }); From f0b740762edb08608c99430ab3c018982495fb97 Mon Sep 17 00:00:00 2001 From: ManfredRichthofen <46958197+ManfredRichthofen@users.noreply.github.com> Date: Sun, 26 Jan 2020 13:46:54 -0800 Subject: [PATCH 084/105] Update src/elements/emby-input/emby-input.css Co-Authored-By: dkanada --- src/elements/emby-input/emby-input.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/elements/emby-input/emby-input.css b/src/elements/emby-input/emby-input.css index 68ce4cc793..b16c117fdd 100644 --- a/src/elements/emby-input/emby-input.css +++ b/src/elements/emby-input/emby-input.css @@ -19,7 +19,7 @@ .emby-input::-moz-focus-inner { border: 0; - } +} .emby-input:required { box-shadow:none; From 9e1633d583efc51756f9d336856bcbd9960816c0 Mon Sep 17 00:00:00 2001 From: Fernando Date: Sun, 26 Jan 2020 13:45:18 +0000 Subject: [PATCH 085/105] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es/ --- src/strings/es.json | 81 +++++++++++++++++++++++---------------------- 1 file changed, 41 insertions(+), 40 deletions(-) diff --git a/src/strings/es.json b/src/strings/es.json index 886478e8d6..86f32d3d54 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -95,7 +95,7 @@ "ButtonRestart": "Reiniciar", "ButtonResume": "Continuar", "ButtonRevoke": "Revocar", - "ButtonSave": "Grabar", + "ButtonSave": "Guardar", "ButtonScanAllLibraries": "Escanear todas las bibliotecas", "ButtonSearch": "Buscar", "ButtonSelectDirectory": "Seleccionar directorio", @@ -120,7 +120,7 @@ "CancelRecording": "Cancelar grabación", "CancelSeries": "Cancelar series", "Categories": "Categorías", - "ChannelAccessHelp": "Seleccione los canales para compartir con este usuario. Los administradores podrán editar todos los canales mediante el gestor de metadatos.", + "ChannelAccessHelp": "Seleccione los canales para compartir con este usuario. Los administradores podrán editar todos los canales mediante el editor de etiquetas.", "ChannelNameOnly": "Canal {0} solo", "ChannelNumber": "Número de canal", "Channels": "Canales", @@ -139,8 +139,8 @@ "DeathDateValue": "Murió: {0}", "Default": "Por defecto", "DefaultErrorMessage": "Ha habido un error procesando la solicitud. Por favor inténtalo más tarde.", - "DefaultMetadataLangaugeDescription": "Estos son tus ajustes y se pueden personalizar para cada librería.", - "DefaultSubtitlesHelp": "Los subtítulos se activan en función de los ajustes por defecto y etiquetas en los metadatos integrados. Los ajustes de idioma se tienen en cuenta cuando hay varias opciones disponibles.", + "DefaultMetadataLangaugeDescription": "Estos son tus ajustes y se pueden personalizar para cada biblioteca.", + "DefaultSubtitlesHelp": "Los subtítulos que se utilizarán dependerán de como estén etiquetadas las pistas de los archivos (si \"por defecto\" o \"forzado\"). Los ajustes de idioma se tienen en cuenta cuando hay varias opciones disponibles.", "Delete": "Borrar", "DeleteDeviceConfirmation": "¿Estás seguro de que quieres borrar este dispositivo? Volverá a aparecer la próxima vez que un usuario inicie sesión en él.", "DeleteImage": "Borrar imagen", @@ -304,7 +304,7 @@ "HeaderItems": "Elementos", "HeaderKeepRecording": "Mantener grabación", "HeaderKeepSeries": "Mantener series", - "HeaderKodiMetadataHelp": "Para habilitar o deshabilitar metadatos NFO, edite una biblioteca en la configuración de la biblioteca Jellyfin y localice la sección de metadatos.", + "HeaderKodiMetadataHelp": "Puedes activar o desactivar las etiquetas en formato NFO abriendo la configuración de una biblioteca y revisando los ajustes en la sección de etiquetas.", "HeaderLatestEpisodes": "Últimos episodios", "HeaderLatestMedia": "Últimos medios", "HeaderLatestMovies": "Últimas películas", @@ -322,7 +322,7 @@ "HeaderMedia": "Medios", "HeaderMediaFolders": "Carpetas de medios", "HeaderMediaInfo": "Información multimedia", - "HeaderMetadataSettings": "Ajustes de metadatos", + "HeaderMetadataSettings": "Ajustes de etiquetas", "HeaderMoreLikeThis": "Más como este", "HeaderMovies": "Películas", "HeaderMusicVideos": "Vídeos musicales", @@ -349,7 +349,7 @@ "HeaderPlaybackError": "Error de reproducción", "HeaderPleaseSignIn": "Por favor, inicie sesión", "HeaderPluginInstallation": "Instalación del complemento", - "HeaderPreferredMetadataLanguage": "Idioma preferido para los metadatos", + "HeaderPreferredMetadataLanguage": "Idioma preferido para las etiquetas", "HeaderProfile": "Perfil", "HeaderProfileInformation": "Información del perfil", "HeaderProfileServerSettingsHelp": "Estos valores controlan como el servidor Jellyfin se presenta al dispositivo.", @@ -369,8 +369,8 @@ "HeaderSeasons": "Temporadas", "HeaderSecondsValue": "{0} segundos", "HeaderSelectCertificatePath": "Elige la ruta del certificado", - "HeaderSelectMetadataPath": "Seleccione la ruta para Metadatos", - "HeaderSelectMetadataPathHelp": "Busque o escriba la ruta donde desea almacenar los metadatos. La carpeta debe tener permiso de escritura.", + "HeaderSelectMetadataPath": "Seleccione la ruta para las etiquetas", + "HeaderSelectMetadataPathHelp": "Busque o escriba la ruta donde almacenar las etiquetas. La carpeta debe tener permiso de escritura.", "HeaderSelectPath": "Elige ruta", "HeaderSelectServer": "Selecionar servidor", "HeaderSelectServerCachePath": "Seleccione la ruta para el caché del servidor", @@ -459,7 +459,7 @@ "LabelArtists": "Artistas:", "LabelArtistsHelp": "Separar múltiples artistas usando ;", "LabelAudioLanguagePreference": "Idioma de audio preferido:", - "LabelAutomaticallyRefreshInternetMetadataEvery": "Actualizar los metadatos automáticamente de internet:", + "LabelAutomaticallyRefreshInternetMetadataEvery": "Actualizar las etiquetas automáticamente desde Internet:", "LabelBindToLocalNetworkAddress": "Vincular a la dirección de red local:", "LabelBindToLocalNetworkAddressHelp": "Opcional. Anule la dirección IP local para enlazar el servidor HTTP. Si se deja vacío, el servidor se enlazará a todas las direcciones disponibles. Para cambiar este valor, debe reiniciar el servidor Jellyfin.", "LabelBirthDate": "Fecha de nacimiento:", @@ -489,7 +489,7 @@ "LabelCustomRating": "Valoración pesonalizada:", "LabelDateAdded": "Fecha de añadido:", "LabelDateAddedBehavior": "Comportamiento de la fecha añadida para contenido nuevo:", - "LabelDateAddedBehaviorHelp": "Si un valor de metadato está disponible su usará siempre antes que ninguna de esas opciones.", + "LabelDateAddedBehaviorHelp": "Si el elemento tiene etiquetas que contengan información sobre la fecha de creación, independientemente de lo seleccionado aquí, se utilizarán para ordenar el contenido.", "LabelDay": "Día:", "LabelDeathDate": "Fecha de muerte:", "LabelDefaultUser": "Usuario por defecto:", @@ -595,15 +595,15 @@ "LabelMaxStreamingBitrateHelp": "Especifica la tasa de bits máxima de la transmisión.", "LabelMessageText": "Mensaje de texto:", "LabelMessageTitle": "Título del mensaje:", - "LabelMetadata": "Metadatos:", + "LabelMetadata": "Etiquetas:", "LabelMetadataDownloadLanguage": "Idioma preferido de visualizado:", - "LabelMetadataDownloadersHelp": "Activa y ordena tus descargadores de metadatos por prioridad. Los que tengan menor prioridad se sólo se utilizarán para llenar la información faltante.", - "LabelMetadataPath": "Ruta de los metadatos:", - "LabelMetadataPathHelp": "Especifica una ruta para los pósteres y metadatos.", - "LabelMetadataReaders": "Lectores de metadatos:", - "LabelMetadataReadersHelp": "Ordena tus fuentes de metadatos locales por prioridad. Se leerá el primer archivo encontrado.", - "LabelMetadataSavers": "Almacenadores de metadatos:", - "LabelMetadataSaversHelp": "Elige el formato de archivo para guardar tus metadatos.", + "LabelMetadataDownloadersHelp": "Activa y ordena estos proveedores de etiquetas por prioridad. Los que tengan menor prioridad sólo se utilizarán para completar la información que falte.", + "LabelMetadataPath": "Ruta de las etiquetas:", + "LabelMetadataPathHelp": "Especifica una ruta para las imágenes y las etiquetas.", + "LabelMetadataReaders": "Lectores de etiquetas:", + "LabelMetadataReadersHelp": "Ordena los proveedores de etiquetas locales por prioridad. Se leerá el primer archivo encontrado.", + "LabelMetadataSavers": "Formato de etiquetas:", + "LabelMetadataSaversHelp": "Elige el formato de archivo para guardar las etiquetas.", "LabelMethod": "Método:", "LabelMinBackdropDownloadWidth": "Anchura mínima de descarga de imágenes de fondo:", "LabelMinResumeDuration": "Duración mínima de reanudación:", @@ -676,8 +676,8 @@ "LabelRemoteClientBitrateLimit": "Límite de la transmisión de tasa de bits por internet (Mbps):", "LabelRemoteClientBitrateLimitHelp": "Un límite opcional de tasa de bits para todos los dispositivos fuera de la red. Esto es útil para evitar que los dispositivos soliciten una tasa de bits más alta que la que su conexión a Internet puede manejar. Esto puede ocasionar una mayor carga de la CPU en su servidor para transcodificar vídeos sobre la marcha a una tasa de bits más baja.", "LabelRuntimeMinutes": "Tiempo de ejecución (minutos):", - "LabelSaveLocalMetadata": "Guardar imágenes y metadatos en las carpetas de medios", - "LabelSaveLocalMetadataHelp": "Guardar imágenes y metadatos directamente en las carpetas de medios, permitirá colocarlas en un lugar donde se pueden editar fácilmente.", + "LabelSaveLocalMetadata": "Guardar imágenes y etiquetas en las carpetas de medios", + "LabelSaveLocalMetadataHelp": "Guardar imágenes y etiquetas directamente en las carpetas en las que estén los elementos hará que se puedan editar más fácilmente.", "LabelScheduledTaskLastRan": "Última ejecución {0}, tardando {1}.", "LabelScreensaver": "Salvapantallas:", "LabelSeasonNumber": "Número de temporada:", @@ -729,7 +729,7 @@ "LabelTunerIpAddress": "IP del sintonizador:", "LabelTunerType": "Tipo de sintonizador:", "LabelType": "Tipo:", - "LabelTypeMetadataDownloaders": "{0} descargadores de metadatos:", + "LabelTypeMetadataDownloaders": "Proveedores de etiquetas para {0}:", "LabelTypeText": "Texto", "LabelUseNotificationServices": "Usar los siguientes servicios:", "LabelUser": "Usuario:", @@ -754,7 +754,7 @@ "LanNetworksHelp": "Lista de direcciones IP separadas por comas o entradas de dirección IP / máscara de red para redes que se considerarán en la red local al imponer restricciones de ancho de banda. Si se establece, todas las demás direcciones IP se considerarán en la red externa y estarán sujetas a las restricciones de ancho de banda externo. Si se deja en blanco, solo se considera que la subred del servidor está en la red local.", "Large": "Grande", "LatestFromLibrary": "Reciente en {0}", - "LibraryAccessHelp": "Seleccione las bibliotecas a compartir con este usuario. Los administradores podrán editar todas las carpetas usando el gestor de metadatos.", + "LibraryAccessHelp": "Seleccione las bibliotecas a compartir con este usuario. Los administradores podrán editar todas las carpetas usando el gestor de etiquetas.", "Like": "Me gusta", "Live": "Directo", "LiveBroadcasts": "Emisiones en vivo", @@ -824,7 +824,7 @@ "MessageNoTrailersFound": "No se han encontrado tráilers. Instala el canal de tráilers para mejorar su experiencia añadiendo una biblioteca de tráilers por internet.", "MessageNothingHere": "Nada aquí.", "MessagePasswordResetForUsers": "Se ha restablecido las contraseñas a los siguientes usuarios. Ahora pueden iniciar sesión con los códigos PIN que usaron para el restablecimiento.", - "MessagePleaseEnsureInternetMetadata": "Por favor, asegúrese que la descarga de metadatos de internet está habilitada.", + "MessagePleaseEnsureInternetMetadata": "Asegúrate de que la descarga de etiquetas desde internet está activada.", "MessagePleaseWait": "Por favor, espere.", "MessagePluginConfigurationRequiresLocalAccess": "Para configurar este complemento inicia sesión en tu servidor local directamente.", "MessagePluginInstallDisclaimer": "Los complementos creados por los miembros de la comunidad de Jellyfin son una buena forma de mejorar tu experiencia Jellyfin con características adicionales y otros beneficios. Antes de instalarlos considera los efectos que pueden tener en tu servidor Jellyfin, como escaneos de la biblioteca más largos, procesado en segundo plano adicional y una reducción de la estabilidad del sistema.", @@ -834,9 +834,9 @@ "MessageUnableToConnectToServer": "No podemos conectar con el servidor seleccionado ahora mismo. Por favor, asegúrate de que esta funcionando e inténtalo otra vez.", "MessageUnsetContentHelp": "El contenido se mostrará como carpetas planas. Para tener mejores resultados utiliza el gestor de metadatos para establecer los tipos de contenidos de las sub-carpetas.", "MessageYouHaveVersionInstalled": "Actualmente tienes la versión {0} instalada.", - "Metadata": "Metadatos", - "MetadataManager": "Administrador de metadatos", - "MetadataSettingChangeHelp": "El cambio de la configuración de metadatos afectará al nuevo contenido que se añada en el futuro. Para actualizar el contenido existente, abra la pantalla de detalles y haga clic en el botón Actualizar o realice actualizaciones masivas utilizando el administrador de metadatos.", + "Metadata": "Etiquetas", + "MetadataManager": "Administrador de etiquetas", + "MetadataSettingChangeHelp": "Este cambio afectará al nuevo contenido que se añada en el futuro. Para actualizar el contenido existente abra la pantalla de detalles y haga clic en el botón \"Actualizar\". También se pueden actualizar todas las etiquetas a la vez utilizando el administrador de etiquetas.", "MinutesAfter": "minutos después", "MinutesBefore": "minutos antes", "Mobile": "Móvil", @@ -981,8 +981,8 @@ "OptionResumable": "Se puede continuar", "OptionRuntime": "Tiempo", "OptionSaturday": "Sábado", - "OptionSaveMetadataAsHidden": "Guardar los metadatos e imágenes como archivos ocultos", - "OptionSaveMetadataAsHiddenHelp": "Cambiar esto se aplicará a los nuevos metadatos guardados en el futuro. Los archivos de metadatos existentes se actualizarán la próxima vez que sean guardados por el servidor Jellyfin.", + "OptionSaveMetadataAsHidden": "Guardar las etiquetas e imágenes como archivos ocultos", + "OptionSaveMetadataAsHiddenHelp": "La configuración se aplicará a las nuevas etiquetas que se creen. Las etiquetas existentes se actualizarán la próxima vez que sean guardadas por Jellyfin.", "OptionSpecialEpisode": "Especiales", "OptionSunday": "Domingo", "OptionThursday": "Jueves", @@ -1024,7 +1024,7 @@ "PleaseSelectTwoItems": "Seleccione al menos dos elementos.", "PluginInstalledMessage": "El complemento se ha instalado correctamente. El servidor Jellyfin deberá reiniciarse para que los cambios surjan efecto.", "PreferEmbeddedTitlesOverFileNames": "Preferir títulos incrustados sobre los nombres de archivo", - "PreferEmbeddedTitlesOverFileNamesHelp": "Esto determina el título por defecto cuando no hay ningún metadato de internet o local.", + "PreferEmbeddedTitlesOverFileNamesHelp": "Esto determina el título que se utilizará cuando un elemento no tenga etiquetas ni estas se hayan podido descargar de Internet.", "PreferredNotRequired": "Preferido, pero no requerido", "Premieres": "Estrenos", "Previous": "Anterior", @@ -1047,7 +1047,7 @@ "RecordingScheduled": "Grabación programada.", "Recordings": "Grabaciones", "Refresh": "Refrescar", - "RefreshMetadata": "Actualizar metadatos", + "RefreshMetadata": "Actualizar etiquetas", "RefreshQueued": "Actualización programada.", "ReleaseDate": "Fecha de lanzamiento", "RememberMe": "Recuérdame", @@ -1058,7 +1058,7 @@ "RepeatEpisodes": "Repetir episodios", "RepeatMode": "Modo de repetición", "RepeatOne": "Repetir uno", - "ReplaceAllMetadata": "Reemplazar todos los metadatos", + "ReplaceAllMetadata": "Reemplazar todas las etiquetas", "ReplaceExistingImages": "Reemplazar imágenes existentes", "RequiredForAllRemoteConnections": "Requerido para todas las conexiones remotas", "ResumeAt": "Continuar desde {0}", @@ -1074,8 +1074,8 @@ "Screenshot": "Captura de pantalla", "Screenshots": "Capturas de pantalla", "Search": "Buscar", - "SearchForCollectionInternetMetadata": "Buscar en internet ilustraciones y metadatos", - "SearchForMissingMetadata": "Buscar metadatos faltantes", + "SearchForCollectionInternetMetadata": "Buscar en internet imágenes y etiquetas", + "SearchForMissingMetadata": "Buscar etiquetas que falten", "SearchForSubtitles": "Búsqueda de subtítulos", "SearchResults": "Resultados de la búsqueda", "SendMessage": "Enviar mensaje", @@ -1096,7 +1096,7 @@ "Shows": "Series", "Shuffle": "Mezclar", "SimultaneousConnectionLimitHelp": "Número máximo de transmisiones simultáneas permitidas. Pon 0 para no tener límite.", - "SkipEpisodesAlreadyInMyLibrary": "No grabar episodios que ya están en mi librería", + "SkipEpisodesAlreadyInMyLibrary": "No grabar episodios que ya están en mi biblioteca", "SkipEpisodesAlreadyInMyLibraryHelp": "Los episodios serán comparados usando el número de temporada y de episodio, cuando estén disponibles.", "Small": "Pequeño", "Smart": "Inteligente", @@ -1134,7 +1134,7 @@ "TabLatest": "Novedades", "TabLibrary": "Biblioteca", "TabLiveTV": "Televisión en directo", - "TabMetadata": "Metadatos", + "TabMetadata": "Etiquetas", "TabMovies": "Películas", "TabMusic": "Música", "TabMusicVideos": "Videos musicales", @@ -1236,7 +1236,7 @@ "Banner": "Pancarta", "BurnSubtitlesHelp": "Determina si el servidor debería incrustar los subtítulos al convertir el vídeo dependiendo del formato de los subtítulos. Evitar incrustar los subtítulos mejorará el rendimiento del servidor. Selecciona Auto para incrustar subtítulos basados en imágenes (VOBSUB, PGS, SUB/IDX, etc.) y algunos subtítulos de tipo ASS/SSA.", "ButtonInfo": "Información", - "ChangingMetadataImageSettingsNewContent": "Los cambios a la configuración de descarga de metadatos o arte sólo se aplicará al nuevo contenido añadido a la biblioteca. Para aplicar los cambios a los títulos existentes, necesitarás actualizar los metadatos manualmente.", + "ChangingMetadataImageSettingsNewContent": "Los cambios a la configuración de descarga de etiquetas e imágenes sólo se aplicará al nuevo contenido que se añada a la biblioteca. Para aplicar los cambios a los elementos existentes necesitarás actualizar las etiquetas manualmente.", "ColorPrimaries": "Colores primarios", "ColorSpace": "Espacio de color", "ColorTransfer": "Transferencia de color", @@ -1257,7 +1257,7 @@ "DisplayMissingEpisodesWithinSeasons": "Mostrar episodios ausentes en las temporadas", "DisplayMissingEpisodesWithinSeasonsHelp": "Esto también debe ser habilitado para la biblioteca de TV en la configuración del servidor.", "DropShadow": "Sombra", - "EditMetadata": "Editar metadatos", + "EditMetadata": "Editar etiquetas", "EnableBackdrops": "Imágenes de fondo", "EnableBackdropsHelp": "Mostrar imágenes de fondo en algunas páginas mientras se explora la biblioteca.", "EnableColorCodedBackgrounds": "Fondos con código de colores", @@ -1401,7 +1401,7 @@ "PlayCount": "Reproducciones", "Premiere": "Estreno", "Raised": "Elevación", - "RefreshDialogHelp": "Los metadatos se actualizan basados en las configuraciones y los servicios de internet habilitados en el panel del servidor Jellyfin.", + "RefreshDialogHelp": "Las etiquetas se actualizan basándose en las configuraciones y los servicios de internet activados desde el panel de control de Jellyfin.", "RestartPleaseWaitMessage": "Por favor, espera mientras el servidor Jellyfin se reinicia. Esto puede tardar un minuto o dos.", "RunAtStartup": "Ejecutar al iniciar", "Series": "Series", @@ -1460,5 +1460,6 @@ "HeaderFavoritePeople": "Personas favoritas", "OptionRandom": "Aleatorio", "SelectAdminUsername": "Por favor seleccione un nombre de usuario para la cuenta de administrador.", - "ButtonSplit": "Dividir" + "ButtonSplit": "Dividir", + "HeaderNavigation": "Navegación" } From e2ac37996c688afc5c27c61e4199bb29cd99133f Mon Sep 17 00:00:00 2001 From: NunzioArdi Date: Mon, 27 Jan 2020 12:16:25 +0000 Subject: [PATCH 086/105] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 77c270c3a1..c4dfa80534 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1454,5 +1454,6 @@ "HeaderFavoritePeople": "Personnes préférées", "OptionRandom": "Aléatoire", "ButtonSplit": "Séparer", - "SelectAdminUsername": "Veuillez choisir un nom d'utilisateur pour le compte administrateur." + "SelectAdminUsername": "Veuillez choisir un nom d'utilisateur pour le compte administrateur.", + "HeaderNavigation": "Navigation" } From 2657d9aeda351706e941787e5c75cedf5bc33a5f Mon Sep 17 00:00:00 2001 From: SaddFox Date: Sun, 26 Jan 2020 23:30:29 +0000 Subject: [PATCH 087/105] Translated using Weblate (Slovenian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sl/ --- src/strings/sl-si.json | 51 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index d0f5404c1f..05db2ee3e9 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -1069,5 +1069,54 @@ "Never": "Nikoli", "ServerUpdateNeeded": "Jellyfin strežnik je potrebno posodobiti. Za prenos najnovejše različice prosimo obiščite {0}", "LatestFromLibrary": "Najnovejši {0}", - "LabelScheduledTaskLastRan": "Nazadnje zagnano {0}. Čas trajanja {1}." + "LabelScheduledTaskLastRan": "Nazadnje zagnano {0}. Čas trajanja {1}.", + "OptionRandom": "Naključno", + "OptionProtocolHttp": "HTTP", + "OptionProfilePhoto": "Slika", + "OptionProfileAudio": "Zvok", + "OptionPremiereDate": "Datum premiere", + "OptionOnInterval": "V intervalu", + "OptionOnAppStartup": "Ob zagonu aplikacije", + "OptionNew": "Novo...", + "OptionMonday": "Ponedeljek", + "OptionMissingEpisode": "Manjkajoče epizode", + "OptionLoginAttemptsBeforeLockoutHelp": "Vrednost nič (0) pomeni 3 poskuse za običajne uporabnike in 5 za skrbnike. Nastavite na -1 za onemogočanje te funkcije.", + "OptionLoginAttemptsBeforeLockout": "Določa število spodletelih poskusov prijave pred zaklenitvijo uporabnika.", + "OptionIsSD": "SD", + "OptionIsHD": "HD", + "OptionImdbRating": "IMDb ocena", + "OptionHomeVideos": "Slike", + "OptionHideUser": "Skrij tega uporabnika z vstopne strani", + "OptionHasTrailer": "Napovednik", + "OptionFriday": "Petek", + "OptionEveryday": "Vsak dan", + "OptionEnableAutomaticServerUpdates": "Omogoči samodejno posodabljanje strežnika", + "OptionDvd": "DVD", + "OptionDownloadMenuImage": "Meni", + "OptionDownloadLogoImage": "Logotip", + "OptionDownloadImagesInAdvanceHelp": "Privzeto se večina slik prenese šele, ko jih zahtevajo aplikacije. Omogočite to možnost za prenos slik vnaprej, pri uvozu predstavnosti. To lahko občutno podaljša preiskovanje knjižnice.", + "OptionDownloadImagesInAdvance": "Prenesi slike vnaprej", + "OptionAllowSyncTranscoding": "Dovoli prenašanje in sinhronizacijo predstavnosti ki zahteva pretvarjanje", + "OptionAllowRemoteControlOthers": "Dovoli daljinsko upravljanje drugih uporabnikov", + "OptionAllowLinkSharingHelp": "Deljene so zgolj spletne strani z informacijami o predstavnosti. Predstavnostne datoteke niso nikoli javno deljene. Deljene strani so časovno omejene in potečejo po {0} dneh.", + "OptionAllowLinkSharing": "Dovoli deljenje na družbenih omrežjih", + "OptionAllowContentDownloading": "Dovoli prenašanje in sinhronizacijo predstavnosti", + "OptionAllUsers": "Vsi uporabniki", + "OptionAlbumArtist": "Izvajalec albuma", + "OptionAlbum": "Album", + "OptionAdminUsers": "Skrbniki", + "Option3D": "3D", + "NumLocationsValue": "{0} mape", + "NoPluginConfigurationMessage": "Ta dodatek nima nobenih nastavitev.", + "No": "Ne", + "News": "Novice", + "NewEpisodesOnly": "Samo nove epizode", + "NewEpisodes": "Nove epizode", + "NewCollectionNameExample": "Primer: Star Wars zbirka", + "NewCollection": "Nova zbirka", + "Name": "Ime", + "MySubtitles": "Moji podnapisi", + "Mute": "Utišaj", + "MoveLeft": "Premakni levo", + "MoveRight": "Premakni desno" } From 23c6b5daaf27cdad80d554d198ad4b8175007e07 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com> Date: Mon, 27 Jan 2020 16:47:26 +0300 Subject: [PATCH 088/105] Update src/components/appRouter.js Co-Authored-By: Vasily --- src/components/appRouter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/appRouter.js b/src/components/appRouter.js index ad3a6ecd87..7b36d01bdd 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -546,7 +546,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM } /** - * Pages of "no return" (Go back). + * Pages of "no return" (when "Go back" should behave differently, probably quitting the application). */ var startPages = ['home', 'login', 'selectserver']; From df0644251871743205d6a8cf0689dbaacca1d6c5 Mon Sep 17 00:00:00 2001 From: dkanada Date: Mon, 27 Jan 2020 22:54:25 +0900 Subject: [PATCH 089/105] remove missing file from dependency list --- src/scripts/site.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/scripts/site.js b/src/scripts/site.js index 7c3daf015c..9d7757d344 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -878,7 +878,6 @@ var AppInfo = {}; define("toast", [componentsPath + "/toast/toast"], returnFirstDependency); define("scrollHelper", [componentsPath + "/scrollhelper"], returnFirstDependency); define("touchHelper", [componentsPath + "/touchhelper"], returnFirstDependency); - define("userSettingsBuilder", [componentsPath + "/usersettings/usersettingsbuilder", "layoutManager", "browser"], returnFirstDependency); define("imageUploader", [componentsPath + "/imageuploader/imageuploader"], returnFirstDependency); define("htmlMediaHelper", [componentsPath + "/htmlMediaHelper"], returnFirstDependency); define("viewContainer", [componentsPath + "/viewContainer"], returnFirstDependency); From 3aceb5c1b2397167ab9728de5268f4f1ed34d433 Mon Sep 17 00:00:00 2001 From: dkanada Date: Mon, 27 Jan 2020 22:54:52 +0900 Subject: [PATCH 090/105] small fix to input element border radius --- src/elements/emby-input/emby-input.css | 8 +++----- src/themes/appletv/theme.css | 4 ++-- src/themes/blueradiance/theme.css | 4 ++-- src/themes/dark/theme.css | 4 ++-- src/themes/emby/theme.css | 4 ++-- src/themes/light/theme.css | 4 ++-- src/themes/purple-haze/theme.css | 4 ++-- src/themes/wmc/theme.css | 4 ++-- 8 files changed, 17 insertions(+), 19 deletions(-) diff --git a/src/elements/emby-input/emby-input.css b/src/elements/emby-input/emby-input.css index 57a46ec7b6..fae39d26b9 100644 --- a/src/elements/emby-input/emby-input.css +++ b/src/elements/emby-input/emby-input.css @@ -2,14 +2,12 @@ display: block; margin: 0; margin-bottom: 0 !important; - /* Remove select styling */ - /* Font size must the 16px or larger to prevent iOS page zoom on focus */ - font-size: 110%; - /* General select styles: change as needed */ font-family: inherit; font-weight: inherit; padding: .4em .25em; - /* Prevent padding from causing width overflow */ + /* must the 16px or larger to prevent iOS page zoom on focus */ + font-size: 110%; + /* prevent padding from causing width overflow */ box-sizing: border-box; outline: none !important; width: 100%; diff --git a/src/themes/appletv/theme.css b/src/themes/appletv/theme.css index acc7ef8210..c705dcf51a 100644 --- a/src/themes/appletv/theme.css +++ b/src/themes/appletv/theme.css @@ -244,8 +244,8 @@ html { .emby-textarea { color: inherit; background: rgba(255, 255, 255, .9); - border: .07em solid rgba(0, 0, 0, .158); - border-radius: .15em + border: 0.16em solid rgba(0, 0, 0, .158); + border-radius: 0.2em } .emby-input:focus, diff --git a/src/themes/blueradiance/theme.css b/src/themes/blueradiance/theme.css index cd1999702e..51f246d55b 100644 --- a/src/themes/blueradiance/theme.css +++ b/src/themes/blueradiance/theme.css @@ -244,8 +244,8 @@ html { .emby-textarea { color: inherit; background: rgba(0, 0, 0, .5); - border: .07em solid transparent; - border-radius: .15em + border: 0.16em solid transparent; + border-radius: 0.2em } .emby-input:focus, diff --git a/src/themes/dark/theme.css b/src/themes/dark/theme.css index 1bcf3af28f..003dcc8106 100644 --- a/src/themes/dark/theme.css +++ b/src/themes/dark/theme.css @@ -225,8 +225,8 @@ html { .emby-textarea { color: inherit; background: #292929; - border: .07em solid #292929; - border-radius: .15em + border: 0.16em solid #292929; + border-radius: 0.2em } .emby-input:focus, diff --git a/src/themes/emby/theme.css b/src/themes/emby/theme.css index 15c329ce7d..584dbe6637 100644 --- a/src/themes/emby/theme.css +++ b/src/themes/emby/theme.css @@ -225,8 +225,8 @@ html { .emby-textarea { color: inherit; background: #292929; - border: .07em solid #292929; - border-radius: .15em + border: 0.16em solid #292929; + border-radius: 0.2em } .emby-input:focus, diff --git a/src/themes/light/theme.css b/src/themes/light/theme.css index 9f97054f34..932717c35d 100644 --- a/src/themes/light/theme.css +++ b/src/themes/light/theme.css @@ -245,8 +245,8 @@ html { .emby-textarea { color: inherit; background: #fff; - border: .07em solid rgba(0, 0, 0, .158); - border-radius: .15em + border: 0.16em solid rgba(0, 0, 0, .158); + border-radius: 0.2em } .emby-input:focus, diff --git a/src/themes/purple-haze/theme.css b/src/themes/purple-haze/theme.css index fb871b59f5..83bdb2b897 100644 --- a/src/themes/purple-haze/theme.css +++ b/src/themes/purple-haze/theme.css @@ -332,8 +332,8 @@ a[data-role=button] { .emby-textarea { color: inherit; background: rgba(0, 0, 0, .5); - border: .07em solid transparent; - border-radius: .15em + border: 0.16em solid transparent; + border-radius: 0.2em } .emby-input:focus, diff --git a/src/themes/wmc/theme.css b/src/themes/wmc/theme.css index 1f417b1706..c26b8bab3a 100644 --- a/src/themes/wmc/theme.css +++ b/src/themes/wmc/theme.css @@ -225,8 +225,8 @@ html { .emby-textarea { color: inherit; background: rgba(255, 255, 255, .2); - border: .07em solid rgba(255, 255, 255, .135); - border-radius: .15em + border: 0.16em solid rgba(255, 255, 255, .135); + border-radius: 0.2em } .emby-input:focus, From cb04a5aa912c45b6f5a9bc4e4ce48d0d1451fd71 Mon Sep 17 00:00:00 2001 From: Nyanmisaka Date: Tue, 28 Jan 2020 00:58:24 +0800 Subject: [PATCH 091/105] correct canPlayType for hevc level4 --- src/scripts/browserdeviceprofile.js | 35 ++++++----------------------- 1 file changed, 7 insertions(+), 28 deletions(-) diff --git a/src/scripts/browserdeviceprofile.js b/src/scripts/browserdeviceprofile.js index d27a12e142..0acec24aea 100644 --- a/src/scripts/browserdeviceprofile.js +++ b/src/scripts/browserdeviceprofile.js @@ -5,8 +5,8 @@ define(['browser'], function (browser) { return !!(videoTestElement.canPlayType && videoTestElement.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"').replace(/no/, '')); } - function canPlayH265(videoTestElement, protocol) { - if (browser.tizen || browser.orsay || browser.xboxOne || browser.web0s) { + function canPlayH265(videoTestElement, options) { + if (browser.tizen || browser.orsay || browser.xboxOne || browser.web0s || options.supportsHevc) { return true; } @@ -22,23 +22,11 @@ define(['browser'], function (browser) { return false; } - if (protocol === 'hls') { - - //safari seems to be lying about this - if (browser.iOS || browser.safari) { - return false; - } - - return !!videoTestElement.canPlayType && - (videoTestElement.canPlayType('video/mp2t; codecs="hvc1.1.L0.0"').replace(/no/, '') || - videoTestElement.canPlayType('video/mp2t; codecs="hev1.1.L0.0"').replace(/no/, '') || - videoTestElement.canPlayType('video/mp2t; codecs="hev1.1.2.L150"').replace(/no/, '')); - } - return !!videoTestElement.canPlayType && - (videoTestElement.canPlayType('video/mp4; codecs="hvc1.1.L0.0"').replace(/no/, '') || - videoTestElement.canPlayType('video/mp4; codecs="hev1.1.L0.0"').replace(/no/, '') || - videoTestElement.canPlayType('video/mp4; codecs="hev1.1.2.L150"').replace(/no/, '')); + (videoTestElement.canPlayType('video/mp4; codecs="hvc1.1.L120"').replace(/no/, '') || + videoTestElement.canPlayType('video/mp4; codecs="hev1.1.L120"').replace(/no/, '') || + videoTestElement.canPlayType('video/mp4; codecs="hvc1.1.0.L120"').replace(/no/, '') || + videoTestElement.canPlayType('video/mp4; codecs="hev1.1.0.L120"').replace(/no/, '')); } var _supportsTextTracks; @@ -492,18 +480,9 @@ define(['browser'], function (browser) { if (canPlayH265(videoTestElement)) { mp4VideoCodecs.push('h265'); mp4VideoCodecs.push('hevc'); - } - if (canPlayH265(videoTestElement, 'hls')) { - hlsVideoCodecs.push('h265'); - hlsVideoCodecs.push('hevc'); - } - - if (canPlayH265(videoTestElement) && (browser.tizen || browser.web0s)) { - if (hlsVideoCodecs.indexOf('h265') === -1) { + if (browser.tizen || browser.web0s) { hlsVideoCodecs.push('h265'); - } - if (hlsVideoCodecs.indexOf('hevc') === -1) { hlsVideoCodecs.push('hevc'); } } From c60eff507bc11e20c759e7ecc90fb40581fce787 Mon Sep 17 00:00:00 2001 From: Nyanmisaka Date: Tue, 28 Jan 2020 01:04:52 +0800 Subject: [PATCH 092/105] Update browserdeviceprofile.js --- src/scripts/browserdeviceprofile.js | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/scripts/browserdeviceprofile.js b/src/scripts/browserdeviceprofile.js index 0acec24aea..db079b759a 100644 --- a/src/scripts/browserdeviceprofile.js +++ b/src/scripts/browserdeviceprofile.js @@ -749,7 +749,7 @@ define(['browser'], function (browser) { }); } - var maxH264Level = browser.chromecast ? 42 : 51; + var maxH264Level = 42; var h264Profiles = 'high|main|baseline|constrained baseline'; if (browser.tizen || browser.orsay || browser.web0s || @@ -757,14 +757,6 @@ define(['browser'], function (browser) { maxH264Level = 51; } - var userAgent = navigator.userAgent.toLowerCase(); - if (browser.chromecast) { - var isChromecastUltra = userAgent.indexOf('aarch64') !== -1; - if (isChromecastUltra) { - maxH264Level = 51; - } - } - if (browser.tizen || browser.orsay || videoTestElement.canPlayType('video/mp4; codecs="avc1.6e0033"').replace(/no/, '')) { From 86484bc9b491f9b3f71c6587074752615db48c3c Mon Sep 17 00:00:00 2001 From: Nyanmisaka Date: Tue, 28 Jan 2020 01:55:02 +0800 Subject: [PATCH 093/105] Update browserdeviceprofile.js --- src/scripts/browserdeviceprofile.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/scripts/browserdeviceprofile.js b/src/scripts/browserdeviceprofile.js index db079b759a..9d91a691d0 100644 --- a/src/scripts/browserdeviceprofile.js +++ b/src/scripts/browserdeviceprofile.js @@ -253,7 +253,7 @@ define(['browser'], function (browser) { case 'ts': supported = testCanPlayTs(); videoCodecs.push('h264'); - if (canPlayH265(videoTestElement)) { + if (canPlayH265(videoTestElement, options)) { videoCodecs.push('h265'); videoCodecs.push('hevc'); } @@ -477,7 +477,7 @@ define(['browser'], function (browser) { hlsVideoCodecs.push('h264'); } - if (canPlayH265(videoTestElement)) { + if (canPlayH265(videoTestElement, options)) { mp4VideoCodecs.push('h265'); mp4VideoCodecs.push('hevc'); From 28d2985f707e2f5fcfb39494c7d0923aea30216f Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Mon, 27 Jan 2020 21:01:27 +0300 Subject: [PATCH 094/105] Fix usersettings --- src/controllers/user/display.js | 4 ++-- src/controllers/user/home.js | 4 ++-- src/controllers/user/playback.js | 4 ++-- src/controllers/user/subtitles.js | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/controllers/user/display.js b/src/controllers/user/display.js index f348f28750..e3a56e1552 100644 --- a/src/controllers/user/display.js +++ b/src/controllers/user/display.js @@ -1,4 +1,4 @@ -define(["displaySettings", "userSettingsBuilder", "userSettings", "autoFocuser"], function (DisplaySettings, userSettingsBuilder, currentUserSettings, autoFocuser) { +define(["displaySettings", "userSettings", "autoFocuser"], function (DisplaySettings, currentUserSettings, autoFocuser) { "use strict"; return function (view, params) { @@ -11,7 +11,7 @@ define(["displaySettings", "userSettingsBuilder", "userSettings", "autoFocuser"] var settingsInstance; var hasChanges; var userId = params.userId || ApiClient.getCurrentUserId(); - var userSettings = userId === ApiClient.getCurrentUserId() ? currentUserSettings : new userSettingsBuilder(); + var userSettings = userId === ApiClient.getCurrentUserId() ? currentUserSettings : new userSettings(); view.addEventListener("viewshow", function () { window.addEventListener("beforeunload", onBeforeUnload); diff --git a/src/controllers/user/home.js b/src/controllers/user/home.js index 7f12efc7fb..20a42a7dfb 100644 --- a/src/controllers/user/home.js +++ b/src/controllers/user/home.js @@ -1,4 +1,4 @@ -define(["homescreenSettings", "userSettingsBuilder", "dom", "globalize", "loading", "userSettings", "autoFocuser", "listViewStyle"], function (HomescreenSettings, userSettingsBuilder, dom, globalize, loading, currentUserSettings, autoFocuser) { +define(["homescreenSettings", "dom", "globalize", "loading", "userSettings", "autoFocuser", "listViewStyle"], function (HomescreenSettings, dom, globalize, loading, currentUserSettings, autoFocuser) { "use strict"; return function (view, params) { @@ -11,7 +11,7 @@ define(["homescreenSettings", "userSettingsBuilder", "dom", "globalize", "loadin var homescreenSettingsInstance; var hasChanges; var userId = params.userId || ApiClient.getCurrentUserId(); - var userSettings = userId === ApiClient.getCurrentUserId() ? currentUserSettings : new userSettingsBuilder(); + var userSettings = userId === ApiClient.getCurrentUserId() ? currentUserSettings : new userSettings(); view.addEventListener("viewshow", function () { window.addEventListener("beforeunload", onBeforeUnload); diff --git a/src/controllers/user/playback.js b/src/controllers/user/playback.js index 3def9d1931..d0a127efe4 100644 --- a/src/controllers/user/playback.js +++ b/src/controllers/user/playback.js @@ -1,4 +1,4 @@ -define(["playbackSettings", "userSettingsBuilder", "dom", "globalize", "loading", "userSettings", "autoFocuser", "listViewStyle"], function (PlaybackSettings, userSettingsBuilder, dom, globalize, loading, currentUserSettings, autoFocuser) { +define(["playbackSettings", "dom", "globalize", "loading", "userSettings", "autoFocuser", "listViewStyle"], function (PlaybackSettings, dom, globalize, loading, currentUserSettings, autoFocuser) { "use strict"; return function (view, params) { @@ -11,7 +11,7 @@ define(["playbackSettings", "userSettingsBuilder", "dom", "globalize", "loading" var settingsInstance; var hasChanges; var userId = params.userId || ApiClient.getCurrentUserId(); - var userSettings = userId === ApiClient.getCurrentUserId() ? currentUserSettings : new userSettingsBuilder(); + var userSettings = userId === ApiClient.getCurrentUserId() ? currentUserSettings : new userSettings(); view.addEventListener("viewshow", function () { window.addEventListener("beforeunload", onBeforeUnload); diff --git a/src/controllers/user/subtitles.js b/src/controllers/user/subtitles.js index 1f1102194e..8e2dcc8780 100644 --- a/src/controllers/user/subtitles.js +++ b/src/controllers/user/subtitles.js @@ -1,4 +1,4 @@ -define(["subtitleSettings", "userSettingsBuilder", "userSettings", "autoFocuser"], function (SubtitleSettings, userSettingsBuilder, currentUserSettings, autoFocuser) { +define(["subtitleSettings", "userSettings", "autoFocuser"], function (SubtitleSettings, currentUserSettings, autoFocuser) { "use strict"; return function (view, params) { @@ -11,7 +11,7 @@ define(["subtitleSettings", "userSettingsBuilder", "userSettings", "autoFocuser" var subtitleSettingsInstance; var hasChanges; var userId = params.userId || ApiClient.getCurrentUserId(); - var userSettings = userId === ApiClient.getCurrentUserId() ? currentUserSettings : new userSettingsBuilder(); + var userSettings = userId === ApiClient.getCurrentUserId() ? currentUserSettings : new userSettings(); view.addEventListener("viewshow", function () { window.addEventListener("beforeunload", onBeforeUnload); From 21c68e45984aafc262fb2148e2cd6d299aa4d54d Mon Sep 17 00:00:00 2001 From: ManfredRichthofen <46958197+ManfredRichthofen@users.noreply.github.com> Date: Mon, 27 Jan 2020 13:26:34 -0800 Subject: [PATCH 095/105] Update src/elements/emby-input/emby-input.css Co-Authored-By: Julien Machiels --- src/elements/emby-input/emby-input.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/elements/emby-input/emby-input.css b/src/elements/emby-input/emby-input.css index 20d2a40826..683498455b 100644 --- a/src/elements/emby-input/emby-input.css +++ b/src/elements/emby-input/emby-input.css @@ -22,7 +22,7 @@ } .emby-input:required { - box-shadow:none; + box-shadow: none; } .inputContainer { From 9ac45e140d294537815aca78ee9d13024ce48652 Mon Sep 17 00:00:00 2001 From: Pooka Mustard Date: Mon, 27 Jan 2020 21:48:57 +0000 Subject: [PATCH 096/105] Translated using Weblate (Arabic) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ar/ --- src/strings/ar.json | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/strings/ar.json b/src/strings/ar.json index 0adf5e045b..a1bcb8c630 100644 --- a/src/strings/ar.json +++ b/src/strings/ar.json @@ -92,7 +92,7 @@ "CinemaModeConfigurationHelp": "الطور السينمائي يوفر أجواء سينمائية إلى قلب صالتك مع إمكانية تشغيل عروض إعلانية لأفلام أخرى وعرض مقدمات أخرى من انتقاءاتك قبل تشغيل الفيلم الرئيسي.", "CustomDlnaProfilesHelp": "إنشاء عرائض مخصوصه تستهدف جهازاً جديداً أو يمتطي حساباً نظامياً.", "DeathDateValue": "توفي: {0}", - "DefaultErrorMessage": "كان هناك خطأ في معالجة الطلب. الرجاء المحاولة لاحقاً", + "DefaultErrorMessage": "كان هناك خطأ في معالجة الطلب. الرجاء المحاولة لاحقاً.", "Delete": "حذف", "DeleteDeviceConfirmation": "هل أنت متأكد أنك تريد حذف هذا الجهاز؟ سيظهر الجهاز من جديد في المرة القادمة التي يسجل فها مستخدم دخوله عبره.", "DeleteImage": "حذف صورة", @@ -103,13 +103,13 @@ "DeviceAccessHelp": "هذه الميزة تنطبق حصرياً على الأجهزة التي يمكن التعرف عليها فردياً ولن تمنع المتصفح من الدخول عليها. ترشيح الوصول لأجهزة المستخدم ستمنع المستخدمين من استعمال الأجهزة الجديدة إلى أن يتم اعتمادهم من هنا.", "DrmChannelsNotImported": "القنوات المجهزة بإدارة الحقوق الرقمية DRM لن تورّد.", "EasyPasswordHelp": "الرمز الشخصي الميسرالخاص بك يمكنك من الاتصال إلى خادم مكتبتك، عبر تطبيقات أمبي على الأجهزة أو الدخول على حسابك في الشبكة الداخلية.", - "EnablePhotos": "تفعيل الصور", + "EnablePhotos": "عرض الصور", "EnablePhotosHelp": "سيتم اكتشاف الصور وعرضها مع ملفات الوسائط الأخرى", "ErrorAddingListingsToSchedulesDirect": "كان هناك خطأ في إضافة الاصطفاف لخدمة \"Schedules Direct\" الخاصة بك. خدمة \"Schedules Direct\" لا تسمح إلا بعدد محدود من الاصطفافات لكل حساب. قد تحتاج إلى تسجيل الدخول إلى موقع \"Schedules Direct\" لإزالة الاصطفافات الأخرى من حسابك قبل المتابعة.", "ErrorAddingMediaPathToVirtualFolder": "كان هناك خطأ في إضافة مسار الوسائط. الرجاء التأكد من صحة المسار وأن خادم أمبي لديه صلاحية الوصول إلى الموقع.", "ErrorAddingTunerDevice": "كان هناك خطأ في إضافة جهاز المولف. الرجاء التأكد من صلاحية الوصول إليه ثم عاود المحاولة.", - "ErrorAddingXmlTvFile": "كان هناك خطأ في محاولة الوصول إلى ملف XmlTV . الرجاء التأكد من وجود الملف ثم حاول مرة أخرى.", - "ErrorGettingTvLineups": "كان هناك خطأ في إنزال اصطفافات التلفزة. الرجاء التأكد من أن بياناتك صحيحة ثم عاود المحاولة.", + "ErrorAddingXmlTvFile": "كان هناك خطأ في محاولة الوصول إلى ملف XMLTV. الرجاء التأكد من وجود الملف ثم حاول مرة أخرى.", + "ErrorGettingTvLineups": "كان هناك خطأ في إنزال اصطفافات التلفاز. الرجاء التأكد من أن بياناتك صحيحة ثم عاود المحاولة.", "ErrorMessageStartHourGreaterThanEnd": "وقت النهاية يجب أن يكون أكبر من وقت البداية.", "ErrorPleaseSelectLineup": "الرجاء اختيار اصطفاف ثم المحاولة مرة أخرى. إن لم تتوفر أية اصطفافات، فالرجاء التأكد من اسم المستخدم وكلمة المرور الخاصة بك، وتأكد من صحة رمزك البريدي.", "ErrorSavingTvProvider": "كان هناك خطأ في حفظ مزود التلفزة. الرجاء التأكد من صلاحية الوصول إليه ثم عاود المحاولة.", @@ -195,7 +195,7 @@ "HeaderGuideProviders": "مزودو الأدلة", "HeaderHttpHeaders": "رؤوس http", "HeaderIdentification": "التعريفة", - "HeaderIdentificationCriteriaHelp": "أدخل على الأقل معيار واحد للتعريف", + "HeaderIdentificationCriteriaHelp": "أدخل على الأقل معيار واحد للتعريف.", "HeaderIdentificationHeader": "رأس التعريفة", "HeaderImageOptions": "خيارات الصورة", "HeaderImageSettings": "إعدادات الصورة", @@ -946,7 +946,7 @@ "AuthProviderHelp": "حدد مقدم المصادقات ليتم استخدامه لمصادقة كلمة مرور هذا المستخدم.", "AroundTime": "حول", "AttributeNew": "جديد", - "AspectRatio": "نسبة العرض على الارتفاع", + "AspectRatio": "نسبة العرض الى الارتفاع", "Ascending": "تصاعدي", "AsManyAsPossible": "أكبر عدد ممكن", "Artists": "الفنان", @@ -957,7 +957,7 @@ "AlwaysPlaySubtitles": "شغل الترجمة دائماً", "AllowedRemoteAddressesHelp": "قائمة لعناوين IP أو إدخالات IP / قناع الشبكة مفصولة بفاصلة للشبكات التي سيتم السماح لها بالاتصال عن بعد. إذا تركت فارغة ، فسيتم السماح بجميع العناوين البعيدة.", "AllowOnTheFlySubtitleExtractionHelp": "يمكن استخراج الترجمات المدمجة في الفيديو وعرضها على المشاهد بنص عادي للمساعدة في منع تحويل الفيديو. ولكن في بعض الأنظمة ، قد يستغرق هذا وقتًا طويلًا ويتسبب في توقف تشغيل الفيديو أثناء عملية الاستخراج. قم بتعطيل هذا الأمر ليتم حرق ترجمات مضمّنة مع تحويل الفيديو عندما لا تكون معتمدة من قبل الجهاز العميل.", - "AllowOnTheFlySubtitleExtraction": "السماح بإستخراج الترجمه في الحال.", + "AllowOnTheFlySubtitleExtraction": "السماح بإستخراج الترجمه في الحال", "AllowMediaConversionHelp": "السماح او عدم السماح بالوصول لخاصية تحويل الوسائط.", "AllowMediaConversion": "السماح بتحويل الوسائظ", "AllLanguages": "كل اللغات", @@ -974,5 +974,18 @@ "Add": "أضف", "Actor": "ممثل", "AccessRestrictedTryAgainLater": "الوصول مقيد حاليًا. الرجاء معاودة المحاولة في وقت لاحق.", - "Absolute": "مطلق" + "Absolute": "مطلق", + "Ended": "انتهى", + "EndsAtValue": "ينتهى عند {0}", + "Episodes": "الحلقات", + "ConfirmDeletion": "تأكيد الحذف", + "ConfirmDeleteItems": "سوف يتم حذف هذه العناصر من نظام الملفات ومن مكتبة الوسائط. هل ترغب فى الاستمرار؟", + "EveryNDays": "كل {0} يوم", + "ConfirmDeleteItem": "سوف يتم حذف هذا العنصر من نظام الملفات ومن مكتبة الوسائط. هل ترغب فى الاستمرار؟", + "DropShadow": "اسقاط ظل", + "LabelDropShadow": "اسقاط الظل:", + "EditSubtitles": "تعديل الترجمات", + "EditMetadata": "تعديل البيانات الوصفية", + "EditImages": "تعديل الصور", + "Edit": "تعديل" } From 9df2d1bc379954146c369cd8c8e043eb6014912d Mon Sep 17 00:00:00 2001 From: Benjamin Risse Date: Mon, 27 Jan 2020 22:23:02 +0000 Subject: [PATCH 097/105] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/strings/de.json b/src/strings/de.json index d9b40800b0..0a6c95ef25 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -636,7 +636,7 @@ "LabelMaxChromecastBitrate": "Max Chromcast Datenrate:", "LabelMaxParentalRating": "Höchste erlaubte elterlich Bewertung:", "LabelMaxResumePercentage": "Maximale Prozent für Wiederaufnahme:", - "LabelMaxResumePercentageHelp": "Titel werden als \"vollständig gesehen\" eingetragen, wenn sie nach dieser Zeit gestoppt werden", + "LabelMaxResumePercentageHelp": "Titel werden als \"vollständig gesehen\" markiert, wenn sie nach dieser Zeitmarke gestoppt werden", "LabelMaxScreenshotsPerItem": "Maximale Anzahl von Screenshots pro Element:", "LabelMaxStreamingBitrate": "Maximale Streaming-Qualität:", "LabelMaxStreamingBitrateHelp": "Wähle die maximale Bitrate während des streamens.", @@ -654,9 +654,9 @@ "LabelMethod": "Methode:", "LabelMinBackdropDownloadWidth": "Minimale Breite für zu herunterladende Hintergründe:", "LabelMinResumeDuration": "Minimale Dauer für Wiederaufnahme:", - "LabelMinResumeDurationHelp": "Die kürzeste Videolänge in Sekunden, die den Wiedergabeplatz speichert und dich fortsetzen lässt", + "LabelMinResumeDurationHelp": "Die Videolänge in Sekunden, ab der die Wiedergabeposition gespeichert wird und dich fortsetzen lässt", "LabelMinResumePercentage": "Minimale Prozent für Wiederaufnahme:", - "LabelMinResumePercentageHelp": "Titel werden als \"Ungesehen\" eingetragen, wenn sie vor dieser Zeit gestoppt werden", + "LabelMinResumePercentageHelp": "Titel werden als \"Ungesehen\" eingetragen, wenn sie vor dieser Zeit gestoppt werden.", "LabelMinScreenshotDownloadWidth": "Minimale Breite für zu herunterladende Screenshot:", "LabelModelDescription": "Modellbeschreibung", "LabelModelName": "Modellname", @@ -1325,7 +1325,7 @@ "LabelVersion": "Version:", "LabelVersionNumber": "Version {0}", "LabelVideo": "Video:", - "LeaveBlankToNotSetAPassword": "Optional - frei lassen um kein Passwort zu setzen", + "LeaveBlankToNotSetAPassword": "Du kannst dieses Feld frei lassen um kein Passwort zu setzen", "LinksValue": "Links: {0}", "MessageImageFileTypeAllowed": "Nur JPEG- und PNG-Dateien werden unterstützt.", "MessageImageTypeNotSelected": "Bitte wähle einen Bildtyp aus dem Drop-Down Menü aus.", @@ -1417,7 +1417,7 @@ "LabelUserLoginAttemptsBeforeLockout": "Fehlgeschlagene Anmeldeversuche, bevor der Benutzer gesperrt wird:", "DashboardVersionNumber": "Version: {0}", "DashboardServerName": "Server: {0}", - "LabelWeb": "Web: ", + "LabelWeb": "Web:", "MediaInfoSoftware": "Software", "MediaInfoStreamTypeAudio": "Audio", "MediaInfoStreamTypeData": "Daten", @@ -1459,7 +1459,7 @@ "MusicAlbum": "Musikalbum", "MoreMediaInfo": "Medieninformation", "MessageNoServersAvailable": "Die automatische Serversuche konnte keinen Server finden.", - "LabelPlayer": "Player:", + "LabelPlayer": "Schauspieler:", "MediaInfoCodecTag": "Codec Tag", "SubtitleOffset": "Untertitelvorlauf", "PlaybackData": "Wiedergabeinformationen", @@ -1474,5 +1474,7 @@ "OptionRandom": "Zufällig", "TabNetworking": "Netzwerk", "VideoRange": "Videobereich", - "ButtonSplit": "Teilen" + "ButtonSplit": "Teilen", + "SelectAdminUsername": "Bitte einen Benutzernamen für das Administrator-Konto auswählen.", + "HeaderNavigation": "Navigation" } From 5df8202d7d104792a40481e5fce3629344ed0361 Mon Sep 17 00:00:00 2001 From: diegoalrey Date: Tue, 28 Jan 2020 21:12:36 +0000 Subject: [PATCH 098/105] Added translation using Weblate (Galician) --- src/strings/gl.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/strings/gl.json diff --git a/src/strings/gl.json b/src/strings/gl.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/src/strings/gl.json @@ -0,0 +1 @@ +{} From 02c820de5bbcd4ef5cca3310425f0d55fd07c67a Mon Sep 17 00:00:00 2001 From: ferferga Date: Wed, 29 Jan 2020 08:38:56 +0100 Subject: [PATCH 099/105] Remove unnecessary check --- src/components/playback/mediasession.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/components/playback/mediasession.js b/src/components/playback/mediasession.js index 65b5ebcf80..c03420c85a 100644 --- a/src/components/playback/mediasession.js +++ b/src/components/playback/mediasession.js @@ -97,11 +97,8 @@ define(['playbackManager', 'nowPlayingHelper', 'events', 'connectionManager'], f } function updatePlayerState(player, state, eventName) { - var now = new Date().getTime(); - lastUpdateTime = now; - // Don't go crazy reporting position changes - if (eventName == 'timeupdate' && (now - lastUpdateTime) < 5000) { + if (eventName == 'timeupdate') { // Only report if this item hasn't been reported yet, or if there's an actual playback change. // Don't report on simple time updates return; From ae8f3b74c228b12e2792c832f2a9f42d7b741028 Mon Sep 17 00:00:00 2001 From: Pooka Mustard Date: Tue, 28 Jan 2020 19:01:37 +0000 Subject: [PATCH 100/105] Translated using Weblate (Arabic) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ar/ --- src/strings/ar.json | 70 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 61 insertions(+), 9 deletions(-) diff --git a/src/strings/ar.json b/src/strings/ar.json index a1bcb8c630..6fef90c404 100644 --- a/src/strings/ar.json +++ b/src/strings/ar.json @@ -220,7 +220,7 @@ "HeaderMovies": "الأفلام", "HeaderMusicVideos": "الفيديوهات الموسيقية", "HeaderMyMedia": "وسائطي", - "HeaderNewApiKey": "مفتاح api جديد", + "HeaderNewApiKey": "مفتاح API جديد", "HeaderNextUp": "التالي", "HeaderOtherItems": "عناصر أخرى", "HeaderParentalRatings": "التصنيف الأبوي", @@ -295,7 +295,7 @@ "HeaderXmlDocumentAttributes": "سمات مستند xml", "HeaderXmlSettings": "إعدادات xml", "HeaderYears": "السنوات", - "HeadersFolders": "مجلد:", + "HeadersFolders": "مجلدات", "ImportFavoriteChannelsHelp": "عند التفعيل، فقط القنوات التي علّمت في المفضلة على هذا المولف ستورد إلى النظام.", "ImportMissingEpisodesHelp": "عند التمكين، المعلومات الناقصة للحلقات ستورّد إلى قاعدة بيانات أمبي وستعرض داخل المواسم والمسلسلات. قد تتسبب هذه بأوقات أطول بكثير عند تمشيط المكنبات.", "LabelAbortedByServerShutdown": "(تم إهماله بسبب عملية إغلاق الخادم)", @@ -587,7 +587,7 @@ "MediaInfoSampleRate": "معدًل الإعتيان", "MediaInfoSize": "حجم", "MediaInfoTimestamp": "البصمة الزمنية", - "MessageAlreadyInstalled": "هذا الإصدار تم تثبيته مسبقاً", + "MessageAlreadyInstalled": "هذا الإصدار تم تثبيته مسبقاً.", "MessageAreYouSureYouWishToRemoveMediaFolder": "هل أنت متأكد أنك تريد إزالة مجلد الوسائط هذا؟", "MessageConfirmDeleteGuideProvider": "هل أنت متأكد أنك ترغب في حذف مزود الدليل هذا؟", "MessageConfirmDeleteTunerDevice": "هل أنت متأكد أنك تريد حذف هذا المولف؟", @@ -595,22 +595,22 @@ "MessageConfirmRemoveMediaLocation": "هل أنت متأكد أنك تريد حذف هذا المكان؟", "MessageConfirmRestart": "هل أنت متأكد أنك تريد أن تعيد تشغيل خادم أمبي؟", "MessageConfirmRevokeApiKey": "هل أنت متأكد من أنك تريد أن ترفض المفتاح (api) هذا؟ سيتم قطع اتصال التطبيق عن خادم أمبي مباشرة.", - "MessageConfirmShutdown": "هل أنت متأكد أنك تريد أن تنهي تشغيل خادم أمبي؟", + "MessageConfirmShutdown": "هل أنت متأكد أنك تريد أن تنهي تشغيل الخادم؟", "MessageContactAdminToResetPassword": "الرجاء التواصل مع مدير النظام لإعادة أعداد كملة سرّك.", "MessageCreateAccountAt": "أنشئ حساب في {0}", "MessageDeleteTaskTrigger": "هل أنت متأكد أنك تريد حذف زناد المهمة؟", "MessageDirectoryPickerBSDInstruction": "من أجل BSD، يمكنك أن تضبط إعدادات التخزين دخال حساب FreeNAS Jail الخاص بك لكي يتمكن أمبي أن يتصل به.", "MessageDirectoryPickerInstruction": "يمكن إدخال مسارات الشبكة يدوياً في حال أن زر الشبكة يخفق في اكتشاف أجهزتك. على سبيل المثال، {0} أو {1}.", - "MessageDirectoryPickerLinuxInstruction": "من أجل أنظمة التشغيل التالية: Linux أو Arch Linux أو CentOS أو Debian أو Fedora أو OpenSuse أو Ubuntu، فيجب أن تمنح مستخدم أمبي النظامي صلاحية القراءة ليتمكن من الوصول إلى أماكن التخزين.", + "MessageDirectoryPickerLinuxInstruction": "من أجل أنظمة التشغيل التالية: Linux أو Arch Linux أو CentOS أو Debian أو Fedora أو openSUSE أو Ubuntu، يجب أن تمنح المستخدم النظامي صلاحية القراءة ليتمكن من الوصول إلى أماكن التخزين.", "MessageEnablingOptionLongerScans": "قد يؤدي تمكين هذا الخيار إلى إبطاء البحث في المكتبات بشكل ملحوظ.", - "MessageFileReadError": "حصل خطأ أثناء قراءة الملف", + "MessageFileReadError": "حصل خطأ أثناء قراءة الملف. الرجاء المحاولة مرة اخرى.", "MessageForgotPasswordFileCreated": "الملف التالي قد أنشيء على خادمك وهو يحتوي على التوجيهات لكيفية البدء:", "MessageForgotPasswordInNetworkRequired": "الرجاء المحاولة من خلال شبكة المنزل لبدء عملية إعادة إعداد كملة السر.", "MessageInstallPluginFromApp": "هذا الملحق يجب أن يثبت من داخل التطبيق الذي تريد استخدامه بداخله.", "MessageInvalidForgotPasswordPin": "لقد تم إدخال رمز شخصي غير صحيح أو منتهي الصلاحية. الرجاء المحاولة مرة أخرى.", "MessageInvalidUser": "اسم المستخدم أو كلمة السر غير صحيحة. الرجاء المحاولة مرة أخرى.", "MessageItemSaved": "تم حفظ العنصر.", - "MessageItemsAdded": "العناصر المضافة", + "MessageItemsAdded": "تم اضافة العناصر.", "MessageNoAvailablePlugins": "لا توجد أي ملحقات.", "MessageNoMovieSuggestionsAvailable": "لا يوجد حالياً اقتراحات افلام. إبداً بمشاهدة وتقييم الأفلام ثم عاود زيارة هذه الصفحة لمشاهدة المقترحات.", "MessageNoPluginsInstalled": "ليس عندك أي ملحقات مثبتة.", @@ -971,7 +971,7 @@ "AddToPlaylist": "أضف لقائمة", "AddToPlayQueue": "أضف لقائمة التشغيل", "AddToCollection": "أضف للمجموعة", - "Add": "أضف", + "Add": "إضافة", "Actor": "ممثل", "AccessRestrictedTryAgainLater": "الوصول مقيد حاليًا. الرجاء معاودة المحاولة في وقت لاحق.", "Absolute": "مطلق", @@ -987,5 +987,57 @@ "EditSubtitles": "تعديل الترجمات", "EditMetadata": "تعديل البيانات الوصفية", "EditImages": "تعديل الصور", - "Edit": "تعديل" + "Edit": "تعديل", + "ManageRecording": "ادارة التسجيل", + "ManageLibrary": "ادارة المكتبة", + "MessageImageTypeNotSelected": "الرجاء اختيار نوع الصورة من القائمة المنسدلة.", + "MessageImageFileTypeAllowed": "ملفات JPEG و PNG مدعومون فقط.", + "MessageDownloadQueued": "تمت إضافة التحميل إلى قائمة الانتظار.", + "MessageConfirmRecordingCancellation": "الغاء التسجيل؟", + "MessageAreYouSureDeleteSubtitles": "هل انت متأكد انك تريد حذف ملف الترجمة هذا؟", + "Menu": "القائمة", + "MediaInfoStreamTypeSubtitle": "الترجمة", + "MediaInfoStreamTypeEmbeddedImage": "الصورة المضمنة", + "MediaInfoStreamTypeData": "البيانات", + "MediaInfoStreamTypeAudio": "الصوت", + "MediaInfoSoftware": "البرمجيات", + "MediaIsBeingConverted": "يتم تحويل الوسط الى صيغة متوافقة مع الحهاز الذي يشغل الوسط.", + "MediaInfoStreamTypeVideo": "فيديو", + "ContinueWatching": "اكمل المشاهدة", + "Horizontal": "عرضي", + "Home": "الصفحة الرئيسية", + "HideWatchedContentFromLatestMedia": "اخفاء المحتوى الذي تمت مشاهدته من احدث الوسائط", + "Hide": "اخفاء", + "Help": "المساعدة", + "HeaderVideoType": "نوع الفيديو", + "HeaderVideoQuality": "جودة الفيديو", + "HeaderSubtitleDownloads": "تحميلات الترجمة", + "HeaderSubtitleAppearance": "شكل الترجمة", + "HeaderStopRecording": "اوقف التسجيل", + "HeaderStartNow": "شغل الآن", + "HeaderSeriesStatus": "حالة المسلسل", + "HeaderSeriesOptions": "اعدادات المسلسل", + "HeaderSecondsValue": "{0} ثوانى", + "HeaderRestartingServer": "اعادة تشغيل الخادم", + "HeaderRecordingOptions": "اعدادات التسجيل", + "HeaderPlaybackError": "خطأ فى التشغيل", + "HeaderPlayOn": "شغل على", + "HeaderPhotoAlbums": "البومات الصور", + "HeaderOnNow": "الآن", + "HeaderNextVideoPlayingInValue": "سيتم تشغيل الفيديو القادم فى {0}", + "HeaderNextEpisodePlayingInValue": "سيتم تشغيل الحلقة القادمة فى {0}", + "HeaderNewDevices": "الاجهزة الجديدة", + "HeaderNavigation": "التنقل", + "HeaderMyMediaSmall": "وسائطى (العرض الصغير)", + "HeaderMyDevice": "جهازى", + "HeaderMusicQuality": "جودة الموسيقي", + "HeaderMetadataSettings": "اعدادات البيانات الوصفية", + "HeaderLiveTvTunerSetup": "اعداد موالف التلفاز المباشر", + "HeaderLibrarySettings": "اعدادات المكتبة", + "HeaderLibraryOrder": "ترتيب المكتبة", + "HeaderKodiMetadataHelp": "لتشغيل او اطفاء البيانات الوصفية بصيغة NFO، عدل احد المكتبات فى اعدادات المكتبات واوجد قسم حافظات البيانات الوصفية.", + "EnableNextVideoInfoOverlay": "عرض معلومات الفيديو القادم اثناء التشغيل", + "DatePlayed": "تاريخ التشغيل", + "DateAdded": "تاريخ الاضافة", + "CriticRating": "تقييم النقاد" } From effd0f1a0b7efdec8e64f3558b7fc49ea8dfc8cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Libor=20Fil=C3=ADpek?= Date: Tue, 28 Jan 2020 23:37:09 +0000 Subject: [PATCH 101/105] Translated using Weblate (Czech) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cs/ --- src/strings/cs.json | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/strings/cs.json b/src/strings/cs.json index aa2ed1a485..14d2aa4874 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1063,7 +1063,7 @@ "Repeat": "Opakovat", "RepeatAll": "Opakovat vše", "RepeatEpisodes": "Opakovaní epizod", - "RepeatMode": "Mód opakování", + "RepeatMode": "Režim opakování", "RepeatOne": "Opakovat jeden", "ReplaceAllMetadata": "Přepsat všechna metadata", "ReplaceExistingImages": "Nahradit existující obrázky", @@ -1427,7 +1427,7 @@ "LabelUserLoginAttemptsBeforeLockout": "Neúspěšné pokusy o přihlášení před uzamčením uživatele:", "DashboardVersionNumber": "Verze: {0}", "DashboardServerName": "Server: {0}", - "LabelWeb": "Web: ", + "LabelWeb": "Web:", "MediaInfoStreamTypeEmbeddedImage": "Vložený obrázek", "MediaInfoStreamTypeSubtitle": "Titulky", "MediaIsBeingConverted": "Média se konvertují do formátu kompatibilního se zařízením, které médium přehrává.", @@ -1555,5 +1555,8 @@ "CopyStreamURL": "Kopírovat URL adresu streamu", "ButtonAddImage": "Přidat obrázek", "HeaderFavoritePeople": "Oblíbení lidé", - "OptionRandom": "Náhodně" + "OptionRandom": "Náhodně", + "SelectAdminUsername": "Vyberte uživatelské jméno pro účet správce.", + "HeaderNavigation": "Navigace", + "ButtonSplit": "Rozdělit" } From 4f1ca80515902cec6765f0ac5ad84e7047084b5c Mon Sep 17 00:00:00 2001 From: WWWesten Date: Tue, 28 Jan 2020 18:46:33 +0000 Subject: [PATCH 102/105] Translated using Weblate (Russian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ru/ --- src/strings/ru.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/strings/ru.json b/src/strings/ru.json index b03a5a90c1..2e01ee9ff9 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -1396,7 +1396,7 @@ "DashboardServerName": "Сервер: {0}", "DashboardOperatingSystem": "Операционная система: {0}", "DashboardArchitecture": "Архитектура: {0}", - "LabelWeb": "Веб: ", + "LabelWeb": "Веб:", "LaunchWebAppOnStartup": "Запустить веб-интерфейс при запуске Jellyfin Server", "LaunchWebAppOnStartupHelp": "Открывается веб-клиент в браузере по умолчанию при начальном запуске сервера. Это не произойдет при использовании функции перезапуска сервера.", "MediaInfoSoftware": "ПО", @@ -1452,5 +1452,7 @@ "ButtonAddImage": "Добавить рисунок", "HeaderFavoritePeople": "Избранные люди", "OptionRandom": "Случайный", - "ButtonSplit": "Разделить" + "ButtonSplit": "Разделить", + "SelectAdminUsername": "Выберите имя пользователя для учётной записи администратора.", + "HeaderNavigation": "Навигация" } From 261089fb00705f51b538f9707e4e13d17b343f7a Mon Sep 17 00:00:00 2001 From: vortexnix Date: Wed, 29 Jan 2020 16:07:04 +0000 Subject: [PATCH 103/105] Translated using Weblate (Hindi) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hi/ --- src/strings/hi-in.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/strings/hi-in.json b/src/strings/hi-in.json index 38674eff00..ad40c3ec53 100644 --- a/src/strings/hi-in.json +++ b/src/strings/hi-in.json @@ -13,5 +13,13 @@ "UserProfilesIntro": "एम्बि में उपयोगकर्ता प्रोफाइल अन्तर्निहित मौजूद है, जो हर उपयोगकर्ता को अपनी अलग प्रदर्शन सेटिंग्स, प्ले-अवस्था, पैतृक नियंत्रणो में सक्षम करता है।", "WelcomeToProject": "एम्बी में आपका स्वागत है!", "WizardCompleted": "अभी के लिए बस हमें यही जानना है। एम्बि ने आपकी मीडिया लाइब्रेरी के बारे में जानकारी जमा करना आरंभ कर दिया है। हमारी कुछ एेप्स को देखें, और फिर सर्वर डैशबोर्ड देखने के लिए समाप्त पर क्लिक करें।", - "Absolute": "पूर्ण" + "Absolute": "पूर्ण", + "AllLibraries": "सभी संग्रह", + "All": "सारे", + "AirDate": "प्रसारित होने की तिथि", + "AddToPlayQueue": "सक्रीय प्लेलिस्ट में जोड़ें", + "AddToCollection": "संग्रह में जोड़ें", + "Add": "जोड़ें", + "Actor": "अभिनेता", + "AccessRestrictedTryAgainLater": "अभी प्रवेश प्रतिबंधित है। थोड़ी देर बाद कोशिश करें।" } From 3c24afb75ef1d1cd796879ee23a5716f2f87d5a9 Mon Sep 17 00:00:00 2001 From: WNotCoder Date: Wed, 29 Jan 2020 17:02:33 +0000 Subject: [PATCH 104/105] 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 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index e7bb4d7730..94c235a7d7 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1458,5 +1458,6 @@ "HeaderFavoritePeople": "最喜欢的人物", "OptionRandom": "随机", "ButtonSplit": "拆分", - "SelectAdminUsername": "请为管理员账户选择一个用户名。" + "SelectAdminUsername": "请为管理员账户选择一个用户名。", + "HeaderNavigation": "导航" } From f2c24921e1c43777516d853e619b761ced69ebd1 Mon Sep 17 00:00:00 2001 From: nextlooper42 Date: Thu, 30 Jan 2020 11:45:32 +0000 Subject: [PATCH 105/105] Translated using Weblate (Slovak) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sk/ --- src/strings/sk.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/sk.json b/src/strings/sk.json index be7a504710..e3d0142bc6 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -1454,5 +1454,6 @@ "LabelAlbumArtHelp": "PN používa obrázok albumu, vrámci dlna:profileID atribútu upnp:albumArtURI. Niektoré zariadenia vyžadujú špecifickú hodnotu, bez ohľadu na veľkosť obrázku.", "HeaderDirectPlayProfileHelp": "Pridať direct play profil pre definovanie, ktorý formát môže zariadenie natívne zvládnuť.", "LabelInNetworkSignInWithEasyPasswordHelp": "Použite jednoduchý PIN kód na prihlásenie v klientoch vo vnútri lokálnej siete. Vaše bežné heslo bude potrebné len pokiaľ ste mimo domova. Pokiaľ je PIN kód ponechaný prázdny, tak nebude potrebovať heslo vo vašej domácej sieti.", - "EasyPasswordHelp": "Váš jednoduchý PIN kód sa dá používať v režime offline na podporovaných zariadeniach a taktiež môže byť použitý ako jednoduché prihlásenie v lokálnej sieti." + "EasyPasswordHelp": "Váš jednoduchý PIN kód sa dá používať v režime offline na podporovaných zariadeniach a taktiež môže byť použitý ako jednoduché prihlásenie v lokálnej sieti.", + "HeaderNavigation": "Navigácia" }