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

Merge branch 'master' into fix-osd-lock

This commit is contained in:
Dmitry Lyzo 2020-07-23 23:53:24 +03:00 committed by GitHub
commit 2f1e792900
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
79 changed files with 1082 additions and 918 deletions

View file

@ -36,6 +36,14 @@ jobs:
targetPath: '$(Build.SourcesDirectory)/deployment/dist' targetPath: '$(Build.SourcesDirectory)/deployment/dist'
artifactName: 'jellyfin-web-$(BuildConfiguration)' artifactName: 'jellyfin-web-$(BuildConfiguration)'
- task: SSH@0
displayName: 'Create target directory on repository server'
condition: or(startsWith(variables['Build.SourceBranch'], 'refs/tags'), startsWith(variables['Build.SourceBranch'], 'refs/heads/master'))
inputs:
sshEndpoint: repository
runOptions: 'inline'
inline: 'mkdir -p /srv/repository/incoming/azure/$(Build.BuildNumber)/$(BuildConfiguration)'
- task: CopyFilesOverSSH@0 - task: CopyFilesOverSSH@0
displayName: 'Upload artifacts to repository server' displayName: 'Upload artifacts to repository server'
condition: or(startsWith(variables['Build.SourceBranch'], 'refs/tags'), startsWith(variables['Build.SourceBranch'], 'refs/heads/master')) condition: or(startsWith(variables['Build.SourceBranch'], 'refs/tags'), startsWith(variables['Build.SourceBranch'], 'refs/heads/master'))

View file

