1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Merge remote-tracking branch 'upstream/master' into fix-icons-webos2

Conflicts:
	src/controllers/dashboard/plugins/available.js
	src/controllers/dashboard/plugins/installed.js
This commit is contained in:
Dmitry Lyzo 2020-04-28 16:55:33 +03:00
commit 7905a868c8
60 changed files with 447 additions and 406 deletions

View file

@ -7,3 +7,6 @@ charset = utf-8
trim_trailing_whitespace = true trim_trailing_whitespace = true
insert_final_newline = true insert_final_newline = true
end_of_line = lf end_of_line = lf
[json]
indent_size = 2

View file

@ -1 +1,5 @@
libraries/ node_modules
dist
.idea
.vscode
src/libraries

190
.eslintrc.js Normal file
View file

@ -0,0 +1,190 @@
module.exports = {
root: true,
plugins: [
'promise',
'import',
'eslint-comments'
],
env: {
node: true,
es6: true,
es2017: true,
es2020: true
},
parserOptions: {
ecmaVersion: 2020,
sourceType: 'module',
ecmaFeatures: {
impliedStrict: true
}
},
extends: [
'eslint:recommended',
// 'plugin:promise/recommended',
'plugin:import/errors',
'plugin:import/warnings',
'plugin:eslint-comments/recommended',
'plugin:compat/recommended'
],
rules: {
'block-spacing': ["error"],
'brace-style': ["error"],
'comma-dangle': ["error", "never"],
'comma-spacing': ["error"],
'eol-last': ["error"],
'indent': ["error", 4, { "SwitchCase": 1 }],
'keyword-spacing': ["error"],
'max-statements-per-line': ["error"],
'no-floating-decimal': ["error"],
'no-multi-spaces': ["error"],
'no-multiple-empty-lines': ["error", { "max": 1 }],
'no-trailing-spaces': ["error"],
'one-var': ["error", "never"],
'semi': ["error"],
'space-before-blocks': ["error"]
},
overrides: [
{
files: [
'./src/**/*.js'
],
env: {
node: false,
amd: true,
browser: true,
es6: true,
es2017: true,
es2020: true
},
globals: {
// Browser globals
'MediaMetadata': 'readonly',
// Tizen globals
'tizen': 'readonly',
'webapis': 'readonly',
// WebOS globals
'webOS': 'readonly',
// Dependency globals
'$': 'readonly',
'jQuery': 'readonly',
'requirejs': 'readonly',
// Jellyfin globals
'ApiClient': 'writable',
'AppInfo': 'writable',
'chrome': 'writable',
'ConnectionManager': 'writable',
'DlnaProfilePage': 'writable',
'Dashboard': 'writable',
'DashboardPage': 'writable',
'Emby': 'readonly',
'Events': 'writable',
'getParameterByName': 'writable',
'getWindowLocationSearch': 'writable',
'Globalize': 'writable',
'Hls': 'writable',
'dfnshelper': 'writable',
'LibraryMenu': 'writable',
'LinkParser': 'writable',
'LiveTvHelpers': 'writable',
'MetadataEditor': 'writable',
'pageClassOn': 'writable',
'pageIdOn': 'writable',
'PlaylistViewer': 'writable',
'UserParentalControlPage': 'writable',
'Windows': 'readonly'
},
rules: {
// TODO: Fix warnings and remove these rules
'no-redeclare': ["warn"],
'no-unused-vars': ["warn"],
'no-useless-escape': ["warn"],
// TODO: Remove after ES6 migration is complete
'import/no-unresolved': ["off"]
},
settings: {
polyfills: [
// Native Promises Only
'Promise',
// whatwg-fetch
'fetch',
// document-register-element
'document.registerElement',
// resize-observer-polyfill
'ResizeObserver',
// fast-text-encoding
'TextEncoder',
// intersection-observer
'IntersectionObserver',
// Core-js
'Object.assign',
'Object.is',
'Object.setPrototypeOf',
'Object.toString',
'Object.freeze',
'Object.seal',
'Object.preventExtensions',
'Object.isFrozen',
'Object.isSealed',
'Object.isExtensible',
'Object.getOwnPropertyDescriptor',
'Object.getPrototypeOf',
'Object.keys',
'Object.getOwnPropertyNames',
'Function.name',
'Function.hasInstance',
'Array.from',
'Array.arrayOf',
'Array.copyWithin',
'Array.fill',
'Array.find',
'Array.findIndex',
'Array.iterator',
'String.fromCodePoint',
'String.raw',
'String.iterator',
'String.codePointAt',
'String.endsWith',
'String.includes',
'String.repeat',
'String.startsWith',
'String.trim',
'String.anchor',
'String.big',
'String.blink',
'String.bold',
'String.fixed',
'String.fontcolor',
'String.fontsize',
'String.italics',
'String.link',
'String.small',
'String.strike',
'String.sub',
'String.sup',
'RegExp',
'Number',
'Math',
'Date',
'async',
'Symbol',
'Map',
'Set',
'WeakMap',
'WeakSet',
'ArrayBuffer',
'DataView',
'Int8Array',
'Uint8Array',
'Uint8ClampedArray',
'Int16Array',
'Uint16Array',
'Int32Array',
'Uint32Array',
'Float32Array',
'Float64Array',
'Reflect'
]
}
}
]
}

View file

@ -1,171 +0,0 @@
env:
amd: true
browser: true
es6: true
es2017: true
es2020: true
parserOptions:
ecmaVersion: 2020
sourceType: module
ecmaFeatures:
impliedStrict: true
plugins:
- promise
- import
- eslint-comments
extends:
- eslint:recommended
- plugin:promise/recommended
- plugin:import/errors
- plugin:import/warnings
- plugin:eslint-comments/recommended
- plugin:compat/recommended
globals:
# Browser globals
MediaMetadata: readonly
# Tizen globals
tizen: readonly
webapis: readonly
# WebOS globals
webOS: readonly
# Dependency globals
$: readonly
jQuery: readonly
requirejs: readonly
# Jellyfin globals
ApiClient: writable
AppInfo: writable
chrome: writable
ConnectionManager: writable
DlnaProfilePage: writable
Dashboard: writable
DashboardPage: writable
Emby: readonly
Events: writable
getParameterByName: writable
getWindowLocationSearch: writable
Globalize: writable
Hls: writable
dfnshelper: writable
LibraryMenu: writable
LinkParser: writable
LiveTvHelpers: writable
MetadataEditor: writable
pageClassOn: writable
pageIdOn: writable
PlaylistViewer: writable
UserParentalControlPage: writable
Windows: readonly
rules:
block-spacing: ["error"]
brace-style: ["error"]
comma-dangle: ["error", "never"]
comma-spacing: ["error"]
eol-last: ["error"]
indent: ["error", 4, { "SwitchCase": 1 }]
keyword-spacing: ["error"]
max-statements-per-line: ["error"]
no-floating-decimal: ["error"]
no-multi-spaces: ["error"]
no-multiple-empty-lines: ["error", { "max": 1 }]
no-trailing-spaces: ["error"]
one-var: ["error", "never"]
semi: ["error"]
space-before-blocks: ["error"]
# TODO: Fix warnings and remove these rules
no-redeclare: ["warn"]
no-unused-vars: ["warn"]
no-useless-escape: ["warn"]
promise/catch-or-return: ["warn"]
promise/always-return: ["warn"]
promise/no-return-wrap: ["warn"]
# TODO: Remove after ES6 migration is complete
import/no-unresolved: ["warn"]
settings:
polyfills:
# Native Promises Only
- Promise
# whatwg-fetch
- fetch
# document-register-element
- document.registerElement
# resize-observer-polyfill
- ResizeObserver
# fast-text-encoding
- TextEncoder
# intersection-observer
- IntersectionObserver
# Core-js
- Object.assign
- Object.is
- Object.setPrototypeOf
- Object.toString
- Object.freeze
- Object.seal
- Object.preventExtensions
- Object.isFrozen
- Object.isSealed
- Object.isExtensible
- Object.getOwnPropertyDescriptor
- Object.getPrototypeOf
- Object.keys
- Object.getOwnPropertyNames
- Function.name
- Function.hasInstance
- Array.from
- Array.arrayOf
- Array.copyWithin
- Array.fill
- Array.find
- Array.findIndex
- Array.iterator
- String.fromCodePoint
- String.raw
- String.iterator
- String.codePointAt
- String.endsWith
- String.includes
- String.repeat
- String.startsWith
- String.trim
- String.anchor
- String.big
- String.blink
- String.bold
- String.fixed
- String.fontcolor
- String.fontsize
- String.italics
- String.link
- String.small
- String.strike
- String.sub
- String.sup
- RegExp
- Number
- Math
- Date
- async
- Symbol
- Map
- Set
- WeakMap
- WeakSet
- ArrayBuffer
- DataView
- Int8Array
- Uint8Array
- Uint8ClampedArray
- Int16Array
- Uint16Array
- Int32Array
- Uint32Array
- Float32Array
- Float64Array
- Reflect

36
.gitattributes vendored
View file

@ -1 +1,35 @@
/CONTRIBUTORS.md merge=union * text=auto
CONTRIBUTORS.md merge=union
README.md text
LICENSE text
*.css text
*.eot binary
*.gif binary
*.html text diff=html
*.ico binary
*.*ignore text
*.jpg binary
*.js text
*.json text
*.lock text -diff
*.map text -diff
*.md text
*.otf binary
*.png binary
*.py text diff=python
*.svg binary
*.ts text
*.ttf binary
*.sass text
*.vue text
*.webp binary
*.woff binary
*.woff2 binary
.editorconfig text
.gitattributes export-ignore
.gitignore export-ignore
*.gitattributes linguist-language=gitattributes

View file

