From 552390a9f922be0a00231c519e9801d162ac2b2a Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Fri, 3 Jan 2020 23:50:34 +0100 Subject: [PATCH 001/114] Enable headroom only on mobile --- src/components/emby-scroller/emby-scroller.js | 2 +- src/scripts/librarymenu.js | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/emby-scroller/emby-scroller.js b/src/components/emby-scroller/emby-scroller.js index 0b36483be..f943047f5 100644 --- a/src/components/emby-scroller/emby-scroller.js +++ b/src/components/emby-scroller/emby-scroller.js @@ -155,7 +155,7 @@ define(['scroller', 'dom', 'layoutManager', 'inputManager', 'focusManager', 'bro initCenterFocus(this, this.scroller); } - if (bindHeader) { + if (bindHeader && layoutManager.mobile) { initHeadroom(this); } diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js index 7e3b10950..dcf71c735 100644 --- a/src/scripts/librarymenu.js +++ b/src/scripts/librarymenu.js @@ -103,7 +103,9 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " headerHomeButton.addEventListener("click", onHeaderHomeButtonClick); headerCastButton.addEventListener("click", onCastButtonClicked); - initHeadRoom(skinHeader); + if (layoutManager.mobile) { + initHeadRoom(skinHeader); + } } function onCastButtonClicked() { From 12da467cfa6c3f38e2847d81f08cfe53c576843f Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Fri, 17 Jan 2020 11:50:46 +0300 Subject: [PATCH 002/114] 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 634b5e1b3..6839b0b6f 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 003/114] 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 8c0bb1a3a..c55a066f9 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 004/114] 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 bd12ba507..195ea5770 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 005/114] 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 0327217e4..f7201307f 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 006/114] 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 f7201307f..2fe3d2e68 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 007/114] 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 2fe3d2e68..ea090553e 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 008/114] 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 c55a066f9..0971018bb 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 195ea5770..5dc12aeee 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 c340e7935..24592f451 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 009/114] 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 ea090553e..cdcc681aa 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 143cd2bfad3eb6ff4ad7d9b7aaccabace27fb87e Mon Sep 17 00:00:00 2001 From: Samuel Date: Mon, 20 Jan 2020 21:52:47 -0500 Subject: [PATCH 010/114] Update moviegenres.js --- src/controllers/movies/moviegenres.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/controllers/movies/moviegenres.js b/src/controllers/movies/moviegenres.js index e51274d25..6d32e4ab2 100644 --- a/src/controllers/movies/moviegenres.js +++ b/src/controllers/movies/moviegenres.js @@ -114,7 +114,10 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader shape: getPortraitShape(), scalable: true, overlayMoreButton: true, - allowBottomPadding: false + allowBottomPadding: true, + showTitle: true, + centerText: true, + showYear: true }); } if (result.Items.length >= query.Limit) { From 60e64f8a582f16b7743df6703934d30f00932bbc Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 21 Jan 2020 12:51:33 +0300 Subject: [PATCH 011/114] 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 8643e3f47..9df0ee5f1 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 b1b1c30dc..d85706b9f 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 634b5e1b3..c6a64a69f 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 6dea5a789..4eb2289c9 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 4e612aa5b..140c5bdb8 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 012/114] 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 d85706b9f..d6099b6dd 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 50d6864a681327b56f6397f7b2cbbf441daa31cf Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 9 Jan 2020 19:35:19 +0100 Subject: [PATCH 013/114] Revert vendor prefix removal --- src/assets/css/dashboard.css | 49 ++++- src/assets/css/fonts.css | 1 + src/assets/css/librarybrowser.css | 129 +++++++++-- src/assets/css/metadataeditor.css | 4 + src/assets/css/scrollstyles.css | 17 +- src/assets/css/site.css | 6 + src/assets/css/videoosd.css | 67 +++++- src/components/cardbuilder/card.css | 9 +- src/components/dialogHelper/dialoghelper.css | 1 + src/components/filterdialog/style.css | 1 + src/components/homesections/homesections.css | 2 + src/components/htmlvideoplayer/style.css | 1 + src/components/images/style.css | 12 ++ src/components/indicators/indicators.css | 4 + src/components/loading/loading.css | 204 +++++++++++++++++- src/components/navdrawer/navdrawer.css | 11 + .../remotecontrol/remotecontrol.css | 48 ++++- src/components/slideshow/style.css | 3 + src/components/subtitlesync/subtitlesync.css | 2 + src/components/upnextdialog/upnextdialog.css | 5 + src/elements/emby-button/emby-button.css | 10 + src/elements/emby-checkbox/emby-checkbox.css | 5 +- src/elements/emby-input/emby-input.css | 3 + src/elements/emby-radio/emby-radio.css | 7 + src/elements/emby-select/emby-select.css | 5 + src/elements/emby-slider/emby-slider.css | 16 +- src/elements/emby-textarea/emby-textarea.css | 1 + src/elements/emby-toggle/emby-toggle.css | 8 + src/themes/appletv/theme.css | 20 ++ src/themes/blueradiance/theme.css | 23 +- src/themes/dark/theme.css | 14 +- src/themes/light/theme.css | 12 ++ src/themes/purplehaze/theme.css | 23 +- src/themes/wmc/theme.css | 26 ++- 34 files changed, 698 insertions(+), 51 deletions(-) diff --git a/src/assets/css/dashboard.css b/src/assets/css/dashboard.css index d4928db69..1c69dfccb 100644 --- a/src/assets/css/dashboard.css +++ b/src/assets/css/dashboard.css @@ -1,6 +1,7 @@ .dashboardColumn, .dashboardSections { - flex-direction: column; + -webkit-box-orient: vertical; + -webkit-box-direction: normal } .dashboardFooter { @@ -14,6 +15,8 @@ progress { appearance: none; + -moz-appearance: none; + -webkit-appearance: none; margin: 0; background: #ccc !important } @@ -73,17 +76,23 @@ progress[aria-valuenow]:before { div[data-role=controlgroup] a[data-role=button] { display: inline-block !important; margin: 0 !important; + -webkit-box-shadow: none !important; box-shadow: none !important; + -webkit-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 } 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 } @@ -137,14 +146,23 @@ div[data-role=controlgroup] a.ui-btn-active { } .dashboardSections { + display: -webkit-box; + display: -webkit-flex; display: flex; + -webkit-flex-direction: column; flex-direction: column } .dashboardColumn { + display: -webkit-box; + display: -webkit-flex; display: flex; + -webkit-flex-direction: column; flex-direction: column; + -webkit-flex-shrink: 0; flex-shrink: 0; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; flex-grow: 1 } @@ -153,6 +171,7 @@ div[data-role=controlgroup] a.ui-btn-active { } .dashboardSection { + -webkit-flex-shrink: 0; flex-shrink: 0; margin: 0 0 2em } @@ -168,7 +187,11 @@ div[data-role=controlgroup] a.ui-btn-active { @media all and (min-width:70em) { .dashboardSections { + -webkit-flex-wrap: wrap; flex-wrap: wrap; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; flex-direction: row } @@ -273,6 +296,7 @@ div[data-role=controlgroup] a.ui-btn-active { } .sessionNowPlayingContent { + -webkit-background-size: cover; background-size: cover; background-repeat: no-repeat; background-position: center center; @@ -371,6 +395,7 @@ div[data-role=controlgroup] a.ui-btn-active { } .disabledUser { + -webkit-filter: grayscale(100%); filter: grayscale(100%) } @@ -391,7 +416,9 @@ div[data-role=controlgroup] a.ui-btn-active { } a[data-role=button] { - 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; @@ -403,21 +430,37 @@ a[data-role=button] { background: #292929 !important; } -@keyframes rotating { +@-webkit-keyframes rotating { from { + -webkit-transform: rotate(0); transform: rotate(0) } to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg) + } +} + +@keyframes rotating { + from { + -webkit-transform: rotate(0); + transform: rotate(0) + } + + to { + -webkit-transform: rotate(360deg); transform: rotate(360deg) } } .rotatingCircle { + -webkit-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) } diff --git a/src/assets/css/fonts.css b/src/assets/css/fonts.css index da5515fc1..12f1eaf4b 100644 --- a/src/assets/css/fonts.css +++ b/src/assets/css/fonts.css @@ -4,6 +4,7 @@ html { html { font-size: 93%; + -webkit-text-size-adjust: 100%; text-size-adjust: 100%; } diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index b9f406bc0..c03cc2691 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -15,6 +15,7 @@ .headerSelectedPlayer, .itemMiscInfo, .navMenuOptionText { + -o-text-overflow: ellipsis; text-overflow: ellipsis; overflow: hidden } @@ -47,6 +48,8 @@ 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 } @@ -55,14 +58,17 @@ } .headerUserImage { + -webkit-background-size: contain; background-size: contain; background-repeat: no-repeat; background-position: center center; + -webkit-border-radius: 100em; border-radius: 100em; display: inline-block } .headerUserButtonRound div { + -webkit-border-radius: 100em; border-radius: 100em; background-size: cover; background-repeat: no-repeat; @@ -70,6 +76,7 @@ } .headerButton { + -webkit-flex-shrink: 0; flex-shrink: 0 } @@ -83,25 +90,34 @@ } .pageTitle { + display: -webkit-inline-box; + display: -webkit-inline-flex; display: inline-flex; margin: .3em 0 0 .5em; height: 1.7em; + -webkit-box-align: center; + -webkit-align-items: center; align-items: center; + -webkit-flex-shrink: 1; flex-shrink: 1 } .headerLeft, .skinHeader { - display: flex; + display: -webkit-box; + display: -webkit-flex } .detailButton-mobile, .skinHeader { - flex-direction: column; + -webkit-flex-direction: column; + -webkit-box-orient: vertical; + -webkit-box-direction: normal } .pageTitleWithLogo { background-position: left center; + -webkit-background-size: contain; background-size: contain; background-repeat: no-repeat; width: 13.2em @@ -121,7 +137,7 @@ .headerLeft, .headerRight { - justify-content: center; + -webkit-box-align: center } .hiddenViewMenuBar .skinHeader { @@ -134,7 +150,10 @@ .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; @@ -145,8 +164,13 @@ } .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 } @@ -155,19 +179,27 @@ } .navMenuOption { + display: -webkit-box !important; + display: -webkit-flex !important; display: flex !important; + -webkit-box-align: center; + -webkit-align-items: center; align-items: center; text-decoration: none; color: inherit; padding: .9em 0 .9em 2.4em !important; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; flex-grow: 1; font-weight: 400 !important; margin: 0 !important; + -webkit-border-radius: 0 !important; border-radius: 0 !important } .navMenuOptionIcon { margin-right: 1.2em; + -webkit-flex-shrink: 0; flex-shrink: 0 } @@ -181,6 +213,8 @@ } .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; position: absolute; top: 0; @@ -210,7 +244,9 @@ z-index: inherit !important; left: 0 !important; top: 0 !important; + -webkit-transform: none !important; transform: none !important; + -webkit-box-shadow: none !important; box-shadow: none !important; width: 20.205em !important; font-size: 94% @@ -247,9 +283,14 @@ } .headerTabs { + -webkit-align-self: center; align-self: center; width: auto; + -webkit-box-align: center; + -webkit-align-items: center; align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; justify-content: center; margin-top: -3.34em; position: relative; @@ -307,6 +348,8 @@ } .flexPageTabContent.is-active { + display: -webkit-box !important; + display: -webkit-flex !important; display: flex !important } @@ -322,6 +365,7 @@ margin: 1.5em 0; background: #222; padding: .8em .8em .8em 3em; + -webkit-border-radius: .3em; border-radius: .3em; position: relative } @@ -380,6 +424,7 @@ } .itemBackdrop { + -webkit-background-size: cover; background-size: cover; background-repeat: no-repeat; background-position: center; @@ -443,15 +488,15 @@ } .detailImageContainer { - margin: 1.25em 0; - position: sticky; - top: 15%; - float: left; - width: 22.786458333333332vw; + width: 280px; + margin-right: 2em; + flex-shrink: 0; } .detailPagePrimaryContent { position: relative; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; flex-grow: 1 } @@ -459,8 +504,9 @@ width: 25em; height: 9.375em; position: absolute; - top: 14.5%; - right: 10.5%; + top: 13.5%; + right: 19.5%; + -webkit-background-size: contain; background-size: contain } @@ -489,8 +535,13 @@ } .itemDetailImage { - width: 100% !important; - box-shadow: 0 .0725em .29em 0 rgba(0, 0, 0, .37); + width: 100%; + -webkit-box-shadow: 0 .0725em .29em 0 rgba(0, 0, 0, .37); + box-shadow: 0 .0725em .29em 0 rgba(0, 0, 0, .37) +} + +.thumbDetailImageContainer { + width: 400px } @media all and (max-width:62.5em) { @@ -503,6 +554,19 @@ } } +@media all and (min-width:62.5em) { + .itemBackdrop { + display: none + } + + .detailPagePrimaryContainer { + display: -webkit-box; + display: -webkit-flex; + display: flex; + margin-bottom: 3em + } +} + @media all and (max-width:75em) { .lnkSibling { display: none !important @@ -557,7 +621,8 @@ .detailButton-mobile, .mainDetailButtons { - display: flex; + display: -webkit-box; + display: -webkit-flex } .itemName { @@ -578,7 +643,10 @@ .mainDetailButtons { display: flex; + -webkit-box-align: center; + -webkit-align-items: center; align-items: center; + -webkit-flex-wrap: wrap; flex-wrap: wrap; margin: 1em 0; } @@ -586,6 +654,7 @@ .recordingFields button { margin-left: 0; margin-right: .5em; + -webkit-flex-shrink: 0; flex-shrink: 0 } @@ -596,7 +665,11 @@ .detailButton-mobile { display: flex; flex-direction: column; + -webkit-box-pack: center; + -webkit-justify-content: center; justify-content: center; + -webkit-box-align: center; + -webkit-align-items: center; align-items: center; margin: 0 !important; padding: .5em .7em !important @@ -628,9 +701,18 @@ } .detailButton-mobile-content { + display: -webkit-box; + display: -webkit-flex; display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; flex-direction: column; + -webkit-box-pack: center; + -webkit-justify-content: center; justify-content: center; + -webkit-box-align: center; + -webkit-align-items: center; align-items: center } @@ -684,14 +766,21 @@ } .itemMiscInfo { + display: -webkit-box; + display: -webkit-flex; display: flex; + -webkit-flex-wrap: wrap; flex-wrap: wrap; + -webkit-box-align: center; + -webkit-align-items: center; align-items: center } @media all and (max-width:31.25em) { .mobileDetails .itemMiscInfo { text-align: center; + -webkit-box-pack: center; + -webkit-justify-content: center; justify-content: center } @@ -781,6 +870,7 @@ } .btnSyncComplete i { + -webkit-border-radius: 100em; border-radius: 100em } @@ -789,9 +879,14 @@ } .mediaInfoIcons { + display: -webkit-box; + display: -webkit-flex; display: flex; + -webkit-box-align: center; + -webkit-align-items: center; align-items: center; margin: 1em 0; + -webkit-flex-wrap: wrap; flex-wrap: wrap } @@ -829,6 +924,7 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { .sectionTitleButton { margin-left: 1.5em !important; + -webkit-flex-shrink: 0; flex-shrink: 0 } @@ -838,17 +934,22 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { .sectionTitleIconButton { margin-left: 1.5em !important; + -webkit-flex-shrink: 0; flex-shrink: 0; font-size: 84% !important; padding: .5em !important } .horizontalItemsContainer { + display: -webkit-box; + display: -webkit-flex; display: flex } .sectionTitleTextButton { margin: 0 !important; + display: -webkit-inline-box !important; + display: -webkit-inline-flex !important; display: inline-flex !important; color: inherit !important } @@ -920,6 +1021,8 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { } .itemsViewSettingsContainer { + -webkit-box-pack: center; + -webkit-justify-content: center; justify-content: center } diff --git a/src/assets/css/metadataeditor.css b/src/assets/css/metadataeditor.css index c5de6f3ef..542c7c8f2 100644 --- a/src/assets/css/metadataeditor.css +++ b/src/assets/css/metadataeditor.css @@ -28,13 +28,17 @@ .jstree-wholerow-hovered { background: #38c !important; + -webkit-border-radius: 0 !important; border-radius: 0 !important; + -webkit-box-shadow: none !important; box-shadow: none !important } .jstree-default .jstree-hovered { background: 0 0 !important; + -webkit-border-radius: 0 !important; border-radius: 0 !important; + -webkit-box-shadow: none !important; box-shadow: none !important; color: #fff !important } diff --git a/src/assets/css/scrollstyles.css b/src/assets/css/scrollstyles.css index 69039ce34..aa2f7dafa 100644 --- a/src/assets/css/scrollstyles.css +++ b/src/assets/css/scrollstyles.css @@ -1,5 +1,6 @@ .scrollX { overflow-x: auto; + -webkit-overflow-scrolling: touch; overflow-y: hidden; white-space: nowrap; } @@ -9,11 +10,13 @@ } .hiddenScrollX, .layout-tv .scrollX { - scrollbar-width: none; + -ms-overflow-style: none; + /* Can't do this because it not only hides the scrollbar, but also prevents scrolling */ + /*overflow: -moz-scrollbars-none;*/ } .hiddenScrollX-forced { - scrollbar-width: none; + overflow: -moz-scrollbars-none; } .hiddenScrollX::-webkit-scrollbar, .layout-tv .scrollX::-webkit-scrollbar { @@ -23,24 +26,28 @@ .scrollY { overflow-y: auto; + -webkit-overflow-scrolling: touch; overflow-x: hidden; } .smoothScrollY { overflow-y: auto; + -webkit-overflow-scrolling: touch; overflow-x: hidden; scroll-behavior: smooth; } .hiddenScrollY, .layout-tv .smoothScrollY { - scrollbar-width: none; + -ms-overflow-style: none; + /* Can't do this because it not only hides the scrollbar, but also prevents scrolling */ + /*overflow: -moz-scrollbars-none;*/ } .hiddenScrollY-forced { - scrollbar-width: none; + overflow: -moz-scrollbars-none; } .hiddenScrollY::-webkit-scrollbar, .layout-tv .smoothScrollY::-webkit-scrollbar, .layout-tv .scrollY::-webkit-scrollbar { width: 0 !important; display: none; -} +} \ No newline at end of file diff --git a/src/assets/css/site.css b/src/assets/css/site.css index 649179911..292fc6745 100644 --- a/src/assets/css/site.css +++ b/src/assets/css/site.css @@ -20,12 +20,18 @@ html { .layout-mobile, .layout-tv { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; user-select: none } body { overflow-x: hidden; background-color: transparent !important; + -webkit-font-smoothing: antialiased } .mainAnimatedPage { diff --git a/src/assets/css/videoosd.css b/src/assets/css/videoosd.css index f20abf9d0..f9c4798e9 100644 --- a/src/assets/css/videoosd.css +++ b/src/assets/css/videoosd.css @@ -1,6 +1,8 @@ .chapterThumbTextContainer, .videoOsdBottom { - user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none } .osdPoster img, @@ -12,10 +14,13 @@ } .osdHeader { + -webkit-transition: opacity .3s ease-out; + -o-transition: opacity .3s ease-out; transition: opacity .3s ease-out; position: relative; z-index: 1; background: rgba(0, 0, 0, 0.7) !important; + -webkit-backdrop-filter: none !important; backdrop-filter: none !important; color: #eee !important; } @@ -29,13 +34,17 @@ } .chapterThumbContainer { + -webkit-box-shadow: 0 0 1.9vh #000; box-shadow: 0 0 1.9vh #000; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; flex-grow: 1; position: relative } .chapterThumb { background-position: center center; + -webkit-background-size: contain; background-size: contain; background-repeat: no-repeat; border: 0; @@ -81,12 +90,20 @@ position: fixed; background-color: rgba(0, 0, 0, 0.7); padding: 1%; + display: -webkit-box; + display: -webkit-flex; display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; flex-direction: row; will-change: opacity; + -webkit-transition: opacity 0.3s ease-out; + -o-transition: opacity 0.3s ease-out; transition: opacity 0.3s ease-out; color: #fff; - user-select: none + user-select: none; + -webkit-touch-callout: none } .videoOsdBottom-hidden { @@ -94,35 +111,49 @@ } .osdControls { + -webkit-box-flex: 1; + -webkit-flex-grow: 1; flex-grow: 1 } .videoOsdBottom .buttons { padding: .25em 0 0; + display: -webkit-box; + display: -webkit-flex; display: flex; + -webkit-flex-wrap: wrap; flex-wrap: wrap; + -webkit-box-align: center; + -webkit-align-items: center; align-items: center } .osdVolumeSliderContainer { width: 9em; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; flex-grow: 1 } .osdMediaInfo, .volumeButtons { - display: flex; - align-items: center; + display: -webkit-box; + display: -webkit-flex; + -webkit-box-align: center } .volumeButtons { margin: 0 .5em 0 auto; display: flex; + -webkit-align-items: center; align-items: center } .osdTimeText { margin-left: 1em; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; user-select: none } @@ -136,10 +167,15 @@ position: absolute; height: auto; width: 100%; + -webkit-box-shadow: 0 0 1.9vh #000; box-shadow: 0 0 1.9vh #000; border: .08em solid #222; user-drag: none; - user-select: none + user-select: none; + -moz-user-select: none; + -webkit-user-drag: none; + -webkit-user-select: none; + -ms-user-select: none } .osdTitle, @@ -149,6 +185,7 @@ .osdMediaInfo { display: flex; + -webkit-align-items: center; align-items: center } @@ -157,14 +194,23 @@ } .osdTextContainer { + display: -webkit-box; + display: -webkit-flex; display: flex; + -webkit-box-align: center; + -webkit-align-items: center; align-items: center; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; user-select: none; margin-bottom: .7em; padding-left: .5em } .osdMainTextContainer { + -webkit-box-align: baseline; + -webkit-align-items: baseline; align-items: baseline } @@ -172,13 +218,12 @@ margin-left: auto; } -@keyframes spin { - 100% { - transform:rotate(360deg); - } -} - +@-moz-keyframes spin { 100% { -moz-transform: rotate(360deg); } } +@-webkit-keyframes spin { 100% { -webkit-transform: rotate(360deg); } } +@keyframes spin { 100% { -webkit-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; } diff --git a/src/components/cardbuilder/card.css b/src/components/cardbuilder/card.css index 5520ce2c7..e63b9a4bb 100644 --- a/src/components/cardbuilder/card.css +++ b/src/components/cardbuilder/card.css @@ -18,6 +18,7 @@ button { padding: 0; display: block; color: inherit !important; + -webkit-tap-highlight-color: rgba(0,0,0,0); outline: none !important; cursor: pointer; contain: layout style; @@ -79,9 +80,10 @@ button { 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); outline: none !important; - contain: layout; - contain: style; + contain: layout style; } .card.show-focus:not(.show-animation) .cardBox { @@ -146,6 +148,7 @@ button { background-size: cover; background-repeat: no-repeat; background-position: center center; + display: -webkit-flex; display: flex; align-items: center; justify-content: center; @@ -179,6 +182,7 @@ button { margin: 0 !important; /* Needed in safari */ height: 100%; + -webkit-tap-highlight-color: rgba(0,0,0,0); outline: none !important; contain: strict; } @@ -342,6 +346,7 @@ button { border: 0 !important; padding: 0 !important; cursor: pointer; + -webkit-tap-highlight-color: rgba(0,0,0,0); outline: none !important; color: inherit; vertical-align: middle; diff --git a/src/components/dialogHelper/dialoghelper.css b/src/components/dialogHelper/dialoghelper.css index aa4145e01..2cc20b5ff 100644 --- a/src/components/dialogHelper/dialoghelper.css +++ b/src/components/dialogHelper/dialoghelper.css @@ -16,6 +16,7 @@ .dialog { margin: 0; border-radius: .2em; + -webkit-font-smoothing: antialiased; border: 0; padding: 0; will-change: transform, opacity; diff --git a/src/components/filterdialog/style.css b/src/components/filterdialog/style.css index 989b7c124..9851c2d7b 100644 --- a/src/components/filterdialog/style.css +++ b/src/components/filterdialog/style.css @@ -5,6 +5,7 @@ margin-top: 0 !important; margin-bottom: 0 !important; margin-right: 0 !important; + -webkit-border-radius: 0 !important; border-radius: 0 !important; max-height: none !important; max-width: none !important diff --git a/src/components/homesections/homesections.css b/src/components/homesections/homesections.css index 5df2440f8..45df67c48 100644 --- a/src/components/homesections/homesections.css +++ b/src/components/homesections/homesections.css @@ -13,11 +13,13 @@ .homeLibraryIcon { margin-left: .5em; margin-right: .5em; + -webkit-flex-shrink: 0; flex-shrink: 0 } .homeLibraryText { white-space: nowrap; + -o-text-overflow: ellipsis; text-overflow: ellipsis; overflow: hidden } diff --git a/src/components/htmlvideoplayer/style.css b/src/components/htmlvideoplayer/style.css index e1875ff33..32c090eea 100644 --- a/src/components/htmlvideoplayer/style.css +++ b/src/components/htmlvideoplayer/style.css @@ -42,6 +42,7 @@ video::-webkit-media-controls { .htmlvideoplayer::cue { background-color: transparent; text-shadow: 0.14em 0.14em 0.14em rgba(0, 0, 0, 1); + -webkit-font-smoothing: antialiased; font-family: inherit; } diff --git a/src/components/images/style.css b/src/components/images/style.css index 06fbf1f9c..5cf39c1e4 100644 --- a/src/components/images/style.css +++ b/src/components/images/style.css @@ -18,9 +18,21 @@ .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); } diff --git a/src/components/indicators/indicators.css b/src/components/indicators/indicators.css index b0d0119c0..c2d089e1a 100644 --- a/src/components/indicators/indicators.css +++ b/src/components/indicators/indicators.css @@ -14,6 +14,7 @@ .indicator { border-radius: 100em; + display: -webkit-flex; display: flex; align-items: center; justify-content: center; @@ -42,6 +43,7 @@ .countIndicator { border-radius: 100em; + display: -webkit-flex; display: flex; align-items: center; justify-content: center; @@ -53,6 +55,7 @@ .playedIndicator { border-radius: 100em; + display: -webkit-flex; display: flex; align-items: center; justify-content: center; @@ -64,6 +67,7 @@ .videoIndicator { background: #444; border-radius: 100em; + display: -webkit-flex; display: flex; align-items: center; justify-content: center; diff --git a/src/components/loading/loading.css b/src/components/loading/loading.css index e3f10c0e2..6d8472fc1 100644 --- a/src/components/loading/loading.css +++ b/src/components/loading/loading.css @@ -7,11 +7,20 @@ .mdlSpinnerActive { display: inline-block; + -webkit-animation: mdl-spinner__container-rotate 1568.23529412ms linear infinite; animation: mdl-spinner__container-rotate 1568.23529412ms linear infinite; } +@-webkit-keyframes mdl-spinner__container-rotate { + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + @keyframes mdl-spinner__container-rotate { to { + -webkit-transform: rotate(360deg); transform: rotate(360deg); } } @@ -28,6 +37,7 @@ } .mdl-spinner__layer-1-active { + -webkit-animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-1-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-1-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } @@ -36,6 +46,7 @@ } .mdl-spinner__layer-2-active { + -webkit-animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-2-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-2-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } @@ -44,6 +55,7 @@ } .mdl-spinner__layer-3-active { + -webkit-animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-3-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-3-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } @@ -52,39 +64,90 @@ } .mdl-spinner__layer-4-active { + -webkit-animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-4-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-4-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } -@keyframes mdl-spinner__fill-unfill-rotate { +@-webkit-keyframes mdl-spinner__fill-unfill-rotate { 12.5% { + -webkit-transform: rotate(135deg); transform: rotate(135deg); } 25% { + -webkit-transform: rotate(270deg); transform: rotate(270deg); } 37.5% { + -webkit-transform: rotate(405deg); transform: rotate(405deg); } 50% { + -webkit-transform: rotate(540deg); transform: rotate(540deg); } 62.5% { + -webkit-transform: rotate(675deg); transform: rotate(675deg); } 75% { + -webkit-transform: rotate(810deg); transform: rotate(810deg); } 87.5% { + -webkit-transform: rotate(945deg); transform: rotate(945deg); } to { + -webkit-transform: rotate(1080deg); + transform: rotate(1080deg); + } +} + +@keyframes mdl-spinner__fill-unfill-rotate { + 12.5% { + -webkit-transform: rotate(135deg); + transform: rotate(135deg); + } + + 25% { + -webkit-transform: rotate(270deg); + transform: rotate(270deg); + } + + 37.5% { + -webkit-transform: rotate(405deg); + transform: rotate(405deg); + } + + 50% { + -webkit-transform: rotate(540deg); + transform: rotate(540deg); + } + + 62.5% { + -webkit-transform: rotate(675deg); + transform: rotate(675deg); + } + + 75% { + -webkit-transform: rotate(810deg); + transform: rotate(810deg); + } + + 87.5% { + -webkit-transform: rotate(945deg); + transform: rotate(945deg); + } + + to { + -webkit-transform: rotate(1080deg); transform: rotate(1080deg); } } @@ -98,6 +161,32 @@ * - https://github.com/Polymer/paper-spinner/issues/9 * - https://code.google.com/p/chromium/issues/detail?id=436255 */ +@-webkit-keyframes mdl-spinner__layer-1-fade-in-out { + from { + opacity: 0.99; + } + + 25% { + opacity: 0.99; + } + + 26% { + opacity: 0; + } + + 89% { + opacity: 0; + } + + 90% { + opacity: 0.99; + } + + 100% { + opacity: 0.99; + } +} + @keyframes mdl-spinner__layer-1-fade-in-out { from { opacity: 0.99; @@ -124,6 +213,28 @@ } } +@-webkit-keyframes mdl-spinner__layer-2-fade-in-out { + from { + opacity: 0; + } + + 15% { + opacity: 0; + } + + 25% { + opacity: 0.99; + } + + 50% { + opacity: 0.99; + } + + 51% { + opacity: 0; + } +} + @keyframes mdl-spinner__layer-2-fade-in-out { from { opacity: 0; @@ -146,6 +257,28 @@ } } +@-webkit-keyframes mdl-spinner__layer-3-fade-in-out { + from { + opacity: 0; + } + + 40% { + opacity: 0; + } + + 50% { + opacity: 0.99; + } + + 75% { + opacity: 0.99; + } + + 76% { + opacity: 0; + } +} + @keyframes mdl-spinner__layer-3-fade-in-out { from { opacity: 0; @@ -168,6 +301,28 @@ } } +@-webkit-keyframes mdl-spinner__layer-4-fade-in-out { + from { + opacity: 0; + } + + 65% { + opacity: 0; + } + + 75% { + opacity: 0.99; + } + + 90% { + opacity: 0.99; + } + + 100% { + opacity: 0; + } +} + @keyframes mdl-spinner__layer-4-fade-in-out { from { opacity: 0; @@ -211,6 +366,7 @@ border-color: inherit; border-bottom-color: transparent !important; border-radius: 50%; + -webkit-animation: none; animation: none; position: absolute; top: 0; @@ -221,47 +377,91 @@ .mdl-spinner__circleLeft { border-right-color: transparent !important; + -webkit-transform: rotate(129deg); transform: rotate(129deg); } .mdl-spinner__circleLeft-active { + -webkit-animation: mdl-spinner__left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; animation: mdl-spinner__left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } .mdl-spinner__circleRight { left: -100%; border-left-color: transparent !important; + -webkit-transform: rotate(-129deg); transform: rotate(-129deg); } .mdl-spinner__circleRight-active { + -webkit-animation: mdl-spinner__right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; animation: mdl-spinner__right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } -@keyframes mdl-spinner__left-spin { +@-webkit-keyframes mdl-spinner__left-spin { from { + -webkit-transform: rotate(130deg); transform: rotate(130deg); } 50% { + -webkit-transform: rotate(-5deg); transform: rotate(-5deg); } to { + -webkit-transform: rotate(130deg); transform: rotate(130deg); } } +@keyframes mdl-spinner__left-spin { + from { + -webkit-transform: rotate(130deg); + transform: rotate(130deg); + } + + 50% { + -webkit-transform: rotate(-5deg); + transform: rotate(-5deg); + } + + to { + -webkit-transform: rotate(130deg); + transform: rotate(130deg); + } +} + +@-webkit-keyframes mdl-spinner__right-spin { + from { + -webkit-transform: rotate(-130deg); + transform: rotate(-130deg); + } + + 50% { + -webkit-transform: rotate(5deg); + transform: rotate(5deg); + } + + to { + -webkit-transform: rotate(-130deg); + transform: rotate(-130deg); + } +} + @keyframes mdl-spinner__right-spin { from { + -webkit-transform: rotate(-130deg); transform: rotate(-130deg); } 50% { + -webkit-transform: rotate(5deg); transform: rotate(5deg); } to { + -webkit-transform: rotate(-130deg); transform: rotate(-130deg); } } diff --git a/src/components/navdrawer/navdrawer.css b/src/components/navdrawer/navdrawer.css index 5d63e150d..f774c6919 100644 --- a/src/components/navdrawer/navdrawer.css +++ b/src/components/navdrawer/navdrawer.css @@ -9,20 +9,29 @@ .touch-menu-la { background-color: #FFF; will-change: transform; + display: -webkit-box; + display: -webkit-flex; display: flex; + -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 } .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 } .drawer-open { + -webkit-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 } @@ -32,6 +41,8 @@ background-color: #000; 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; will-change: opacity; background-color: rgba(0, 0, 0, .3) diff --git a/src/components/remotecontrol/remotecontrol.css b/src/components/remotecontrol/remotecontrol.css index 349416a97..9bd91731a 100644 --- a/src/components/remotecontrol/remotecontrol.css +++ b/src/components/remotecontrol/remotecontrol.css @@ -1,5 +1,10 @@ .nowPlayingInfoContainer { + display: -webkit-box; + display: -webkit-flex; display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; flex-direction: row } @@ -36,20 +41,27 @@ } .nowPlayingInfoButtons { + display: -webkit-box; + display: -webkit-flex; display: flex; + -webkit-box-align: center; + -webkit-align-items: center; align-items: center; + -webkit-flex-wrap: wrap; flex-wrap: wrap } .nowPlayingInfoControls, .nowPlayingTime { - display: flex; + display: -webkit-box; + display: -webkit-flex } .nowPlayingPageImageContainer { width: 20%; margin-right: .25em; position: relative; + -webkit-flex-shrink: 0; flex-shrink: 0 } @@ -60,9 +72,16 @@ } .nowPlayingInfoControls { + -webkit-box-flex: 1; + -webkit-flex-grow: 1; flex-grow: 1; display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; flex-direction: column; + -webkit-box-pack: center; + -webkit-justify-content: center; justify-content: center } @@ -71,15 +90,25 @@ left: 0; right: 0; width: 100%; + -webkit-box-shadow: 0 0 1.9vh #000; box-shadow: 0 0 1.9vh #000; border: .1em solid #222; user-drag: none; user-select: none; + -moz-user-select: none; + -webkit-user-drag: none; + -webkit-user-select: none; + -ms-user-select: none } @media all and (orientation:portrait) and (max-width:50em) { .nowPlayingInfoContainer { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -webkit-flex-direction: column !important; flex-direction: column !important; + -webkit-box-align: center; + -webkit-align-items: center; align-items: center } @@ -93,6 +122,8 @@ } .nowPlayingInfoButtons { + -webkit-box-pack: center; + -webkit-justify-content: center; justify-content: center } @@ -120,20 +151,33 @@ .nowPlayingTime { display: flex; + -webkit-box-align: center; + -webkit-align-items: center; align-items: center; margin: 0 1em } .nowPlayingSecondaryButtons { + display: -webkit-box; + display: -webkit-flex; display: flex; + -webkit-box-align: center; + -webkit-align-items: center; align-items: center; + -webkit-flex-wrap: wrap; flex-wrap: wrap; + -webkit-box-pack: center; + -webkit-justify-content: center; justify-content: center } @media all and (min-width:50em) { .nowPlayingSecondaryButtons { + -webkit-box-flex: 1; + -webkit-flex-grow: 1; flex-grow: 1; + -webkit-box-pack: end; + -webkit-justify-content: flex-end; justify-content: flex-end } } @@ -150,11 +194,13 @@ .smallBackdropPosterItem .cardOverlayInner>div { white-space: nowrap; + -o-text-overflow: ellipsis; text-overflow: ellipsis; overflow: hidden } .playlistIndexIndicatorImage { + -webkit-background-size: initial initial !important; background-size: initial !important; background-image: url(assets/img/equalizer.gif) !important; } diff --git a/src/components/slideshow/style.css b/src/components/slideshow/style.css index 1167a972c..43211a8fe 100644 --- a/src/components/slideshow/style.css +++ b/src/components/slideshow/style.css @@ -41,6 +41,9 @@ height: auto; max-width: 100%; max-height: 100%; + -ms-transform: translate(-50%, -50%); + -webkit-transform: translate(-50%, -50%); + -moz-transform: translate(-50%, -50%); transform: translate(-50%, -50%); position: absolute; left: 50%; diff --git a/src/components/subtitlesync/subtitlesync.css b/src/components/subtitlesync/subtitlesync.css index 38a15be90..112e62472 100644 --- a/src/components/subtitlesync/subtitlesync.css +++ b/src/components/subtitlesync/subtitlesync.css @@ -40,6 +40,8 @@ margin-right: 1%; top: 2.5em; height: 1.4em; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; flex-grow: 1; border-radius: .3em; z-index: 1; diff --git a/src/components/upnextdialog/upnextdialog.css b/src/components/upnextdialog/upnextdialog.css index 784c79cbb..336a90d58 100644 --- a/src/components/upnextdialog/upnextdialog.css +++ b/src/components/upnextdialog/upnextdialog.css @@ -11,6 +11,7 @@ background-color: rgba(0, 0, 0, 0.7); color: #fff; user-select: none; + -webkit-touch-callout: none; } .upNextDialog-hidden { @@ -66,4 +67,8 @@ border: 0; user-drag: none; user-select: none; + -moz-user-select: none; + -webkit-user-drag: none; + -webkit-user-select: none; + -ms-user-select: none; } diff --git a/src/elements/emby-button/emby-button.css b/src/elements/emby-button/emby-button.css index ee15e2e12..2201b2cd7 100644 --- a/src/elements/emby-button/emby-button.css +++ b/src/elements/emby-button/emby-button.css @@ -9,6 +9,9 @@ font-family: inherit; color: inherit; outline-width: 0; + -moz-user-select: none; + -ms-user-select: none; + -webkit-user-select: none; user-select: none; cursor: pointer; z-index: 0; @@ -21,6 +24,8 @@ outline: none !important; position: relative; font-weight: 600; + /* Disable webkit tap highlighting */ + -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; @@ -94,6 +99,9 @@ font-size: inherit; font-family: inherit; color: inherit; + -moz-user-select: none; + -ms-user-select: none; + -webkit-user-select: none; user-select: none; cursor: pointer; z-index: 0; @@ -110,6 +118,8 @@ position: relative; overflow: hidden; border-radius: 50%; + /* Disable webkit tap highlighting */ + -webkit-tap-highlight-color: rgba(0,0,0,0); justify-content: center; transform-origin: center; transition: 0.2s; diff --git a/src/elements/emby-checkbox/emby-checkbox.css b/src/elements/emby-checkbox/emby-checkbox.css index 4e27928e2..5641893f6 100644 --- a/src/elements/emby-checkbox/emby-checkbox.css +++ b/src/elements/emby-checkbox/emby-checkbox.css @@ -38,6 +38,9 @@ margin: 0; padding: 0; opacity: 0; + -ms-appearance: none; + -moz-appearance: none; + -webkit-appearance: none; appearance: none; border: none; } @@ -112,7 +115,7 @@ margin-bottom: .25em; } -@keyframes repaintChrome { +@-webkit-keyframes repaintChrome { from { padding: 0; } diff --git a/src/elements/emby-input/emby-input.css b/src/elements/emby-input/emby-input.css index 57a46ec7b..d888eb570 100644 --- a/src/elements/emby-input/emby-input.css +++ b/src/elements/emby-input/emby-input.css @@ -10,8 +10,10 @@ font-weight: inherit; padding: .4em .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); width: 100%; } @@ -33,5 +35,6 @@ } .emby-input-iconbutton { + -webkit-align-self: flex-end; align-self: flex-end; } diff --git a/src/elements/emby-radio/emby-radio.css b/src/elements/emby-radio/emby-radio.css index 6b8575bc8..25fdc5b93 100644 --- a/src/elements/emby-radio/emby-radio.css +++ b/src/elements/emby-radio/emby-radio.css @@ -27,6 +27,9 @@ margin: 0; padding: 0; opacity: 0; + -ms-appearance: none; + -moz-appearance: none; + -webkit-appearance: none; appearance: none; border: none; } @@ -67,13 +70,17 @@ cursor: pointer; transition-duration: 0.28s; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-property: -webkit-transform; transition-property: transform; + transition-property: transform, -webkit-transform; + -webkit-transform: scale3d(0, 0, 0); transform: scale3d(0, 0, 0); border-radius: 50%; background: #00a4dc; } .mdl-radio__button:checked + .mdl-radio__label + .mdl-radio__outer-circle + .mdl-radio__inner-circle { + -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } diff --git a/src/elements/emby-select/emby-select.css b/src/elements/emby-select/emby-select.css index 4aff8cab9..76b28c420 100644 --- a/src/elements/emby-select/emby-select.css +++ b/src/elements/emby-select/emby-select.css @@ -12,6 +12,7 @@ /* Prevent padding from causing width overflow */ box-sizing: border-box; outline: none !important; + -webkit-tap-highlight-color: rgba(0,0,0,0); width: 100%; } @@ -19,6 +20,8 @@ background: none !important; border-color: transparent !important; color: inherit !important; + -webkit-appearance: none; + -moz-appearance: none; appearance: none; } @@ -38,6 +41,7 @@ .emby-select-focusscale { transition: transform 180ms ease-out !important; + -webkit-transform-origin: center center; transform-origin: center center; } @@ -73,6 +77,7 @@ } .emby-select-withcolor { + -webkit-appearance: none; appearance: none; border-radius: .2em; } diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index 6fc861deb..945cdd521 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -1,21 +1,31 @@ _:-ms-input-placeholder { - appearance: none; + -ms-appearance: none; height: 2.223em; margin: 0; } .mdl-slider { width: 100%; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; appearance: none; 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; + -ms-user-select: none; user-select: none; outline: 0; color: #00a4dc; + -webkit-align-self: center; + -ms-flex-item-align: center; align-self: center; z-index: 1; cursor: pointer; margin: 0; + /* Disable webkit tap highlighting */ + -webkit-tap-highlight-color: rgba(0,0,0,0); display: block; } @@ -59,7 +69,7 @@ _:-ms-input-placeholder { } .mdl-slider::-webkit-slider-thumb { - appearance: none; + -webkit-appearance: none; width: 1.2em; height: 1.2em; box-sizing: border-box; @@ -98,7 +108,7 @@ _:-ms-input-placeholder { } .mdl-slider::-ms-thumb { - appearance: none; + -webkit-appearance: none; width: 1.8em; height: 1.8em; box-sizing: border-box; diff --git a/src/elements/emby-textarea/emby-textarea.css b/src/elements/emby-textarea/emby-textarea.css index 0dab1b1ec..6ac826223 100644 --- a/src/elements/emby-textarea/emby-textarea.css +++ b/src/elements/emby-textarea/emby-textarea.css @@ -13,6 +13,7 @@ /* Prevent padding from causing width overflow */ box-sizing: border-box; outline: none !important; + -webkit-tap-highlight-color: rgba(0,0,0,0); width: 100%; } diff --git a/src/elements/emby-toggle/emby-toggle.css b/src/elements/emby-toggle/emby-toggle.css index 3b14b8cf0..fb91419cb 100644 --- a/src/elements/emby-toggle/emby-toggle.css +++ b/src/elements/emby-toggle/emby-toggle.css @@ -9,6 +9,10 @@ margin: 0; padding: 0; overflow: visible; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; user-select: none; flex-direction: row-reverse; justify-content: flex-end; @@ -24,6 +28,9 @@ margin: 0; padding: 0; opacity: 0; + -ms-appearance: none; + -moz-appearance: none; + -webkit-appearance: none; appearance: none; border: none; } @@ -82,6 +89,7 @@ position: absolute; top: 50%; left: 50%; + -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); display: inline-block; box-sizing: border-box; diff --git a/src/themes/appletv/theme.css b/src/themes/appletv/theme.css index 4b694d6ec..d194dc203 100644 --- a/src/themes/appletv/theme.css +++ b/src/themes/appletv/theme.css @@ -23,10 +23,14 @@ html { .skinHeader-withBackground { color: rgba(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) } .skinHeader.semiTransparent { + -webkit-backdrop-filter: none !important; backdrop-filter: none !important } @@ -41,10 +45,14 @@ html { .backgroundContainer, .dialog { 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)) } @@ -181,6 +189,9 @@ html { .formDialogFooter:not(.formDialogFooter-clear) { color: rgba(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) } @@ -245,6 +256,7 @@ html { color: inherit; background: rgba(255, 255, 255, .9); border: .07em solid rgba(0, 0, 0, .158); + -webkit-border-radius: .15em; border-radius: .15em } @@ -392,10 +404,18 @@ html { color: #fff } +.itemBackdropFader { + background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0)), to(#E4E2DC)); + background: -webkit-linear-gradient(rgba(0, 0, 0, 0), #E4E2DC); + background: -o-linear-gradient(rgba(0, 0, 0, 0), #E4E2DC); + background: linear-gradient(rgba(0, 0, 0, 0), #E4E2DC) +} + .infoBanner { color: #000; background: #fff3a5; padding: 1em; + -webkit-border-radius: .25em; border-radius: .25em } diff --git a/src/themes/blueradiance/theme.css b/src/themes/blueradiance/theme.css index 5ab67ca31..02e8e46ea 100644 --- a/src/themes/blueradiance/theme.css +++ b/src/themes/blueradiance/theme.css @@ -17,12 +17,19 @@ 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) } .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)) } @@ -37,6 +44,7 @@ html { .backgroundContainer { background: url(bg.jpg) center top no-repeat #033361; + -webkit-background-size: cover; background-size: cover } @@ -173,7 +181,7 @@ html { color: rgba(255, 255, 255, .78) } -@supports (backdrop-filter:blur(10px)) { +@supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)) { .appfooter-blurred { background: rgba(1, 2, 50, .7); backdrop-filter: blur(20px) @@ -245,6 +253,7 @@ html { color: inherit; background: rgba(0, 0, 0, .5); border: .07em solid transparent; + -webkit-border-radius: .15em; border-radius: .15em } @@ -398,10 +407,18 @@ html { color: #fff } +.itemBackdropFader { + background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0)), to(#181818)); + background: -webkit-linear-gradient(rgba(0, 0, 0, 0), #181818); + background: -o-linear-gradient(rgba(0, 0, 0, 0), #181818); + background: linear-gradient(rgba(0, 0, 0, 0), #181818) +} + .infoBanner { color: #ddd; background: #111; padding: 1em; + -webkit-border-radius: .25em; border-radius: .25em } @@ -433,7 +450,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) } ::-webkit-scrollbar-track-piece { @@ -442,7 +459,7 @@ html { ::-webkit-scrollbar-thumb:horizontal, ::-webkit-scrollbar-thumb:vertical { - border-radius: 2px; + -webkit-border-radius: 2px; background: center no-repeat #888 } diff --git a/src/themes/dark/theme.css b/src/themes/dark/theme.css index bff054169..5758f5d09 100644 --- a/src/themes/dark/theme.css +++ b/src/themes/dark/theme.css @@ -20,6 +20,7 @@ html { } .skinHeader.semiTransparent { + -webkit-backdrop-filter: none !important; backdrop-filter: none !important; background-color: rgba(0, 0, 0, 0.4); } @@ -226,6 +227,7 @@ html { color: inherit; background: #292929; border: .07em solid #292929; + -webkit-border-radius: .15em; border-radius: .15em } @@ -375,10 +377,18 @@ html { color: #fff } +.itemBackdropFader { + background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0)), to(#101010)); + background: -webkit-linear-gradient(rgba(0, 0, 0, 0), #101010); + background: -o-linear-gradient(rgba(0, 0, 0, 0), #101010); + background: linear-gradient(rgba(0, 0, 0, 0), #101010) +} + .infoBanner { color: #ddd; background: #111; padding: 1em; + -webkit-border-radius: .25em; border-radius: .25em } @@ -410,7 +420,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) } ::-webkit-scrollbar-track-piece { @@ -419,7 +429,7 @@ html { ::-webkit-scrollbar-thumb:horizontal, ::-webkit-scrollbar-thumb:vertical { - border-radius: 2px; + -webkit-border-radius: 2px; background: center no-repeat #888 } diff --git a/src/themes/light/theme.css b/src/themes/light/theme.css index 719678d0a..65a9d5cf9 100644 --- a/src/themes/light/theme.css +++ b/src/themes/light/theme.css @@ -23,14 +23,17 @@ html { 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) } .osdHeader { + -webkit-box-shadow: none !important; box-shadow: none !important } .skinHeader.semiTransparent { + -webkit-backdrop-filter: none !important; backdrop-filter: none !important; background-color: rgba(0, 0, 0, 0.4); } @@ -246,6 +249,7 @@ html { color: inherit; background: #fff; border: .07em solid rgba(0, 0, 0, .158); + -webkit-border-radius: .15em; border-radius: .15em } @@ -392,10 +396,18 @@ html { color: #fff } +.itemBackdropFader { + background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0)), to(#f2f2f2)); + background: -webkit-linear-gradient(rgba(0, 0, 0, 0), #f2f2f2); + background: -o-linear-gradient(rgba(0, 0, 0, 0), #f2f2f2); + background: linear-gradient(rgba(0, 0, 0, 0), #f2f2f2) +} + .infoBanner { color: #000; background: #fff3a5; padding: 1em; + -webkit-border-radius: .25em; border-radius: .25em } diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index c53e80e80..1892423ae 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -17,12 +17,19 @@ 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%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#000420', endColorstr='#000420',GradientType=1 ); } .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)) } @@ -37,6 +44,7 @@ html { .backgroundContainer { background: url(bg.jpg) center top no-repeat #030322; + -webkit-background-size: cover; background-size: cover } @@ -261,7 +269,7 @@ a[data-role=button] { color: rgba(255, 255, 255, .78) } -@supports (backdrop-filter:blur(10px)) { +@supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)) { .appfooter-blurred { background: rgba(6, 37, 111, .7); backdrop-filter: blur(20px) @@ -333,6 +341,7 @@ a[data-role=button] { color: inherit; background: rgba(0, 0, 0, .5); border: .07em solid transparent; + -webkit-border-radius: .15em; border-radius: .15em } @@ -491,10 +500,18 @@ a[data-role=button] { color: #fff } +.itemBackdropFader { + background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0)), to(#181818)); + background: -webkit-linear-gradient(rgba(0, 0, 0, 0), #181818); + background: -o-linear-gradient(rgba(0, 0, 0, 0), #181818); + background: linear-gradient(rgba(0, 0, 0, 0), #181818) +} + .infoBanner { color: #0e0f2d; background: #dbe6ff; padding: 1em; + -webkit-border-radius: .25em; border-radius: .25em } @@ -532,7 +549,7 @@ a[data-role=button] { } ::-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) } ::-webkit-scrollbar-track-piece { @@ -541,7 +558,7 @@ a[data-role=button] { ::-webkit-scrollbar-thumb:horizontal, ::-webkit-scrollbar-thumb:vertical { - border-radius: 2px; + -webkit-border-radius: 2px; background: center no-repeat #888 } diff --git a/src/themes/wmc/theme.css b/src/themes/wmc/theme.css index e51f4311e..0367f080d 100644 --- a/src/themes/wmc/theme.css +++ b/src/themes/wmc/theme.css @@ -23,12 +23,19 @@ 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) } .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)) } @@ -39,6 +46,9 @@ 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) } @@ -160,6 +170,9 @@ 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) } @@ -226,6 +239,7 @@ html { color: inherit; background: rgba(255, 255, 255, .2); border: .07em solid rgba(255, 255, 255, .135); + -webkit-border-radius: .15em; border-radius: .15em } @@ -377,10 +391,18 @@ html { color: #fff } +.itemBackdropFader { + background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0)), to(#115E9E)); + background: -webkit-linear-gradient(rgba(0, 0, 0, 0), #115E9E); + background: -o-linear-gradient(rgba(0, 0, 0, 0), #115E9E); + background: linear-gradient(rgba(0, 0, 0, 0), #115E9E) +} + .infoBanner { color: #000; background: #fff3a5; padding: 1em; + -webkit-border-radius: .25em; border-radius: .25em } @@ -412,7 +434,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) } ::-webkit-scrollbar-track-piece { @@ -421,7 +443,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 b9b3cc7c2e565f50d0d1aab31539983ca7dc8cc9 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 9 Jan 2020 19:40:23 +0100 Subject: [PATCH 014/114] Revert "Add autoprefix to postcss" This reverts commit 509af1a0c304ed41582f8dc966cbefc7fd3c827b. --- package.json | 4 +- postcss.config.js | 5 -- webpack.dev.js | 2 +- webpack.prod.js | 4 +- yarn.lock | 212 +++++----------------------------------------- 5 files changed, 25 insertions(+), 202 deletions(-) delete mode 100644 postcss.config.js diff --git a/package.json b/package.json index 76d01b184..c5f0e75c8 100644 --- a/package.json +++ b/package.json @@ -5,14 +5,12 @@ "repository": "https://github.com/jellyfin/jellyfin-web", "license": "GPL-2.0-or-later", "devDependencies": { - "autoprefixer": "^9.7.3", "clean-webpack-plugin": "^3.0.0", - "copy-webpack-plugin": "^5.1.1", + "copy-webpack-plugin": "^5.0.3", "css-loader": "^2.1.0", "eslint": "^5.16.0", "file-loader": "^3.0.1", "html-webpack-plugin": "^3.2.0", - "postcss-loader": "^3.0.0", "style-loader": "^0.23.1", "webpack": "^4.41.0", "webpack-cli": "^3.3.9", diff --git a/postcss.config.js b/postcss.config.js deleted file mode 100644 index a26de7e9f..000000000 --- a/postcss.config.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - plugins: [ - require('autoprefixer') - ] -} diff --git a/webpack.dev.js b/webpack.dev.js index d3791e679..3aecac1a5 100644 --- a/webpack.dev.js +++ b/webpack.dev.js @@ -15,7 +15,7 @@ module.exports = merge(common, { rules: [ { test: /\.css$/i, - use: ["style-loader", "css-loader", "postcss-loader"] + use: ["style-loader", "css-loader"] }, { test: /\.(png|jpg|gif)$/i, diff --git a/webpack.prod.js b/webpack.prod.js index 319d8f14f..8880a2168 100644 --- a/webpack.prod.js +++ b/webpack.prod.js @@ -13,12 +13,12 @@ module.exports = merge(common, { rules: [ { test: /\.css$/i, - use: ["style-loader", "css-loader", "postcss-loader"] + use: ["style-loader", "css-loader"] }, { test: /\.(png|jpg|gif)$/i, use: ["file-loader"] } ] - } + }, }); diff --git a/yarn.lock b/yarn.lock index 705eac6a1..6a7d56f9d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -461,19 +461,6 @@ atob@^2.1.1: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^9.7.3: - version "9.7.3" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.3.tgz#fd42ed03f53de9beb4ca0d61fb4f7268a9bb50b4" - integrity sha512-8T5Y1C5Iyj6PgkPSFd0ODvK9DIleuPKUPYniNxybS47g2k2wFgLZ46lGQHlBuGKIAEV8fbCDfKCCRS1tvOgc3Q== - dependencies: - browserslist "^4.8.0" - caniuse-lite "^1.0.30001012" - chalk "^2.4.2" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^7.0.23" - postcss-value-parser "^4.0.2" - balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -648,15 +635,6 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.8.0: - version "4.8.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.2.tgz#b45720ad5fbc8713b7253c20766f701c9a694289" - integrity sha512-+M4oeaTplPm/f1pXDw84YohEv7B1i/2Aisei8s4s6k3QsoSHa7i5sz8u/cGQkkatCPxMASKxPualR4wwYgVboA== - dependencies: - caniuse-lite "^1.0.30001015" - electron-to-chromium "^1.3.322" - node-releases "^1.1.42" - buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -696,17 +674,16 @@ bytes@3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -cacache@^12.0.2: - version "12.0.2" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.2.tgz#8db03205e36089a3df6954c66ce92541441ac46c" - integrity sha512-ifKgxH2CKhJEg6tNdAwziu6Q33EvuG26tYcda6PT3WKisZcYDXsnEdnRv67Po3yCzFfaSoMjGZzJyD2c3DT1dg== +cacache@^11.3.3: + version "11.3.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.3.tgz#8bd29df8c6a718a6ebd2d010da4d7972ae3bbadc" + integrity sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA== dependencies: bluebird "^3.5.5" chownr "^1.1.1" figgy-pudding "^3.5.1" glob "^7.1.4" graceful-fs "^4.1.15" - infer-owner "^1.0.3" lru-cache "^5.1.1" mississippi "^3.0.0" mkdirp "^0.5.1" @@ -717,10 +694,10 @@ cacache@^12.0.2: unique-filename "^1.1.1" y18n "^4.0.0" -cacache@^12.0.3: - version "12.0.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" - integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== +cacache@^12.0.2: + version "12.0.2" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.2.tgz#8db03205e36089a3df6954c66ce92541441ac46c" + integrity sha512-ifKgxH2CKhJEg6tNdAwziu6Q33EvuG26tYcda6PT3WKisZcYDXsnEdnRv67Po3yCzFfaSoMjGZzJyD2c3DT1dg== dependencies: bluebird "^3.5.5" chownr "^1.1.1" @@ -758,25 +735,6 @@ call-me-maybe@^1.0.1: resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= - dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= - callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -795,11 +753,6 @@ camelcase@^5.0.0, camelcase@^5.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caniuse-lite@^1.0.30001012, caniuse-lite@^1.0.30001015: - version "1.0.30001017" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001017.tgz#d3ad6ec18148b9bd991829958d9d7e562bb78cd6" - integrity sha512-EDnZyOJ6eYh6lHmCvCdHAFbfV4KJ9lSdfv4h/ppEhrU/Yudkl7jujwMZ1we6RX7DXqBfT04pVMQ4J+1wcTlsKA== - chalk@2.4.2, chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -1085,12 +1038,12 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -copy-webpack-plugin@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz#5481a03dea1123d88a988c6ff8b78247214f0b88" - integrity sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg== +copy-webpack-plugin@^5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.0.4.tgz#c78126f604e24f194c6ec2f43a64e232b5d43655" + integrity sha512-YBuYGpSzoCHSSDGyHy6VJ7SHojKp6WHT4D7ItcQFNAYx2hrwkMe56e97xfVR0/ovDuMTrMffXUiltvQljtAGeg== dependencies: - cacache "^12.0.3" + cacache "^11.3.3" find-cache-dir "^2.1.0" glob-parent "^3.1.0" globby "^7.1.1" @@ -1098,9 +1051,9 @@ copy-webpack-plugin@^5.1.1: loader-utils "^1.2.3" minimatch "^3.0.4" normalize-path "^3.0.0" - p-limit "^2.2.1" + p-limit "^2.2.0" schema-utils "^1.0.0" - serialize-javascript "^2.1.2" + serialize-javascript "^1.7.0" webpack-log "^2.0.0" core-util-is@~1.0.0: @@ -1108,16 +1061,6 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cosmiconfig@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - create-ecdh@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" @@ -1489,11 +1432,6 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.322: - version "1.3.322" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz#a6f7e1c79025c2b05838e8e344f6e89eb83213a8" - integrity sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA== - elliptic@^6.0.0: version "6.5.0" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.0.tgz#2b8ed4c891b7de3200e14412a5b8248c7af505ca" @@ -1555,13 +1493,6 @@ errno@^0.1.3, errno@~0.1.7: dependencies: prr "~1.0.1" -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - es-abstract@^1.5.1: version "1.16.2" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.16.2.tgz#4e874331645e9925edef141e74fc4bd144669d34" @@ -2484,21 +2415,6 @@ ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -import-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" - integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= - dependencies: - import-from "^2.1.0" - -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - import-fresh@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.1.0.tgz#6d33fa1dcef6df930fae003446f33415af905118" @@ -2507,13 +2423,6 @@ import-fresh@^3.0.0: parent-module "^1.0.0" resolve-from "^4.0.0" -import-from@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" - integrity sha1-M1238qev/VOqpHHUuAId7ja387E= - dependencies: - resolve-from "^3.0.0" - import-local@2.0.0, import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" @@ -2646,11 +2555,6 @@ is-arguments@^1.0.4: resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -2705,11 +2609,6 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= - is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -2852,7 +2751,7 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.13.0, js-yaml@^3.13.1: +js-yaml@^3.13.0: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== @@ -2860,7 +2759,7 @@ js-yaml@^3.13.0, js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: +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" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== @@ -3380,13 +3279,6 @@ node-pre-gyp@^0.12.0: semver "^5.3.0" tar "^4" -node-releases@^1.1.42: - version "1.1.44" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.44.tgz#cd66438a6eb875e3eb012b6a12e48d9f4326ffd7" - integrity sha512-NwbdvJyR7nrcGrXvKAvzc5raj/NkoJudkarh2yIpJ4t0NH4aqjUDz/486P+ynIW5eokKOfzGNRdYoLfBlomruw== - dependencies: - semver "^6.3.0" - nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" @@ -3407,11 +3299,6 @@ normalize-path@^3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= - npm-bundled@^1.0.1: version "1.0.6" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" @@ -3449,11 +3336,6 @@ nth-check@~1.0.1: dependencies: boolbase "~1.0.0" -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= - number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" @@ -3614,20 +3496,13 @@ p-is-promise@^2.0.0: resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== -p-limit@^2.0.0: +p-limit@^2.0.0, p-limit@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== dependencies: p-try "^2.0.0" -p-limit@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" - integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== - dependencies: - p-try "^2.0.0" - p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" @@ -3692,14 +3567,6 @@ parse-asn1@^5.0.0: pbkdf2 "^3.0.3" safe-buffer "^5.1.1" -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" @@ -3816,24 +3683,6 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -postcss-load-config@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" - integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q== - dependencies: - cosmiconfig "^5.0.0" - import-cwd "^2.0.0" - -postcss-loader@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" - integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== - dependencies: - loader-utils "^1.1.0" - postcss "^7.0.0" - postcss-load-config "^2.0.0" - schema-utils "^1.0.0" - postcss-modules-extract-imports@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" @@ -3880,20 +3729,6 @@ postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postcss-value-parser@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9" - integrity sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ== - -postcss@^7.0.0, postcss@^7.0.23: - version "7.0.25" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.25.tgz#dd2a2a753d50b13bed7a2009b4a18ac14d9db21e" - integrity sha512-NXXVvWq9icrm/TgQC0O6YVFi4StfJz46M1iNd/h6B26Nvh/HKI+q4YZtFN/EjcInZliEscO/WL10BXnc1E5nwg== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - 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" @@ -4347,11 +4182,6 @@ serialize-javascript@^1.7.0: resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65" integrity sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA== -serialize-javascript@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" - integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== - serve-index@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" @@ -5099,10 +4929,10 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" -webcomponents.js@^0.7.24: +webcomponents.js-2@^0.7.24: version "0.7.24" - resolved "https://registry.yarnpkg.com/webcomponents.js/-/webcomponents.js-0.7.24.tgz#2116fbfa1468ec416a7befdaa333e1d118f69c04" - integrity sha1-IRb7+hRo7EFqe+/aozPh0Rj2nAQ= + resolved "https://registry.yarnpkg.com/webcomponents.js-2/-/webcomponents.js-2-0.7.24.tgz#c0ffef99749c3970aa3ae71363ea6f0a40bcada6" + integrity sha1-wP/vmXScOXCqOucTY+pvCkC8raY= webpack-cli@^3.3.9: version "3.3.9" From 5fb98e950bea3f59608ec373d96603e44ce1ce73 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 19 Jan 2020 11:52:19 +0100 Subject: [PATCH 015/114] Correct the reverted changes that should be kept --- package.json | 2 +- src/assets/css/dashboard.css | 2 ++ src/assets/css/librarybrowser.css | 34 ++++++------------- src/assets/css/scrollstyles.css | 4 +-- src/assets/css/videoosd.css | 25 ++++++++++++-- src/components/cardbuilder/card.css | 3 +- .../remotecontrol/remotecontrol.css | 1 + src/themes/appletv/theme.css | 7 ---- src/themes/blueradiance/theme.css | 7 ---- src/themes/dark/theme.css | 7 ---- src/themes/light/theme.css | 7 ---- src/themes/purplehaze/theme.css | 7 ---- src/themes/wmc/theme.css | 7 ---- webpack.prod.js | 2 +- yarn.lock | 32 ++++++++--------- 15 files changed, 56 insertions(+), 91 deletions(-) diff --git a/package.json b/package.json index c5f0e75c8..09b793cd3 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "license": "GPL-2.0-or-later", "devDependencies": { "clean-webpack-plugin": "^3.0.0", - "copy-webpack-plugin": "^5.0.3", + "copy-webpack-plugin": "^5.1.1", "css-loader": "^2.1.0", "eslint": "^5.16.0", "file-loader": "^3.0.1", diff --git a/src/assets/css/dashboard.css b/src/assets/css/dashboard.css index 1c69dfccb..d1f0b540a 100644 --- a/src/assets/css/dashboard.css +++ b/src/assets/css/dashboard.css @@ -1,5 +1,6 @@ .dashboardColumn, .dashboardSections { + flex-direction: column; -webkit-box-orient: vertical; -webkit-box-direction: normal } @@ -416,6 +417,7 @@ div[data-role=controlgroup] a.ui-btn-active { } a[data-role=button] { + background-clip: padding-box; -webkit-font-smoothing: antialiased; -webkit-user-select: none; -webkit-background-clip: padding-box; diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index c03cc2691..8b312eed4 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -488,9 +488,11 @@ } .detailImageContainer { - width: 280px; - margin-right: 2em; - flex-shrink: 0; + margin: 1.25em 0; + position: sticky; + top: 15%; + float: left; + width: 22.786458333333332vw; } .detailPagePrimaryContent { @@ -504,8 +506,8 @@ width: 25em; height: 9.375em; position: absolute; - top: 13.5%; - right: 19.5%; + top: 14.5%; + right: 10.5%; -webkit-background-size: contain; background-size: contain } @@ -535,13 +537,9 @@ } .itemDetailImage { - width: 100%; + 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 .0725em .29em 0 rgba(0, 0, 0, .37) -} - -.thumbDetailImageContainer { - width: 400px } @media all and (max-width:62.5em) { @@ -554,19 +552,6 @@ } } -@media all and (min-width:62.5em) { - .itemBackdrop { - display: none - } - - .detailPagePrimaryContainer { - display: -webkit-box; - display: -webkit-flex; - display: flex; - margin-bottom: 3em - } -} - @media all and (max-width:75em) { .lnkSibling { display: none !important @@ -621,6 +606,7 @@ .detailButton-mobile, .mainDetailButtons { + display: flex; display: -webkit-box; display: -webkit-flex } diff --git a/src/assets/css/scrollstyles.css b/src/assets/css/scrollstyles.css index aa2f7dafa..431cd2ba1 100644 --- a/src/assets/css/scrollstyles.css +++ b/src/assets/css/scrollstyles.css @@ -11,8 +11,6 @@ .hiddenScrollX, .layout-tv .scrollX { -ms-overflow-style: none; - /* Can't do this because it not only hides the scrollbar, but also prevents scrolling */ - /*overflow: -moz-scrollbars-none;*/ } .hiddenScrollX-forced { @@ -50,4 +48,4 @@ .hiddenScrollY::-webkit-scrollbar, .layout-tv .smoothScrollY::-webkit-scrollbar, .layout-tv .scrollY::-webkit-scrollbar { width: 0 !important; display: none; -} \ No newline at end of file +} diff --git a/src/assets/css/videoosd.css b/src/assets/css/videoosd.css index f9c4798e9..c43696dd4 100644 --- a/src/assets/css/videoosd.css +++ b/src/assets/css/videoosd.css @@ -1,5 +1,6 @@ .chapterThumbTextContainer, .videoOsdBottom { + user-select: none; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none @@ -137,8 +138,10 @@ .osdMediaInfo, .volumeButtons { + display: flex; display: -webkit-box; display: -webkit-flex; + align-items: center; -webkit-box-align: center } @@ -218,9 +221,25 @@ margin-left: auto; } -@-moz-keyframes spin { 100% { -moz-transform: rotate(360deg); } } -@-webkit-keyframes spin { 100% { -webkit-transform: rotate(360deg); } } -@keyframes spin { 100% { -webkit-transform: rotate(360deg); transform:rotate(360deg); } } +@-moz-keyframes spin { + 100% { + -moz-transform: rotate(360deg); + } +} + +@-webkit-keyframes spin { + 100% { + -webkit-transform: rotate(360deg); + } +} + +@keyframes spin { + 100% { + -webkit-transform: rotate(360deg); + transform:rotate(360deg); + } +} + .osdMediaStatus .animate { -webkit-animation:spin 4s linear infinite; -moz-animation:spin 4s linear infinite; diff --git a/src/components/cardbuilder/card.css b/src/components/cardbuilder/card.css index e63b9a4bb..96d0698f4 100644 --- a/src/components/cardbuilder/card.css +++ b/src/components/cardbuilder/card.css @@ -83,7 +83,8 @@ button { /* These both are needed in case cardBox is a button */ -webkit-tap-highlight-color: rgba(0,0,0,0); outline: none !important; - contain: layout style; + contain: layout; + contain: style; } .card.show-focus:not(.show-animation) .cardBox { diff --git a/src/components/remotecontrol/remotecontrol.css b/src/components/remotecontrol/remotecontrol.css index 9bd91731a..cbd2f1fa0 100644 --- a/src/components/remotecontrol/remotecontrol.css +++ b/src/components/remotecontrol/remotecontrol.css @@ -53,6 +53,7 @@ .nowPlayingInfoControls, .nowPlayingTime { + display: flex; display: -webkit-box; display: -webkit-flex } diff --git a/src/themes/appletv/theme.css b/src/themes/appletv/theme.css index d194dc203..6e580ebea 100644 --- a/src/themes/appletv/theme.css +++ b/src/themes/appletv/theme.css @@ -404,13 +404,6 @@ html { color: #fff } -.itemBackdropFader { - background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0)), to(#E4E2DC)); - background: -webkit-linear-gradient(rgba(0, 0, 0, 0), #E4E2DC); - background: -o-linear-gradient(rgba(0, 0, 0, 0), #E4E2DC); - background: linear-gradient(rgba(0, 0, 0, 0), #E4E2DC) -} - .infoBanner { color: #000; background: #fff3a5; diff --git a/src/themes/blueradiance/theme.css b/src/themes/blueradiance/theme.css index 02e8e46ea..0c13a696b 100644 --- a/src/themes/blueradiance/theme.css +++ b/src/themes/blueradiance/theme.css @@ -407,13 +407,6 @@ html { color: #fff } -.itemBackdropFader { - background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0)), to(#181818)); - background: -webkit-linear-gradient(rgba(0, 0, 0, 0), #181818); - background: -o-linear-gradient(rgba(0, 0, 0, 0), #181818); - background: linear-gradient(rgba(0, 0, 0, 0), #181818) -} - .infoBanner { color: #ddd; background: #111; diff --git a/src/themes/dark/theme.css b/src/themes/dark/theme.css index 5758f5d09..fee28f50f 100644 --- a/src/themes/dark/theme.css +++ b/src/themes/dark/theme.css @@ -377,13 +377,6 @@ html { color: #fff } -.itemBackdropFader { - background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0)), to(#101010)); - background: -webkit-linear-gradient(rgba(0, 0, 0, 0), #101010); - background: -o-linear-gradient(rgba(0, 0, 0, 0), #101010); - background: linear-gradient(rgba(0, 0, 0, 0), #101010) -} - .infoBanner { color: #ddd; background: #111; diff --git a/src/themes/light/theme.css b/src/themes/light/theme.css index 65a9d5cf9..0d96abc53 100644 --- a/src/themes/light/theme.css +++ b/src/themes/light/theme.css @@ -396,13 +396,6 @@ html { color: #fff } -.itemBackdropFader { - background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0)), to(#f2f2f2)); - background: -webkit-linear-gradient(rgba(0, 0, 0, 0), #f2f2f2); - background: -o-linear-gradient(rgba(0, 0, 0, 0), #f2f2f2); - background: linear-gradient(rgba(0, 0, 0, 0), #f2f2f2) -} - .infoBanner { color: #000; background: #fff3a5; diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index 1892423ae..c8d7aa465 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -500,13 +500,6 @@ a[data-role=button] { color: #fff } -.itemBackdropFader { - background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0)), to(#181818)); - background: -webkit-linear-gradient(rgba(0, 0, 0, 0), #181818); - background: -o-linear-gradient(rgba(0, 0, 0, 0), #181818); - background: linear-gradient(rgba(0, 0, 0, 0), #181818) -} - .infoBanner { color: #0e0f2d; background: #dbe6ff; diff --git a/src/themes/wmc/theme.css b/src/themes/wmc/theme.css index 0367f080d..290164080 100644 --- a/src/themes/wmc/theme.css +++ b/src/themes/wmc/theme.css @@ -391,13 +391,6 @@ html { color: #fff } -.itemBackdropFader { - background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0)), to(#115E9E)); - background: -webkit-linear-gradient(rgba(0, 0, 0, 0), #115E9E); - background: -o-linear-gradient(rgba(0, 0, 0, 0), #115E9E); - background: linear-gradient(rgba(0, 0, 0, 0), #115E9E) -} - .infoBanner { color: #000; background: #fff3a5; diff --git a/webpack.prod.js b/webpack.prod.js index 8880a2168..2055051da 100644 --- a/webpack.prod.js +++ b/webpack.prod.js @@ -20,5 +20,5 @@ module.exports = merge(common, { use: ["file-loader"] } ] - }, + } }); diff --git a/yarn.lock b/yarn.lock index 6a7d56f9d..1526957e4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -694,10 +694,10 @@ cacache@^11.3.3: unique-filename "^1.1.1" y18n "^4.0.0" -cacache@^12.0.2: - version "12.0.2" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.2.tgz#8db03205e36089a3df6954c66ce92541441ac46c" - integrity sha512-ifKgxH2CKhJEg6tNdAwziu6Q33EvuG26tYcda6PT3WKisZcYDXsnEdnRv67Po3yCzFfaSoMjGZzJyD2c3DT1dg== +cacache@^12.0.3: + version "12.0.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" + integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== dependencies: bluebird "^3.5.5" chownr "^1.1.1" @@ -1038,12 +1038,12 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -copy-webpack-plugin@^5.0.3: - version "5.0.4" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.0.4.tgz#c78126f604e24f194c6ec2f43a64e232b5d43655" - integrity sha512-YBuYGpSzoCHSSDGyHy6VJ7SHojKp6WHT4D7ItcQFNAYx2hrwkMe56e97xfVR0/ovDuMTrMffXUiltvQljtAGeg== +copy-webpack-plugin@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz#5481a03dea1123d88a988c6ff8b78247214f0b88" + integrity sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg== dependencies: - cacache "^11.3.3" + cacache "^12.0.3" find-cache-dir "^2.1.0" glob-parent "^3.1.0" globby "^7.1.1" @@ -1051,9 +1051,9 @@ copy-webpack-plugin@^5.0.3: loader-utils "^1.2.3" minimatch "^3.0.4" normalize-path "^3.0.0" - p-limit "^2.2.0" + p-limit "^2.2.1" schema-utils "^1.0.0" - serialize-javascript "^1.7.0" + serialize-javascript "^2.1.2" webpack-log "^2.0.0" core-util-is@~1.0.0: @@ -2751,7 +2751,7 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.13.0: +js-yaml@^3.13.0, js-yaml@^3.13.1: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== @@ -2759,7 +2759,7 @@ js-yaml@^3.13.0: argparse "^1.0.7" esprima "^4.0.0" -json-parse-better-errors@^1.0.2: +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" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== @@ -4929,10 +4929,10 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" -webcomponents.js-2@^0.7.24: +webcomponents.js@^0.7.24: version "0.7.24" - resolved "https://registry.yarnpkg.com/webcomponents.js-2/-/webcomponents.js-2-0.7.24.tgz#c0ffef99749c3970aa3ae71363ea6f0a40bcada6" - integrity sha1-wP/vmXScOXCqOucTY+pvCkC8raY= + resolved "https://registry.yarnpkg.com/webcomponents.js/-/webcomponents.js-0.7.24.tgz#2116fbfa1468ec416a7befdaa333e1d118f69c04" + integrity sha1-IRb7+hRo7EFqe+/aozPh0Rj2nAQ= webpack-cli@^3.3.9: version "3.3.9" From 91f5866d354a3dc1ae1db0910e49f4e87dde3c8e Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Tue, 21 Jan 2020 20:13:19 +0100 Subject: [PATCH 016/114] Keep standard properties in CSS along with vendored --- src/assets/css/librarybrowser.css | 1 + src/elements/emby-checkbox/emby-checkbox.css | 10 ++++++++++ src/elements/emby-slider/emby-slider.css | 1 + 3 files changed, 12 insertions(+) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 8b312eed4..6ca85ae94 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -110,6 +110,7 @@ .detailButton-mobile, .skinHeader { + flex-direction: column; -webkit-flex-direction: column; -webkit-box-orient: vertical; -webkit-box-direction: normal diff --git a/src/elements/emby-checkbox/emby-checkbox.css b/src/elements/emby-checkbox/emby-checkbox.css index 5641893f6..a31691f9d 100644 --- a/src/elements/emby-checkbox/emby-checkbox.css +++ b/src/elements/emby-checkbox/emby-checkbox.css @@ -115,6 +115,16 @@ margin-bottom: .25em; } +@keyframes repaintChrome { + from { + padding: 0; + } + + to { + padding: 0; + } +} + @-webkit-keyframes repaintChrome { from { padding: 0; diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index 945cdd521..71f260772 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -1,4 +1,5 @@ _:-ms-input-placeholder { + appearance: none; -ms-appearance: none; height: 2.223em; margin: 0; From e706f8bee0b99acbd6aa3434198ff64303bea2f0 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Wed, 22 Jan 2020 03:29:52 +0300 Subject: [PATCH 017/114] 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 54fb6ce5e..ceecb2aba 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 018/114] 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 c37e5e9a4..742cae112 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 019/114] 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 a6e42967a..97383dfd4 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 020/114] 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 dcf47b5b3..1db13b07e 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 021/114] 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 69adbd1f5..dc222176c 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 022/114] 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 dc222176c..33e976fe0 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 023/114] 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 33e976fe0..fdd81154a 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 97383dfd4..b9f990d62 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 024/114] 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 cdcc681aa..31ded5c59 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 0d3a2179da4914448f5d1e0300d49fd2ca09febd Mon Sep 17 00:00:00 2001 From: Quentin Date: Wed, 22 Jan 2020 19:50:00 +0000 Subject: [PATCH 025/114] Translated using Weblate (English (United Kingdom)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/en_GB/ --- src/strings/en-gb.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 240ca57fa..109346325 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -1461,5 +1461,6 @@ "ButtonAddImage": "Add Image", "OptionRandom": "Random", "SelectAdminUsername": "Please select a username for the admin account.", - "ButtonSplit": "Split" + "ButtonSplit": "Split", + "HeaderNavigation": "Navigation" } From 3634ae33830f13a421c928f5802349592ec8c948 Mon Sep 17 00:00:00 2001 From: 4d1m Date: Wed, 22 Jan 2020 07:40:03 +0000 Subject: [PATCH 026/114] Translated using Weblate (Romanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ro/ --- src/strings/ro.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/ro.json b/src/strings/ro.json index 80ddcbdd3..9fa92c69d 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -1453,5 +1453,6 @@ "TabCodecs": "Codecuri", "TabCatalog": "Catalog", "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." + "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 bee1b9f979b7d417f92d9876bccf76583c9056be Mon Sep 17 00:00:00 2001 From: denikrejn1000 Date: Wed, 22 Jan 2020 19:51:39 +0000 Subject: [PATCH 027/114] Translated using Weblate (Serbian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sr/ --- src/strings/sr.json | 67 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) diff --git a/src/strings/sr.json b/src/strings/sr.json index 8b1abcfa7..394ef9352 100644 --- a/src/strings/sr.json +++ b/src/strings/sr.json @@ -30,5 +30,70 @@ "AddItemToCollectionHelp": "Додајте ставке у колекцију претрагом па затим десним кликом у менију изаберите да додате у колекцију.", "Add": "Додај", "Actor": "Глумац", - "AccessRestrictedTryAgainLater": "Приступ је тренутно ограничен. Покушајте поново касније." + "AccessRestrictedTryAgainLater": "Приступ је тренутно ограничен. Покушајте поново касније.", + "ButtonPause": "Пауза", + "ButtonParentalControl": "Родитељска контрола", + "ButtonOpen": "Отвори", + "ButtonOk": "Ок", + "ButtonOff": "Искључи", + "ButtonNextTrack": "Следећа трака", + "ButtonNew": "Ново", + "ButtonNetwork": "Мрежа", + "ButtonMore": "Више", + "ButtonManualLogin": "Ручни логин", + "ButtonLibraryAccess": "Приступ библиотеци", + "ButtonLearnMore": "Научи више", + "ButtonInfo": "Информације", + "ButtonHome": "Почетна страна", + "ButtonHelp": "Помоћ", + "ButtonGuide": "Водич", + "ButtonGotIt": "У реду", + "ButtonFullscreen": "Пун екран", + "ButtonForgotPassword": "Заборављена шифра", + "ButtonFilter": "Филтер", + "ButtonDownload": "Скини (даунлоадуј)", + "ButtonDown": "Доле", + "ButtonDeleteImage": "Обриши слику", + "ButtonDelete": "Обриши", + "ButtonConnect": "Повежи се", + "ButtonChangeServer": "Промени Сервер", + "ButtonCancel": "Откажи", + "ButtonBack": "Назад", + "ButtonAudioTracks": "Избор језика звука", + "ButtonArrowUp": "Горе", + "ButtonArrowRight": "Десно", + "ButtonArrowLeft": "Лево", + "ButtonArrowDown": "Доле", + "ButtonAddUser": "Додај корисника", + "ButtonAddServer": "Додај сервер", + "ButtonAddScheduledTaskTrigger": "Додај прекидач", + "ButtonAddMediaLibrary": "Додај каталог медија", + "ButtonAddImage": "Додај слику", + "ButtonAdd": "Додај", + "BrowsePluginCatalogMessage": "Претражуј наш каталог доступних додатака", + "Browse": "Изабери", + "BoxRear": "Омот (позади)", + "Box": "Омот", + "Blacklist": "Црна листа", + "BirthPlaceValue": "Место рођења", + "BirthLocation": "Место рођења", + "BirthDateValue": "Рођен", + "AutoBasedOnLanguageSetting": "Аутоматски (зависи од подешавања језика)", + "Audio": "Звук", + "AttributeNew": "Ново", + "AroundTime": "Около", + "AnyLanguage": "Било који језик", + "AlwaysPlaySubtitles": "Увек налепи титлове", + "AllowRemoteAccess": "Дозволи удаљено конектовање на Jellyfin Server.", + "AllowOnTheFlySubtitleExtraction": "Дозволи екстракцију титлова у реалном времену", + "AllowMediaConversionHelp": "Дозволи или забрани приступ функционалности конвертовања", + "AllowMediaConversion": "Дозволи конверзију медија", + "AllowHWTranscodingHelp": "Дозволи тјунеру да конвертује стрим у релном времену. Ово може да смањи потребу за конверзију на серверу.", + "AllLibraries": "Све библиотеке", + "AllLanguages": "Сви језици", + "AllEpisodes": "Све епизоде", + "AllChannels": "Сви канали", + "All": "Све", + "Alerts": "Упозорења", + "Aired": "Емитовано" } From f647a1b4c3c71dc7a82d0940afd2a03e9b96ee6f Mon Sep 17 00:00:00 2001 From: Nyanmisaka Date: Fri, 24 Jan 2020 01:04:07 +0800 Subject: [PATCH 028/114] 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 18b85a6dc..0f8133250 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 029/114] 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 fdd81154a..9c15fbc18 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 030/114] 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 cbd2f1fa0..508c8d674 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 6e580ebea..806482d5e 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 0c13a696b..5469076a4 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 fee28f50f..d32b47279 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 0d96abc53..0824134df 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 c8d7aa465..ebd290e94 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 290164080..5020414cb 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 031/114] 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 b1b1c30dc..609b24a78 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 a71b053a2..f47b96ba6 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 1059bf575..21bcdf593 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 3610eef2a..000000000 --- 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 6b3dc90d4..000000000 --- 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 d1a981148..bd91786f8 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 f852dacc4..4105a8611 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 d7c3a1c8a..7c3daf015 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 032/114] 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 0f8133250..df18a60d4 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 033/114] 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 df18a60d4..d39b4d5d7 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 034/114] 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 d39b4d5d7..11e5453ba 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 035/114] 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 11e5453ba..0644547f0 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 036/114] 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 0644547f0..11a26b570 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 037/114] 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 11a26b570..3f412cbfb 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 038/114] 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 9fa92c69d..45be05718 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 039/114] 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 609b24a78..c03ae0bce 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 040/114] 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 3f412cbfb..b9cc5d7d3 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 041/114] 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 b9cc5d7d3..d27a12e14 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 042/114] 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 0971018bb..d1ed03138 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 5dc12aeee..6392c3a1a 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 043/114] 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 d888eb570..e52329c87 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 044/114] 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 9df0ee5f1..9305dbca3 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 a3427c655..69c996877 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 045/114] 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 7d8be1621..d0f5404c1 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 046/114] Add stylelint --- package.json | 3 +- yarn.lock | 1205 +++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 1197 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 09b793cd3..f46fe5903 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 1526957e4..b79e6a51f 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 047/114] 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 c43696dd4..833cfcb4f 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 edfa10197..26edaaef3 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 048/114] 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 96d0698f4..d0f9a6584 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 f774c6919..7f9faafe1 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 b9d6355bd..6e363a898 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 2201b2cd7..f78fa21e7 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 a31691f9d..254f092ac 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 0a982e975..50674313a 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 049/114] 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 d1f0b540a..7c905b2c2 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 d0f9a6584..c5e56c7a8 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 f78fa21e7..60f0e943c 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 71f260772..f42d6e548 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 5469076a4..6040d9b19 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 ebd290e94..12045f50b 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 5020414cb..d0691877b 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 050/114] 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 12f1eaf4b..c52eb653e 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 051/114] 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 c5e56c7a8..ede4c7943 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 7dd059414..ad3f4e797 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 25fdc5b93..a60c131f0 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 052/114] 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 7c905b2c2..507179af2 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 6ca85ae94..f6dbed1cb 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 ede4c7943..00a11a8eb 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 ad3f4e797..c6807a960 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 bdd9cd8ac..347d983f9 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 6d8472fc1..210746be1 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 76b28c420..391f131a6 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 806482d5e..03a1128df 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 6040d9b19..a4c4531e4 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 d32b47279..006aabf85 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 0824134df..449ddb091 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 12045f50b..02c6d844f 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 d0691877b..6fd3ed001 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 053/114] 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 f42d6e548..22c0af5ed 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 054/114] 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 112e62472..b4552a50e 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 055/114] 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 507179af2..95f1cabcf 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 02c6d844f..e272a9ab8 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 056/114] 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 f6dbed1cb..8102f9084 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 7a559e173..5f0e82dd8 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 c2d089e1a..89e0a178d 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 7f9faafe1..6608235c2 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 b2c4fca91..3f0feeca2 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 60f0e943c..fc5567967 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 03a1128df..825639973 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 a4c4531e4..8cade96fc 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 006aabf85..7e0eec8c6 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 449ddb091..159f50fa4 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 e272a9ab8..6594b48eb 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 6fd3ed001..dcc4a8b99 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 057/114] 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 8102f9084..bc73dc784 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 6786824bd..f09c10992 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 c6807a960..687998275 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 5f0e82dd8..34976e81e 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 89e0a178d..774fac4f4 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 c8492f529..baa7845da 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 013863173..9d8ce097c 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 058/114] 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 687998275..6b895248b 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 26edaaef3..00ef2c449 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 22c0af5ed..1f318ebfa 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 059/114] 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 789bc1db2..4cb342e34 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 060/114] 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 95f1cabcf..d912a4930 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 33f060836..960cd69ea 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 47fa7bd53..1d133d13b 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 bc73dc784..e4dc776d5 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 93e3e029c..fa3309453 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 542c7c8f2..5109ca1da 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 292fc6745..5b060dd0e 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 833cfcb4f..57d27a9c5 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 0f3f22f07..d47293e00 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 9851c2d7b..393b04b24 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 45df67c48..8751308eb 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 6608235c2..7ec6b4e73 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 508c8d674..cc60bd55a 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 a60c131f0..2e27f4821 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 825639973..58ea6618c 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 8cade96fc..2abc0d6b1 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 7e0eec8c6..e02de9379 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 000000000..64e9bfdd2 --- /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 159f50fa4..292db2b2b 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 6594b48eb..5747396ac 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 dcc4a8b99..cef12280f 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 061/114] 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 d912a4930..6c15a9bc6 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 57d27a9c5..c5709aee0 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 f09c10992..32e60292a 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 5747396ac..1e17a91a4 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 062/114] 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 00a11a8eb..afc867c04 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 774fac4f4..906aa89bb 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 210746be1..4025bbd0c 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 120a0508a..965de35c6 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 6e363a898..5ae6f154b 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 43211a8fe..5d0bd4004 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 b4552a50e..5b9c9a510 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 2e27f4821..987fce436 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 fb91419cb..c893736c2 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 58ea6618c..4bd2f1326 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 2abc0d6b1..3ea322160 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 e02de9379..7b77d4304 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 292db2b2b..0013c6956 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 1e17a91a4..8fecd316e 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 cef12280f..c633fc22d 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 063/114] 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 1f318ebfa..1b94a44a9 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 064/114] 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 6c15a9bc6..b1747991e 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 fc5567967..e58501c8b 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 987fce436..a41acee5e 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 8fecd316e..b6351de41 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 065/114] 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 afc867c04..374556195 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 066/114] 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 b1747991e..39ffc4e29 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 e4dc776d5..756df82ac 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 fa3309453..b91864178 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 5109ca1da..36cb6b001 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 5b060dd0e..cbcafd76c 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 c5709aee0..87238a1f9 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 393b04b24..f05ef2e4a 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 6b895248b..8e14cb72a 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 cc60bd55a..fb6e6f915 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 3ea322160..140adccfb 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 b6351de41..13838c179 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 067/114] 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 2d3f8d680..9e6c10525 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 960cd69ea..5f6df2a32 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 b35e25d57..a5a479f2f 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 1d133d13b..57de0c5fd 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 b91864178..3b6074dfb 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 4cb342e34..06776650f 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 d47293e00..97a5945f5 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 caac40a1b..df985892f 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 d45400cac..5587e7d8d 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 5cf39c1e4..dc0fc6f61 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 bd86d8bff..a4b3ee910 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 906aa89bb..3bbd7edf9 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 7ec6b4e73..b592c6139 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 3f0feeca2..f905767cf 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 baa7845da..f07a22f1a 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 a97b20b38..08e6faffb 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 5b9c9a510..321145be5 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 9d8ce097c..f93f47ffc 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 00ef2c449..9c46dd18a 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 8c59a541c..87526c47a 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 068/114] 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 39ffc4e29..e954a9fb4 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 5f6df2a32..4e2e16511 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 756df82ac..4004835ce 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 3b6074dfb..695adff8c 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 36cb6b001..190f53187 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 cbcafd76c..4dc30280d 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 87238a1f9..59318cb6f 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 8e5084038..87d6e9466 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 29543421e..78f74404f 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 374556195..dd8a73248 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 2cc20b5ff..875ebfab2 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 97a5945f5..ef6d58934 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 b976d8130..5eb1ba6ea 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 8e14cb72a..524b3c7e2 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 8751308eb..58eabb091 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 32c090eea..5ecf4af66 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 3bbd7edf9..28132aab7 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 e0fea48c4..e358872f1 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 347d983f9..69420d011 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 4025bbd0c..d612f64e7 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 2203ba667..b957c3a5b 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 9c2a58cd2..e9c66c57a 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 b592c6139..b19731d77 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 965de35c6..0339452da 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 f905767cf..8f197a179 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 5ae6f154b..dfdf75a2e 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 dc1ba9b31..031d04b86 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 f07a22f1a..db0c7e069 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 fb6e6f915..3ecb55d16 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 01981ed99..08d8515c8 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 5d0bd4004..046aff2bd 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 321145be5..2ff8a3e90 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 09d89abca..28d6cb52f 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 336a90d58..7c9c13207 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 e58501c8b..eedf61668 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 254f092ac..b7637c6df 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 50674313a..dd22c20b5 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 d888eb570..273638e59 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 7bef7c35f..014db3aed 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 a41acee5e..bda1083d3 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 391f131a6..b99f9879b 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 1b94a44a9..111fd2343 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 6ac826223..54ca33f6b 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 c893736c2..3b5c5a5f6 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 4bd2f1326..1b60a45c2 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 140adccfb..1a4df079d 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 7b77d4304..1a4882236 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 64e9bfdd2..32827ad20 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 0013c6956..c4af696c2 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 13838c179..80d98cd23 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 c633fc22d..163965043 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 069/114] 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 69420d011..bd77ca778 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 c4af696c2..5315343df 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 80d98cd23..b5fa8372f 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 070/114] 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 e954a9fb4..c85c0c175 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 4004835ce..3e12d9906 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 59318cb6f..608a0d8da 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 78f74404f..c93341bc7 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 dd8a73248..d5e1f6f93 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 875ebfab2..ecdaa4f9e 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 5eb1ba6ea..932ee8f2d 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 524b3c7e2..52a501fd3 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 58eabb091..164e96314 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 0339452da..ea1a1a9e7 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 7c9c13207..15f91b29d 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 b5fa8372f..80fc6cbcd 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 071/114] 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 c85c0c175..9abf8ec28 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 3e12d9906..b4493f11a 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 4dc30280d..0b376f84a 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 3ecb55d16..5e8d11299 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 1b60a45c2..b0f77ec1a 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 1a4df079d..435a2207e 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 1a4882236..82a9bdae0 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 32827ad20..dde1627fe 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 5315343df..c07696040 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 80fc6cbcd..f9113a030 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 163965043..1f0580d9c 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 072/114] 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 9abf8ec28..2b6d97e06 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 b4493f11a..6ee1f63d5 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 0b376f84a..f5821266f 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 5e8d11299..6f36fc866 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 b0f77ec1a..6b25ba614 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 435a2207e..e86e8f445 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 82a9bdae0..c2f4308dd 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 dde1627fe..b2225a88d 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 c07696040..beb672aec 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 f9113a030..f8406f234 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 1f0580d9c..c3c97f5f0 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 073/114] 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 2b6d97e06..736478556 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 6ee1f63d5..af6501c17 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 074/114] 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 000000000..5f0bc35c2 --- /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 f46fe5903..ba614a3a3 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 b79e6a51f..73a3ff982 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 075/114] 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 0d6b018e0..1b16b94b6 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 5f0bc35c2..c093f6c7f 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 ba614a3a3..1b144ea30 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 076/114] 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 c093f6c7f..57ef97a70 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 af6501c17..0749c1358 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 077/114] Remove IE11 from browsersist --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 1b144ea30..55c02ffbd 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 078/114] 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 736478556..8c8a9ca7f 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 c52eb653e..1fd4a14a0 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 0749c1358..26b65115b 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 431cd2ba1..34ce01c96 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 f5821266f..55ce4c880 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 608a0d8da..c0a09bdc8 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 d5e1f6f93..c5232bb54 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 ecdaa4f9e..0076eada6 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 932ee8f2d..788331da9 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 52a501fd3..119f0c142 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 164e96314..2a119c098 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 dc0fc6f61..2836dd015 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 a4b3ee910..dc4fecb10 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 28132aab7..4343b6986 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 bd77ca778..9a355d1b0 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 b19731d77..6d5d098de 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 ea1a1a9e7..75a8ba0b6 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 6f36fc866..83a1c48e5 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 046aff2bd..f95952a0d 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 9c46dd18a..61d934501 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 eedf61668..9d4c28790 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 b7637c6df..b34d1f6d5 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 273638e59..8cd082aaa 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 bda1083d3..6db3c39e4 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 b99f9879b..32c2905b4 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 111fd2343..53fd0793e 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 54ca33f6b..44dfaee51 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 6b25ba614..ee2a3565d 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 e86e8f445..59cf8c5b1 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 c2f4308dd..ff66451fd 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 beb672aec..f248ab931 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 f8406f234..342510947 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 c3c97f5f0..8190f1ac5 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 079/114] 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 57ef97a70..93e359209 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 1fd4a14a0..30fd1e2eb 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 34ce01c96..1cb3207e0 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 c0a09bdc8..f4f198325 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 06776650f..93cb3a75a 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 c5232bb54..96bd28e8d 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 0076eada6..df2adf075 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 119f0c142..3b776e6dd 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 4343b6986..e4e798581 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 9a355d1b0..1a37e4556 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 d612f64e7..dae33aa9b 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 75a8ba0b6..b1e77715f 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 f95952a0d..2bea7c969 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 87526c47a..1328e6f3d 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 9d4c28790..2776dec65 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 b34d1f6d5..e69434257 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 8cd082aaa..65fa4ddee 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 32c2905b4..b508e5d0e 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 53fd0793e..30d4ccb6d 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 44dfaee51..086666491 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 ee2a3565d..789371c45 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 59cf8c5b1..75c721954 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 ff66451fd..a339c7186 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 b2225a88d..134bd6178 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 f248ab931..4f6017e16 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 8190f1ac5..2d6a61be9 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 080/114] 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 9305dbca3..ad3a6ecd8 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 69c996877..b726aaf87 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 081/114] 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 6392c3a1a..122b2c808 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 082/114] 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 a71b053a2..6f1ea2b11 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 083/114] 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 09b793cd3..30ac72851 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 47f032c1f..6f766ae6c 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- 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 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 d4e6b61c8..9be09c4d2 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 e02fb0c86..05971f01b 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 b9d31be5d..a23a7dfff 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 44c5b3b07..479eb17b0 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 0f42e1458..75b940285 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 0247f79a5..ee89b1799 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 deec96d9a..0b769a982 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 17129ea54..7dff81f5a 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 f2196bf63..6f29064db 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 d85b4a71b..f5a52a747 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 c8ed31df0..914488694 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 7edffec6d..3f9544852 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 5b966327e..152fc691f 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 3f86e1679..af574200f 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 7bd5159a1..019875f35 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 c192fad29..0dc3cc066 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 fade0dd04..da3d673aa 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 3524f449d..57b63550f 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 9bb1f8426..3e9a2ae8c 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 42d894db6..b27168075 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 e8813d947..a8bd4c620 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 1eeab4fbd..afe0023cd 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 d921d580a..229c04755 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 2b289e6b7..261d20745 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 94535deb6..8f93b3133 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 04df34685..8aaad9505 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 183e22551..31fa11630 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 c7073bc9f..4dcb7812d 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 a1ee53f72..fa7aac026 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 dd13df4ca..07e26b777 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 8843dc159..030fdc80c 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 d44136c6b..a09c2dd57 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 75b011aa7..57a46a041 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 6b2906cb0..b1367ef66 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 37a1a32f5..d8191e9ef 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 b2bf9d410..1a064ed39 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 b622cc18b..d1cd64c65 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 4179192dd..89adf2262 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 4738211a5..b70bdc144 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 b1e7f580f..8e78a64cb 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 2a2840aec..e8cb85033 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 6b853704f..b5f38dbba 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 622b0d62e..35f5d4412 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 c2e8ebd0e..0aaa687b6 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 30074b4d0..07ad8e2e5 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 6c43e8175..29e7e8f42 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 bad808cb7..c1e9c6434 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 a5acd042b..70404cdd6 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 d4f75a080..6820b24d2 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 964aa8178..59ca98ff3 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 dc8ae2570..4d1d737b4 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 4ee344333..2aa6b1045 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 3882f2e85..fb6760dec 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 288c1ebe8..7f6490e62 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 1c00e50ca..2636be1e1 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 e3c75c629..82bafb084 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 b0ee5673e..e766dbdb5 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 63c6f3226..36cf80fb1 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 8b56dc506..466728210 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 1679fec5e..5526bd9ad 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 c18673738..9c4a631c3 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 7a3e1dbcd..03eeeeb87 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 87297dbcf..cc8be8216 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 4c8c37eed..2013607d7 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 e9239693d..fb4cdb425 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 ae708bcd4..eae529c53 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 0bfe3c455..522ddd471 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 d0616c157..a62441e61 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 72d50a25a..1c6386ba9 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 543acf31d..b4291e41a 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 6d32e4ab2..0067f6422 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 b6fa54f21..23397fd73 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 2a862912d..333c09f26 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 7aeea9cb2..a3c247cd3 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 dc9a56abb..4888c1110 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 6387128d5..f76311a44 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 2054bce3d..2420ab4c3 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 ac9e96137..c1ae38609 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 d6276e826..2e49a2d18 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 09b8c70d8..764e525a2 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 248e7ce57..e26d1921a 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 3d67544c0..6e074936f 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 22c18cd9d..93115b4f9 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 e31efa27e..643d3a1ba 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 2ff8990e4..752b7c827 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 044226a08..d853063ab 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 3abd14de3..fc855f32b 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 53e8f4b01..fecbda90a 100644 --- a/src/livetvtuner.html +++ b/src/livetvtuner.html @@ -24,7 +24,7 @@
- +
diff --git a/src/movies.html b/src/movies.html index c211d9686..20e087c4b 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 e86f17920..9b3c560b8 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 0638a49d9..96e962689 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 bc595a6c9..78813255c 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 8ecaf04db..f5bd6550f 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 1ec70cc7c..1a9b9775e 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 b9f3b9247..268e8d7fe 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 e3d6c8d19..6a977149d 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 d7c3a1c8a..7e04e1a2f 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 1327d53ff..97df4d8e8 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 6c3591333..4cb5708db 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 1272957e5..022e06b95 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 4d18787a5..a099605d0 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 e593c430f..84b559ee8 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 710bf5581..74b242798 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 f0375a4e2..ba1305938 100644 --- a/src/wizardremoteaccess.html +++ b/src/wizardremoteaccess.html @@ -21,12 +21,12 @@
diff --git a/src/wizardsettings.html b/src/wizardsettings.html index cced04c5b..4c00b205e 100644 --- a/src/wizardsettings.html +++ b/src/wizardsettings.html @@ -16,12 +16,12 @@
diff --git a/src/wizardstart.html b/src/wizardstart.html index 1308fcb2e..5dd6f7e1b 100644 --- a/src/wizardstart.html +++ b/src/wizardstart.html @@ -20,7 +20,7 @@
diff --git a/src/wizarduser.html b/src/wizarduser.html index 7d7fdc08e..9c8b49d86 100644 --- a/src/wizarduser.html +++ b/src/wizarduser.html @@ -22,12 +22,12 @@
diff --git a/webpack.dev.js b/webpack.dev.js index 3aecac1a5..81b69d896 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 2055051da..03fcf712a 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 1526957e4..18628ae12 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 084/114] 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 6387128d5..559e80ee0 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 085/114] 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 c37e5e9a4..34b275ba2 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 d9e0040d9..0adf5e045 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 c7ce36190..d1f6b11b9 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 b0827ca88..aa2ed1a48 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 4ddd00252..cd8d9472c 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 034cf04d5..d9b40800b 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 e189620c6..c718fa609 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 109346325..4c42629b4 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 c9c00f0da..e58709091 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 26b6643ff..f1f73c5d9 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 9bb44f01e..886478e8d 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 9e29c4f14..77c270c3a 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 a1c700df6..1cdccf69b 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 4cc1fde94..7ea57e515 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 5f81717e8..a54203665 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 ee0ef90de..0dd773745 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 45025bb1b..3bf88ed5e 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 0f2b32c64..a0276b700 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 0ad9459ac..5633be14b 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 8e5c9714a..40d449cb9 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 15603fc13..37ef09c70 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 f3d356269..06ad3fb9e 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 19f00d9e0..d5822cd26 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 abf208a76..200077568 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 45be05718..c21b57198 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 4e612aa5b..b03a5a90c 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 ec536dd17..be7a50471 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 cc273bec1..c7d193120 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 338378289..e7bb4d773 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 4397c06c5..d4d6141d1 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 086/114] 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 e52329c87..68ce4cc79 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 087/114] 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 7f4b9f519..160e6a444 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 088/114] 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 44c5b3b07..92cc6d38a 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 089/114] =?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 0ad9459ac..a4a943d7f 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 090/114] 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 160e6a444..65b5ebcf8 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 091/114] 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 183e22551..aeae7469a 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 092/114] 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 a1ee53f72..8336f9e17 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 093/114] 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 68ce4cc79..b16c117fd 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 094/114] 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 886478e8d..86f32d3d5 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 095/114] 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 77c270c3a..c4dfa8053 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 096/114] 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 d0f5404c1..05db2ee3e 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 097/114] 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 ad3a6ecd8..7b36d01bd 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 098/114] 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 7c3daf015..9d7757d34 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 099/114] 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 57a46ec7b..fae39d26b 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 acc7ef821..c705dcf51 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 cd1999702..51f246d55 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 1bcf3af28..003dcc810 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 15c329ce7..584dbe663 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 9f97054f3..932717c35 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 fb871b59f..83bdb2b89 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 1f417b170..c26b8bab3 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 100/114] 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 d27a12e14..0acec24ae 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 101/114] 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 0acec24ae..db079b759 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 102/114] 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 db079b759..9d91a691d 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 103/114] 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 f348f2875..e3a56e155 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 7f12efc7f..20a42a7df 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 3def9d193..d0a127efe 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 1f1102194..8e2dcc878 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 104/114] 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 20d2a4082..683498455 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 105/114] 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 0adf5e045..a1bcb8c63 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 106/114] 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 d9b40800b..0a6c95ef2 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 107/114] 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 000000000..0967ef424 --- /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 108/114] 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 65b5ebcf8..c03420c85 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 109/114] 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 a1bcb8c63..6fef90c40 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 110/114] 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 aa2ed1a48..14d2aa487 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 111/114] 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 b03a5a90c..2e01ee9ff 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 112/114] 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 38674eff0..ad40c3ec5 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 113/114] 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 e7bb4d773..94c235a7d 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 114/114] 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 be7a50471..e3d0142bc 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" }