@ -5,16 +5,16 @@
"repository": "https://github.com/jellyfin/jellyfin-web", "repository": "https://github.com/jellyfin/jellyfin-web",
"license": "GPL-2.0-or-later", "license": "GPL-2.0-or-later",
"devDependencies": { "devDependencies": {
"@babel/core": "^7.10.3", "@babel/core": "^7.10.5",
"@babel/plugin-proposal-class-properties": "^7.10.1", "@babel/plugin-proposal-class-properties": "^7.10.1",
"@babel/plugin-proposal-private-methods": "^7.10.1", "@babel/plugin-proposal-private-methods": "^7.10.1",
"@babel/plugin-transform-modules-amd": "^7.9.6", "@babel/plugin-transform-modules-amd": "^7.10.5",
"@babel/polyfill": "^7.8.7", "@babel/polyfill": "^7.8.7",
"@babel/preset-env": "^7.10.3", "@babel/preset-env": "^7.10.3",
"autoprefixer": "^9.8.2", "autoprefixer": "^9.8.5",
"babel-eslint": "^11.0.0-beta.2", "babel-eslint": "^11.0.0-beta.2",
"babel-loader": "^8.0.6", "babel-loader": "^8.0.6",
"browser-sync": "^2.26.7", "browser-sync": "^2.26.10",
"copy-webpack-plugin": "^5.1.1", "copy-webpack-plugin": "^5.1.1",
"css-loader": "^3.6.0", "css-loader": "^3.6.0",
"cssnano": "^4.1.10", "cssnano": "^4.1.10",
@ -57,15 +57,15 @@
"blurhash": "^1.1.3", "blurhash": "^1.1.3",
"classlist.js": "https://github.com/eligrey/classList.js/archive/1.2.20180112.tar.gz", "classlist.js": "https://github.com/eligrey/classList.js/archive/1.2.20180112.tar.gz",
"core-js": "^3.6.5", "core-js": "^3.6.5",
"date-fns": "^2.14.0", "date-fns": "^2.15.0",
"epubjs": "^0.3.85", "epubjs": "^0.3.85",
"fast-text-encoding": "^1.0.3", "fast-text-encoding": "^1.0.3",
"flv.js": "^1.5.0", "flv.js": "^1.5.0",
"headroom.js": "^0.11.0", "headroom.js": "^0.11.0",
"hls.js": "^0.14.0", "hls.js": "^0.14.3",
"howler": "^2.2.0", "howler": "^2.2.0",
"intersection-observer": "^0.11.0", "intersection-observer": "^0.11.0",
"jellyfin-apiclient": "^1.3.0", "jellyfin-apiclient": "^1.4.1",
"jellyfin-noto": "https://github.com/jellyfin/jellyfin-noto", "jellyfin-noto": "https://github.com/jellyfin/jellyfin-noto",
"jquery": "^3.5.1", "jquery": "^3.5.1",
"jstree": "^3.3.10", "jstree": "^3.3.10",
@ -80,7 +80,7 @@
"sortablejs": "^1.10.2", "sortablejs": "^1.10.2",
"swiper": "^5.4.5", "swiper": "^5.4.5",
"webcomponents.js": "^0.7.24", "webcomponents.js": "^0.7.24",
"whatwg-fetch": "^3.0.0" "whatwg-fetch": "^3.2.0"
}, },
"babel": { "babel": {
"presets": [ "presets": [
@ -116,6 +116,12 @@
"src/components/syncPlay/timeSyncManager.js", "src/components/syncPlay/timeSyncManager.js",
"src/controllers/dashboard/logs.js", "src/controllers/dashboard/logs.js",
"src/controllers/dashboard/plugins/repositories.js", "src/controllers/dashboard/plugins/repositories.js",
"src/controllers/playback/nowplaying.js",
"src/controllers/playback/videoosd.js",
"src/controllers/user/display.js",
"src/controllers/user/home.js",
"src/controllers/user/playback.js",
"src/controllers/user/subtitles.js",
"src/plugins/bookPlayer/plugin.js", "src/plugins/bookPlayer/plugin.js",
"src/plugins/bookPlayer/tableOfContents.js", "src/plugins/bookPlayer/tableOfContents.js",
"src/plugins/photoPlayer/plugin.js", "src/plugins/photoPlayer/plugin.js",

View file

@ -235,6 +235,15 @@ div[data-role=controlgroup] a.ui-btn-active {
width: 50%; width: 50%;
} }
.localUsers .cardText-secondary {
white-space: pre-wrap;
height: 3em;
}
.customCssContainer textarea {
resize: none;
}
@media all and (min-width: 70em) { @media all and (min-width: 70em) {
.dashboardSections { .dashboardSections {
-webkit-flex-wrap: wrap; -webkit-flex-wrap: wrap;

View file

@ -1,8 +1,3 @@
html { html {
font-size: 82% !important; font-size: 82% !important;
} }
.formDialogFooter {
position: static !important;
margin: 0 -1em !important;
}

View file

@ -175,6 +175,10 @@
width: 100%; width: 100%;
} }
.layout-tv .sectionTabs {
width: 55%;
}
.selectedMediaFolder { .selectedMediaFolder {
background-color: #f2f2f2 !important; background-color: #f2f2f2 !important;
} }
@ -269,7 +273,7 @@
} }
} }
@media all and (max-width: 84em) { @media all and (max-width: 100em) {
.withSectionTabs .headerTop { .withSectionTabs .headerTop {
padding-bottom: 0.55em; padding-bottom: 0.55em;
} }
@ -277,9 +281,13 @@
.sectionTabs { .sectionTabs {
font-size: 83.5%; font-size: 83.5%;
} }
.layout-tv .sectionTabs {
width: 100%;
}
} }
@media all and (min-width: 84em) { @media all and (min-width: 100em) {
.headerTop { .headerTop {
padding: 0.8em 0.8em; padding: 0.8em 0.8em;
} }
@ -910,21 +918,7 @@ div.itemDetailGalleryLink.defaultCardBackground {
} }
} }
@media all and (min-width: 62.5em) { @media all and (min-width: 100em) {
.headerTop {
padding-left: 0.8em;
padding-right: 0.8em;
}
.headerTabs {
align-self: center;
width: auto;
align-items: center;
justify-content: center;
margin-top: -4.2em;
position: relative;
}
.detailFloatingButton { .detailFloatingButton {
display: none !important; display: none !important;
} }

View file

@ -12,6 +12,7 @@
.hiddenScrollX, .hiddenScrollX,
.layout-tv .scrollX { .layout-tv .scrollX {
-ms-overflow-style: none; -ms-overflow-style: none;
scrollbar-width: none;
} }
.hiddenScrollX-forced { .hiddenScrollX-forced {
@ -40,6 +41,7 @@
.hiddenScrollY, .hiddenScrollY,
.layout-tv .smoothScrollY { .layout-tv .smoothScrollY {
-ms-overflow-style: none; -ms-overflow-style: none;
scrollbar-width: none;
/* Can't do this because it not only hides the scrollbar, but also prevents scrolling */ /* Can't do this because it not only hides the scrollbar, but also prevents scrolling */

View file

@ -129,3 +129,7 @@ div[data-role=page] {
.hide-scroll { .hide-scroll {
overflow-y: hidden; overflow-y: hidden;
} }
.w-100 {
width: 100%;
}

View file

@ -222,46 +222,13 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro
} }
function normalizeImageOptions(options) { function normalizeImageOptions(options) {
var scaleFactor = browser.tv ? 0.8 : 1;
var setQuality; var setQuality;
if (options.maxWidth) { if (options.maxWidth || options.width || options.maxHeight || options.height) {
options.maxWidth = Math.round(options.maxWidth * scaleFactor);
setQuality = true; setQuality = true;
} }
if (options.width) { if (setQuality && !options.quality) {
options.width = Math.round(options.width * scaleFactor); options.quality = 90;
setQuality = true;
}
if (options.maxHeight) {
options.maxHeight = Math.round(options.maxHeight * scaleFactor);
setQuality = true;
}
if (options.height) {
options.height = Math.round(options.height * scaleFactor);
setQuality = true;
}
if (setQuality) {
var quality;
var type = options.type || 'Primary';
if (browser.tv || browser.slow) {
// TODO: wtf
if (browser.chrome) {
// webp support
quality = type === 'Primary' ? 40 : 50;
} else {
quality = type === 'Backdrop' ? 60 : 50;
}
} else {
quality = type === 'Backdrop' ? 70 : 90;
}
options.quality = quality;
} }
} }

View file

@ -1468,7 +1468,7 @@ import 'programStyles';
let additionalCardContent = ''; let additionalCardContent = '';
if (layoutManager.desktop) { if (layoutManager.desktop && !options.disableHoverMenu) {
additionalCardContent += getHoverMenuHtml(item, action, options); additionalCardContent += getHoverMenuHtml(item, action, options);
} }
@ -1497,12 +1497,12 @@ import 'programStyles';
const userData = item.UserData || {}; const userData = item.UserData || {};
if (itemHelper.canMarkPlayed(item) && !options.disableHoverMenu) { if (itemHelper.canMarkPlayed(item)) {
require(['emby-playstatebutton']); require(['emby-playstatebutton']);
html += '<button is="emby-playstatebutton" type="button" data-action="none" class="' + btnCssClass + '" data-id="' + item.Id + '" data-serverid="' + item.ServerId + '" data-itemtype="' + item.Type + '" data-played="' + (userData.Played) + '"><span class="material-icons cardOverlayButtonIcon cardOverlayButtonIcon-hover check"></span></button>'; html += '<button is="emby-playstatebutton" type="button" data-action="none" class="' + btnCssClass + '" data-id="' + item.Id + '" data-serverid="' + item.ServerId + '" data-itemtype="' + item.Type + '" data-played="' + (userData.Played) + '"><span class="material-icons cardOverlayButtonIcon cardOverlayButtonIcon-hover check"></span></button>';
} }
if (itemHelper.canRate(item) && !options.disableHoverMenu) { if (itemHelper.canRate(item)) {
const likes = userData.Likes == null ? '' : userData.Likes; const likes = userData.Likes == null ? '' : userData.Likes;
@ -1510,10 +1510,7 @@ import 'programStyles';
html += '<button is="emby-ratingbutton" type="button" data-action="none" class="' + btnCssClass + '" data-id="' + item.Id + '" data-serverid="' + item.ServerId + '" data-itemtype="' + item.Type + '" data-likes="' + likes + '" data-isfavorite="' + (userData.IsFavorite) + '"><span class="material-icons cardOverlayButtonIcon cardOverlayButtonIcon-hover favorite"></span></button>'; html += '<button is="emby-ratingbutton" type="button" data-action="none" class="' + btnCssClass + '" data-id="' + item.Id + '" data-serverid="' + item.ServerId + '" data-itemtype="' + item.Type + '" data-likes="' + likes + '" data-isfavorite="' + (userData.IsFavorite) + '"><span class="material-icons cardOverlayButtonIcon cardOverlayButtonIcon-hover favorite"></span></button>';
} }
if (!options.disableHoverMenu) { html += '<button is="paper-icon-button-light" class="' + btnCssClass + '" data-action="menu"><span class="material-icons cardOverlayButtonIcon cardOverlayButtonIcon-hover more_vert"></span></button>';
html += '<button is="paper-icon-button-light" class="' + btnCssClass + '" data-action="menu"><span class="material-icons cardOverlayButtonIcon cardOverlayButtonIcon-hover more_vert"></span></button>';
}
html += '</div>'; html += '</div>';
html += '</div>'; html += '</div>';

View file

@ -273,7 +273,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
imageClass += ' itemAction'; imageClass += ' itemAction';
} }
var imageAction = playOnImageClick ? 'resume' : action; var imageAction = playOnImageClick ? 'link' : action;
if (imgUrl) { if (imgUrl) {
html += '<div data-action="' + imageAction + '" class="' + imageClass + ' lazy" data-src="' + imgUrl + '" item-icon>'; html += '<div data-action="' + imageAction + '" class="' + imageClass + ' lazy" data-src="' + imgUrl + '" item-icon>';

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

View file

@ -1,10 +1,6 @@
define(['components/loading/loadingLegacy', 'browser', 'css!./loading'], function (loadingLegacy, browser) { define(['css!./loading'], function () {
'use strict'; 'use strict';
if (browser.tizen || browser.operaTv || browser.chromecast || browser.orsay || browser.web0s || browser.ps4) {
return loadingLegacy;
}
var loadingElem; var loadingElem;
var layer1; var layer1;
var layer2; var layer2;

View file

@ -1,10 +0,0 @@
.loading-spinner {
margin-top: -3em;
margin-left: -3em;
width: 6em;
height: 6em;
position: fixed;
top: 50%;
left: 50%;
z-index: 9999999;
}

View file

@ -1,28 +0,0 @@
define(['require', 'css!./loadingLegacy'], function (require) {
'use strict';
var loadingElem;
return {
show: function () {
var elem = loadingElem;
if (!elem) {
elem = document.createElement('img');
elem.src = require.toUrl('.').split('?')[0] + '/loader.gif';
loadingElem = elem;
elem.classList.add('loading-spinner');
document.body.appendChild(elem);
}
elem.classList.remove('hide');
},
hide: function () {
var elem = loadingElem;
if (elem) {
elem.classList.add('hide');
}
}
};
});

View file

@ -245,6 +245,43 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi
}); });
} }
function afterDeleted(context, item) {
var parentId = item.ParentId || item.SeasonId || item.SeriesId;
if (parentId) {
reload(context, parentId, item.ServerId);
} else {
require(['appRouter'], function (appRouter) {
appRouter.goHome();
});
}
}
function showMoreMenu(context, button, user) {
require(['itemContextMenu'], function (itemContextMenu) {
var item = currentItem;
itemContextMenu.show({
item: item,
positionTo: button,
edit: false,
editImages: true,
editSubtitles: true,
sync: false,
share: false,
play: false,
queue: false,
user: user
}).then(function (result) {
if (result.deleted) {
afterDeleted(context, item);
} else if (result.updated) {
reload(context, item.Id, item.ServerId);
}
});
});
}
function onEditorClick(e) { function onEditorClick(e) {
var btnRemoveFromEditorList = dom.parentWithClass(e.target, 'btnRemoveFromEditorList'); var btnRemoveFromEditorList = dom.parentWithClass(e.target, 'btnRemoveFromEditorList');
@ -270,7 +307,6 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi
} }
function init(context, apiClient) { function init(context, apiClient) {
context.querySelector('.externalIds').addEventListener('click', function (e) { context.querySelector('.externalIds').addEventListener('click', function (e) {
var btnOpenExternalId = dom.parentWithClass(e.target, 'btnOpenExternalId'); var btnOpenExternalId = dom.parentWithClass(e.target, 'btnOpenExternalId');
if (btnOpenExternalId) { if (btnOpenExternalId) {
@ -294,13 +330,17 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi
closeDialog(false); closeDialog(false);
}); });
context.querySelector('.btnHeaderSave').addEventListener('click', function (e) { context.querySelector('.btnMore').addEventListener('click', function (e) {
getApiClient().getCurrentUser().then(function (user) {
showMoreMenu(context, e.target, user);
});
});
context.querySelector('.btnHeaderSave').addEventListener('click', function (e) {
context.querySelector('.btnSave').click(); context.querySelector('.btnSave').click();
}); });
context.querySelector('#chkLockData').addEventListener('click', function (e) { context.querySelector('#chkLockData').addEventListener('click', function (e) {
if (!e.target.checked) { if (!e.target.checked) {
showElement('.providerSettingsContainer'); showElement('.providerSettingsContainer');
} else { } else {
@ -1088,6 +1128,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi
elem.innerHTML = globalize.translateDocument(template, 'core'); elem.innerHTML = globalize.translateDocument(template, 'core');
elem.querySelector('.formDialogFooter').classList.remove('formDialogFooter'); elem.querySelector('.formDialogFooter').classList.remove('formDialogFooter');
elem.querySelector('.btnClose').classList.add('hide');
elem.querySelector('.btnHeaderSave').classList.remove('hide'); elem.querySelector('.btnHeaderSave').classList.remove('hide');
elem.querySelector('.btnCancel').classList.add('hide'); elem.querySelector('.btnCancel').classList.add('hide');

View file

@ -8,6 +8,9 @@
<span class="material-icons check"></span> <span class="material-icons check"></span>
<span>${Save}</span> <span>${Save}</span>
</button> </button>
<button is="paper-icon-button-light" class="btnMore autoSize" tabindex="-1">
<span class="material-icons more_vert"></span>
</button>
<button is="paper-icon-button-light" class="btnCancel btnClose autoSize" tabindex="-1"> <button is="paper-icon-button-light" class="btnCancel btnClose autoSize" tabindex="-1">
<span class="material-icons close"></span> <span class="material-icons close"></span>
</button> </button>

View file

@ -114,8 +114,6 @@
.nowPlayingBarUserDataButtons { .nowPlayingBarUserDataButtons {
display: inline-block; display: inline-block;
margin-left: 1em;
margin-right: 1em;
} }
.nowPlayingBarPositionSlider::-webkit-slider-thumb { .nowPlayingBarPositionSlider::-webkit-slider-thumb {

View file

@ -72,7 +72,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
if (layoutManager.mobile) { if (layoutManager.mobile) {
html += '<button is="paper-icon-button-light" class="nextTrackButton mediaButton"><span class="material-icons skip_next"></span></button>'; html += '<button is="paper-icon-button-light" class="nextTrackButton mediaButton"><span class="material-icons skip_next"></span></button>';
} else { } else {
html += '<button is="paper-icon-button-light" class="btnToggleContextMenu"><span class="material-icons more_vert"></span></button>'; html += '<button is="paper-icon-button-light" class="btnToggleContextMenu mediaButton"><span class="material-icons more_vert"></span></button>';
} }
html += '</div>'; html += '</div>';
@ -204,15 +204,11 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
volumeSliderContainer.classList.toggle('hide', appHost.supports('physicalvolumecontrol')); volumeSliderContainer.classList.toggle('hide', appHost.supports('physicalvolumecontrol'));
function setVolume() { volumeSlider.addEventListener('input', (e) => {
if (currentPlayer) { if (currentPlayer) {
currentPlayer.setVolume(this.value); currentPlayer.setVolume(e.target.value);
} }
} });
volumeSlider.addEventListener('change', setVolume);
volumeSlider.addEventListener('mousemove', setVolume);
volumeSlider.addEventListener('touchmove', setVolume);
positionSlider.addEventListener('change', function () { positionSlider.addEventListener('change', function () {
@ -355,7 +351,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
function updateRepeatModeDisplay(repeatMode) { function updateRepeatModeDisplay(repeatMode) {
toggleRepeatButtonIcon.classList.remove('repeat', 'repeat_one'); toggleRepeatButtonIcon.classList.remove('repeat', 'repeat_one');
const cssClass = 'repeatButton-active'; const cssClass = 'buttonActive';
switch (repeatMode) { switch (repeatMode) {
case 'RepeatAll': case 'RepeatAll':
@ -375,18 +371,14 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
} }
function updateTimeDisplay(positionTicks, runtimeTicks, bufferedRanges) { function updateTimeDisplay(positionTicks, runtimeTicks, bufferedRanges) {
// See bindEvents for why this is necessary // See bindEvents for why this is necessary
if (positionSlider && !positionSlider.dragging) { if (positionSlider && !positionSlider.dragging) {
if (runtimeTicks) { if (runtimeTicks) {
var pct = positionTicks / runtimeTicks; var pct = positionTicks / runtimeTicks;
pct *= 100; pct *= 100;
positionSlider.value = pct; positionSlider.value = pct;
} else { } else {
positionSlider.value = 0; positionSlider.value = 0;
} }
} }
@ -396,9 +388,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
} }
if (currentTimeElement) { if (currentTimeElement) {
var timeText = positionTicks == null ? '--:--' : datetime.getDisplayRunningTime(positionTicks); var timeText = positionTicks == null ? '--:--' : datetime.getDisplayRunningTime(positionTicks);
if (runtimeTicks) { if (runtimeTicks) {
timeText += ' / ' + datetime.getDisplayRunningTime(runtimeTicks); timeText += ' / ' + datetime.getDisplayRunningTime(runtimeTicks);
} }
@ -606,14 +596,11 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
function onPlaybackStart(e, state) { function onPlaybackStart(e, state) {
console.debug('nowplaying event: ' + e.type); console.debug('nowplaying event: ' + e.type);
var player = this; var player = this;
onStateChanged.call(player, e, state); onStateChanged.call(player, e, state);
} }
function onRepeatModeChange() { function onRepeatModeChange() {
if (!isEnabled) { if (!isEnabled) {
return; return;
} }
@ -628,9 +615,8 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
let shuffleMode = playbackManager.getQueueShuffleMode(); let shuffleMode = playbackManager.getQueueShuffleMode();
let context = nowPlayingBarElement; let context = nowPlayingBarElement;
const cssClass = 'shuffleQueue-active'; const cssClass = 'buttonActive';
let toggleShuffleButton = context.querySelector('.btnShuffleQueue'); let toggleShuffleButton = context.querySelector('.btnShuffleQueue');
switch (shuffleMode) { switch (shuffleMode) {
case 'Shuffle': case 'Shuffle':
toggleShuffleButton.classList.add(cssClass); toggleShuffleButton.classList.add(cssClass);
@ -643,7 +629,6 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
} }
function showNowPlayingBar() { function showNowPlayingBar() {
if (!isVisibilityAllowed) { if (!isVisibilityAllowed) {
hideNowPlayingBar(); hideNowPlayingBar();
return; return;

View file

@ -72,7 +72,6 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
const now = (new Date).getTime(); const now = (new Date).getTime();
if (method !== reportPlaybackLastMethod || now - (reportPlaybackLastTime || 0) >= reportPlaybackLogDelay) { if (method !== reportPlaybackLastMethod || now - (reportPlaybackLastTime || 0) >= reportPlaybackLogDelay) {
console.debug(method + '-' + JSON.stringify(info));
reportPlaybackLastMethod = method; reportPlaybackLastMethod = method;
reportPlaybackLastTime = now; reportPlaybackLastTime = now;
} }

View file

@ -278,6 +278,10 @@
flex-direction: column; flex-direction: column;
} }
.layout-desktop .nowPlayingPageUserDataButtons {
display: none;
}
.nowPlayingInfoContainer { .nowPlayingInfoContainer {
-webkit-box-orient: vertical !important; -webkit-box-orient: vertical !important;
-webkit-box-direction: normal !important; -webkit-box-direction: normal !important;

View file

@ -359,7 +359,7 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
function updateRepeatModeDisplay(repeatMode) { function updateRepeatModeDisplay(repeatMode) {
var context = dlg; var context = dlg;
let toggleRepeatButtons = context.querySelectorAll('.repeatToggleButton'); let toggleRepeatButtons = context.querySelectorAll('.repeatToggleButton');
const cssClass = 'repeatButton-active'; const cssClass = 'buttonActive';
let innHtml = '<span class="material-icons repeat"></span>'; let innHtml = '<span class="material-icons repeat"></span>';
let repeatOn = true; let repeatOn = true;
@ -494,7 +494,7 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
itemsContainer.innerHTML = html; itemsContainer.innerHTML = html;
if (focusedItemPlaylistId !== null) { if (focusedItemPlaylistId !== null) {
focusedItemPlaylistId = focusedItemPlaylistId.getAttribute('data-playlistitemid'); focusedItemPlaylistId = focusedItemPlaylistId.getAttribute('data-playlistitemid');
const newFocusedItem = itemsContainer.querySelector(`button[data-playlistitemid=${focusedItemPlaylistId}]`); const newFocusedItem = itemsContainer.querySelector(`button[data-playlistitemid="${focusedItemPlaylistId}"]`);
if (newFocusedItem !== null) { if (newFocusedItem !== null) {
newFocusedItem.focus(); newFocusedItem.focus();
} }
@ -503,7 +503,7 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
var playlistItemId = playbackManager.getCurrentPlaylistItemId(player); var playlistItemId = playbackManager.getCurrentPlaylistItemId(player);
if (playlistItemId) { if (playlistItemId) {
var img = itemsContainer.querySelector('.listItem[data-playlistItemId="' + playlistItemId + '"] .listItemImage'); var img = itemsContainer.querySelector(`.listItem[data-playlistItemId="${playlistItemId}"] .listItemImage`);
if (img) { if (img) {
img.classList.remove('lazy'); img.classList.remove('lazy');
@ -528,7 +528,7 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
function onShuffleQueueModeChange(updateView = true) { function onShuffleQueueModeChange(updateView = true) {
let shuffleMode = playbackManager.getQueueShuffleMode(this); let shuffleMode = playbackManager.getQueueShuffleMode(this);
let context = dlg; let context = dlg;
const cssClass = 'shuffleQueue-active'; const cssClass = 'buttonActive';
let shuffleButtons = context.querySelectorAll('.btnShuffleQueue'); let shuffleButtons = context.querySelectorAll('.btnShuffleQueue');
for (let shuffleButton of shuffleButtons) { for (let shuffleButton of shuffleButtons) {
@ -788,13 +788,10 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
return datetime.getDisplayRunningTime(ticks); return datetime.getDisplayRunningTime(ticks);
}; };
function setVolume() { context.querySelector('.nowPlayingVolumeSlider').addEventListener('input', (e) => {
playbackManager.setVolume(this.value, currentPlayer); playbackManager.setVolume(e.target.value, currentPlayer);
} });
context.querySelector('.nowPlayingVolumeSlider').addEventListener('change', setVolume);
context.querySelector('.nowPlayingVolumeSlider').addEventListener('mousemove', setVolume);
context.querySelector('.nowPlayingVolumeSlider').addEventListener('touchmove', setVolume);
context.querySelector('.buttonMute').addEventListener('click', function () { context.querySelector('.buttonMute').addEventListener('click', function () {
playbackManager.toggleMute(currentPlayer); playbackManager.toggleMute(currentPlayer);
}); });

View file

@ -464,7 +464,7 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager',
showTitle: true, showTitle: true,
overlayText: false, overlayText: false,
centerText: true, centerText: true,
action: 'play' overlayPlayButton: true
}); });

View file

@ -37,7 +37,7 @@ function showNewJoinGroupSelection (button, user, apiClient) {
console.debug('No item is currently playing.'); console.debug('No item is currently playing.');
} }
apiClient.sendSyncPlayCommand('ListGroups').then(function (response) { apiClient.getSyncPlayGroups().then(function (response) {
response.json().then(function (groups) { response.json().then(function (groups) {
var menuItems = groups.map(function (group) { var menuItems = groups.map(function (group) {
return { return {
@ -83,9 +83,9 @@ function showNewJoinGroupSelection (button, user, apiClient) {
actionsheet.show(menuOptions).then(function (id) { actionsheet.show(menuOptions).then(function (id) {
if (id == 'new-group') { if (id == 'new-group') {
apiClient.sendSyncPlayCommand('NewGroup'); apiClient.createSyncPlayGroup();
} else { } else if (id) {
apiClient.sendSyncPlayCommand('JoinGroup', { apiClient.joinSyncPlayGroup({
GroupId: id, GroupId: id,
PlayingItemId: playingItemId PlayingItemId: playingItemId
}); });
@ -140,7 +140,7 @@ function showLeaveGroupSelection (button, user, apiClient) {
actionsheet.show(menuOptions).then(function (id) { actionsheet.show(menuOptions).then(function (id) {
if (id == 'leave-group') { if (id == 'leave-group') {
apiClient.sendSyncPlayCommand('LeaveGroup'); apiClient.leaveSyncPlayGroup();
} }
}).catch((error) => { }).catch((error) => {
console.error('SyncPlay: unexpected error showing group menu:', error); console.error('SyncPlay: unexpected error showing group menu:', error);

View file

@ -139,7 +139,7 @@ class SyncPlayManager {
return; return;
} }
apiClient.sendSyncPlayCommand('UpdatePing', { apiClient.sendSyncPlayPing({
Ping: ping Ping: ping
}); });
} }
@ -212,6 +212,7 @@ class SyncPlayManager {
if (!this.lastPlaybackWaiting) { if (!this.lastPlaybackWaiting) {
this.lastPlaybackWaiting = new Date(); this.lastPlaybackWaiting = new Date();
} }
events.trigger(this, 'waiting'); events.trigger(this, 'waiting');
} }
@ -288,6 +289,7 @@ class SyncPlayManager {
player.setPlaybackRate(this.localPlayerPlaybackRate); player.setPlaybackRate(this.localPlayerPlaybackRate);
this.localPlayerPlaybackRate = 1.0; this.localPlayerPlaybackRate = 1.0;
} }
this.currentPlayer = null; this.currentPlayer = null;
this.playbackRateSupported = false; this.playbackRateSupported = false;
} }
@ -433,6 +435,7 @@ class SyncPlayManager {
}); });
return; return;
} }
// Get playing item id // Get playing item id
let playingItemId; let playingItemId;
try { try {
@ -447,7 +450,7 @@ class SyncPlayManager {
if (!success) { if (!success) {
console.warning('Error reporting playback state to server. Joining group will fail.'); console.warning('Error reporting playback state to server. Joining group will fail.');
} }
apiClient.sendSyncPlayCommand('JoinGroup', { apiClient.joinSyncPlayGroup({
GroupId: groupId, GroupId: groupId,
PlayingItemId: playingItemId PlayingItemId: playingItemId
}); });
@ -619,6 +622,7 @@ class SyncPlayManager {
if (this.currentPlayer) { if (this.currentPlayer) {
this.currentPlayer.setPlaybackRate(1); this.currentPlayer.setPlaybackRate(1);
} }
this.clearSyncIcon(); this.clearSyncIcon();
} }
@ -658,7 +662,7 @@ class SyncPlayManager {
*/ */
playRequest (player) { playRequest (player) {
var apiClient = connectionManager.currentApiClient(); var apiClient = connectionManager.currentApiClient();
apiClient.sendSyncPlayCommand('PlayRequest'); apiClient.requestSyncPlayStart();
} }
/** /**
@ -666,7 +670,7 @@ class SyncPlayManager {
*/ */
pauseRequest (player) { pauseRequest (player) {
var apiClient = connectionManager.currentApiClient(); var apiClient = connectionManager.currentApiClient();
apiClient.sendSyncPlayCommand('PauseRequest'); apiClient.requestSyncPlayPause();
// Pause locally as well, to give the user some little control // Pause locally as well, to give the user some little control
playbackManager._localUnpause(player); playbackManager._localUnpause(player);
} }
@ -676,7 +680,7 @@ class SyncPlayManager {
*/ */
seekRequest (PositionTicks, player) { seekRequest (PositionTicks, player) {
var apiClient = connectionManager.currentApiClient(); var apiClient = connectionManager.currentApiClient();
apiClient.sendSyncPlayCommand('SeekRequest', { apiClient.requestSyncPlaySeek({
PositionTicks: PositionTicks PositionTicks: PositionTicks
}); });
} }

View file

@ -1,4 +1,4 @@
define(['apphost', 'appSettings', 'dom', 'connectionManager', 'loading', 'layoutManager', 'browser', 'globalize', 'cardStyle', 'emby-checkbox'], function (appHost, appSettings, dom, connectionManager, loading, layoutManager, browser, globalize) { define(['apphost', 'appSettings', 'dom', 'connectionManager', 'loading', 'layoutManager', 'libraryMenu', 'browser', 'globalize', 'cardStyle', 'emby-checkbox'], function (appHost, appSettings, dom, connectionManager, loading, layoutManager, libraryMenu, browser, globalize) {
'use strict'; 'use strict';
var enableFocusTransform = !browser.slow && !browser.edge; var enableFocusTransform = !browser.slow && !browser.edge;
@ -7,18 +7,10 @@ define(['apphost', 'appSettings', 'dom', 'connectionManager', 'loading', 'layout
loading.show(); loading.show();
apiClient.authenticateUserByName(username, password).then(function (result) { apiClient.authenticateUserByName(username, password).then(function (result) {
var user = result.User; var user = result.User;
var serverId = getParameterByName('serverid');
var newUrl;
if (user.Policy.IsAdministrator && !serverId) {
newUrl = 'dashboard.html';
} else {
newUrl = 'home.html';
}
loading.hide(); loading.hide();
Dashboard.onServerChanged(user.Id, result.AccessToken, apiClient); Dashboard.onServerChanged(user.Id, result.AccessToken, apiClient);
Dashboard.navigate(newUrl); Dashboard.navigate('home.html');
}, function (response) { }, function (response) {
page.querySelector('#txtManualName').value = ''; page.querySelector('#txtManualName').value = '';
page.querySelector('#txtManualPassword').value = ''; page.querySelector('#txtManualPassword').value = '';
@ -194,6 +186,7 @@ define(['apphost', 'appSettings', 'dom', 'connectionManager', 'loading', 'layout
}); });
view.addEventListener('viewshow', function (e) { view.addEventListener('viewshow', function (e) {
loading.show(); loading.show();
libraryMenu.setTransparentMenu(true);
if (!appHost.supports('multiserver')) { if (!appHost.supports('multiserver')) {
view.querySelector('.btnSelectServer').classList.add('hide'); view.querySelector('.btnSelectServer').classList.add('hide');
@ -215,5 +208,8 @@ define(['apphost', 'appSettings', 'dom', 'connectionManager', 'loading', 'layout
view.querySelector('.disclaimer').textContent = options.LoginDisclaimer || ''; view.querySelector('.disclaimer').textContent = options.LoginDisclaimer || '';
}); });
}); });
view.addEventListener('viewhide', function (e) {
libraryMenu.setTransparentMenu(false);
});
}; };
}); });

View file

@ -1,4 +1,4 @@
define(['loading', 'appRouter', 'layoutManager', 'appSettings', 'apphost', 'focusManager', 'connectionManager', 'globalize', 'actionsheet', 'dom', 'browser', 'material-icons', 'flexStyles', 'emby-scroller', 'emby-itemscontainer', 'cardStyle', 'emby-button'], function (loading, appRouter, layoutManager, appSettings, appHost, focusManager, connectionManager, globalize, actionSheet, dom, browser) { define(['loading', 'appRouter', 'layoutManager', 'libraryMenu', 'appSettings', 'apphost', 'focusManager', 'connectionManager', 'globalize', 'actionsheet', 'dom', 'browser', 'material-icons', 'flexStyles', 'emby-scroller', 'emby-itemscontainer', 'cardStyle', 'emby-button'], function (loading, appRouter, layoutManager, libraryMenu, appSettings, appHost, focusManager, connectionManager, globalize, actionSheet, dom, browser) {
'use strict'; 'use strict';
var enableFocusTransform = !browser.slow && !browser.edge; var enableFocusTransform = !browser.slow && !browser.edge;
@ -183,6 +183,7 @@ define(['loading', 'appRouter', 'layoutManager', 'appSettings', 'apphost', 'focu
view.addEventListener('viewshow', function (e) { view.addEventListener('viewshow', function (e) {
var isRestored = e.detail.isRestored; var isRestored = e.detail.isRestored;
appRouter.setTitle(null); appRouter.setTitle(null);
libraryMenu.setTransparentMenu(true);
if (!isRestored) { if (!isRestored) {
loadServers(); loadServers();

View file

@ -169,13 +169,7 @@ define(['datetime', 'events', 'itemHelper', 'serverNotifications', 'dom', 'globa
function reloadSystemInfo(view, apiClient) { function reloadSystemInfo(view, apiClient) {
apiClient.getSystemInfo().then(function (systemInfo) { apiClient.getSystemInfo().then(function (systemInfo) {
view.querySelector('#serverName').innerHTML = globalize.translate('DashboardServerName', systemInfo.ServerName); view.querySelector('#serverName').innerHTML = globalize.translate('DashboardServerName', systemInfo.ServerName);
var localizedVersion = globalize.translate('DashboardVersionNumber', systemInfo.Version); view.querySelector('#versionNumber').innerHTML = globalize.translate('DashboardVersionNumber', systemInfo.Version);
if (systemInfo.SystemUpdateLevel !== 'Release') {
localizedVersion += ' ' + systemInfo.SystemUpdateLevel;
}
view.querySelector('#versionNumber').innerHTML = localizedVersion;
view.querySelector('#operatingSystem').innerHTML = globalize.translate('DashboardOperatingSystem', systemInfo.OperatingSystem); view.querySelector('#operatingSystem').innerHTML = globalize.translate('DashboardOperatingSystem', systemInfo.OperatingSystem);
view.querySelector('#architecture').innerHTML = globalize.translate('DashboardArchitecture', systemInfo.SystemArchitecture); view.querySelector('#architecture').innerHTML = globalize.translate('DashboardArchitecture', systemInfo.SystemArchitecture);

View file

@ -161,7 +161,7 @@ define(['jQuery', 'apphost', 'scripts/taskbutton', 'loading', 'libraryMenu', 'gl
showType: false, showType: false,
showLocations: false, showLocations: false,
showMenu: false, showMenu: false,
showNameWithIcon: true showNameWithIcon: false
}); });
for (var i = 0; i < virtualFolders.length; i++) { for (var i = 0; i < virtualFolders.length; i++) {
@ -176,7 +176,7 @@ define(['jQuery', 'apphost', 'scripts/taskbutton', 'loading', 'libraryMenu', 'gl
$('.btnCardMenu', divVirtualFolders).on('click', function () { $('.btnCardMenu', divVirtualFolders).on('click', function () {
showCardMenu(page, this, virtualFolders); showCardMenu(page, this, virtualFolders);
}); });
divVirtualFolders.querySelector('.addLibrary').addEventListener('click', function () { divVirtualFolders.querySelector('#addLibrary').addEventListener('click', function () {
addVirtualFolder(page); addVirtualFolder(page);
}); });
$('.editLibrary', divVirtualFolders).on('click', function () { $('.editLibrary', divVirtualFolders).on('click', function () {
@ -247,7 +247,12 @@ define(['jQuery', 'apphost', 'scripts/taskbutton', 'loading', 'libraryMenu', 'gl
style += 'min-width:33.3%;'; style += 'min-width:33.3%;';
} }
html += '<div class="card backdropCard scalableCard backdropCard-scalable" style="' + style + '" data-index="' + index + '" data-id="' + virtualFolder.ItemId + '">'; if (virtualFolder.Locations.length == 0) {
html += '<div id="addLibrary" class="card backdropCard scalableCard backdropCard-scalable" style="' + style + '" data-index="' + index + '" data-id="' + virtualFolder.ItemId + '">';
} else {
html += '<div class="card backdropCard scalableCard backdropCard-scalable" style="' + style + '" data-index="' + index + '" data-id="' + virtualFolder.ItemId + '">';
}
html += '<div class="cardBox visualCardBox">'; html += '<div class="cardBox visualCardBox">';
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>';

View file

@ -53,11 +53,13 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti
user: user, user: user,
share: true share: true
}; };
return options; return options;
} }
function getProgramScheduleHtml(items) { function getProgramScheduleHtml(items) {
var html = ''; var html = '';
html += '<div is="emby-itemscontainer" class="itemsContainer vertical-list" data-contextmenu="false">'; html += '<div is="emby-itemscontainer" class="itemsContainer vertical-list" data-contextmenu="false">';
html += listView.getListViewHtml({ html += listView.getListViewHtml({
items: items, items: items,
@ -71,6 +73,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti
moreButton: false, moreButton: false,
recordButton: false recordButton: false
}); });
html += '</div>'; html += '</div>';
return html; return html;
@ -143,7 +146,6 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti
instance._currentPlaybackMediaSources = mediaSources; instance._currentPlaybackMediaSources = mediaSources;
page.querySelector('.trackSelections').classList.remove('hide'); page.querySelector('.trackSelections').classList.remove('hide');
select.setLabel(globalize.translate('LabelVersion')); select.setLabel(globalize.translate('LabelVersion'));
var currentValue = select.value; var currentValue = select.value;
@ -165,7 +167,6 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti
renderAudioSelections(page, mediaSources); renderAudioSelections(page, mediaSources);
renderSubtitleSelections(page, mediaSources); renderSubtitleSelections(page, mediaSources);
} }
} }
function renderVideoSelections(page, mediaSources) { function renderVideoSelections(page, mediaSources) {
@ -173,9 +174,11 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti
var mediaSource = mediaSources.filter(function (m) { var mediaSource = mediaSources.filter(function (m) {
return m.Id === mediaSourceId; return m.Id === mediaSourceId;
})[0]; })[0];
var tracks = mediaSource.MediaStreams.filter(function (m) { var tracks = mediaSource.MediaStreams.filter(function (m) {
return m.Type === 'Video'; return m.Type === 'Video';
}); });
var select = page.querySelector('.selectVideo'); var select = page.querySelector('.selectVideo');
select.setLabel(globalize.translate('LabelVideo')); select.setLabel(globalize.translate('LabelVideo'));
var selectedId = tracks.length ? tracks[0].Index : -1; var selectedId = tracks.length ? tracks[0].Index : -1;
@ -248,7 +251,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti
return 'Video' === m.Type; return 'Video' === m.Type;
}); });
// This only makes sence on Video items // This only makes sense on Video items
if (videoTracks.length) { if (videoTracks.length) {
var selected = -1 === selectedId ? ' selected' : ''; var selected = -1 === selectedId ? ' selected' : '';
select.innerHTML = '<option value="-1">' + globalize.translate('Off') + '</option>' + tracks.map(function (v) { select.innerHTML = '<option value="-1">' + globalize.translate('Off') + '</option>' + tracks.map(function (v) {
@ -256,7 +259,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti
return '<option value="' + v.Index + '" ' + selected + '>' + v.DisplayTitle + '</option>'; return '<option value="' + v.Index + '" ' + selected + '>' + v.DisplayTitle + '</option>';
}).join(''); }).join('');
if (tracks.length > 1) { if (tracks.length > 0) {
select.removeAttribute('disabled'); select.removeAttribute('disabled');
} else { } else {
select.setAttribute('disabled', 'disabled'); select.setAttribute('disabled', 'disabled');
@ -723,11 +726,10 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti
disableIndicators: true, disableIndicators: true,
disableHoverMenu: true, disableHoverMenu: true,
overlayPlayButton: true, overlayPlayButton: true,
width: dom.getWindowSize().innerWidth * 0.25 width: dom.getWindowSize().innerWidth * 0.5
}); });
elem.innerHTML = cardHtml; elem.innerHTML = cardHtml;
imageLoader.lazyChildren(elem); imageLoader.lazyChildren(elem);
} }
@ -1359,7 +1361,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti
imageSize: 'large', imageSize: 'large',
enableSideMediaInfo: false, enableSideMediaInfo: false,
highlight: false, highlight: false,
action: layoutManager.tv ? 'resume' : 'none', action: !layoutManager.desktop ? 'link' : 'none',
imagePlayButton: true, imagePlayButton: true,
includeParentInfoInTitle: false includeParentInfoInTitle: false
}); });

View file

@ -1,22 +1,22 @@
define(['components/remotecontrol/remotecontrol', 'libraryMenu', 'emby-button'], function (remotecontrolFactory, libraryMenu) { import remotecontrolFactory from 'components/remotecontrol/remotecontrol';
'use strict'; import libraryMenu from 'libraryMenu';
import 'emby-button';
return function (view, params) { export default function (view, params) {
var remoteControl = new remotecontrolFactory(); const remoteControl = new remotecontrolFactory();
remoteControl.init(view, view.querySelector('.remoteControlContent')); remoteControl.init(view, view.querySelector('.remoteControlContent'));
view.addEventListener('viewshow', function (e) { view.addEventListener('viewshow', function (e) {
libraryMenu.setTransparentMenu(true); libraryMenu.setTransparentMenu(true);
if (remoteControl) { if (remoteControl) {
remoteControl.onShow(); remoteControl.onShow();
} }
}); });
view.addEventListener('viewbeforehide', function (e) { view.addEventListener('viewbeforehide', function (e) {
libraryMenu.setTransparentMenu(false); libraryMenu.setTransparentMenu(false);
if (remoteControl) { if (remoteControl) {
remoteControl.destroy(); remoteControl.destroy();
} }
}); });
}; }
});

View file

@ -1,5 +1,26 @@
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) { import playbackManager from 'playbackManager';
'use strict'; import dom from 'dom';
import inputManager from 'inputManager';
import datetime from 'datetime';
import itemHelper from 'itemHelper';
import mediaInfo from 'mediaInfo';
import focusManager from 'focusManager';
import imageLoader from 'imageLoader';
import scrollHelper from 'scrollHelper';
import events from 'events';
import connectionManager from 'connectionManager';
import browser from 'browser';
import globalize from 'globalize';
import appHost from 'apphost';
import layoutManager from 'layoutManager';
import * as userSettings from 'userSettings';
import keyboardnavigation from 'keyboardnavigation';
import 'scrollStyles';
import 'emby-slider';
import 'paper-icon-button-light';
import 'css!assets/css/videoosd';
/* eslint-disable indent */
function seriesImageUrl(item, options) { function seriesImageUrl(item, options) {
if ('Episode' !== item.Type) { if ('Episode' !== item.Type) {
@ -49,13 +70,13 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
return document.querySelector('.dialogContainer .dialog.opened'); return document.querySelector('.dialogContainer .dialog.opened');
} }
return function (view, params) { export default function (view, params) {
function onVerticalSwipe(e, elem, data) { function onVerticalSwipe(e, elem, data) {
var player = currentPlayer; const player = currentPlayer;
if (player) { if (player) {
var deltaY = data.currentDeltaY; const deltaY = data.currentDeltaY;
var windowSize = dom.getWindowSize(); const windowSize = dom.getWindowSize();
if (supportsBrightnessChange && data.clientX < windowSize.innerWidth / 2) { if (supportsBrightnessChange && data.clientX < windowSize.innerWidth / 2) {
return void doBrightnessTouch(deltaY, player, windowSize.innerHeight); return void doBrightnessTouch(deltaY, player, windowSize.innerHeight);
@ -66,23 +87,23 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
} }
function doBrightnessTouch(deltaY, player, viewHeight) { function doBrightnessTouch(deltaY, player, viewHeight) {
var delta = -deltaY / viewHeight * 100; const delta = -deltaY / viewHeight * 100;
var newValue = playbackManager.getBrightness(player) + delta; let newValue = playbackManager.getBrightness(player) + delta;
newValue = Math.min(newValue, 100); newValue = Math.min(newValue, 100);
newValue = Math.max(newValue, 0); newValue = Math.max(newValue, 0);
playbackManager.setBrightness(newValue, player); playbackManager.setBrightness(newValue, player);
} }
function doVolumeTouch(deltaY, player, viewHeight) { function doVolumeTouch(deltaY, player, viewHeight) {
var delta = -deltaY / viewHeight * 100; const delta = -deltaY / viewHeight * 100;
var newValue = playbackManager.getVolume(player) + delta; let newValue = playbackManager.getVolume(player) + delta;
newValue = Math.min(newValue, 100); newValue = Math.min(newValue, 100);
newValue = Math.max(newValue, 0); newValue = Math.max(newValue, 0);
playbackManager.setVolume(newValue, player); playbackManager.setVolume(newValue, player);
} }
function onDoubleClick(e) { function onDoubleClick(e) {
var clientX = e.clientX; const clientX = e.clientX;
if (null != clientX) { if (null != clientX) {
if (clientX < dom.getWindowSize().innerWidth / 2) { if (clientX < dom.getWindowSize().innerWidth / 2) {
@ -98,7 +119,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
function getDisplayItem(item) { function getDisplayItem(item) {
if ('TvChannel' === item.Type) { if ('TvChannel' === item.Type) {
var apiClient = connectionManager.getApiClient(item.ServerId); const apiClient = connectionManager.getApiClient(item.ServerId);
return apiClient.getItem(apiClient.getCurrentUserId(), item.Id).then(function (refreshedItem) { return apiClient.getItem(apiClient.getCurrentUserId(), item.Id).then(function (refreshedItem) {
return { return {
originalItem: refreshedItem, originalItem: refreshedItem,
@ -124,7 +145,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
connectionManager.getApiClient(item.ServerId).getCurrentUser().then(function (user) { connectionManager.getApiClient(item.ServerId).getCurrentUser().then(function (user) {
if (user.Policy.EnableLiveTvManagement) { if (user.Policy.EnableLiveTvManagement) {
require(['recordingButton'], function (RecordingButton) { import('recordingButton').then(({default: RecordingButton}) => {
if (recordingButtonManager) { if (recordingButtonManager) {
return void recordingButtonManager.refreshItem(item); return void recordingButtonManager.refreshItem(item);
} }
@ -140,22 +161,22 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
} }
function updateDisplayItem(itemInfo) { function updateDisplayItem(itemInfo) {
var item = itemInfo.originalItem; const item = itemInfo.originalItem;
currentItem = item; currentItem = item;
var displayItem = itemInfo.displayItem || item; const displayItem = itemInfo.displayItem || item;
updateRecordingButton(displayItem); updateRecordingButton(displayItem);
setPoster(displayItem, item); setPoster(displayItem, item);
var parentName = displayItem.SeriesName || displayItem.Album; let parentName = displayItem.SeriesName || displayItem.Album;
if (displayItem.EpisodeTitle || displayItem.IsSeries) { if (displayItem.EpisodeTitle || displayItem.IsSeries) {
parentName = displayItem.Name; parentName = displayItem.Name;
} }
setTitle(displayItem, parentName); setTitle(displayItem, parentName);
var titleElement; let titleElement;
var osdTitle = view.querySelector('.osdTitle'); const osdTitle = view.querySelector('.osdTitle');
titleElement = osdTitle; titleElement = osdTitle;
var displayName = itemHelper.getDisplayName(displayItem, { let displayName = itemHelper.getDisplayName(displayItem, {
includeParentInfo: 'Program' !== displayItem.Type, includeParentInfo: 'Program' !== displayItem.Type,
includeIndexNumber: 'Program' !== displayItem.Type includeIndexNumber: 'Program' !== displayItem.Type
}); });
@ -172,7 +193,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
titleElement.classList.add('hide'); titleElement.classList.add('hide');
} }
var mediaInfoHtml = mediaInfo.getPrimaryMediaInfoHtml(displayItem, { const mediaInfoHtml = mediaInfo.getPrimaryMediaInfoHtml(displayItem, {
runtime: false, runtime: false,
subtitles: false, subtitles: false,
tomatoes: false, tomatoes: false,
@ -182,7 +203,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
episodeTitleIndexNumber: 'Program' !== displayItem.Type, episodeTitleIndexNumber: 'Program' !== displayItem.Type,
programIndicator: false programIndicator: false
}); });
var osdMediaInfo = view.querySelector('.osdMediaInfo'); const osdMediaInfo = view.querySelector('.osdMediaInfo');
osdMediaInfo.innerHTML = mediaInfoHtml; osdMediaInfo.innerHTML = mediaInfoHtml;
if (mediaInfoHtml) { if (mediaInfoHtml) {
@ -191,8 +212,8 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
osdMediaInfo.classList.add('hide'); osdMediaInfo.classList.add('hide');
} }
var secondaryMediaInfo = view.querySelector('.osdSecondaryMediaInfo'); const secondaryMediaInfo = view.querySelector('.osdSecondaryMediaInfo');
var secondaryMediaInfoHtml = mediaInfo.getSecondaryMediaInfoHtml(displayItem, { const secondaryMediaInfoHtml = mediaInfo.getSecondaryMediaInfoHtml(displayItem, {
startDate: false, startDate: false,
programTime: false programTime: false
}); });
@ -240,7 +261,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
} }
function setDisplayTime(elem, date) { function setDisplayTime(elem, date) {
var html; let html;
if (date) { if (date) {
date = datetime.parseISO8601Date(date); date = datetime.parseISO8601Date(date);
@ -255,7 +276,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
} }
function updateNowPlayingInfo(player, state) { function updateNowPlayingInfo(player, state) {
var item = state.NowPlayingItem; const item = state.NowPlayingItem;
currentItem = item; currentItem = item;
if (!item) { if (!item) {
@ -298,7 +319,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
function setTitle(item, parentName) { function setTitle(item, parentName) {
Emby.Page.setTitle(parentName || ''); Emby.Page.setTitle(parentName || '');
var documentTitle = parentName || (item ? item.Name : null); const documentTitle = parentName || (item ? item.Name : null);
if (documentTitle) { if (documentTitle) {
document.title = documentTitle; document.title = documentTitle;
@ -306,10 +327,10 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
} }
function setPoster(item, secondaryItem) { function setPoster(item, secondaryItem) {
var osdPoster = view.querySelector('.osdPoster'); const osdPoster = view.querySelector('.osdPoster');
if (item) { if (item) {
var imgUrl = seriesImageUrl(item, { let imgUrl = seriesImageUrl(item, {
maxWidth: osdPoster.clientWidth * 2, maxWidth: osdPoster.clientWidth * 2,
type: 'Primary' type: 'Primary'
}) || seriesImageUrl(item, { }) || seriesImageUrl(item, {
@ -385,7 +406,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
} }
function onHideAnimationComplete(e) { function onHideAnimationComplete(e) {
var elem = e.target; const elem = e.target;
if (elem != osdBottomElement) if (elem != osdBottomElement)
return; return;
elem.classList.add('hide'); elem.classList.add('hide');
@ -396,7 +417,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
function showMainOsdControls() { function showMainOsdControls() {
if (!currentVisibleMenu) { if (!currentVisibleMenu) {
var elem = osdBottomElement; const elem = osdBottomElement;
currentVisibleMenu = 'osd'; currentVisibleMenu = 'osd';
clearHideAnimationEventListeners(elem); clearHideAnimationEventListeners(elem);
elem.classList.remove('hide'); elem.classList.remove('hide');
@ -413,7 +434,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
function hideMainOsdControls() { function hideMainOsdControls() {
if ('osd' === currentVisibleMenu) { if ('osd' === currentVisibleMenu) {
var elem = osdBottomElement; const elem = osdBottomElement;
clearHideAnimationEventListeners(elem); clearHideAnimationEventListeners(elem);
elem.classList.add('videoOsdBottom-hidden'); elem.classList.add('videoOsdBottom-hidden');
dom.addEventListener(elem, transitionEndEventName, onHideAnimationComplete, { dom.addEventListener(elem, transitionEndEventName, onHideAnimationComplete, {
@ -442,9 +463,9 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
function onPointerMove(e) { function onPointerMove(e) {
if ('mouse' === (e.pointerType || (layoutManager.mobile ? 'touch' : 'mouse'))) { if ('mouse' === (e.pointerType || (layoutManager.mobile ? 'touch' : 'mouse'))) {
var eventX = e.screenX || 0; const eventX = e.screenX || 0;
var eventY = e.screenY || 0; const eventY = e.screenY || 0;
var obj = lastPointerMoveData; const obj = lastPointerMoveData;
if (!obj) { if (!obj) {
lastPointerMoveData = { lastPointerMoveData = {
@ -465,7 +486,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
} }
function onInputCommand(e) { function onInputCommand(e) {
var player = currentPlayer; const player = currentPlayer;
switch (e.detail.command) { switch (e.detail.command) {
case 'left': case 'left':
@ -524,7 +545,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
} }
function onRecordingCommand() { function onRecordingCommand() {
var btnRecord = view.querySelector('.btnRecord'); const btnRecord = view.querySelector('.btnRecord');
if (!btnRecord.classList.contains('hide')) { if (!btnRecord.classList.contains('hide')) {
btnRecord.click(); btnRecord.click();
@ -551,7 +572,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
} }
function onStateChanged(event, state) { function onStateChanged(event, state) {
var player = this; const player = this;
if (state.NowPlayingItem) { if (state.NowPlayingItem) {
isEnabled = true; isEnabled = true;
@ -569,21 +590,21 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
function onVolumeChanged(e) { function onVolumeChanged(e) {
if (isEnabled) { if (isEnabled) {
var player = this; const player = this;
updatePlayerVolumeState(player, player.isMuted(), player.getVolume()); updatePlayerVolumeState(player, player.isMuted(), player.getVolume());
} }
} }
function onPlaybackStart(e, state) { function onPlaybackStart(e, state) {
console.debug('nowplaying event: ' + e.type); console.debug('nowplaying event: ' + e.type);
var player = this; const player = this;
onStateChanged.call(player, e, state); onStateChanged.call(player, e, state);
resetUpNextDialog(); resetUpNextDialog();
} }
function resetUpNextDialog() { function resetUpNextDialog() {
comingUpNextDisplayed = false; comingUpNextDisplayed = false;
var dlg = currentUpNextDialog; const dlg = currentUpNextDialog;
if (dlg) { if (dlg) {
dlg.destroy(); dlg.destroy();
@ -603,8 +624,8 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
} }
function onMediaStreamsChanged(e) { function onMediaStreamsChanged(e) {
var player = this; const player = this;
var state = playbackManager.getPlayerState(player); const state = playbackManager.getPlayerState(player);
onStateChanged.call(player, { onStateChanged.call(player, {
type: 'init' type: 'init'
}, state); }, state);
@ -624,7 +645,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
currentPlayer = player; currentPlayer = player;
if (!player) return; if (!player) return;
} }
var state = playbackManager.getPlayerState(player); const state = playbackManager.getPlayerState(player);
onStateChanged.call(player, { onStateChanged.call(player, {
type: 'init' type: 'init'
}, state); }, state);
@ -649,7 +670,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
destroyStats(); destroyStats();
destroySubtitleSync(); destroySubtitleSync();
resetUpNextDialog(); resetUpNextDialog();
var player = currentPlayer; const player = currentPlayer;
if (player) { if (player) {
events.off(player, 'playbackstart', onPlaybackStart); events.off(player, 'playbackstart', onPlaybackStart);
@ -667,15 +688,15 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
function onTimeUpdate(e) { function onTimeUpdate(e) {
// Test for 'currentItem' is required for Firefox since its player spams 'timeupdate' events even being at breakpoint // Test for 'currentItem' is required for Firefox since its player spams 'timeupdate' events even being at breakpoint
if (isEnabled && currentItem) { if (isEnabled && currentItem) {
var now = new Date().getTime(); const now = new Date().getTime();
if (!(now - lastUpdateTime < 700)) { if (!(now - lastUpdateTime < 700)) {
lastUpdateTime = now; lastUpdateTime = now;
var player = this; const player = this;
currentRuntimeTicks = playbackManager.duration(player); currentRuntimeTicks = playbackManager.duration(player);
var currentTime = playbackManager.currentTime(player); const currentTime = playbackManager.currentTime(player);
updateTimeDisplay(currentTime, currentRuntimeTicks, playbackManager.playbackStartTime(player), playbackManager.getBufferedRanges(player)); updateTimeDisplay(currentTime, currentRuntimeTicks, playbackManager.playbackStartTime(player), playbackManager.getBufferedRanges(player));
var item = currentItem; const item = currentItem;
refreshProgramInfoIfNeeded(player, item); refreshProgramInfoIfNeeded(player, item);
showComingUpNextIfNeeded(player, item, currentTime, currentRuntimeTicks); showComingUpNextIfNeeded(player, item, currentTime, currentRuntimeTicks);
} }
@ -684,9 +705,9 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
function showComingUpNextIfNeeded(player, currentItem, currentTimeTicks, runtimeTicks) { function showComingUpNextIfNeeded(player, currentItem, currentTimeTicks, runtimeTicks) {
if (runtimeTicks && currentTimeTicks && !comingUpNextDisplayed && !currentVisibleMenu && 'Episode' === currentItem.Type && userSettings.enableNextVideoInfoOverlay()) { if (runtimeTicks && currentTimeTicks && !comingUpNextDisplayed && !currentVisibleMenu && 'Episode' === currentItem.Type && userSettings.enableNextVideoInfoOverlay()) {
var showAtSecondsLeft = runtimeTicks >= 3e10 ? 40 : runtimeTicks >= 24e9 ? 35 : 30; const showAtSecondsLeft = runtimeTicks >= 3e10 ? 40 : runtimeTicks >= 24e9 ? 35 : 30;
var showAtTicks = runtimeTicks - 1e3 * showAtSecondsLeft * 1e4; const showAtTicks = runtimeTicks - 1e3 * showAtSecondsLeft * 1e4;
var timeRemainingTicks = runtimeTicks - currentTimeTicks; const timeRemainingTicks = runtimeTicks - currentTimeTicks;
if (currentTimeTicks >= showAtTicks && runtimeTicks >= 6e9 && timeRemainingTicks >= 2e8) { if (currentTimeTicks >= showAtTicks && runtimeTicks >= 6e9 && timeRemainingTicks >= 2e8) {
showComingUpNext(player); showComingUpNext(player);
@ -701,7 +722,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
} }
function showComingUpNext(player) { function showComingUpNext(player) {
require(['upNextDialog'], function (UpNextDialog) { import('upNextDialog').then(({default: UpNextDialog}) => {
if (!(currentVisibleMenu || currentUpNextDialog)) { if (!(currentVisibleMenu || currentUpNextDialog)) {
currentVisibleMenu = 'upnext'; currentVisibleMenu = 'upnext';
comingUpNextDisplayed = true; comingUpNextDisplayed = true;
@ -719,15 +740,15 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
function refreshProgramInfoIfNeeded(player, item) { function refreshProgramInfoIfNeeded(player, item) {
if ('TvChannel' === item.Type) { if ('TvChannel' === item.Type) {
var program = item.CurrentProgram; const program = item.CurrentProgram;
if (program && program.EndDate) { if (program && program.EndDate) {
try { try {
var endDate = datetime.parseISO8601Date(program.EndDate); const endDate = datetime.parseISO8601Date(program.EndDate);
if (new Date().getTime() >= endDate.getTime()) { if (new Date().getTime() >= endDate.getTime()) {
console.debug('program info needs to be refreshed'); console.debug('program info needs to be refreshed');
var state = playbackManager.getPlayerState(player); const state = playbackManager.getPlayerState(player);
onStateChanged.call(player, { onStateChanged.call(player, {
type: 'init' type: 'init'
}, state); }, state);
@ -755,9 +776,9 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
} }
function updatePlayerStateInternal(event, player, state) { function updatePlayerStateInternal(event, player, state) {
var playState = state.PlayState || {}; const playState = state.PlayState || {};
updatePlayPauseState(playState.IsPaused); updatePlayPauseState(playState.IsPaused);
var supportedCommands = playbackManager.getSupportedCommands(player); const supportedCommands = playbackManager.getSupportedCommands(player);
currentPlayerSupportedCommands = supportedCommands; currentPlayerSupportedCommands = supportedCommands;
supportsBrightnessChange = -1 !== supportedCommands.indexOf('SetBrightness'); supportsBrightnessChange = -1 !== supportedCommands.indexOf('SetBrightness');
updatePlayerVolumeState(player, playState.IsMuted, playState.VolumeLevel); updatePlayerVolumeState(player, playState.IsMuted, playState.VolumeLevel);
@ -768,7 +789,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
btnFastForward.disabled = !playState.CanSeek; btnFastForward.disabled = !playState.CanSeek;
btnRewind.disabled = !playState.CanSeek; btnRewind.disabled = !playState.CanSeek;
var nowPlayingItem = state.NowPlayingItem || {}; const nowPlayingItem = state.NowPlayingItem || {};
playbackStartTimeTicks = playState.PlaybackStartTimeTicks; playbackStartTimeTicks = playState.PlaybackStartTimeTicks;
updateTimeDisplay(playState.PositionTicks, nowPlayingItem.RunTimeTicks, playState.PlaybackStartTimeTicks, playState.BufferedRanges || []); updateTimeDisplay(playState.PositionTicks, nowPlayingItem.RunTimeTicks, playState.PlaybackStartTimeTicks, playState.BufferedRanges || []);
updateNowPlayingInfo(player, state); updateNowPlayingInfo(player, state);
@ -779,7 +800,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
view.querySelector('.btnVideoOsdSettings').classList.add('hide'); view.querySelector('.btnVideoOsdSettings').classList.add('hide');
} }
var isProgressClear = state.MediaSource && null == state.MediaSource.RunTimeTicks; const isProgressClear = state.MediaSource && null == state.MediaSource.RunTimeTicks;
nowPlayingPositionSlider.setIsClear(isProgressClear); nowPlayingPositionSlider.setIsClear(isProgressClear);
if (nowPlayingItem.RunTimeTicks) { if (nowPlayingItem.RunTimeTicks) {
@ -816,12 +837,12 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
if (enableProgressByTimeOfDay) { if (enableProgressByTimeOfDay) {
if (nowPlayingPositionSlider && !nowPlayingPositionSlider.dragging) { if (nowPlayingPositionSlider && !nowPlayingPositionSlider.dragging) {
if (programStartDateMs && programEndDateMs) { if (programStartDateMs && programEndDateMs) {
var currentTimeMs = (playbackStartTimeTicks + (positionTicks || 0)) / 1e4; const currentTimeMs = (playbackStartTimeTicks + (positionTicks || 0)) / 1e4;
var programRuntimeMs = programEndDateMs - programStartDateMs; const programRuntimeMs = programEndDateMs - programStartDateMs;
if (nowPlayingPositionSlider.value = getDisplayPercentByTimeOfDay(programStartDateMs, programRuntimeMs, currentTimeMs), bufferedRanges.length) { if (nowPlayingPositionSlider.value = getDisplayPercentByTimeOfDay(programStartDateMs, programRuntimeMs, currentTimeMs), bufferedRanges.length) {
var rangeStart = getDisplayPercentByTimeOfDay(programStartDateMs, programRuntimeMs, (playbackStartTimeTicks + (bufferedRanges[0].start || 0)) / 1e4); const rangeStart = getDisplayPercentByTimeOfDay(programStartDateMs, programRuntimeMs, (playbackStartTimeTicks + (bufferedRanges[0].start || 0)) / 1e4);
var rangeEnd = getDisplayPercentByTimeOfDay(programStartDateMs, programRuntimeMs, (playbackStartTimeTicks + (bufferedRanges[0].end || 0)) / 1e4); const rangeEnd = getDisplayPercentByTimeOfDay(programStartDateMs, programRuntimeMs, (playbackStartTimeTicks + (bufferedRanges[0].end || 0)) / 1e4);
nowPlayingPositionSlider.setBufferedRanges([{ nowPlayingPositionSlider.setBufferedRanges([{
start: rangeStart, start: rangeStart,
end: rangeEnd end: rangeEnd
@ -840,7 +861,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
} else { } else {
if (nowPlayingPositionSlider && !nowPlayingPositionSlider.dragging) { if (nowPlayingPositionSlider && !nowPlayingPositionSlider.dragging) {
if (runtimeTicks) { if (runtimeTicks) {
var pct = positionTicks / runtimeTicks; let pct = positionTicks / runtimeTicks;
pct *= 100; pct *= 100;
nowPlayingPositionSlider.value = pct; nowPlayingPositionSlider.value = pct;
} else { } else {
@ -864,9 +885,9 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
} }
function updatePlayerVolumeState(player, isMuted, volumeLevel) { function updatePlayerVolumeState(player, isMuted, volumeLevel) {
var supportedCommands = currentPlayerSupportedCommands; const supportedCommands = currentPlayerSupportedCommands;
var showMuteButton = true; let showMuteButton = true;
var showVolumeSlider = true; let showVolumeSlider = true;
if (-1 === supportedCommands.indexOf('Mute')) { if (-1 === supportedCommands.indexOf('Mute')) {
showMuteButton = false; showMuteButton = false;
@ -914,8 +935,8 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
} }
function updatePlaylist(player) { function updatePlaylist(player) {
var btnPreviousTrack = view.querySelector('.btnPreviousTrack'); const btnPreviousTrack = view.querySelector('.btnPreviousTrack');
var btnNextTrack = view.querySelector('.btnNextTrack'); const btnNextTrack = view.querySelector('.btnNextTrack');
btnPreviousTrack.classList.remove('hide'); btnPreviousTrack.classList.remove('hide');
btnNextTrack.classList.remove('hide'); btnNextTrack.classList.remove('hide');
btnNextTrack.disabled = false; btnNextTrack.disabled = false;
@ -928,7 +949,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
return; return;
} }
var html = datetime.getDisplayRunningTime(ticks); let html = datetime.getDisplayRunningTime(ticks);
if (divider) { if (divider) {
html = '&nbsp;/&nbsp;' + html; html = '&nbsp;/&nbsp;' + html;
@ -938,15 +959,15 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
} }
function onSettingsButtonClick(e) { function onSettingsButtonClick(e) {
var btn = this; const btn = this;
require(['playerSettingsMenu'], function (playerSettingsMenu) { import('playerSettingsMenu').then(({default: playerSettingsMenu}) => {
var player = currentPlayer; const player = currentPlayer;
if (player) { if (player) {
// show subtitle offset feature only if player and media support it // show subtitle offset feature only if player and media support it
var showSubOffset = playbackManager.supportSubtitleOffset(player) && const showSubOffset = playbackManager.supportSubtitleOffset(player) &&
playbackManager.canHandleOffsetOnCurrentSubtitle(player); playbackManager.canHandleOffsetOnCurrentSubtitle(player);
playerSettingsMenu.show({ playerSettingsMenu.show({
@ -969,7 +990,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
if ('stats' === selectedOption) { if ('stats' === selectedOption) {
toggleStats(); toggleStats();
} else if ('suboffset' === selectedOption) { } else if ('suboffset' === selectedOption) {
var player = currentPlayer; const player = currentPlayer;
if (player) { if (player) {
playbackManager.enableShowingSubtitleOffset(player); playbackManager.enableShowingSubtitleOffset(player);
toggleSubtitleSync(); toggleSubtitleSync();
@ -978,8 +999,8 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
} }
function toggleStats() { function toggleStats() {
require(['playerStats'], function (PlayerStats) { import('playerStats').then(({default: PlayerStats}) => {
var player = currentPlayer; const player = currentPlayer;
if (player) { if (player) {
if (statsOverlay) { if (statsOverlay) {
@ -1001,11 +1022,11 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
} }
function showAudioTrackSelection() { function showAudioTrackSelection() {
var player = currentPlayer; const player = currentPlayer;
var audioTracks = playbackManager.audioTracks(player); const audioTracks = playbackManager.audioTracks(player);
var currentIndex = playbackManager.getAudioStreamIndex(player); const currentIndex = playbackManager.getAudioStreamIndex(player);
var menuItems = audioTracks.map(function (stream) { const menuItems = audioTracks.map(function (stream) {
var opt = { const opt = {
name: stream.DisplayTitle, name: stream.DisplayTitle,
id: stream.Index id: stream.Index
}; };
@ -1016,15 +1037,15 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
return opt; return opt;
}); });
var positionTo = this; const positionTo = this;
require(['actionsheet'], function (actionsheet) { import('actionsheet').then(({default: actionsheet}) => {
actionsheet.show({ actionsheet.show({
items: menuItems, items: menuItems,
title: globalize.translate('Audio'), title: globalize.translate('Audio'),
positionTo: positionTo positionTo: positionTo
}).then(function (id) { }).then(function (id) {
var index = parseInt(id); const index = parseInt(id);
if (index !== currentIndex) { if (index !== currentIndex) {
playbackManager.setAudioStreamIndex(index, player); playbackManager.setAudioStreamIndex(index, player);
@ -1038,9 +1059,9 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
} }
function showSubtitleTrackSelection() { function showSubtitleTrackSelection() {
var player = currentPlayer; const player = currentPlayer;
var streams = playbackManager.subtitleTracks(player); const streams = playbackManager.subtitleTracks(player);
var currentIndex = playbackManager.getSubtitleStreamIndex(player); let currentIndex = playbackManager.getSubtitleStreamIndex(player);
if (null == currentIndex) { if (null == currentIndex) {
currentIndex = -1; currentIndex = -1;
@ -1050,8 +1071,8 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
Index: -1, Index: -1,
DisplayTitle: globalize.translate('Off') DisplayTitle: globalize.translate('Off')
}); });
var menuItems = streams.map(function (stream) { const menuItems = streams.map(function (stream) {
var opt = { const opt = {
name: stream.DisplayTitle, name: stream.DisplayTitle,
id: stream.Index id: stream.Index
}; };
@ -1062,15 +1083,15 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
return opt; return opt;
}); });
var positionTo = this; const positionTo = this;
require(['actionsheet'], function (actionsheet) { import('actionsheet').then(({default: actionsheet}) => {
actionsheet.show({ actionsheet.show({
title: globalize.translate('Subtitles'), title: globalize.translate('Subtitles'),
items: menuItems, items: menuItems,
positionTo: positionTo positionTo: positionTo
}).then(function (id) { }).then(function (id) {
var index = parseInt(id); const index = parseInt(id);
if (index !== currentIndex) { if (index !== currentIndex) {
playbackManager.setSubtitleStreamIndex(index, player); playbackManager.setSubtitleStreamIndex(index, player);
@ -1086,8 +1107,8 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
} }
function toggleSubtitleSync(action) { function toggleSubtitleSync(action) {
require(['subtitleSync'], function (SubtitleSync) { import('subtitleSync').then(({default: SubtitleSync}) => {
var player = currentPlayer; const player = currentPlayer;
if (subtitleSyncOverlay) { if (subtitleSyncOverlay) {
subtitleSyncOverlay.toggle(action); subtitleSyncOverlay.toggle(action);
} else if (player) { } else if (player) {
@ -1107,12 +1128,12 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
* Clicked element. * Clicked element.
* To skip 'click' handling on Firefox/Edge. * To skip 'click' handling on Firefox/Edge.
*/ */
var clickedElement; let clickedElement;
function onKeyDown(e) { function onKeyDown(e) {
clickedElement = e.target; clickedElement = e.target;
var key = keyboardnavigation.getKeyName(e); const key = keyboardnavigation.getKeyName(e);
if (!currentVisibleMenu && 32 === e.keyCode) { if (!currentVisibleMenu && 32 === e.keyCode) {
playbackManager.playPause(currentPlayer); playbackManager.playPause(currentPlayer);
@ -1216,10 +1237,11 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
case '6': case '6':
case '7': case '7':
case '8': case '8':
case '9': case '9': {
var percent = parseInt(key, 10) * 10; const percent = parseInt(key, 10) * 10;
playbackManager.seekPercent(percent, currentPlayer); playbackManager.seekPercent(percent, currentPlayer);
break; break;
}
} }
} }
@ -1269,11 +1291,11 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
} }
function getChapterBubbleHtml(apiClient, item, chapters, positionTicks) { function getChapterBubbleHtml(apiClient, item, chapters, positionTicks) {
var chapter; let chapter;
var index = -1; let index = -1;
for (var i = 0, length = chapters.length; i < length; i++) { for (let i = 0, length = chapters.length; i < length; i++) {
var currentChapter = chapters[i]; const currentChapter = chapters[i];
if (positionTicks >= currentChapter.StartPositionTicks) { if (positionTicks >= currentChapter.StartPositionTicks) {
chapter = currentChapter; chapter = currentChapter;
@ -1285,10 +1307,10 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
return null; return null;
} }
var src = getImgUrl(item, chapter, index, 400, apiClient); const src = getImgUrl(item, chapter, index, 400, apiClient);
if (src) { if (src) {
var html = '<div class="chapterThumbContainer">'; let html = '<div class="chapterThumbContainer">';
html += '<img class="chapterThumb" src="' + src + '" />'; html += '<img class="chapterThumb" src="' + src + '" />';
html += '<div class="chapterThumbTextContainer">'; html += '<div class="chapterThumbTextContainer">';
html += '<div class="chapterThumbText chapterThumbText-dim">'; html += '<div class="chapterThumbText chapterThumbText-dim">';
@ -1304,15 +1326,15 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
return null; return null;
} }
var playPauseClickTimeout; let playPauseClickTimeout;
function onViewHideStopPlayback() { function onViewHideStopPlayback() {
if (playbackManager.isPlayingVideo()) { if (playbackManager.isPlayingVideo()) {
require(['shell'], function (shell) { import('shell').then(({default: shell}) => {
shell.disableFullscreen(); shell.disableFullscreen();
}); });
clearTimeout(playPauseClickTimeout); clearTimeout(playPauseClickTimeout);
var player = currentPlayer; const player = currentPlayer;
view.removeEventListener('viewbeforehide', onViewHideStopPlayback); view.removeEventListener('viewbeforehide', onViewHideStopPlayback);
releaseCurrentPlayer(); releaseCurrentPlayer();
playbackManager.stop(player); playbackManager.stop(player);
@ -1327,43 +1349,43 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
} }
} }
require(['shell'], function (shell) { import('shell').then(({default: shell}) => {
shell.enableFullscreen(); shell.enableFullscreen();
}); });
var currentPlayer; let currentPlayer;
var comingUpNextDisplayed; let comingUpNextDisplayed;
var currentUpNextDialog; let currentUpNextDialog;
var isEnabled; let isEnabled;
var currentItem; let currentItem;
var recordingButtonManager; let recordingButtonManager;
var enableProgressByTimeOfDay; let enableProgressByTimeOfDay;
var supportsBrightnessChange; let supportsBrightnessChange;
var currentVisibleMenu; let currentVisibleMenu;
var statsOverlay; let statsOverlay;
var osdHideTimeout; let osdHideTimeout;
var lastPointerMoveData; let lastPointerMoveData;
var self = this; const self = this;
var currentPlayerSupportedCommands = []; let currentPlayerSupportedCommands = [];
var currentRuntimeTicks = 0; let currentRuntimeTicks = 0;
var lastUpdateTime = 0; let lastUpdateTime = 0;
var programStartDateMs = 0; let programStartDateMs = 0;
var programEndDateMs = 0; let programEndDateMs = 0;
var playbackStartTimeTicks = 0; let playbackStartTimeTicks = 0;
var subtitleSyncOverlay; let subtitleSyncOverlay;
var nowPlayingVolumeSlider = view.querySelector('.osdVolumeSlider'); const nowPlayingVolumeSlider = view.querySelector('.osdVolumeSlider');
var nowPlayingVolumeSliderContainer = view.querySelector('.osdVolumeSliderContainer'); const nowPlayingVolumeSliderContainer = view.querySelector('.osdVolumeSliderContainer');
var nowPlayingPositionSlider = view.querySelector('.osdPositionSlider'); const nowPlayingPositionSlider = view.querySelector('.osdPositionSlider');
var nowPlayingPositionText = view.querySelector('.osdPositionText'); const nowPlayingPositionText = view.querySelector('.osdPositionText');
var nowPlayingDurationText = view.querySelector('.osdDurationText'); const nowPlayingDurationText = view.querySelector('.osdDurationText');
var startTimeText = view.querySelector('.startTimeText'); const startTimeText = view.querySelector('.startTimeText');
var endTimeText = view.querySelector('.endTimeText'); const endTimeText = view.querySelector('.endTimeText');
var endsAtText = view.querySelector('.endsAtText'); const endsAtText = view.querySelector('.endsAtText');
var btnRewind = view.querySelector('.btnRewind'); const btnRewind = view.querySelector('.btnRewind');
var btnFastForward = view.querySelector('.btnFastForward'); const btnFastForward = view.querySelector('.btnFastForward');
var transitionEndEventName = dom.whichTransitionEvent(); const transitionEndEventName = dom.whichTransitionEvent();
var headerElement = document.querySelector('.skinHeader'); const headerElement = document.querySelector('.skinHeader');
var osdBottomElement = document.querySelector('.videoOsdBottom-maincontrols'); const osdBottomElement = document.querySelector('.videoOsdBottom-maincontrols');
nowPlayingPositionSlider.enableKeyboardDragging(); nowPlayingPositionSlider.enableKeyboardDragging();
nowPlayingVolumeSlider.enableKeyboardDragging(); nowPlayingVolumeSlider.enableKeyboardDragging();
@ -1416,7 +1438,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
passive: true passive: true
}); });
} catch (e) { } catch (e) {
require(['appRouter'], function(appRouter) { import('appRouter').then(({default: appRouter}) => {
appRouter.goHome(); appRouter.goHome();
}); });
} }
@ -1493,15 +1515,15 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
destroyStats(); destroyStats();
destroySubtitleSync(); destroySubtitleSync();
}); });
var lastPointerDown = 0; let lastPointerDown = 0;
/* eslint-disable-next-line compat/compat */ /* eslint-disable-next-line compat/compat */
dom.addEventListener(view, window.PointerEvent ? 'pointerdown' : 'click', function (e) { dom.addEventListener(view, window.PointerEvent ? 'pointerdown' : 'click', function (e) {
if (dom.parentWithClass(e.target, ['videoOsdBottom', 'upNextContainer'])) { if (dom.parentWithClass(e.target, ['videoOsdBottom', 'upNextContainer'])) {
return void showOsd(); return void showOsd();
} }
var pointerType = e.pointerType || (layoutManager.mobile ? 'touch' : 'mouse'); const pointerType = e.pointerType || (layoutManager.mobile ? 'touch' : 'mouse');
var now = new Date().getTime(); const now = new Date().getTime();
switch (pointerType) { switch (pointerType) {
case 'touch': case 'touch':
@ -1539,7 +1561,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
if (browser.touch) { if (browser.touch) {
dom.addEventListener(view, 'dblclick', onDoubleClick, {}); dom.addEventListener(view, 'dblclick', onDoubleClick, {});
} else { } else {
var options = { passive: true }; const options = { passive: true };
dom.addEventListener(view, 'dblclick', function () { dom.addEventListener(view, 'dblclick', function () {
playbackManager.toggleFullscreen(currentPlayer); playbackManager.toggleFullscreen(currentPlayer);
}, options); }, options);
@ -1554,13 +1576,13 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
}); });
nowPlayingPositionSlider.addEventListener('change', function () { nowPlayingPositionSlider.addEventListener('change', function () {
var player = currentPlayer; const player = currentPlayer;
if (player) { if (player) {
var newPercent = parseFloat(this.value); const newPercent = parseFloat(this.value);
if (enableProgressByTimeOfDay) { if (enableProgressByTimeOfDay) {
var seekAirTimeTicks = newPercent / 100 * (programEndDateMs - programStartDateMs) * 1e4; let seekAirTimeTicks = newPercent / 100 * (programEndDateMs - programStartDateMs) * 1e4;
seekAirTimeTicks += 1e4 * programStartDateMs; seekAirTimeTicks += 1e4 * programStartDateMs;
seekAirTimeTicks -= playbackStartTimeTicks; seekAirTimeTicks -= playbackStartTimeTicks;
playbackManager.seek(seekAirTimeTicks, player); playbackManager.seek(seekAirTimeTicks, player);
@ -1574,7 +1596,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
showOsd(); showOsd();
if (enableProgressByTimeOfDay) { if (enableProgressByTimeOfDay) {
if (programStartDateMs && programEndDateMs) { if (programStartDateMs && programEndDateMs) {
var ms = programEndDateMs - programStartDateMs; let ms = programEndDateMs - programStartDateMs;
ms /= 100; ms /= 100;
ms *= value; ms *= value;
ms += programStartDateMs; ms += programStartDateMs;
@ -1588,13 +1610,13 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
return '--:--'; return '--:--';
} }
var ticks = currentRuntimeTicks; let ticks = currentRuntimeTicks;
ticks /= 100; ticks /= 100;
ticks *= value; ticks *= value;
var item = currentItem; const item = currentItem;
if (item && item.Chapters && item.Chapters.length && item.Chapters[0].ImageTag) { if (item && item.Chapters && item.Chapters.length && item.Chapters[0].ImageTag) {
var html = getChapterBubbleHtml(connectionManager.getApiClient(item.ServerId), item, item.Chapters, ticks); let html = getChapterBubbleHtml(connectionManager.getApiClient(item.ServerId), item, item.Chapters, ticks);
if (html) { if (html) {
return html; return html;
@ -1627,7 +1649,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
if (browser.touch) { if (browser.touch) {
(function () { (function () {
require(['touchHelper'], function (TouchHelper) { import('touchHelper').then(({default: TouchHelper}) => {
self.touchHelper = new TouchHelper(view, { self.touchHelper = new TouchHelper(view, {
swipeYThreshold: 30, swipeYThreshold: 30,
triggerOnMove: true, triggerOnMove: true,
@ -1639,5 +1661,6 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
}); });
})(); })();
} }
}; }
});
/* eslint-enable indent */

View file

@ -1,20 +1,23 @@
define(['displaySettings', 'userSettings', 'autoFocuser'], function (DisplaySettings, userSettings, autoFocuser) { import DisplaySettings from 'displaySettings';
'use strict'; import * as userSettings from 'userSettings';
import autoFocuser from 'autoFocuser';
/* eslint-disable indent */
// Shortcuts // Shortcuts
const UserSettings = userSettings.UserSettings; const UserSettings = userSettings.UserSettings;
return function (view, params) { export default function (view, params) {
function onBeforeUnload(e) { function onBeforeUnload(e) {
if (hasChanges) { if (hasChanges) {
e.returnValue = 'You currently have unsaved changes. Are you sure you wish to leave?'; e.returnValue = 'You currently have unsaved changes. Are you sure you wish to leave?';
} }
} }
var settingsInstance; let settingsInstance;
var hasChanges; let hasChanges;
var userId = params.userId || ApiClient.getCurrentUserId(); const userId = params.userId || ApiClient.getCurrentUserId();
var currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new UserSettings(); const currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new UserSettings();
view.addEventListener('viewshow', function () { view.addEventListener('viewshow', function () {
window.addEventListener('beforeunload', onBeforeUnload); window.addEventListener('beforeunload', onBeforeUnload);
@ -26,28 +29,23 @@ define(['displaySettings', 'userSettings', 'autoFocuser'], function (DisplaySett
userId: userId, userId: userId,
element: view.querySelector('.settingsContainer'), element: view.querySelector('.settingsContainer'),
userSettings: currentSettings, userSettings: currentSettings,
enableSaveButton: false, enableSaveButton: true,
enableSaveConfirmation: false, enableSaveConfirmation: true,
autoFocus: autoFocuser.isEnabled() autoFocus: autoFocuser.isEnabled()
}); });
} }
}); });
view.addEventListener('change', function () { view.addEventListener('change', function () {
hasChanges = true; hasChanges = true;
}); });
view.addEventListener('viewbeforehide', function () {
window.removeEventListener('beforeunload', onBeforeUnload);
hasChanges = false;
if (settingsInstance) {
settingsInstance.submit();
}
});
view.addEventListener('viewdestroy', function () { view.addEventListener('viewdestroy', function () {
if (settingsInstance) { if (settingsInstance) {
settingsInstance.destroy(); settingsInstance.destroy();
settingsInstance = null; settingsInstance = null;
} }
}); });
}; }
});
/* eslint-enable indent */

View file

@ -1,20 +1,27 @@
define(['homescreenSettings', 'dom', 'globalize', 'loading', 'userSettings', 'autoFocuser', 'listViewStyle'], function (HomescreenSettings, dom, globalize, loading, userSettings, autoFocuser) { import HomescreenSettings from 'homescreenSettings';
'use strict'; import dom from 'dom';
import globalize from 'globalize';
import loading from 'loading';
import * as userSettings from 'userSettings';
import autoFocuser from 'autoFocuser';
import 'listViewStyle';
/* eslint-disable indent */
// Shortcuts // Shortcuts
const UserSettings = userSettings.UserSettings; const UserSettings = userSettings.UserSettings;
return function (view, params) { export default function (view, params) {
function onBeforeUnload(e) { function onBeforeUnload(e) {
if (hasChanges) { if (hasChanges) {
e.returnValue = 'You currently have unsaved changes. Are you sure you wish to leave?'; e.returnValue = 'You currently have unsaved changes. Are you sure you wish to leave?';
} }
} }
var homescreenSettingsInstance; let homescreenSettingsInstance;
var hasChanges; let hasChanges;
var userId = params.userId || ApiClient.getCurrentUserId(); const userId = params.userId || ApiClient.getCurrentUserId();
var currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new UserSettings(); const currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new UserSettings();
view.addEventListener('viewshow', function () { view.addEventListener('viewshow', function () {
window.addEventListener('beforeunload', onBeforeUnload); window.addEventListener('beforeunload', onBeforeUnload);
@ -26,27 +33,23 @@ define(['homescreenSettings', 'dom', 'globalize', 'loading', 'userSettings', 'au
userId: userId, userId: userId,
element: view.querySelector('.homeScreenSettingsContainer'), element: view.querySelector('.homeScreenSettingsContainer'),
userSettings: currentSettings, userSettings: currentSettings,
enableSaveButton: false, enableSaveButton: true,
enableSaveConfirmation: false, enableSaveConfirmation: true,
autoFocus: autoFocuser.isEnabled() autoFocus: autoFocuser.isEnabled()
}); });
} }
}); });
view.addEventListener('change', function () { view.addEventListener('change', function () {
hasChanges = true; hasChanges = true;
}); });
view.addEventListener('viewbeforehide', function () {
hasChanges = false;
if (homescreenSettingsInstance) {
homescreenSettingsInstance.submit();
}
});
view.addEventListener('viewdestroy', function () { view.addEventListener('viewdestroy', function () {
if (homescreenSettingsInstance) { if (homescreenSettingsInstance) {
homescreenSettingsInstance.destroy(); homescreenSettingsInstance.destroy();
homescreenSettingsInstance = null; homescreenSettingsInstance = null;
} }
}); });
}; }
});
/* eslint-enable indent */

View file

@ -1,20 +1,27 @@
define(['playbackSettings', 'dom', 'globalize', 'loading', 'userSettings', 'autoFocuser', 'listViewStyle'], function (PlaybackSettings, dom, globalize, loading, userSettings, autoFocuser) { import PlaybackSettings from 'playbackSettings';
'use strict'; import dom from 'dom';
import globalize from 'globalize';
import loading from 'loading';
import * as userSettings from 'userSettings';
import autoFocuser from 'autoFocuser';
import 'listViewStyle';
/* eslint-disable indent */
// Shortcuts // Shortcuts
const UserSettings = userSettings.UserSettings; const UserSettings = userSettings.UserSettings;
return function (view, params) { export default function (view, params) {
function onBeforeUnload(e) { function onBeforeUnload(e) {
if (hasChanges) { if (hasChanges) {
e.returnValue = 'You currently have unsaved changes. Are you sure you wish to leave?'; e.returnValue = 'You currently have unsaved changes. Are you sure you wish to leave?';
} }
} }
var settingsInstance; let settingsInstance;
var hasChanges; let hasChanges;
var userId = params.userId || ApiClient.getCurrentUserId(); const userId = params.userId || ApiClient.getCurrentUserId();
var currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new UserSettings(); const currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new UserSettings();
view.addEventListener('viewshow', function () { view.addEventListener('viewshow', function () {
window.addEventListener('beforeunload', onBeforeUnload); window.addEventListener('beforeunload', onBeforeUnload);
@ -26,27 +33,23 @@ define(['playbackSettings', 'dom', 'globalize', 'loading', 'userSettings', 'auto
userId: userId, userId: userId,
element: view.querySelector('.settingsContainer'), element: view.querySelector('.settingsContainer'),
userSettings: currentSettings, userSettings: currentSettings,
enableSaveButton: false, enableSaveButton: true,
enableSaveConfirmation: false, enableSaveConfirmation: true,
autoFocus: autoFocuser.isEnabled() autoFocus: autoFocuser.isEnabled()
}); });
} }
}); });
view.addEventListener('change', function () { view.addEventListener('change', function () {
hasChanges = true; hasChanges = true;
}); });
view.addEventListener('viewbeforehide', function () {
hasChanges = false;
if (settingsInstance) {
settingsInstance.submit();
}
});
view.addEventListener('viewdestroy', function () { view.addEventListener('viewdestroy', function () {
if (settingsInstance) { if (settingsInstance) {
settingsInstance.destroy(); settingsInstance.destroy();
settingsInstance = null; settingsInstance = null;
} }
}); });
}; }
});
/* eslint-enable indent */

View file

@ -1,20 +1,23 @@
define(['subtitleSettings', 'userSettings', 'autoFocuser'], function (SubtitleSettings, userSettings, autoFocuser) { import SubtitleSettings from 'subtitleSettings';
'use strict'; import * as userSettings from 'userSettings';
import autoFocuser from 'autoFocuser';
/* eslint-disable indent */
// Shortcuts // Shortcuts
const UserSettings = userSettings.UserSettings; const UserSettings = userSettings.UserSettings;
return function (view, params) { export default function (view, params) {
function onBeforeUnload(e) { function onBeforeUnload(e) {
if (hasChanges) { if (hasChanges) {
e.returnValue = 'You currently have unsaved changes. Are you sure you wish to leave?'; e.returnValue = 'You currently have unsaved changes. Are you sure you wish to leave?';
} }
} }
var subtitleSettingsInstance; let subtitleSettingsInstance;
var hasChanges; let hasChanges;
var userId = params.userId || ApiClient.getCurrentUserId(); const userId = params.userId || ApiClient.getCurrentUserId();
var currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new UserSettings(); const currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new UserSettings();
view.addEventListener('viewshow', function () { view.addEventListener('viewshow', function () {
window.addEventListener('beforeunload', onBeforeUnload); window.addEventListener('beforeunload', onBeforeUnload);
@ -26,27 +29,23 @@ define(['subtitleSettings', 'userSettings', 'autoFocuser'], function (SubtitleSe
userId: userId, userId: userId,
element: view.querySelector('.settingsContainer'), element: view.querySelector('.settingsContainer'),
userSettings: currentSettings, userSettings: currentSettings,
enableSaveButton: false, enableSaveButton: true,
enableSaveConfirmation: false, enableSaveConfirmation: true,
autoFocus: autoFocuser.isEnabled() autoFocus: autoFocuser.isEnabled()
}); });
} }
}); });
view.addEventListener('change', function () { view.addEventListener('change', function () {
hasChanges = true; hasChanges = true;
}); });
view.addEventListener('viewbeforehide', function () {
hasChanges = false;
if (subtitleSettingsInstance) {
subtitleSettingsInstance.submit();
}
});
view.addEventListener('viewdestroy', function () { view.addEventListener('viewdestroy', function () {
if (subtitleSettingsInstance) { if (subtitleSettingsInstance) {
subtitleSettingsInstance.destroy(); subtitleSettingsInstance.destroy();
subtitleSettingsInstance = null; subtitleSettingsInstance = null;
} }
}); });
}; }
});
/* eslint-enable indent */

View file

@ -30,7 +30,7 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager',
// check for serverId, it won't be present on selectserver // check for serverId, it won't be present on selectserver
if (card && card.getAttribute('data-serverid')) { if (card && card.getAttribute('data-serverid')) {
inputManager.trigger('menu', { inputManager.handleCommand('menu', {
sourceElement: card sourceElement: card
}); });

View file

@ -31,11 +31,6 @@
.emby-tabs-slider { .emby-tabs-slider {
position: relative; position: relative;
overflow: hidden;
}
.layout-mobile .emby-tabs-slider {
overflow: auto;
} }
.tabContent:not(.is-active) { .tabContent:not(.is-active) {

View file

@ -1,7 +1,9 @@
<div id="loginPage" data-role="page" class="page standalonePage" data-backbutton="false"> <div id="loginPage" data-role="page" class="page standalonePage flex flex-direction-column align-items-center justify-content-center" data-backbutton="false">
<div class="padded-left padded-right padded-bottom-page"> <div class="padded-left padded-right padded-bottom-page">
<form class="manualLoginForm hide" style="margin: 0 auto;"> <form class="manualLoginForm hide">
<h1 style="margin-top:1em;text-align: left;">${HeaderPleaseSignIn}</h1> <div class="padded-left padded-right flex align-items-center justify-content-center">
<h1 class="sectionTitle">${HeaderPleaseSignIn}</h1>
</div>
<div style="height:0; overflow: hidden;"> <div style="height:0; overflow: hidden;">
<input type="text" name="fakeusernameremembered" tabindex="-1" /> <input type="text" name="fakeusernameremembered" tabindex="-1" />
<input type="password" name="fakepasswordremembered" tabindex="-1" /> <input type="password" name="fakepasswordremembered" tabindex="-1" />
@ -29,8 +31,6 @@
<span>${ButtonCancel}</span> <span>${ButtonCancel}</span>
</button> </button>
</div> </div>
<br/>
<br/>
</form> </form>
<div class="visualLoginForm" style="text-align: center;"> <div class="visualLoginForm" style="text-align: center;">

View file

@ -235,9 +235,6 @@ import appHost from 'apphost';
} }
} }
// Alias for backward compatibility
export const trigger = handleCommand;
dom.addEventListener(document, 'click', notify, { dom.addEventListener(document, 'click', notify, {
passive: true passive: true
}); });
@ -245,8 +242,7 @@ import appHost from 'apphost';
/* eslint-enable indent */ /* eslint-enable indent */
export default { export default {
trigger: handleCommand, handleCommand: handleCommand,
handle: handleCommand,
notify: notify, notify: notify,
notifyMouseMove: notifyMouseMove, notifyMouseMove: notifyMouseMove,
idleTime: idleTime, idleTime: idleTime,

View file

@ -90,53 +90,53 @@ export function enable() {
switch (key) { switch (key) {
case 'ArrowLeft': case 'ArrowLeft':
inputManager.handle('left'); inputManager.handleCommand('left');
break; break;
case 'ArrowUp': case 'ArrowUp':
inputManager.handle('up'); inputManager.handleCommand('up');
break; break;
case 'ArrowRight': case 'ArrowRight':
inputManager.handle('right'); inputManager.handleCommand('right');
break; break;
case 'ArrowDown': case 'ArrowDown':
inputManager.handle('down'); inputManager.handleCommand('down');
break; break;
case 'Back': case 'Back':
inputManager.handle('back'); inputManager.handleCommand('back');
break; break;
case 'Escape': case 'Escape':
if (layoutManager.tv) { if (layoutManager.tv) {
inputManager.handle('back'); inputManager.handleCommand('back');
} else { } else {
capture = false; capture = false;
} }
break; break;
case 'MediaPlay': case 'MediaPlay':
inputManager.handle('play'); inputManager.handleCommand('play');
break; break;
case 'Pause': case 'Pause':
inputManager.handle('pause'); inputManager.handleCommand('pause');
break; break;
case 'MediaPlayPause': case 'MediaPlayPause':
inputManager.handle('playpause'); inputManager.handleCommand('playpause');
break; break;
case 'MediaRewind': case 'MediaRewind':
inputManager.handle('rewind'); inputManager.handleCommand('rewind');
break; break;
case 'MediaFastForward': case 'MediaFastForward':
inputManager.handle('fastforward'); inputManager.handleCommand('fastforward');
break; break;
case 'MediaStop': case 'MediaStop':
inputManager.handle('stop'); inputManager.handleCommand('stop');
break; break;
case 'MediaTrackPrevious': case 'MediaTrackPrevious':
inputManager.handle('previoustrack'); inputManager.handleCommand('previoustrack');
break; break;
case 'MediaTrackNext': case 'MediaTrackNext':
inputManager.handle('nexttrack'); inputManager.handleCommand('nexttrack');
break; break;
default: default:

View file

@ -116,7 +116,7 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', '
} }
function showSearch() { function showSearch() {
inputManager.trigger('search'); inputManager.handleCommand('search');
} }
function onHeaderUserButtonClick(e) { function onHeaderUserButtonClick(e) {

View file

@ -36,28 +36,28 @@ define(['connectionManager', 'playbackManager', 'syncPlayManager', 'events', 'in
console.debug('Received command: ' + cmd.Name); console.debug('Received command: ' + cmd.Name);
switch (cmd.Name) { switch (cmd.Name) {
case 'Select': case 'Select':
inputManager.trigger('select'); inputManager.handleCommand('select');
return; return;
case 'Back': case 'Back':
inputManager.trigger('back'); inputManager.handleCommand('back');
return; return;
case 'MoveUp': case 'MoveUp':
inputManager.trigger('up'); inputManager.handleCommand('up');
return; return;
case 'MoveDown': case 'MoveDown':
inputManager.trigger('down'); inputManager.handleCommand('down');
return; return;
case 'MoveLeft': case 'MoveLeft':
inputManager.trigger('left'); inputManager.handleCommand('left');
return; return;
case 'MoveRight': case 'MoveRight':
inputManager.trigger('right'); inputManager.handleCommand('right');
return; return;
case 'PageUp': case 'PageUp':
inputManager.trigger('pageup'); inputManager.handleCommand('pageup');
return; return;
case 'PageDown': case 'PageDown':
inputManager.trigger('pagedown'); inputManager.handleCommand('pagedown');
return; return;
case 'PlayTrailers': case 'PlayTrailers':
playTrailers(apiClient, cmd.Arguments.ItemId); playTrailers(apiClient, cmd.Arguments.ItemId);
@ -69,25 +69,25 @@ define(['connectionManager', 'playbackManager', 'syncPlayManager', 'events', 'in
playbackManager.setQueueShuffleMode(cmd.Arguments.ShuffleMode); playbackManager.setQueueShuffleMode(cmd.Arguments.ShuffleMode);
break; break;
case 'VolumeUp': case 'VolumeUp':
inputManager.trigger('volumeup'); inputManager.handleCommand('volumeup');
return; return;
case 'VolumeDown': case 'VolumeDown':
inputManager.trigger('volumedown'); inputManager.handleCommand('volumedown');
return; return;
case 'ChannelUp': case 'ChannelUp':
inputManager.trigger('channelup'); inputManager.handleCommand('channelup');
return; return;
case 'ChannelDown': case 'ChannelDown':
inputManager.trigger('channeldown'); inputManager.handleCommand('channeldown');
return; return;
case 'Mute': case 'Mute':
inputManager.trigger('mute'); inputManager.handleCommand('mute');
return; return;
case 'Unmute': case 'Unmute':
inputManager.trigger('unmute'); inputManager.handleCommand('unmute');
return; return;
case 'ToggleMute': case 'ToggleMute':
inputManager.trigger('togglemute'); inputManager.handleCommand('togglemute');
return; return;
case 'SetVolume': case 'SetVolume':
notifyApp(); notifyApp();
@ -102,19 +102,19 @@ define(['connectionManager', 'playbackManager', 'syncPlayManager', 'events', 'in
playbackManager.setSubtitleStreamIndex(parseInt(cmd.Arguments.Index)); playbackManager.setSubtitleStreamIndex(parseInt(cmd.Arguments.Index));
break; break;
case 'ToggleFullscreen': case 'ToggleFullscreen':
inputManager.trigger('togglefullscreen'); inputManager.handleCommand('togglefullscreen');
return; return;
case 'GoHome': case 'GoHome':
inputManager.trigger('home'); inputManager.handleCommand('home');
return; return;
case 'GoToSettings': case 'GoToSettings':
inputManager.trigger('settings'); inputManager.handleCommand('settings');
return; return;
case 'DisplayContent': case 'DisplayContent':
displayContent(cmd, apiClient); displayContent(cmd, apiClient);
break; break;
case 'GoToSearch': case 'GoToSearch':
inputManager.trigger('search'); inputManager.handleCommand('search');
return; return;
case 'DisplayMessage': case 'DisplayMessage':
displayMessage(cmd); displayMessage(cmd);
@ -165,19 +165,19 @@ define(['connectionManager', 'playbackManager', 'syncPlayManager', 'events', 'in
} }
} else if (msg.MessageType === 'Playstate') { } else if (msg.MessageType === 'Playstate') {
if (msg.Data.Command === 'Stop') { if (msg.Data.Command === 'Stop') {
inputManager.trigger('stop'); inputManager.handleCommand('stop');
} else if (msg.Data.Command === 'Pause') { } else if (msg.Data.Command === 'Pause') {
inputManager.trigger('pause'); inputManager.handleCommand('pause');
} else if (msg.Data.Command === 'Unpause') { } else if (msg.Data.Command === 'Unpause') {
inputManager.trigger('play'); inputManager.handleCommand('play');
} else if (msg.Data.Command === 'PlayPause') { } else if (msg.Data.Command === 'PlayPause') {
inputManager.trigger('playpause'); inputManager.handleCommand('playpause');
} else if (msg.Data.Command === 'Seek') { } else if (msg.Data.Command === 'Seek') {
playbackManager.seek(msg.Data.SeekPositionTicks); playbackManager.seek(msg.Data.SeekPositionTicks);
} else if (msg.Data.Command === 'NextTrack') { } else if (msg.Data.Command === 'NextTrack') {
inputManager.trigger('next'); inputManager.handleCommand('next');
} else if (msg.Data.Command === 'PreviousTrack') { } else if (msg.Data.Command === 'PreviousTrack') {
inputManager.trigger('previous'); inputManager.handleCommand('previous');
} else { } else {
notifyApp(); notifyApp();
} }

View file

@ -1,10 +1,10 @@
<div id="selectServerPage" data-role="page" class="page noSecondaryNavPage standalonePage pageContainer fullWidth vertical flex flex-direction-column"> <div id="selectServerPage" data-role="page" class="page noSecondaryNavPage standalonePage pageContainer fullWidthContent vertical flex flex-direction-column align-items-center justify-content-center">
<div class="verticalSection flex-shrink-zero flex flex-direction-column" style="margin: 2em 0 1em;"> <div class="verticalSection flex-shrink-zero w-100 flex flex-direction-column">
<div class="padded-left padded-right flex align-items-center justify-content-center" style="margin-bottom:2em;"> <div class="padded-left padded-right flex align-items-center justify-content-center">
<h1 class="sectionTitle sectionTitle-cards">${HeaderSelectServer}</h1> <h1 class="sectionTitle sectionTitle-cards">${HeaderSelectServer}</h1>
</div> </div>
<div class="padded-top padded-bottom-focusscale flex-grow flex" data-horizontal="true" data-centerfocus="card"> <div class="padded-top padded-bottom-focusscale flex-grow flex" data-horizontal="true" data-centerfocus="card">
<div is="emby-itemscontainer" class="scrollSlider focuscontainer-x padded-left padded-right servers flex-grow" style="display: block; text-align: center;" data-hovermenu="false" data-multiselect="false"></div> <div is="emby-itemscontainer" class="scrollSlider focuscontainer-x servers flex-grow" style="display: block; text-align: center;" data-hovermenu="false" data-multiselect="false"></div>
</div> </div>
</div> </div>
<div class="padded-top padded-left padded-right flex flex-shrink-zero justify-content-center verticalSection flex-wrap-wrap" style="margin-left:auto;margin-right:auto;"> <div class="padded-top padded-left padded-right flex flex-shrink-zero justify-content-center verticalSection flex-wrap-wrap" style="margin-left:auto;margin-right:auto;">

View file

@ -10,7 +10,7 @@
"AddToPlaylist": "Zur Wiedergabeliste hinzufügen", "AddToPlaylist": "Zur Wiedergabeliste hinzufügen",
"AddUser": "Benutzer anlegen", "AddUser": "Benutzer anlegen",
"AddedOnValue": "{0} hinzugefügt", "AddedOnValue": "{0} hinzugefügt",
"AdditionalNotificationServices": "Durchsuche den Pluginkatalog, um weitere Benachrichtigungsdienste zu installieren.", "AdditionalNotificationServices": "Durchsuchen sie den Pluginkatalog um weitere Benachrichtigungsdienste zu installieren.",
"AirDate": "Erstausstrahlung", "AirDate": "Erstausstrahlung",
"Aired": "Ausgestrahlt", "Aired": "Ausgestrahlt",
"Albums": "Alben", "Albums": "Alben",
@ -446,7 +446,7 @@
"HeaderTunerDevices": "Tuner", "HeaderTunerDevices": "Tuner",
"HeaderTuners": "Tuner", "HeaderTuners": "Tuner",
"HeaderTypeText": "Texteingabe", "HeaderTypeText": "Texteingabe",
"HeaderUpcomingOnTV": "Bald im TV", "HeaderUpcomingOnTV": "Demnächst im Fernsehen",
"HeaderUploadImage": "Bild hochladen", "HeaderUploadImage": "Bild hochladen",
"HeaderUser": "Benutzer", "HeaderUser": "Benutzer",
"HeaderUsers": "Benutzer", "HeaderUsers": "Benutzer",
@ -461,7 +461,7 @@
"Help": "Hilfe", "Help": "Hilfe",
"Hide": "Verstecke", "Hide": "Verstecke",
"HideWatchedContentFromLatestMedia": "Verberge gesehene Inhalte von neuesten Medien", "HideWatchedContentFromLatestMedia": "Verberge gesehene Inhalte von neuesten Medien",
"HttpsRequiresCert": "Um sichere Verbindungen zu ermöglichen, musst du ein vertrauenswürdiges SSL-Zertifikat, wie beispielsweise eines von Let's Encrypt, bereitstellen. Stelle bitte entweder ein Zertifikat zur Verfügung oder deaktiviere sichere Verbindungen.", "HttpsRequiresCert": "Um https für externe Verbindungen zu erzwingen, benötigst du ein vertrauenswürdiges SSL-Zertifikat, z.B. von Let's Encrypt. Bitte stelle entweder ein Zertifikat bereit, oder deaktiviere sichere Verbindungen.",
"Identify": "Identifizieren", "Identify": "Identifizieren",
"Images": "Bilder", "Images": "Bilder",
"ImportFavoriteChannelsHelp": "Wenn aktiviert, werden nur auf dem Tuner favorisierte Kanäle importiert.", "ImportFavoriteChannelsHelp": "Wenn aktiviert, werden nur auf dem Tuner favorisierte Kanäle importiert.",
@ -509,7 +509,7 @@
"LabelBlockContentWithTags": "Blockiere Inhalte mit Tags:", "LabelBlockContentWithTags": "Blockiere Inhalte mit Tags:",
"LabelBurnSubtitles": "Untertitel einbrennen:", "LabelBurnSubtitles": "Untertitel einbrennen:",
"LabelCachePath": "Cache Pfad:", "LabelCachePath": "Cache Pfad:",
"LabelCachePathHelp": "Legen Sie ein eigenes Verzeichnis für den Server Zwischenspeicher fest (z.B. für Bilder). Lassen Sie dieses Feld leer um die Standardeinstellung zu verwenden.", "LabelCachePathHelp": "Gib einen benutzerdefinierten Speicherort für Server-Cache-Dateien wie beispielsweise Bilder an. Lasse das Feld leer, um den Server-Standard zu verwenden.",
"LabelCancelled": "Abgebrochen", "LabelCancelled": "Abgebrochen",
"LabelCertificatePassword": "Zertifikat Passwort:", "LabelCertificatePassword": "Zertifikat Passwort:",
"LabelCertificatePasswordHelp": "Wenn Dein Zertifikat ein Passwort benötigt, gib es hier ein.", "LabelCertificatePasswordHelp": "Wenn Dein Zertifikat ein Passwort benötigt, gib es hier ein.",
@ -548,7 +548,7 @@
"LabelDisplayOrder": "Anzeigereihenfolge:", "LabelDisplayOrder": "Anzeigereihenfolge:",
"LabelDisplaySpecialsWithinSeasons": "Zeige Sonderinhalt innerhalb der Staffel in der er ausgestrahlt wurde", "LabelDisplaySpecialsWithinSeasons": "Zeige Sonderinhalt innerhalb der Staffel in der er ausgestrahlt wurde",
"LabelDownMixAudioScale": "Audio Verstärkung bei Downmixing:", "LabelDownMixAudioScale": "Audio Verstärkung bei Downmixing:",
"LabelDownMixAudioScaleHelp": "Erhöhe die Audiolautstärke beim Heruntermischen. Setze auf 1, um die ursprüngliche Lautstärke beizubehalten.", "LabelDownMixAudioScaleHelp": "Erhöhe die Audiolautstärke beim Zusammenmischen zu Stereo. Setze den Wert auf 1 um die Originallautstärke zu erhalten.",
"LabelDownloadLanguages": "Herunterzuladende Sprachen:", "LabelDownloadLanguages": "Herunterzuladende Sprachen:",
"LabelDropImageHere": "Fotos hierher ziehen oder klicken im zu browsen.", "LabelDropImageHere": "Fotos hierher ziehen oder klicken im zu browsen.",
"LabelDropShadow": "Schlagschatten:", "LabelDropShadow": "Schlagschatten:",
@ -562,9 +562,9 @@
"LabelEnableDlnaClientDiscoveryInterval": "Client-Entdeckungs Intervall (Sekunden)", "LabelEnableDlnaClientDiscoveryInterval": "Client-Entdeckungs Intervall (Sekunden)",
"LabelEnableDlnaClientDiscoveryIntervalHelp": "Ermittelt die Zeit in Sekunden zwischen SSDP Suchanfragen die durch Jellyfin ausgeführt wurden.", "LabelEnableDlnaClientDiscoveryIntervalHelp": "Ermittelt die Zeit in Sekunden zwischen SSDP Suchanfragen die durch Jellyfin ausgeführt wurden.",
"LabelEnableDlnaDebugLogging": "Aktiviere DLNA Debug Logging", "LabelEnableDlnaDebugLogging": "Aktiviere DLNA Debug Logging",
"LabelEnableDlnaDebugLoggingHelp": "Erstellt große Logdateien und sollte nur bei Bedarf zur Fehlersuche verwendet werden.", "LabelEnableDlnaDebugLoggingHelp": "Erzeugt große Logdateien und sollte nur zur Fehlerbehebung benutzt werden.",
"LabelEnableDlnaPlayTo": "Aktiviere DLNA Play To", "LabelEnableDlnaPlayTo": "Aktiviere DLNA Play To",
"LabelEnableDlnaPlayToHelp": "Geräte in deinem Netzwerk erkennen und deren Fernsteuerung ermöglichen.", "LabelEnableDlnaPlayToHelp": "Jellyfin kann Geräte in Ihrem Netzwerk erkennen und bietet die Möglichkeit, diese fernzusteuern.",
"LabelEnableDlnaServer": "DLNA-Server aktivieren", "LabelEnableDlnaServer": "DLNA-Server aktivieren",
"LabelEnableDlnaServerHelp": "Erlaubt UPnP Geräten in Ihrem Netzwerk den Zugriff und die Wiedergabe von Inhalten.", "LabelEnableDlnaServerHelp": "Erlaubt UPnP Geräten in Ihrem Netzwerk den Zugriff und die Wiedergabe von Inhalten.",
"LabelEnableHardwareDecodingFor": "Aktiviere Hardware-Decoding für:", "LabelEnableHardwareDecodingFor": "Aktiviere Hardware-Decoding für:",
@ -577,14 +577,14 @@
"LabelEvent": "Ereignis:", "LabelEvent": "Ereignis:",
"LabelEveryXMinutes": "Alle:", "LabelEveryXMinutes": "Alle:",
"LabelExtractChaptersDuringLibraryScan": "Erzeuge Kapitelbilder während des Bibliothekscans", "LabelExtractChaptersDuringLibraryScan": "Erzeuge Kapitelbilder während des Bibliothekscans",
"LabelExtractChaptersDuringLibraryScanHelp": "Generiert Kapitelbilder während des Imports von Videos beim Bibliothekenscan erzeugt. Anderenfalls werden die Kapitelbilder während einer eigens dafür geplanten Aufgabe erstellt, was den regelmäßig Bibliothekenscan beschleunigt.", "LabelExtractChaptersDuringLibraryScanHelp": "Falls aktiviert, werden die Kapitelbilder während des Imports von Videos beim Bibliothekenscan erzeugt. Falls deaktiviert, werden die Kapitelbilder während einer eigens dafür geplanten Aufgabe erstellt, was den regelmäßig Bibliothekenscan beschleunigt.",
"LabelFailed": "Fehlgeschlagen", "LabelFailed": "Fehlgeschlagen",
"LabelFileOrUrl": "Datei oder URL:", "LabelFileOrUrl": "Datei oder URL:",
"LabelFinish": "Fertig", "LabelFinish": "Fertig",
"LabelFont": "Schriftart:", "LabelFont": "Schriftart:",
"LabelForgotPasswordUsernameHelp": "Bitte gib deinen Benutzernamen ein, falls du dich daran erinnerst.", "LabelForgotPasswordUsernameHelp": "Bitte gib deinen Benutzernamen ein, falls du dich daran erinnerst.",
"LabelFriendlyName": "Benutzerfreundlicher Name:", "LabelFriendlyName": "Benutzerfreundlicher Name:",
"LabelServerNameHelp": "Dieser Name wird benutzt um den Server zu identifizieren, normalerweise wird der Server-/Computername verwendet.", "LabelServerNameHelp": "Dieser Name wird benutzt um den Server zu identifizieren, standardmäßig wird der Server-/Computername verwendet.",
"LabelGroupMoviesIntoCollections": "Gruppiere Filme in Collections", "LabelGroupMoviesIntoCollections": "Gruppiere Filme in Collections",
"LabelGroupMoviesIntoCollectionsHelp": "Wenn Filmlisten angezeigt werden, dann werden Filme, die zu einer Collection gehören, als ein gruppiertes Element angezeigt.", "LabelGroupMoviesIntoCollectionsHelp": "Wenn Filmlisten angezeigt werden, dann werden Filme, die zu einer Collection gehören, als ein gruppiertes Element angezeigt.",
"LabelEncoderPreset": "H264 Encoding Voreinstellung:", "LabelEncoderPreset": "H264 Encoding Voreinstellung:",
@ -597,42 +597,42 @@
"LabelIconMaxHeight": "Maximale Iconhöhe:", "LabelIconMaxHeight": "Maximale Iconhöhe:",
"LabelIconMaxHeightHelp": "Maximale Auflösung für durch UPnP übermittelte Icons:icon.", "LabelIconMaxHeightHelp": "Maximale Auflösung für durch UPnP übermittelte Icons:icon.",
"LabelIconMaxWidth": "Maximale Iconbreite:", "LabelIconMaxWidth": "Maximale Iconbreite:",
"LabelIconMaxWidthHelp": "Maximale Auflösung für durch UPnP übermittelte Icons:icon.", "LabelIconMaxWidthHelp": "Maximale Auflösung der Icons, die über upnp:icon angezeigt werden.",
"LabelIdentificationFieldHelp": "Ein Teilstring oder Regex Ausdruck, der keine Groß- und Kleinschreibung berücksichtigt.", "LabelIdentificationFieldHelp": "Ein Teilstring oder Regex Ausdruck, der keine Groß- und Kleinschreibung berücksichtigt.",
"LabelImageFetchersHelp": "Aktiviere und ordne deine bevorzugten Bildquellen nach Präferenzen.", "LabelImageFetchersHelp": "Aktiviere und ordne deine bevorzugten Bildquellen nach Präferenzen.",
"LabelImageType": "Bildtyp:", "LabelImageType": "Bildtyp:",
"LabelImportOnlyFavoriteChannels": "Beschränke auf favorisierte Kanäle", "LabelImportOnlyFavoriteChannels": "Beschränke auf favorisierte Kanäle",
"LabelInNetworkSignInWithEasyPassword": "Schalte Login mit einfachen Passwort für das eigene Netzwerk ein", "LabelInNetworkSignInWithEasyPassword": "Schalte Login mit einfachen Passwort für das eigene Netzwerk ein",
"LabelInNetworkSignInWithEasyPasswordHelp": "Wenn aktiviert, können Sie sich in ihrem eigenen Netzwerk mit dem vereinfachten PIN bei Jellyfin Apps anmelden. Ihr reguläres Kennwort wird nur benötigt, wenn Sie unterwegs sind. Wenn Sie den PIN frei lassen, so benötigen Sie in Ihrem Netzwerk keinen PIN.", "LabelInNetworkSignInWithEasyPasswordHelp": "Einfachen Pin verwenden, um sich bei Jellyfin Apps im lokalen Netzwerk anzumelden. Ihr reguläres Kennwort wird nur benötigt, wenn Sie unterwegs sind. Wenn Sie den PIN frei lassen, so benötigen Sie in Ihrem Netzwerk keinen PIN.",
"LabelInternetQuality": "Internetqualität:", "LabelInternetQuality": "Internetqualität:",
"LabelKeepUpTo": "Fortführen:", "LabelKeepUpTo": "Fortführen:",
"LabelKidsCategories": "Kinderkategorien:", "LabelKidsCategories": "Kinderkategorien:",
"LabelKodiMetadataDateFormat": "Veröffentlichungsdatum Format:", "LabelKodiMetadataDateFormat": "Veröffentlichungsdatum Format:",
"LabelKodiMetadataDateFormatHelp": "Alle Daten innerhalb von NFO-Dateien werden in diesem Format analysiert.", "LabelKodiMetadataDateFormatHelp": "Alle Daten innerhalb von NFO-Dateien werden in diesem Format gelesen.",
"LabelKodiMetadataEnableExtraThumbs": "Kopiere Extrafanart in Extrathumbs", "LabelKodiMetadataEnableExtraThumbs": "Kopiere Extra-Fanart- nach Extra-Vorschau-Feld",
"LabelKodiMetadataEnableExtraThumbsHelp": "Beim downloaden von Bildern können diese sowohl als Extrafanart als auch als Extrathumb gespeichert werden, um maximale Kodi Kompatibilität zu erzielen.", "LabelKodiMetadataEnableExtraThumbsHelp": "Beim downloaden von Bildern können diese sowohl als Extrafanart als auch als Extrathumb gespeichert werden, um maximale Kodi Kompatibilität zu erzielen.",
"LabelKodiMetadataEnablePathSubstitution": "Aktiviere Pfadersetzung", "LabelKodiMetadataEnablePathSubstitution": "Aktiviere Pfadersetzung",
"LabelKodiMetadataEnablePathSubstitutionHelp": "Aktiviert die Pfadersetzung für Bildpfade durch Benutzung der Server Pfadersetzung Einstellungen.", "LabelKodiMetadataEnablePathSubstitutionHelp": "Aktiviert die Pfadersetzung für Bildpfade durch Benutzung der Server Pfadersetzung Einstellungen.",
"LabelKodiMetadataSaveImagePaths": "Speicher Bildpfade innerhalb der NFO Dateien", "LabelKodiMetadataSaveImagePaths": "Speicher Bildpfade innerhalb der NFO Dateien",
"LabelKodiMetadataSaveImagePathsHelp": "Dies ist empfehlenswert wenn du Dateinamen hast, die nicht den Kodi Richtlinien entsprechen.", "LabelKodiMetadataSaveImagePathsHelp": "Dies ist empfehlenswert wenn du Dateinamen hast, die nicht den Kodi Richtlinien entsprechen.",
"LabelKodiMetadataUser": "Speichere den \"Gesehen\" Status von Benutzern in NFO's für:", "LabelKodiMetadataUser": "Speichere den \"Gesehen\" Status von Benutzern in NFO-Dateien für:",
"LabelKodiMetadataUserHelp": "Aktivieren, um den \"Gesehen\" Status in NFO-Dateien zu speichern, damit diese von anderen Anwendungen verwendet werden können.", "LabelKodiMetadataUserHelp": "\"Gesehen\" Status in NFO-Dateien speichern, damit diese von anderen Anwendungen verwendet werden können.",
"LabelLanNetworks": "Lokale Netzwerke:", "LabelLanNetworks": "Lokale Netzwerke:",
"LabelLanguage": "Sprache:", "LabelLanguage": "Sprache:",
"LabelLineup": "TV Programm:", "LabelLineup": "TV Programm:",
"LabelLocalHttpServerPortNumber": "Lokale HTTP Portnummer:", "LabelLocalHttpServerPortNumber": "Lokale HTTP Portnummer:",
"LabelLocalHttpServerPortNumberHelp": "Die TCP Port Nummer, auf die der Jellyfin http Server hört.", "LabelLocalHttpServerPortNumberHelp": "Die TCP-Portnummer, die der HTTP-Server von Jellyfin verwenden soll.",
"LabelLockItemToPreventChanges": "Sperre diesen Eintrag um zukünftige Änderungen zu verhindern", "LabelLockItemToPreventChanges": "Sperre diesen Eintrag um zukünftige Änderungen zu verhindern",
"LabelLoginDisclaimer": "Anmeldung Haftungsausschluss:", "LabelLoginDisclaimer": "Anmeldung Haftungsausschluss:",
"LabelLoginDisclaimerHelp": "Dies wird am Boden des Anmeldebildschirms angezeigt.", "LabelLoginDisclaimerHelp": "Diese Nachricht wird am unteren Ende des Anmeldebildschirms angezeigt.",
"LabelManufacturer": "Hersteller:", "LabelManufacturer": "Hersteller:",
"LabelManufacturerUrl": "Hersteller URL", "LabelManufacturerUrl": "Hersteller-URL",
"LabelMatchType": "Übereinstimmungstyp:", "LabelMatchType": "Übereinstimmungstyp:",
"LabelMaxBackdropsPerItem": "Maximale Anzahl von Hintergründen pro Element:", "LabelMaxBackdropsPerItem": "Maximale Anzahl von Hintergründen pro Element:",
"LabelMaxChromecastBitrate": "Max Chromcast Datenrate:", "LabelMaxChromecastBitrate": "Max Chromcast Datenrate:",
"LabelMaxParentalRating": "Höchste erlaubte elterlich Bewertung:", "LabelMaxParentalRating": "Höchste erlaubte elterlich Bewertung:",
"LabelMaxResumePercentage": "Maximale Prozent für Wiederaufnahme:", "LabelMaxResumePercentage": "Maximale Prozent für Wiederaufnahme:",
"LabelMaxResumePercentageHelp": "Titel werden als \"vollständig gesehen\" markiert, wenn sie nach dieser Zeitmarke gestoppt werden.", "LabelMaxResumePercentageHelp": "Titel werden als vollständig gesehen markiert, wenn sie nach dieser Zeit gestoppt werden.",
"LabelMaxScreenshotsPerItem": "Maximale Anzahl von Screenshots pro Element:", "LabelMaxScreenshotsPerItem": "Maximale Anzahl von Screenshots pro Element:",
"LabelMaxStreamingBitrate": "Maximale Streaming-Qualität:", "LabelMaxStreamingBitrate": "Maximale Streaming-Qualität:",
"LabelMaxStreamingBitrateHelp": "Wähle die maximale Bitrate während des streamens.", "LabelMaxStreamingBitrateHelp": "Wähle die maximale Bitrate während des streamens.",
@ -645,12 +645,12 @@
"LabelMetadataPathHelp": "Wähle ein Verzeichnis, für die heruntergeladenen Artworks und Metadaten.", "LabelMetadataPathHelp": "Wähle ein Verzeichnis, für die heruntergeladenen Artworks und Metadaten.",
"LabelMetadataReaders": "Metadatenleser:", "LabelMetadataReaders": "Metadatenleser:",
"LabelMetadataReadersHelp": "Lege deine bevorzugte lokale Metadatenquelle fest und ordne sie nach Prioritäten. Die erste Datei die gefunden wird, wird verwendet.", "LabelMetadataReadersHelp": "Lege deine bevorzugte lokale Metadatenquelle fest und ordne sie nach Prioritäten. Die erste Datei die gefunden wird, wird verwendet.",
"LabelMetadataSavers": "Metadatenspeicherer:", "LabelMetadataSavers": "Metadaten-Speicherer:",
"LabelMetadataSaversHelp": "Wähle das Dateiformat in dem deine Metadaten gespeichert werden sollen.", "LabelMetadataSaversHelp": "Wähle das Dateiformat, in dem deine Metadaten gespeichert werden sollen.",
"LabelMethod": "Methode:", "LabelMethod": "Methode:",
"LabelMinBackdropDownloadWidth": "Minimale Breite für zu herunterladende Hintergründe:", "LabelMinBackdropDownloadWidth": "Minimale Breite für zu herunterladende Hintergründe:",
"LabelMinResumeDuration": "Minimale Dauer für Wiederaufnahme:", "LabelMinResumeDuration": "Minimale Dauer für Wiederaufnahme:",
"LabelMinResumeDurationHelp": "Die Videolänge in Sekunden, ab der die Wiedergabeposition gespeichert wird und dich fortsetzen lässt.", "LabelMinResumeDurationHelp": "Die kürzeste Videolänge in Sekunden, die den Wiedergabeposition speichert und dich fortsetzen lässt.",
"LabelMinResumePercentage": "Minimale Prozent für Wiederaufnahme:", "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:", "LabelMinScreenshotDownloadWidth": "Minimale Breite für zu herunterladende Screenshot:",
@ -661,7 +661,7 @@
"LabelMonitorUsers": "Überwache Aktivität von:", "LabelMonitorUsers": "Überwache Aktivität von:",
"LabelMovieCategories": "Filmkategorien:", "LabelMovieCategories": "Filmkategorien:",
"LabelMoviePrefix": "Filmpräfix:", "LabelMoviePrefix": "Filmpräfix:",
"LabelMoviePrefixHelp": "Wenn ein Präfix in Filmtiteln angewendet wird, gib es hier ein damit Jellyfin es korrekt behandeln kann.", "LabelMoviePrefixHelp": "Wenn ein Präfix in Filmtiteln angewendet wird, gib es hier ein damit der Server es korrekt behandeln kann.",
"LabelMovieRecordingPath": "Film Aufnahmepfad (Optional):", "LabelMovieRecordingPath": "Film Aufnahmepfad (Optional):",
"LabelMusicStreamingTranscodingBitrate": "Musik-Transkodierung Bitrate:", "LabelMusicStreamingTranscodingBitrate": "Musik-Transkodierung Bitrate:",
"LabelMusicStreamingTranscodingBitrateHelp": "Wähle die maximale Bitrate für das streamen von Musik.", "LabelMusicStreamingTranscodingBitrateHelp": "Wähle die maximale Bitrate für das streamen von Musik.",
@ -767,7 +767,7 @@
"LabelTitle": "Titel:", "LabelTitle": "Titel:",
"LabelTrackNumber": "Stück Nummer:", "LabelTrackNumber": "Stück Nummer:",
"LabelTranscodingAudioCodec": "Audio Codec:", "LabelTranscodingAudioCodec": "Audio Codec:",
"LabelTranscodingTempPathHelp": "Dieses Verzeichnis beinhaltet Dateien die für den Betrieb des Transcoders benutzt werden. Wähle einen eigenen Pfad oder lasse das Feld frei, um den Standardspeicherort im Server Datenverzeichnis zu nutzen.", "LabelTranscodingTempPathHelp": "Wähle einen eigenen Pfad für transkodierte Dateien. Lasse das Feld frei, um den Standardspeicherort zu nutzen.",
"LabelTranscodingThreadCount": "Anzahl Transkodierungs-Threads:", "LabelTranscodingThreadCount": "Anzahl Transkodierungs-Threads:",
"LabelTranscodingThreadCountHelp": "Legen Sie die maximale Anzahl von Transkodierungs-Threads fest. Das Reduzieren der Thread-Anzahl verringert die CPU Auslastung, wird aber möglicherweise die Transkodierung nicht schnell genug für eine störungsfrei Wiedergabe ermöglichen.", "LabelTranscodingThreadCountHelp": "Legen Sie die maximale Anzahl von Transkodierungs-Threads fest. Das Reduzieren der Thread-Anzahl verringert die CPU Auslastung, wird aber möglicherweise die Transkodierung nicht schnell genug für eine störungsfrei Wiedergabe ermöglichen.",
"LabelTranscodingVideoCodec": "Video Codec:", "LabelTranscodingVideoCodec": "Video Codec:",
@ -801,7 +801,7 @@
"Large": "Groß", "Large": "Groß",
"LatestFromLibrary": "Neueste {0}", "LatestFromLibrary": "Neueste {0}",
"LearnHowYouCanContribute": "Erfahre, wie du unterstützen kannst.", "LearnHowYouCanContribute": "Erfahre, wie du unterstützen kannst.",
"LibraryAccessHelp": "Wähle die Medienverzeichnisse die du mit diesem Benutzer teilen möchtest. Administratoren können den Metadaten-Manager verwenden um alle Ordner zu bearbeiten.", "LibraryAccessHelp": "Wähle die Bibliotheken aus, die du mit diesem Benutzer teilen möchtest. Administratoren können den Metadaten-Manager verwenden um alle Ordner zu bearbeiten.",
"Like": "Mag ich", "Like": "Mag ich",
"List": "Liste", "List": "Liste",
"LiveBroadcasts": "Liveübertragungen", "LiveBroadcasts": "Liveübertragungen",
@ -841,7 +841,7 @@
"MessageConfirmRemoveMediaLocation": "Bist du dir sicher diese Medienquelle entfernen zu wollen?", "MessageConfirmRemoveMediaLocation": "Bist du dir sicher diese Medienquelle entfernen zu wollen?",
"MessageConfirmRestart": "Möchten Sie Jellyfin Server wirklich neu starten?", "MessageConfirmRestart": "Möchten Sie Jellyfin Server wirklich neu starten?",
"MessageConfirmRevokeApiKey": "Möchten Sie diesen API Schlüssel wirklich löschen? Die Verbindung der Anwendung zum Jellyfin Server wird sofort unterbrochen.", "MessageConfirmRevokeApiKey": "Möchten Sie diesen API Schlüssel wirklich löschen? Die Verbindung der Anwendung zum Jellyfin Server wird sofort unterbrochen.",
"MessageConfirmShutdown": "Möchsten Sie Jellyfin Server wirklich beenden?", "MessageConfirmShutdown": "Möchten Sie den Server wirklich herunterfahren?",
"MessageContactAdminToResetPassword": "Bitte kontaktiere deinen Systemadministrator, um dein Passwort zurücksetzen zu lassen.", "MessageContactAdminToResetPassword": "Bitte kontaktiere deinen Systemadministrator, um dein Passwort zurücksetzen zu lassen.",
"MessageCreateAccountAt": "Erstellen Sie ein Konto bei {0}", "MessageCreateAccountAt": "Erstellen Sie ein Konto bei {0}",
"MessageDeleteTaskTrigger": "Bist du dir sicher, dass du diesen Aufgabenauslöser entfernen möchtest?", "MessageDeleteTaskTrigger": "Bist du dir sicher, dass du diesen Aufgabenauslöser entfernen möchtest?",
@ -887,7 +887,7 @@
"MoreUsersCanBeAddedLater": "Weitere Benutzer können später über das Dashboard hinzugefügt werden.", "MoreUsersCanBeAddedLater": "Weitere Benutzer können später über das Dashboard hinzugefügt werden.",
"MoveLeft": "Nach links bewegen", "MoveLeft": "Nach links bewegen",
"MoveRight": "Nach rechts bewegen", "MoveRight": "Nach rechts bewegen",
"MovieLibraryHelp": "Überprüfe den {0}Filmbenennungsguide{1}.", "MovieLibraryHelp": "Überprüfe den {0}Filmbenennungsleitfaden{1}.",
"Movies": "Filme", "Movies": "Filme",
"Mute": "Stumm", "Mute": "Stumm",
"MySubtitles": "Meine Untertitel", "MySubtitles": "Meine Untertitel",
@ -1122,7 +1122,7 @@
"SearchForMissingMetadata": "Suche nach fehlenden Metadaten", "SearchForMissingMetadata": "Suche nach fehlenden Metadaten",
"SearchForSubtitles": "Suche nach Untertiteln", "SearchForSubtitles": "Suche nach Untertiteln",
"SearchResults": "Suchergebnisse", "SearchResults": "Suchergebnisse",
"SendMessage": "Sende Nachricht", "SendMessage": "Nachricht senden",
"Series": "Serien", "Series": "Serien",
"SeriesCancelled": "Serie abgebrochen.", "SeriesCancelled": "Serie abgebrochen.",
"SeriesDisplayOrderHelp": "Sortiere Episoden nach Ausstrahlungsdatum, DVD Reihenfolge oder absoluter Nummerierung.", "SeriesDisplayOrderHelp": "Sortiere Episoden nach Ausstrahlungsdatum, DVD Reihenfolge oder absoluter Nummerierung.",
@ -1222,7 +1222,7 @@
"TrackCount": "{0} Titel", "TrackCount": "{0} Titel",
"Trailers": "Trailer", "Trailers": "Trailer",
"Tuesday": "Dienstag", "Tuesday": "Dienstag",
"TvLibraryHelp": "Überprüfe den {0}Serienbenennungsguide{1}.", "TvLibraryHelp": "Überprüfe den {0}Serienbenennungsleitfaden{1}.",
"Uniform": "Einheitlich", "Uniform": "Einheitlich",
"UninstallPluginConfirmation": "Möchtest du {0} wirklich deinstallieren?", "UninstallPluginConfirmation": "Möchtest du {0} wirklich deinstallieren?",
"UninstallPluginHeader": "Plugin deinstallieren", "UninstallPluginHeader": "Plugin deinstallieren",
@ -1232,7 +1232,7 @@
"Up": "Hoch", "Up": "Hoch",
"Upload": "Hochladen", "Upload": "Hochladen",
"UserAgentHelp": "Stelle einen benutzerdefinierten User-Agent HTTP header zur Verfügung.", "UserAgentHelp": "Stelle einen benutzerdefinierten User-Agent HTTP header zur Verfügung.",
"UserProfilesIntro": "Jellyfin bietet die Unterstützung von Benutzerprofilen, mit eigenen Ansichten, Altersfreigaben und Spielstände von Medien.", "UserProfilesIntro": "Jellyfin bietet Unterstützung für Benutzerprofile mit eigenen Ansichtseinstellungen, Wiedergabepositionen und Altersfreigaben.",
"ValueAlbumCount": "{0} Alben", "ValueAlbumCount": "{0} Alben",
"ValueConditions": "Bedingungen: {0}", "ValueConditions": "Bedingungen: {0}",
"ValueEpisodeCount": "{0} Episoden", "ValueEpisodeCount": "{0} Episoden",
@ -1321,7 +1321,7 @@
"LabelVersion": "Version:", "LabelVersion": "Version:",
"LabelVersionNumber": "Version {0}", "LabelVersionNumber": "Version {0}",
"LabelVideo": "Video", "LabelVideo": "Video",
"LeaveBlankToNotSetAPassword": "Du kannst dieses Feld frei lassen um kein Passwort zu setzen.", "LeaveBlankToNotSetAPassword": "Dieses Feld frei lassen, um kein Passwort zu setzen.",
"LinksValue": "Links: {0}", "LinksValue": "Links: {0}",
"MessageImageFileTypeAllowed": "Nur JPEG- und PNG-Dateien werden unterstützt.", "MessageImageFileTypeAllowed": "Nur JPEG- und PNG-Dateien werden unterstützt.",
"MessageImageTypeNotSelected": "Bitte wähle einen Bildtyp aus dem Drop-Down Menü aus.", "MessageImageTypeNotSelected": "Bitte wähle einen Bildtyp aus dem Drop-Down Menü aus.",
@ -1396,7 +1396,7 @@
"Thumb": "Miniaturansicht", "Thumb": "Miniaturansicht",
"TitleSupport": "Hilfe", "TitleSupport": "Hilfe",
"Whitelist": "Erlaubt", "Whitelist": "Erlaubt",
"AuthProviderHelp": "Wähle einen Authentifizierungsanbieter aus, der zur Authentifizierung des Passworts dieses Benutzers verwendet werden soll.", "AuthProviderHelp": "Wähle einen Authentifizierungsanbieter, der zur Authentifizierung des Passworts dieses Benutzes verwendet werden soll.",
"Features": "Funktionen", "Features": "Funktionen",
"HeaderFavoriteBooks": "Lieblingsbücher", "HeaderFavoriteBooks": "Lieblingsbücher",
"HeaderFavoriteMovies": "Lieblingsfilme", "HeaderFavoriteMovies": "Lieblingsfilme",
@ -1433,7 +1433,7 @@
"LabelAudioBitrate": "Tonbitrate:", "LabelAudioBitrate": "Tonbitrate:",
"ButtonAddImage": "Bild hinzufügen", "ButtonAddImage": "Bild hinzufügen",
"LabelSize": "Größe:", "LabelSize": "Größe:",
"LabelTranscodes": "Transkoder:", "LabelTranscodes": "Transcodiert:",
"LabelTranscodingProgress": "Transcodierungsfortschritt:", "LabelTranscodingProgress": "Transcodierungsfortschritt:",
"LabelAudioBitDepth": "Audio-Bittiefe:", "LabelAudioBitDepth": "Audio-Bittiefe:",
"LabelPleaseRestart": "Die Änderungen werden nach dem manuellen Neuladen des Webclients wirksam.", "LabelPleaseRestart": "Die Änderungen werden nach dem manuellen Neuladen des Webclients wirksam.",
@ -1456,7 +1456,7 @@
"MessageNoServersAvailable": "Die automatische Serversuche konnte keinen Server finden.", "MessageNoServersAvailable": "Die automatische Serversuche konnte keinen Server finden.",
"LabelPlayer": "Schauspieler:", "LabelPlayer": "Schauspieler:",
"MediaInfoCodecTag": "Codec Tag", "MediaInfoCodecTag": "Codec Tag",
"SubtitleOffset": "Untertitelvorlauf", "SubtitleOffset": "Untertitel-Synchronisierung",
"PlaybackData": "Wiedergabeinformationen", "PlaybackData": "Wiedergabeinformationen",
"OptionThumbCard": "Vorschaukarte", "OptionThumbCard": "Vorschaukarte",
"OptionPosterCard": "Posterkarte", "OptionPosterCard": "Posterkarte",
@ -1469,8 +1469,8 @@
"OptionRandom": "Zufällig", "OptionRandom": "Zufällig",
"TabNetworking": "Netzwerk", "TabNetworking": "Netzwerk",
"VideoRange": "Videobereich", "VideoRange": "Videobereich",
"ButtonSplit": "Aufteilen", "ButtonSplit": "Trennen",
"SelectAdminUsername": "Bitte einen Benutzernamen für das Administrator-Konto auswählen.", "SelectAdminUsername": "Bitte wählen Sie einen Benutzernamen für den Administrator-Account.",
"HeaderNavigation": "Navigation", "HeaderNavigation": "Navigation",
"CopyStreamURLError": "Beim Kopieren der URL ist ein Fehler aufgetreten.", "CopyStreamURLError": "Beim Kopieren der URL ist ein Fehler aufgetreten.",
"MessageConfirmAppExit": "Wirklich verlassen?", "MessageConfirmAppExit": "Wirklich verlassen?",
@ -1547,7 +1547,7 @@
"MessageSyncPlayGroupDoesNotExist": "Konnte der Gruppe nicht beitreten, da sie nicht existiert.", "MessageSyncPlayGroupDoesNotExist": "Konnte der Gruppe nicht beitreten, da sie nicht existiert.",
"MessageSyncPlayPlaybackPermissionRequired": "Wiedergabegenehmigung erforderlich.", "MessageSyncPlayPlaybackPermissionRequired": "Wiedergabegenehmigung erforderlich.",
"MessageSyncPlayNoGroupsAvailable": "Keine Gruppen verfügbar. Fange an, etwas abzuspielen.", "MessageSyncPlayNoGroupsAvailable": "Keine Gruppen verfügbar. Fange an, etwas abzuspielen.",
"MessageSyncPlayGroupWait": "<b>{0}</b> ist am laden...", "MessageSyncPlayGroupWait": "<b>{0}</b> ist am laden",
"MessageSyncPlayUserLeft": "<b>{0}</b> hat die Gruppe verlassen.", "MessageSyncPlayUserLeft": "<b>{0}</b> hat die Gruppe verlassen.",
"MessageSyncPlayUserJoined": "<b>{0}</b> ist der Gruppe beigetreten.", "MessageSyncPlayUserJoined": "<b>{0}</b> ist der Gruppe beigetreten.",
"MessageSyncPlayDisabled": "SyncPlay deaktiviert.", "MessageSyncPlayDisabled": "SyncPlay deaktiviert.",
@ -1588,5 +1588,8 @@
"HeaderNewRepository": "Neues Repository", "HeaderNewRepository": "Neues Repository",
"MessageNoRepositories": "Keine Repositories.", "MessageNoRepositories": "Keine Repositories.",
"ButtonPlayer": "Player", "ButtonPlayer": "Player",
"Writers": "Autoren" "Writers": "Autoren",
"ClearQueue": "Wiedergabeliste leeren",
"StopPlayback": "Wiedergabe anhalten",
"ViewAlbumArtist": "Zeige Albumkünstler"
} }

View file

@ -1574,5 +1574,10 @@
"EnableDetailsBannerHelp": "Display a banner image at the top of the item details page.", "EnableDetailsBannerHelp": "Display a banner image at the top of the item details page.",
"EnableDetailsBanner": "Details Banner", "EnableDetailsBanner": "Details Banner",
"EnableDecodingColorDepth10Vp9": "Enable 10-Bit hardware decoding for VP9", "EnableDecodingColorDepth10Vp9": "Enable 10-Bit hardware decoding for VP9",
"EnableDecodingColorDepth10Hevc": "Enable 10-Bit hardware decoding for HEVC" "EnableDecodingColorDepth10Hevc": "Enable 10-Bit hardware decoding for HEVC",
"ViewAlbumArtist": "View album artist",
"ClearQueue": "Clear queue",
"StopPlayback": "Stop playback",
"ButtonPlayer": "Player",
"Writers": "Writers"
} }

View file

@ -1054,7 +1054,7 @@
"MessageSyncPlayDisabled": "SyncPlay disabled.", "MessageSyncPlayDisabled": "SyncPlay disabled.",
"MessageSyncPlayUserJoined": "<b>{0}</b> has joined the group.", "MessageSyncPlayUserJoined": "<b>{0}</b> has joined the group.",
"MessageSyncPlayUserLeft": "<b>{0}</b> has left the group.", "MessageSyncPlayUserLeft": "<b>{0}</b> has left the group.",
"MessageSyncPlayGroupWait": "<b>{0}</b> is buffering...", "MessageSyncPlayGroupWait": "<b>{0}</b> is buffering",
"MessageSyncPlayNoGroupsAvailable": "No groups available. Start playing something first.", "MessageSyncPlayNoGroupsAvailable": "No groups available. Start playing something first.",
"MessageSyncPlayPlaybackPermissionRequired": "Playback permission required.", "MessageSyncPlayPlaybackPermissionRequired": "Playback permission required.",
"MessageSyncPlayGroupDoesNotExist": "Failed to join group because it does not exist.", "MessageSyncPlayGroupDoesNotExist": "Failed to join group because it does not exist.",

View file

@ -2,5 +2,23 @@
"AddToCollection": "Aldoni al kolekto", "AddToCollection": "Aldoni al kolekto",
"Actor": "Aktoro", "Actor": "Aktoro",
"Absolute": "Absoluta", "Absolute": "Absoluta",
"ButtonSyncPlay": "SyncPlay" "ButtonSyncPlay": "SyncPlay",
"AllLanguages": "Ĉiuj lingvoj",
"AllEpisodes": "ĉiuj epizodoj",
"AllComplexFormats": "Ĉiuj Kompleksaj Formatoj (ASS, SSA, VOBSUB, PGS, SUB, IDX, ...)",
"AllChannels": "Ĉiuj kanaloj",
"All": "Ĉiuj",
"Alerts": "Alertoj",
"Albums": "Albumoj",
"AlbumArtist": "Albumo-Artisto",
"Album": "albumo",
"Aired": "Aerumita",
"AirDate": "Aera dato",
"AdditionalNotificationServices": "Foliumu la kromprogramon por instali aldonajn sciigajn servojn.",
"AddedOnValue": "aldonis {0}",
"AddToPlaylist": "aldoni al playlist",
"AddToPlayQueue": "Aldonu ludi voston",
"AddItemToCollectionHelp": "Aldonu erojn al kolektoj serĉante ilin kaj uzante ĝian alklakon aŭ frapetu menuojn por aldoni ilin al kolekto.",
"Add": "Aldoni",
"AccessRestrictedTryAgainLater": "Aliro nuntempe estas restriktita. Bonvolu reprovi poste."
} }

View file

@ -1652,6 +1652,6 @@
"ButtonPlayer": "Reproductor", "ButtonPlayer": "Reproductor",
"Writers": "Escritores", "Writers": "Escritores",
"ClearQueue": "Eliminar cola", "ClearQueue": "Eliminar cola",
"StopPlayback": "Detener la reproducción", "StopPlayback": "Detener reproducción",
"ViewAlbumArtist": "Ver artista del álbum" "ViewAlbumArtist": "Ver artista del álbum"
} }

View file

@ -1572,5 +1572,9 @@
"EnableFasterAnimationsHelp": "Usar animaciones y transiciones más rapidas", "EnableFasterAnimationsHelp": "Usar animaciones y transiciones más rapidas",
"EnableFasterAnimations": "Animaciones más rápidas", "EnableFasterAnimations": "Animaciones más rápidas",
"EnableDecodingColorDepth10Vp9": "Habilitar la decodificación por hardware de 10 bit para VP9", "EnableDecodingColorDepth10Vp9": "Habilitar la decodificación por hardware de 10 bit para VP9",
"EnableDecodingColorDepth10Hevc": "Habilitar la decodificación por hardware de 10 bit para HEVC" "EnableDecodingColorDepth10Hevc": "Habilitar la decodificación por hardware de 10 bit para HEVC",
"ClearQueue": "Limpiar cola",
"StopPlayback": "Detener reproducción",
"Writers": "Escritores",
"ViewAlbumArtist": "Ver el artista del album"
} }

View file

@ -1561,5 +1561,12 @@
"EnableFasterAnimationsHelp": "Usar animaciones y transiciones más rápidas", "EnableFasterAnimationsHelp": "Usar animaciones y transiciones más rápidas",
"EnableFasterAnimations": "Animaciones más rápidas", "EnableFasterAnimations": "Animaciones más rápidas",
"EnableDecodingColorDepth10Vp9": "Habilitar la decodificación de hardware de 10-Bit para VP9", "EnableDecodingColorDepth10Vp9": "Habilitar la decodificación de hardware de 10-Bit para VP9",
"EnableDecodingColorDepth10Hevc": "Habilitar la decodificación de hardware de 10-Bit para HEVC" "EnableDecodingColorDepth10Hevc": "Habilitar la decodificación de hardware de 10-Bit para HEVC",
"ClearQueue": "Limpiar cola",
"StopPlayback": "Detener reproducción",
"ButtonPlayer": "Reproducir",
"ButtonCast": "Emitir",
"Writers": "Escritores",
"ViewAlbumArtist": "Ver Álbum de Artista",
"TabRepositories": "Repositorios"
} }

View file

@ -354,7 +354,7 @@
"OptionPlayCount": "Toistokerrat", "OptionPlayCount": "Toistokerrat",
"OptionPlayed": "Toistettu", "OptionPlayed": "Toistettu",
"OptionOnAppStartup": "Käynnistyksen yhteydessä", "OptionOnAppStartup": "Käynnistyksen yhteydessä",
"OptionNew": "Uusi...", "OptionNew": "Uusi",
"OptionNameSort": "Nimi", "OptionNameSort": "Nimi",
"OptionMonday": "Maanantai", "OptionMonday": "Maanantai",
"OptionMissingEpisode": "Puuttuvat jaksot", "OptionMissingEpisode": "Puuttuvat jaksot",
@ -428,7 +428,7 @@
"LabelPreferredDisplayLanguage": "Ensisijainen näyttökieli:", "LabelPreferredDisplayLanguage": "Ensisijainen näyttökieli:",
"LabelOriginalTitle": "Alkuperäinen nimi:", "LabelOriginalTitle": "Alkuperäinen nimi:",
"LabelOriginalAspectRatio": "Alkuperäinen kuvasuhde:", "LabelOriginalAspectRatio": "Alkuperäinen kuvasuhde:",
"LabelEnableAutomaticPortMapHelp": "Yritä automaattisesti yhdistää julkinen ja paikallinen portti UPnP:n kautta. Tämä ei välttämättä toimi kaikkien reitittimien kanssa. Muutokset tulevat voimaan vasta palvelimen uudelleenkäynnistyksen yhteydessä.", "LabelEnableAutomaticPortMapHelp": "Automaattisesti ohjaa reitittimesi julkiset portit palvelimesi paikallisiin portteihin UPnP:n kautta. Tämä ei välttämättä toimi kaikkien reitittimien tai verkkoasetusten kanssa. Muutokset tulevat voimaan vasta palvelimen uudelleenkäynnistyksen yhteydessä.",
"LabelEnableAutomaticPortMap": "Salli reitittimen porttien automaattinen avaaminen (UPnP)", "LabelEnableAutomaticPortMap": "Salli reitittimen porttien automaattinen avaaminen (UPnP)",
"LabelDownloadLanguages": "Latauskielet:", "LabelDownloadLanguages": "Latauskielet:",
"LabelDisplaySpecialsWithinSeasons": "Näytä erityiset jaksot kausien sisällä, jolloin ne ilmestyivät", "LabelDisplaySpecialsWithinSeasons": "Näytä erityiset jaksot kausien sisällä, jolloin ne ilmestyivät",
@ -1206,7 +1206,7 @@
"LabelOverview": "Yleiskatsaus:", "LabelOverview": "Yleiskatsaus:",
"LabelPasswordResetProvider": "Salasanan nollauksen palveluntarjoaja:", "LabelPasswordResetProvider": "Salasanan nollauksen palveluntarjoaja:",
"LabelParentalRating": "Ikäraja:", "LabelParentalRating": "Ikäraja:",
"LabelOptionalNetworkPathHelp": "Jos tämä kansio on jaettu verkossa, polun jakaminen voi mahdollistaa Jellyfin-sovellusten muilla laitteilla käyttää mediatiedostoja suoraan.", "LabelOptionalNetworkPathHelp": "Jos tämä kansio on jaettu verkossasi, polun jakaminen voi mahdollistaa muilla laitteilla olevien Jellyfin-sovellusten pääsyn suoraan mediatiedostoihin. Esimerkiksi {0} tai {1}.",
"LabelMovieRecordingPath": "Elokuvien tallenteiden polku (valinnainen):", "LabelMovieRecordingPath": "Elokuvien tallenteiden polku (valinnainen):",
"LabelMusicStreamingTranscodingBitrateHelp": "Määritä enimmäisnopeus musiikkia suoratoistettaessa.", "LabelMusicStreamingTranscodingBitrateHelp": "Määritä enimmäisnopeus musiikkia suoratoistettaessa.",
"LabelMusicStreamingTranscodingBitrate": "Musiikin transkoodauksen bitrate:", "LabelMusicStreamingTranscodingBitrate": "Musiikin transkoodauksen bitrate:",
@ -1262,5 +1262,17 @@
"ErrorPleaseSelectLineup": "Valitse lineup ja yritä uudestaan. Mikäli lineuppeja ei ole saatavilla, varmista että käyttäjätunnuksesi, salasanasi sekä postinumerosi ovat oikein.", "ErrorPleaseSelectLineup": "Valitse lineup ja yritä uudestaan. Mikäli lineuppeja ei ole saatavilla, varmista että käyttäjätunnuksesi, salasanasi sekä postinumerosi ovat oikein.",
"ErrorAddingListingsToSchedulesDirect": "Lineuppia Schedules Direct -käyttäjätunnuksellesi lisättäessä ilmeni virhe. Schedules Direct sallii vain rajallisen määrän lineuppeja yhdelle käyttäjätunnukselle. Mikäli haluat jatkaa, voit esimerkiksi kirjautua Schedules Direct -sivustolle ja poistaa muita listauksia käyttäjätunnukseltasi.", "ErrorAddingListingsToSchedulesDirect": "Lineuppia Schedules Direct -käyttäjätunnuksellesi lisättäessä ilmeni virhe. Schedules Direct sallii vain rajallisen määrän lineuppeja yhdelle käyttäjätunnukselle. Mikäli haluat jatkaa, voit esimerkiksi kirjautua Schedules Direct -sivustolle ja poistaa muita listauksia käyttäjätunnukseltasi.",
"EnableDecodingColorDepth10Vp9": "Salli 10-bittinen hardware dekoodaus (VP9)", "EnableDecodingColorDepth10Vp9": "Salli 10-bittinen hardware dekoodaus (VP9)",
"EnableDecodingColorDepth10Hevc": "Salli 10-bittinen hardware dekoodaus (HEVC)" "EnableDecodingColorDepth10Hevc": "Salli 10-bittinen hardware dekoodaus (HEVC)",
"HeaderCastCrew": "Näyttelijät ja henkilökunta",
"HeaderCastAndCrew": "Näyttelijät ja henkilökunta",
"HeaderCancelSeries": "Peruuta sarja",
"HeaderCancelRecording": "Peruuta tallennus",
"HeaderBranding": "Brändäys",
"HeaderBlockItemsWithNoRating": "Estä kaikki joissa ei ole luokitusta tai jonka luokitusta ei voida tunnistaa:",
"HeaderAppearsOn": "Esiintyy seuraavissa",
"ApiKeysCaption": "Lista aktiivisista API-avaimista",
"HeaderApiKeysHelp": "Ulkoiset sovellukset tarvitsevat API-avaimen voidakseen toimia Jellyfin -palvelimen kanssa. Avaimet myönnetään joko kirjautumalla sisään Jellyfin -käyttäjätunnuksella tai myöntämällä sellainen sovellukselle manuaalisesti.",
"HeaderAdditionalParts": "Muut osat",
"HeaderAddScheduledTaskTrigger": "Lisää laukaisin",
"HeaderActiveRecordings": "Käynnissä olevat nauhoitukset"
} }

View file

@ -139,7 +139,7 @@
"BoxRear": "Dos de boîtier", "BoxRear": "Dos de boîtier",
"Browse": "Parcourir", "Browse": "Parcourir",
"BrowsePluginCatalogMessage": "Explorer notre catalogue des plugins pour voir les plugins disponibles.", "BrowsePluginCatalogMessage": "Explorer notre catalogue des plugins pour voir les plugins disponibles.",
"AllowHWTranscodingHelp": "Permet au récepteur TV de transcoder les flux à la volée. Cela peut aider à réduire le transcodage requis par le serveur.", "AllowHWTranscodingHelp": "Permets au syntonisateur de transcoder les flux à la volée. Cela peut aider à réduire le transcodage requis par le serveur.",
"BurnSubtitlesHelp": "Détermine si le serveur doit graver les sous-titres lors du transcodage vidéo. Éviter ceci améliorera les performances du serveur. Sélectionnez Auto pour graver les formats basés sur l'image (par exemple, VOBSUB, PGS, SUB/IDX etc) ainsi que certains sous-titres ASS/SSA.", "BurnSubtitlesHelp": "Détermine si le serveur doit graver les sous-titres lors du transcodage vidéo. Éviter ceci améliorera les performances du serveur. Sélectionnez Auto pour graver les formats basés sur l'image (par exemple, VOBSUB, PGS, SUB/IDX etc) ainsi que certains sous-titres ASS/SSA.",
"ButtonAccept": "Accepter", "ButtonAccept": "Accepter",
"ButtonAdd": "Ajouter", "ButtonAdd": "Ajouter",

View file

@ -1537,7 +1537,7 @@
"MessageSyncPlayGroupDoesNotExist": "Impossible de rejoindre le groupe car il n'existe pas.", "MessageSyncPlayGroupDoesNotExist": "Impossible de rejoindre le groupe car il n'existe pas.",
"MessageSyncPlayPlaybackPermissionRequired": "Autorisation de lecture requise.", "MessageSyncPlayPlaybackPermissionRequired": "Autorisation de lecture requise.",
"MessageSyncPlayNoGroupsAvailable": "Aucun groupe disponible. Commencez par lire quelque chose.", "MessageSyncPlayNoGroupsAvailable": "Aucun groupe disponible. Commencez par lire quelque chose.",
"MessageSyncPlayGroupWait": "<b>{0}</b> est en train de charger...", "MessageSyncPlayGroupWait": "<b>{0}</b> est en train de charger",
"MessageSyncPlayUserLeft": "<b>{0}</b> a quitté le groupe.", "MessageSyncPlayUserLeft": "<b>{0}</b> a quitté le groupe.",
"MessageSyncPlayUserJoined": "<b>{0}</b> a rejoint le groupe.", "MessageSyncPlayUserJoined": "<b>{0}</b> a rejoint le groupe.",
"MessageSyncPlayDisabled": "SyncPlay désactivé.", "MessageSyncPlayDisabled": "SyncPlay désactivé.",
@ -1545,7 +1545,7 @@
"LabelSyncPlayAccess": "Accès SyncPlay", "LabelSyncPlayAccess": "Accès SyncPlay",
"LabelSyncPlayAccessNone": "Désactivé pour cet utilisateur", "LabelSyncPlayAccessNone": "Désactivé pour cet utilisateur",
"LabelSyncPlayAccessJoinGroups": "Autoriser l'utilisateur à rejoindre un groupe", "LabelSyncPlayAccessJoinGroups": "Autoriser l'utilisateur à rejoindre un groupe",
"SyncPlayAccessHelp": "Sélectionner le niveau d'accès de cet utilisateur pour la fonctionnalité SyncPlay. SyncPlay permet de synchroniser la lecture avec d'autres utilisateurs.", "SyncPlayAccessHelp": "Sélectionner le niveau d'accès de cet utilisateur pour la fonctionnalité SyncPlay. SyncPlay permet de synchroniser la lecture avec d'autres appareils.",
"MessageSyncPlayErrorMedia": "Impossible d'activer SyncPlay ! Erreur média.", "MessageSyncPlayErrorMedia": "Impossible d'activer SyncPlay ! Erreur média.",
"MessageSyncPlayErrorMissingSession": "Impossible d'activer SyncPlay ! Session manquante.", "MessageSyncPlayErrorMissingSession": "Impossible d'activer SyncPlay ! Session manquante.",
"MessageSyncPlayErrorNoActivePlayer": "Aucun lecteur actif trouvé. SyncPlay a été désactivé.", "MessageSyncPlayErrorNoActivePlayer": "Aucun lecteur actif trouvé. SyncPlay a été désactivé.",
@ -1568,5 +1568,10 @@
"EnableFasterAnimationsHelp": "Utiliser des animations et des transitions plus rapides", "EnableFasterAnimationsHelp": "Utiliser des animations et des transitions plus rapides",
"EnableFasterAnimations": "Animations plus rapides", "EnableFasterAnimations": "Animations plus rapides",
"EnableDecodingColorDepth10Vp9": "Activer le décodage hardware 10-Bit pour VP9", "EnableDecodingColorDepth10Vp9": "Activer le décodage hardware 10-Bit pour VP9",
"EnableDecodingColorDepth10Hevc": "Activer le décodage hardware 10-Bit pour HEVC" "EnableDecodingColorDepth10Hevc": "Activer le décodage hardware 10-Bit pour HEVC",
"ClearQueue": "Vider la file d'attente",
"StopPlayback": "Arrêter",
"ButtonPlayer": "Démarrer",
"Writers": "Écrivains",
"ViewAlbumArtist": "Voir l'album de l'artiste"
} }

View file

@ -164,7 +164,13 @@
"ValueSpecialEpisodeName": "Extra - {0}", "ValueSpecialEpisodeName": "Extra - {0}",
"VersionNumber": "Version {0}", "VersionNumber": "Version {0}",
"Absolute": "Absolut", "Absolute": "Absolut",
"Actor": "Schauspiler", "Actor": "Schauspieler",
"AccessRestrictedTryAgainLater": "Zuegriff isch momentan beschränkt. Probier bitte später nomau. ", "AccessRestrictedTryAgainLater": "Zuegriff isch momentan beschränkt. Probiers bitte spöter nomol.",
"ButtonSyncPlay": "SyncPlay" "ButtonSyncPlay": "SyncPlay",
"AdditionalNotificationServices": "Durchsuech de Plugin Katalog zum zuesätzlichi Benochrichtigungsdienst zinstalliere.",
"AddedOnValue": "hinzuegfüegt",
"AddToPlaylist": "Zur Playlist hinzuefüege",
"AddToPlayQueue": "Zur Warteschlange hinzuefüege",
"AddToCollection": "Zur Collection hinzuefüege",
"Add": "hinzuefüege"
} }

View file

@ -73,10 +73,10 @@
"ButtonAddScheduledTaskTrigger": "ट्रिगर जोड़ें", "ButtonAddScheduledTaskTrigger": "ट्रिगर जोड़ें",
"ButtonAddMediaLibrary": "मीडिया लाइब्रेरी जोड़ें", "ButtonAddMediaLibrary": "मीडिया लाइब्रेरी जोड़ें",
"ButtonAddImage": "छवि जोड़ें", "ButtonAddImage": "छवि जोड़ें",
"ButtonAdd": "जोड़ना", "ButtonAdd": "जोड़ें",
"UnsupportedPlayback": "Jellyfin DRM द्वारा संरक्षित सामग्री को डिक्रिप्ट नहीं कर सकता है, लेकिन सभी सामग्री की परवाह किए बिना, संरक्षित शीर्षकों सहित प्रयास किया जाएगा। एन्क्रिप्शन या अन्य असमर्थित सुविधाओं जैसे इंटरेक्टिव शीर्षक के कारण कुछ फाइलें पूरी तरह से काली दिखाई दे सकती हैं।", "UnsupportedPlayback": "Jellyfin DRM द्वारा संरक्षित सामग्री को डिक्रिप्ट नहीं कर सकता है, लेकिन सभी सामग्री की परवाह किए बिना, संरक्षित शीर्षकों सहित प्रयास किया जाएगा। एन्क्रिप्शन या अन्य असमर्थित सुविधाओं जैसे इंटरेक्टिव शीर्षक के कारण कुछ फाइलें पूरी तरह से काली दिखाई दे सकती हैं।",
"BoxRear": "बॉक्स (पीछे)", "BoxRear": "बॉक्स (पीछे)",
"Box": "डिब्बा", "Box": "बॉक्स",
"Books": "पुस्तकें", "Books": "पुस्तकें",
"BookLibraryHelp": "ऑडियो और पाठ्य पुस्तकें समर्थित हैं। {0} पुस्तक नामकरण गाइड {1} की समीक्षा करें।", "BookLibraryHelp": "ऑडियो और पाठ्य पुस्तकें समर्थित हैं। {0} पुस्तक नामकरण गाइड {1} की समीक्षा करें।",
"Blacklist": "काला सूची में डालना", "Blacklist": "काला सूची में डालना",
@ -113,5 +113,9 @@
"AllowOnTheFlySubtitleExtraction": "मक्खी पर उपशीर्षक निष्कर्षण की अनुमति दें", "AllowOnTheFlySubtitleExtraction": "मक्खी पर उपशीर्षक निष्कर्षण की अनुमति दें",
"Album": "एल्बम", "Album": "एल्बम",
"AddItemToCollectionHelp": "उनके लिए खोज करके संग्रह में आइटम जोड़ें और उन्हें संग्रह में जोड़ने के लिए उनके राइट-क्लिक या टैप मेनू का उपयोग करें।", "AddItemToCollectionHelp": "उनके लिए खोज करके संग्रह में आइटम जोड़ें और उन्हें संग्रह में जोड़ने के लिए उनके राइट-क्लिक या टैप मेनू का उपयोग करें।",
"ButtonSyncPlay": "SyncPlay" "ButtonSyncPlay": "SyncPlay",
"BrowsePluginCatalogMessage": "उपलब्ध प्लगिन्स देखने के लिए हमारे कैटलॉग को ब्राउज़ करें।",
"Browse": "ब्राउज़",
"BoxSet": "बॉक्स सेट",
"BurnSubtitlesHelp": "निर्धारित करता है कि वीडियो ट्रांसकोडिंग करते समय सर्वर को उपशीर्षक बर्न-इन करना चाहिए। इससे बचने से प्रदर्शन में बहुत सुधार होगा। छवि आधारित उपशीर्षक (VOBSUB, PGS, SUB, IDX, …) एवं ASS अथवा SSA जैसे उपशीर्षक बर्न-इन करने के लिए ऑटो का चयन करें।"
} }

View file

@ -1521,7 +1521,7 @@
"TabDVR": "DVR", "TabDVR": "DVR",
"HeaderDVR": "DVR", "HeaderDVR": "DVR",
"SaveChanges": "Változtatások mentése", "SaveChanges": "Változtatások mentése",
"MessageSyncPlayGroupWait": "<b>{0}</b> bufferel...", "MessageSyncPlayGroupWait": "<b>{0}</b> pufferel…",
"MessageSyncPlayUserLeft": "<b>{0}</b> elhagyta a csoportot.", "MessageSyncPlayUserLeft": "<b>{0}</b> elhagyta a csoportot.",
"MessageSyncPlayUserJoined": "<b>{0}</b> csatlakozott a csoporthoz.", "MessageSyncPlayUserJoined": "<b>{0}</b> csatlakozott a csoporthoz.",
"MessageSyncPlayDisabled": "SyncPlay letiltva.", "MessageSyncPlayDisabled": "SyncPlay letiltva.",

View file

@ -22,7 +22,7 @@
"AllowMediaConversion": "メディアの変換を許可する", "AllowMediaConversion": "メディアの変換を許可する",
"AllowMediaConversionHelp": "メディア変換機能へのアクセスを許可もしくは、拒否します。", "AllowMediaConversionHelp": "メディア変換機能へのアクセスを許可もしくは、拒否します。",
"AllowOnTheFlySubtitleExtraction": "字幕の抽出の許可/拒否", "AllowOnTheFlySubtitleExtraction": "字幕の抽出の許可/拒否",
"AllowOnTheFlySubtitleExtractionHelp": "埋め込まれた字幕は、ビデオのトランスコーディングを防ぐために、ビデオから抽出してプレーンテキストでクライアントに配信できます。 システムによっては、これに時間がかかり、抽出中にビデオの再生が止まることがあります。 これを無効にし、埋め込み字幕がクライアントデバイスでネイティブにサポートされていない場合、ビデオのトランスコーディングが強制されます。", "AllowOnTheFlySubtitleExtractionHelp": "埋め込まれた字幕は、ビデオのトランスコーを防ぐために、ビデオから抽出してプレーンテキストでクライアントに配信できます。 システムによっては、これに時間がかかり、抽出中にビデオの再生が止まることがあります。 これを無効にし、埋め込み字幕がクライアントデバイスでネイティブにサポートされていない場合、ビデオのトランスコーが強制されます。",
"AllowRemoteAccess": "Jellyfin Serverへのリモート接続の許可。", "AllowRemoteAccess": "Jellyfin Serverへのリモート接続の許可。",
"AllowRemoteAccessHelp": "チェックが入っていない場合すべてのリモート接続をブロックします。", "AllowRemoteAccessHelp": "チェックが入っていない場合すべてのリモート接続をブロックします。",
"AllowedRemoteAddressesHelp": "リモート接続を許可するネットワークのIPアドレスまたはIPアドレス/マスク長 空白のままにすると、すべてのリモートアドレスが許可されます。", "AllowedRemoteAddressesHelp": "リモート接続を許可するネットワークのIPアドレスまたはIPアドレス/マスク長 空白のままにすると、すべてのリモートアドレスが許可されます。",
@ -47,7 +47,7 @@
"BirthLocation": "生まれた場所", "BirthLocation": "生まれた場所",
"BirthPlaceValue": "生まれた場所: {0}", "BirthPlaceValue": "生まれた場所: {0}",
"Blacklist": "ブラックリスト", "Blacklist": "ブラックリスト",
"BookLibraryHelp": "オーディオブックとテキストブックに対応しています。{0}Jellyfinブック命名ガイド{1}.", "BookLibraryHelp": "オーディオブックとテキストブックに対応しています。{0} の資料、ブック命名ガイド {1} を参照。",
"Books": "ブック", "Books": "ブック",
"Box": "ボックス", "Box": "ボックス",
"BoxRear": "ボックス(後)", "BoxRear": "ボックス(後)",
@ -1176,5 +1176,18 @@
"LabelEnableBlastAliveMessagesHelp": "ネットワーク上の他の UPnP デバイスによってサーバーが確実に検出されない場合、この設定を有効にします。", "LabelEnableBlastAliveMessagesHelp": "ネットワーク上の他の UPnP デバイスによってサーバーが確実に検出されない場合、この設定を有効にします。",
"LabelEnableAutomaticPortMapHelp": "ルーター上のパブリックポートを、UPnP 経由でサーバーのローカルポートに自動的に転送します。これはルータのモデルやネットワーク構成によっては動作しない場合があります。変更はサーバーを再起動するまで適用されません。", "LabelEnableAutomaticPortMapHelp": "ルーター上のパブリックポートを、UPnP 経由でサーバーのローカルポートに自動的に転送します。これはルータのモデルやネットワーク構成によっては動作しない場合があります。変更はサーバーを再起動するまで適用されません。",
"LabelEmbedAlbumArtDidlHelp": "一部のデバイスでは、アルバムアートを取得するためにこの方法が好まれています。その他のデバイスでは、このオプションを有効にしても再生できない場合があります。", "LabelEmbedAlbumArtDidlHelp": "一部のデバイスでは、アルバムアートを取得するためにこの方法が好まれています。その他のデバイスでは、このオプションを有効にしても再生できない場合があります。",
"LabelDownMixAudioScaleHelp": "ダウンミックス時にオーディオの音量を増幅します。値が 1 の場合、元の音量を維持します。" "LabelDownMixAudioScaleHelp": "ダウンミックス時にオーディオの音量を増幅します。値が 1 の場合、元の音量を維持します。",
"LabelEnableHttps": "HTTPS を有効にする",
"LabelEnableDlnaPlayToHelp": "ネットワーク内のデバイスを検出し、それらをリモートコントロールできるようにします。",
"LabelEnableDlnaPlayTo": "DLNA 再生を有効にする",
"LabelEnableDlnaDebugLoggingHelp": "巨大なログファイルを作成します。トラブルシューティングでの必要な際にだけ使用してください。",
"LabelEnableDlnaClientDiscoveryIntervalHelp": "Jellyfin が実行する SSDP 検索の間隔を決めます(秒単位)。",
"LabelGroupMoviesIntoCollectionsHelp": "ムービーリストを表示する際、コレクションに属するムービーを1つのグループとして表示します。",
"LabelServerNameHelp": "この名前はサーバーを識別するために使用します。デフォルトではサーバーのコンピュータ名です。",
"LabelExtractChaptersDuringLibraryScanHelp": "ライブラリー スキャン中に動画を取り込んだときに、チャプター画像を生成します。もしくは、スケジュールタスクの中でチャプター画像を抽出することで、通常のライブラリー スキャンをより速く完了させることができます。",
"LabelExtractChaptersDuringLibraryScan": "ライブラリーをスキャンしながら、チャプター画像を生成する",
"LabelBaseUrlHelp": "サーバーの URL にカスタム サブディレクトリを加えます。例 : <code>http://example.com/<b>&lt;baseurl&gt;</b></code>",
"LabelEnableSingleImageInDidlLimitHelp": "Didl 内に複数の画像が埋め込まれている場合、一部のデバイスでは正しくレンダリングされません。",
"LabelEnableRealtimeMonitorHelp": "ファイルへの変更は、サポートされているファイルシステム上ですぐに処理されます。",
"LabelEnableHttpsHelp": "構成された HTTPS ポートからサーバーがリッスンするのを有効にします。この機能を有効にするには、適切な証明書を設定する必要があります。"
} }

View file

@ -98,5 +98,6 @@
"ButtonPreviousTrack": "मागचा ट्रॅक", "ButtonPreviousTrack": "मागचा ट्रॅक",
"ButtonPlay": "प्ले", "ButtonPlay": "प्ले",
"ButtonPause": "पॉझ", "ButtonPause": "पॉझ",
"ButtonSyncPlay": "SyncPlay" "ButtonSyncPlay": "SyncPlay",
"Collections": "संग्रह"
} }

View file

@ -103,5 +103,16 @@
"Genres": "Genre-genre", "Genres": "Genre-genre",
"Collections": "Koleksi", "Collections": "Koleksi",
"Channels": "Saluran", "Channels": "Saluran",
"ButtonSyncPlay": "SyncPlay" "ButtonSyncPlay": "SyncPlay",
"Movies": "Filem",
"HeaderNextUp": "Seterusnya",
"HeaderLiveTV": "TV Siaran Langsung",
"HeaderFavoriteSongs": "Lagu-lagu Kegemaran",
"HeaderFavoriteShows": "Rancangan-rancangan Kegemaran",
"HeaderFavoriteEpisodes": "Episod-episod Kegemaran",
"HeaderFavoriteArtists": "Artis-artis Kegemaran",
"HeaderFavoriteAlbums": "Album-album Kegemaran",
"HeaderAlbumArtists": "Album Artis-artis",
"Folders": "Fail-fail",
"Favorites": "Kegemaran"
} }

View file

@ -1470,8 +1470,8 @@
"Artist": "Artist", "Artist": "Artist",
"AlbumArtist": "Albumartist", "AlbumArtist": "Albumartist",
"Album": "Album", "Album": "Album",
"LabelLibraryPageSizeHelp": "Velger hvor mange elementer som skal bli vist på en bibliotek side. Velg 0 for å deaktivere.", "LabelLibraryPageSizeHelp": "Angir hvor mange elementer som vises på en bibliotekside. Velg 0 for å deaktivere oppdeling i sider.",
"LabelLibraryPageSize": "Biblioteks side størrelse:", "LabelLibraryPageSize": "Størrelse på bibliotekside:",
"LabelDeinterlaceMethod": "Deinterlacing metode:", "LabelDeinterlaceMethod": "Deinterlacing metode:",
"HeaderFavoritePlaylists": "Favorittspillelister", "HeaderFavoritePlaylists": "Favorittspillelister",
"DeinterlaceMethodHelp": "Velg deinterlacing metoden som skal bli brukt når man transkoder interlaced innhold.", "DeinterlaceMethodHelp": "Velg deinterlacing metoden som skal bli brukt når man transkoder interlaced innhold.",
@ -1564,10 +1564,13 @@
"EnableDecodingColorDepth10Vp9": "Aktiver maskinvaredekoding for VP9", "EnableDecodingColorDepth10Vp9": "Aktiver maskinvaredekoding for VP9",
"EnableDecodingColorDepth10Hevc": "Aktiver maskinvaredekoding for 10-Bit HEVC", "EnableDecodingColorDepth10Hevc": "Aktiver maskinvaredekoding for 10-Bit HEVC",
"ButtonPlayer": "Spiller", "ButtonPlayer": "Spiller",
"ButtonCast": "Rollebesetning", "ButtonCast": "Cast",
"Writers": "Forfattere", "Writers": "Forfattere",
"TabRepositories": "Kilder", "TabRepositories": "Kilder",
"MessageNoGenresAvailable": "Aktiver noen metadata-kilder for å hente sjangre fra internett.", "MessageNoGenresAvailable": "Aktiver noen metadata-kilder for å hente sjangre fra internett.",
"MessageAddRepository": "Hvis du ønsker å legge til en ny kilde klikker du på knappen ved siden av overskriften og fyller ut forespurt informasjon.", "MessageAddRepository": "Hvis du ønsker å legge til en ny kilde klikker du på knappen ved siden av overskriften og fyller ut forespurt informasjon.",
"LabelRepositoryNameHelp": "Et egendefinert navn for å skille denne kilden fra andre som er lagt til på serveren din." "LabelRepositoryNameHelp": "Et egendefinert navn for å skille denne kilden fra andre som er lagt til på serveren din.",
"ClearQueue": "Tøm køen",
"ViewAlbumArtist": "Vis albumartist",
"StopPlayback": "Stopp avspilling"
} }

View file

@ -846,7 +846,7 @@
"MessageNoAvailablePlugins": "Geen beschikbare Plugins.", "MessageNoAvailablePlugins": "Geen beschikbare Plugins.",
"MessageNoMovieSuggestionsAvailable": "Er zijn momenteel geen film suggesties beschikbaar. Begin met het bekijken en waardeer uw films, kom daarna terug om uw aanbevelingen te bekijken.", "MessageNoMovieSuggestionsAvailable": "Er zijn momenteel geen film suggesties beschikbaar. Begin met het bekijken en waardeer uw films, kom daarna terug om uw aanbevelingen te bekijken.",
"MessageNoPluginsInstalled": "U heeft geen plugins geïnstalleerd.", "MessageNoPluginsInstalled": "U heeft geen plugins geïnstalleerd.",
"MessageNoTrailersFound": "Geen trailers gevonden. Installeer het Trailers kanaal om uw film ervaring te verbeteren door middel van het toevoegen van een bibliotheek met internet trailers.", "MessageNoTrailersFound": "Installeer het Trailers kanaal om uw film ervaring te verbeteren door middel van het toevoegen van een bibliotheek met internet trailers.",
"MessageNothingHere": "Lijst is leeg.", "MessageNothingHere": "Lijst is leeg.",
"MessagePasswordResetForUsers": "De volgende gebruikers hebben hun wachtwoord laten herstellen. Zij kunnen nu inloggen met de pin codes die gebruikt werden om de herstel te voltooien.", "MessagePasswordResetForUsers": "De volgende gebruikers hebben hun wachtwoord laten herstellen. Zij kunnen nu inloggen met de pin codes die gebruikt werden om de herstel te voltooien.",
"MessagePlayAccessRestricted": "Afspelen hiervan is op dit moment niet toegestaan. Neem contact op met uw server beheerder voor meer informatie.", "MessagePlayAccessRestricted": "Afspelen hiervan is op dit moment niet toegestaan. Neem contact op met uw server beheerder voor meer informatie.",
@ -1559,5 +1559,12 @@
"HeaderHttpsSettings": "HTTPS instellingen", "HeaderHttpsSettings": "HTTPS instellingen",
"HeaderDVR": "DVR", "HeaderDVR": "DVR",
"ApiKeysCaption": "Lijst met de momenteel ingeschakelde API-sleutels", "ApiKeysCaption": "Lijst met de momenteel ingeschakelde API-sleutels",
"ButtonSyncPlay": "SyncPlay" "ButtonSyncPlay": "SyncPlay",
"ShowMore": "Laat meer zien",
"ShowLess": "Laat minder zien",
"MessageNoGenresAvailable": "Stel sommige metadataproviders in staat om genres van internet te halen.",
"EnableFasterAnimationsHelp": "Gebruik snellere animaties en overgangen",
"EnableFasterAnimations": "Snellere animaties",
"EnableDecodingColorDepth10Vp9": "Schakel 10-bits hardwarecodering in voor VP9",
"EnableDecodingColorDepth10Hevc": "Schakel 10-bits hardwarecodering in voor HEVC"
} }

View file

@ -23,5 +23,7 @@
"Add": "Upend", "Add": "Upend",
"Actor": "Privateer", "Actor": "Privateer",
"AccessRestrictedTryAgainLater": "Ye arn't appearin' on the list o' the livin'!", "AccessRestrictedTryAgainLater": "Ye arn't appearin' on the list o' the livin'!",
"ButtonSyncPlay": "SyncPlay" "ButtonSyncPlay": "SyncPlay",
"AddedOnValue": "Upended {0}",
"AddToCollection": "Add to ye collection"
} }

View file

@ -564,7 +564,7 @@
"LabelDynamicExternalId": "Id de {0}:", "LabelDynamicExternalId": "Id de {0}:",
"LabelEasyPinCode": "Código pin fácil:", "LabelEasyPinCode": "Código pin fácil:",
"LabelEmbedAlbumArtDidl": "Arte do álbum incorporada no Didl", "LabelEmbedAlbumArtDidl": "Arte do álbum incorporada no Didl",
"LabelEmbedAlbumArtDidlHelp": "Alguns dispositivos preferem este método para obter a arte do álbum. Outros podem falhar ao reproduzir com esta opção ativada.", "LabelEmbedAlbumArtDidlHelp": "Alguns dispositivos preferem este método para obter a arte do álbum. Outros podem falhar para reproduzir com esta opção ativada.",
"LabelEnableAutomaticPortMap": "Ativar mapeamento automático de portas", "LabelEnableAutomaticPortMap": "Ativar mapeamento automático de portas",
"LabelEnableAutomaticPortMapHelp": "Tentar mapear automaticamente a porta pública para a porta local do seu servidor através de UPnP. Pode não funcionar em alguns modelos de roteadores. As mudanças não serão aplicadas até a reinicialização do servidor.", "LabelEnableAutomaticPortMapHelp": "Tentar mapear automaticamente a porta pública para a porta local do seu servidor através de UPnP. Pode não funcionar em alguns modelos de roteadores. As mudanças não serão aplicadas até a reinicialização do servidor.",
"LabelEnableBlastAliveMessages": "Mensagens ao vivo", "LabelEnableBlastAliveMessages": "Mensagens ao vivo",
@ -601,7 +601,7 @@
"LabelH264Crf": "CRF de codificação H264:", "LabelH264Crf": "CRF de codificação H264:",
"LabelEncoderPreset": "Preset de codificação H264:", "LabelEncoderPreset": "Preset de codificação H264:",
"LabelHardwareAccelerationType": "Aceleração de hardware:", "LabelHardwareAccelerationType": "Aceleração de hardware:",
"LabelHardwareAccelerationTypeHelp": "Aceleração por hardware requer configurações adicionais.", "LabelHardwareAccelerationTypeHelp": "A aceleração de hardware requer configuração adicional.",
"LabelHomeNetworkQuality": "Qualidade da rede local:", "LabelHomeNetworkQuality": "Qualidade da rede local:",
"LabelHomeScreenSectionValue": "Seção {0} da tela inicial:", "LabelHomeScreenSectionValue": "Seção {0} da tela inicial:",
"LabelHttpsPort": "Número da porta local de HTTPS:", "LabelHttpsPort": "Número da porta local de HTTPS:",
@ -626,7 +626,7 @@
"LabelKodiMetadataEnablePathSubstitution": "Ativar substituição de local", "LabelKodiMetadataEnablePathSubstitution": "Ativar substituição de local",
"LabelKodiMetadataEnablePathSubstitutionHelp": "Ativa a substituição do local das imagens usando as configurações de substituição de local do servidor.", "LabelKodiMetadataEnablePathSubstitutionHelp": "Ativa a substituição do local das imagens usando as configurações de substituição de local do servidor.",
"LabelKodiMetadataSaveImagePaths": "Salvar o local das imagens dentro dos arquivos nfo", "LabelKodiMetadataSaveImagePaths": "Salvar o local das imagens dentro dos arquivos nfo",
"LabelKodiMetadataSaveImagePathsHelp": "Isto é recomendado se os nomes dos arquivos de imagem não estão de acordo com as exigências do Kodi.", "LabelKodiMetadataSaveImagePathsHelp": "Isto é recomendado se os nomes dos arquivos de imagem não estão de acordo com as recomendações do Kodi.",
"LabelKodiMetadataUser": "Salvar informações do que o usuário assiste aos NFO's para:", "LabelKodiMetadataUser": "Salvar informações do que o usuário assiste aos NFO's para:",
"LabelKodiMetadataUserHelp": "Salva os dados para arquivos NFO para que outras aplicações possam usar.", "LabelKodiMetadataUserHelp": "Salva os dados para arquivos NFO para que outras aplicações possam usar.",
"LabelLanNetworks": "Redes LAN:", "LabelLanNetworks": "Redes LAN:",
@ -662,7 +662,7 @@
"LabelMethod": "Método:", "LabelMethod": "Método:",
"LabelMinBackdropDownloadWidth": "Tamanho mínimo da imagem de fundo para download:", "LabelMinBackdropDownloadWidth": "Tamanho mínimo da imagem de fundo para download:",
"LabelMinResumeDuration": "Duração mínima para retomar:", "LabelMinResumeDuration": "Duração mínima para retomar:",
"LabelMinResumeDurationHelp": "Tempo mínimo do vídeo em segundos que permitirá continuar a reprodução a partir do ponto que parou.", "LabelMinResumeDurationHelp": "A menor duração de vídeo em segundos que salvará o local de reprodução e permitirá que retome.",
"LabelMinResumePercentage": "Porcentagem mínima para retomar:", "LabelMinResumePercentage": "Porcentagem mínima para retomar:",
"LabelMinResumePercentageHelp": "Títulos são considerados como não reproduzidos se parados antes deste tempo.", "LabelMinResumePercentageHelp": "Títulos são considerados como não reproduzidos se parados antes deste tempo.",
"LabelMinScreenshotDownloadWidth": "Tamanho mínimo da captura de tela para download:", "LabelMinScreenshotDownloadWidth": "Tamanho mínimo da captura de tela para download:",
@ -676,7 +676,7 @@
"LabelMoviePrefixHelp": "Se os títulos dos filmes devem ter um prefixo, digite-o aqui para que o servidor possa usá-lo corretamente.", "LabelMoviePrefixHelp": "Se os títulos dos filmes devem ter um prefixo, digite-o aqui para que o servidor possa usá-lo corretamente.",
"LabelMovieRecordingPath": "Local de gravação de filme (opcional):", "LabelMovieRecordingPath": "Local de gravação de filme (opcional):",
"LabelMusicStreamingTranscodingBitrate": "Bitrate da transcodificação de músicas:", "LabelMusicStreamingTranscodingBitrate": "Bitrate da transcodificação de músicas:",
"LabelMusicStreamingTranscodingBitrateHelp": "Especifique uma taxa de bits máxima ao transmitir músicas.", "LabelMusicStreamingTranscodingBitrateHelp": "Define o bitrate máximo do streaming de músicas.",
"LabelName": "Nome:", "LabelName": "Nome:",
"LabelNewName": "Novo nome:", "LabelNewName": "Novo nome:",
"LabelNewPassword": "Nova senha:", "LabelNewPassword": "Nova senha:",
@ -1323,7 +1323,7 @@
"Horizontal": "Horizontal", "Horizontal": "Horizontal",
"LabelAbortedByServerShutdown": "(Abortado devido ao desligamento do servidor)", "LabelAbortedByServerShutdown": "(Abortado devido ao desligamento do servidor)",
"LabelCache": "Cache:", "LabelCache": "Cache:",
"LabelLogs": "Logs:", "LabelLogs": "Registros:",
"LabelProfileCodecs": "Codecs:", "LabelProfileCodecs": "Codecs:",
"LabelSkin": "Tema:", "LabelSkin": "Tema:",
"LabelStatus": "Status:", "LabelStatus": "Status:",
@ -1529,7 +1529,7 @@
"MessageSyncPlayGroupDoesNotExist": "Falha ao participar de grupo pois o mesmo não existe.", "MessageSyncPlayGroupDoesNotExist": "Falha ao participar de grupo pois o mesmo não existe.",
"MessageSyncPlayPlaybackPermissionRequired": "É necessária permissão de reprodução.", "MessageSyncPlayPlaybackPermissionRequired": "É necessária permissão de reprodução.",
"MessageSyncPlayNoGroupsAvailable": "Nenhum grupo disponível. Comece a reproduzir algo primeiro.", "MessageSyncPlayNoGroupsAvailable": "Nenhum grupo disponível. Comece a reproduzir algo primeiro.",
"MessageSyncPlayGroupWait": "<b>{0}</b> está carregando...", "MessageSyncPlayGroupWait": "<b>{0}</b> está carregando. . .",
"MessageSyncPlayUserLeft": "<b>{0}</b> deixou o grupo.", "MessageSyncPlayUserLeft": "<b>{0}</b> deixou o grupo.",
"MessageSyncPlayUserJoined": "<b>{0}</b> se juntou ao grupo.", "MessageSyncPlayUserJoined": "<b>{0}</b> se juntou ao grupo.",
"MessageSyncPlayDisabled": "SyncPlay desativado.", "MessageSyncPlayDisabled": "SyncPlay desativado.",

View file

@ -320,7 +320,7 @@
"LabelEmbedAlbumArtDidl": "Incorporar a capa do álbum no DIDL", "LabelEmbedAlbumArtDidl": "Incorporar a capa do álbum no DIDL",
"LabelEmbedAlbumArtDidlHelp": "Alguns dispositivos preferem este método para obter a capa do álbum. Noutros pode falhar a reprodução com esta opção ativada.", "LabelEmbedAlbumArtDidlHelp": "Alguns dispositivos preferem este método para obter a capa do álbum. Noutros pode falhar a reprodução com esta opção ativada.",
"LabelEnableAutomaticPortMap": "Ativar mapeamento automático de portas", "LabelEnableAutomaticPortMap": "Ativar mapeamento automático de portas",
"LabelEnableAutomaticPortMapHelp": "Tenta mapear automaticamente o porto público para o porto local através de UPnP. Isto poderá não funcionar em alguns modelos de routers.", "LabelEnableAutomaticPortMapHelp": "Automaticamente encaminha o porto público para o porto local através de UPnP. Isto poderá não funcionar em alguns modelos de routers ou devido às configurações da rede. As alterações só serão aplicadas após o reiniciar do servidor",
"LabelEnableBlastAliveMessages": "Enviar mensagens de reconhecimento", "LabelEnableBlastAliveMessages": "Enviar mensagens de reconhecimento",
"LabelEnableBlastAliveMessagesHelp": "Ativar esta opção se o servidor não for convenientemente detetado por outros dispositivos UPnP na rede.", "LabelEnableBlastAliveMessagesHelp": "Ativar esta opção se o servidor não for convenientemente detetado por outros dispositivos UPnP na rede.",
"LabelEnableDlnaClientDiscoveryInterval": "Intervalo para descoberta de clientes (segundos)", "LabelEnableDlnaClientDiscoveryInterval": "Intervalo para descoberta de clientes (segundos)",
@ -605,7 +605,7 @@
"OptionMissingEpisode": "Episódios em Falta", "OptionMissingEpisode": "Episódios em Falta",
"OptionMonday": "Segunda", "OptionMonday": "Segunda",
"OptionNameSort": "Nome", "OptionNameSort": "Nome",
"OptionNew": "Nova...", "OptionNew": "Nova",
"OptionNone": "Nenhum", "OptionNone": "Nenhum",
"OptionOnAppStartup": "Ao iniciar a aplicação", "OptionOnAppStartup": "Ao iniciar a aplicação",
"OptionOnInterval": "Num intervalo", "OptionOnInterval": "Num intervalo",
@ -768,13 +768,13 @@
"AllowMediaConversion": "Permitir conversão multimédia", "AllowMediaConversion": "Permitir conversão multimédia",
"AllowMediaConversionHelp": "Permitir ou negar acesso à funcionalidade de conversão multimédia.", "AllowMediaConversionHelp": "Permitir ou negar acesso à funcionalidade de conversão multimédia.",
"AllowOnTheFlySubtitleExtraction": "Permitir a extração de legendas em tempo real", "AllowOnTheFlySubtitleExtraction": "Permitir a extração de legendas em tempo real",
"AllowOnTheFlySubtitleExtractionHelp": "Legendas integradas podem ser extraídas do vídeo e enviadas como texto simples para os clientes para evitar transcodificação. Em certos dispositivos, esta poderá ser uma operação demorada e pode causar paragens de reprodução durante o processo de extração. Desative esta opção para que as legendas sejam integradas no vídeo durante a conversão para um formato suportado pelo dispositivo de destino.", "AllowOnTheFlySubtitleExtractionHelp": "Legendas integradas podem ser extraídas do vídeo e enviadas como texto simples para os clientes para evitar transcodificação. Em certos dispositivos, esta poderá ser uma operação demorada e pode causar interrupções de reprodução durante o processo de extração. Desative esta opção para que as legendas sejam integradas no vídeo durante a conversão para um formato suportado pelo dispositivo de destino.",
"AllowRemoteAccess": "Permitir ligações remotas a este Jellyfin Server.", "AllowRemoteAccess": "Permitir ligações remotas a este Jellyfin Server.",
"AllowRemoteAccessHelp": "Se inativo, todas as ligações remotas serão bloqueadas.", "AllowRemoteAccessHelp": "Se inativo, todas as ligações remotas serão bloqueadas.",
"AllowedRemoteAddressesHelp": "Lista de IP ou IP/Máscara, separados por vírgulas, com permissão para se ligar remotamente. Se deixado em branco, todos os endereços remotos serão permitidos.", "AllowedRemoteAddressesHelp": "Lista de IP ou IP/Máscara, separados por vírgulas, com permissão para se ligar remotamente. Se deixado em branco, todos os endereços remotos serão permitidos.",
"AlwaysPlaySubtitles": "Mostrar sempre legendas", "AlwaysPlaySubtitles": "Reproduzir Sempre",
"AlwaysPlaySubtitlesHelp": "Legendas correspondentes à língua preferencial vão ser sempre carregadas, independentemente do idioma do áudio.", "AlwaysPlaySubtitlesHelp": "Legendas correspondentes à língua preferencial vão ser sempre carregadas, independentemente do idioma do áudio.",
"AnyLanguage": "Qualquer idioma", "AnyLanguage": "Qualquer linguagem",
"Artists": "Artistas", "Artists": "Artistas",
"Ascending": "Crescente", "Ascending": "Crescente",
"AspectRatio": "Proporção", "AspectRatio": "Proporção",
@ -785,7 +785,7 @@
"BirthPlaceValue": "Local de nascimento: {0}", "BirthPlaceValue": "Local de nascimento: {0}",
"Blacklist": "Lista Negra", "Blacklist": "Lista Negra",
"Books": "Livros", "Books": "Livros",
"BurnSubtitlesHelp": "Determina se o servidor deve integrar as legendas durante a conversão de vídeo, dependendo do formato da legenda. Evitar integração de legendas melhora o desempenho do servidor. Selecione Auto para que legendas baseadas em imagem (VOBSUB, PGS, SUB/IDX), e certos formatos ASS/SSA sejam integrados.", "BurnSubtitlesHelp": "Determina se o servidor deve integrar as legendas durante a conversão de vídeo. Evitar a integração de legendas melhora o desempenho do servidor. Selecione Auto para que legendas baseadas em imagem (VOBSUB, PGS, SUB/IDX), e certos formatos ASS/SSA sejam integrados.",
"Channels": "Canais", "Channels": "Canais",
"Collections": "Coleções", "Collections": "Coleções",
"Favorites": "Favoritos", "Favorites": "Favoritos",
@ -831,7 +831,7 @@
"Browse": "Procurar", "Browse": "Procurar",
"BoxRear": "Caixa (verso)", "BoxRear": "Caixa (verso)",
"Box": "Caixa", "Box": "Caixa",
"BookLibraryHelp": "Livros de texto e áudio são suportados. Consulte o guia de nomenclatura de livros{1}.", "BookLibraryHelp": "Livros digitais e áudio livros são suportados. Consulte o guia de nomenclatura de livros{1}.",
"BirthLocation": "Local de nascimento", "BirthLocation": "Local de nascimento",
"AsManyAsPossible": "Tantos quanto possível", "AsManyAsPossible": "Tantos quanto possível",
"Art": "Capa", "Art": "Capa",
@ -963,7 +963,7 @@
"LabelAbortedByServerShutdown": "(Abortado - Servidor encerrado)", "LabelAbortedByServerShutdown": "(Abortado - Servidor encerrado)",
"Kids": "Crianças", "Kids": "Crianças",
"Items": "Itens", "Items": "Itens",
"InstallingPackage": "A instalar {0}", "InstallingPackage": "A instalar {0} (version {1})",
"HttpsRequiresCert": "Para activar ligações seguras, é necessário fornecer um certificado SSL confiável. Forneça um certificado SSL ou desactive as ligações seguras.", "HttpsRequiresCert": "Para activar ligações seguras, é necessário fornecer um certificado SSL confiável. Forneça um certificado SSL ou desactive as ligações seguras.",
"DirectStreamHelp1": "O tipo de multimédia (H.264, AC3, etc.) e a sua resolução são compatíveis com o dispositivo, no entanto, o formato (mkv, avi, wmv, etc.) não é. O conteúdo é reempacotado em tempo real antes de ser enviado para o dispositivo.", "DirectStreamHelp1": "O tipo de multimédia (H.264, AC3, etc.) e a sua resolução são compatíveis com o dispositivo, no entanto, o formato (mkv, avi, wmv, etc.) não é. O conteúdo é reempacotado em tempo real antes de ser enviado para o dispositivo.",
"DirectPlaying": "Reprodução direta", "DirectPlaying": "Reprodução direta",
@ -1041,7 +1041,7 @@
"HeaderPlayOn": "Reproduzir Em", "HeaderPlayOn": "Reproduzir Em",
"HeaderNextVideoPlayingInValue": "Reprodução do próximo vídeo a iniciar em {0}", "HeaderNextVideoPlayingInValue": "Reprodução do próximo vídeo a iniciar em {0}",
"HeaderNextEpisodePlayingInValue": "Reprodução do próximo episódio a iniciar em {0}", "HeaderNextEpisodePlayingInValue": "Reprodução do próximo episódio a iniciar em {0}",
"HardwareAccelerationWarning": "Ativar a aceleração por hardware pode causar instabilidade em alguns ambientes. Garanta que o sistema operativo e os controladores da placa gráfica estão completamente atualizados. Se tiver dificuldades em reproduzir vídeo depois de alterar esta opção, pode ser necessário repôr em \\\"Auto\\\".", "HardwareAccelerationWarning": "Ativar a aceleração por hardware pode causar instabilidade em alguns ambientes. Garanta que o sistema operativo e os controladores da placa gráfica estão completamente atualizados. Se tiver dificuldades em reproduzir vídeo depois de alterar esta opção, pode ser necessário repôr as definições para o parâmetro \\\"Nenhum\\\".",
"Display": "Visualização", "Display": "Visualização",
"ManageLibrary": "Gerir biblioteca", "ManageLibrary": "Gerir biblioteca",
"HeaderLibraryOrder": "Ordenação da Biblioteca", "HeaderLibraryOrder": "Ordenação da Biblioteca",
@ -1102,7 +1102,7 @@
"HeaderNewDevices": "Novos Dispositivos", "HeaderNewDevices": "Novos Dispositivos",
"HeaderRecordingOptions": "Opções de Gravação", "HeaderRecordingOptions": "Opções de Gravação",
"HeaderSortOrder": "Direção de Ordenação", "HeaderSortOrder": "Direção de Ordenação",
"LabelBaseUrlHelp": "Pode adicionar uma sub-pasta personalizada aqui para aceder ao servidor através de um URL mais direto.", "LabelBaseUrlHelp": "Adiciona uma sub-pasta personalizada ao URL do servidor. Por exemplo: <code>http://exemplo.com/<b>&lt;baseurl&gt;</b></code>",
"LabelMoviePrefixHelp": "Se aplicar um prefixo aos títulos dos filmes, introduza-o aqui para que o servidor consiga tratá-los corretamente.", "LabelMoviePrefixHelp": "Se aplicar um prefixo aos títulos dos filmes, introduza-o aqui para que o servidor consiga tratá-los corretamente.",
"LabelPleaseRestart": "As alterações produzirão efeito depois de recarregar a página web.", "LabelPleaseRestart": "As alterações produzirão efeito depois de recarregar a página web.",
"LabelRecordingPathHelp": "Especifique a localização por defeito para guardar as gravações. Se for deixado em branco, será utilizada a pasta base do servidor.", "LabelRecordingPathHelp": "Especifique a localização por defeito para guardar as gravações. Se for deixado em branco, será utilizada a pasta base do servidor.",
@ -1112,7 +1112,7 @@
"HeaderMusicQuality": "Qualidade da Música", "HeaderMusicQuality": "Qualidade da Música",
"HeaderMyDevice": "O Meu Dispositivo", "HeaderMyDevice": "O Meu Dispositivo",
"HeaderSortBy": "Ordenar Por", "HeaderSortBy": "Ordenar Por",
"LabelOptionalNetworkPathHelp": "Se esta pasta estiver partilhada na rede, fornecer o caminho de rede pode permitir aos clientes aceder diretamente aos ficheiros multimédia.", "LabelOptionalNetworkPathHelp": "Se esta pasta estiver partilhada na rede, fornecer o caminho de rede pode permitir aos clientes aceder diretamente aos ficheiros multimédia. For example, {0} or {1}.",
"LabelPersonRoleHelp": "Exemplo: motorista da carrinha de gelados", "LabelPersonRoleHelp": "Exemplo: motorista da carrinha de gelados",
"LabelPlayer": "Reprodutor:", "LabelPlayer": "Reprodutor:",
"LabelServerName": "Nome do servidor:", "LabelServerName": "Nome do servidor:",
@ -1326,7 +1326,7 @@
"No": "Não", "No": "Não",
"OptionRegex": "Expressão Regular", "OptionRegex": "Expressão Regular",
"OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)",
"NoSubtitles": " Sem legendas", "NoSubtitles": "Sem legendas",
"NoSubtitleSearchResultsFound": "Sem resultados.", "NoSubtitleSearchResultsFound": "Sem resultados.",
"NoNewDevicesFound": "Não foi encontrado nenhum dispositivo novo. Para adicionar um novo sintonizador, feche este diálogo e introduza manualmente as informações do dispositivo.", "NoNewDevicesFound": "Não foi encontrado nenhum dispositivo novo. Para adicionar um novo sintonizador, feche este diálogo e introduza manualmente as informações do dispositivo.",
"NextUp": "A Seguir", "NextUp": "A Seguir",
@ -1337,7 +1337,7 @@
"Name": "Nome", "Name": "Nome",
"MusicVideo": "Videoclip", "MusicVideo": "Videoclip",
"MusicArtist": "Artista de Música", "MusicArtist": "Artista de Música",
"MusicAlbum": " Álbum de Música", "MusicAlbum": "Álbum de Música",
"MoreMediaInfo": "Informações", "MoreMediaInfo": "Informações",
"MediaInfoBitrate": "Taxa de Bits", "MediaInfoBitrate": "Taxa de Bits",
"LabelUserAgent": "User-Agent:", "LabelUserAgent": "User-Agent:",
@ -1453,5 +1453,54 @@
"AllowFfmpegThrottling": "Reduzir Taxa de Transcodificação", "AllowFfmpegThrottling": "Reduzir Taxa de Transcodificação",
"PreferEmbeddedTitlesOverFileNamesHelp": "Determina o título a apresentar por defeito quando não é possível carregar metadados locais nem da Internet.", "PreferEmbeddedTitlesOverFileNamesHelp": "Determina o título a apresentar por defeito quando não é possível carregar metadados locais nem da Internet.",
"OptionSaveMetadataAsHiddenHelp": "Alterar esta definição apenas afetará metadados guardados futuramente. Ficheiros existentes serão atualizados assim que forem alterados pelo Servidor Jellyfin.", "OptionSaveMetadataAsHiddenHelp": "Alterar esta definição apenas afetará metadados guardados futuramente. Ficheiros existentes serão atualizados assim que forem alterados pelo Servidor Jellyfin.",
"ButtonSyncPlay": "SyncPlay" "ButtonSyncPlay": "SyncPlay",
"LabelRepositoryUrl": "URL do Repositório",
"HeaderNewRepository": "Novo Repositório",
"MessageNoRepositories": "Sem repositórios.",
"MessageUnauthorizedUser": "Não está autorizado a aceder ao servidor neste momento. Por favor contacte o administador deste servidor para informação mais detalhada.",
"LabelSyncPlayAccess": "Acesso \"SyncPlay\"",
"LabelSyncPlayAccessNone": "Desativar para este utilizador",
"LabelSyncPlayAccessJoinGroups": "Permitir utilizador a aderir a grupos",
"LabelSyncPlayAccessCreateAndJoinGroups": "Autorizar utilizadores a criar e aderir a grupos",
"LabelSyncPlayLeaveGroupDescription": "Desativar \"SyncPlay\"",
"LabelSyncPlayLeaveGroup": "Abandonar grupo",
"LabelSyncPlayNewGroupDescription": "Criar novo grupo",
"LabelSyncPlayNewGroup": "Novo grupo",
"LabelSyncPlaySyncMethod": "Método de Sincronização:",
"LabelSyncPlayPlaybackDiff": "Diferença no tempo de Reprodução:",
"MillisecondsUnit": "ms",
"LabelSyncPlayTimeOffset": "Diferença de tempo com o servidor:",
"EnableFasterAnimationsHelp": "Utilizar animações e transições mais rápidas",
"EnableFasterAnimations": "Animações Rápidas",
"LabelRequireHttpsHelp": "Se selecionado, o servidor irá automaticamente redirecionar todos os pedidos em HTTP para HTTPS. Isto não surte efeito caso o servidor não esteja configurado em HTTPS.",
"LabelRequireHttps": "Exigir HTTPS",
"LabelNightly": "\"Nightly\"",
"LabelStable": "Estável",
"LabelChromecastVersion": "Versão do \"Chromecast\"",
"LabelLibraryPageSizeHelp": "Define a quantidade de items a apresentar na página de uma Biblioteca. Para desativar a existência de paginação, introduza o valor 0.",
"LabelLibraryPageSize": "Tamanho da página da Biblioteca:",
"LabelEnableHttpsHelp": "Permite que o servidor escute na porta HTTPS configurada. Um certificado válido também deve ser configurado para que isso entre em vigor.",
"LabelEnableHttps": "Ativar HTTPS",
"LabelDeinterlaceMethod": "Método de desentrelaçamento:",
"HeaderSyncPlayEnabled": "SyncPlay ativado",
"HeaderSyncPlaySelectGroup": "Aderir a um grupo",
"HeaderServerAddressSettings": "Definições da Localização do Servidor",
"HeaderRemoteAccessSettings": "Definições do Acesso Remoto",
"HeaderHttpsSettings": "Definições de HTTPS",
"HeaderFavoritePlaylists": "Listas de Reprodução Favoritas",
"HeaderDVR": "Gravações (DVR)",
"ApiKeysCaption": "Lista das chaves de API atualmente ativadas",
"Episode": "Episódio",
"EnableDetailsBannerHelp": "Mostra uma imagem no topo da página dos detalhes do item.",
"EnableDetailsBanner": "Cartaz de Detalhes",
"EnableDecodingColorDepth10Vp9": "Ativar descodificação de hardware de 10-Bits para VP9",
"EnableDecodingColorDepth10Hevc": "Ativar descodificação de hardware de 10-Bits para HEVC",
"DeinterlaceMethodHelp": "Selecionar um método de desentrelaçamento para converter conteúdo entrelaçado.",
"ClientSettings": "Definições do Cliente",
"ButtonTogglePlaylist": "Lista de Reprodução",
"ButtonToggleContextMenu": "Mais",
"BoxSet": "Coleção",
"Artist": "Artista",
"AlbumArtist": "Artista do Álbum",
"Album": "Álbum"
} }

View file

@ -669,7 +669,7 @@
"LabelMaxResumePercentageHelp": "Произведения предполагаются воспроизведёнными полностью, при остановке с данного момента.", "LabelMaxResumePercentageHelp": "Произведения предполагаются воспроизведёнными полностью, при остановке с данного момента.",
"LabelMaxScreenshotsPerItem": "Макс. число снимков экрана на элемент:", "LabelMaxScreenshotsPerItem": "Макс. число снимков экрана на элемент:",
"LabelMaxStreamingBitrate": "Макс. качество трансляции:", "LabelMaxStreamingBitrate": "Макс. качество трансляции:",
"LabelMaxStreamingBitrateHelp": "Укажите макс. потоковую скорость трансляции.", "LabelMaxStreamingBitrateHelp": "Укажите максимальный битрейт трансляции.",
"LabelMessageText": "Текст сообщения:", "LabelMessageText": "Текст сообщения:",
"LabelMessageTitle": "Заголовок сообщения:", "LabelMessageTitle": "Заголовок сообщения:",
"LabelMetadata": "Метаданные:", "LabelMetadata": "Метаданные:",
@ -697,8 +697,8 @@
"LabelMoviePrefix": "Префикс фильма:", "LabelMoviePrefix": "Префикс фильма:",
"LabelMoviePrefixHelp": "При применении к названиям фильмов префикса, введите его здесь, чтобы он правильно обрабатывался на сервере.", "LabelMoviePrefixHelp": "При применении к названиям фильмов префикса, введите его здесь, чтобы он правильно обрабатывался на сервере.",
"LabelMovieRecordingPath": "Путь к записываемым фильмам (необязательно):", "LabelMovieRecordingPath": "Путь к записываемым фильмам (необязательно):",
"LabelMusicStreamingTranscodingBitrate": "Поток. скорость перекодировки музыки:", "LabelMusicStreamingTranscodingBitrate": "Битрейт перекодировки музыки:",
"LabelMusicStreamingTranscodingBitrateHelp": "Укажите максимальную потоковую скорость при трансляции музыки.", "LabelMusicStreamingTranscodingBitrateHelp": "Укажите максимальный битрейт при трансляции музыки.",
"LabelName": "Имя:", "LabelName": "Имя:",
"LabelNewName": "Новое название:", "LabelNewName": "Новое название:",
"LabelNewPassword": "Новый пароль:", "LabelNewPassword": "Новый пароль:",
@ -752,8 +752,8 @@
"LabelRecordingPathHelp": "Укажите стандартное расположение для сохранения записей. Если поле пусто, то используется папка program data сервера.", "LabelRecordingPathHelp": "Укажите стандартное расположение для сохранения записей. Если поле пусто, то используется папка program data сервера.",
"LabelRefreshMode": "Режим обновления:", "LabelRefreshMode": "Режим обновления:",
"LabelReleaseDate": "Дата выпуска:", "LabelReleaseDate": "Дата выпуска:",
"LabelRemoteClientBitrateLimit": "Предел потоковой скорости интернет-трансляции, Мбит/с:", "LabelRemoteClientBitrateLimit": "Ограничение битрейта интернет-трансляции, Мбит/с:",
"LabelRemoteClientBitrateLimitHelp": "Необязательный предел скорости на поток для каждого из сетевых устройств. Это целесообразно, чтобы не допускать запрашивание устройствами более высокой скорости, чем способно пропустить интернет-соединение. Это может привести к увеличению загрузки процессора на вашем сервере, при динамическом перекодировании видео до более низкой скорости.", "LabelRemoteClientBitrateLimitHelp": "Необязательное ограничение битрейта для каждого из сетевых устройств. Может потребоваться, чтобы не допускать использования устройствами большего битрейта, чем способно пропустить интернет-соединение. Может привести к росту загрузки процессора на вашем сервере, так как потребуется динамическое перекодирование видео для снижения битрейта.",
"LabelRuntimeMinutes": "Длительность, мин:", "LabelRuntimeMinutes": "Длительность, мин:",
"LabelSaveLocalMetadata": "Сохранять иллюстрации внутри медиапапок", "LabelSaveLocalMetadata": "Сохранять иллюстрации внутри медиапапок",
"LabelSaveLocalMetadataHelp": "При сохранении иллюстраций внутри медиапапок, те помещаются в месте, где их можно легко править.", "LabelSaveLocalMetadataHelp": "При сохранении иллюстраций внутри медиапапок, те помещаются в месте, где их можно легко править.",
@ -824,7 +824,7 @@
"LabelUserAgent": "Агент пользователя:", "LabelUserAgent": "Агент пользователя:",
"LabelUserLibrary": "Медиатека пользователя:", "LabelUserLibrary": "Медиатека пользователя:",
"LabelUserLibraryHelp": "Выберите, чью медиатеку отображать на устройстве. Не заполняйте, чтобы наследовать параметр по умолчанию.", "LabelUserLibraryHelp": "Выберите, чью медиатеку отображать на устройстве. Не заполняйте, чтобы наследовать параметр по умолчанию.",
"LabelUserRemoteClientBitrateLimitHelp": "Переопределияются глобальные значения по умолчанию, установленные в параметрах воспроизведения сервера.", "LabelUserRemoteClientBitrateLimitHelp": "Переопределяются глобальные значения по умолчанию, установленные в параметрах воспроизведения сервера.",
"LabelUsername": "Имя пользователя:", "LabelUsername": "Имя пользователя:",
"LabelVaapiDevice": "Устройство VA-API:", "LabelVaapiDevice": "Устройство VA-API:",
"LabelVaapiDeviceHelp": "Это является узлом отрисовки, который используется для аппаратного ускорения.", "LabelVaapiDeviceHelp": "Это является узлом отрисовки, который используется для аппаратного ускорения.",
@ -864,7 +864,7 @@
"MediaInfoAnamorphic": "Анаморфность", "MediaInfoAnamorphic": "Анаморфность",
"MediaInfoAspectRatio": "Соотношение сторон", "MediaInfoAspectRatio": "Соотношение сторон",
"MediaInfoBitDepth": "Глубина цвета", "MediaInfoBitDepth": "Глубина цвета",
"MediaInfoBitrate": "Поток. ск-ть", "MediaInfoBitrate": "Битрейт",
"MediaInfoChannels": "Каналы", "MediaInfoChannels": "Каналы",
"MediaInfoCodec": "Кодек", "MediaInfoCodec": "Кодек",
"MediaInfoCodecTag": "Тег кодека", "MediaInfoCodecTag": "Тег кодека",
@ -1431,7 +1431,7 @@
"LabelPlayer": "Проигрыватель:", "LabelPlayer": "Проигрыватель:",
"MoreMediaInfo": "О медиаданных", "MoreMediaInfo": "О медиаданных",
"LabelVideoCodec": "Видео кодек:", "LabelVideoCodec": "Видео кодек:",
"LabelVideoBitrate": "Потоковая скорость аудио:", "LabelVideoBitrate": "Битрейт видео:",
"LabelTranscodingProgress": "Прогресс перекодировки:", "LabelTranscodingProgress": "Прогресс перекодировки:",
"LabelTranscodingFramerate": "Частота кадров перекодировки:", "LabelTranscodingFramerate": "Частота кадров перекодировки:",
"LabelSize": "Размер:", "LabelSize": "Размер:",
@ -1442,7 +1442,7 @@
"LabelAudioSampleRate": "Частота дискретизации аудио:", "LabelAudioSampleRate": "Частота дискретизации аудио:",
"LabelAudioCodec": "Аудио кодек:", "LabelAudioCodec": "Аудио кодек:",
"LabelAudioChannels": "Аудио каналы:", "LabelAudioChannels": "Аудио каналы:",
"LabelAudioBitrate": "Потоковая скорость аудио:", "LabelAudioBitrate": "Битрейт аудио:",
"LabelAudioBitDepth": "Битовая глубина аудио:", "LabelAudioBitDepth": "Битовая глубина аудио:",
"HeaderFavoriteBooks": "Избранные книги", "HeaderFavoriteBooks": "Избранные книги",
"CopyStreamURL": "Копировать URL потока", "CopyStreamURL": "Копировать URL потока",
@ -1532,7 +1532,7 @@
"MessageSyncPlayGroupDoesNotExist": "Не удалось присоединиться к группе, поскольку она не существует.", "MessageSyncPlayGroupDoesNotExist": "Не удалось присоединиться к группе, поскольку она не существует.",
"MessageSyncPlayPlaybackPermissionRequired": "Требуется разрешение на воспроизведение.", "MessageSyncPlayPlaybackPermissionRequired": "Требуется разрешение на воспроизведение.",
"MessageSyncPlayNoGroupsAvailable": "Никакие группы не доступны. Сначала начните воспроизводить что-нибудь.", "MessageSyncPlayNoGroupsAvailable": "Никакие группы не доступны. Сначала начните воспроизводить что-нибудь.",
"MessageSyncPlayGroupWait": "<b>{0}</b> буферизуется...", "MessageSyncPlayGroupWait": "<b>{0}</b> буферизуется",
"MessageSyncPlayUserLeft": "<b>{0}</b> покинул группу.", "MessageSyncPlayUserLeft": "<b>{0}</b> покинул группу.",
"MessageSyncPlayUserJoined": "<b>{0}</b> присоединил группу.", "MessageSyncPlayUserJoined": "<b>{0}</b> присоединил группу.",
"LabelSyncPlayAccessNone": "Отключено для данного пользователя", "LabelSyncPlayAccessNone": "Отключено для данного пользователя",

View file

@ -1528,7 +1528,7 @@
"MessageSyncPlayGroupDoesNotExist": "Pripojenie ku skupine zlyhalo, pretože skupina neexistuje.", "MessageSyncPlayGroupDoesNotExist": "Pripojenie ku skupine zlyhalo, pretože skupina neexistuje.",
"MessageSyncPlayPlaybackPermissionRequired": "K prehrávaniu je potrebné povolenie.", "MessageSyncPlayPlaybackPermissionRequired": "K prehrávaniu je potrebné povolenie.",
"MessageSyncPlayNoGroupsAvailable": "Nie je dostupná žiadna skupina. Skúste najskôr začať niečo prehrávať.", "MessageSyncPlayNoGroupsAvailable": "Nie je dostupná žiadna skupina. Skúste najskôr začať niečo prehrávať.",
"MessageSyncPlayGroupWait": "Prehrávanie používateľa <b>{0}</b> sa načítava...", "MessageSyncPlayGroupWait": "<b>{0}</b> sa načítava…",
"MessageSyncPlayUserLeft": "Používateľ <b>{0}</b> opustil skupinu.", "MessageSyncPlayUserLeft": "Používateľ <b>{0}</b> opustil skupinu.",
"MessageSyncPlayUserJoined": "Používateľ <b>{0}</b> sa pripojil k skupine.", "MessageSyncPlayUserJoined": "Používateľ <b>{0}</b> sa pripojil k skupine.",
"MessageSyncPlayDisabled": "SyncPlay zakázaný.", "MessageSyncPlayDisabled": "SyncPlay zakázaný.",

View file

@ -85,7 +85,7 @@
"AllowMediaConversion": "Dovoli pretvarjanje predstavnosti", "AllowMediaConversion": "Dovoli pretvarjanje predstavnosti",
"AllowMediaConversionHelp": "Dovoli ali zavrni dostop do pretvarjanja predstavnosti.", "AllowMediaConversionHelp": "Dovoli ali zavrni dostop do pretvarjanja predstavnosti.",
"AllowOnTheFlySubtitleExtraction": "Dovoli sprotno izluščenje podnapisov", "AllowOnTheFlySubtitleExtraction": "Dovoli sprotno izluščenje podnapisov",
"AllowOnTheFlySubtitleExtractionHelp": "Vdelani podnapisi so lahko izluščeni iz videa in poslani odjemalcem kot navaden tekst, kar zmanjša potrebo po prekodiranju. Na nekaterih napravah lahko to traja dalj časa in povzroča zatikanje med predvajanjem. Onemogočite, za vžig vdelanih podnapisov v video med prekodiranjem, za naprave ki ne podpirajo podnapisov.", "AllowOnTheFlySubtitleExtractionHelp": "Vdelani podnapisi so lahko izluščeni iz videa in poslani odjemalcem kot navaden tekst, kar zmanjša potrebo po prekodiranju. Na nekaterih napravah lahko to traja dalj časa in povzroča zatikanje med predvajanjem. Onemogočite to možnost, za vžig vdelanih podnapisov v video s prekodiranjem, za naprave ki sicer ne podpirajo podnapisov.",
"AllowRemoteAccess": "Dovoli oddaljene povezave s tem Jellyfin strežnikom.", "AllowRemoteAccess": "Dovoli oddaljene povezave s tem Jellyfin strežnikom.",
"AllowRemoteAccessHelp": "Če ni označeno, bodo vse oddaljene povezave blokirane.", "AllowRemoteAccessHelp": "Če ni označeno, bodo vse oddaljene povezave blokirane.",
"Artists": "Izvajalci", "Artists": "Izvajalci",
@ -105,12 +105,12 @@
"Movies": "Filmi", "Movies": "Filmi",
"AddItemToCollectionHelp": "Dodajte elemente v zbirke tako, da jih poiščete in jih z desnim klikom ali dotikom menija dodate v zbirko.", "AddItemToCollectionHelp": "Dodajte elemente v zbirke tako, da jih poiščete in jih z desnim klikom ali dotikom menija dodate v zbirko.",
"AllowedRemoteAddressesHelp": "Z vejico ločen seznam IP naslovov ali IP/maska omrežij, ki jim je dovoljen oddaljeni dostop. Če pustite prazno, bodo dovoljeni vsi oddaljeni naslovi.", "AllowedRemoteAddressesHelp": "Z vejico ločen seznam IP naslovov ali IP/maska omrežij, ki jim je dovoljen oddaljeni dostop. Če pustite prazno, bodo dovoljeni vsi oddaljeni naslovi.",
"AlwaysPlaySubtitles": "Vedno predvajaj podnapise", "AlwaysPlaySubtitles": "Vedno prikaži",
"AlwaysPlaySubtitlesHelp": "Podnapisi, ki se ujemajo s prednostnim jezikom bodo naloženi ne glede na jezik zvoka.", "AlwaysPlaySubtitlesHelp": "Podnapisi, ki se ujemajo s prednostnim jezikom bodo naloženi ne glede na jezik zvoka.",
"AnamorphicVideoNotSupported": "Anamorfni video ni podprt", "AnamorphicVideoNotSupported": "Anamorfni video ni podprt",
"AnyLanguage": "Poljubni jezik", "AnyLanguage": "Poljubni jezik",
"Anytime": "Kadarkoli", "Anytime": "Kadarkoli",
"AroundTime": "Okrog {0}", "AroundTime": "Okrog",
"Art": "Umetnost", "Art": "Umetnost",
"AsManyAsPossible": "Kolikor je mogoče", "AsManyAsPossible": "Kolikor je mogoče",
"Ascending": "Naraščajoče", "Ascending": "Naraščajoče",
@ -131,12 +131,12 @@
"BirthDateValue": "Rojen: {0}", "BirthDateValue": "Rojen: {0}",
"BirthLocation": "Kraj rojstva", "BirthLocation": "Kraj rojstva",
"BirthPlaceValue": "Kraj rojstva: {0}", "BirthPlaceValue": "Kraj rojstva: {0}",
"BookLibraryHelp": "Zvočne in e-knjige so podprte. Preglej {0}navodila za poimenovanje knjig{0}.", "BookLibraryHelp": "Zvočne in e-knjige so podprte. Preglejte {0} napotke za poimenovanje knjig {1}.",
"Box": "Ovitek", "Box": "Ovitek",
"BoxRear": "Ovitek (zadnja stran)", "BoxRear": "Ovitek (zadnja stran)",
"Browse": "Brskaj", "Browse": "Brskaj",
"BrowsePluginCatalogMessage": "Poišči razpoložljive dodatke v našem katalogu.", "BrowsePluginCatalogMessage": "Poišči razpoložljive dodatke v našem katalogu.",
"BurnSubtitlesHelp": "Na podlagi formata podnapisov določi, ali naj strežnik vžge podnapise pri pretvarjanju videa. Izogibanje vžiganju podnapisov izboljša delovanje strežnika. Izberi Samodejno za vžig slikovnih formatov podnapisov (VOBSUB, PGS, SUB/IDX, itd.) in nekaterih ASS/SSA podnapisov.", "BurnSubtitlesHelp": "Določi ali naj strežnik vžge podnapise pri prekodiranju videa. Izogibanje temu lahko občutno izboljša delovanje strežnika. Izberite Samodejno za vžig slikovnih formatov podnapisov (VOBSUB, PGS, SUB, IDX, ...) in nekaterih ASS oziroma SSA podnapisov.",
"ButtonAccept": "Sprejmi", "ButtonAccept": "Sprejmi",
"ButtonAdd": "Dodaj", "ButtonAdd": "Dodaj",
"MessageNamedServerConfigurationUpdatedWithValue": "Oddelek nastavitve strežnika {0} je bil posodobljen", "MessageNamedServerConfigurationUpdatedWithValue": "Oddelek nastavitve strežnika {0} je bil posodobljen",
@ -288,7 +288,7 @@
"ValueSpecialEpisodeName": "Poseben - {0}", "ValueSpecialEpisodeName": "Poseben - {0}",
"Shows": "Serije", "Shows": "Serije",
"DoNotRecord": "Ne snemaj", "DoNotRecord": "Ne snemaj",
"DisplayModeHelp": "Izberite tip zaslona na katerem uporabljate Jellyfin.", "DisplayModeHelp": "Izberite želeno razporeditev uporabniškega vmesnika.",
"DisplayMissingEpisodesWithinSeasonsHelp": "To mora biti omogočeno tudi za TV knjižnice v nastavitvah strežnika.", "DisplayMissingEpisodesWithinSeasonsHelp": "To mora biti omogočeno tudi za TV knjižnice v nastavitvah strežnika.",
"DisplayMissingEpisodesWithinSeasons": "Prikaži manjkajoče epizode znotraj sezon", "DisplayMissingEpisodesWithinSeasons": "Prikaži manjkajoče epizode znotraj sezon",
"DisplayInOtherHomeScreenSections": "Prikaži na razdelkih domačega zaslona kot so najnovejše in nadaljuj gledanje", "DisplayInOtherHomeScreenSections": "Prikaži na razdelkih domačega zaslona kot so najnovejše in nadaljuj gledanje",
@ -311,7 +311,7 @@
"HeaderSeasons": "Sezone", "HeaderSeasons": "Sezone",
"HeaderSchedule": "Urnik", "HeaderSchedule": "Urnik",
"HeaderScenes": "Scene", "HeaderScenes": "Scene",
"HeaderRunningTasks": "Aktivni procesi", "HeaderRunningTasks": "Aktivna opravila",
"HeaderRestart": "Ponovni zagon", "HeaderRestart": "Ponovni zagon",
"HeaderResponseProfileHelp": "Profili odziva omogočajo prilagoditev informacij poslanih sprejemniku pri predvajanju določenih vrst predstavnosti.", "HeaderResponseProfileHelp": "Profili odziva omogočajo prilagoditev informacij poslanih sprejemniku pri predvajanju določenih vrst predstavnosti.",
"HeaderResponseProfile": "Profil odziva", "HeaderResponseProfile": "Profil odziva",
@ -336,7 +336,7 @@
"HeaderPasswordReset": "Ponastavi geslo", "HeaderPasswordReset": "Ponastavi geslo",
"HeaderPassword": "Geslo", "HeaderPassword": "Geslo",
"HeaderParentalRatings": "Ocena za starše", "HeaderParentalRatings": "Ocena za starše",
"HeaderOnNow": "Zdaj", "HeaderOnNow": "Trenutno",
"HeaderNextVideoPlayingInValue": "Naslednji video se bo predvajal čez {0}", "HeaderNextVideoPlayingInValue": "Naslednji video se bo predvajal čez {0}",
"HeaderNextEpisodePlayingInValue": "Naslednja epizoda se bo predvajala čez {0}", "HeaderNextEpisodePlayingInValue": "Naslednja epizoda se bo predvajala čez {0}",
"HeaderNewDevices": "Nove naprave", "HeaderNewDevices": "Nove naprave",
@ -393,21 +393,21 @@
"HeaderEditImages": "Uredi slike", "HeaderEditImages": "Uredi slike",
"HeaderDownloadSync": "Prenos in sinhronizacija", "HeaderDownloadSync": "Prenos in sinhronizacija",
"HeaderDisplay": "Prikaz", "HeaderDisplay": "Prikaz",
"HeaderDirectPlayProfileHelp": "Dodaj profil za neposredno predvajanje in določi katere formate naprava podpira", "HeaderDirectPlayProfileHelp": "Dodaj profil za neposredno predvajanje in določi katere formate naprava podpira.",
"HeaderDirectPlayProfile": "Profil za neposredno predvajanje", "HeaderDirectPlayProfile": "Profil za neposredno predvajanje",
"HeaderDevices": "Naprave", "HeaderDevices": "Naprave",
"HeaderDeveloperInfo": "Informacije o razvijalcu", "HeaderDeveloperInfo": "Informacije o razvijalcu",
"HeaderDetectMyDevices": "Zaznaj moje naprave", "HeaderDetectMyDevices": "Zaznaj moje naprave",
"HeaderDeleteTaskTrigger": "Izbriši sprožilec opravila", "HeaderDeleteTaskTrigger": "Izbriši sprožilec opravila",
"HeaderDeleteProvider": "Izbriši ponudnika", "HeaderDeleteProvider": "Izbriši ponudnika",
"HeaderDeleteItems": "Izbriši predmete", "HeaderDeleteItems": "Izbriši vsebine",
"HeaderDeleteItem": "Izbriši predmet", "HeaderDeleteItem": "Izbriši vsebino",
"HeaderDeleteDevice": "Izbriši napravo", "HeaderDeleteDevice": "Izbriši napravo",
"HeaderDefaultRecordingSettings": "Privzete nastavitve snemanja", "HeaderDefaultRecordingSettings": "Privzete nastavitve snemanja",
"HeaderDateIssued": "Datum izdaje", "HeaderDateIssued": "Datum izdaje",
"HeaderCustomDlnaProfiles": "Profili po meri", "HeaderCustomDlnaProfiles": "Profili po meri",
"HeaderContinueListening": "Nadaljuj s poslušanjem", "HeaderContinueListening": "Nadaljuj s poslušanjem",
"HeaderConnectionFailure": "Napaka pri povezovanju", "HeaderConnectionFailure": "Napaka povezave",
"HeaderConnectToServer": "Poveži s strežnikom", "HeaderConnectToServer": "Poveži s strežnikom",
"HeaderConfirmRevokeApiKey": "Prekliči API ključ", "HeaderConfirmRevokeApiKey": "Prekliči API ključ",
"HeaderConfirmProfileDeletion": "Potrdi brisanje profila", "HeaderConfirmProfileDeletion": "Potrdi brisanje profila",
@ -649,7 +649,7 @@
"LabelEnableDlnaClientDiscoveryInterval": "Interval odkrivanja sprejemnikov (sekunde)", "LabelEnableDlnaClientDiscoveryInterval": "Interval odkrivanja sprejemnikov (sekunde)",
"LabelEnableBlastAliveMessagesHelp": "Omogočite, če imajo UPnP naprave težave z zaznavanjem strežnika v omrežju.", "LabelEnableBlastAliveMessagesHelp": "Omogočite, če imajo UPnP naprave težave z zaznavanjem strežnika v omrežju.",
"LabelEnableBlastAliveMessages": "Oddajaj sporočila o dostopnosti", "LabelEnableBlastAliveMessages": "Oddajaj sporočila o dostopnosti",
"LabelEnableAutomaticPortMapHelp": "Poskuša avtomatično povezati javna vrata z lokalnimi preko UPnP. To ne deluje z nekaterimi usmerjevalniki. Spremembe bodo uveljavljene po ponovnem zagonu strežnika.", "LabelEnableAutomaticPortMapHelp": "Avtomatično posreduje javna vrata na vašem usmerjevalnuku z lokalnimi vrati strežnika preko UPnP. To ne deluje z nekaterimi usmerjevalniki ali omrežnimi nastavitvami. Spremembe bodo uveljavljene po ponovnem zagonu strežnika.",
"LabelEnableAutomaticPortMap": "Omogoči avtomatično mapiranje vrat", "LabelEnableAutomaticPortMap": "Omogoči avtomatično mapiranje vrat",
"LabelEmbedAlbumArtDidl": "Vdelaj grafike albuma v Didl", "LabelEmbedAlbumArtDidl": "Vdelaj grafike albuma v Didl",
"LabelEasyPinCode": "Enostavna PIN koda:", "LabelEasyPinCode": "Enostavna PIN koda:",
@ -662,7 +662,7 @@
"LabelDisplayName": "Prikazano ime:", "LabelDisplayName": "Prikazano ime:",
"LabelDisplayMode": "Način prikaza:", "LabelDisplayMode": "Način prikaza:",
"LabelBindToLocalNetworkAddressHelp": "Neobvezno. Preglasi lokalni IP naslov za povezavo s HTTP strežnikom. V kolikor pustite prazno se strežnik poveže z vsemi možnimi naslovi. Sprememba vrednosti zahteva ponovni zagon Jellyfin strežnika.", "LabelBindToLocalNetworkAddressHelp": "Neobvezno. Preglasi lokalni IP naslov za povezavo s HTTP strežnikom. V kolikor pustite prazno se strežnik poveže z vsemi možnimi naslovi. Sprememba vrednosti zahteva ponovni zagon Jellyfin strežnika.",
"InstallingPackage": "Nameščanje {0}", "InstallingPackage": "Nameščanje {0} (različica {1})",
"ImportMissingEpisodesHelp": "Če je omogočeno, bodo podatki o manjkajočih epizodah dodani v Jellyfin bazo podatkov in prikazani znotraj sezon in serij. To lahko občutno podaljša uvoz v knjižnjico.", "ImportMissingEpisodesHelp": "Če je omogočeno, bodo podatki o manjkajočih epizodah dodani v Jellyfin bazo podatkov in prikazani znotraj sezon in serij. To lahko občutno podaljša uvoz v knjižnjico.",
"ImportFavoriteChannelsHelp": "Če je omogočeno, bodo uvoženi zgolj kanali, ki so na sprejemniku označeni kot priljubljeni.", "ImportFavoriteChannelsHelp": "Če je omogočeno, bodo uvoženi zgolj kanali, ki so na sprejemniku označeni kot priljubljeni.",
"LabelEnableDlnaServerHelp": "Omogoči UPnP napravam v omrežju da brskajo in predvajajo vsebine.", "LabelEnableDlnaServerHelp": "Omogoči UPnP napravam v omrežju da brskajo in predvajajo vsebine.",
@ -762,7 +762,7 @@
"LabelKodiMetadataEnablePathSubstitutionHelp": "Omogoči zamenjavo poti za poti slik glede na nastavitve zamenjave poti strežnika.", "LabelKodiMetadataEnablePathSubstitutionHelp": "Omogoči zamenjavo poti za poti slik glede na nastavitve zamenjave poti strežnika.",
"LabelKodiMetadataSaveImagePaths": "Shrani poti slik znotraj nfo datotek", "LabelKodiMetadataSaveImagePaths": "Shrani poti slik znotraj nfo datotek",
"LabelMetadataDownloadersHelp": "Omogoči in uredi želene vire metapodatkov po prioriteti. Viri z nižjo prioriteto bodo uporabljeni zgolj za dopolnjevanje manjkajočih informacij.", "LabelMetadataDownloadersHelp": "Omogoči in uredi želene vire metapodatkov po prioriteti. Viri z nižjo prioriteto bodo uporabljeni zgolj za dopolnjevanje manjkajočih informacij.",
"LabelBaseUrlHelp": "Tukaj lahko dodate podmapo po meri, za dostop do strežnika z bolj unikatnega URL naslova.", "LabelBaseUrlHelp": "Doda podnaslov po meri na konec URL-ja strežnika. Na primer: <code>http://example.com/<b>&lt;baseurl&gt;</b></code>",
"LabelExtractChaptersDuringLibraryScanHelp": "Ustvari slike poglavij med uvozom videov pri preiskovanju knjižnjice. Sicer bodo ustvarjene med načrtovanim opravilom, kar omogoča hitrejše preiskovanje knjižnjice.", "LabelExtractChaptersDuringLibraryScanHelp": "Ustvari slike poglavij med uvozom videov pri preiskovanju knjižnjice. Sicer bodo ustvarjene med načrtovanim opravilom, kar omogoča hitrejše preiskovanje knjižnjice.",
"LabelForgotPasswordUsernameHelp": "Vpišite svoje uporabniško ime, v kolikor se ga spomnite.", "LabelForgotPasswordUsernameHelp": "Vpišite svoje uporabniško ime, v kolikor se ga spomnite.",
"LabelInNetworkSignInWithEasyPasswordHelp": "Uporabi enostavno PIN kodo za prijavo v naprave znotraj lokalnega omrežja. Vaše geslo bo potrebno zgolj za prijave zunaj domačega omrežja. Če pustite prazno, za prijavo v domačem omrežju omrežju ne boste potrebovali gesla.", "LabelInNetworkSignInWithEasyPasswordHelp": "Uporabi enostavno PIN kodo za prijavo v naprave znotraj lokalnega omrežja. Vaše geslo bo potrebno zgolj za prijave zunaj domačega omrežja. Če pustite prazno, za prijavo v domačem omrežju omrežju ne boste potrebovali gesla.",
@ -853,7 +853,7 @@
"Quality": "Kvaliteta", "Quality": "Kvaliteta",
"PlaceFavoriteChannelsAtBeginning": "Postavi priljubljene kanale na začetek", "PlaceFavoriteChannelsAtBeginning": "Postavi priljubljene kanale na začetek",
"LabelOptionalNetworkPath": "(Neobvezno) Omrežna mapa:", "LabelOptionalNetworkPath": "(Neobvezno) Omrežna mapa:",
"LabelOptionalNetworkPathHelp": "V primeru, da je mapa deljena v vašem omrežju, lahko Jellyfin deli omrežno pot z ostalimi napravami in jim omogoči neposreden dostop do predstavnosti.", "LabelOptionalNetworkPathHelp": "V primeru, da je mapa deljena v vašem omrežju, lahko Jellyfin deli omrežno pot z ostalimi napravami in jim omogoči neposreden dostop do vsebin. Na primer {0} ali {1}.",
"LabelRemoteClientBitrateLimitHelp": "Neobvezna omejitev bitne hitrosti na posamezno predvajanje za vse naprave izven domačega omrežja. S tem lahko preprečite, da bi naprave zahtevale višjo bitno hitrost predvajanja, kot jo lahko prenese vaše omrežje. To lahko poveča obremenitev CPU-ja, saj bo morda potrebno sprotno prekodiranje za zmanjšanje bitne hitrosti.", "LabelRemoteClientBitrateLimitHelp": "Neobvezna omejitev bitne hitrosti na posamezno predvajanje za vse naprave izven domačega omrežja. S tem lahko preprečite, da bi naprave zahtevale višjo bitno hitrost predvajanja, kot jo lahko prenese vaše omrežje. To lahko poveča obremenitev CPU-ja, saj bo morda potrebno sprotno prekodiranje za zmanjšanje bitne hitrosti.",
"LanNetworksHelp": "Z vejico ločen seznam IP naslovov ali IP/maska omrežji, ki bodo upoštevana kot lokalna pri uveljavljanju omejitev pasovne širine. Če nastavite, se bodo vsi ostali naslovi upoštevali kot zunanji in bodo predmet omejitve pasovne širine. Če pustite prazno, bo kot lokalno omrežje upoštevano zgolj omrežje strežnika.", "LanNetworksHelp": "Z vejico ločen seznam IP naslovov ali IP/maska omrežji, ki bodo upoštevana kot lokalna pri uveljavljanju omejitev pasovne širine. Če nastavite, se bodo vsi ostali naslovi upoštevali kot zunanji in bodo predmet omejitve pasovne širine. Če pustite prazno, bo kot lokalno omrežje upoštevano zgolj omrežje strežnika.",
"MessageDirectoryPickerInstruction": "Omrežne poti lahko vnesete ročno, v kolikor gumb Omrežje ne uspe najti vaših naprav. Primer {0} ali {1}.", "MessageDirectoryPickerInstruction": "Omrežne poti lahko vnesete ročno, v kolikor gumb Omrežje ne uspe najti vaših naprav. Primer {0} ali {1}.",
@ -1276,5 +1276,56 @@
"EnableDetailsBannerHelp": "Prikaži sliko pasice na vrhu strani podrobnosti.", "EnableDetailsBannerHelp": "Prikaži sliko pasice na vrhu strani podrobnosti.",
"EnableDetailsBanner": "Pasica podrobnosti", "EnableDetailsBanner": "Pasica podrobnosti",
"DeinterlaceMethodHelp": "Izberite način razpletanja pri prekodiranju prepletenih vsebin.", "DeinterlaceMethodHelp": "Izberite način razpletanja pri prekodiranju prepletenih vsebin.",
"ButtonSyncPlay": "SyncPlay" "ButtonSyncPlay": "SyncPlay",
"LabelDynamicExternalId": "{0} Id:",
"LabelDroppedFrames": "Izpuščene sličice:",
"LabelDeinterlaceMethod": "Način razpletanja:",
"LabelCorruptedFrames": "Poškodovane sličice:",
"LabelBlockContentWithTags": "Blokiraj vsebine z oznakami:",
"LabelAlbumArtHelp": "PN se uporablja za grafiko albuma znotraj atributa dlna:profileID na upnp:albumArtURI. Nekatere naprave zahtevajo specifično vrednost, ne gledena velikost slike.",
"InstantMix": "Hitri miks",
"HeaderSyncPlayEnabled": "SyncPlay je omogočen",
"HeaderSyncPlaySelectGroup": "Pridruži se skupini",
"HeaderServerAddressSettings": "Nastavitve naslova strežnika",
"HeaderRemoteAccessSettings": "Nastavitve oddaljenega dostopa",
"HeaderOtherItems": "Ostale vsebine",
"HeaderNavigation": "Navigacija",
"HeaderItems": "Vsebine",
"EnableDecodingColorDepth10Vp9": "Omogoči strojno dekodiranje za 10-bit VP9",
"EnableDecodingColorDepth10Hevc": "Omogoči strojno dekodiranje za 10-bit HEVC",
"LabelEnableHttpsHelp": "Omogoči strežniku, da posluša na nastavljenih HTTPS vratih. Za uveljavitev te možnosti mora biti nastavljen tudi veljaven certifikat.",
"LabelEnableHttps": "Omogoči HTTPS",
"LabelEmbedAlbumArtDidlHelp": "Nekatere naprave delujejo bolje s tem načinom pridobivanja grafike albuma. Pri drugih predvajanje morda ne bo delovalo v tem načinu.",
"MessageReenableUser": "Za ponovno omogočanje poglejte spodaj",
"MessageNoGenresAvailable": "Omogočite nekatere ponudnike metapodatkov za pridobivanje žanrov s spleta.",
"MessageAddRepository": "Če želite dodati repozitorij, kliknite gumb poleg glave in vnesite zahtevane podatke.",
"LabelRepositoryNameHelp": "Ime po meri za razlikovanje od drugih repozitorijev v vašem strežniku.",
"LabelRepositoryName": "Ime repozitorija",
"LabelRepositoryUrlHelp": "Lokacija manifesta repozitorija, ki ga želite dodati.",
"LabelRepositoryUrl": "URL repozitorija",
"HeaderNewRepository": "Nov repozitorij",
"MessageNoRepositories": "Ni repozitorijev.",
"MessageUnauthorizedUser": "Trenutno nimate dovoljenja za dostop do tega strežnika. Kontaktirajte skrbnika strežnika za več informacij.",
"MediaInfoAspectRatio": "Razmerje stranic",
"MediaInfoAnamorphic": "Anamorfno",
"MaxParentalRatingHelp": "Vsebine z višjo oceno bodo za tega uporabnika skrite.",
"MarkUnplayed": "Označi kot nepredvajano",
"MarkPlayed": "Označi kot predvajano",
"MapChannels": "Uredi programe",
"ManageRecording": "Upravljaj posnetke",
"ManageLibrary": "Upravljaj knjižnico",
"Logo": "Logo",
"LiveBroadcasts": "Prenosi v živo",
"Live": "V živo",
"List": "Seznam",
"LabelUserAgent": "Uporabniški agent:",
"EnableFasterAnimationsHelp": "Uporabi hitrejše animacije in prehode",
"EnableFasterAnimations": "Hitrejše animacije",
"LabelNightly": "Nestabilna",
"LabelStable": "Stabilna",
"LabelChromecastVersion": "Različica Chromecast",
"LabelLibraryPageSizeHelp": "Nastavi število prikazanih vsebin na strani knjižnice. Nastavite na 0 za neskončno dolgo stran.",
"LabelLibraryPageSize": "Velikost strani knjižnice:",
"LabelKodiMetadataEnableExtraThumbsHelp": "Pri prenašanju slik so le te lahko shranjene v tako extrafanart in extrathumbs polji za največjo kompatibilnost s Kodi preoblekami.",
"LabelKodiMetadataEnableExtraThumbs": "Kopiraj extrafanart v polje extrathumbs"
} }

View file

@ -1518,5 +1518,8 @@
"LabelStable": "Stabil", "LabelStable": "Stabil",
"HeaderSyncPlaySelectGroup": "Gå med i en grupp", "HeaderSyncPlaySelectGroup": "Gå med i en grupp",
"EnableDecodingColorDepth10Vp9": "Aktivera 10-Bitars hårdvaru avcodning för VP9", "EnableDecodingColorDepth10Vp9": "Aktivera 10-Bitars hårdvaru avcodning för VP9",
"EnableDecodingColorDepth10Hevc": "Aktivera 10-Bitars hårdvaru avcodning för HEVC" "EnableDecodingColorDepth10Hevc": "Aktivera 10-Bitars hårdvaru avcodning för HEVC",
"HeaderSyncPlayEnabled": "SyncPlay påslaget",
"EnableDetailsBannerHelp": "Visa en bannerbild högst upp på sidan för detaljsidan .",
"EnableDetailsBanner": "Information banner"
} }

View file

@ -1134,7 +1134,7 @@
"RunAtStartup": "开机时启动", "RunAtStartup": "开机时启动",
"Runtime": "播放时长", "Runtime": "播放时长",
"Saturday": "星期六", "Saturday": "星期六",
"Save": "存", "Save": "存",
"SaveSubtitlesIntoMediaFolders": "保存字幕到媒体所在文件夹", "SaveSubtitlesIntoMediaFolders": "保存字幕到媒体所在文件夹",
"SaveSubtitlesIntoMediaFoldersHelp": "将字幕存储在视频文件旁边可以跟方便的管理他们。", "SaveSubtitlesIntoMediaFoldersHelp": "将字幕存储在视频文件旁边可以跟方便的管理他们。",
"ScanForNewAndUpdatedFiles": "扫描新的和有修改的文件", "ScanForNewAndUpdatedFiles": "扫描新的和有修改的文件",
@ -1526,7 +1526,7 @@
"MessageSyncPlayCreateGroupDenied": "需要权限以创建群组。", "MessageSyncPlayCreateGroupDenied": "需要权限以创建群组。",
"MessageSyncPlayGroupDoesNotExist": "无法加入群组,因为该群组不存在。", "MessageSyncPlayGroupDoesNotExist": "无法加入群组,因为该群组不存在。",
"MessageSyncPlayPlaybackPermissionRequired": "需要播放权限。", "MessageSyncPlayPlaybackPermissionRequired": "需要播放权限。",
"MessageSyncPlayGroupWait": "<b>{0}</b> 正在缓冲...", "MessageSyncPlayGroupWait": "<b>{0}</b> 正在缓冲",
"MessageSyncPlayUserLeft": "<b>{0}</b> 已离开群组。", "MessageSyncPlayUserLeft": "<b>{0}</b> 已离开群组。",
"MessageSyncPlayUserJoined": "<b>{0}</b> 已加入该群组。", "MessageSyncPlayUserJoined": "<b>{0}</b> 已加入该群组。",
"LabelSyncPlayAccessNone": "禁用此用户", "LabelSyncPlayAccessNone": "禁用此用户",

View file

@ -503,5 +503,8 @@
"BrowsePluginCatalogMessage": "瀏覽我們的插件目錄以查看可用的插件。", "BrowsePluginCatalogMessage": "瀏覽我們的插件目錄以查看可用的插件。",
"BoxRear": "盒裝(背面)", "BoxRear": "盒裝(背面)",
"BoxSet": "套裝", "BoxSet": "套裝",
"Box": "盒裝" "Box": "盒裝",
"Composer": "作曲家",
"ButtonPreviousTrack": "上一曲",
"ButtonNextTrack": "下一曲"
} }

View file

@ -1656,5 +1656,21 @@
"ApiKeysCaption": "目前已啟用的API金鑰列表", "ApiKeysCaption": "目前已啟用的API金鑰列表",
"ButtonTogglePlaylist": "播放清單", "ButtonTogglePlaylist": "播放清單",
"ButtonToggleContextMenu": "更多", "ButtonToggleContextMenu": "更多",
"ButtonSyncPlay": "SyncPlay" "ButtonSyncPlay": "SyncPlay",
"LabelRequireHttpsHelp": "如果選中伺服器將自動將所有通過HTTP的請求重定向到HTTPS。 如果伺服器未在HTTPS上偵聽則此項無效。",
"EnableFasterAnimationsHelp": "使用更快的動畫和過渡效果",
"EnableFasterAnimations": "更快的動畫",
"LabelRequireHttps": "要求HTTPS",
"LabelNightly": "每日更新版",
"LabelStable": "穩定版",
"LabelChromecastVersion": "Chromecast版本",
"LabelEnableHttpsHelp": "使伺服器能夠偵聽已配置的HTTPS端口。 要使其生效,必須配置一個有效的證書。",
"LabelEnableHttps": "啟用HTTPS",
"HeaderServerAddressSettings": "伺服器地址設定",
"HeaderRemoteAccessSettings": "遠程訪問設定",
"HeaderHttpsSettings": "HTTPS設定",
"EnableDetailsBannerHelp": "在項目詳細信息頁面的頂部顯示橫幅圖像。",
"EnableDetailsBanner": "詳情橫幅",
"EnableDecodingColorDepth10Vp9": "啟用10比特VP9硬體解碼",
"EnableDecodingColorDepth10Hevc": "啟用10比特HEVC硬體解碼"
} }

View file

@ -449,12 +449,8 @@ html {
color: #c33; color: #c33;
} }
.repeatButton-active { .buttonActive {
color: #4285f4; color: #00a4dc !important;
}
.shuffleQueue-active {
color: #4285f4 !important;
} }
.card:focus .cardBox.visualCardBox, .card:focus .cardBox.visualCardBox,

View file

@ -441,12 +441,8 @@ html {
color: #c33; color: #c33;
} }
.repeatButton-active { .buttonActive {
color: #4285f4; color: #00a4dc !important;
}
.shuffleQueue-active {
color: #4285f4 !important;
} }
.cardBox:not(.visualCardBox) .cardPadder { .cardBox:not(.visualCardBox) .cardPadder {

View file

@ -109,7 +109,7 @@ html {
.formDialogHeader:not(.formDialogHeader-clear), .formDialogHeader:not(.formDialogHeader-clear),
.paperList, .paperList,
.visualCardBox { .visualCardBox {
background-color: #242424; background-color: #202020;
} }
.defaultCardBackground1 { .defaultCardBackground1 {
@ -412,12 +412,8 @@ html {
color: #c33; color: #c33;
} }
.repeatButton-active { .buttonActive {
color: #4285f4; color: #00a4dc !important;
}
.shuffleQueue-active {
color: #4285f4 !important;
} }
.card:focus .cardBox.visualCardBox, .card:focus .cardBox.visualCardBox,
@ -436,6 +432,7 @@ html {
.layout-desktop ::-webkit-scrollbar { .layout-desktop ::-webkit-scrollbar {
width: 0.4em; width: 0.4em;
height: 0.4em;
} }
::-webkit-scrollbar-thumb:horizontal, ::-webkit-scrollbar-thumb:horizontal,

View file

@ -427,12 +427,8 @@ html {
color: #c33; color: #c33;
} }
.repeatButton-active { .buttonActive {
color: #4285f4; color: #00a4dc !important;
}
.shuffleQueue-active {
color: #4285f4 !important;
} }
.cardBox:not(.visualCardBox) .cardPadder { .cardBox:not(.visualCardBox) .cardPadder {

View file

@ -542,12 +542,8 @@ a[data-role=button] {
color: #c33; color: #c33;
} }
.repeatButton-active { .buttonActive {
color: #4285f4; color: #00a4dc !important;
}
.shuffleQueue-active {
color: #4285f4 !important;
} }
.personCard .cardScalable { .personCard .cardScalable {

View file

@ -421,12 +421,8 @@ html {
color: #c33; color: #c33;
} }
.repeatButton-active { .buttonActive {
color: #4285f4; color: #00a4dc !important;
}
.shuffleQueue-active {
color: #4285f4 !important;
} }
.cardBox:not(.visualCardBox) .cardPadder { .cardBox:not(.visualCardBox) .cardPadder {

472
yarn.lock
View file

@ -2,14 +2,7 @@
# yarn lockfile v1 # yarn lockfile v1
"@babel/code-frame@^7.0.0": "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4":
version "7.10.3"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.3.tgz#324bcfd8d35cd3d47dae18cde63d752086435e9a"
integrity sha512-fDx9eNW0qz0WkUeqL6tXEXzVlPh6Y5aCDEZesl0xBGA8ndRukX91Uk44ZqnkECp01NAZUdCAl+aiQNGi0k88Eg==
dependencies:
"@babel/highlight" "^7.10.3"
"@babel/code-frame@^7.10.3", "@babel/code-frame@^7.10.4":
version "7.10.4" version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a"
integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==
@ -25,58 +18,35 @@
invariant "^2.2.4" invariant "^2.2.4"
semver "^5.5.0" semver "^5.5.0"
"@babel/core@>=7.2.2", "@babel/core@>=7.9.0": "@babel/core@>=7.2.2", "@babel/core@>=7.9.0", "@babel/core@^7.10.5":
version "7.10.3" version "7.10.5"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.3.tgz#73b0e8ddeec1e3fdd7a2de587a60e17c440ec77e" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.5.tgz#1f15e2cca8ad9a1d78a38ddba612f5e7cdbbd330"
integrity sha512-5YqWxYE3pyhIi84L84YcwjeEgS+fa7ZjK6IBVGTjDVfm64njkR2lfDhVR5OudLk8x2GK59YoSyVv+L/03k1q9w== integrity sha512-O34LQooYVDXPl7QWCdW9p4NR+QlzOr7xShPPJz8GsuCU3/8ua/wqTr7gmnxXv+WBESiGU/G5s16i6tUvHkNb+w==
dependencies:
"@babel/code-frame" "^7.10.3"
"@babel/generator" "^7.10.3"
"@babel/helper-module-transforms" "^7.10.1"
"@babel/helpers" "^7.10.1"
"@babel/parser" "^7.10.3"
"@babel/template" "^7.10.3"
"@babel/traverse" "^7.10.3"
"@babel/types" "^7.10.3"
convert-source-map "^1.7.0"
debug "^4.1.0"
gensync "^1.0.0-beta.1"
json5 "^2.1.2"
lodash "^4.17.13"
resolve "^1.3.2"
semver "^5.4.1"
source-map "^0.5.0"
"@babel/core@^7.10.3":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.4.tgz#780e8b83e496152f8dd7df63892b2e052bf1d51d"
integrity sha512-3A0tS0HWpy4XujGc7QtOIHTeNwUgWaZc/WuS5YQrfhU67jnVmsD6OGPc1AKHH0LJHQICGncy3+YUjIhVlfDdcA==
dependencies: dependencies:
"@babel/code-frame" "^7.10.4" "@babel/code-frame" "^7.10.4"
"@babel/generator" "^7.10.4" "@babel/generator" "^7.10.5"
"@babel/helper-module-transforms" "^7.10.4" "@babel/helper-module-transforms" "^7.10.5"
"@babel/helpers" "^7.10.4" "@babel/helpers" "^7.10.4"
"@babel/parser" "^7.10.4" "@babel/parser" "^7.10.5"
"@babel/template" "^7.10.4" "@babel/template" "^7.10.4"
"@babel/traverse" "^7.10.4" "@babel/traverse" "^7.10.5"
"@babel/types" "^7.10.4" "@babel/types" "^7.10.5"
convert-source-map "^1.7.0" convert-source-map "^1.7.0"
debug "^4.1.0" debug "^4.1.0"
gensync "^1.0.0-beta.1" gensync "^1.0.0-beta.1"
json5 "^2.1.2" json5 "^2.1.2"
lodash "^4.17.13" lodash "^4.17.19"
resolve "^1.3.2" resolve "^1.3.2"
semver "^5.4.1" semver "^5.4.1"
source-map "^0.5.0" source-map "^0.5.0"
"@babel/generator@^7.10.3", "@babel/generator@^7.10.4": "@babel/generator@^7.10.5":
version "7.10.4" version "7.10.5"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.4.tgz#e49eeed9fe114b62fa5b181856a43a5e32f5f243" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.5.tgz#1b903554bc8c583ee8d25f1e8969732e6b829a69"
integrity sha512-toLIHUIAgcQygFZRAQcsLQV3CBuX6yOIru1kJk/qqqvcRmZrYe6WavZTSG+bB8MxhnL9YPf+pKQfuiP161q7ng== integrity sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig==
dependencies: dependencies:
"@babel/types" "^7.10.4" "@babel/types" "^7.10.5"
jsesc "^2.5.1" jsesc "^2.5.1"
lodash "^4.17.13"
source-map "^0.5.0" source-map "^0.5.0"
"@babel/helper-annotate-as-pure@^7.10.4": "@babel/helper-annotate-as-pure@^7.10.4":
@ -180,18 +150,18 @@
dependencies: dependencies:
"@babel/types" "^7.10.4" "@babel/types" "^7.10.4"
"@babel/helper-module-transforms@^7.10.1", "@babel/helper-module-transforms@^7.10.4": "@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.10.5":
version "7.10.4" version "7.10.5"
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.4.tgz#ca1f01fdb84e48c24d7506bb818c961f1da8805d" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.5.tgz#120c271c0b3353673fcdfd8c053db3c544a260d6"
integrity sha512-Er2FQX0oa3nV7eM1o0tNCTx7izmQtwAQsIiaLRWtavAAEcskb0XJ5OjJbVrYXWOTr8om921Scabn4/tzlx7j1Q== integrity sha512-4P+CWMJ6/j1W915ITJaUkadLObmCRRSC234uctJfn/vHrsLNxsR8dwlcXv9ZhJWzl77awf+mWXSZEKt5t0OnlA==
dependencies: dependencies:
"@babel/helper-module-imports" "^7.10.4" "@babel/helper-module-imports" "^7.10.4"
"@babel/helper-replace-supers" "^7.10.4" "@babel/helper-replace-supers" "^7.10.4"
"@babel/helper-simple-access" "^7.10.4" "@babel/helper-simple-access" "^7.10.4"
"@babel/helper-split-export-declaration" "^7.10.4" "@babel/helper-split-export-declaration" "^7.10.4"
"@babel/template" "^7.10.4" "@babel/template" "^7.10.4"
"@babel/types" "^7.10.4" "@babel/types" "^7.10.5"
lodash "^4.17.13" lodash "^4.17.19"
"@babel/helper-optimise-call-expression@^7.10.4": "@babel/helper-optimise-call-expression@^7.10.4":
version "7.10.4" version "7.10.4"
@ -263,7 +233,7 @@
"@babel/traverse" "^7.10.4" "@babel/traverse" "^7.10.4"
"@babel/types" "^7.10.4" "@babel/types" "^7.10.4"
"@babel/helpers@^7.10.1", "@babel/helpers@^7.10.4": "@babel/helpers@^7.10.4":
version "7.10.4" version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044"
integrity sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA== integrity sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==
@ -272,7 +242,7 @@
"@babel/traverse" "^7.10.4" "@babel/traverse" "^7.10.4"
"@babel/types" "^7.10.4" "@babel/types" "^7.10.4"
"@babel/highlight@^7.10.3", "@babel/highlight@^7.10.4": "@babel/highlight@^7.10.4":
version "7.10.4" version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143"
integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==
@ -281,10 +251,10 @@
chalk "^2.0.0" chalk "^2.0.0"
js-tokens "^4.0.0" js-tokens "^4.0.0"
"@babel/parser@^7.10.3", "@babel/parser@^7.10.4": "@babel/parser@^7.10.4", "@babel/parser@^7.10.5":
version "7.10.4" version "7.10.5"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.4.tgz#9eedf27e1998d87739fb5028a5120557c06a1a64" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.5.tgz#e7c6bf5a7deff957cec9f04b551e2762909d826b"
integrity sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA== integrity sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==
"@babel/plugin-proposal-async-generator-functions@^7.10.4": "@babel/plugin-proposal-async-generator-functions@^7.10.4":
version "7.10.4" version "7.10.4"
@ -557,12 +527,12 @@
dependencies: dependencies:
"@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4"
"@babel/plugin-transform-modules-amd@^7.10.4", "@babel/plugin-transform-modules-amd@^7.9.6": "@babel/plugin-transform-modules-amd@^7.10.4", "@babel/plugin-transform-modules-amd@^7.10.5":
version "7.10.4" version "7.10.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.4.tgz#cb407c68b862e4c1d13a2fc738c7ec5ed75fc520" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz#1b9cddaf05d9e88b3aad339cb3e445c4f020a9b1"
integrity sha512-3Fw+H3WLUrTlzi3zMiZWp3AR4xadAEMv6XRCYnd5jAlLM61Rn+CRJaZMaNvIpcJpQ3vs1kyifYvEVPFfoSkKOA== integrity sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==
dependencies: dependencies:
"@babel/helper-module-transforms" "^7.10.4" "@babel/helper-module-transforms" "^7.10.5"
"@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4"
babel-plugin-dynamic-import-node "^2.3.3" babel-plugin-dynamic-import-node "^2.3.3"
@ -800,7 +770,7 @@
dependencies: dependencies:
regenerator-runtime "^0.13.4" regenerator-runtime "^0.13.4"
"@babel/template@^7.10.3", "@babel/template@^7.10.4": "@babel/template@^7.10.4":
version "7.10.4" version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278"
integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==
@ -809,28 +779,28 @@
"@babel/parser" "^7.10.4" "@babel/parser" "^7.10.4"
"@babel/types" "^7.10.4" "@babel/types" "^7.10.4"
"@babel/traverse@^7.10.3", "@babel/traverse@^7.10.4": "@babel/traverse@^7.10.4", "@babel/traverse@^7.10.5":
version "7.10.4" version "7.10.5"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.4.tgz#e642e5395a3b09cc95c8e74a27432b484b697818" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.5.tgz#77ce464f5b258be265af618d8fddf0536f20b564"
integrity sha512-aSy7p5THgSYm4YyxNGz6jZpXf+Ok40QF3aA2LyIONkDHpAcJzDUqlCKXv6peqYUs2gmic849C/t2HKw2a2K20Q== integrity sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ==
dependencies: dependencies:
"@babel/code-frame" "^7.10.4" "@babel/code-frame" "^7.10.4"
"@babel/generator" "^7.10.4" "@babel/generator" "^7.10.5"
"@babel/helper-function-name" "^7.10.4" "@babel/helper-function-name" "^7.10.4"
"@babel/helper-split-export-declaration" "^7.10.4" "@babel/helper-split-export-declaration" "^7.10.4"
"@babel/parser" "^7.10.4" "@babel/parser" "^7.10.5"
"@babel/types" "^7.10.4" "@babel/types" "^7.10.5"
debug "^4.1.0" debug "^4.1.0"
globals "^11.1.0" globals "^11.1.0"
lodash "^4.17.13" lodash "^4.17.19"
"@babel/types@^7.10.3", "@babel/types@^7.10.4", "@babel/types@^7.4.4": "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.4.4":
version "7.10.4" version "7.10.5"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.4.tgz#369517188352e18219981efd156bfdb199fff1ee" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.5.tgz#d88ae7e2fde86bfbfe851d4d81afa70a997b5d15"
integrity sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg== integrity sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==
dependencies: dependencies:
"@babel/helper-validator-identifier" "^7.10.4" "@babel/helper-validator-identifier" "^7.10.4"
lodash "^4.17.13" lodash "^4.17.19"
to-fast-properties "^2.0.0" to-fast-properties "^2.0.0"
"@csstools/convert-colors@^1.4.0": "@csstools/convert-colors@^1.4.0":
@ -1345,7 +1315,7 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1:
dependencies: dependencies:
color-convert "^1.9.0" color-convert "^1.9.0"
ansi-styles@^4.1.0: ansi-styles@^4.0.0, ansi-styles@^4.1.0:
version "4.2.1" version "4.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359"
integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==
@ -1371,6 +1341,14 @@ anymatch@^2.0.0:
micromatch "^3.1.4" micromatch "^3.1.4"
normalize-path "^2.1.1" normalize-path "^2.1.1"
anymatch@~3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142"
integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==
dependencies:
normalize-path "^3.0.0"
picomatch "^2.0.4"
append-buffer@^1.0.2: append-buffer@^1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1"
@ -1638,26 +1616,13 @@ atob@^2.1.2:
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
autoprefixer@^9.0.0, autoprefixer@^9.6.1, autoprefixer@^9.8.0: autoprefixer@^9.0.0, autoprefixer@^9.6.1, autoprefixer@^9.8.0, autoprefixer@^9.8.5:
version "9.8.2" version "9.8.5"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.2.tgz#7347396ee576b18687041bfbacd76d78e27baa56" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.5.tgz#2c225de229ddafe1d1424c02791d0c3e10ccccaa"
integrity sha512-9UwMMU8Rg7Fj0c55mbOpXrr/2WrRqoOwOlLNTyyYt+nhiyQdIBWipp5XWzt+Lge8r3DK5y+EHMc1OBf8VpZA6Q== integrity sha512-C2p5KkumJlsTHoNv9w31NrBRgXhf6eCMteJuHZi2xhkgC+5Vm40MEtCKPhc0qdgAOhox0YPy1SQHTAky05UoKg==
dependencies: dependencies:
browserslist "^4.12.0" browserslist "^4.12.0"
caniuse-lite "^1.0.30001084" caniuse-lite "^1.0.30001097"
kleur "^4.0.1"
normalize-range "^0.1.2"
num2fraction "^1.2.2"
postcss "^7.0.32"
postcss-value-parser "^4.1.0"
autoprefixer@^9.8.2:
version "9.8.4"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.4.tgz#736f1012673a70fa3464671d78d41abd54512863"
integrity sha512-84aYfXlpUe45lvmS+HoAWKCkirI/sw4JK0/bTeeqgHYco3dcsOn0NqdejISjptsYwNji/21dnkDri9PsYKk89A==
dependencies:
browserslist "^4.12.0"
caniuse-lite "^1.0.30001087"
colorette "^1.2.0" colorette "^1.2.0"
normalize-range "^0.1.2" normalize-range "^0.1.2"
num2fraction "^1.2.2" num2fraction "^1.2.2"
@ -1849,6 +1814,11 @@ binary-extensions@^1.0.0:
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
binary-extensions@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9"
integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==
bindings@^1.5.0: bindings@^1.5.0:
version "1.5.0" version "1.5.0"
resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df"
@ -1920,7 +1890,7 @@ braces@^2.3.1, braces@^2.3.2:
split-string "^3.0.2" split-string "^3.0.2"
to-regex "^3.0.1" to-regex "^3.0.1"
braces@^3.0.1: braces@^3.0.1, braces@~3.0.2:
version "3.0.2" version "3.0.2"
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
@ -1932,20 +1902,20 @@ brorand@^1.0.1:
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
browser-sync-client@^2.26.6: browser-sync-client@^2.26.10:
version "2.26.6" version "2.26.10"
resolved "https://registry.yarnpkg.com/browser-sync-client/-/browser-sync-client-2.26.6.tgz#e5201d3ace8aee88af17656b7b0c0620b6f8e4ab" resolved "https://registry.yarnpkg.com/browser-sync-client/-/browser-sync-client-2.26.10.tgz#ca9309ba19f9695e7945b95062da8a7ef3156711"
integrity sha512-mGrkZdNzttKdf/16I+y+2dTQxoMCIpKbVIMJ/uP8ZpnKu9f9qa/2CYVtLtbjZG8nsM14EwiCrjuFTGBEnT3Gjw== integrity sha512-8pYitKwpVva7hzXJI8lTljNDbA9fjMEobHSxWqegIUon/GjJAG3UgHB/+lBWnOLzTY8rGX66MvGqL1Aknyrj7g==
dependencies: dependencies:
etag "1.8.1" etag "1.8.1"
fresh "0.5.2" fresh "0.5.2"
mitt "^1.1.3" mitt "^1.1.3"
rxjs "^5.5.6" rxjs "^5.5.6"
browser-sync-ui@^2.26.4: browser-sync-ui@^2.26.10:
version "2.26.4" version "2.26.10"
resolved "https://registry.yarnpkg.com/browser-sync-ui/-/browser-sync-ui-2.26.4.tgz#3772f13c6b93f2d7d333f4be0ca1ec02aae97dba" resolved "https://registry.yarnpkg.com/browser-sync-ui/-/browser-sync-ui-2.26.10.tgz#7b4b378de204b3913d4b8a6f93b16b1ba769d4bc"
integrity sha512-u20P3EsZoM8Pt+puoi3BU3KlbQAH1lAcV+/O4saF26qokrBqIDotmGonfWwoRbUmdxZkM9MBmA0K39ZTG1h4sA== integrity sha512-UfNSBItlXcmEvJ9RE4JooNtIsiIfHowp+7/52Jz4VFfQD4v78QK5/NV9DVrG41oMM3zLyhW4f/RliOb4ysStZg==
dependencies: dependencies:
async-each-series "0.1.1" async-each-series "0.1.1"
connect-history-api-fallback "^1" connect-history-api-fallback "^1"
@ -1954,16 +1924,16 @@ browser-sync-ui@^2.26.4:
socket.io-client "^2.0.4" socket.io-client "^2.0.4"
stream-throttle "^0.1.3" stream-throttle "^0.1.3"
browser-sync@^2.26.7: browser-sync@^2.26.10:
version "2.26.7" version "2.26.10"
resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.26.7.tgz#120287716eb405651a76cc74fe851c31350557f9" resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.26.10.tgz#f03c043f615cf53c9294ccb2a5a5e25cfe11a230"
integrity sha512-lY3emme0OyvA2ujEMpRmyRy9LY6gHLuTr2/ABxhIm3lADOiRXzP4dgekvnDrQqZ/Ec2Fz19lEjm6kglSG5766w== integrity sha512-JeVQP3CARvNA1DELj+ZGWj+/0pzE8+Omvq1WNgzaTXVdP3lNEbGxZbkjvLK7hHpQywjQ1sDJWlJQZT6V59XDTg==
dependencies: dependencies:
browser-sync-client "^2.26.6" browser-sync-client "^2.26.10"
browser-sync-ui "^2.26.4" browser-sync-ui "^2.26.10"
bs-recipes "1.3.4" bs-recipes "1.3.4"
bs-snippet-injector "^2.0.1" bs-snippet-injector "^2.0.1"
chokidar "^2.0.4" chokidar "^3.4.1"
connect "3.6.6" connect "3.6.6"
connect-history-api-fallback "^1" connect-history-api-fallback "^1"
dev-ip "^1.0.1" dev-ip "^1.0.1"
@ -1972,10 +1942,10 @@ browser-sync@^2.26.7:
etag "^1.8.1" etag "^1.8.1"
fresh "^0.5.2" fresh "^0.5.2"
fs-extra "3.0.1" fs-extra "3.0.1"
http-proxy "1.15.2" http-proxy "^1.18.1"
immutable "^3" immutable "^3"
localtunnel "1.9.2" localtunnel "^2.0.0"
micromatch "^3.1.10" micromatch "^4.0.2"
opn "5.3.0" opn "5.3.0"
portscanner "2.1.1" portscanner "2.1.1"
qs "6.2.3" qs "6.2.3"
@ -1987,8 +1957,8 @@ browser-sync@^2.26.7:
serve-static "1.13.2" serve-static "1.13.2"
server-destroy "1.0.1" server-destroy "1.0.1"
socket.io "2.1.1" socket.io "2.1.1"
ua-parser-js "0.7.17" ua-parser-js "^0.7.18"
yargs "6.4.0" yargs "^15.4.1"
browserify-aes@^1.0.0, browserify-aes@^1.0.4: browserify-aes@^1.0.0, browserify-aes@^1.0.4:
version "1.2.0" version "1.2.0"
@ -2057,17 +2027,7 @@ browserslist@^1.1.3:
caniuse-db "^1.0.30000639" caniuse-db "^1.0.30000639"
electron-to-chromium "^1.2.7" electron-to-chromium "^1.2.7"
browserslist@^4.0.0, browserslist@^4.6.4: browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.12.2, browserslist@^4.6.4, browserslist@^4.8.5:
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.12.0, browserslist@^4.12.2, browserslist@^4.8.5:
version "4.12.2" version "4.12.2"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.2.tgz#76653d7e4c57caa8a1a28513e2f4e197dc11a711" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.2.tgz#76653d7e4c57caa8a1a28513e2f4e197dc11a711"
integrity sha512-MfZaeYqR8StRZdstAK9hCKDd2StvePCYp5rHzQCPicUjfFliDgmuaBNPHYUTpAywBN8+Wc/d7NYVFkO0aqaBUw== integrity sha512-MfZaeYqR8StRZdstAK9hCKDd2StvePCYp5rHzQCPicUjfFliDgmuaBNPHYUTpAywBN8+Wc/d7NYVFkO0aqaBUw==
@ -2322,15 +2282,10 @@ caniuse-db@^1.0.30001090:
resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001093.tgz#5a1cae72d94df1156f40f15d9079456e1b29d050" resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001093.tgz#5a1cae72d94df1156f40f15d9079456e1b29d050"
integrity sha512-XqXxHR6Z9IN0BXLKMaTJ1NZ+US74cbKritholD6uaDLUWHiDj0QilpSb708wOcoGz0PmPRsXT/6zE+bjx+QSMw== integrity sha512-XqXxHR6Z9IN0BXLKMaTJ1NZ+US74cbKritholD6uaDLUWHiDj0QilpSb708wOcoGz0PmPRsXT/6zE+bjx+QSMw==
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981: caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001088, caniuse-lite@^1.0.30001097:
version "1.0.30001085" version "1.0.30001099"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001085.tgz#bed28bd51ff7425d33ee23e730c7f3b703711db6" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001099.tgz#540118fcc6842d1fde62f4ee5521d1ec6afdb40e"
integrity sha512-x0YRFRE0pmOD90z+9Xk7jwO58p4feVNXP+U8kWV+Uo/HADyrgESlepzIkUqPgaXkpyceZU6siM1gsK7sHgplqA== integrity sha512-sdS9A+sQTk7wKoeuZBN/YMAHVztUfVnjDi4/UV3sDE8xoh7YR12hKW+pIdB3oqKGwr9XaFL2ovfzt9w8eUI5CA==
caniuse-lite@^1.0.30001043, caniuse-lite@^1.0.30001084, caniuse-lite@^1.0.30001087, caniuse-lite@^1.0.30001088:
version "1.0.30001093"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001093.tgz#833e80f64b1a0455cbceed2a4a3baf19e4abd312"
integrity sha512-0+ODNoOjtWD5eS9aaIpf4K0gQqZfILNY4WSNuYzeT1sXni+lMrrVjc0odEobJt6wrODofDZUX8XYi/5y7+xl8g==
caseless@~0.12.0: caseless@~0.12.0:
version "0.12.0" version "0.12.0"
@ -2413,7 +2368,7 @@ chardet@^0.7.0:
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
chokidar@^2.0.0, chokidar@^2.0.4, chokidar@^2.1.8: chokidar@^2.0.0, chokidar@^2.1.8:
version "2.1.8" version "2.1.8"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==
@ -2432,6 +2387,21 @@ chokidar@^2.0.0, chokidar@^2.0.4, chokidar@^2.1.8:
optionalDependencies: optionalDependencies:
fsevents "^1.2.7" fsevents "^1.2.7"
chokidar@^3.4.1:
version "3.4.1"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.1.tgz#e905bdecf10eaa0a0b1db0c664481cc4cbc22ba1"
integrity sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==
dependencies:
anymatch "~3.1.1"
braces "~3.0.2"
glob-parent "~5.1.0"
is-binary-path "~2.1.0"
is-glob "~4.0.1"
normalize-path "~3.0.0"
readdirp "~3.4.0"
optionalDependencies:
fsevents "~2.1.2"
chownr@^1.1.1: chownr@^1.1.1:
version "1.1.4" version "1.1.4"
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
@ -2508,6 +2478,15 @@ cliui@^5.0.0:
strip-ansi "^5.2.0" strip-ansi "^5.2.0"
wrap-ansi "^5.1.0" wrap-ansi "^5.1.0"
cliui@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1"
integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==
dependencies:
string-width "^4.2.0"
strip-ansi "^6.0.0"
wrap-ansi "^6.2.0"
clone-buffer@^1.0.0: clone-buffer@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58"
@ -3193,10 +3172,10 @@ dashdash@^1.12.0:
dependencies: dependencies:
assert-plus "^1.0.0" assert-plus "^1.0.0"
date-fns@^2.14.0: date-fns@^2.15.0:
version "2.14.0" version "2.15.0"
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.14.0.tgz#359a87a265bb34ef2e38f93ecf63ac453f9bc7ba" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.15.0.tgz#424de6b3778e4e69d3ff27046ec136af58ae5d5f"
integrity sha512-1zD+68jhFgDIM0rF05rcwYO8cExdNqxjq4xP1QKM60Q45mnO6zaMWB4tOzrIr4M4GSLntsKeE4c9Bdl2jhL/yw== integrity sha512-ZCPzAMJZn3rNUvvQIMlXhDr4A+Ar07eLeGsGREoWU19a3Pqf5oYa+ccd+B3F6XVtQY6HANMFdOQ8A+ipFnvJdQ==
dateformat@^2.0.0: dateformat@^2.0.0:
version "2.2.0" version "2.2.0"
@ -3646,7 +3625,7 @@ electron-to-chromium@^1.2.7:
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.427.tgz#ea43d02908a8c71f47ebb46e09de5a3cf8236f04" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.427.tgz#ea43d02908a8c71f47ebb46e09de5a3cf8236f04"
integrity sha512-/rG5G7Opcw68/Yrb4qYkz07h3bESVRJjUl4X/FrKLXzoUJleKm6D7K7rTTz8V5LUWnd+BbTOyxJX2XprRqHD8A== integrity sha512-/rG5G7Opcw68/Yrb4qYkz07h3bESVRJjUl4X/FrKLXzoUJleKm6D7K7rTTz8V5LUWnd+BbTOyxJX2XprRqHD8A==
electron-to-chromium@^1.3.413, electron-to-chromium@^1.3.483: electron-to-chromium@^1.3.483:
version "1.3.488" version "1.3.488"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.488.tgz#9226229f5fbc825959210e81e0bb3e63035d1c06" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.488.tgz#9226229f5fbc825959210e81e0bb3e63035d1c06"
integrity sha512-NReBdOugu1yl8ly+0VDtiQ6Yw/1sLjnvflWq0gvY1nfUXU2PbA+1XAVuEb7ModnwL/MfUPjby7e4pAFnSHiy6Q== integrity sha512-NReBdOugu1yl8ly+0VDtiQ6Yw/1sLjnvflWq0gvY1nfUXU2PbA+1XAVuEb7ModnwL/MfUPjby7e4pAFnSHiy6Q==
@ -4105,12 +4084,7 @@ event-emitter@^0.3.5:
d "1" d "1"
es5-ext "~0.10.14" es5-ext "~0.10.14"
eventemitter3@1.x.x: eventemitter3@^4.0.0, eventemitter3@^4.0.3:
version "1.2.0"
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508"
integrity sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=
eventemitter3@^4.0.3:
version "4.0.4" version "4.0.4"
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384"
integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==
@ -4599,6 +4573,11 @@ follow-redirects@1.5.10:
dependencies: dependencies:
debug "=3.1.0" debug "=3.1.0"
follow-redirects@^1.0.0:
version "1.12.1"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.12.1.tgz#de54a6205311b93d60398ebc01cf7015682312b6"
integrity sha512-tmRv0AVuR7ZyouUHLeNSiO6pqulF7dYa3s19c6t+wz9LD69/uSzdMxJ2S91nTI9U3rt/IldxpzMOFejp6f0hjg==
for-in@^1.0.1, for-in@^1.0.2: for-in@^1.0.1, for-in@^1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
@ -4695,6 +4674,11 @@ fsevents@^1.2.7:
bindings "^1.5.0" bindings "^1.5.0"
nan "^2.12.1" nan "^2.12.1"
fsevents@~2.1.2:
version "2.1.3"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e"
integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==
fstream@^1.0.0, fstream@^1.0.12: fstream@^1.0.0, fstream@^1.0.12:
version "1.0.12" version "1.0.12"
resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045"
@ -4835,7 +4819,7 @@ glob-parent@^3.1.0:
is-glob "^3.1.0" is-glob "^3.1.0"
path-dirname "^1.0.0" path-dirname "^1.0.0"
glob-parent@^5.0.0, glob-parent@^5.1.0: glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0:
version "5.1.1" version "5.1.1"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==
@ -5438,10 +5422,10 @@ hex-color-regex@^1.1.0:
resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==
hls.js@^0.14.0: hls.js@^0.14.3:
version "0.14.0" version "0.14.3"
resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-0.14.0.tgz#a815553f206685137bf4a2533cd87ff358a87aa3" resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-0.14.3.tgz#07f30710576376327f0b29c1316fd0bff31ca23a"
integrity sha512-PHQJ7gJpkRkOlufn9z2ID+V93HgJQahhsHr8rCcRS0q2XuUBdidAHeYsWeVYvZ73ZILVDN0EYVBvHZM1g2zZUA== integrity sha512-j+lbGBH5eU9r8A8kYQQHw/8x+G+mGCmtBaP5n4LS4qY7dUEbZRfa/RHfS2jM+4OgCfjdL/hgkYWYSZmwTgG5KQ==
dependencies: dependencies:
eventemitter3 "^4.0.3" eventemitter3 "^4.0.3"
url-toolkit "^2.1.6" url-toolkit "^2.1.6"
@ -5576,13 +5560,14 @@ http-errors@~1.6.2:
setprototypeof "1.1.0" setprototypeof "1.1.0"
statuses ">= 1.4.0 < 2" statuses ">= 1.4.0 < 2"
http-proxy@1.15.2: http-proxy@^1.18.1:
version "1.15.2" version "1.18.1"
resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.15.2.tgz#642fdcaffe52d3448d2bda3b0079e9409064da31" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549"
integrity sha1-ZC/cr/5S00SNK9o7AHnpQJBk2jE= integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==
dependencies: dependencies:
eventemitter3 "1.x.x" eventemitter3 "^4.0.0"
requires-port "1.x.x" follow-redirects "^1.0.0"
requires-port "^1.0.0"
http-signature@~1.2.0: http-signature@~1.2.0:
version "1.2.0" version "1.2.0"
@ -5926,6 +5911,13 @@ is-binary-path@^1.0.0:
dependencies: dependencies:
binary-extensions "^1.0.0" binary-extensions "^1.0.0"
is-binary-path@~2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
dependencies:
binary-extensions "^2.0.0"
is-buffer@^1.1.5: is-buffer@^1.1.5:
version "1.1.6" version "1.1.6"
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
@ -6053,7 +6045,7 @@ is-glob@^3.1.0:
dependencies: dependencies:
is-extglob "^2.1.0" is-extglob "^2.1.0"
is-glob@^4.0.0, is-glob@^4.0.1: is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
@ -6308,10 +6300,10 @@ isurl@^1.0.0-alpha5:
has-to-string-tag-x "^1.2.0" has-to-string-tag-x "^1.2.0"
is-object "^1.0.1" is-object "^1.0.1"
jellyfin-apiclient@^1.3.0: jellyfin-apiclient@^1.4.1:
version "1.3.1" version "1.4.1"
resolved "https://registry.yarnpkg.com/jellyfin-apiclient/-/jellyfin-apiclient-1.3.1.tgz#7ecaa986dbb6e36cce9d8f94dd66619419afa32d" resolved "https://registry.yarnpkg.com/jellyfin-apiclient/-/jellyfin-apiclient-1.4.1.tgz#5e544a19bc001b16669eb7ecf46bb7d652365e41"
integrity sha512-PQUKFDcQOy4hJ43Jc3Lm3571zONlTjr2qmr6pEVcfLZs7Lvwa4oUu/yonH6MMxpjZOvTbcirjer+XXgF2RwXyA== integrity sha512-BTTRucQ4tCLyiZ9kR9nAoxqxYp5/z+MCzkayy9vmMZ5C7jlVVsnxAXuuZjoa+AgXMjohXcM5Ci54myfJM1pRkA==
"jellyfin-noto@https://github.com/jellyfin/jellyfin-noto": "jellyfin-noto@https://github.com/jellyfin/jellyfin-noto":
version "1.0.3" version "1.0.3"
@ -6474,11 +6466,6 @@ kind-of@^6.0.0, kind-of@^6.0.2:
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
kleur@^4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.0.2.tgz#57b36cc5235601f824c33e6e45db10cd5493dbf5"
integrity sha512-FGCCxczbrZuF5CtMeO0xfnjhzkVZSXfcWK90IPLucDWZwskrpYN7pmRIgvd8muU0mrPrzy4A2RBGuwCjLHI+nw==
known-css-properties@^0.11.0: known-css-properties@^0.11.0:
version "0.11.0" version "0.11.0"
resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.11.0.tgz#0da784f115ea77c76b81536d7052e90ee6c86a8a" resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.11.0.tgz#0da784f115ea77c76b81536d7052e90ee6c86a8a"
@ -6653,15 +6640,15 @@ localforage@*, localforage@^1.7.3:
dependencies: dependencies:
lie "3.1.1" lie "3.1.1"
localtunnel@1.9.2: localtunnel@^2.0.0:
version "1.9.2" version "2.0.0"
resolved "https://registry.yarnpkg.com/localtunnel/-/localtunnel-1.9.2.tgz#0012fcabc29cf964c130a01858768aa2bb65b5af" resolved "https://registry.yarnpkg.com/localtunnel/-/localtunnel-2.0.0.tgz#2ea71174fa80e34cce91b2a7ce416e6a57d9ff7c"
integrity sha512-NEKF7bDJE9U3xzJu3kbayF0WTvng6Pww7tzqNb/XtEARYwqw7CKEX7BvOMg98FtE9es2CRizl61gkV3hS8dqYg== integrity sha512-g6E0aLgYYDvQDxIjIXkgJo2+pHj3sGg4Wz/XP3h2KtZnRsWPbOQY+hw1H8Z91jep998fkcVE9l+kghO+97vllg==
dependencies: dependencies:
axios "0.19.0" axios "0.19.0"
debug "4.1.1" debug "4.1.1"
openurl "1.1.1" openurl "1.1.1"
yargs "6.6.0" yargs "13.3.0"
locate-path@^2.0.0: locate-path@^2.0.0:
version "2.0.0" version "2.0.0"
@ -6825,10 +6812,10 @@ lodash.uniq@^4.5.0:
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
lodash@^4.0.0, lodash@^4.1.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@~4.17.12: lodash@^4.0.0, lodash@^4.1.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.4, lodash@~4.17.12:
version "4.17.15" version "4.17.19"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b"
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==
log-symbols@^1.0.2: log-symbols@^1.0.2:
version "1.0.2" version "1.0.2"
@ -7479,7 +7466,7 @@ node-libs-browser@^2.2.1:
util "^0.11.0" util "^0.11.0"
vm-browserify "^1.0.1" vm-browserify "^1.0.1"
node-releases@^1.1.53, node-releases@^1.1.58: node-releases@^1.1.58:
version "1.1.58" version "1.1.58"
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.58.tgz#8ee20eef30fa60e52755fcc0942def5a734fe935" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.58.tgz#8ee20eef30fa60e52755fcc0942def5a734fe935"
integrity sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg== integrity sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg==
@ -7554,7 +7541,7 @@ normalize-path@^2.0.1, normalize-path@^2.1.1:
dependencies: dependencies:
remove-trailing-separator "^1.0.1" remove-trailing-separator "^1.0.1"
normalize-path@^3.0.0: normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
@ -8229,7 +8216,7 @@ performance-now@^2.1.0:
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
picomatch@^2.0.5, picomatch@^2.2.1: picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1:
version "2.2.2" version "2.2.2"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
@ -8275,13 +8262,6 @@ pkg-dir@^3.0.0:
dependencies: dependencies:
find-up "^3.0.0" find-up "^3.0.0"
pkg-up@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f"
integrity sha1-yBmscoBZpGHKscOImivjxJoATX8=
dependencies:
find-up "^2.1.0"
plugin-error@^1.0.1: plugin-error@^1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c" resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c"
@ -9394,6 +9374,13 @@ readdirp@^2.2.1:
micromatch "^3.1.10" micromatch "^3.1.10"
readable-stream "^2.0.2" readable-stream "^2.0.2"
readdirp@~3.4.0:
version "3.4.0"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada"
integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==
dependencies:
picomatch "^2.2.1"
rechoir@^0.6.2: rechoir@^0.6.2:
version "0.6.2" version "0.6.2"
resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
@ -9707,7 +9694,7 @@ require-main-filename@^2.0.0:
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
requires-port@1.x.x: requires-port@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
@ -11375,10 +11362,10 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
ua-parser-js@0.7.17: ua-parser-js@^0.7.18:
version "0.7.17" version "0.7.21"
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.21.tgz#853cf9ce93f642f67174273cc34565ae6f308777"
integrity sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g== integrity sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==
uglify-js@3.4.x: uglify-js@3.4.x:
version "3.4.10" version "3.4.10"
@ -11996,10 +11983,10 @@ webworkify@^1.5.0:
resolved "https://registry.yarnpkg.com/webworkify/-/webworkify-1.5.0.tgz#734ad87a774de6ebdd546e1d3e027da5b8f4a42c" resolved "https://registry.yarnpkg.com/webworkify/-/webworkify-1.5.0.tgz#734ad87a774de6ebdd546e1d3e027da5b8f4a42c"
integrity sha512-AMcUeyXAhbACL8S2hqqdqOLqvJ8ylmIbNwUIqQujRSouf4+eUFaXbG6F1Rbu+srlJMmxQWsiU7mOJi0nMBfM1g== integrity sha512-AMcUeyXAhbACL8S2hqqdqOLqvJ8ylmIbNwUIqQujRSouf4+eUFaXbG6F1Rbu+srlJMmxQWsiU7mOJi0nMBfM1g==
whatwg-fetch@^3.0.0: whatwg-fetch@^3.2.0:
version "3.1.0" version "3.2.0"
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.1.0.tgz#49d630cdfa308dba7f2819d49d09364f540dbcc6" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.2.0.tgz#8e134f701f0a4ab5fda82626f113e2b647fd16dc"
integrity sha512-pgmbsVWKpH9GxLXZmtdowDIqtb/rvPyjjQv3z9wLcmgWKFHilKnZD3ldgrOlwJoPGOUluQsRPWd52yVkPfmI1A== integrity sha512-SdGPoQMMnzVYThUbSrEvqTlkvC1Ux27NehaJ/GUHBfNrh5Mjg+1/uRyFMwVnxO2MrikMWvWAqUGgQOfVU4hT7w==
which-module@^1.0.0: which-module@^1.0.0:
version "1.0.0" version "1.0.0"
@ -12025,11 +12012,6 @@ wide-align@^1.1.0:
dependencies: dependencies:
string-width "^1.0.2 || 2" string-width "^1.0.2 || 2"
window-size@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075"
integrity sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=
word-wrap@~1.2.3: word-wrap@~1.2.3:
version "1.2.3" version "1.2.3"
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
@ -12059,6 +12041,15 @@ wrap-ansi@^5.1.0:
string-width "^3.0.0" string-width "^3.0.0"
strip-ansi "^5.0.0" strip-ansi "^5.0.0"
wrap-ansi@^6.2.0:
version "6.2.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53"
integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
dependencies:
ansi-styles "^4.0.0"
string-width "^4.1.0"
strip-ansi "^6.0.0"
wrappy@1: wrappy@1:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
@ -12156,7 +12147,7 @@ yargs-parser@^10.0.0:
dependencies: dependencies:
camelcase "^4.1.0" camelcase "^4.1.0"
yargs-parser@^13.1.2: yargs-parser@^13.1.1, yargs-parser@^13.1.2:
version "13.1.2" version "13.1.2"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38"
integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==
@ -12164,7 +12155,7 @@ yargs-parser@^13.1.2:
camelcase "^5.0.0" camelcase "^5.0.0"
decamelize "^1.2.0" decamelize "^1.2.0"
yargs-parser@^18.1.3: yargs-parser@^18.1.2, yargs-parser@^18.1.3:
version "18.1.3" version "18.1.3"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
@ -12172,13 +12163,6 @@ yargs-parser@^18.1.3:
camelcase "^5.0.0" camelcase "^5.0.0"
decamelize "^1.2.0" decamelize "^1.2.0"
yargs-parser@^4.1.0, yargs-parser@^4.2.0:
version "4.2.1"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c"
integrity sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=
dependencies:
camelcase "^3.0.0"
yargs-parser@^5.0.0: yargs-parser@^5.0.0:
version "5.0.0" version "5.0.0"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a"
@ -12186,44 +12170,21 @@ yargs-parser@^5.0.0:
dependencies: dependencies:
camelcase "^3.0.0" camelcase "^3.0.0"
yargs@6.4.0: yargs@13.3.0:
version "6.4.0" version "13.3.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.4.0.tgz#816e1a866d5598ccf34e5596ddce22d92da490d4" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83"
integrity sha1-gW4ahm1VmMzzTlWW3c4i2S2kkNQ= integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==
dependencies: dependencies:
camelcase "^3.0.0" cliui "^5.0.0"
cliui "^3.2.0" find-up "^3.0.0"
decamelize "^1.1.1" get-caller-file "^2.0.1"
get-caller-file "^1.0.1"
os-locale "^1.4.0"
read-pkg-up "^1.0.1"
require-directory "^2.1.1" require-directory "^2.1.1"
require-main-filename "^1.0.1" require-main-filename "^2.0.0"
set-blocking "^2.0.0" set-blocking "^2.0.0"
string-width "^1.0.2" string-width "^3.0.0"
which-module "^1.0.0" which-module "^2.0.0"
window-size "^0.2.0" y18n "^4.0.0"
y18n "^3.2.1" yargs-parser "^13.1.1"
yargs-parser "^4.1.0"
yargs@6.6.0:
version "6.6.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208"
integrity sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=
dependencies:
camelcase "^3.0.0"
cliui "^3.2.0"
decamelize "^1.1.1"
get-caller-file "^1.0.1"
os-locale "^1.4.0"
read-pkg-up "^1.0.1"
require-directory "^2.1.1"
require-main-filename "^1.0.1"
set-blocking "^2.0.0"
string-width "^1.0.2"
which-module "^1.0.0"
y18n "^3.2.1"
yargs-parser "^4.2.0"
yargs@^13.3.2: yargs@^13.3.2:
version "13.3.2" version "13.3.2"
@ -12241,6 +12202,23 @@ yargs@^13.3.2:
y18n "^4.0.0" y18n "^4.0.0"
yargs-parser "^13.1.2" yargs-parser "^13.1.2"
yargs@^15.4.1:
version "15.4.1"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8"
integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==
dependencies:
cliui "^6.0.0"
decamelize "^1.2.0"
find-up "^4.1.0"
get-caller-file "^2.0.1"
require-directory "^2.1.1"
require-main-filename "^2.0.0"
set-blocking "^2.0.0"
string-width "^4.2.0"
which-module "^2.0.0"
y18n "^4.0.0"
yargs-parser "^18.1.2"
yargs@^7.0.0, yargs@^7.1.0: yargs@^7.0.0, yargs@^7.1.0:
version "7.1.0" version "7.1.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8"