@ -1,5 +1,3 @@
'use strict';
const { src, dest, series, parallel, watch } = require('gulp'); const { src, dest, series, parallel, watch } = require('gulp');
const browserSync = require('browser-sync').create(); const browserSync = require('browser-sync').create();
const del = require('del'); const del = require('del');

View file

@ -9,7 +9,7 @@
"@babel/plugin-transform-modules-amd": "^7.8.3", "@babel/plugin-transform-modules-amd": "^7.8.3",
"@babel/polyfill": "^7.8.7", "@babel/polyfill": "^7.8.7",
"@babel/preset-env": "^7.8.6", "@babel/preset-env": "^7.8.6",
"autoprefixer": "^9.7.4", "autoprefixer": "^9.7.6",
"babel-loader": "^8.0.6", "babel-loader": "^8.0.6",
"browser-sync": "^2.26.7", "browser-sync": "^2.26.7",
"clean-webpack-plugin": "^3.0.0", "clean-webpack-plugin": "^3.0.0",
@ -90,10 +90,10 @@
"test": [ "test": [
"src/components/autoFocuser.js", "src/components/autoFocuser.js",
"src/components/cardbuilder/cardBuilder.js", "src/components/cardbuilder/cardBuilder.js",
"src/components/dom.js", "src/scripts/dom.js",
"src/components/filedownloader.js", "src/components/filedownloader.js",
"src/components/filesystem.js", "src/components/filesystem.js",
"src/components/input/keyboardnavigation.js", "src/scripts/keyboardnavigation.js",
"src/components/sanatizefilename.js", "src/components/sanatizefilename.js",
"src/components/scrollManager.js", "src/components/scrollManager.js",
"src/scripts/settings/appSettings.js", "src/scripts/settings/appSettings.js",
@ -130,7 +130,7 @@
"build:development": "gulp --development", "build:development": "gulp --development",
"build:production": "gulp --production", "build:production": "gulp --production",
"build:standalone": "gulp standalone --development", "build:standalone": "gulp standalone --development",
"lint": "eslint \"src\"", "lint": "eslint \".\"",
"stylelint": "stylelint \"src/**/*.css\"" "stylelint": "stylelint \"src/**/*.css\""
} }
} }

View file

@ -1,11 +1,13 @@
const postcssPresetEnv = require('postcss-preset-env'); const postcssPresetEnv = require('postcss-preset-env');
const autoprefixer = require('autoprefixer');
const cssnano = require('cssnano'); const cssnano = require('cssnano');
const config = () => ({ const config = () => ({
plugins: [ plugins: [
postcssPresetEnv(), postcssPresetEnv(),
cssnano() autoprefixer(),
] cssnano()
]
}); });
module.exports = config module.exports = config;

View file

@ -8,9 +8,8 @@
<a is="emby-linkbutton" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/plugins/index.html">${Help}</a> <a is="emby-linkbutton" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/plugins/index.html">${Help}</a>
</div> </div>
<p id="tagline" style="font-style: italic;"></p> <p id="overview" style="font-style: italic;"></p>
<p id="pPreviewImage"></p> <p id="description"></p>
<p id="overview"></p>
</div> </div>
<div class="verticalSection"> <div class="verticalSection">
@ -28,7 +27,6 @@
</button> </button>
<div class="fieldDescription">${ServerRestartNeededAfterPluginInstall}</div> <div class="fieldDescription">${ServerRestartNeededAfterPluginInstall}</div>
</div> </div>
<p id="nonServerMsg"></p>
</form> </form>
</div> </div>
</div> </div>
@ -37,9 +35,6 @@
<div is="emby-collapse" title="${HeaderDeveloperInfo}"> <div is="emby-collapse" title="${HeaderDeveloperInfo}">
<div class="collapseContent"> <div class="collapseContent">
<p id="developer"></p> <p id="developer"></p>
<p id="pViewWebsite" style="display: none;">
<a is="emby-linkbutton" class="button-link" href="#" target="_blank">${ButtonViewWebsite}</a>
</p>
</div> </div>
</div> </div>

View file

@ -64,7 +64,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la
} else { } else {
var noLibDescription; var noLibDescription;
if (user['Policy'] && user['Policy']['IsAdministrator']) { if (user['Policy'] && user['Policy']['IsAdministrator']) {
noLibDescription = Globalize.translate("NoCreatedLibraries", '<a id="button-createLibrary" class="button-link">', '</a>'); noLibDescription = Globalize.translate("NoCreatedLibraries", '<br><a id="button-createLibrary" class="button-link">', '</a>');
} else { } else {
noLibDescription = Globalize.translate("AskAdminToCreateLibrary"); noLibDescription = Globalize.translate("AskAdminToCreateLibrary");
} }
@ -243,9 +243,9 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la
return function (items) { return function (items) {
var cardLayout = false; var cardLayout = false;
var shape; var shape;
if (itemType === 'Channel' || viewType === 'movies' || viewType === 'books') { if (itemType === 'Channel' || viewType === 'movies' || viewType === 'books' || viewType === 'tvshows') {
shape = getPortraitShape(); shape = getPortraitShape();
} else if (viewType === 'music') { } else if (viewType === 'music' || viewType === 'homevideos') {
shape = getSquareShape(); shape = getSquareShape();
} else { } else {
shape = getThumbShape(); shape = getThumbShape();

View file

@ -795,7 +795,9 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
dlg.parentNode.removeChild(dlg); dlg.parentNode.removeChild(dlg);
} }
screenfull.exit(); if (screenfull.isEnabled) {
screenfull.exit();
}
}; };
function onEnded() { function onEnded() {

View file

@ -20,9 +20,11 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
} }
function bindToFullscreenChange(player) { function bindToFullscreenChange(player) {
screenfull.on('change', function () { if (screenfull.isEnabled) {
events.trigger(player, 'fullscreenchange'); screenfull.on('change', function () {
}); events.trigger(player, 'fullscreenchange');
});
}
} }
function triggerPlayerChange(playbackManagerInstance, newPlayer, newTarget, previousPlayer, previousTargetInfo) { function triggerPlayerChange(playbackManagerInstance, newPlayer, newTarget, previousPlayer, previousTargetInfo) {

View file

@ -1,24 +0,0 @@
if (typeof Object.assign != 'function') {
(function () {
Object.assign = function (target) {
'use strict';
if (target === undefined || target === null) {
throw new TypeError('Cannot convert undefined or null to object');
}
var output = Object(target);
for (var index = 1; index < arguments.length; index++) {
var source = arguments[index];
if (source !== undefined && source !== null) {
for (var nextKey in source) {
// eslint-disable-next-line no-prototype-builtins
if (source.hasOwnProperty(nextKey)) {
output[nextKey] = source[nextKey];
}
}
}
}
return output;
};
})();
}

View file

@ -7,8 +7,8 @@ define(["jQuery", "loading", "libraryMenu", "globalize", "connectionManager", "e
for (var i = 0; i < length; i++) { for (var i = 0; i < length; i++) {
var version = packageInfo.versions[i]; var version = packageInfo.versions[i];
html += '<h2 style="margin:.5em 0;">' + version.versionStr + " (" + version.classification + ")</h2>"; html += '<h2 style="margin:.5em 0;">' + version.version + "</h2>";
html += '<div style="margin-bottom:1.5em;">' + version.description + "</div>"; html += '<div style="margin-bottom:1.5em;">' + version.changelog + "</div>";
} }
$("#revisionHistory", page).html(html); $("#revisionHistory", page).html(html);
@ -19,7 +19,7 @@ define(["jQuery", "loading", "libraryMenu", "globalize", "connectionManager", "e
for (var i = 0; i < packageInfo.versions.length; i++) { for (var i = 0; i < packageInfo.versions.length; i++) {
var version = packageInfo.versions[i]; var version = packageInfo.versions[i];
html += '<option value="' + version.versionStr + "|" + version.classification + '">' + version.versionStr + " (" + version.classification + ")</option>"; html += '<option value="' + version.version + '">' + version.version + "</option>";
} }
var selectmenu = $("#selectVersion", page).html(html); var selectmenu = $("#selectVersion", page).html(html);
@ -28,16 +28,9 @@ define(["jQuery", "loading", "libraryMenu", "globalize", "connectionManager", "e
$("#pCurrentVersion", page).hide().html(""); $("#pCurrentVersion", page).hide().html("");
} }
var packageVersion = packageInfo.versions.filter(function (current) { var packageVersion = packageInfo.versions[0];
return "Release" == current.classification;
})[0];
packageVersion = packageVersion || packageInfo.versions.filter(function (current) {
return "Beta" == current.classification;
})[0];
if (packageVersion) { if (packageVersion) {
var val = packageVersion.versionStr + "|" + packageVersion.classification; selectmenu.val(packageVersion.version);
selectmenu.val(val);
} }
} }
@ -45,44 +38,23 @@ define(["jQuery", "loading", "libraryMenu", "globalize", "connectionManager", "e
var installedPlugin = installedPlugins.filter(function (ip) { var installedPlugin = installedPlugins.filter(function (ip) {
return ip.Name == pkg.name; return ip.Name == pkg.name;
})[0]; })[0];
populateVersions(pkg, page, installedPlugin); populateVersions(pkg, page, installedPlugin);
populateHistory(pkg, page); populateHistory(pkg, page);
$(".pluginName", page).html(pkg.name); $(".pluginName", page).html(pkg.name);
$("#btnInstallDiv", page).removeClass("hide");
$("#pSelectVersion", page).removeClass("hide");
if ("Server" == pkg.targetSystem) { if (pkg.overview) {
$("#btnInstallDiv", page).removeClass("hide"); $("#overview", page).show().html(pkg.overview);
$("#nonServerMsg", page).hide();
$("#pSelectVersion", page).removeClass("hide");
} else { } else {
$("#btnInstallDiv", page).addClass("hide"); $("#overview", page).hide();
$("#pSelectVersion", page).addClass("hide");
var msg = globalize.translate("MessageInstallPluginFromApp");
$("#nonServerMsg", page).html(msg).show();
} }
if (pkg.shortDescription) { $("#description", page).html(pkg.description);
$("#tagline", page).show().html(pkg.shortDescription);
} else {
$("#tagline", page).hide();
}
$("#overview", page).html(pkg.overview || "");
$("#developer", page).html(pkg.owner); $("#developer", page).html(pkg.owner);
if (pkg.richDescUrl) {
$("#pViewWebsite", page).show();
$("#pViewWebsite a", page).attr("href", pkg.richDescUrl);
} else {
$("#pViewWebsite", page).hide();
}
if (pkg.previewImage || pkg.thumbImage) {
var img = pkg.previewImage ? pkg.previewImage : pkg.thumbImage;
$("#pPreviewImage", page).show().html("<img class='pluginPreviewImg' src='" + img + "' style='max-width: 100%;' />");
} else {
$("#pPreviewImage", page).hide().html("");
}
if (installedPlugin) { if (installedPlugin) {
var currentVersionText = globalize.translate("MessageYouHaveVersionInstalled", "<strong>" + installedPlugin.Version + "</strong>"); var currentVersionText = globalize.translate("MessageYouHaveVersionInstalled", "<strong>" + installedPlugin.Version + "</strong>");
$("#pCurrentVersion", page).show().html(currentVersionText); $("#pCurrentVersion", page).show().html(currentVersionText);

View file

@ -98,21 +98,14 @@ define(["loading", "libraryMenu", "globalize", "cardStyle", "emby-button", "emby
html += '<div class="cardScalable visualCardBox-cardScalable">'; html += '<div class="cardScalable visualCardBox-cardScalable">';
html += '<div class="cardPadder cardPadder-backdrop"></div>'; html += '<div class="cardPadder cardPadder-backdrop"></div>';
html += '<a class="cardContent cardImageContainer" is="emby-linkbutton" href="' + href + '"' + target + ">"; html += '<a class="cardContent cardImageContainer" is="emby-linkbutton" href="' + href + '"' + target + ">";
html += '<span class="cardImageIcon material-icons folder"></span>';
if (plugin.thumbImage) {
html += '<div class="cardImage coveredImage" style="background-image:url(\'' + plugin.thumbImage + "');\">";
html += "</div>";
} else {
html += '<span class="cardImageIcon material-icons folder"></span>';
}
html += "</a>"; html += "</a>";
html += "</div>"; html += "</div>";
html += '<div class="cardFooter">'; html += '<div class="cardFooter">';
html += "<div class='cardText'>"; html += "<div class='cardText'>";
html += plugin.name; html += plugin.name;
html += "</div>"; html += "</div>";
var installedPlugin = plugin.isApp ? null : installedPlugins.filter(function (ip) { var installedPlugin = installedPlugins.filter(function (ip) {
return ip.Id == plugin.guid; return ip.Id == plugin.guid;
})[0]; })[0];
html += "<div class='cardText cardText-secondary'>"; html += "<div class='cardText cardText-secondary'>";

View file

@ -42,14 +42,7 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button"
html += '<div class="cardScalable">'; html += '<div class="cardScalable">';
html += '<div class="cardPadder cardPadder-backdrop"></div>'; html += '<div class="cardPadder cardPadder-backdrop"></div>';
html += configPageUrl ? '<a class="cardContent cardImageContainer" is="emby-linkbutton" href="' + configPageUrl + '">' : '<div class="cardContent noConfigPluginCard noHoverEffect cardImageContainer">'; html += configPageUrl ? '<a class="cardContent cardImageContainer" is="emby-linkbutton" href="' + configPageUrl + '">' : '<div class="cardContent noConfigPluginCard noHoverEffect cardImageContainer">';
html += '<span class="cardImageIcon material-icons folder"></span>';
if (plugin.ImageUrl) {
html += '<div class="cardImage coveredImage" style="background-image:url(\'' + plugin.ImageUrl + "');\">";
html += "</div>";
} else {
html += '<span class="cardImageIcon material-icons folder"></span>';
}
html += configPageUrl ? "</a>" : "</div>"; html += configPageUrl ? "</a>" : "</div>";
html += "</div>"; html += "</div>";
html += '<div class="cardFooter">'; html += '<div class="cardFooter">';
@ -57,7 +50,7 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button"
html += '<button type="button" is="paper-icon-button-light" class="btnCardMenu autoSize"><span class="material-icons more_horiz"></span></button>'; html += '<button type="button" is="paper-icon-button-light" class="btnCardMenu autoSize"><span class="material-icons more_horiz"></span></button>';
html += "</div>"; html += "</div>";
html += "<div class='cardText'>"; html += "<div class='cardText'>";
html += configPage ? configPage.DisplayName || plugin.Name : plugin.Name; html += configPage.DisplayName || plugin.Name;
html += "</div>"; html += "</div>";
html += "<div class='cardText cardText-secondary'>"; html += "<div class='cardText cardText-secondary'>";
html += plugin.Version; html += plugin.Version;

View file

@ -49,6 +49,7 @@
.button-link { .button-link {
background: transparent; background: transparent;
cursor: pointer;
margin: 0; margin: 0;
padding: 0; padding: 0;
vertical-align: initial; vertical-align: initial;

View file

@ -26,9 +26,9 @@
<div class="runtime"></div> <div class="runtime"></div>
</div> </div>
<div class="nowPlayingButtonsContainer"> <div class="nowPlayingButtonsContainer focuscontainer-x">
<div class="nowPlayingInfoButtons focuscontainer-x"> <div class="nowPlayingInfoButtons">
<button is="paper-icon-button-light" class="btnRewind btnNowPlayingRewind btnPlayStateCommand autoSize" title="${Rewind}"> <button is="paper-icon-button-light" class="btnRewind btnNowPlayingRewind btnPlayStateCommand autoSize" title="${Rewind}">
<span class="material-icons replay_10"></span> <span class="material-icons replay_10"></span>

View file

@ -155,7 +155,7 @@ export function enable() {
function attachGamepadScript(e) { function attachGamepadScript(e) {
console.log("Gamepad connected! Attaching gamepadtokey.js script"); console.log("Gamepad connected! Attaching gamepadtokey.js script");
window.removeEventListener("gamepadconnected", attachGamepadScript); window.removeEventListener("gamepadconnected", attachGamepadScript);
require(["components/input/gamepadtokey"]); require(["scripts/gamepadtokey"]);
} }
// No need to check for gamepads manually at load time, the eventhandler will be fired for that // No need to check for gamepads manually at load time, the eventhandler will be fired for that

View file

@ -23,6 +23,35 @@ define([
console.debug("defining core routes"); console.debug("defining core routes");
defineRoute({
path: "/addserver.html",
autoFocus: false,
anonymous: true,
startup: true,
controller: "auth/addserver"
});
defineRoute({
path: "/selectserver.html",
autoFocus: false,
anonymous: true,
startup: true,
controller: "auth/selectserver",
type: "selectserver"
});
defineRoute({
path: "/forgotpassword.html",
anonymous: true,
startup: true,
controller: "auth/forgotpassword"
});
defineRoute({
path: "/forgotpasswordpin.html",
autoFocus: false,
anonymous: true,
startup: true,
controller: "auth/forgotpasswordpin"
});
defineRoute({ defineRoute({
path: "/addplugin.html", path: "/addplugin.html",
autoFocus: false, autoFocus: false,
@ -41,13 +70,6 @@ define([
transition: "fade", transition: "fade",
controller: "user/profile" controller: "user/profile"
}); });
defineRoute({
path: "/addserver.html",
autoFocus: false,
anonymous: true,
startup: true,
controller: "auth/addserver"
});
defineRoute({ defineRoute({
path: "/mypreferencesdisplay.html", path: "/mypreferencesdisplay.html",
autoFocus: false, autoFocus: false,
@ -95,31 +117,31 @@ define([
path: "/devices.html", path: "/devices.html",
autoFocus: false, autoFocus: false,
roles: "admin", roles: "admin",
controller: "devices" controller: "dashboard/devices/devices"
}); });
defineRoute({ defineRoute({
path: "/device.html", path: "/device.html",
autoFocus: false, autoFocus: false,
roles: "admin", roles: "admin",
controller: "device" controller: "dashboard/devices/device"
}); });
defineRoute({ defineRoute({
path: "/dlnaprofile.html", path: "/dlnaprofile.html",
autoFocus: false, autoFocus: false,
roles: "admin", roles: "admin",
controller: "dlnaprofile" controller: "dashboard/dlna/dlnaprofile"
}); });
defineRoute({ defineRoute({
path: "/dlnaprofiles.html", path: "/dlnaprofiles.html",
autoFocus: false, autoFocus: false,
roles: "admin", roles: "admin",
controller: "dlnaprofiles" controller: "dashboard/dlna/dlnaprofiles"
}); });
defineRoute({ defineRoute({
path: "/dlnasettings.html", path: "/dlnasettings.html",
autoFocus: false, autoFocus: false,
roles: "admin", roles: "admin",
controller: "dlnasettings" controller: "dashboard/dlna/dlnasettings"
}); });
defineRoute({ defineRoute({
path: "/edititemmetadata.html", path: "/edititemmetadata.html",
@ -130,20 +152,7 @@ define([
path: "/encodingsettings.html", path: "/encodingsettings.html",
autoFocus: false, autoFocus: false,
roles: "admin", roles: "admin",
controller: "encodingsettings" controller: "dashboard/encodingsettings"
});
defineRoute({
path: "/forgotpassword.html",
anonymous: true,
startup: true,
controller: "auth/forgotpassword"
});
defineRoute({
path: "/forgotpasswordpin.html",
autoFocus: false,
anonymous: true,
startup: true,
controller: "auth/forgotpasswordpin"
}); });
defineRoute({ defineRoute({
path: "/home.html", path: "/home.html",
@ -158,11 +167,6 @@ define([
controller: "list", controller: "list",
transition: "fade" transition: "fade"
}); });
defineRoute({
path: "/index.html",
autoFocus: false,
isDefaultRoute: true
});
defineRoute({ defineRoute({
path: "/itemdetails.html", path: "/itemdetails.html",
controller: "itemdetailpage", controller: "itemdetailpage",
@ -173,19 +177,13 @@ define([
path: "/library.html", path: "/library.html",
autoFocus: false, autoFocus: false,
roles: "admin", roles: "admin",
controller: "medialibrarypage" controller: "dashboard/medialibrarypage"
}); });
defineRoute({ defineRoute({
path: "/librarydisplay.html", path: "/librarydisplay.html",
autoFocus: false, autoFocus: false,
roles: "admin", roles: "admin",
controller: "librarydisplay" controller: "dashboard/librarydisplay"
});
defineRoute({
path: "/librarysettings.html",
autoFocus: false,
roles: "admin",
controller: "librarysettings"
}); });
defineRoute({ defineRoute({
path: "/livetv.html", path: "/livetv.html",
@ -233,13 +231,13 @@ define([
path: "/metadataimages.html", path: "/metadataimages.html",
autoFocus: false, autoFocus: false,
roles: "admin", roles: "admin",
controller: "metadataimagespage" controller: "dashboard/metadataimagespage"
}); });
defineRoute({ defineRoute({
path: "/metadatanfo.html", path: "/metadatanfo.html",
autoFocus: false, autoFocus: false,
roles: "admin", roles: "admin",
controller: "metadatanfo" controller: "dashboard/metadatanfo"
}); });
defineRoute({ defineRoute({
path: "/movies.html", path: "/movies.html",
@ -265,20 +263,11 @@ define([
autoFocus: false, autoFocus: false,
roles: "admin" roles: "admin"
}); });
defineRoute({
path: "/nowplaying.html",
controller: "playback/nowplaying",
autoFocus: false,
transition: "fade",
fullscreen: true,
supportsThemeMedia: true,
enableMediaControl: false
});
defineRoute({ defineRoute({
path: "/playbackconfiguration.html", path: "/playbackconfiguration.html",
autoFocus: false, autoFocus: false,
roles: "admin", roles: "admin",
controller: "playbackconfiguration" controller: "dashboard/playbackconfiguration"
}); });
defineRoute({ defineRoute({
path: "/availableplugins.html", path: "/availableplugins.html",
@ -308,31 +297,23 @@ define([
path: "/search.html", path: "/search.html",
controller: "searchpage" controller: "searchpage"
}); });
defineRoute({
path: "/selectserver.html",
autoFocus: false,
anonymous: true,
startup: true,
controller: "auth/selectserver",
type: "selectserver"
});
defineRoute({ defineRoute({
path: "/serveractivity.html", path: "/serveractivity.html",
autoFocus: false, autoFocus: false,
roles: "admin", roles: "admin",
controller: "serveractivity" controller: "dashboard/serveractivity"
}); });
defineRoute({ defineRoute({
path: "/apikeys.html", path: "/apikeys.html",
autoFocus: false, autoFocus: false,
roles: "admin", roles: "admin",
controller: "apikeys" controller: "dashboard/apikeys"
}); });
defineRoute({ defineRoute({
path: "/streamingsettings.html", path: "/streamingsettings.html",
autoFocus: false, autoFocus: false,
roles: "admin", roles: "admin",
controller: "streamingsettings" controller: "dashboard/streamingsettings"
}); });
defineRoute({ defineRoute({
path: "/tv.html", path: "/tv.html",
@ -423,6 +404,15 @@ define([
fullscreen: true, fullscreen: true,
enableMediaControl: false enableMediaControl: false
}); });
defineRoute({
path: "/nowplaying.html",
controller: "playback/nowplaying",
autoFocus: false,
transition: "fade",
fullscreen: true,
supportsThemeMedia: true,
enableMediaControl: false
});
defineRoute({ defineRoute({
path: "/configurationpage", path: "/configurationpage",
autoFocus: false, autoFocus: false,
@ -436,4 +426,9 @@ define([
isDefaultRoute: true, isDefaultRoute: true,
autoFocus: false autoFocus: false
}); });
defineRoute({
path: "/index.html",
autoFocus: false,
isDefaultRoute: true
});
}); });

View file

@ -12,7 +12,7 @@ import events from 'events';
} }
export function enableAutoLogin(val) { export function enableAutoLogin(val) {
if (val != null) { if (val !== undefined) {
this.set('enableAutoLogin', val.toString()); this.set('enableAutoLogin', val.toString());
} }
@ -20,7 +20,7 @@ import events from 'events';
} }
export function enableSystemExternalPlayers(val) { export function enableSystemExternalPlayers(val) {
if (val !== null) { if (val !== undefined) {
this.set('enableSystemExternalPlayers', val.toString()); this.set('enableSystemExternalPlayers', val.toString());
} }
@ -29,7 +29,7 @@ import events from 'events';
export function enableAutomaticBitrateDetection(isInNetwork, mediaType, val) { export function enableAutomaticBitrateDetection(isInNetwork, mediaType, val) {
var key = 'enableautobitratebitrate-' + mediaType + '-' + isInNetwork; var key = 'enableautobitratebitrate-' + mediaType + '-' + isInNetwork;
if (val != null) { if (val !== undefined) {
if (isInNetwork && mediaType === 'Audio') { if (isInNetwork && mediaType === 'Audio') {
val = true; val = true;
} }
@ -46,7 +46,7 @@ import events from 'events';
export function maxStreamingBitrate(isInNetwork, mediaType, val) { export function maxStreamingBitrate(isInNetwork, mediaType, val) {
var key = 'maxbitrate-' + mediaType + '-' + isInNetwork; var key = 'maxbitrate-' + mediaType + '-' + isInNetwork;
if (val != null) { if (val !== undefined) {
if (isInNetwork && mediaType === 'Audio') { if (isInNetwork && mediaType === 'Audio') {
// nothing to do, this is always a max value // nothing to do, this is always a max value
} else { } else {
@ -72,7 +72,7 @@ import events from 'events';
} }
export function maxChromecastBitrate(val) { export function maxChromecastBitrate(val) {
if (val != null) { if (val !== undefined) {
this.set('chromecastBitrate1', val); this.set('chromecastBitrate1', val);
} }
@ -81,7 +81,7 @@ import events from 'events';
} }
export function syncOnlyOnWifi(val) { export function syncOnlyOnWifi(val) {
if (val != null) { if (val !== undefined) {
this.set('syncOnlyOnWifi', val.toString()); this.set('syncOnlyOnWifi', val.toString());
} }
@ -89,7 +89,7 @@ import events from 'events';
} }
export function syncPath(val) { export function syncPath(val) {
if (val != null) { if (val !== undefined) {
this.set('syncPath', val); this.set('syncPath', val);
} }
@ -97,7 +97,7 @@ import events from 'events';
} }
export function cameraUploadServers(val) { export function cameraUploadServers(val) {
if (val != null) { if (val !== undefined) {
this.set('cameraUploadServers', val.join(',')); this.set('cameraUploadServers', val.join(','));
} }
@ -110,7 +110,7 @@ import events from 'events';
} }
export function runAtStartup(val) { export function runAtStartup(val) {
if (val != null) { if (val !== undefined) {
this.set('runatstartup', val.toString()); this.set('runatstartup', val.toString());
} }

View file

@ -84,7 +84,7 @@ import events from 'events';
} }
export function enableCinemaMode(val) { export function enableCinemaMode(val) {
if (val != null) { if (val !== undefined) {
return this.set('enableCinemaMode', val.toString(), false); return this.set('enableCinemaMode', val.toString(), false);
} }
@ -93,7 +93,7 @@ import events from 'events';
} }
export function enableNextVideoInfoOverlay(val) { export function enableNextVideoInfoOverlay(val) {
if (val != null) { if (val !== undefined) {
return this.set('enableNextVideoInfoOverlay', val.toString()); return this.set('enableNextVideoInfoOverlay', val.toString());
} }
@ -102,7 +102,7 @@ import events from 'events';
} }
export function enableThemeSongs(val) { export function enableThemeSongs(val) {
if (val != null) { if (val !== undefined) {
return this.set('enableThemeSongs', val.toString(), false); return this.set('enableThemeSongs', val.toString(), false);
} }
@ -111,7 +111,7 @@ import events from 'events';
} }
export function enableThemeVideos(val) { export function enableThemeVideos(val) {
if (val != null) { if (val !== undefined) {
return this.set('enableThemeVideos', val.toString(), false); return this.set('enableThemeVideos', val.toString(), false);
} }
@ -120,7 +120,7 @@ import events from 'events';
} }
export function enableFastFadein(val) { export function enableFastFadein(val) {
if (val != null) { if (val !== undefined) {
return this.set('fastFadein', val.toString(), false); return this.set('fastFadein', val.toString(), false);
} }
@ -129,7 +129,7 @@ import events from 'events';
} }
export function enableBackdrops(val) { export function enableBackdrops(val) {
if (val != null) { if (val !== undefined) {
return this.set('enableBackdrops', val.toString(), false); return this.set('enableBackdrops', val.toString(), false);
} }
@ -138,7 +138,7 @@ import events from 'events';
} }
export function language(val) { export function language(val) {
if (val != null) { if (val !== undefined) {
return this.set('language', val.toString(), false); return this.set('language', val.toString(), false);
} }
@ -146,7 +146,7 @@ import events from 'events';
} }
export function dateTimeLocale(val) { export function dateTimeLocale(val) {
if (val != null) { if (val !== undefined) {
return this.set('datetimelocale', val.toString(), false); return this.set('datetimelocale', val.toString(), false);
} }
@ -154,7 +154,7 @@ import events from 'events';
} }
export function skipBackLength(val) { export function skipBackLength(val) {
if (val != null) { if (val !== undefined) {
return this.set('skipBackLength', val.toString()); return this.set('skipBackLength', val.toString());
} }
@ -162,7 +162,7 @@ import events from 'events';
} }
export function skipForwardLength(val) { export function skipForwardLength(val) {
if (val != null) { if (val !== undefined) {
return this.set('skipForwardLength', val.toString()); return this.set('skipForwardLength', val.toString());
} }
@ -170,7 +170,7 @@ import events from 'events';
} }
export function dashboardTheme(val) { export function dashboardTheme(val) {
if (val != null) { if (val !== undefined) {
return this.set('dashboardTheme', val); return this.set('dashboardTheme', val);
} }
@ -178,7 +178,7 @@ import events from 'events';
} }
export function skin(val) { export function skin(val) {
if (val != null) { if (val !== undefined) {
return this.set('skin', val, false); return this.set('skin', val, false);
} }
@ -186,7 +186,7 @@ import events from 'events';
} }
export function theme(val) { export function theme(val) {
if (val != null) { if (val !== undefined) {
return this.set('appTheme', val, false); return this.set('appTheme', val, false);
} }
@ -194,7 +194,7 @@ import events from 'events';
} }
export function screensaver(val) { export function screensaver(val) {
if (val != null) { if (val !== undefined) {
return this.set('screensaver', val, false); return this.set('screensaver', val, false);
} }
@ -202,7 +202,7 @@ import events from 'events';
} }
export function libraryPageSize(val) { export function libraryPageSize(val) {
if (val != null) { if (val !== undefined) {
return this.set('libraryPageSize', parseInt(val, 10), false); return this.set('libraryPageSize', parseInt(val, 10), false);
} }
@ -216,7 +216,7 @@ import events from 'events';
} }
export function soundEffects(val) { export function soundEffects(val) {
if (val != null) { if (val !== undefined) {
return this.set('soundeffects', val, false); return this.set('soundeffects', val, false);
} }

View file

@ -371,8 +371,9 @@ var AppInfo = {};
function initRequireWithBrowser(browser) { function initRequireWithBrowser(browser) {
var bowerPath = getBowerPath(); var bowerPath = getBowerPath();
var componentsPath = getComponentsPath(); var componentsPath = getComponentsPath();
var scriptsPath = getScriptsPath();
define("filesystem", [componentsPath + "/filesystem"], returnFirstDependency); define("filesystem", [scriptsPath + "/filesystem"], returnFirstDependency);
if (window.IntersectionObserver && !browser.edge) { if (window.IntersectionObserver && !browser.edge) {
define("lazyLoader", [componentsPath + "/lazyloader/lazyloader-intersectionobserver"], returnFirstDependency); define("lazyLoader", [componentsPath + "/lazyloader/lazyloader-intersectionobserver"], returnFirstDependency);
@ -425,9 +426,6 @@ var AppInfo = {};
if (!window.fetch) { if (!window.fetch) {
promises.push(require(["fetch"])); promises.push(require(["fetch"]));
} }
if ("function" != typeof Object.assign) {
promises.push(require(["objectassign"]));
}
Promise.all(promises).then(function () { Promise.all(promises).then(function () {
createConnectionManager().then(function () { createConnectionManager().then(function () {
@ -565,7 +563,7 @@ var AppInfo = {};
require(["playerSelectionMenu", "components/playback/remotecontrolautoplay"]); require(["playerSelectionMenu", "components/playback/remotecontrolautoplay"]);
} }
require(["components/screensavermanager"]); require(["libraries/screensavermanager"]);
if (!appHost.supports("physicalvolumecontrol") || browser.touch) { if (!appHost.supports("physicalvolumecontrol") || browser.touch) {
require(["components/playback/volumeosd"]); require(["components/playback/volumeosd"]);
@ -657,7 +655,7 @@ var AppInfo = {};
medialibraryeditor: componentsPath + "/medialibraryeditor/medialibraryeditor", medialibraryeditor: componentsPath + "/medialibraryeditor/medialibraryeditor",
imageoptionseditor: componentsPath + "/imageoptionseditor/imageoptionseditor", imageoptionseditor: componentsPath + "/imageoptionseditor/imageoptionseditor",
apphost: componentsPath + "/apphost", apphost: componentsPath + "/apphost",
visibleinviewport: componentsPath + "/visibleinviewport", visibleinviewport: bowerPath + "/visibleinviewport",
qualityoptions: componentsPath + "/qualityoptions", qualityoptions: componentsPath + "/qualityoptions",
focusManager: componentsPath + "/focusManager", focusManager: componentsPath + "/focusManager",
itemHelper: componentsPath + "/itemhelper", itemHelper: componentsPath + "/itemhelper",
@ -762,8 +760,8 @@ var AppInfo = {};
// TODO remove these libraries // TODO remove these libraries
// all of these have been modified so we need to fix that first // all of these have been modified so we need to fix that first
define("scroller", [componentsPath + "/scroller"], returnFirstDependency); define("scroller", [bowerPath + "/scroller"], returnFirstDependency);
define("navdrawer", [componentsPath + "/navdrawer/navdrawer"], returnFirstDependency); define("navdrawer", [bowerPath + "/navdrawer/navdrawer"], returnFirstDependency);
define("emby-button", [elementsPath + "/emby-button/emby-button"], returnFirstDependency); define("emby-button", [elementsPath + "/emby-button/emby-button"], returnFirstDependency);
define("paper-icon-button-light", [elementsPath + "/emby-button/paper-icon-button-light"], returnFirstDependency); define("paper-icon-button-light", [elementsPath + "/emby-button/paper-icon-button-light"], returnFirstDependency);
@ -803,7 +801,7 @@ var AppInfo = {};
define("playerSettingsMenu", [componentsPath + "/playback/playersettingsmenu"], returnFirstDependency); define("playerSettingsMenu", [componentsPath + "/playback/playersettingsmenu"], returnFirstDependency);
define("playMethodHelper", [componentsPath + "/playback/playmethodhelper"], returnFirstDependency); define("playMethodHelper", [componentsPath + "/playback/playmethodhelper"], returnFirstDependency);
define("brightnessOsd", [componentsPath + "/playback/brightnessosd"], returnFirstDependency); define("brightnessOsd", [componentsPath + "/playback/brightnessosd"], returnFirstDependency);
define("alphaNumericShortcuts", [componentsPath + "/alphanumericshortcuts/alphanumericshortcuts"], returnFirstDependency); define("alphaNumericShortcuts", [scriptsPath + "/alphanumericshortcuts"], returnFirstDependency);
define("multiSelect", [componentsPath + "/multiselect/multiselect"], returnFirstDependency); define("multiSelect", [componentsPath + "/multiselect/multiselect"], returnFirstDependency);
define("alphaPicker", [componentsPath + "/alphapicker/alphapicker"], returnFirstDependency); define("alphaPicker", [componentsPath + "/alphapicker/alphapicker"], returnFirstDependency);
define("tabbedView", [componentsPath + "/tabbedview/tabbedview"], returnFirstDependency); define("tabbedView", [componentsPath + "/tabbedview/tabbedview"], returnFirstDependency);
@ -825,7 +823,7 @@ var AppInfo = {};
define("itemContextMenu", [componentsPath + "/itemcontextmenu"], returnFirstDependency); define("itemContextMenu", [componentsPath + "/itemcontextmenu"], returnFirstDependency);
define("imageEditor", [componentsPath + "/imageeditor/imageeditor"], returnFirstDependency); define("imageEditor", [componentsPath + "/imageeditor/imageeditor"], returnFirstDependency);
define("imageDownloader", [componentsPath + "/imagedownloader/imagedownloader"], returnFirstDependency); define("imageDownloader", [componentsPath + "/imagedownloader/imagedownloader"], returnFirstDependency);
define("dom", [componentsPath + "/dom"], returnFirstDependency); define("dom", [scriptsPath + "/dom"], returnFirstDependency);
define("playerStats", [componentsPath + "/playerstats/playerstats"], returnFirstDependency); define("playerStats", [componentsPath + "/playerstats/playerstats"], returnFirstDependency);
define("searchFields", [componentsPath + "/search/searchfields"], returnFirstDependency); define("searchFields", [componentsPath + "/search/searchfields"], returnFirstDependency);
define("searchResults", [componentsPath + "/search/searchresults"], returnFirstDependency); define("searchResults", [componentsPath + "/search/searchresults"], returnFirstDependency);
@ -855,8 +853,7 @@ var AppInfo = {};
return viewManager; return viewManager;
}); });
define("slideshow", [componentsPath + "/slideshow/slideshow"], returnFirstDependency); define("slideshow", [componentsPath + "/slideshow/slideshow"], returnFirstDependency);
define("objectassign", [componentsPath + "/polyfills/objectassign"], returnFirstDependency); define("focusPreventScroll", ["legacy/focusPreventScroll"], returnFirstDependency);
define("focusPreventScroll", [componentsPath + "/polyfills/focusPreventScroll"], returnFirstDependency);
define("userdataButtons", [componentsPath + "/userdatabuttons/userdatabuttons"], returnFirstDependency); define("userdataButtons", [componentsPath + "/userdatabuttons/userdatabuttons"], returnFirstDependency);
define("listView", [componentsPath + "/listview/listview"], returnFirstDependency); define("listView", [componentsPath + "/listview/listview"], returnFirstDependency);
define("indicators", [componentsPath + "/indicators/indicators"], returnFirstDependency); define("indicators", [componentsPath + "/indicators/indicators"], returnFirstDependency);
@ -874,8 +871,8 @@ var AppInfo = {};
define("dialogHelper", [componentsPath + "/dialogHelper/dialogHelper"], returnFirstDependency); define("dialogHelper", [componentsPath + "/dialogHelper/dialogHelper"], returnFirstDependency);
define("serverNotifications", [componentsPath + "/serverNotifications"], returnFirstDependency); define("serverNotifications", [componentsPath + "/serverNotifications"], returnFirstDependency);
define("skinManager", [componentsPath + "/skinManager"], returnFirstDependency); define("skinManager", [componentsPath + "/skinManager"], returnFirstDependency);
define("keyboardnavigation", [componentsPath + "/input/keyboardnavigation"], returnFirstDependency); define("keyboardnavigation", [scriptsPath + "/keyboardnavigation"], returnFirstDependency);
define("mouseManager", [componentsPath + "/input/mouseManager"], returnFirstDependency); define("mouseManager", [scriptsPath + "/mouseManager"], returnFirstDependency);
define("scrollManager", [componentsPath + "/scrollManager"], returnFirstDependency); define("scrollManager", [componentsPath + "/scrollManager"], returnFirstDependency);
define("autoFocuser", [componentsPath + "/autoFocuser"], returnFirstDependency); define("autoFocuser", [componentsPath + "/autoFocuser"], returnFirstDependency);
define("connectionManager", [], function () { define("connectionManager", [], function () {

View file

@ -305,7 +305,7 @@
"LabelCustomCertificatePath": "Път към потребителския сертификат:", "LabelCustomCertificatePath": "Път към потребителския сертификат:",
"LabelCustomCertificatePathHelp": "Път до файл с шифровъчен стандарт №12 (PKCS #12), съдържащ сертификат и частен ключ за поддръжка на протокол TLS на собствен домейн.", "LabelCustomCertificatePathHelp": "Път до файл с шифровъчен стандарт №12 (PKCS #12), съдържащ сертификат и частен ключ за поддръжка на протокол TLS на собствен домейн.",
"LabelCustomCss": "CSS по избор:", "LabelCustomCss": "CSS по избор:",
"LabelCustomCssHelp": "Добавете собствен стил за Уеб-интерфейса.", "LabelCustomCssHelp": "Добавете собствен стил към уеб-интерфейса.",
"LabelCustomDeviceDisplayName": "Показвано име:", "LabelCustomDeviceDisplayName": "Показвано име:",
"LabelCustomRating": "Оценка по избор:", "LabelCustomRating": "Оценка по избор:",
"LabelDashboardTheme": "Облик на сървърното табло:", "LabelDashboardTheme": "Облик на сървърното табло:",
@ -836,7 +836,7 @@
"AddItemToCollectionHelp": "Добавяне към колекция чрез търсенето им и използване на дясно-щракване с мишката или контекстното меню.", "AddItemToCollectionHelp": "Добавяне към колекция чрез търсенето им и използване на дясно-щракване с мишката или контекстното меню.",
"Absolute": "Aбсолютен", "Absolute": "Aбсолютен",
"LabelLanNetworks": "Локални мрежи:", "LabelLanNetworks": "Локални мрежи:",
"LabelKodiMetadataSaveImagePathsHelp": "Това е препоръчително ако имате изображения, пътят към които не е съобразен с изискванията на Kodi", "LabelKodiMetadataSaveImagePathsHelp": "Това е препоръчително, ако наименованието на изображенията не са съобразени с изискванията на Kodi.",
"LabelKodiMetadataSaveImagePaths": "Записване на пътеките към изображенията в nfo файловете", "LabelKodiMetadataSaveImagePaths": "Записване на пътеките към изображенията в nfo файловете",
"LabelChannels": "Канали:", "LabelChannels": "Канали:",
"DropShadow": "Сянка", "DropShadow": "Сянка",
@ -878,5 +878,10 @@
"BoxRear": "Комплект (стар)", "BoxRear": "Комплект (стар)",
"BoxSet": "Комплект", "BoxSet": "Комплект",
"AuthProviderHelp": "Избор на доставчик на услуга за Автентификация, която ще се използва за автентификация на потребителската парола.", "AuthProviderHelp": "Избор на доставчик на услуга за Автентификация, която ще се използва за автентификация на потребителската парола.",
"AllowedRemoteAddressesHelp": "Списък с IP адреси или IP/маска записи, разделени със запетая, които ще имат отдалечен достъп. Ако полето не е попълнено всички адреси ще имат отдалечен достъп." "AllowedRemoteAddressesHelp": "Списък с IP адреси или IP/маска записи, разделени със запетая, които ще имат отдалечен достъп. Ако полето не е попълнено всички адреси ще имат отдалечен достъп.",
"BurnSubtitlesHelp": "Определя дали сървърът трябва да записва субтитри във видеоклиповете припрекодиране. Избягването на това значително ще подобри производителността. Изберете Auto, за да запишете формати, базирани на изображения (VOBSUB, PGS, SUB, IDX) и някои ASS или SSA субтитри.",
"AllowFfmpegThrottlingHelp": "Когато прекодирането или запазването на видео стигне достатъчно далеч напред от текущата позиция за възпроизвеждане, поставете на пауза процеса, така ще се изразходват по-малко ресурси. Това е най-полезно, когато се гледа, без да се търси често из видеото. Изключете това, ако имате проблеми с възпроизвеждането.",
"AllowOnTheFlySubtitleExtractionHelp": "Вградените субтитри могат да бъдат извлечени от видеоклиповете и прехвърлени към клиентите като обикновен текст, за да се предотврати транскодирането на видеото. В някои системи това може да отнеме много време и да спре възпроизвеждането на видео по време на процеса на извличане. Деактивирайте това, за да има вградени субтитри, записани с видео кодиране, когато те не се поддържат от клиентското устройство.",
"CinemaModeConfigurationHelp": "Режимът на кино носи театрално изживяване направо във вашата всекидневна с възможност за пускане на трейлъри и персонализирани интродукции преди основния филм.",
"ChangingMetadataImageSettingsNewContent": "Промените в настройките за изтегляне на метаданни или изображения ще се прилагат само за ново съдържание, добавено към вашата библиотека. За да приложите промените към съществуващите заглавия, ще трябва да обновите метаданните им ръчно."
} }

View file

@ -1603,5 +1603,6 @@
"LabelLibraryPageSize": "Velikost stránky knihovny:", "LabelLibraryPageSize": "Velikost stránky knihovny:",
"LabelDeinterlaceMethod": "Metoda odstranění prokládání:", "LabelDeinterlaceMethod": "Metoda odstranění prokládání:",
"DeinterlaceMethodHelp": "Vyberte metodu odstranění prokládání obrazu při překódování obsahu.", "DeinterlaceMethodHelp": "Vyberte metodu odstranění prokládání obrazu při překódování obsahu.",
"UnsupportedPlayback": "Jellyfin nemůže dešifrovat obsah chráněný technologií DRM, ale pokusí se zobrazit o veškerý obsah, včetně chráněných titulů. Některé soubory se mohou zdát úplně černé kvůli šifrování nebo jiným nepodporovaným funkcím, jako jsou například interaktivní funkce." "UnsupportedPlayback": "Jellyfin nemůže dešifrovat obsah chráněný technologií DRM, ale pokusí se zobrazit o veškerý obsah, včetně chráněných titulů. Některé soubory se mohou zdát úplně černé kvůli šifrování nebo jiným nepodporovaným funkcím, jako jsou například interaktivní funkce.",
"MessageUnauthorizedUser": "Momentálně nemáte oprávnění k přístupu na server. Další informace získáte od správce serveru."
} }

View file

@ -12,7 +12,7 @@
"AllChannels": "Alle kanaler", "AllChannels": "Alle kanaler",
"AllEpisodes": "Alle episoder", "AllEpisodes": "Alle episoder",
"AllLibraries": "Alle biblioteker", "AllLibraries": "Alle biblioteker",
"AllowHWTranscodingHelp": "Lader tuneren omkode streams on-the-fly. Dette kan hjælpe med at reducere omkodning der kræves af serveren.", "AllowHWTranscodingHelp": "Tillader tuneren at omkode streaming on-the-fly. Dette kan hjælpe med at reducere belastning af serveren på grund af yderligere omkodning.",
"AllowMediaConversion": "Tillad media konvertering", "AllowMediaConversion": "Tillad media konvertering",
"AllowMediaConversionHelp": "Giv eller nægt adgang til Konvertér Media featuren.", "AllowMediaConversionHelp": "Giv eller nægt adgang til Konvertér Media featuren.",
"AllowOnTheFlySubtitleExtraction": "Tillad udtræk af undertekster on-the-fly", "AllowOnTheFlySubtitleExtraction": "Tillad udtræk af undertekster on-the-fly",
@ -1539,7 +1539,7 @@
"Album": "Album", "Album": "Album",
"EveryHour": "Hver time", "EveryHour": "Hver time",
"EveryXMinutes": "Hvert {0} minut", "EveryXMinutes": "Hvert {0} minut",
"OnWakeFromSleep": "Når du vågner fra søvn", "OnWakeFromSleep": "Ved vækning fra dvale",
"WeeklyAt": "{0}s ved {1}", "WeeklyAt": "{0}s ved {1}",
"DailyAt": "Dagligt kl. {0}", "DailyAt": "Dagligt kl. {0}",
"LastSeen": "Sidst set {0}", "LastSeen": "Sidst set {0}",
@ -1585,7 +1585,7 @@
"MediaInfoStreamTypeEmbeddedImage": "Indlejret billede", "MediaInfoStreamTypeEmbeddedImage": "Indlejret billede",
"MediaInfoStreamTypeAudio": "Lyd", "MediaInfoStreamTypeAudio": "Lyd",
"LaunchWebAppOnStartupHelp": "Åben web klienten i den standard web browser når serveren starter første gang. Dette vil ikke ske når restart server funktionen benyttes.", "LaunchWebAppOnStartupHelp": "Åben web klienten i den standard web browser når serveren starter første gang. Dette vil ikke ske når restart server funktionen benyttes.",
"LaunchWebAppOnStartup": "Åben webinterfacet når serveren startes", "LaunchWebAppOnStartup": "Åben webinterfacet når serveren startes",
"LabelWeb": "Web:", "LabelWeb": "Web:",
"LabelVideoResolution": "Videoopløsning:", "LabelVideoResolution": "Videoopløsning:",
"LabelVideoBitrate": "Video bitrate:", "LabelVideoBitrate": "Video bitrate:",
@ -1633,9 +1633,11 @@
"ClientSettings": "Klient Indstillinger", "ClientSettings": "Klient Indstillinger",
"ButtonSplit": "Opdel", "ButtonSplit": "Opdel",
"BoxSet": "Box Set", "BoxSet": "Box Set",
"AuthProviderHelp": "Vælg en godkendelse udbyder, der skal bruges til at godkende denne brugers adgangskode.", "AuthProviderHelp": "Vælg en godkendelses udbyder, der kan bruges til at godkende denne brugers adgangskode.",
"AskAdminToCreateLibrary": "Spørg en administrator om at oprette et bibliotek.", "AskAdminToCreateLibrary": "Spørg en administrator om at oprette et bibliotek.",
"Artist": "Artist", "Artist": "Artist",
"EveryXHours": "Hver {0} time", "EveryXHours": "Hver {0} time",
"OnApplicationStartup": "Ved programstart" "OnApplicationStartup": "Ved programstart",
"UnsupportedPlayback": "Jellyfin kan ikke dekryptere indhold, der er beskyttet af DRM, men alt indhold vil blive forsøgt afspillet uanset, inklusive beskyttede titler. Nogle filer kan eventuelt vises med sort skærm på grund af kryptering eller andre funktioner, der ikke understøttes, såsom interaktive titler.",
"MessageUnauthorizedUser": "Du har ikke tilladelse til at tilgå serveren på dette tidspunkt. Kontakt din serveradministrator for mere information."
} }

View file

@ -10,7 +10,7 @@
"AdditionalNotificationServices": "Περιηγηθείτε στον κατάλογο plugin για να εγκαταστήσετε πρόσθετες υπηρεσίες ειδοποίησης.", "AdditionalNotificationServices": "Περιηγηθείτε στον κατάλογο plugin για να εγκαταστήσετε πρόσθετες υπηρεσίες ειδοποίησης.",
"AirDate": "Ημερομηνία προβολής", "AirDate": "Ημερομηνία προβολής",
"Aired": "Προβλήθηκε", "Aired": "Προβλήθηκε",
"Albums": "Άλμπουμ", "Albums": "Άλμπουμς",
"All": "Όλα", "All": "Όλα",
"AllChannels": "Όλα τα κανάλια", "AllChannels": "Όλα τα κανάλια",
"AllComplexFormats": "Όλες οι σύνθετες μορφές (ASS, SSA, VOBSUB, PGS, SUB / IDX κ.λπ.)", "AllComplexFormats": "Όλες οι σύνθετες μορφές (ASS, SSA, VOBSUB, PGS, SUB / IDX κ.λπ.)",
@ -19,7 +19,7 @@
"AllLibraries": "Όλες οι βιβλιοθήκες", "AllLibraries": "Όλες οι βιβλιοθήκες",
"AllowRemoteAccess": "Να επιτρέπονται οι απομακρυσμένες συνδέσεις σε αυτόν το διακομιστή Jellyfin.", "AllowRemoteAccess": "Να επιτρέπονται οι απομακρυσμένες συνδέσεις σε αυτόν το διακομιστή Jellyfin.",
"AllowRemoteAccessHelp": "Εάν δεν επιλεχθεί, όλες οι απομακρυσμένες συνδέσεις θα αποκλειστούν.", "AllowRemoteAccessHelp": "Εάν δεν επιλεχθεί, όλες οι απομακρυσμένες συνδέσεις θα αποκλειστούν.",
"AlwaysPlaySubtitles": άντα αναπαραγωγή Υποτίτλων", "AlwaysPlaySubtitles": αίξτε πάντα",
"AlwaysPlaySubtitlesHelp": "Οι υπότιτλοι που ταιριάζουν με τις προτιμήσεις γλώσσας θα φορτωθούν ανεξάρτητα από τη γλώσσα του ήχου.", "AlwaysPlaySubtitlesHelp": "Οι υπότιτλοι που ταιριάζουν με τις προτιμήσεις γλώσσας θα φορτωθούν ανεξάρτητα από τη γλώσσα του ήχου.",
"AnyLanguage": "Οποιαδήποτε γλώσσα", "AnyLanguage": "Οποιαδήποτε γλώσσα",
"Anytime": "Οποτεδήποτε", "Anytime": "Οποτεδήποτε",
@ -28,7 +28,7 @@
"Artists": "Καλλιτέχνες", "Artists": "Καλλιτέχνες",
"AsManyAsPossible": "Οσο το δυνατον περισσοτερα", "AsManyAsPossible": "Οσο το δυνατον περισσοτερα",
"Ascending": "Αύξουσα", "Ascending": "Αύξουσα",
"AspectRatio": "Αρχικός λόγος διαστάσεων", "AspectRatio": "Αναλογία απεικόνισης",
"AttributeNew": "Νέο", "AttributeNew": "Νέο",
"Audio": "Ήχος", "Audio": "Ήχος",
"Auto": "Αυτόματο", "Auto": "Αυτόματο",
@ -1224,6 +1224,14 @@
"LabelServerName": "Όνομα Διακομιστή:", "LabelServerName": "Όνομα Διακομιστή:",
"ButtonAddImage": "Προσθήκη Εικόνας", "ButtonAddImage": "Προσθήκη Εικόνας",
"BoxRear": "Κουτί(πίσω)", "BoxRear": "Κουτί(πίσω)",
"BookLibraryHelp": "Ήχος και βιβλία υποστηρίζονται.Ελέγξτε τον {0}ονομαστικό οδηγό βιβλίων{1}.", "BookLibraryHelp": "Υποστήριξη ήχου και βιβλίων κειμένου. Εξετάστε τον {0}οδηγό ονομάτων βιβλίου{1}.",
"AuthProviderHelp": "Επιλέξτε ένα Πάροχο Επαλήθευσης για να επαληθεύσετε το κωδικό αυτού του χρήστη." "AuthProviderHelp": "Επιλέξτε ένα Πάροχο Επαλήθευσης για να επαληθεύσετε το κωδικό αυτού του χρήστη.",
"AllowFfmpegThrottling": "Επιτάχυνση Διακωδικοποιησής",
"AlbumArtist": "Άλμπουμ Καλλιτέχνη",
"Album": "Άλμπουμ",
"BoxSet": "Σετ Κουτιού",
"AskAdminToCreateLibrary": "Ζητήστε από έναν διαχειριστή να δημιουργήσει μια βιβλιοθήκη.",
"Artist": "Καλλιτέχνης",
"AllowedRemoteAddressesHelp": "Λίστα διαχωρισμένων διευθύνσεων IP ή καταχωρίσεων IP / netmask για δίκτυα που θα επιτρέπεται η σύνδεση εξ αποστάσεως. Εάν αφεθεί κενό, όλες οι απομακρυσμένες διευθύνσεις θα επιτρέπονται.",
"AllowFfmpegThrottlingHelp": "Όταν ένας διακωδικοποιητής ή remux φτάσει αρκετά μπροστά από την τρέχουσα θέση αναπαραγωγής, διακόψτε τη διαδικασία ώστε να καταναλώσει λιγότερους πόρους. Αυτό είναι πιο χρήσιμο όταν παρακολουθείτε χωρίς να αναζητάτε συχνά. Απενεργοποιήστε το εάν αντιμετωπίζετε προβλήματα αναπαραγωγής."
} }

View file

@ -499,5 +499,6 @@
"HeaderDeleteItems": "Eliminar ítems", "HeaderDeleteItems": "Eliminar ítems",
"HeaderDeleteItem": "Eliminar ítem", "HeaderDeleteItem": "Eliminar ítem",
"HeaderDeleteDevice": "Eliminar dispositivo", "HeaderDeleteDevice": "Eliminar dispositivo",
"HeaderDefaultRecordingSettings": "Ajustes de grabación por defecto" "HeaderDefaultRecordingSettings": "Ajustes de grabación por defecto",
"UnsupportedPlayback": "Jellyfin no puede descifrar contenido protegido por DRM pero a pesar de esto lo intentará con todo el contenido, incluyendo títulos protegidos. Algunos archivos pueden aparecer completamente en negro por estar cifrados o por otras características no soportadas, como títulos interactivos."
} }

View file

@ -130,7 +130,7 @@
"CancelRecording": "Annuler l'enregistrement", "CancelRecording": "Annuler l'enregistrement",
"CancelSeries": "Annuler la série", "CancelSeries": "Annuler la série",
"Categories": "Catégories", "Categories": "Catégories",
"ChangingMetadataImageSettingsNewContent": "Les modifications des réglages de téléchargement des métadonnées et des illustrations ne seront appliquées qu'au nouveau contenu ajouté à votre médiathèque. Pour appliquer ces changements aux titres existants, vous devrez actualiser leurs métadonnées manuellement.", "ChangingMetadataImageSettingsNewContent": "Les modifications des paramètres de téléchargement des métadonnées et des illustrations ne seront appliquées qu'au contenu nouvellement ajouté à votre médiathèque. Pour appliquer ces changements aux titres pré-existants, vous devrez actualiser leurs métadonnées manuellement.",
"ChannelAccessHelp": "Sélectionnez les chaînes à partager avec cet utilisateur. Les administrateurs pourront modifier toutes les chaînes en utilisant le gestionnaire de métadonnées.", "ChannelAccessHelp": "Sélectionnez les chaînes à partager avec cet utilisateur. Les administrateurs pourront modifier toutes les chaînes en utilisant le gestionnaire de métadonnées.",
"ChannelNameOnly": "Seulement la chaîne {0}", "ChannelNameOnly": "Seulement la chaîne {0}",
"ChannelNumber": "Numéro de chaîne", "ChannelNumber": "Numéro de chaîne",

View file

@ -1467,5 +1467,8 @@
"LabelVideoResolution": "Rozdzielczość wideo:", "LabelVideoResolution": "Rozdzielczość wideo:",
"LabelStreamType": "Typ transmisji:", "LabelStreamType": "Typ transmisji:",
"EnableFastImageFadeInHelp": "Włącz szybszą animację pojawiania się dla załadowanych obrazów", "EnableFastImageFadeInHelp": "Włącz szybszą animację pojawiania się dla załadowanych obrazów",
"EnableFastImageFadeIn": "Szybkie pojawianie się obrazów" "EnableFastImageFadeIn": "Szybkie pojawianie się obrazów",
"Artist": "Artysta",
"AlbumArtist": "Album artysty",
"Album": "Album"
} }

View file

@ -1499,5 +1499,6 @@
"DeinterlaceMethodHelp": "Selectați metoda de intercalat pe care să o utilizați la transcodarea conținutului intercalat.", "DeinterlaceMethodHelp": "Selectați metoda de intercalat pe care să o utilizați la transcodarea conținutului intercalat.",
"UnsupportedPlayback": "Jellyfin nu poate decripta conținut protejat de DRM, dar tot conținutul va fi încercat indiferent de titlurile protejate. Unele fișiere pot părea complet negre din cauza criptării sau a altor funcții neacceptate, cum ar fi titluri interactive.", "UnsupportedPlayback": "Jellyfin nu poate decripta conținut protejat de DRM, dar tot conținutul va fi încercat indiferent de titlurile protejate. Unele fișiere pot părea complet negre din cauza criptării sau a altor funcții neacceptate, cum ar fi titluri interactive.",
"LabelLibraryPageSizeHelp": "Setează cantitatea de elemente de afișat pe o pagină a bibliotecii. Setați la 0 pentru a dezactiva paginarea.", "LabelLibraryPageSizeHelp": "Setează cantitatea de elemente de afișat pe o pagină a bibliotecii. Setați la 0 pentru a dezactiva paginarea.",
"LabelLibraryPageSize": "Mărimea paginii Bibliotecă:" "LabelLibraryPageSize": "Mărimea paginii Bibliotecă:",
"MessageUnauthorizedUser": "Nu sunteți autorizat să accesați serverul în acest moment. Vă rugăm să contactați administratorul serverului pentru mai multe informații."
} }

View file

@ -1500,5 +1500,6 @@
"LabelLibraryPageSizeHelp": "Устанавливается количество элементов для отображения на странице медиатеки. Установите 0 для отключения нумерации страниц.", "LabelLibraryPageSizeHelp": "Устанавливается количество элементов для отображения на странице медиатеки. Установите 0 для отключения нумерации страниц.",
"LabelDeinterlaceMethod": "Метод устранения гребёнки:", "LabelDeinterlaceMethod": "Метод устранения гребёнки:",
"DeinterlaceMethodHelp": "Выберите метод устранения гребёнки, который будет использоваться при перекодировании чересстрочного содержания.", "DeinterlaceMethodHelp": "Выберите метод устранения гребёнки, который будет использоваться при перекодировании чересстрочного содержания.",
"UnsupportedPlayback": "Jellyfin не может расшифровать содержимое, защищенное DRM, но в любом случае будет предпринята попытка расшифровки всего содержимого, включая защищенные заголовки. Некоторые файлы могут выглядеть полностью черными из-за шифрования или других неподдерживаемых функций, таких как интерактивные заголовки." "UnsupportedPlayback": "Jellyfin не может расшифровать содержимое, защищенное DRM, но в любом случае будет предпринята попытка расшифровки всего содержимого, включая защищенные заголовки. Некоторые файлы могут выглядеть полностью черными из-за шифрования или других неподдерживаемых функций, таких как интерактивные заголовки.",
"MessageUnauthorizedUser": "В настоящее время у вас нет доступа к серверу. Пожалуйста, свяжитесь с администратором сервера для получения дополнительной информации."
} }

View file

@ -28,7 +28,7 @@ module.exports = merge(common, {
{ {
test: /\.(woff|woff2|eot|ttf|otf)$/, test: /\.(woff|woff2|eot|ttf|otf)$/,
use: [ use: [
'file-loader', 'file-loader'
] ]
} }
] ]

View file

@ -21,7 +21,7 @@ module.exports = merge(common, {
{ {
test: /\.(woff|woff2|eot|ttf|otf)$/, test: /\.(woff|woff2|eot|ttf|otf)$/,
use: [ use: [
'file-loader', 'file-loader'
] ]
} }
] ]

View file

@ -1553,6 +1553,19 @@ autoprefixer@^9.0.0, autoprefixer@^9.6.1, autoprefixer@^9.7.4:
postcss "^7.0.27" postcss "^7.0.27"
postcss-value-parser "^4.0.3" postcss-value-parser "^4.0.3"
autoprefixer@^9.7.6:
version "9.7.6"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.6.tgz#63ac5bbc0ce7934e6997207d5bb00d68fa8293a4"
integrity sha512-F7cYpbN7uVVhACZTeeIeealwdGM6wMtfWARVLTy5xmKtgVdBNJvbDRoCK3YO1orcs7gv/KwYlb3iXwu9Ug9BkQ==
dependencies:
browserslist "^4.11.1"
caniuse-lite "^1.0.30001039"
chalk "^2.4.2"
normalize-range "^0.1.2"
num2fraction "^1.2.2"
postcss "^7.0.27"
postcss-value-parser "^4.0.3"
aws-sign2@~0.7.0: aws-sign2@~0.7.0:
version "0.7.0" version "0.7.0"
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
@ -1970,6 +1983,16 @@ browserslist@^4.0.0, browserslist@^4.11.0, browserslist@^4.6.4, browserslist@^4.
node-releases "^1.1.52" node-releases "^1.1.52"
pkg-up "^3.1.0" pkg-up "^3.1.0"
browserslist@^4.11.1:
version "4.12.0"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.0.tgz#06c6d5715a1ede6c51fc39ff67fd647f740b656d"
integrity sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==
dependencies:
caniuse-lite "^1.0.30001043"
electron-to-chromium "^1.3.413"
node-releases "^1.1.53"
pkg-up "^2.0.0"
browserslist@^4.8.2: browserslist@^4.8.2:
version "4.11.1" version "4.11.1"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.11.1.tgz#92f855ee88d6e050e7e7311d987992014f1a1f1b" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.11.1.tgz#92f855ee88d6e050e7e7311d987992014f1a1f1b"
@ -2240,6 +2263,11 @@ caniuse-lite@^1.0.30001038:
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001039.tgz#b3814a1c38ffeb23567f8323500c09526a577bbe" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001039.tgz#b3814a1c38ffeb23567f8323500c09526a577bbe"
integrity sha512-SezbWCTT34eyFoWHgx8UWso7YtvtM7oosmFoXbCkdC6qJzRfBTeTgE9REtKtiuKXuMwWTZEvdnFNGAyVMorv8Q== integrity sha512-SezbWCTT34eyFoWHgx8UWso7YtvtM7oosmFoXbCkdC6qJzRfBTeTgE9REtKtiuKXuMwWTZEvdnFNGAyVMorv8Q==
caniuse-lite@^1.0.30001039, caniuse-lite@^1.0.30001043:
version "1.0.30001046"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001046.tgz#7a06d3e8fd8aa7f4d21c9a2e313f35f2d06b013e"
integrity sha512-CsGjBRYWG6FvgbyGy+hBbaezpwiqIOLkxQPY4A4Ea49g1eNsnQuESB+n4QM0BKii1j80MyJ26Ir5ywTQkbRE4g==
caseless@~0.12.0: caseless@~0.12.0:
version "0.12.0" version "0.12.0"
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
@ -3667,6 +3695,11 @@ electron-to-chromium@^1.3.390:
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.397.tgz#db640c2e67b08d590a504c20b56904537aa2bafa" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.397.tgz#db640c2e67b08d590a504c20b56904537aa2bafa"
integrity sha512-zcUd1p/7yzTSdWkCTrqGvbnEOASy96d0RJL/lc5BDJoO23Z3G/VHd0yIPbguDU9n8QNUTCigLO7oEdtOb7fp2A== integrity sha512-zcUd1p/7yzTSdWkCTrqGvbnEOASy96d0RJL/lc5BDJoO23Z3G/VHd0yIPbguDU9n8QNUTCigLO7oEdtOb7fp2A==
electron-to-chromium@^1.3.413:
version "1.3.418"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.418.tgz#840021191f466b803a873e154113620c9f53cec6"
integrity sha512-i2QrQtHes5fK/F9QGG5XacM5WKEuR322fxTYF9e8O9Gu0mc0WmjjwGpV8c7Htso6Zf2Di18lc3SIPxmMeRFBug==
elliptic@^6.0.0: elliptic@^6.0.0:
version "6.5.2" version "6.5.2"
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762"