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:
commit
2f1e792900
79 changed files with 1082 additions and 918 deletions
|
@ -36,6 +36,14 @@ jobs:
|
|||
targetPath: '$(Build.SourcesDirectory)/deployment/dist'
|
||||
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
|
||||
displayName: 'Upload artifacts to repository server'
|
||||
condition: or(startsWith(variables['Build.SourceBranch'], 'refs/tags'), startsWith(variables['Build.SourceBranch'], 'refs/heads/master'))
|
||||
|
|
22
package.json
22
package.json
|
@ -5,16 +5,16 @@
|
|||
"repository": "https://github.com/jellyfin/jellyfin-web",
|
||||
"license": "GPL-2.0-or-later",
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.10.3",
|
||||
"@babel/core": "^7.10.5",
|
||||
"@babel/plugin-proposal-class-properties": "^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/preset-env": "^7.10.3",
|
||||
"autoprefixer": "^9.8.2",
|
||||
"autoprefixer": "^9.8.5",
|
||||
"babel-eslint": "^11.0.0-beta.2",
|
||||
"babel-loader": "^8.0.6",
|
||||
"browser-sync": "^2.26.7",
|
||||
"browser-sync": "^2.26.10",
|
||||
"copy-webpack-plugin": "^5.1.1",
|
||||
"css-loader": "^3.6.0",
|
||||
"cssnano": "^4.1.10",
|
||||
|
@ -57,15 +57,15 @@
|
|||
"blurhash": "^1.1.3",
|
||||
"classlist.js": "https://github.com/eligrey/classList.js/archive/1.2.20180112.tar.gz",
|
||||
"core-js": "^3.6.5",
|
||||
"date-fns": "^2.14.0",
|
||||
"date-fns": "^2.15.0",
|
||||
"epubjs": "^0.3.85",
|
||||
"fast-text-encoding": "^1.0.3",
|
||||
"flv.js": "^1.5.0",
|
||||
"headroom.js": "^0.11.0",
|
||||
"hls.js": "^0.14.0",
|
||||
"hls.js": "^0.14.3",
|
||||
"howler": "^2.2.0",
|
||||
"intersection-observer": "^0.11.0",
|
||||
"jellyfin-apiclient": "^1.3.0",
|
||||
"jellyfin-apiclient": "^1.4.1",
|
||||
"jellyfin-noto": "https://github.com/jellyfin/jellyfin-noto",
|
||||
"jquery": "^3.5.1",
|
||||
"jstree": "^3.3.10",
|
||||
|
@ -80,7 +80,7 @@
|
|||
"sortablejs": "^1.10.2",
|
||||
"swiper": "^5.4.5",
|
||||
"webcomponents.js": "^0.7.24",
|
||||
"whatwg-fetch": "^3.0.0"
|
||||
"whatwg-fetch": "^3.2.0"
|
||||
},
|
||||
"babel": {
|
||||
"presets": [
|
||||
|
@ -116,6 +116,12 @@
|
|||
"src/components/syncPlay/timeSyncManager.js",
|
||||
"src/controllers/dashboard/logs.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/tableOfContents.js",
|
||||
"src/plugins/photoPlayer/plugin.js",
|
||||
|
|
|
@ -235,6 +235,15 @@ div[data-role=controlgroup] a.ui-btn-active {
|
|||
width: 50%;
|
||||
}
|
||||
|
||||
.localUsers .cardText-secondary {
|
||||
white-space: pre-wrap;
|
||||
height: 3em;
|
||||
}
|
||||
|
||||
.customCssContainer textarea {
|
||||
resize: none;
|
||||
}
|
||||
|
||||
@media all and (min-width: 70em) {
|
||||
.dashboardSections {
|
||||
-webkit-flex-wrap: wrap;
|
||||
|
|
|
@ -1,8 +1,3 @@
|
|||
html {
|
||||
font-size: 82% !important;
|
||||
}
|
||||
|
||||
.formDialogFooter {
|
||||
position: static !important;
|
||||
margin: 0 -1em !important;
|
||||
}
|
||||
|
|
|
@ -175,6 +175,10 @@
|
|||
width: 100%;
|
||||
}
|
||||
|
||||
.layout-tv .sectionTabs {
|
||||
width: 55%;
|
||||
}
|
||||
|
||||
.selectedMediaFolder {
|
||||
background-color: #f2f2f2 !important;
|
||||
}
|
||||
|
@ -269,7 +273,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
@media all and (max-width: 84em) {
|
||||
@media all and (max-width: 100em) {
|
||||
.withSectionTabs .headerTop {
|
||||
padding-bottom: 0.55em;
|
||||
}
|
||||
|
@ -277,9 +281,13 @@
|
|||
.sectionTabs {
|
||||
font-size: 83.5%;
|
||||
}
|
||||
|
||||
.layout-tv .sectionTabs {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@media all and (min-width: 84em) {
|
||||
@media all and (min-width: 100em) {
|
||||
.headerTop {
|
||||
padding: 0.8em 0.8em;
|
||||
}
|
||||
|
@ -910,21 +918,7 @@ div.itemDetailGalleryLink.defaultCardBackground {
|
|||
}
|
||||
}
|
||||
|
||||
@media all and (min-width: 62.5em) {
|
||||
.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;
|
||||
}
|
||||
|
||||
@media all and (min-width: 100em) {
|
||||
.detailFloatingButton {
|
||||
display: none !important;
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
.hiddenScrollX,
|
||||
.layout-tv .scrollX {
|
||||
-ms-overflow-style: none;
|
||||
scrollbar-width: none;
|
||||
}
|
||||
|
||||
.hiddenScrollX-forced {
|
||||
|
@ -40,6 +41,7 @@
|
|||
.hiddenScrollY,
|
||||
.layout-tv .smoothScrollY {
|
||||
-ms-overflow-style: none;
|
||||
scrollbar-width: none;
|
||||
|
||||
/* Can't do this because it not only hides the scrollbar, but also prevents scrolling */
|
||||
|
||||
|
|
|
@ -129,3 +129,7 @@ div[data-role=page] {
|
|||
.hide-scroll {
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
.w-100 {
|
||||
width: 100%;
|
||||
}
|
||||
|
|
|
@ -222,46 +222,13 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro
|
|||
}
|
||||
|
||||
function normalizeImageOptions(options) {
|
||||
var scaleFactor = browser.tv ? 0.8 : 1;
|
||||
|
||||
var setQuality;
|
||||
if (options.maxWidth) {
|
||||
options.maxWidth = Math.round(options.maxWidth * scaleFactor);
|
||||
if (options.maxWidth || options.width || options.maxHeight || options.height) {
|
||||
setQuality = true;
|
||||
}
|
||||
|
||||
if (options.width) {
|
||||
options.width = Math.round(options.width * scaleFactor);
|
||||
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;
|
||||
if (setQuality && !options.quality) {
|
||||
options.quality = 90;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1468,7 +1468,7 @@ import 'programStyles';
|
|||
|
||||
let additionalCardContent = '';
|
||||
|
||||
if (layoutManager.desktop) {
|
||||
if (layoutManager.desktop && !options.disableHoverMenu) {
|
||||
additionalCardContent += getHoverMenuHtml(item, action, options);
|
||||
}
|
||||
|
||||
|
@ -1497,12 +1497,12 @@ import 'programStyles';
|
|||
|
||||
const userData = item.UserData || {};
|
||||
|
||||
if (itemHelper.canMarkPlayed(item) && !options.disableHoverMenu) {
|
||||
if (itemHelper.canMarkPlayed(item)) {
|
||||
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>';
|
||||
}
|
||||
|
||||
if (itemHelper.canRate(item) && !options.disableHoverMenu) {
|
||||
if (itemHelper.canRate(item)) {
|
||||
|
||||
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>';
|
||||
}
|
||||
|
||||
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>';
|
||||
|
||||
|
|
|
@ -273,7 +273,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
|
|||
imageClass += ' itemAction';
|
||||
}
|
||||
|
||||
var imageAction = playOnImageClick ? 'resume' : action;
|
||||
var imageAction = playOnImageClick ? 'link' : action;
|
||||
|
||||
if (imgUrl) {
|
||||
html += '<div data-action="' + imageAction + '" class="' + imageClass + ' lazy" data-src="' + imgUrl + '" item-icon>';
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 11 KiB |
|
@ -1,10 +1,6 @@
|
|||
define(['components/loading/loadingLegacy', 'browser', 'css!./loading'], function (loadingLegacy, browser) {
|
||||
define(['css!./loading'], function () {
|
||||
'use strict';
|
||||
|
||||
if (browser.tizen || browser.operaTv || browser.chromecast || browser.orsay || browser.web0s || browser.ps4) {
|
||||
return loadingLegacy;
|
||||
}
|
||||
|
||||
var loadingElem;
|
||||
var layer1;
|
||||
var layer2;
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -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');
|
||||
}
|
||||
}
|
||||
};
|
||||
});
|
|
@ -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) {
|
||||
|
||||
var btnRemoveFromEditorList = dom.parentWithClass(e.target, 'btnRemoveFromEditorList');
|
||||
|
@ -270,7 +307,6 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi
|
|||
}
|
||||
|
||||
function init(context, apiClient) {
|
||||
|
||||
context.querySelector('.externalIds').addEventListener('click', function (e) {
|
||||
var btnOpenExternalId = dom.parentWithClass(e.target, 'btnOpenExternalId');
|
||||
if (btnOpenExternalId) {
|
||||
|
@ -294,13 +330,17 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi
|
|||
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('#chkLockData').addEventListener('click', function (e) {
|
||||
|
||||
if (!e.target.checked) {
|
||||
showElement('.providerSettingsContainer');
|
||||
} else {
|
||||
|
@ -1088,6 +1128,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi
|
|||
elem.innerHTML = globalize.translateDocument(template, 'core');
|
||||
|
||||
elem.querySelector('.formDialogFooter').classList.remove('formDialogFooter');
|
||||
elem.querySelector('.btnClose').classList.add('hide');
|
||||
elem.querySelector('.btnHeaderSave').classList.remove('hide');
|
||||
elem.querySelector('.btnCancel').classList.add('hide');
|
||||
|
||||
|
|
|
@ -8,6 +8,9 @@
|
|||
<span class="material-icons check"></span>
|
||||
<span>${Save}</span>
|
||||
</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">
|
||||
<span class="material-icons close"></span>
|
||||
</button>
|
||||
|
|
|
@ -114,8 +114,6 @@
|
|||
|
||||
.nowPlayingBarUserDataButtons {
|
||||
display: inline-block;
|
||||
margin-left: 1em;
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
||||
.nowPlayingBarPositionSlider::-webkit-slider-thumb {
|
||||
|
|
|
@ -72,7 +72,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
|||
if (layoutManager.mobile) {
|
||||
html += '<button is="paper-icon-button-light" class="nextTrackButton mediaButton"><span class="material-icons skip_next"></span></button>';
|
||||
} 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>';
|
||||
|
@ -204,15 +204,11 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
|||
|
||||
volumeSliderContainer.classList.toggle('hide', appHost.supports('physicalvolumecontrol'));
|
||||
|
||||
function setVolume() {
|
||||
volumeSlider.addEventListener('input', (e) => {
|
||||
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 () {
|
||||
|
||||
|
@ -355,7 +351,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
|||
|
||||
function updateRepeatModeDisplay(repeatMode) {
|
||||
toggleRepeatButtonIcon.classList.remove('repeat', 'repeat_one');
|
||||
const cssClass = 'repeatButton-active';
|
||||
const cssClass = 'buttonActive';
|
||||
|
||||
switch (repeatMode) {
|
||||
case 'RepeatAll':
|
||||
|
@ -375,18 +371,14 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
|||
}
|
||||
|
||||
function updateTimeDisplay(positionTicks, runtimeTicks, bufferedRanges) {
|
||||
|
||||
// See bindEvents for why this is necessary
|
||||
if (positionSlider && !positionSlider.dragging) {
|
||||
if (runtimeTicks) {
|
||||
|
||||
var pct = positionTicks / runtimeTicks;
|
||||
pct *= 100;
|
||||
|
||||
positionSlider.value = pct;
|
||||
|
||||
} else {
|
||||
|
||||
positionSlider.value = 0;
|
||||
}
|
||||
}
|
||||
|
@ -396,9 +388,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
|||
}
|
||||
|
||||
if (currentTimeElement) {
|
||||
|
||||
var timeText = positionTicks == null ? '--:--' : datetime.getDisplayRunningTime(positionTicks);
|
||||
|
||||
if (runtimeTicks) {
|
||||
timeText += ' / ' + datetime.getDisplayRunningTime(runtimeTicks);
|
||||
}
|
||||
|
@ -606,14 +596,11 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
|||
|
||||
function onPlaybackStart(e, state) {
|
||||
console.debug('nowplaying event: ' + e.type);
|
||||
|
||||
var player = this;
|
||||
|
||||
onStateChanged.call(player, e, state);
|
||||
}
|
||||
|
||||
function onRepeatModeChange() {
|
||||
|
||||
if (!isEnabled) {
|
||||
return;
|
||||
}
|
||||
|
@ -628,9 +615,8 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
|||
|
||||
let shuffleMode = playbackManager.getQueueShuffleMode();
|
||||
let context = nowPlayingBarElement;
|
||||
const cssClass = 'shuffleQueue-active';
|
||||
const cssClass = 'buttonActive';
|
||||
let toggleShuffleButton = context.querySelector('.btnShuffleQueue');
|
||||
|
||||
switch (shuffleMode) {
|
||||
case 'Shuffle':
|
||||
toggleShuffleButton.classList.add(cssClass);
|
||||
|
@ -643,7 +629,6 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
|
|||
}
|
||||
|
||||
function showNowPlayingBar() {
|
||||
|
||||
if (!isVisibilityAllowed) {
|
||||
hideNowPlayingBar();
|
||||
return;
|
||||
|
|
|
@ -72,7 +72,6 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
|
|||
const now = (new Date).getTime();
|
||||
|
||||
if (method !== reportPlaybackLastMethod || now - (reportPlaybackLastTime || 0) >= reportPlaybackLogDelay) {
|
||||
console.debug(method + '-' + JSON.stringify(info));
|
||||
reportPlaybackLastMethod = method;
|
||||
reportPlaybackLastTime = now;
|
||||
}
|
||||
|
|
|
@ -278,6 +278,10 @@
|
|||
flex-direction: column;
|
||||
}
|
||||
|
||||
.layout-desktop .nowPlayingPageUserDataButtons {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.nowPlayingInfoContainer {
|
||||
-webkit-box-orient: vertical !important;
|
||||
-webkit-box-direction: normal !important;
|
||||
|
|
|
@ -359,7 +359,7 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
|
|||
function updateRepeatModeDisplay(repeatMode) {
|
||||
var context = dlg;
|
||||
let toggleRepeatButtons = context.querySelectorAll('.repeatToggleButton');
|
||||
const cssClass = 'repeatButton-active';
|
||||
const cssClass = 'buttonActive';
|
||||
let innHtml = '<span class="material-icons repeat"></span>';
|
||||
let repeatOn = true;
|
||||
|
||||
|
@ -494,7 +494,7 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
|
|||
itemsContainer.innerHTML = html;
|
||||
if (focusedItemPlaylistId !== null) {
|
||||
focusedItemPlaylistId = focusedItemPlaylistId.getAttribute('data-playlistitemid');
|
||||
const newFocusedItem = itemsContainer.querySelector(`button[data-playlistitemid=${focusedItemPlaylistId}]`);
|
||||
const newFocusedItem = itemsContainer.querySelector(`button[data-playlistitemid="${focusedItemPlaylistId}"]`);
|
||||
if (newFocusedItem !== null) {
|
||||
newFocusedItem.focus();
|
||||
}
|
||||
|
@ -503,7 +503,7 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
|
|||
var playlistItemId = playbackManager.getCurrentPlaylistItemId(player);
|
||||
|
||||
if (playlistItemId) {
|
||||
var img = itemsContainer.querySelector('.listItem[data-playlistItemId="' + playlistItemId + '"] .listItemImage');
|
||||
var img = itemsContainer.querySelector(`.listItem[data-playlistItemId="${playlistItemId}"] .listItemImage`);
|
||||
|
||||
if (img) {
|
||||
img.classList.remove('lazy');
|
||||
|
@ -528,7 +528,7 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
|
|||
function onShuffleQueueModeChange(updateView = true) {
|
||||
let shuffleMode = playbackManager.getQueueShuffleMode(this);
|
||||
let context = dlg;
|
||||
const cssClass = 'shuffleQueue-active';
|
||||
const cssClass = 'buttonActive';
|
||||
let shuffleButtons = context.querySelectorAll('.btnShuffleQueue');
|
||||
|
||||
for (let shuffleButton of shuffleButtons) {
|
||||
|
@ -788,13 +788,10 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
|
|||
return datetime.getDisplayRunningTime(ticks);
|
||||
};
|
||||
|
||||
function setVolume() {
|
||||
playbackManager.setVolume(this.value, currentPlayer);
|
||||
}
|
||||
context.querySelector('.nowPlayingVolumeSlider').addEventListener('input', (e) => {
|
||||
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 () {
|
||||
playbackManager.toggleMute(currentPlayer);
|
||||
});
|
||||
|
|
|
@ -464,7 +464,7 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager',
|
|||
showTitle: true,
|
||||
overlayText: false,
|
||||
centerText: true,
|
||||
action: 'play'
|
||||
overlayPlayButton: true
|
||||
|
||||
});
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ function showNewJoinGroupSelection (button, user, apiClient) {
|
|||
console.debug('No item is currently playing.');
|
||||
}
|
||||
|
||||
apiClient.sendSyncPlayCommand('ListGroups').then(function (response) {
|
||||
apiClient.getSyncPlayGroups().then(function (response) {
|
||||
response.json().then(function (groups) {
|
||||
var menuItems = groups.map(function (group) {
|
||||
return {
|
||||
|
@ -83,9 +83,9 @@ function showNewJoinGroupSelection (button, user, apiClient) {
|
|||
|
||||
actionsheet.show(menuOptions).then(function (id) {
|
||||
if (id == 'new-group') {
|
||||
apiClient.sendSyncPlayCommand('NewGroup');
|
||||
} else {
|
||||
apiClient.sendSyncPlayCommand('JoinGroup', {
|
||||
apiClient.createSyncPlayGroup();
|
||||
} else if (id) {
|
||||
apiClient.joinSyncPlayGroup({
|
||||
GroupId: id,
|
||||
PlayingItemId: playingItemId
|
||||
});
|
||||
|
@ -140,7 +140,7 @@ function showLeaveGroupSelection (button, user, apiClient) {
|
|||
|
||||
actionsheet.show(menuOptions).then(function (id) {
|
||||
if (id == 'leave-group') {
|
||||
apiClient.sendSyncPlayCommand('LeaveGroup');
|
||||
apiClient.leaveSyncPlayGroup();
|
||||
}
|
||||
}).catch((error) => {
|
||||
console.error('SyncPlay: unexpected error showing group menu:', error);
|
||||
|
|
|
@ -139,7 +139,7 @@ class SyncPlayManager {
|
|||
return;
|
||||
}
|
||||
|
||||
apiClient.sendSyncPlayCommand('UpdatePing', {
|
||||
apiClient.sendSyncPlayPing({
|
||||
Ping: ping
|
||||
});
|
||||
}
|
||||
|
@ -212,6 +212,7 @@ class SyncPlayManager {
|
|||
if (!this.lastPlaybackWaiting) {
|
||||
this.lastPlaybackWaiting = new Date();
|
||||
}
|
||||
|
||||
events.trigger(this, 'waiting');
|
||||
}
|
||||
|
||||
|
@ -288,6 +289,7 @@ class SyncPlayManager {
|
|||
player.setPlaybackRate(this.localPlayerPlaybackRate);
|
||||
this.localPlayerPlaybackRate = 1.0;
|
||||
}
|
||||
|
||||
this.currentPlayer = null;
|
||||
this.playbackRateSupported = false;
|
||||
}
|
||||
|
@ -433,6 +435,7 @@ class SyncPlayManager {
|
|||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Get playing item id
|
||||
let playingItemId;
|
||||
try {
|
||||
|
@ -447,7 +450,7 @@ class SyncPlayManager {
|
|||
if (!success) {
|
||||
console.warning('Error reporting playback state to server. Joining group will fail.');
|
||||
}
|
||||
apiClient.sendSyncPlayCommand('JoinGroup', {
|
||||
apiClient.joinSyncPlayGroup({
|
||||
GroupId: groupId,
|
||||
PlayingItemId: playingItemId
|
||||
});
|
||||
|
@ -619,6 +622,7 @@ class SyncPlayManager {
|
|||
if (this.currentPlayer) {
|
||||
this.currentPlayer.setPlaybackRate(1);
|
||||
}
|
||||
|
||||
this.clearSyncIcon();
|
||||
}
|
||||
|
||||
|
@ -658,7 +662,7 @@ class SyncPlayManager {
|
|||
*/
|
||||
playRequest (player) {
|
||||
var apiClient = connectionManager.currentApiClient();
|
||||
apiClient.sendSyncPlayCommand('PlayRequest');
|
||||
apiClient.requestSyncPlayStart();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -666,7 +670,7 @@ class SyncPlayManager {
|
|||
*/
|
||||
pauseRequest (player) {
|
||||
var apiClient = connectionManager.currentApiClient();
|
||||
apiClient.sendSyncPlayCommand('PauseRequest');
|
||||
apiClient.requestSyncPlayPause();
|
||||
// Pause locally as well, to give the user some little control
|
||||
playbackManager._localUnpause(player);
|
||||
}
|
||||
|
@ -676,7 +680,7 @@ class SyncPlayManager {
|
|||
*/
|
||||
seekRequest (PositionTicks, player) {
|
||||
var apiClient = connectionManager.currentApiClient();
|
||||
apiClient.sendSyncPlayCommand('SeekRequest', {
|
||||
apiClient.requestSyncPlaySeek({
|
||||
PositionTicks: PositionTicks
|
||||
});
|
||||
}
|
||||
|
|
|
@ -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';
|
||||
|
||||
var enableFocusTransform = !browser.slow && !browser.edge;
|
||||
|
@ -7,18 +7,10 @@ define(['apphost', 'appSettings', 'dom', 'connectionManager', 'loading', 'layout
|
|||
loading.show();
|
||||
apiClient.authenticateUserByName(username, password).then(function (result) {
|
||||
var user = result.User;
|
||||
var serverId = getParameterByName('serverid');
|
||||
var newUrl;
|
||||
|
||||
if (user.Policy.IsAdministrator && !serverId) {
|
||||
newUrl = 'dashboard.html';
|
||||
} else {
|
||||
newUrl = 'home.html';
|
||||
}
|
||||
|
||||
loading.hide();
|
||||
|
||||
Dashboard.onServerChanged(user.Id, result.AccessToken, apiClient);
|
||||
Dashboard.navigate(newUrl);
|
||||
Dashboard.navigate('home.html');
|
||||
}, function (response) {
|
||||
page.querySelector('#txtManualName').value = '';
|
||||
page.querySelector('#txtManualPassword').value = '';
|
||||
|
@ -194,6 +186,7 @@ define(['apphost', 'appSettings', 'dom', 'connectionManager', 'loading', 'layout
|
|||
});
|
||||
view.addEventListener('viewshow', function (e) {
|
||||
loading.show();
|
||||
libraryMenu.setTransparentMenu(true);
|
||||
|
||||
if (!appHost.supports('multiserver')) {
|
||||
view.querySelector('.btnSelectServer').classList.add('hide');
|
||||
|
@ -215,5 +208,8 @@ define(['apphost', 'appSettings', 'dom', 'connectionManager', 'loading', 'layout
|
|||
view.querySelector('.disclaimer').textContent = options.LoginDisclaimer || '';
|
||||
});
|
||||
});
|
||||
view.addEventListener('viewhide', function (e) {
|
||||
libraryMenu.setTransparentMenu(false);
|
||||
});
|
||||
};
|
||||
});
|
||||
|
|
|
@ -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';
|
||||
|
||||
var enableFocusTransform = !browser.slow && !browser.edge;
|
||||
|
@ -183,6 +183,7 @@ define(['loading', 'appRouter', 'layoutManager', 'appSettings', 'apphost', 'focu
|
|||
view.addEventListener('viewshow', function (e) {
|
||||
var isRestored = e.detail.isRestored;
|
||||
appRouter.setTitle(null);
|
||||
libraryMenu.setTransparentMenu(true);
|
||||
|
||||
if (!isRestored) {
|
||||
loadServers();
|
||||
|
|
|
@ -169,13 +169,7 @@ define(['datetime', 'events', 'itemHelper', 'serverNotifications', 'dom', 'globa
|
|||
function reloadSystemInfo(view, apiClient) {
|
||||
apiClient.getSystemInfo().then(function (systemInfo) {
|
||||
view.querySelector('#serverName').innerHTML = globalize.translate('DashboardServerName', systemInfo.ServerName);
|
||||
var localizedVersion = globalize.translate('DashboardVersionNumber', systemInfo.Version);
|
||||
|
||||
if (systemInfo.SystemUpdateLevel !== 'Release') {
|
||||
localizedVersion += ' ' + systemInfo.SystemUpdateLevel;
|
||||
}
|
||||
|
||||
view.querySelector('#versionNumber').innerHTML = localizedVersion;
|
||||
view.querySelector('#versionNumber').innerHTML = globalize.translate('DashboardVersionNumber', systemInfo.Version);
|
||||
view.querySelector('#operatingSystem').innerHTML = globalize.translate('DashboardOperatingSystem', systemInfo.OperatingSystem);
|
||||
view.querySelector('#architecture').innerHTML = globalize.translate('DashboardArchitecture', systemInfo.SystemArchitecture);
|
||||
|
||||
|
|
|
@ -161,7 +161,7 @@ define(['jQuery', 'apphost', 'scripts/taskbutton', 'loading', 'libraryMenu', 'gl
|
|||
showType: false,
|
||||
showLocations: false,
|
||||
showMenu: false,
|
||||
showNameWithIcon: true
|
||||
showNameWithIcon: false
|
||||
});
|
||||
|
||||
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 () {
|
||||
showCardMenu(page, this, virtualFolders);
|
||||
});
|
||||
divVirtualFolders.querySelector('.addLibrary').addEventListener('click', function () {
|
||||
divVirtualFolders.querySelector('#addLibrary').addEventListener('click', function () {
|
||||
addVirtualFolder(page);
|
||||
});
|
||||
$('.editLibrary', divVirtualFolders).on('click', function () {
|
||||
|
@ -247,7 +247,12 @@ define(['jQuery', 'apphost', 'scripts/taskbutton', 'loading', 'libraryMenu', 'gl
|
|||
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="cardScalable visualCardBox-cardScalable">';
|
||||
html += '<div class="cardPadder cardPadder-backdrop"></div>';
|
||||
|
|
|
@ -53,11 +53,13 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti
|
|||
user: user,
|
||||
share: true
|
||||
};
|
||||
|
||||
return options;
|
||||
}
|
||||
|
||||
function getProgramScheduleHtml(items) {
|
||||
var html = '';
|
||||
|
||||
html += '<div is="emby-itemscontainer" class="itemsContainer vertical-list" data-contextmenu="false">';
|
||||
html += listView.getListViewHtml({
|
||||
items: items,
|
||||
|
@ -71,6 +73,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti
|
|||
moreButton: false,
|
||||
recordButton: false
|
||||
});
|
||||
|
||||
html += '</div>';
|
||||
|
||||
return html;
|
||||
|
@ -143,7 +146,6 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti
|
|||
instance._currentPlaybackMediaSources = mediaSources;
|
||||
|
||||
page.querySelector('.trackSelections').classList.remove('hide');
|
||||
|
||||
select.setLabel(globalize.translate('LabelVersion'));
|
||||
|
||||
var currentValue = select.value;
|
||||
|
@ -165,7 +167,6 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti
|
|||
renderAudioSelections(page, mediaSources);
|
||||
renderSubtitleSelections(page, mediaSources);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function renderVideoSelections(page, mediaSources) {
|
||||
|
@ -173,9 +174,11 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti
|
|||
var mediaSource = mediaSources.filter(function (m) {
|
||||
return m.Id === mediaSourceId;
|
||||
})[0];
|
||||
|
||||
var tracks = mediaSource.MediaStreams.filter(function (m) {
|
||||
return m.Type === 'Video';
|
||||
});
|
||||
|
||||
var select = page.querySelector('.selectVideo');
|
||||
select.setLabel(globalize.translate('LabelVideo'));
|
||||
var selectedId = tracks.length ? tracks[0].Index : -1;
|
||||
|
@ -248,7 +251,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti
|
|||
return 'Video' === m.Type;
|
||||
});
|
||||
|
||||
// This only makes sence on Video items
|
||||
// This only makes sense on Video items
|
||||
if (videoTracks.length) {
|
||||
var selected = -1 === selectedId ? ' selected' : '';
|
||||
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>';
|
||||
}).join('');
|
||||
|
||||
if (tracks.length > 1) {
|
||||
if (tracks.length > 0) {
|
||||
select.removeAttribute('disabled');
|
||||
} else {
|
||||
select.setAttribute('disabled', 'disabled');
|
||||
|
@ -723,11 +726,10 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti
|
|||
disableIndicators: true,
|
||||
disableHoverMenu: true,
|
||||
overlayPlayButton: true,
|
||||
width: dom.getWindowSize().innerWidth * 0.25
|
||||
width: dom.getWindowSize().innerWidth * 0.5
|
||||
});
|
||||
|
||||
elem.innerHTML = cardHtml;
|
||||
|
||||
imageLoader.lazyChildren(elem);
|
||||
}
|
||||
|
||||
|
@ -1359,7 +1361,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti
|
|||
imageSize: 'large',
|
||||
enableSideMediaInfo: false,
|
||||
highlight: false,
|
||||
action: layoutManager.tv ? 'resume' : 'none',
|
||||
action: !layoutManager.desktop ? 'link' : 'none',
|
||||
imagePlayButton: true,
|
||||
includeParentInfoInTitle: false
|
||||
});
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
define(['components/remotecontrol/remotecontrol', 'libraryMenu', 'emby-button'], function (remotecontrolFactory, libraryMenu) {
|
||||
'use strict';
|
||||
import remotecontrolFactory from 'components/remotecontrol/remotecontrol';
|
||||
import libraryMenu from 'libraryMenu';
|
||||
import 'emby-button';
|
||||
|
||||
return function (view, params) {
|
||||
var remoteControl = new remotecontrolFactory();
|
||||
remoteControl.init(view, view.querySelector('.remoteControlContent'));
|
||||
view.addEventListener('viewshow', function (e) {
|
||||
libraryMenu.setTransparentMenu(true);
|
||||
export default function (view, params) {
|
||||
const remoteControl = new remotecontrolFactory();
|
||||
remoteControl.init(view, view.querySelector('.remoteControlContent'));
|
||||
view.addEventListener('viewshow', function (e) {
|
||||
libraryMenu.setTransparentMenu(true);
|
||||
|
||||
if (remoteControl) {
|
||||
remoteControl.onShow();
|
||||
}
|
||||
});
|
||||
view.addEventListener('viewbeforehide', function (e) {
|
||||
libraryMenu.setTransparentMenu(false);
|
||||
if (remoteControl) {
|
||||
remoteControl.onShow();
|
||||
}
|
||||
});
|
||||
view.addEventListener('viewbeforehide', function (e) {
|
||||
libraryMenu.setTransparentMenu(false);
|
||||
|
||||
if (remoteControl) {
|
||||
remoteControl.destroy();
|
||||
}
|
||||
});
|
||||
};
|
||||
});
|
||||
if (remoteControl) {
|
||||
remoteControl.destroy();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
'use strict';
|
||||
import playbackManager from 'playbackManager';
|
||||
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) {
|
||||
if ('Episode' !== item.Type) {
|
||||
|
@ -49,13 +70,13 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
return document.querySelector('.dialogContainer .dialog.opened');
|
||||
}
|
||||
|
||||
return function (view, params) {
|
||||
export default function (view, params) {
|
||||
function onVerticalSwipe(e, elem, data) {
|
||||
var player = currentPlayer;
|
||||
const player = currentPlayer;
|
||||
|
||||
if (player) {
|
||||
var deltaY = data.currentDeltaY;
|
||||
var windowSize = dom.getWindowSize();
|
||||
const deltaY = data.currentDeltaY;
|
||||
const windowSize = dom.getWindowSize();
|
||||
|
||||
if (supportsBrightnessChange && data.clientX < windowSize.innerWidth / 2) {
|
||||
return void doBrightnessTouch(deltaY, player, windowSize.innerHeight);
|
||||
|
@ -66,23 +87,23 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
}
|
||||
|
||||
function doBrightnessTouch(deltaY, player, viewHeight) {
|
||||
var delta = -deltaY / viewHeight * 100;
|
||||
var newValue = playbackManager.getBrightness(player) + delta;
|
||||
const delta = -deltaY / viewHeight * 100;
|
||||
let newValue = playbackManager.getBrightness(player) + delta;
|
||||
newValue = Math.min(newValue, 100);
|
||||
newValue = Math.max(newValue, 0);
|
||||
playbackManager.setBrightness(newValue, player);
|
||||
}
|
||||
|
||||
function doVolumeTouch(deltaY, player, viewHeight) {
|
||||
var delta = -deltaY / viewHeight * 100;
|
||||
var newValue = playbackManager.getVolume(player) + delta;
|
||||
const delta = -deltaY / viewHeight * 100;
|
||||
let newValue = playbackManager.getVolume(player) + delta;
|
||||
newValue = Math.min(newValue, 100);
|
||||
newValue = Math.max(newValue, 0);
|
||||
playbackManager.setVolume(newValue, player);
|
||||
}
|
||||
|
||||
function onDoubleClick(e) {
|
||||
var clientX = e.clientX;
|
||||
const clientX = e.clientX;
|
||||
|
||||
if (null != clientX) {
|
||||
if (clientX < dom.getWindowSize().innerWidth / 2) {
|
||||
|
@ -98,7 +119,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
|
||||
function getDisplayItem(item) {
|
||||
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 {
|
||||
originalItem: refreshedItem,
|
||||
|
@ -124,7 +145,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
|
||||
connectionManager.getApiClient(item.ServerId).getCurrentUser().then(function (user) {
|
||||
if (user.Policy.EnableLiveTvManagement) {
|
||||
require(['recordingButton'], function (RecordingButton) {
|
||||
import('recordingButton').then(({default: RecordingButton}) => {
|
||||
if (recordingButtonManager) {
|
||||
return void recordingButtonManager.refreshItem(item);
|
||||
}
|
||||
|
@ -140,22 +161,22 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
}
|
||||
|
||||
function updateDisplayItem(itemInfo) {
|
||||
var item = itemInfo.originalItem;
|
||||
const item = itemInfo.originalItem;
|
||||
currentItem = item;
|
||||
var displayItem = itemInfo.displayItem || item;
|
||||
const displayItem = itemInfo.displayItem || item;
|
||||
updateRecordingButton(displayItem);
|
||||
setPoster(displayItem, item);
|
||||
var parentName = displayItem.SeriesName || displayItem.Album;
|
||||
let parentName = displayItem.SeriesName || displayItem.Album;
|
||||
|
||||
if (displayItem.EpisodeTitle || displayItem.IsSeries) {
|
||||
parentName = displayItem.Name;
|
||||
}
|
||||
|
||||
setTitle(displayItem, parentName);
|
||||
var titleElement;
|
||||
var osdTitle = view.querySelector('.osdTitle');
|
||||
let titleElement;
|
||||
const osdTitle = view.querySelector('.osdTitle');
|
||||
titleElement = osdTitle;
|
||||
var displayName = itemHelper.getDisplayName(displayItem, {
|
||||
let displayName = itemHelper.getDisplayName(displayItem, {
|
||||
includeParentInfo: 'Program' !== displayItem.Type,
|
||||
includeIndexNumber: 'Program' !== displayItem.Type
|
||||
});
|
||||
|
@ -172,7 +193,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
titleElement.classList.add('hide');
|
||||
}
|
||||
|
||||
var mediaInfoHtml = mediaInfo.getPrimaryMediaInfoHtml(displayItem, {
|
||||
const mediaInfoHtml = mediaInfo.getPrimaryMediaInfoHtml(displayItem, {
|
||||
runtime: false,
|
||||
subtitles: false,
|
||||
tomatoes: false,
|
||||
|
@ -182,7 +203,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
episodeTitleIndexNumber: 'Program' !== displayItem.Type,
|
||||
programIndicator: false
|
||||
});
|
||||
var osdMediaInfo = view.querySelector('.osdMediaInfo');
|
||||
const osdMediaInfo = view.querySelector('.osdMediaInfo');
|
||||
osdMediaInfo.innerHTML = mediaInfoHtml;
|
||||
|
||||
if (mediaInfoHtml) {
|
||||
|
@ -191,8 +212,8 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
osdMediaInfo.classList.add('hide');
|
||||
}
|
||||
|
||||
var secondaryMediaInfo = view.querySelector('.osdSecondaryMediaInfo');
|
||||
var secondaryMediaInfoHtml = mediaInfo.getSecondaryMediaInfoHtml(displayItem, {
|
||||
const secondaryMediaInfo = view.querySelector('.osdSecondaryMediaInfo');
|
||||
const secondaryMediaInfoHtml = mediaInfo.getSecondaryMediaInfoHtml(displayItem, {
|
||||
startDate: false,
|
||||
programTime: false
|
||||
});
|
||||
|
@ -240,7 +261,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
}
|
||||
|
||||
function setDisplayTime(elem, date) {
|
||||
var html;
|
||||
let html;
|
||||
|
||||
if (date) {
|
||||
date = datetime.parseISO8601Date(date);
|
||||
|
@ -255,7 +276,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
}
|
||||
|
||||
function updateNowPlayingInfo(player, state) {
|
||||
var item = state.NowPlayingItem;
|
||||
const item = state.NowPlayingItem;
|
||||
|
||||
currentItem = item;
|
||||
if (!item) {
|
||||
|
@ -298,7 +319,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
function setTitle(item, parentName) {
|
||||
Emby.Page.setTitle(parentName || '');
|
||||
|
||||
var documentTitle = parentName || (item ? item.Name : null);
|
||||
const documentTitle = parentName || (item ? item.Name : null);
|
||||
|
||||
if (documentTitle) {
|
||||
document.title = documentTitle;
|
||||
|
@ -306,10 +327,10 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
}
|
||||
|
||||
function setPoster(item, secondaryItem) {
|
||||
var osdPoster = view.querySelector('.osdPoster');
|
||||
const osdPoster = view.querySelector('.osdPoster');
|
||||
|
||||
if (item) {
|
||||
var imgUrl = seriesImageUrl(item, {
|
||||
let imgUrl = seriesImageUrl(item, {
|
||||
maxWidth: osdPoster.clientWidth * 2,
|
||||
type: 'Primary'
|
||||
}) || seriesImageUrl(item, {
|
||||
|
@ -385,7 +406,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
}
|
||||
|
||||
function onHideAnimationComplete(e) {
|
||||
var elem = e.target;
|
||||
const elem = e.target;
|
||||
if (elem != osdBottomElement)
|
||||
return;
|
||||
elem.classList.add('hide');
|
||||
|
@ -396,7 +417,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
|
||||
function showMainOsdControls() {
|
||||
if (!currentVisibleMenu) {
|
||||
var elem = osdBottomElement;
|
||||
const elem = osdBottomElement;
|
||||
currentVisibleMenu = 'osd';
|
||||
clearHideAnimationEventListeners(elem);
|
||||
elem.classList.remove('hide');
|
||||
|
@ -413,7 +434,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
|
||||
function hideMainOsdControls() {
|
||||
if ('osd' === currentVisibleMenu) {
|
||||
var elem = osdBottomElement;
|
||||
const elem = osdBottomElement;
|
||||
clearHideAnimationEventListeners(elem);
|
||||
elem.classList.add('videoOsdBottom-hidden');
|
||||
dom.addEventListener(elem, transitionEndEventName, onHideAnimationComplete, {
|
||||
|
@ -442,9 +463,9 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
|
||||
function onPointerMove(e) {
|
||||
if ('mouse' === (e.pointerType || (layoutManager.mobile ? 'touch' : 'mouse'))) {
|
||||
var eventX = e.screenX || 0;
|
||||
var eventY = e.screenY || 0;
|
||||
var obj = lastPointerMoveData;
|
||||
const eventX = e.screenX || 0;
|
||||
const eventY = e.screenY || 0;
|
||||
const obj = lastPointerMoveData;
|
||||
|
||||
if (!obj) {
|
||||
lastPointerMoveData = {
|
||||
|
@ -465,7 +486,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
}
|
||||
|
||||
function onInputCommand(e) {
|
||||
var player = currentPlayer;
|
||||
const player = currentPlayer;
|
||||
|
||||
switch (e.detail.command) {
|
||||
case 'left':
|
||||
|
@ -524,7 +545,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
}
|
||||
|
||||
function onRecordingCommand() {
|
||||
var btnRecord = view.querySelector('.btnRecord');
|
||||
const btnRecord = view.querySelector('.btnRecord');
|
||||
|
||||
if (!btnRecord.classList.contains('hide')) {
|
||||
btnRecord.click();
|
||||
|
@ -551,7 +572,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
}
|
||||
|
||||
function onStateChanged(event, state) {
|
||||
var player = this;
|
||||
const player = this;
|
||||
|
||||
if (state.NowPlayingItem) {
|
||||
isEnabled = true;
|
||||
|
@ -569,21 +590,21 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
|
||||
function onVolumeChanged(e) {
|
||||
if (isEnabled) {
|
||||
var player = this;
|
||||
const player = this;
|
||||
updatePlayerVolumeState(player, player.isMuted(), player.getVolume());
|
||||
}
|
||||
}
|
||||
|
||||
function onPlaybackStart(e, state) {
|
||||
console.debug('nowplaying event: ' + e.type);
|
||||
var player = this;
|
||||
const player = this;
|
||||
onStateChanged.call(player, e, state);
|
||||
resetUpNextDialog();
|
||||
}
|
||||
|
||||
function resetUpNextDialog() {
|
||||
comingUpNextDisplayed = false;
|
||||
var dlg = currentUpNextDialog;
|
||||
const dlg = currentUpNextDialog;
|
||||
|
||||
if (dlg) {
|
||||
dlg.destroy();
|
||||
|
@ -603,8 +624,8 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
}
|
||||
|
||||
function onMediaStreamsChanged(e) {
|
||||
var player = this;
|
||||
var state = playbackManager.getPlayerState(player);
|
||||
const player = this;
|
||||
const state = playbackManager.getPlayerState(player);
|
||||
onStateChanged.call(player, {
|
||||
type: 'init'
|
||||
}, state);
|
||||
|
@ -624,7 +645,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
currentPlayer = player;
|
||||
if (!player) return;
|
||||
}
|
||||
var state = playbackManager.getPlayerState(player);
|
||||
const state = playbackManager.getPlayerState(player);
|
||||
onStateChanged.call(player, {
|
||||
type: 'init'
|
||||
}, state);
|
||||
|
@ -649,7 +670,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
destroyStats();
|
||||
destroySubtitleSync();
|
||||
resetUpNextDialog();
|
||||
var player = currentPlayer;
|
||||
const player = currentPlayer;
|
||||
|
||||
if (player) {
|
||||
events.off(player, 'playbackstart', onPlaybackStart);
|
||||
|
@ -667,15 +688,15 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
function onTimeUpdate(e) {
|
||||
// Test for 'currentItem' is required for Firefox since its player spams 'timeupdate' events even being at breakpoint
|
||||
if (isEnabled && currentItem) {
|
||||
var now = new Date().getTime();
|
||||
const now = new Date().getTime();
|
||||
|
||||
if (!(now - lastUpdateTime < 700)) {
|
||||
lastUpdateTime = now;
|
||||
var player = this;
|
||||
const player = this;
|
||||
currentRuntimeTicks = playbackManager.duration(player);
|
||||
var currentTime = playbackManager.currentTime(player);
|
||||
const currentTime = playbackManager.currentTime(player);
|
||||
updateTimeDisplay(currentTime, currentRuntimeTicks, playbackManager.playbackStartTime(player), playbackManager.getBufferedRanges(player));
|
||||
var item = currentItem;
|
||||
const item = currentItem;
|
||||
refreshProgramInfoIfNeeded(player, item);
|
||||
showComingUpNextIfNeeded(player, item, currentTime, currentRuntimeTicks);
|
||||
}
|
||||
|
@ -684,9 +705,9 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
|
||||
function showComingUpNextIfNeeded(player, currentItem, currentTimeTicks, runtimeTicks) {
|
||||
if (runtimeTicks && currentTimeTicks && !comingUpNextDisplayed && !currentVisibleMenu && 'Episode' === currentItem.Type && userSettings.enableNextVideoInfoOverlay()) {
|
||||
var showAtSecondsLeft = runtimeTicks >= 3e10 ? 40 : runtimeTicks >= 24e9 ? 35 : 30;
|
||||
var showAtTicks = runtimeTicks - 1e3 * showAtSecondsLeft * 1e4;
|
||||
var timeRemainingTicks = runtimeTicks - currentTimeTicks;
|
||||
const showAtSecondsLeft = runtimeTicks >= 3e10 ? 40 : runtimeTicks >= 24e9 ? 35 : 30;
|
||||
const showAtTicks = runtimeTicks - 1e3 * showAtSecondsLeft * 1e4;
|
||||
const timeRemainingTicks = runtimeTicks - currentTimeTicks;
|
||||
|
||||
if (currentTimeTicks >= showAtTicks && runtimeTicks >= 6e9 && timeRemainingTicks >= 2e8) {
|
||||
showComingUpNext(player);
|
||||
|
@ -701,7 +722,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
}
|
||||
|
||||
function showComingUpNext(player) {
|
||||
require(['upNextDialog'], function (UpNextDialog) {
|
||||
import('upNextDialog').then(({default: UpNextDialog}) => {
|
||||
if (!(currentVisibleMenu || currentUpNextDialog)) {
|
||||
currentVisibleMenu = 'upnext';
|
||||
comingUpNextDisplayed = true;
|
||||
|
@ -719,15 +740,15 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
|
||||
function refreshProgramInfoIfNeeded(player, item) {
|
||||
if ('TvChannel' === item.Type) {
|
||||
var program = item.CurrentProgram;
|
||||
const program = item.CurrentProgram;
|
||||
|
||||
if (program && program.EndDate) {
|
||||
try {
|
||||
var endDate = datetime.parseISO8601Date(program.EndDate);
|
||||
const endDate = datetime.parseISO8601Date(program.EndDate);
|
||||
|
||||
if (new Date().getTime() >= endDate.getTime()) {
|
||||
console.debug('program info needs to be refreshed');
|
||||
var state = playbackManager.getPlayerState(player);
|
||||
const state = playbackManager.getPlayerState(player);
|
||||
onStateChanged.call(player, {
|
||||
type: 'init'
|
||||
}, state);
|
||||
|
@ -755,9 +776,9 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
}
|
||||
|
||||
function updatePlayerStateInternal(event, player, state) {
|
||||
var playState = state.PlayState || {};
|
||||
const playState = state.PlayState || {};
|
||||
updatePlayPauseState(playState.IsPaused);
|
||||
var supportedCommands = playbackManager.getSupportedCommands(player);
|
||||
const supportedCommands = playbackManager.getSupportedCommands(player);
|
||||
currentPlayerSupportedCommands = supportedCommands;
|
||||
supportsBrightnessChange = -1 !== supportedCommands.indexOf('SetBrightness');
|
||||
updatePlayerVolumeState(player, playState.IsMuted, playState.VolumeLevel);
|
||||
|
@ -768,7 +789,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
|
||||
btnFastForward.disabled = !playState.CanSeek;
|
||||
btnRewind.disabled = !playState.CanSeek;
|
||||
var nowPlayingItem = state.NowPlayingItem || {};
|
||||
const nowPlayingItem = state.NowPlayingItem || {};
|
||||
playbackStartTimeTicks = playState.PlaybackStartTimeTicks;
|
||||
updateTimeDisplay(playState.PositionTicks, nowPlayingItem.RunTimeTicks, playState.PlaybackStartTimeTicks, playState.BufferedRanges || []);
|
||||
updateNowPlayingInfo(player, state);
|
||||
|
@ -779,7 +800,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
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);
|
||||
|
||||
if (nowPlayingItem.RunTimeTicks) {
|
||||
|
@ -816,12 +837,12 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
if (enableProgressByTimeOfDay) {
|
||||
if (nowPlayingPositionSlider && !nowPlayingPositionSlider.dragging) {
|
||||
if (programStartDateMs && programEndDateMs) {
|
||||
var currentTimeMs = (playbackStartTimeTicks + (positionTicks || 0)) / 1e4;
|
||||
var programRuntimeMs = programEndDateMs - programStartDateMs;
|
||||
const currentTimeMs = (playbackStartTimeTicks + (positionTicks || 0)) / 1e4;
|
||||
const programRuntimeMs = programEndDateMs - programStartDateMs;
|
||||
|
||||
if (nowPlayingPositionSlider.value = getDisplayPercentByTimeOfDay(programStartDateMs, programRuntimeMs, currentTimeMs), bufferedRanges.length) {
|
||||
var rangeStart = getDisplayPercentByTimeOfDay(programStartDateMs, programRuntimeMs, (playbackStartTimeTicks + (bufferedRanges[0].start || 0)) / 1e4);
|
||||
var rangeEnd = getDisplayPercentByTimeOfDay(programStartDateMs, programRuntimeMs, (playbackStartTimeTicks + (bufferedRanges[0].end || 0)) / 1e4);
|
||||
const rangeStart = getDisplayPercentByTimeOfDay(programStartDateMs, programRuntimeMs, (playbackStartTimeTicks + (bufferedRanges[0].start || 0)) / 1e4);
|
||||
const rangeEnd = getDisplayPercentByTimeOfDay(programStartDateMs, programRuntimeMs, (playbackStartTimeTicks + (bufferedRanges[0].end || 0)) / 1e4);
|
||||
nowPlayingPositionSlider.setBufferedRanges([{
|
||||
start: rangeStart,
|
||||
end: rangeEnd
|
||||
|
@ -840,7 +861,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
} else {
|
||||
if (nowPlayingPositionSlider && !nowPlayingPositionSlider.dragging) {
|
||||
if (runtimeTicks) {
|
||||
var pct = positionTicks / runtimeTicks;
|
||||
let pct = positionTicks / runtimeTicks;
|
||||
pct *= 100;
|
||||
nowPlayingPositionSlider.value = pct;
|
||||
} else {
|
||||
|
@ -864,9 +885,9 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
}
|
||||
|
||||
function updatePlayerVolumeState(player, isMuted, volumeLevel) {
|
||||
var supportedCommands = currentPlayerSupportedCommands;
|
||||
var showMuteButton = true;
|
||||
var showVolumeSlider = true;
|
||||
const supportedCommands = currentPlayerSupportedCommands;
|
||||
let showMuteButton = true;
|
||||
let showVolumeSlider = true;
|
||||
|
||||
if (-1 === supportedCommands.indexOf('Mute')) {
|
||||
showMuteButton = false;
|
||||
|
@ -914,8 +935,8 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
}
|
||||
|
||||
function updatePlaylist(player) {
|
||||
var btnPreviousTrack = view.querySelector('.btnPreviousTrack');
|
||||
var btnNextTrack = view.querySelector('.btnNextTrack');
|
||||
const btnPreviousTrack = view.querySelector('.btnPreviousTrack');
|
||||
const btnNextTrack = view.querySelector('.btnNextTrack');
|
||||
btnPreviousTrack.classList.remove('hide');
|
||||
btnNextTrack.classList.remove('hide');
|
||||
btnNextTrack.disabled = false;
|
||||
|
@ -928,7 +949,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
return;
|
||||
}
|
||||
|
||||
var html = datetime.getDisplayRunningTime(ticks);
|
||||
let html = datetime.getDisplayRunningTime(ticks);
|
||||
|
||||
if (divider) {
|
||||
html = ' / ' + html;
|
||||
|
@ -938,15 +959,15 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
}
|
||||
|
||||
function onSettingsButtonClick(e) {
|
||||
var btn = this;
|
||||
const btn = this;
|
||||
|
||||
require(['playerSettingsMenu'], function (playerSettingsMenu) {
|
||||
var player = currentPlayer;
|
||||
import('playerSettingsMenu').then(({default: playerSettingsMenu}) => {
|
||||
const player = currentPlayer;
|
||||
|
||||
if (player) {
|
||||
|
||||
// show subtitle offset feature only if player and media support it
|
||||
var showSubOffset = playbackManager.supportSubtitleOffset(player) &&
|
||||
const showSubOffset = playbackManager.supportSubtitleOffset(player) &&
|
||||
playbackManager.canHandleOffsetOnCurrentSubtitle(player);
|
||||
|
||||
playerSettingsMenu.show({
|
||||
|
@ -969,7 +990,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
if ('stats' === selectedOption) {
|
||||
toggleStats();
|
||||
} else if ('suboffset' === selectedOption) {
|
||||
var player = currentPlayer;
|
||||
const player = currentPlayer;
|
||||
if (player) {
|
||||
playbackManager.enableShowingSubtitleOffset(player);
|
||||
toggleSubtitleSync();
|
||||
|
@ -978,8 +999,8 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
}
|
||||
|
||||
function toggleStats() {
|
||||
require(['playerStats'], function (PlayerStats) {
|
||||
var player = currentPlayer;
|
||||
import('playerStats').then(({default: PlayerStats}) => {
|
||||
const player = currentPlayer;
|
||||
|
||||
if (player) {
|
||||
if (statsOverlay) {
|
||||
|
@ -1001,11 +1022,11 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
}
|
||||
|
||||
function showAudioTrackSelection() {
|
||||
var player = currentPlayer;
|
||||
var audioTracks = playbackManager.audioTracks(player);
|
||||
var currentIndex = playbackManager.getAudioStreamIndex(player);
|
||||
var menuItems = audioTracks.map(function (stream) {
|
||||
var opt = {
|
||||
const player = currentPlayer;
|
||||
const audioTracks = playbackManager.audioTracks(player);
|
||||
const currentIndex = playbackManager.getAudioStreamIndex(player);
|
||||
const menuItems = audioTracks.map(function (stream) {
|
||||
const opt = {
|
||||
name: stream.DisplayTitle,
|
||||
id: stream.Index
|
||||
};
|
||||
|
@ -1016,15 +1037,15 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
|
||||
return opt;
|
||||
});
|
||||
var positionTo = this;
|
||||
const positionTo = this;
|
||||
|
||||
require(['actionsheet'], function (actionsheet) {
|
||||
import('actionsheet').then(({default: actionsheet}) => {
|
||||
actionsheet.show({
|
||||
items: menuItems,
|
||||
title: globalize.translate('Audio'),
|
||||
positionTo: positionTo
|
||||
}).then(function (id) {
|
||||
var index = parseInt(id);
|
||||
const index = parseInt(id);
|
||||
|
||||
if (index !== currentIndex) {
|
||||
playbackManager.setAudioStreamIndex(index, player);
|
||||
|
@ -1038,9 +1059,9 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
}
|
||||
|
||||
function showSubtitleTrackSelection() {
|
||||
var player = currentPlayer;
|
||||
var streams = playbackManager.subtitleTracks(player);
|
||||
var currentIndex = playbackManager.getSubtitleStreamIndex(player);
|
||||
const player = currentPlayer;
|
||||
const streams = playbackManager.subtitleTracks(player);
|
||||
let currentIndex = playbackManager.getSubtitleStreamIndex(player);
|
||||
|
||||
if (null == currentIndex) {
|
||||
currentIndex = -1;
|
||||
|
@ -1050,8 +1071,8 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
Index: -1,
|
||||
DisplayTitle: globalize.translate('Off')
|
||||
});
|
||||
var menuItems = streams.map(function (stream) {
|
||||
var opt = {
|
||||
const menuItems = streams.map(function (stream) {
|
||||
const opt = {
|
||||
name: stream.DisplayTitle,
|
||||
id: stream.Index
|
||||
};
|
||||
|
@ -1062,15 +1083,15 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
|
||||
return opt;
|
||||
});
|
||||
var positionTo = this;
|
||||
const positionTo = this;
|
||||
|
||||
require(['actionsheet'], function (actionsheet) {
|
||||
import('actionsheet').then(({default: actionsheet}) => {
|
||||
actionsheet.show({
|
||||
title: globalize.translate('Subtitles'),
|
||||
items: menuItems,
|
||||
positionTo: positionTo
|
||||
}).then(function (id) {
|
||||
var index = parseInt(id);
|
||||
const index = parseInt(id);
|
||||
|
||||
if (index !== currentIndex) {
|
||||
playbackManager.setSubtitleStreamIndex(index, player);
|
||||
|
@ -1086,8 +1107,8 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
}
|
||||
|
||||
function toggleSubtitleSync(action) {
|
||||
require(['subtitleSync'], function (SubtitleSync) {
|
||||
var player = currentPlayer;
|
||||
import('subtitleSync').then(({default: SubtitleSync}) => {
|
||||
const player = currentPlayer;
|
||||
if (subtitleSyncOverlay) {
|
||||
subtitleSyncOverlay.toggle(action);
|
||||
} else if (player) {
|
||||
|
@ -1107,12 +1128,12 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
* Clicked element.
|
||||
* To skip 'click' handling on Firefox/Edge.
|
||||
*/
|
||||
var clickedElement;
|
||||
let clickedElement;
|
||||
|
||||
function onKeyDown(e) {
|
||||
clickedElement = e.target;
|
||||
|
||||
var key = keyboardnavigation.getKeyName(e);
|
||||
const key = keyboardnavigation.getKeyName(e);
|
||||
|
||||
if (!currentVisibleMenu && 32 === e.keyCode) {
|
||||
playbackManager.playPause(currentPlayer);
|
||||
|
@ -1216,10 +1237,11 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
case '6':
|
||||
case '7':
|
||||
case '8':
|
||||
case '9':
|
||||
var percent = parseInt(key, 10) * 10;
|
||||
case '9': {
|
||||
const percent = parseInt(key, 10) * 10;
|
||||
playbackManager.seekPercent(percent, currentPlayer);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1269,11 +1291,11 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
}
|
||||
|
||||
function getChapterBubbleHtml(apiClient, item, chapters, positionTicks) {
|
||||
var chapter;
|
||||
var index = -1;
|
||||
let chapter;
|
||||
let index = -1;
|
||||
|
||||
for (var i = 0, length = chapters.length; i < length; i++) {
|
||||
var currentChapter = chapters[i];
|
||||
for (let i = 0, length = chapters.length; i < length; i++) {
|
||||
const currentChapter = chapters[i];
|
||||
|
||||
if (positionTicks >= currentChapter.StartPositionTicks) {
|
||||
chapter = currentChapter;
|
||||
|
@ -1285,10 +1307,10 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
return null;
|
||||
}
|
||||
|
||||
var src = getImgUrl(item, chapter, index, 400, apiClient);
|
||||
const src = getImgUrl(item, chapter, index, 400, apiClient);
|
||||
|
||||
if (src) {
|
||||
var html = '<div class="chapterThumbContainer">';
|
||||
let html = '<div class="chapterThumbContainer">';
|
||||
html += '<img class="chapterThumb" src="' + src + '" />';
|
||||
html += '<div class="chapterThumbTextContainer">';
|
||||
html += '<div class="chapterThumbText chapterThumbText-dim">';
|
||||
|
@ -1304,15 +1326,15 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
return null;
|
||||
}
|
||||
|
||||
var playPauseClickTimeout;
|
||||
let playPauseClickTimeout;
|
||||
function onViewHideStopPlayback() {
|
||||
if (playbackManager.isPlayingVideo()) {
|
||||
require(['shell'], function (shell) {
|
||||
import('shell').then(({default: shell}) => {
|
||||
shell.disableFullscreen();
|
||||
});
|
||||
|
||||
clearTimeout(playPauseClickTimeout);
|
||||
var player = currentPlayer;
|
||||
const player = currentPlayer;
|
||||
view.removeEventListener('viewbeforehide', onViewHideStopPlayback);
|
||||
releaseCurrentPlayer();
|
||||
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();
|
||||
});
|
||||
|
||||
var currentPlayer;
|
||||
var comingUpNextDisplayed;
|
||||
var currentUpNextDialog;
|
||||
var isEnabled;
|
||||
var currentItem;
|
||||
var recordingButtonManager;
|
||||
var enableProgressByTimeOfDay;
|
||||
var supportsBrightnessChange;
|
||||
var currentVisibleMenu;
|
||||
var statsOverlay;
|
||||
var osdHideTimeout;
|
||||
var lastPointerMoveData;
|
||||
var self = this;
|
||||
var currentPlayerSupportedCommands = [];
|
||||
var currentRuntimeTicks = 0;
|
||||
var lastUpdateTime = 0;
|
||||
var programStartDateMs = 0;
|
||||
var programEndDateMs = 0;
|
||||
var playbackStartTimeTicks = 0;
|
||||
var subtitleSyncOverlay;
|
||||
var nowPlayingVolumeSlider = view.querySelector('.osdVolumeSlider');
|
||||
var nowPlayingVolumeSliderContainer = view.querySelector('.osdVolumeSliderContainer');
|
||||
var nowPlayingPositionSlider = view.querySelector('.osdPositionSlider');
|
||||
var nowPlayingPositionText = view.querySelector('.osdPositionText');
|
||||
var nowPlayingDurationText = view.querySelector('.osdDurationText');
|
||||
var startTimeText = view.querySelector('.startTimeText');
|
||||
var endTimeText = view.querySelector('.endTimeText');
|
||||
var endsAtText = view.querySelector('.endsAtText');
|
||||
var btnRewind = view.querySelector('.btnRewind');
|
||||
var btnFastForward = view.querySelector('.btnFastForward');
|
||||
var transitionEndEventName = dom.whichTransitionEvent();
|
||||
var headerElement = document.querySelector('.skinHeader');
|
||||
var osdBottomElement = document.querySelector('.videoOsdBottom-maincontrols');
|
||||
let currentPlayer;
|
||||
let comingUpNextDisplayed;
|
||||
let currentUpNextDialog;
|
||||
let isEnabled;
|
||||
let currentItem;
|
||||
let recordingButtonManager;
|
||||
let enableProgressByTimeOfDay;
|
||||
let supportsBrightnessChange;
|
||||
let currentVisibleMenu;
|
||||
let statsOverlay;
|
||||
let osdHideTimeout;
|
||||
let lastPointerMoveData;
|
||||
const self = this;
|
||||
let currentPlayerSupportedCommands = [];
|
||||
let currentRuntimeTicks = 0;
|
||||
let lastUpdateTime = 0;
|
||||
let programStartDateMs = 0;
|
||||
let programEndDateMs = 0;
|
||||
let playbackStartTimeTicks = 0;
|
||||
let subtitleSyncOverlay;
|
||||
const nowPlayingVolumeSlider = view.querySelector('.osdVolumeSlider');
|
||||
const nowPlayingVolumeSliderContainer = view.querySelector('.osdVolumeSliderContainer');
|
||||
const nowPlayingPositionSlider = view.querySelector('.osdPositionSlider');
|
||||
const nowPlayingPositionText = view.querySelector('.osdPositionText');
|
||||
const nowPlayingDurationText = view.querySelector('.osdDurationText');
|
||||
const startTimeText = view.querySelector('.startTimeText');
|
||||
const endTimeText = view.querySelector('.endTimeText');
|
||||
const endsAtText = view.querySelector('.endsAtText');
|
||||
const btnRewind = view.querySelector('.btnRewind');
|
||||
const btnFastForward = view.querySelector('.btnFastForward');
|
||||
const transitionEndEventName = dom.whichTransitionEvent();
|
||||
const headerElement = document.querySelector('.skinHeader');
|
||||
const osdBottomElement = document.querySelector('.videoOsdBottom-maincontrols');
|
||||
|
||||
nowPlayingPositionSlider.enableKeyboardDragging();
|
||||
nowPlayingVolumeSlider.enableKeyboardDragging();
|
||||
|
@ -1416,7 +1438,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
passive: true
|
||||
});
|
||||
} catch (e) {
|
||||
require(['appRouter'], function(appRouter) {
|
||||
import('appRouter').then(({default: appRouter}) => {
|
||||
appRouter.goHome();
|
||||
});
|
||||
}
|
||||
|
@ -1493,15 +1515,15 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
destroyStats();
|
||||
destroySubtitleSync();
|
||||
});
|
||||
var lastPointerDown = 0;
|
||||
let lastPointerDown = 0;
|
||||
/* eslint-disable-next-line compat/compat */
|
||||
dom.addEventListener(view, window.PointerEvent ? 'pointerdown' : 'click', function (e) {
|
||||
if (dom.parentWithClass(e.target, ['videoOsdBottom', 'upNextContainer'])) {
|
||||
return void showOsd();
|
||||
}
|
||||
|
||||
var pointerType = e.pointerType || (layoutManager.mobile ? 'touch' : 'mouse');
|
||||
var now = new Date().getTime();
|
||||
const pointerType = e.pointerType || (layoutManager.mobile ? 'touch' : 'mouse');
|
||||
const now = new Date().getTime();
|
||||
|
||||
switch (pointerType) {
|
||||
case 'touch':
|
||||
|
@ -1539,7 +1561,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
if (browser.touch) {
|
||||
dom.addEventListener(view, 'dblclick', onDoubleClick, {});
|
||||
} else {
|
||||
var options = { passive: true };
|
||||
const options = { passive: true };
|
||||
dom.addEventListener(view, 'dblclick', function () {
|
||||
playbackManager.toggleFullscreen(currentPlayer);
|
||||
}, options);
|
||||
|
@ -1554,13 +1576,13 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
});
|
||||
|
||||
nowPlayingPositionSlider.addEventListener('change', function () {
|
||||
var player = currentPlayer;
|
||||
const player = currentPlayer;
|
||||
|
||||
if (player) {
|
||||
var newPercent = parseFloat(this.value);
|
||||
const newPercent = parseFloat(this.value);
|
||||
|
||||
if (enableProgressByTimeOfDay) {
|
||||
var seekAirTimeTicks = newPercent / 100 * (programEndDateMs - programStartDateMs) * 1e4;
|
||||
let seekAirTimeTicks = newPercent / 100 * (programEndDateMs - programStartDateMs) * 1e4;
|
||||
seekAirTimeTicks += 1e4 * programStartDateMs;
|
||||
seekAirTimeTicks -= playbackStartTimeTicks;
|
||||
playbackManager.seek(seekAirTimeTicks, player);
|
||||
|
@ -1574,7 +1596,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
showOsd();
|
||||
if (enableProgressByTimeOfDay) {
|
||||
if (programStartDateMs && programEndDateMs) {
|
||||
var ms = programEndDateMs - programStartDateMs;
|
||||
let ms = programEndDateMs - programStartDateMs;
|
||||
ms /= 100;
|
||||
ms *= value;
|
||||
ms += programStartDateMs;
|
||||
|
@ -1588,13 +1610,13 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
return '--:--';
|
||||
}
|
||||
|
||||
var ticks = currentRuntimeTicks;
|
||||
let ticks = currentRuntimeTicks;
|
||||
ticks /= 100;
|
||||
ticks *= value;
|
||||
var item = currentItem;
|
||||
const item = currentItem;
|
||||
|
||||
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) {
|
||||
return html;
|
||||
|
@ -1627,7 +1649,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
|
||||
if (browser.touch) {
|
||||
(function () {
|
||||
require(['touchHelper'], function (TouchHelper) {
|
||||
import('touchHelper').then(({default: TouchHelper}) => {
|
||||
self.touchHelper = new TouchHelper(view, {
|
||||
swipeYThreshold: 30,
|
||||
triggerOnMove: true,
|
||||
|
@ -1639,5 +1661,6 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
|||
});
|
||||
})();
|
||||
}
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
/* eslint-enable indent */
|
||||
|
|
|
@ -1,20 +1,23 @@
|
|||
define(['displaySettings', 'userSettings', 'autoFocuser'], function (DisplaySettings, userSettings, autoFocuser) {
|
||||
'use strict';
|
||||
import DisplaySettings from 'displaySettings';
|
||||
import * as userSettings from 'userSettings';
|
||||
import autoFocuser from 'autoFocuser';
|
||||
|
||||
/* eslint-disable indent */
|
||||
|
||||
// Shortcuts
|
||||
const UserSettings = userSettings.UserSettings;
|
||||
|
||||
return function (view, params) {
|
||||
export default function (view, params) {
|
||||
function onBeforeUnload(e) {
|
||||
if (hasChanges) {
|
||||
e.returnValue = 'You currently have unsaved changes. Are you sure you wish to leave?';
|
||||
}
|
||||
}
|
||||
|
||||
var settingsInstance;
|
||||
var hasChanges;
|
||||
var userId = params.userId || ApiClient.getCurrentUserId();
|
||||
var currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new UserSettings();
|
||||
let settingsInstance;
|
||||
let hasChanges;
|
||||
const userId = params.userId || ApiClient.getCurrentUserId();
|
||||
const currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new UserSettings();
|
||||
view.addEventListener('viewshow', function () {
|
||||
window.addEventListener('beforeunload', onBeforeUnload);
|
||||
|
||||
|
@ -26,28 +29,23 @@ define(['displaySettings', 'userSettings', 'autoFocuser'], function (DisplaySett
|
|||
userId: userId,
|
||||
element: view.querySelector('.settingsContainer'),
|
||||
userSettings: currentSettings,
|
||||
enableSaveButton: false,
|
||||
enableSaveConfirmation: false,
|
||||
enableSaveButton: true,
|
||||
enableSaveConfirmation: true,
|
||||
autoFocus: autoFocuser.isEnabled()
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
view.addEventListener('change', function () {
|
||||
hasChanges = true;
|
||||
});
|
||||
view.addEventListener('viewbeforehide', function () {
|
||||
window.removeEventListener('beforeunload', onBeforeUnload);
|
||||
hasChanges = false;
|
||||
|
||||
if (settingsInstance) {
|
||||
settingsInstance.submit();
|
||||
}
|
||||
});
|
||||
view.addEventListener('viewdestroy', function () {
|
||||
if (settingsInstance) {
|
||||
settingsInstance.destroy();
|
||||
settingsInstance = null;
|
||||
}
|
||||
});
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
/* eslint-enable indent */
|
||||
|
|
|
@ -1,20 +1,27 @@
|
|||
define(['homescreenSettings', 'dom', 'globalize', 'loading', 'userSettings', 'autoFocuser', 'listViewStyle'], function (HomescreenSettings, dom, globalize, loading, userSettings, autoFocuser) {
|
||||
'use strict';
|
||||
import HomescreenSettings from 'homescreenSettings';
|
||||
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
|
||||
const UserSettings = userSettings.UserSettings;
|
||||
|
||||
return function (view, params) {
|
||||
export default function (view, params) {
|
||||
function onBeforeUnload(e) {
|
||||
if (hasChanges) {
|
||||
e.returnValue = 'You currently have unsaved changes. Are you sure you wish to leave?';
|
||||
}
|
||||
}
|
||||
|
||||
var homescreenSettingsInstance;
|
||||
var hasChanges;
|
||||
var userId = params.userId || ApiClient.getCurrentUserId();
|
||||
var currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new UserSettings();
|
||||
let homescreenSettingsInstance;
|
||||
let hasChanges;
|
||||
const userId = params.userId || ApiClient.getCurrentUserId();
|
||||
const currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new UserSettings();
|
||||
view.addEventListener('viewshow', function () {
|
||||
window.addEventListener('beforeunload', onBeforeUnload);
|
||||
|
||||
|
@ -26,27 +33,23 @@ define(['homescreenSettings', 'dom', 'globalize', 'loading', 'userSettings', 'au
|
|||
userId: userId,
|
||||
element: view.querySelector('.homeScreenSettingsContainer'),
|
||||
userSettings: currentSettings,
|
||||
enableSaveButton: false,
|
||||
enableSaveConfirmation: false,
|
||||
enableSaveButton: true,
|
||||
enableSaveConfirmation: true,
|
||||
autoFocus: autoFocuser.isEnabled()
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
view.addEventListener('change', function () {
|
||||
hasChanges = true;
|
||||
});
|
||||
view.addEventListener('viewbeforehide', function () {
|
||||
hasChanges = false;
|
||||
|
||||
if (homescreenSettingsInstance) {
|
||||
homescreenSettingsInstance.submit();
|
||||
}
|
||||
});
|
||||
view.addEventListener('viewdestroy', function () {
|
||||
if (homescreenSettingsInstance) {
|
||||
homescreenSettingsInstance.destroy();
|
||||
homescreenSettingsInstance = null;
|
||||
}
|
||||
});
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
/* eslint-enable indent */
|
||||
|
|
|
@ -1,20 +1,27 @@
|
|||
define(['playbackSettings', 'dom', 'globalize', 'loading', 'userSettings', 'autoFocuser', 'listViewStyle'], function (PlaybackSettings, dom, globalize, loading, userSettings, autoFocuser) {
|
||||
'use strict';
|
||||
import PlaybackSettings from 'playbackSettings';
|
||||
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
|
||||
const UserSettings = userSettings.UserSettings;
|
||||
|
||||
return function (view, params) {
|
||||
export default function (view, params) {
|
||||
function onBeforeUnload(e) {
|
||||
if (hasChanges) {
|
||||
e.returnValue = 'You currently have unsaved changes. Are you sure you wish to leave?';
|
||||
}
|
||||
}
|
||||
|
||||
var settingsInstance;
|
||||
var hasChanges;
|
||||
var userId = params.userId || ApiClient.getCurrentUserId();
|
||||
var currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new UserSettings();
|
||||
let settingsInstance;
|
||||
let hasChanges;
|
||||
const userId = params.userId || ApiClient.getCurrentUserId();
|
||||
const currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new UserSettings();
|
||||
view.addEventListener('viewshow', function () {
|
||||
window.addEventListener('beforeunload', onBeforeUnload);
|
||||
|
||||
|
@ -26,27 +33,23 @@ define(['playbackSettings', 'dom', 'globalize', 'loading', 'userSettings', 'auto
|
|||
userId: userId,
|
||||
element: view.querySelector('.settingsContainer'),
|
||||
userSettings: currentSettings,
|
||||
enableSaveButton: false,
|
||||
enableSaveConfirmation: false,
|
||||
enableSaveButton: true,
|
||||
enableSaveConfirmation: true,
|
||||
autoFocus: autoFocuser.isEnabled()
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
view.addEventListener('change', function () {
|
||||
hasChanges = true;
|
||||
});
|
||||
view.addEventListener('viewbeforehide', function () {
|
||||
hasChanges = false;
|
||||
|
||||
if (settingsInstance) {
|
||||
settingsInstance.submit();
|
||||
}
|
||||
});
|
||||
view.addEventListener('viewdestroy', function () {
|
||||
if (settingsInstance) {
|
||||
settingsInstance.destroy();
|
||||
settingsInstance = null;
|
||||
}
|
||||
});
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
/* eslint-enable indent */
|
||||
|
|
|
@ -1,20 +1,23 @@
|
|||
define(['subtitleSettings', 'userSettings', 'autoFocuser'], function (SubtitleSettings, userSettings, autoFocuser) {
|
||||
'use strict';
|
||||
import SubtitleSettings from 'subtitleSettings';
|
||||
import * as userSettings from 'userSettings';
|
||||
import autoFocuser from 'autoFocuser';
|
||||
|
||||
/* eslint-disable indent */
|
||||
|
||||
// Shortcuts
|
||||
const UserSettings = userSettings.UserSettings;
|
||||
|
||||
return function (view, params) {
|
||||
export default function (view, params) {
|
||||
function onBeforeUnload(e) {
|
||||
if (hasChanges) {
|
||||
e.returnValue = 'You currently have unsaved changes. Are you sure you wish to leave?';
|
||||
}
|
||||
}
|
||||
|
||||
var subtitleSettingsInstance;
|
||||
var hasChanges;
|
||||
var userId = params.userId || ApiClient.getCurrentUserId();
|
||||
var currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new UserSettings();
|
||||
let subtitleSettingsInstance;
|
||||
let hasChanges;
|
||||
const userId = params.userId || ApiClient.getCurrentUserId();
|
||||
const currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new UserSettings();
|
||||
view.addEventListener('viewshow', function () {
|
||||
window.addEventListener('beforeunload', onBeforeUnload);
|
||||
|
||||
|
@ -26,27 +29,23 @@ define(['subtitleSettings', 'userSettings', 'autoFocuser'], function (SubtitleSe
|
|||
userId: userId,
|
||||
element: view.querySelector('.settingsContainer'),
|
||||
userSettings: currentSettings,
|
||||
enableSaveButton: false,
|
||||
enableSaveConfirmation: false,
|
||||
enableSaveButton: true,
|
||||
enableSaveConfirmation: true,
|
||||
autoFocus: autoFocuser.isEnabled()
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
view.addEventListener('change', function () {
|
||||
hasChanges = true;
|
||||
});
|
||||
view.addEventListener('viewbeforehide', function () {
|
||||
hasChanges = false;
|
||||
|
||||
if (subtitleSettingsInstance) {
|
||||
subtitleSettingsInstance.submit();
|
||||
}
|
||||
});
|
||||
view.addEventListener('viewdestroy', function () {
|
||||
if (subtitleSettingsInstance) {
|
||||
subtitleSettingsInstance.destroy();
|
||||
subtitleSettingsInstance = null;
|
||||
}
|
||||
});
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
/* eslint-enable indent */
|
||||
|
|
|
@ -30,7 +30,7 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager',
|
|||
|
||||
// check for serverId, it won't be present on selectserver
|
||||
if (card && card.getAttribute('data-serverid')) {
|
||||
inputManager.trigger('menu', {
|
||||
inputManager.handleCommand('menu', {
|
||||
sourceElement: card
|
||||
});
|
||||
|
||||
|
|
|
@ -31,11 +31,6 @@
|
|||
|
||||
.emby-tabs-slider {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.layout-mobile .emby-tabs-slider {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.tabContent:not(.is-active) {
|
||||
|
|
|
@ -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">
|
||||
<form class="manualLoginForm hide" style="margin: 0 auto;">
|
||||
<h1 style="margin-top:1em;text-align: left;">${HeaderPleaseSignIn}</h1>
|
||||
<form class="manualLoginForm hide">
|
||||
<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;">
|
||||
<input type="text" name="fakeusernameremembered" tabindex="-1" />
|
||||
<input type="password" name="fakepasswordremembered" tabindex="-1" />
|
||||
|
@ -29,8 +31,6 @@
|
|||
<span>${ButtonCancel}</span>
|
||||
</button>
|
||||
</div>
|
||||
<br/>
|
||||
<br/>
|
||||
</form>
|
||||
|
||||
<div class="visualLoginForm" style="text-align: center;">
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<div class="nowPlayingInfoContainer">
|
||||
<div class="nowPlayingPageImageContainer"></div>
|
||||
<div class="nowPlayingInfoControls">
|
||||
|
||||
|
||||
<div class="flex">
|
||||
|
||||
<div class="nowPlayingInfoContainerMedia">
|
||||
|
@ -15,9 +15,9 @@
|
|||
<div class="nowPlayingArtist nowPlayingSerie"></div>
|
||||
</div>
|
||||
<div class="nowPlayingPageUserDataButtonsTitle"></div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="sliderContainer flex">
|
||||
<div class="positionTime"></div>
|
||||
<div class="nowPlayingPositionSliderContainer">
|
||||
|
@ -25,20 +25,20 @@
|
|||
</div>
|
||||
<div class="runtime"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="nowPlayingButtonsContainer focuscontainer-x justify-content-space-between">
|
||||
|
||||
|
||||
<div class="nowPlayingInfoButtons">
|
||||
|
||||
<button is="paper-icon-button-light" class="btnCommand btnRepeat repeatToggleButton autoSize" title="${ButtonRepeat}"
|
||||
data-command="SetRepeatMode">
|
||||
<span class="material-icons repeat"></span>
|
||||
</button>
|
||||
|
||||
|
||||
<button is="paper-icon-button-light" class="btnRewind btnNowPlayingRewind btnPlayStateCommand autoSize" title="${Rewind}">
|
||||
<span class="material-icons replay_10"></span>
|
||||
</button>
|
||||
|
||||
|
||||
<button is="paper-icon-button-light" class="btnPreviousTrack btnPlayStateCommand autoSize" title="${ButtonPreviousTrack}">
|
||||
<span class="material-icons skip_previous"></span>
|
||||
</button>
|
||||
|
@ -54,7 +54,7 @@
|
|||
<button is="paper-icon-button-light" class="btnPlayStateCommand btnNextTrack autoSize" title="${ButtonNextTrack}">
|
||||
<span class="material-icons skip_next"></span>
|
||||
</button>
|
||||
|
||||
|
||||
<button is="paper-icon-button-light" class="btnPlayStateCommand btnFastForward btnNowPlayingFastForward autoSize" title="${FastForward}">
|
||||
<span class="material-icons forward_30"></span>
|
||||
</button>
|
||||
|
@ -66,7 +66,7 @@
|
|||
</div>
|
||||
|
||||
<div class="nowPlayingSecondaryButtons">
|
||||
|
||||
|
||||
<button is="paper-icon-button-light" class="btnAudioTracks videoButton btnPlayStateCommand autoSize" title="${ButtonAudioTracks}" data-command="GoToSearch">
|
||||
<span class="material-icons audiotrack"></span>
|
||||
</button>
|
||||
|
@ -74,7 +74,7 @@
|
|||
<button is="paper-icon-button-light" class="btnSubtitles videoButton btnPlayStateCommand autoSize" title="${ButtonSubtitles}" data-command="GoToSearch">
|
||||
<span class="material-icons closed_caption"></span>
|
||||
</button>
|
||||
|
||||
|
||||
<div class="nowPlayingPageUserDataButtons"></div>
|
||||
|
||||
<button is="paper-icon-button-light" class="btnToggleFullscreen videoButton btnPlayStateCommand autoSize" title="${ButtonFullscreen}" data-command="ToggleFullscreen">
|
||||
|
|
|
@ -235,9 +235,6 @@ import appHost from 'apphost';
|
|||
}
|
||||
}
|
||||
|
||||
// Alias for backward compatibility
|
||||
export const trigger = handleCommand;
|
||||
|
||||
dom.addEventListener(document, 'click', notify, {
|
||||
passive: true
|
||||
});
|
||||
|
@ -245,8 +242,7 @@ import appHost from 'apphost';
|
|||
/* eslint-enable indent */
|
||||
|
||||
export default {
|
||||
trigger: handleCommand,
|
||||
handle: handleCommand,
|
||||
handleCommand: handleCommand,
|
||||
notify: notify,
|
||||
notifyMouseMove: notifyMouseMove,
|
||||
idleTime: idleTime,
|
||||
|
|
|
@ -90,53 +90,53 @@ export function enable() {
|
|||
|
||||
switch (key) {
|
||||
case 'ArrowLeft':
|
||||
inputManager.handle('left');
|
||||
inputManager.handleCommand('left');
|
||||
break;
|
||||
case 'ArrowUp':
|
||||
inputManager.handle('up');
|
||||
inputManager.handleCommand('up');
|
||||
break;
|
||||
case 'ArrowRight':
|
||||
inputManager.handle('right');
|
||||
inputManager.handleCommand('right');
|
||||
break;
|
||||
case 'ArrowDown':
|
||||
inputManager.handle('down');
|
||||
inputManager.handleCommand('down');
|
||||
break;
|
||||
|
||||
case 'Back':
|
||||
inputManager.handle('back');
|
||||
inputManager.handleCommand('back');
|
||||
break;
|
||||
|
||||
case 'Escape':
|
||||
if (layoutManager.tv) {
|
||||
inputManager.handle('back');
|
||||
inputManager.handleCommand('back');
|
||||
} else {
|
||||
capture = false;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'MediaPlay':
|
||||
inputManager.handle('play');
|
||||
inputManager.handleCommand('play');
|
||||
break;
|
||||
case 'Pause':
|
||||
inputManager.handle('pause');
|
||||
inputManager.handleCommand('pause');
|
||||
break;
|
||||
case 'MediaPlayPause':
|
||||
inputManager.handle('playpause');
|
||||
inputManager.handleCommand('playpause');
|
||||
break;
|
||||
case 'MediaRewind':
|
||||
inputManager.handle('rewind');
|
||||
inputManager.handleCommand('rewind');
|
||||
break;
|
||||
case 'MediaFastForward':
|
||||
inputManager.handle('fastforward');
|
||||
inputManager.handleCommand('fastforward');
|
||||
break;
|
||||
case 'MediaStop':
|
||||
inputManager.handle('stop');
|
||||
inputManager.handleCommand('stop');
|
||||
break;
|
||||
case 'MediaTrackPrevious':
|
||||
inputManager.handle('previoustrack');
|
||||
inputManager.handleCommand('previoustrack');
|
||||
break;
|
||||
case 'MediaTrackNext':
|
||||
inputManager.handle('nexttrack');
|
||||
inputManager.handleCommand('nexttrack');
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
|
@ -116,7 +116,7 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', '
|
|||
}
|
||||
|
||||
function showSearch() {
|
||||
inputManager.trigger('search');
|
||||
inputManager.handleCommand('search');
|
||||
}
|
||||
|
||||
function onHeaderUserButtonClick(e) {
|
||||
|
|
|
@ -36,28 +36,28 @@ define(['connectionManager', 'playbackManager', 'syncPlayManager', 'events', 'in
|
|||
console.debug('Received command: ' + cmd.Name);
|
||||
switch (cmd.Name) {
|
||||
case 'Select':
|
||||
inputManager.trigger('select');
|
||||
inputManager.handleCommand('select');
|
||||
return;
|
||||
case 'Back':
|
||||
inputManager.trigger('back');
|
||||
inputManager.handleCommand('back');
|
||||
return;
|
||||
case 'MoveUp':
|
||||
inputManager.trigger('up');
|
||||
inputManager.handleCommand('up');
|
||||
return;
|
||||
case 'MoveDown':
|
||||
inputManager.trigger('down');
|
||||
inputManager.handleCommand('down');
|
||||
return;
|
||||
case 'MoveLeft':
|
||||
inputManager.trigger('left');
|
||||
inputManager.handleCommand('left');
|
||||
return;
|
||||
case 'MoveRight':
|
||||
inputManager.trigger('right');
|
||||
inputManager.handleCommand('right');
|
||||
return;
|
||||
case 'PageUp':
|
||||
inputManager.trigger('pageup');
|
||||
inputManager.handleCommand('pageup');
|
||||
return;
|
||||
case 'PageDown':
|
||||
inputManager.trigger('pagedown');
|
||||
inputManager.handleCommand('pagedown');
|
||||
return;
|
||||
case 'PlayTrailers':
|
||||
playTrailers(apiClient, cmd.Arguments.ItemId);
|
||||
|
@ -69,25 +69,25 @@ define(['connectionManager', 'playbackManager', 'syncPlayManager', 'events', 'in
|
|||
playbackManager.setQueueShuffleMode(cmd.Arguments.ShuffleMode);
|
||||
break;
|
||||
case 'VolumeUp':
|
||||
inputManager.trigger('volumeup');
|
||||
inputManager.handleCommand('volumeup');
|
||||
return;
|
||||
case 'VolumeDown':
|
||||
inputManager.trigger('volumedown');
|
||||
inputManager.handleCommand('volumedown');
|
||||
return;
|
||||
case 'ChannelUp':
|
||||
inputManager.trigger('channelup');
|
||||
inputManager.handleCommand('channelup');
|
||||
return;
|
||||
case 'ChannelDown':
|
||||
inputManager.trigger('channeldown');
|
||||
inputManager.handleCommand('channeldown');
|
||||
return;
|
||||
case 'Mute':
|
||||
inputManager.trigger('mute');
|
||||
inputManager.handleCommand('mute');
|
||||
return;
|
||||
case 'Unmute':
|
||||
inputManager.trigger('unmute');
|
||||
inputManager.handleCommand('unmute');
|
||||
return;
|
||||
case 'ToggleMute':
|
||||
inputManager.trigger('togglemute');
|
||||
inputManager.handleCommand('togglemute');
|
||||
return;
|
||||
case 'SetVolume':
|
||||
notifyApp();
|
||||
|
@ -102,19 +102,19 @@ define(['connectionManager', 'playbackManager', 'syncPlayManager', 'events', 'in
|
|||
playbackManager.setSubtitleStreamIndex(parseInt(cmd.Arguments.Index));
|
||||
break;
|
||||
case 'ToggleFullscreen':
|
||||
inputManager.trigger('togglefullscreen');
|
||||
inputManager.handleCommand('togglefullscreen');
|
||||
return;
|
||||
case 'GoHome':
|
||||
inputManager.trigger('home');
|
||||
inputManager.handleCommand('home');
|
||||
return;
|
||||
case 'GoToSettings':
|
||||
inputManager.trigger('settings');
|
||||
inputManager.handleCommand('settings');
|
||||
return;
|
||||
case 'DisplayContent':
|
||||
displayContent(cmd, apiClient);
|
||||
break;
|
||||
case 'GoToSearch':
|
||||
inputManager.trigger('search');
|
||||
inputManager.handleCommand('search');
|
||||
return;
|
||||
case 'DisplayMessage':
|
||||
displayMessage(cmd);
|
||||
|
@ -165,19 +165,19 @@ define(['connectionManager', 'playbackManager', 'syncPlayManager', 'events', 'in
|
|||
}
|
||||
} else if (msg.MessageType === 'Playstate') {
|
||||
if (msg.Data.Command === 'Stop') {
|
||||
inputManager.trigger('stop');
|
||||
inputManager.handleCommand('stop');
|
||||
} else if (msg.Data.Command === 'Pause') {
|
||||
inputManager.trigger('pause');
|
||||
inputManager.handleCommand('pause');
|
||||
} else if (msg.Data.Command === 'Unpause') {
|
||||
inputManager.trigger('play');
|
||||
inputManager.handleCommand('play');
|
||||
} else if (msg.Data.Command === 'PlayPause') {
|
||||
inputManager.trigger('playpause');
|
||||
inputManager.handleCommand('playpause');
|
||||
} else if (msg.Data.Command === 'Seek') {
|
||||
playbackManager.seek(msg.Data.SeekPositionTicks);
|
||||
} else if (msg.Data.Command === 'NextTrack') {
|
||||
inputManager.trigger('next');
|
||||
inputManager.handleCommand('next');
|
||||
} else if (msg.Data.Command === 'PreviousTrack') {
|
||||
inputManager.trigger('previous');
|
||||
inputManager.handleCommand('previous');
|
||||
} else {
|
||||
notifyApp();
|
||||
}
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
<div id="selectServerPage" data-role="page" class="page noSecondaryNavPage standalonePage pageContainer fullWidth vertical flex flex-direction-column">
|
||||
<div class="verticalSection flex-shrink-zero flex flex-direction-column" style="margin: 2em 0 1em;">
|
||||
<div class="padded-left padded-right flex align-items-center justify-content-center" style="margin-bottom:2em;">
|
||||
<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 w-100 flex flex-direction-column">
|
||||
<div class="padded-left padded-right flex align-items-center justify-content-center">
|
||||
<h1 class="sectionTitle sectionTitle-cards">${HeaderSelectServer}</h1>
|
||||
</div>
|
||||
<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 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;">
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
"AddToPlaylist": "Zur Wiedergabeliste hinzufügen",
|
||||
"AddUser": "Benutzer anlegen",
|
||||
"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",
|
||||
"Aired": "Ausgestrahlt",
|
||||
"Albums": "Alben",
|
||||
|
@ -446,7 +446,7 @@
|
|||
"HeaderTunerDevices": "Tuner",
|
||||
"HeaderTuners": "Tuner",
|
||||
"HeaderTypeText": "Texteingabe",
|
||||
"HeaderUpcomingOnTV": "Bald im TV",
|
||||
"HeaderUpcomingOnTV": "Demnächst im Fernsehen",
|
||||
"HeaderUploadImage": "Bild hochladen",
|
||||
"HeaderUser": "Benutzer",
|
||||
"HeaderUsers": "Benutzer",
|
||||
|
@ -461,7 +461,7 @@
|
|||
"Help": "Hilfe",
|
||||
"Hide": "Verstecke",
|
||||
"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",
|
||||
"Images": "Bilder",
|
||||
"ImportFavoriteChannelsHelp": "Wenn aktiviert, werden nur auf dem Tuner favorisierte Kanäle importiert.",
|
||||
|
@ -509,7 +509,7 @@
|
|||
"LabelBlockContentWithTags": "Blockiere Inhalte mit Tags:",
|
||||
"LabelBurnSubtitles": "Untertitel einbrennen:",
|
||||
"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",
|
||||
"LabelCertificatePassword": "Zertifikat Passwort:",
|
||||
"LabelCertificatePasswordHelp": "Wenn Dein Zertifikat ein Passwort benötigt, gib es hier ein.",
|
||||
|
@ -548,7 +548,7 @@
|
|||
"LabelDisplayOrder": "Anzeigereihenfolge:",
|
||||
"LabelDisplaySpecialsWithinSeasons": "Zeige Sonderinhalt innerhalb der Staffel in der er ausgestrahlt wurde",
|
||||
"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:",
|
||||
"LabelDropImageHere": "Fotos hierher ziehen oder klicken im zu browsen.",
|
||||
"LabelDropShadow": "Schlagschatten:",
|
||||
|
@ -562,9 +562,9 @@
|
|||
"LabelEnableDlnaClientDiscoveryInterval": "Client-Entdeckungs Intervall (Sekunden)",
|
||||
"LabelEnableDlnaClientDiscoveryIntervalHelp": "Ermittelt die Zeit in Sekunden zwischen SSDP Suchanfragen die durch Jellyfin ausgeführt wurden.",
|
||||
"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",
|
||||
"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",
|
||||
"LabelEnableDlnaServerHelp": "Erlaubt UPnP Geräten in Ihrem Netzwerk den Zugriff und die Wiedergabe von Inhalten.",
|
||||
"LabelEnableHardwareDecodingFor": "Aktiviere Hardware-Decoding für:",
|
||||
|
@ -577,14 +577,14 @@
|
|||
"LabelEvent": "Ereignis:",
|
||||
"LabelEveryXMinutes": "Alle:",
|
||||
"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",
|
||||
"LabelFileOrUrl": "Datei oder URL:",
|
||||
"LabelFinish": "Fertig",
|
||||
"LabelFont": "Schriftart:",
|
||||
"LabelForgotPasswordUsernameHelp": "Bitte gib deinen Benutzernamen ein, falls du dich daran erinnerst.",
|
||||
"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",
|
||||
"LabelGroupMoviesIntoCollectionsHelp": "Wenn Filmlisten angezeigt werden, dann werden Filme, die zu einer Collection gehören, als ein gruppiertes Element angezeigt.",
|
||||
"LabelEncoderPreset": "H264 Encoding Voreinstellung:",
|
||||
|
@ -597,42 +597,42 @@
|
|||
"LabelIconMaxHeight": "Maximale Iconhöhe:",
|
||||
"LabelIconMaxHeightHelp": "Maximale Auflösung für durch UPnP übermittelte Icons:icon.",
|
||||
"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.",
|
||||
"LabelImageFetchersHelp": "Aktiviere und ordne deine bevorzugten Bildquellen nach Präferenzen.",
|
||||
"LabelImageType": "Bildtyp:",
|
||||
"LabelImportOnlyFavoriteChannels": "Beschränke auf favorisierte Kanäle",
|
||||
"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:",
|
||||
"LabelKeepUpTo": "Fortführen:",
|
||||
"LabelKidsCategories": "Kinderkategorien:",
|
||||
"LabelKodiMetadataDateFormat": "Veröffentlichungsdatum Format:",
|
||||
"LabelKodiMetadataDateFormatHelp": "Alle Daten innerhalb von NFO-Dateien werden in diesem Format analysiert.",
|
||||
"LabelKodiMetadataEnableExtraThumbs": "Kopiere Extrafanart in Extrathumbs",
|
||||
"LabelKodiMetadataDateFormatHelp": "Alle Daten innerhalb von NFO-Dateien werden in diesem Format gelesen.",
|
||||
"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.",
|
||||
"LabelKodiMetadataEnablePathSubstitution": "Aktiviere Pfadersetzung",
|
||||
"LabelKodiMetadataEnablePathSubstitutionHelp": "Aktiviert die Pfadersetzung für Bildpfade durch Benutzung der Server Pfadersetzung Einstellungen.",
|
||||
"LabelKodiMetadataSaveImagePaths": "Speicher Bildpfade innerhalb der NFO Dateien",
|
||||
"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:",
|
||||
"LabelKodiMetadataUserHelp": "Aktivieren, um den \"Gesehen\" Status in NFO-Dateien zu speichern, damit diese von anderen Anwendungen verwendet werden können.",
|
||||
"LabelKodiMetadataUser": "Speichere den \"Gesehen\" Status von Benutzern in NFO-Dateien für:",
|
||||
"LabelKodiMetadataUserHelp": "\"Gesehen\" Status in NFO-Dateien speichern, damit diese von anderen Anwendungen verwendet werden können.",
|
||||
"LabelLanNetworks": "Lokale Netzwerke:",
|
||||
"LabelLanguage": "Sprache:",
|
||||
"LabelLineup": "TV Programm:",
|
||||
"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",
|
||||
"LabelLoginDisclaimer": "Anmeldung Haftungsausschluss:",
|
||||
"LabelLoginDisclaimerHelp": "Dies wird am Boden des Anmeldebildschirms angezeigt.",
|
||||
"LabelLoginDisclaimerHelp": "Diese Nachricht wird am unteren Ende des Anmeldebildschirms angezeigt.",
|
||||
"LabelManufacturer": "Hersteller:",
|
||||
"LabelManufacturerUrl": "Hersteller URL",
|
||||
"LabelManufacturerUrl": "Hersteller-URL",
|
||||
"LabelMatchType": "Übereinstimmungstyp:",
|
||||
"LabelMaxBackdropsPerItem": "Maximale Anzahl von Hintergründen pro Element:",
|
||||
"LabelMaxChromecastBitrate": "Max Chromcast Datenrate:",
|
||||
"LabelMaxParentalRating": "Höchste erlaubte elterlich Bewertung:",
|
||||
"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:",
|
||||
"LabelMaxStreamingBitrate": "Maximale Streaming-Qualität:",
|
||||
"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.",
|
||||
"LabelMetadataReaders": "Metadatenleser:",
|
||||
"LabelMetadataReadersHelp": "Lege deine bevorzugte lokale Metadatenquelle fest und ordne sie nach Prioritäten. Die erste Datei die gefunden wird, wird verwendet.",
|
||||
"LabelMetadataSavers": "Metadatenspeicherer:",
|
||||
"LabelMetadataSaversHelp": "Wähle das Dateiformat in dem deine Metadaten gespeichert werden sollen.",
|
||||
"LabelMetadataSavers": "Metadaten-Speicherer:",
|
||||
"LabelMetadataSaversHelp": "Wähle das Dateiformat, in dem deine Metadaten gespeichert werden sollen.",
|
||||
"LabelMethod": "Methode:",
|
||||
"LabelMinBackdropDownloadWidth": "Minimale Breite für zu herunterladende Hintergründe:",
|
||||
"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:",
|
||||
"LabelMinResumePercentageHelp": "Titel werden als \"Ungesehen\" eingetragen, wenn sie vor dieser Zeit gestoppt werden.",
|
||||
"LabelMinScreenshotDownloadWidth": "Minimale Breite für zu herunterladende Screenshot:",
|
||||
|
@ -661,7 +661,7 @@
|
|||
"LabelMonitorUsers": "Überwache Aktivität von:",
|
||||
"LabelMovieCategories": "Filmkategorien:",
|
||||
"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):",
|
||||
"LabelMusicStreamingTranscodingBitrate": "Musik-Transkodierung Bitrate:",
|
||||
"LabelMusicStreamingTranscodingBitrateHelp": "Wähle die maximale Bitrate für das streamen von Musik.",
|
||||
|
@ -767,7 +767,7 @@
|
|||
"LabelTitle": "Titel:",
|
||||
"LabelTrackNumber": "Stück Nummer:",
|
||||
"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:",
|
||||
"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:",
|
||||
|
@ -801,7 +801,7 @@
|
|||
"Large": "Groß",
|
||||
"LatestFromLibrary": "Neueste {0}",
|
||||
"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",
|
||||
"List": "Liste",
|
||||
"LiveBroadcasts": "Liveübertragungen",
|
||||
|
@ -841,7 +841,7 @@
|
|||
"MessageConfirmRemoveMediaLocation": "Bist du dir sicher diese Medienquelle entfernen zu wollen?",
|
||||
"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.",
|
||||
"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.",
|
||||
"MessageCreateAccountAt": "Erstellen Sie ein Konto bei {0}",
|
||||
"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.",
|
||||
"MoveLeft": "Nach links bewegen",
|
||||
"MoveRight": "Nach rechts bewegen",
|
||||
"MovieLibraryHelp": "Überprüfe den {0}Filmbenennungsguide{1}.",
|
||||
"MovieLibraryHelp": "Überprüfe den {0}Filmbenennungsleitfaden{1}.",
|
||||
"Movies": "Filme",
|
||||
"Mute": "Stumm",
|
||||
"MySubtitles": "Meine Untertitel",
|
||||
|
@ -1122,7 +1122,7 @@
|
|||
"SearchForMissingMetadata": "Suche nach fehlenden Metadaten",
|
||||
"SearchForSubtitles": "Suche nach Untertiteln",
|
||||
"SearchResults": "Suchergebnisse",
|
||||
"SendMessage": "Sende Nachricht",
|
||||
"SendMessage": "Nachricht senden",
|
||||
"Series": "Serien",
|
||||
"SeriesCancelled": "Serie abgebrochen.",
|
||||
"SeriesDisplayOrderHelp": "Sortiere Episoden nach Ausstrahlungsdatum, DVD Reihenfolge oder absoluter Nummerierung.",
|
||||
|
@ -1222,7 +1222,7 @@
|
|||
"TrackCount": "{0} Titel",
|
||||
"Trailers": "Trailer",
|
||||
"Tuesday": "Dienstag",
|
||||
"TvLibraryHelp": "Überprüfe den {0}Serienbenennungsguide{1}.",
|
||||
"TvLibraryHelp": "Überprüfe den {0}Serienbenennungsleitfaden{1}.",
|
||||
"Uniform": "Einheitlich",
|
||||
"UninstallPluginConfirmation": "Möchtest du {0} wirklich deinstallieren?",
|
||||
"UninstallPluginHeader": "Plugin deinstallieren",
|
||||
|
@ -1232,7 +1232,7 @@
|
|||
"Up": "Hoch",
|
||||
"Upload": "Hochladen",
|
||||
"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",
|
||||
"ValueConditions": "Bedingungen: {0}",
|
||||
"ValueEpisodeCount": "{0} Episoden",
|
||||
|
@ -1321,7 +1321,7 @@
|
|||
"LabelVersion": "Version:",
|
||||
"LabelVersionNumber": "Version {0}",
|
||||
"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}",
|
||||
"MessageImageFileTypeAllowed": "Nur JPEG- und PNG-Dateien werden unterstützt.",
|
||||
"MessageImageTypeNotSelected": "Bitte wähle einen Bildtyp aus dem Drop-Down Menü aus.",
|
||||
|
@ -1396,7 +1396,7 @@
|
|||
"Thumb": "Miniaturansicht",
|
||||
"TitleSupport": "Hilfe",
|
||||
"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",
|
||||
"HeaderFavoriteBooks": "Lieblingsbücher",
|
||||
"HeaderFavoriteMovies": "Lieblingsfilme",
|
||||
|
@ -1433,7 +1433,7 @@
|
|||
"LabelAudioBitrate": "Tonbitrate:",
|
||||
"ButtonAddImage": "Bild hinzufügen",
|
||||
"LabelSize": "Größe:",
|
||||
"LabelTranscodes": "Transkoder:",
|
||||
"LabelTranscodes": "Transcodiert:",
|
||||
"LabelTranscodingProgress": "Transcodierungsfortschritt:",
|
||||
"LabelAudioBitDepth": "Audio-Bittiefe:",
|
||||
"LabelPleaseRestart": "Die Änderungen werden nach dem manuellen Neuladen des Webclients wirksam.",
|
||||
|
@ -1456,7 +1456,7 @@
|
|||
"MessageNoServersAvailable": "Die automatische Serversuche konnte keinen Server finden.",
|
||||
"LabelPlayer": "Schauspieler:",
|
||||
"MediaInfoCodecTag": "Codec Tag",
|
||||
"SubtitleOffset": "Untertitelvorlauf",
|
||||
"SubtitleOffset": "Untertitel-Synchronisierung",
|
||||
"PlaybackData": "Wiedergabeinformationen",
|
||||
"OptionThumbCard": "Vorschaukarte",
|
||||
"OptionPosterCard": "Posterkarte",
|
||||
|
@ -1469,8 +1469,8 @@
|
|||
"OptionRandom": "Zufällig",
|
||||
"TabNetworking": "Netzwerk",
|
||||
"VideoRange": "Videobereich",
|
||||
"ButtonSplit": "Aufteilen",
|
||||
"SelectAdminUsername": "Bitte einen Benutzernamen für das Administrator-Konto auswählen.",
|
||||
"ButtonSplit": "Trennen",
|
||||
"SelectAdminUsername": "Bitte wählen Sie einen Benutzernamen für den Administrator-Account.",
|
||||
"HeaderNavigation": "Navigation",
|
||||
"CopyStreamURLError": "Beim Kopieren der URL ist ein Fehler aufgetreten.",
|
||||
"MessageConfirmAppExit": "Wirklich verlassen?",
|
||||
|
@ -1547,7 +1547,7 @@
|
|||
"MessageSyncPlayGroupDoesNotExist": "Konnte der Gruppe nicht beitreten, da sie nicht existiert.",
|
||||
"MessageSyncPlayPlaybackPermissionRequired": "Wiedergabegenehmigung erforderlich.",
|
||||
"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.",
|
||||
"MessageSyncPlayUserJoined": "<b>{0}</b> ist der Gruppe beigetreten.",
|
||||
"MessageSyncPlayDisabled": "SyncPlay deaktiviert.",
|
||||
|
@ -1588,5 +1588,8 @@
|
|||
"HeaderNewRepository": "Neues Repository",
|
||||
"MessageNoRepositories": "Keine Repositories.",
|
||||
"ButtonPlayer": "Player",
|
||||
"Writers": "Autoren"
|
||||
"Writers": "Autoren",
|
||||
"ClearQueue": "Wiedergabeliste leeren",
|
||||
"StopPlayback": "Wiedergabe anhalten",
|
||||
"ViewAlbumArtist": "Zeige Albumkünstler"
|
||||
}
|
||||
|
|
|
@ -1574,5 +1574,10 @@
|
|||
"EnableDetailsBannerHelp": "Display a banner image at the top of the item details page.",
|
||||
"EnableDetailsBanner": "Details Banner",
|
||||
"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"
|
||||
}
|
||||
|
|
|
@ -1054,7 +1054,7 @@
|
|||
"MessageSyncPlayDisabled": "SyncPlay disabled.",
|
||||
"MessageSyncPlayUserJoined": "<b>{0}</b> has joined 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.",
|
||||
"MessageSyncPlayPlaybackPermissionRequired": "Playback permission required.",
|
||||
"MessageSyncPlayGroupDoesNotExist": "Failed to join group because it does not exist.",
|
||||
|
|
|
@ -2,5 +2,23 @@
|
|||
"AddToCollection": "Aldoni al kolekto",
|
||||
"Actor": "Aktoro",
|
||||
"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."
|
||||
}
|
||||
|
|
|
@ -1652,6 +1652,6 @@
|
|||
"ButtonPlayer": "Reproductor",
|
||||
"Writers": "Escritores",
|
||||
"ClearQueue": "Eliminar cola",
|
||||
"StopPlayback": "Detener la reproducción",
|
||||
"StopPlayback": "Detener reproducción",
|
||||
"ViewAlbumArtist": "Ver artista del álbum"
|
||||
}
|
||||
|
|
|
@ -1572,5 +1572,9 @@
|
|||
"EnableFasterAnimationsHelp": "Usar animaciones y transiciones más rapidas",
|
||||
"EnableFasterAnimations": "Animaciones más rápidas",
|
||||
"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"
|
||||
}
|
||||
|
|
|
@ -1561,5 +1561,12 @@
|
|||
"EnableFasterAnimationsHelp": "Usar animaciones y transiciones más rápidas",
|
||||
"EnableFasterAnimations": "Animaciones más rápidas",
|
||||
"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"
|
||||
}
|
||||
|
|
|
@ -354,7 +354,7 @@
|
|||
"OptionPlayCount": "Toistokerrat",
|
||||
"OptionPlayed": "Toistettu",
|
||||
"OptionOnAppStartup": "Käynnistyksen yhteydessä",
|
||||
"OptionNew": "Uusi...",
|
||||
"OptionNew": "Uusi…",
|
||||
"OptionNameSort": "Nimi",
|
||||
"OptionMonday": "Maanantai",
|
||||
"OptionMissingEpisode": "Puuttuvat jaksot",
|
||||
|
@ -428,7 +428,7 @@
|
|||
"LabelPreferredDisplayLanguage": "Ensisijainen näyttökieli:",
|
||||
"LabelOriginalTitle": "Alkuperäinen nimi:",
|
||||
"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)",
|
||||
"LabelDownloadLanguages": "Latauskielet:",
|
||||
"LabelDisplaySpecialsWithinSeasons": "Näytä erityiset jaksot kausien sisällä, jolloin ne ilmestyivät",
|
||||
|
@ -1206,7 +1206,7 @@
|
|||
"LabelOverview": "Yleiskatsaus:",
|
||||
"LabelPasswordResetProvider": "Salasanan nollauksen palveluntarjoaja:",
|
||||
"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):",
|
||||
"LabelMusicStreamingTranscodingBitrateHelp": "Määritä enimmäisnopeus musiikkia suoratoistettaessa.",
|
||||
"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.",
|
||||
"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)",
|
||||
"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"
|
||||
}
|
||||
|
|
|
@ -139,7 +139,7 @@
|
|||
"BoxRear": "Dos de boîtier",
|
||||
"Browse": "Parcourir",
|
||||
"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.",
|
||||
"ButtonAccept": "Accepter",
|
||||
"ButtonAdd": "Ajouter",
|
||||
|
|
|
@ -1537,7 +1537,7 @@
|
|||
"MessageSyncPlayGroupDoesNotExist": "Impossible de rejoindre le groupe car il n'existe pas.",
|
||||
"MessageSyncPlayPlaybackPermissionRequired": "Autorisation de lecture requise.",
|
||||
"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.",
|
||||
"MessageSyncPlayUserJoined": "<b>{0}</b> a rejoint le groupe.",
|
||||
"MessageSyncPlayDisabled": "SyncPlay désactivé.",
|
||||
|
@ -1545,7 +1545,7 @@
|
|||
"LabelSyncPlayAccess": "Accès SyncPlay",
|
||||
"LabelSyncPlayAccessNone": "Désactivé pour cet utilisateur",
|
||||
"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.",
|
||||
"MessageSyncPlayErrorMissingSession": "Impossible d'activer SyncPlay ! Session manquante.",
|
||||
"MessageSyncPlayErrorNoActivePlayer": "Aucun lecteur actif trouvé. SyncPlay a été désactivé.",
|
||||
|
@ -1568,5 +1568,10 @@
|
|||
"EnableFasterAnimationsHelp": "Utiliser des animations et des transitions plus rapides",
|
||||
"EnableFasterAnimations": "Animations plus rapides",
|
||||
"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"
|
||||
}
|
||||
|
|
|
@ -164,7 +164,13 @@
|
|||
"ValueSpecialEpisodeName": "Extra - {0}",
|
||||
"VersionNumber": "Version {0}",
|
||||
"Absolute": "Absolut",
|
||||
"Actor": "Schauspiler",
|
||||
"AccessRestrictedTryAgainLater": "Zuegriff isch momentan beschränkt. Probier bitte später nomau. ",
|
||||
"ButtonSyncPlay": "SyncPlay"
|
||||
"Actor": "Schauspieler",
|
||||
"AccessRestrictedTryAgainLater": "Zuegriff isch momentan beschränkt. Probiers bitte spöter nomol.",
|
||||
"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"
|
||||
}
|
||||
|
|
|
@ -73,10 +73,10 @@
|
|||
"ButtonAddScheduledTaskTrigger": "ट्रिगर जोड़ें",
|
||||
"ButtonAddMediaLibrary": "मीडिया लाइब्रेरी जोड़ें",
|
||||
"ButtonAddImage": "छवि जोड़ें",
|
||||
"ButtonAdd": "जोड़ना",
|
||||
"ButtonAdd": "जोड़ें",
|
||||
"UnsupportedPlayback": "Jellyfin DRM द्वारा संरक्षित सामग्री को डिक्रिप्ट नहीं कर सकता है, लेकिन सभी सामग्री की परवाह किए बिना, संरक्षित शीर्षकों सहित प्रयास किया जाएगा। एन्क्रिप्शन या अन्य असमर्थित सुविधाओं जैसे इंटरेक्टिव शीर्षक के कारण कुछ फाइलें पूरी तरह से काली दिखाई दे सकती हैं।",
|
||||
"BoxRear": "बॉक्स (पीछे)",
|
||||
"Box": "डिब्बा",
|
||||
"Box": "बॉक्स",
|
||||
"Books": "पुस्तकें",
|
||||
"BookLibraryHelp": "ऑडियो और पाठ्य पुस्तकें समर्थित हैं। {0} पुस्तक नामकरण गाइड {1} की समीक्षा करें।",
|
||||
"Blacklist": "काला सूची में डालना",
|
||||
|
@ -113,5 +113,9 @@
|
|||
"AllowOnTheFlySubtitleExtraction": "मक्खी पर उपशीर्षक निष्कर्षण की अनुमति दें",
|
||||
"Album": "एल्बम",
|
||||
"AddItemToCollectionHelp": "उनके लिए खोज करके संग्रह में आइटम जोड़ें और उन्हें संग्रह में जोड़ने के लिए उनके राइट-क्लिक या टैप मेनू का उपयोग करें।",
|
||||
"ButtonSyncPlay": "SyncPlay"
|
||||
"ButtonSyncPlay": "SyncPlay",
|
||||
"BrowsePluginCatalogMessage": "उपलब्ध प्लगिन्स देखने के लिए हमारे कैटलॉग को ब्राउज़ करें।",
|
||||
"Browse": "ब्राउज़",
|
||||
"BoxSet": "बॉक्स सेट",
|
||||
"BurnSubtitlesHelp": "निर्धारित करता है कि वीडियो ट्रांसकोडिंग करते समय सर्वर को उपशीर्षक बर्न-इन करना चाहिए। इससे बचने से प्रदर्शन में बहुत सुधार होगा। छवि आधारित उपशीर्षक (VOBSUB, PGS, SUB, IDX, …) एवं ASS अथवा SSA जैसे उपशीर्षक बर्न-इन करने के लिए ऑटो का चयन करें।"
|
||||
}
|
||||
|
|
|
@ -1521,7 +1521,7 @@
|
|||
"TabDVR": "DVR",
|
||||
"HeaderDVR": "DVR",
|
||||
"SaveChanges": "Változtatások mentése",
|
||||
"MessageSyncPlayGroupWait": "<b>{0}</b> bufferel...",
|
||||
"MessageSyncPlayGroupWait": "<b>{0}</b> pufferel…",
|
||||
"MessageSyncPlayUserLeft": "<b>{0}</b> elhagyta a csoportot.",
|
||||
"MessageSyncPlayUserJoined": "<b>{0}</b> csatlakozott a csoporthoz.",
|
||||
"MessageSyncPlayDisabled": "SyncPlay letiltva.",
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
"AllowMediaConversion": "メディアの変換を許可する",
|
||||
"AllowMediaConversionHelp": "メディア変換機能へのアクセスを許可もしくは、拒否します。",
|
||||
"AllowOnTheFlySubtitleExtraction": "字幕の抽出の許可/拒否",
|
||||
"AllowOnTheFlySubtitleExtractionHelp": "埋め込まれた字幕は、ビデオのトランスコーディングを防ぐために、ビデオから抽出してプレーンテキストでクライアントに配信できます。 システムによっては、これに時間がかかり、抽出中にビデオの再生が止まることがあります。 これを無効にし、埋め込み字幕がクライアントデバイスでネイティブにサポートされていない場合、ビデオのトランスコーディングが強制されます。",
|
||||
"AllowOnTheFlySubtitleExtractionHelp": "埋め込まれた字幕は、ビデオのトランスコードを防ぐために、ビデオから抽出してプレーンテキストでクライアントに配信できます。 システムによっては、これに時間がかかり、抽出中にビデオの再生が止まることがあります。 これを無効にし、埋め込み字幕がクライアントデバイスでネイティブにサポートされていない場合、ビデオのトランスコードが強制されます。",
|
||||
"AllowRemoteAccess": "Jellyfin Serverへのリモート接続の許可。",
|
||||
"AllowRemoteAccessHelp": "チェックが入っていない場合すべてのリモート接続をブロックします。",
|
||||
"AllowedRemoteAddressesHelp": "リモート接続を許可するネットワークのIPアドレスまたはIPアドレス/マスク長 空白のままにすると、すべてのリモートアドレスが許可されます。",
|
||||
|
@ -47,7 +47,7 @@
|
|||
"BirthLocation": "生まれた場所",
|
||||
"BirthPlaceValue": "生まれた場所: {0}",
|
||||
"Blacklist": "ブラックリスト",
|
||||
"BookLibraryHelp": "オーディオブックとテキストブックに対応しています。{0}Jellyfinブック命名ガイド{1}.",
|
||||
"BookLibraryHelp": "オーディオブックとテキストブックに対応しています。{0} の資料、ブック命名ガイド {1} を参照。",
|
||||
"Books": "ブック",
|
||||
"Box": "ボックス",
|
||||
"BoxRear": "ボックス(後)",
|
||||
|
@ -1176,5 +1176,18 @@
|
|||
"LabelEnableBlastAliveMessagesHelp": "ネットワーク上の他の UPnP デバイスによってサーバーが確実に検出されない場合、この設定を有効にします。",
|
||||
"LabelEnableAutomaticPortMapHelp": "ルーター上のパブリックポートを、UPnP 経由でサーバーのローカルポートに自動的に転送します。これはルータのモデルやネットワーク構成によっては動作しない場合があります。変更はサーバーを再起動するまで適用されません。",
|
||||
"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><baseurl></b></code>",
|
||||
"LabelEnableSingleImageInDidlLimitHelp": "Didl 内に複数の画像が埋め込まれている場合、一部のデバイスでは正しくレンダリングされません。",
|
||||
"LabelEnableRealtimeMonitorHelp": "ファイルへの変更は、サポートされているファイルシステム上ですぐに処理されます。",
|
||||
"LabelEnableHttpsHelp": "構成された HTTPS ポートからサーバーがリッスンするのを有効にします。この機能を有効にするには、適切な証明書を設定する必要があります。"
|
||||
}
|
||||
|
|
|
@ -98,5 +98,6 @@
|
|||
"ButtonPreviousTrack": "मागचा ट्रॅक",
|
||||
"ButtonPlay": "प्ले",
|
||||
"ButtonPause": "पॉझ",
|
||||
"ButtonSyncPlay": "SyncPlay"
|
||||
"ButtonSyncPlay": "SyncPlay",
|
||||
"Collections": "संग्रह"
|
||||
}
|
||||
|
|
|
@ -103,5 +103,16 @@
|
|||
"Genres": "Genre-genre",
|
||||
"Collections": "Koleksi",
|
||||
"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"
|
||||
}
|
||||
|
|
|
@ -1470,8 +1470,8 @@
|
|||
"Artist": "Artist",
|
||||
"AlbumArtist": "Albumartist",
|
||||
"Album": "Album",
|
||||
"LabelLibraryPageSizeHelp": "Velger hvor mange elementer som skal bli vist på en bibliotek side. Velg 0 for å deaktivere.",
|
||||
"LabelLibraryPageSize": "Biblioteks side størrelse:",
|
||||
"LabelLibraryPageSizeHelp": "Angir hvor mange elementer som vises på en bibliotekside. Velg 0 for å deaktivere oppdeling i sider.",
|
||||
"LabelLibraryPageSize": "Størrelse på bibliotekside:",
|
||||
"LabelDeinterlaceMethod": "Deinterlacing metode:",
|
||||
"HeaderFavoritePlaylists": "Favorittspillelister",
|
||||
"DeinterlaceMethodHelp": "Velg deinterlacing metoden som skal bli brukt når man transkoder interlaced innhold.",
|
||||
|
@ -1564,10 +1564,13 @@
|
|||
"EnableDecodingColorDepth10Vp9": "Aktiver maskinvaredekoding for VP9",
|
||||
"EnableDecodingColorDepth10Hevc": "Aktiver maskinvaredekoding for 10-Bit HEVC",
|
||||
"ButtonPlayer": "Spiller",
|
||||
"ButtonCast": "Rollebesetning",
|
||||
"ButtonCast": "Cast",
|
||||
"Writers": "Forfattere",
|
||||
"TabRepositories": "Kilder",
|
||||
"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.",
|
||||
"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"
|
||||
}
|
||||
|
|
|
@ -846,7 +846,7 @@
|
|||
"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.",
|
||||
"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.",
|
||||
"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.",
|
||||
|
@ -1559,5 +1559,12 @@
|
|||
"HeaderHttpsSettings": "HTTPS instellingen",
|
||||
"HeaderDVR": "DVR",
|
||||
"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"
|
||||
}
|
||||
|
|
|
@ -23,5 +23,7 @@
|
|||
"Add": "Upend",
|
||||
"Actor": "Privateer",
|
||||
"AccessRestrictedTryAgainLater": "Ye arn't appearin' on the list o' the livin'!",
|
||||
"ButtonSyncPlay": "SyncPlay"
|
||||
"ButtonSyncPlay": "SyncPlay",
|
||||
"AddedOnValue": "Upended {0}",
|
||||
"AddToCollection": "Add to ye collection"
|
||||
}
|
||||
|
|
|
@ -564,7 +564,7 @@
|
|||
"LabelDynamicExternalId": "Id de {0}:",
|
||||
"LabelEasyPinCode": "Código pin fácil:",
|
||||
"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",
|
||||
"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",
|
||||
|
@ -601,7 +601,7 @@
|
|||
"LabelH264Crf": "CRF de codificação H264:",
|
||||
"LabelEncoderPreset": "Preset de codificação H264:",
|
||||
"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:",
|
||||
"LabelHomeScreenSectionValue": "Seção {0} da tela inicial:",
|
||||
"LabelHttpsPort": "Número da porta local de HTTPS:",
|
||||
|
@ -626,7 +626,7 @@
|
|||
"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.",
|
||||
"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:",
|
||||
"LabelKodiMetadataUserHelp": "Salva os dados para arquivos NFO para que outras aplicações possam usar.",
|
||||
"LabelLanNetworks": "Redes LAN:",
|
||||
|
@ -662,7 +662,7 @@
|
|||
"LabelMethod": "Método:",
|
||||
"LabelMinBackdropDownloadWidth": "Tamanho mínimo da imagem de fundo para download:",
|
||||
"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:",
|
||||
"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:",
|
||||
|
@ -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.",
|
||||
"LabelMovieRecordingPath": "Local de gravação de filme (opcional):",
|
||||
"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:",
|
||||
"LabelNewName": "Novo nome:",
|
||||
"LabelNewPassword": "Nova senha:",
|
||||
|
@ -1323,7 +1323,7 @@
|
|||
"Horizontal": "Horizontal",
|
||||
"LabelAbortedByServerShutdown": "(Abortado devido ao desligamento do servidor)",
|
||||
"LabelCache": "Cache:",
|
||||
"LabelLogs": "Logs:",
|
||||
"LabelLogs": "Registros:",
|
||||
"LabelProfileCodecs": "Codecs:",
|
||||
"LabelSkin": "Tema:",
|
||||
"LabelStatus": "Status:",
|
||||
|
@ -1529,7 +1529,7 @@
|
|||
"MessageSyncPlayGroupDoesNotExist": "Falha ao participar de grupo pois o mesmo não existe.",
|
||||
"MessageSyncPlayPlaybackPermissionRequired": "É necessária permissão de reprodução.",
|
||||
"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.",
|
||||
"MessageSyncPlayUserJoined": "<b>{0}</b> se juntou ao grupo.",
|
||||
"MessageSyncPlayDisabled": "SyncPlay desativado.",
|
||||
|
|
|
@ -320,7 +320,7 @@
|
|||
"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.",
|
||||
"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",
|
||||
"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)",
|
||||
|
@ -605,7 +605,7 @@
|
|||
"OptionMissingEpisode": "Episódios em Falta",
|
||||
"OptionMonday": "Segunda",
|
||||
"OptionNameSort": "Nome",
|
||||
"OptionNew": "Nova...",
|
||||
"OptionNew": "Nova…",
|
||||
"OptionNone": "Nenhum",
|
||||
"OptionOnAppStartup": "Ao iniciar a aplicação",
|
||||
"OptionOnInterval": "Num intervalo",
|
||||
|
@ -768,13 +768,13 @@
|
|||
"AllowMediaConversion": "Permitir 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",
|
||||
"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.",
|
||||
"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.",
|
||||
"AlwaysPlaySubtitles": "Mostrar sempre legendas",
|
||||
"AlwaysPlaySubtitles": "Reproduzir Sempre",
|
||||
"AlwaysPlaySubtitlesHelp": "Legendas correspondentes à língua preferencial vão ser sempre carregadas, independentemente do idioma do áudio.",
|
||||
"AnyLanguage": "Qualquer idioma",
|
||||
"AnyLanguage": "Qualquer linguagem",
|
||||
"Artists": "Artistas",
|
||||
"Ascending": "Crescente",
|
||||
"AspectRatio": "Proporção",
|
||||
|
@ -785,7 +785,7 @@
|
|||
"BirthPlaceValue": "Local de nascimento: {0}",
|
||||
"Blacklist": "Lista Negra",
|
||||
"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",
|
||||
"Collections": "Coleções",
|
||||
"Favorites": "Favoritos",
|
||||
|
@ -831,7 +831,7 @@
|
|||
"Browse": "Procurar",
|
||||
"BoxRear": "Caixa (verso)",
|
||||
"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",
|
||||
"AsManyAsPossible": "Tantos quanto possível",
|
||||
"Art": "Capa",
|
||||
|
@ -963,7 +963,7 @@
|
|||
"LabelAbortedByServerShutdown": "(Abortado - Servidor encerrado)",
|
||||
"Kids": "Crianças",
|
||||
"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.",
|
||||
"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",
|
||||
|
@ -1041,7 +1041,7 @@
|
|||
"HeaderPlayOn": "Reproduzir Em",
|
||||
"HeaderNextVideoPlayingInValue": "Reprodução do próximo vídeo 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",
|
||||
"ManageLibrary": "Gerir biblioteca",
|
||||
"HeaderLibraryOrder": "Ordenação da Biblioteca",
|
||||
|
@ -1102,7 +1102,7 @@
|
|||
"HeaderNewDevices": "Novos Dispositivos",
|
||||
"HeaderRecordingOptions": "Opções de Gravaçã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><baseurl></b></code>",
|
||||
"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.",
|
||||
"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",
|
||||
"HeaderMyDevice": "O Meu Dispositivo",
|
||||
"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",
|
||||
"LabelPlayer": "Reprodutor:",
|
||||
"LabelServerName": "Nome do servidor:",
|
||||
|
@ -1326,7 +1326,7 @@
|
|||
"No": "Não",
|
||||
"OptionRegex": "Expressão Regular",
|
||||
"OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)",
|
||||
"NoSubtitles": " Sem legendas",
|
||||
"NoSubtitles": "Sem legendas",
|
||||
"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.",
|
||||
"NextUp": "A Seguir",
|
||||
|
@ -1337,7 +1337,7 @@
|
|||
"Name": "Nome",
|
||||
"MusicVideo": "Videoclip",
|
||||
"MusicArtist": "Artista de Música",
|
||||
"MusicAlbum": " Álbum de Música",
|
||||
"MusicAlbum": "Álbum de Música",
|
||||
"MoreMediaInfo": "Informações",
|
||||
"MediaInfoBitrate": "Taxa de Bits",
|
||||
"LabelUserAgent": "User-Agent:",
|
||||
|
@ -1453,5 +1453,54 @@
|
|||
"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.",
|
||||
"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"
|
||||
}
|
||||
|
|
|
@ -669,7 +669,7 @@
|
|||
"LabelMaxResumePercentageHelp": "Произведения предполагаются воспроизведёнными полностью, при остановке с данного момента.",
|
||||
"LabelMaxScreenshotsPerItem": "Макс. число снимков экрана на элемент:",
|
||||
"LabelMaxStreamingBitrate": "Макс. качество трансляции:",
|
||||
"LabelMaxStreamingBitrateHelp": "Укажите макс. потоковую скорость трансляции.",
|
||||
"LabelMaxStreamingBitrateHelp": "Укажите максимальный битрейт трансляции.",
|
||||
"LabelMessageText": "Текст сообщения:",
|
||||
"LabelMessageTitle": "Заголовок сообщения:",
|
||||
"LabelMetadata": "Метаданные:",
|
||||
|
@ -697,8 +697,8 @@
|
|||
"LabelMoviePrefix": "Префикс фильма:",
|
||||
"LabelMoviePrefixHelp": "При применении к названиям фильмов префикса, введите его здесь, чтобы он правильно обрабатывался на сервере.",
|
||||
"LabelMovieRecordingPath": "Путь к записываемым фильмам (необязательно):",
|
||||
"LabelMusicStreamingTranscodingBitrate": "Поток. скорость перекодировки музыки:",
|
||||
"LabelMusicStreamingTranscodingBitrateHelp": "Укажите максимальную потоковую скорость при трансляции музыки.",
|
||||
"LabelMusicStreamingTranscodingBitrate": "Битрейт перекодировки музыки:",
|
||||
"LabelMusicStreamingTranscodingBitrateHelp": "Укажите максимальный битрейт при трансляции музыки.",
|
||||
"LabelName": "Имя:",
|
||||
"LabelNewName": "Новое название:",
|
||||
"LabelNewPassword": "Новый пароль:",
|
||||
|
@ -752,8 +752,8 @@
|
|||
"LabelRecordingPathHelp": "Укажите стандартное расположение для сохранения записей. Если поле пусто, то используется папка program data сервера.",
|
||||
"LabelRefreshMode": "Режим обновления:",
|
||||
"LabelReleaseDate": "Дата выпуска:",
|
||||
"LabelRemoteClientBitrateLimit": "Предел потоковой скорости интернет-трансляции, Мбит/с:",
|
||||
"LabelRemoteClientBitrateLimitHelp": "Необязательный предел скорости на поток для каждого из сетевых устройств. Это целесообразно, чтобы не допускать запрашивание устройствами более высокой скорости, чем способно пропустить интернет-соединение. Это может привести к увеличению загрузки процессора на вашем сервере, при динамическом перекодировании видео до более низкой скорости.",
|
||||
"LabelRemoteClientBitrateLimit": "Ограничение битрейта интернет-трансляции, Мбит/с:",
|
||||
"LabelRemoteClientBitrateLimitHelp": "Необязательное ограничение битрейта для каждого из сетевых устройств. Может потребоваться, чтобы не допускать использования устройствами большего битрейта, чем способно пропустить интернет-соединение. Может привести к росту загрузки процессора на вашем сервере, так как потребуется динамическое перекодирование видео для снижения битрейта.",
|
||||
"LabelRuntimeMinutes": "Длительность, мин:",
|
||||
"LabelSaveLocalMetadata": "Сохранять иллюстрации внутри медиапапок",
|
||||
"LabelSaveLocalMetadataHelp": "При сохранении иллюстраций внутри медиапапок, те помещаются в месте, где их можно легко править.",
|
||||
|
@ -824,7 +824,7 @@
|
|||
"LabelUserAgent": "Агент пользователя:",
|
||||
"LabelUserLibrary": "Медиатека пользователя:",
|
||||
"LabelUserLibraryHelp": "Выберите, чью медиатеку отображать на устройстве. Не заполняйте, чтобы наследовать параметр по умолчанию.",
|
||||
"LabelUserRemoteClientBitrateLimitHelp": "Переопределияются глобальные значения по умолчанию, установленные в параметрах воспроизведения сервера.",
|
||||
"LabelUserRemoteClientBitrateLimitHelp": "Переопределяются глобальные значения по умолчанию, установленные в параметрах воспроизведения сервера.",
|
||||
"LabelUsername": "Имя пользователя:",
|
||||
"LabelVaapiDevice": "Устройство VA-API:",
|
||||
"LabelVaapiDeviceHelp": "Это является узлом отрисовки, который используется для аппаратного ускорения.",
|
||||
|
@ -864,7 +864,7 @@
|
|||
"MediaInfoAnamorphic": "Анаморфность",
|
||||
"MediaInfoAspectRatio": "Соотношение сторон",
|
||||
"MediaInfoBitDepth": "Глубина цвета",
|
||||
"MediaInfoBitrate": "Поток. ск-ть",
|
||||
"MediaInfoBitrate": "Битрейт",
|
||||
"MediaInfoChannels": "Каналы",
|
||||
"MediaInfoCodec": "Кодек",
|
||||
"MediaInfoCodecTag": "Тег кодека",
|
||||
|
@ -1431,7 +1431,7 @@
|
|||
"LabelPlayer": "Проигрыватель:",
|
||||
"MoreMediaInfo": "О медиаданных",
|
||||
"LabelVideoCodec": "Видео кодек:",
|
||||
"LabelVideoBitrate": "Потоковая скорость аудио:",
|
||||
"LabelVideoBitrate": "Битрейт видео:",
|
||||
"LabelTranscodingProgress": "Прогресс перекодировки:",
|
||||
"LabelTranscodingFramerate": "Частота кадров перекодировки:",
|
||||
"LabelSize": "Размер:",
|
||||
|
@ -1442,7 +1442,7 @@
|
|||
"LabelAudioSampleRate": "Частота дискретизации аудио:",
|
||||
"LabelAudioCodec": "Аудио кодек:",
|
||||
"LabelAudioChannels": "Аудио каналы:",
|
||||
"LabelAudioBitrate": "Потоковая скорость аудио:",
|
||||
"LabelAudioBitrate": "Битрейт аудио:",
|
||||
"LabelAudioBitDepth": "Битовая глубина аудио:",
|
||||
"HeaderFavoriteBooks": "Избранные книги",
|
||||
"CopyStreamURL": "Копировать URL потока",
|
||||
|
@ -1532,7 +1532,7 @@
|
|||
"MessageSyncPlayGroupDoesNotExist": "Не удалось присоединиться к группе, поскольку она не существует.",
|
||||
"MessageSyncPlayPlaybackPermissionRequired": "Требуется разрешение на воспроизведение.",
|
||||
"MessageSyncPlayNoGroupsAvailable": "Никакие группы не доступны. Сначала начните воспроизводить что-нибудь.",
|
||||
"MessageSyncPlayGroupWait": "<b>{0}</b> буферизуется...",
|
||||
"MessageSyncPlayGroupWait": "<b>{0}</b> буферизуется…",
|
||||
"MessageSyncPlayUserLeft": "<b>{0}</b> покинул группу.",
|
||||
"MessageSyncPlayUserJoined": "<b>{0}</b> присоединил группу.",
|
||||
"LabelSyncPlayAccessNone": "Отключено для данного пользователя",
|
||||
|
|
|
@ -1528,7 +1528,7 @@
|
|||
"MessageSyncPlayGroupDoesNotExist": "Pripojenie ku skupine zlyhalo, pretože skupina neexistuje.",
|
||||
"MessageSyncPlayPlaybackPermissionRequired": "K prehrávaniu je potrebné povolenie.",
|
||||
"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.",
|
||||
"MessageSyncPlayUserJoined": "Používateľ <b>{0}</b> sa pripojil k skupine.",
|
||||
"MessageSyncPlayDisabled": "SyncPlay zakázaný.",
|
||||
|
|
|
@ -85,7 +85,7 @@
|
|||
"AllowMediaConversion": "Dovoli pretvarjanje predstavnosti",
|
||||
"AllowMediaConversionHelp": "Dovoli ali zavrni dostop do pretvarjanja predstavnosti.",
|
||||
"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.",
|
||||
"AllowRemoteAccessHelp": "Če ni označeno, bodo vse oddaljene povezave blokirane.",
|
||||
"Artists": "Izvajalci",
|
||||
|
@ -105,12 +105,12 @@
|
|||
"Movies": "Filmi",
|
||||
"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.",
|
||||
"AlwaysPlaySubtitles": "Vedno predvajaj podnapise",
|
||||
"AlwaysPlaySubtitles": "Vedno prikaži",
|
||||
"AlwaysPlaySubtitlesHelp": "Podnapisi, ki se ujemajo s prednostnim jezikom bodo naloženi ne glede na jezik zvoka.",
|
||||
"AnamorphicVideoNotSupported": "Anamorfni video ni podprt",
|
||||
"AnyLanguage": "Poljubni jezik",
|
||||
"Anytime": "Kadarkoli",
|
||||
"AroundTime": "Okrog {0}",
|
||||
"AroundTime": "Okrog",
|
||||
"Art": "Umetnost",
|
||||
"AsManyAsPossible": "Kolikor je mogoče",
|
||||
"Ascending": "Naraščajoče",
|
||||
|
@ -131,12 +131,12 @@
|
|||
"BirthDateValue": "Rojen: {0}",
|
||||
"BirthLocation": "Kraj rojstva",
|
||||
"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",
|
||||
"BoxRear": "Ovitek (zadnja stran)",
|
||||
"Browse": "Brskaj",
|
||||
"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",
|
||||
"ButtonAdd": "Dodaj",
|
||||
"MessageNamedServerConfigurationUpdatedWithValue": "Oddelek nastavitve strežnika {0} je bil posodobljen",
|
||||
|
@ -288,7 +288,7 @@
|
|||
"ValueSpecialEpisodeName": "Poseben - {0}",
|
||||
"Shows": "Serije",
|
||||
"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.",
|
||||
"DisplayMissingEpisodesWithinSeasons": "Prikaži manjkajoče epizode znotraj sezon",
|
||||
"DisplayInOtherHomeScreenSections": "Prikaži na razdelkih domačega zaslona kot so najnovejše in nadaljuj gledanje",
|
||||
|
@ -311,7 +311,7 @@
|
|||
"HeaderSeasons": "Sezone",
|
||||
"HeaderSchedule": "Urnik",
|
||||
"HeaderScenes": "Scene",
|
||||
"HeaderRunningTasks": "Aktivni procesi",
|
||||
"HeaderRunningTasks": "Aktivna opravila",
|
||||
"HeaderRestart": "Ponovni zagon",
|
||||
"HeaderResponseProfileHelp": "Profili odziva omogočajo prilagoditev informacij poslanih sprejemniku pri predvajanju določenih vrst predstavnosti.",
|
||||
"HeaderResponseProfile": "Profil odziva",
|
||||
|
@ -336,7 +336,7 @@
|
|||
"HeaderPasswordReset": "Ponastavi geslo",
|
||||
"HeaderPassword": "Geslo",
|
||||
"HeaderParentalRatings": "Ocena za starše",
|
||||
"HeaderOnNow": "Zdaj",
|
||||
"HeaderOnNow": "Trenutno",
|
||||
"HeaderNextVideoPlayingInValue": "Naslednji video se bo predvajal čez {0}",
|
||||
"HeaderNextEpisodePlayingInValue": "Naslednja epizoda se bo predvajala čez {0}",
|
||||
"HeaderNewDevices": "Nove naprave",
|
||||
|
@ -393,21 +393,21 @@
|
|||
"HeaderEditImages": "Uredi slike",
|
||||
"HeaderDownloadSync": "Prenos in sinhronizacija",
|
||||
"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",
|
||||
"HeaderDevices": "Naprave",
|
||||
"HeaderDeveloperInfo": "Informacije o razvijalcu",
|
||||
"HeaderDetectMyDevices": "Zaznaj moje naprave",
|
||||
"HeaderDeleteTaskTrigger": "Izbriši sprožilec opravila",
|
||||
"HeaderDeleteProvider": "Izbriši ponudnika",
|
||||
"HeaderDeleteItems": "Izbriši predmete",
|
||||
"HeaderDeleteItem": "Izbriši predmet",
|
||||
"HeaderDeleteItems": "Izbriši vsebine",
|
||||
"HeaderDeleteItem": "Izbriši vsebino",
|
||||
"HeaderDeleteDevice": "Izbriši napravo",
|
||||
"HeaderDefaultRecordingSettings": "Privzete nastavitve snemanja",
|
||||
"HeaderDateIssued": "Datum izdaje",
|
||||
"HeaderCustomDlnaProfiles": "Profili po meri",
|
||||
"HeaderContinueListening": "Nadaljuj s poslušanjem",
|
||||
"HeaderConnectionFailure": "Napaka pri povezovanju",
|
||||
"HeaderConnectionFailure": "Napaka povezave",
|
||||
"HeaderConnectToServer": "Poveži s strežnikom",
|
||||
"HeaderConfirmRevokeApiKey": "Prekliči API ključ",
|
||||
"HeaderConfirmProfileDeletion": "Potrdi brisanje profila",
|
||||
|
@ -649,7 +649,7 @@
|
|||
"LabelEnableDlnaClientDiscoveryInterval": "Interval odkrivanja sprejemnikov (sekunde)",
|
||||
"LabelEnableBlastAliveMessagesHelp": "Omogočite, če imajo UPnP naprave težave z zaznavanjem strežnika v omrežju.",
|
||||
"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",
|
||||
"LabelEmbedAlbumArtDidl": "Vdelaj grafike albuma v Didl",
|
||||
"LabelEasyPinCode": "Enostavna PIN koda:",
|
||||
|
@ -662,7 +662,7 @@
|
|||
"LabelDisplayName": "Prikazano ime:",
|
||||
"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.",
|
||||
"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.",
|
||||
"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.",
|
||||
|
@ -762,7 +762,7 @@
|
|||
"LabelKodiMetadataEnablePathSubstitutionHelp": "Omogoči zamenjavo poti za poti slik glede na nastavitve zamenjave poti strežnika.",
|
||||
"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.",
|
||||
"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><baseurl></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.",
|
||||
"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.",
|
||||
|
@ -853,7 +853,7 @@
|
|||
"Quality": "Kvaliteta",
|
||||
"PlaceFavoriteChannelsAtBeginning": "Postavi priljubljene kanale na začetek",
|
||||
"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.",
|
||||
"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}.",
|
||||
|
@ -1276,5 +1276,56 @@
|
|||
"EnableDetailsBannerHelp": "Prikaži sliko pasice na vrhu strani podrobnosti.",
|
||||
"EnableDetailsBanner": "Pasica podrobnosti",
|
||||
"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"
|
||||
}
|
||||
|
|
|
@ -1518,5 +1518,8 @@
|
|||
"LabelStable": "Stabil",
|
||||
"HeaderSyncPlaySelectGroup": "Gå med i en grupp",
|
||||
"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"
|
||||
}
|
||||
|
|
|
@ -1134,7 +1134,7 @@
|
|||
"RunAtStartup": "开机时启动",
|
||||
"Runtime": "播放时长",
|
||||
"Saturday": "星期六",
|
||||
"Save": "储存",
|
||||
"Save": "保存",
|
||||
"SaveSubtitlesIntoMediaFolders": "保存字幕到媒体所在文件夹",
|
||||
"SaveSubtitlesIntoMediaFoldersHelp": "将字幕存储在视频文件旁边可以跟方便的管理他们。",
|
||||
"ScanForNewAndUpdatedFiles": "扫描新的和有修改的文件",
|
||||
|
@ -1526,7 +1526,7 @@
|
|||
"MessageSyncPlayCreateGroupDenied": "需要权限以创建群组。",
|
||||
"MessageSyncPlayGroupDoesNotExist": "无法加入群组,因为该群组不存在。",
|
||||
"MessageSyncPlayPlaybackPermissionRequired": "需要播放权限。",
|
||||
"MessageSyncPlayGroupWait": "<b>{0}</b> 正在缓冲...",
|
||||
"MessageSyncPlayGroupWait": "<b>{0}</b> 正在缓冲…",
|
||||
"MessageSyncPlayUserLeft": "<b>{0}</b> 已离开群组。",
|
||||
"MessageSyncPlayUserJoined": "<b>{0}</b> 已加入该群组。",
|
||||
"LabelSyncPlayAccessNone": "禁用此用户",
|
||||
|
|
|
@ -503,5 +503,8 @@
|
|||
"BrowsePluginCatalogMessage": "瀏覽我們的插件目錄以查看可用的插件。",
|
||||
"BoxRear": "盒裝(背面)",
|
||||
"BoxSet": "套裝",
|
||||
"Box": "盒裝"
|
||||
"Box": "盒裝",
|
||||
"Composer": "作曲家",
|
||||
"ButtonPreviousTrack": "上一曲",
|
||||
"ButtonNextTrack": "下一曲"
|
||||
}
|
||||
|
|
|
@ -1656,5 +1656,21 @@
|
|||
"ApiKeysCaption": "目前已啟用的API金鑰列表",
|
||||
"ButtonTogglePlaylist": "播放清單",
|
||||
"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硬體解碼"
|
||||
}
|
||||
|
|
|
@ -449,12 +449,8 @@ html {
|
|||
color: #c33;
|
||||
}
|
||||
|
||||
.repeatButton-active {
|
||||
color: #4285f4;
|
||||
}
|
||||
|
||||
.shuffleQueue-active {
|
||||
color: #4285f4 !important;
|
||||
.buttonActive {
|
||||
color: #00a4dc !important;
|
||||
}
|
||||
|
||||
.card:focus .cardBox.visualCardBox,
|
||||
|
|
|
@ -441,12 +441,8 @@ html {
|
|||
color: #c33;
|
||||
}
|
||||
|
||||
.repeatButton-active {
|
||||
color: #4285f4;
|
||||
}
|
||||
|
||||
.shuffleQueue-active {
|
||||
color: #4285f4 !important;
|
||||
.buttonActive {
|
||||
color: #00a4dc !important;
|
||||
}
|
||||
|
||||
.cardBox:not(.visualCardBox) .cardPadder {
|
||||
|
|
|
@ -109,7 +109,7 @@ html {
|
|||
.formDialogHeader:not(.formDialogHeader-clear),
|
||||
.paperList,
|
||||
.visualCardBox {
|
||||
background-color: #242424;
|
||||
background-color: #202020;
|
||||
}
|
||||
|
||||
.defaultCardBackground1 {
|
||||
|
@ -412,12 +412,8 @@ html {
|
|||
color: #c33;
|
||||
}
|
||||
|
||||
.repeatButton-active {
|
||||
color: #4285f4;
|
||||
}
|
||||
|
||||
.shuffleQueue-active {
|
||||
color: #4285f4 !important;
|
||||
.buttonActive {
|
||||
color: #00a4dc !important;
|
||||
}
|
||||
|
||||
.card:focus .cardBox.visualCardBox,
|
||||
|
@ -436,6 +432,7 @@ html {
|
|||
|
||||
.layout-desktop ::-webkit-scrollbar {
|
||||
width: 0.4em;
|
||||
height: 0.4em;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb:horizontal,
|
||||
|
|
|
@ -427,12 +427,8 @@ html {
|
|||
color: #c33;
|
||||
}
|
||||
|
||||
.repeatButton-active {
|
||||
color: #4285f4;
|
||||
}
|
||||
|
||||
.shuffleQueue-active {
|
||||
color: #4285f4 !important;
|
||||
.buttonActive {
|
||||
color: #00a4dc !important;
|
||||
}
|
||||
|
||||
.cardBox:not(.visualCardBox) .cardPadder {
|
||||
|
|
|
@ -542,12 +542,8 @@ a[data-role=button] {
|
|||
color: #c33;
|
||||
}
|
||||
|
||||
.repeatButton-active {
|
||||
color: #4285f4;
|
||||
}
|
||||
|
||||
.shuffleQueue-active {
|
||||
color: #4285f4 !important;
|
||||
.buttonActive {
|
||||
color: #00a4dc !important;
|
||||
}
|
||||
|
||||
.personCard .cardScalable {
|
||||
|
|
|
@ -421,12 +421,8 @@ html {
|
|||
color: #c33;
|
||||
}
|
||||
|
||||
.repeatButton-active {
|
||||
color: #4285f4;
|
||||
}
|
||||
|
||||
.shuffleQueue-active {
|
||||
color: #4285f4 !important;
|
||||
.buttonActive {
|
||||
color: #00a4dc !important;
|
||||
}
|
||||
|
||||
.cardBox:not(.visualCardBox) .cardPadder {
|
||||
|
|
472
yarn.lock
472
yarn.lock
|
@ -2,14 +2,7 @@
|
|||
# yarn lockfile v1
|
||||
|
||||
|
||||
"@babel/code-frame@^7.0.0":
|
||||
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":
|
||||
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a"
|
||||
integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==
|
||||
|
@ -25,58 +18,35 @@
|
|||
invariant "^2.2.4"
|
||||
semver "^5.5.0"
|
||||
|
||||
"@babel/core@>=7.2.2", "@babel/core@>=7.9.0":
|
||||
version "7.10.3"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.3.tgz#73b0e8ddeec1e3fdd7a2de587a60e17c440ec77e"
|
||||
integrity sha512-5YqWxYE3pyhIi84L84YcwjeEgS+fa7ZjK6IBVGTjDVfm64njkR2lfDhVR5OudLk8x2GK59YoSyVv+L/03k1q9w==
|
||||
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==
|
||||
"@babel/core@>=7.2.2", "@babel/core@>=7.9.0", "@babel/core@^7.10.5":
|
||||
version "7.10.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.5.tgz#1f15e2cca8ad9a1d78a38ddba612f5e7cdbbd330"
|
||||
integrity sha512-O34LQooYVDXPl7QWCdW9p4NR+QlzOr7xShPPJz8GsuCU3/8ua/wqTr7gmnxXv+WBESiGU/G5s16i6tUvHkNb+w==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.10.4"
|
||||
"@babel/generator" "^7.10.4"
|
||||
"@babel/helper-module-transforms" "^7.10.4"
|
||||
"@babel/generator" "^7.10.5"
|
||||
"@babel/helper-module-transforms" "^7.10.5"
|
||||
"@babel/helpers" "^7.10.4"
|
||||
"@babel/parser" "^7.10.4"
|
||||
"@babel/parser" "^7.10.5"
|
||||
"@babel/template" "^7.10.4"
|
||||
"@babel/traverse" "^7.10.4"
|
||||
"@babel/types" "^7.10.4"
|
||||
"@babel/traverse" "^7.10.5"
|
||||
"@babel/types" "^7.10.5"
|
||||
convert-source-map "^1.7.0"
|
||||
debug "^4.1.0"
|
||||
gensync "^1.0.0-beta.1"
|
||||
json5 "^2.1.2"
|
||||
lodash "^4.17.13"
|
||||
lodash "^4.17.19"
|
||||
resolve "^1.3.2"
|
||||
semver "^5.4.1"
|
||||
source-map "^0.5.0"
|
||||
|
||||
"@babel/generator@^7.10.3", "@babel/generator@^7.10.4":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.4.tgz#e49eeed9fe114b62fa5b181856a43a5e32f5f243"
|
||||
integrity sha512-toLIHUIAgcQygFZRAQcsLQV3CBuX6yOIru1kJk/qqqvcRmZrYe6WavZTSG+bB8MxhnL9YPf+pKQfuiP161q7ng==
|
||||
"@babel/generator@^7.10.5":
|
||||
version "7.10.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.5.tgz#1b903554bc8c583ee8d25f1e8969732e6b829a69"
|
||||
integrity sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig==
|
||||
dependencies:
|
||||
"@babel/types" "^7.10.4"
|
||||
"@babel/types" "^7.10.5"
|
||||
jsesc "^2.5.1"
|
||||
lodash "^4.17.13"
|
||||
source-map "^0.5.0"
|
||||
|
||||
"@babel/helper-annotate-as-pure@^7.10.4":
|
||||
|
@ -180,18 +150,18 @@
|
|||
dependencies:
|
||||
"@babel/types" "^7.10.4"
|
||||
|
||||
"@babel/helper-module-transforms@^7.10.1", "@babel/helper-module-transforms@^7.10.4":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.4.tgz#ca1f01fdb84e48c24d7506bb818c961f1da8805d"
|
||||
integrity sha512-Er2FQX0oa3nV7eM1o0tNCTx7izmQtwAQsIiaLRWtavAAEcskb0XJ5OjJbVrYXWOTr8om921Scabn4/tzlx7j1Q==
|
||||
"@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.10.5":
|
||||
version "7.10.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.5.tgz#120c271c0b3353673fcdfd8c053db3c544a260d6"
|
||||
integrity sha512-4P+CWMJ6/j1W915ITJaUkadLObmCRRSC234uctJfn/vHrsLNxsR8dwlcXv9ZhJWzl77awf+mWXSZEKt5t0OnlA==
|
||||
dependencies:
|
||||
"@babel/helper-module-imports" "^7.10.4"
|
||||
"@babel/helper-replace-supers" "^7.10.4"
|
||||
"@babel/helper-simple-access" "^7.10.4"
|
||||
"@babel/helper-split-export-declaration" "^7.10.4"
|
||||
"@babel/template" "^7.10.4"
|
||||
"@babel/types" "^7.10.4"
|
||||
lodash "^4.17.13"
|
||||
"@babel/types" "^7.10.5"
|
||||
lodash "^4.17.19"
|
||||
|
||||
"@babel/helper-optimise-call-expression@^7.10.4":
|
||||
version "7.10.4"
|
||||
|
@ -263,7 +233,7 @@
|
|||
"@babel/traverse" "^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"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044"
|
||||
integrity sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==
|
||||
|
@ -272,7 +242,7 @@
|
|||
"@babel/traverse" "^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"
|
||||
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143"
|
||||
integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==
|
||||
|
@ -281,10 +251,10 @@
|
|||
chalk "^2.0.0"
|
||||
js-tokens "^4.0.0"
|
||||
|
||||
"@babel/parser@^7.10.3", "@babel/parser@^7.10.4":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.4.tgz#9eedf27e1998d87739fb5028a5120557c06a1a64"
|
||||
integrity sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA==
|
||||
"@babel/parser@^7.10.4", "@babel/parser@^7.10.5":
|
||||
version "7.10.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.5.tgz#e7c6bf5a7deff957cec9f04b551e2762909d826b"
|
||||
integrity sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==
|
||||
|
||||
"@babel/plugin-proposal-async-generator-functions@^7.10.4":
|
||||
version "7.10.4"
|
||||
|
@ -557,12 +527,12 @@
|
|||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
|
||||
"@babel/plugin-transform-modules-amd@^7.10.4", "@babel/plugin-transform-modules-amd@^7.9.6":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.4.tgz#cb407c68b862e4c1d13a2fc738c7ec5ed75fc520"
|
||||
integrity sha512-3Fw+H3WLUrTlzi3zMiZWp3AR4xadAEMv6XRCYnd5jAlLM61Rn+CRJaZMaNvIpcJpQ3vs1kyifYvEVPFfoSkKOA==
|
||||
"@babel/plugin-transform-modules-amd@^7.10.4", "@babel/plugin-transform-modules-amd@^7.10.5":
|
||||
version "7.10.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz#1b9cddaf05d9e88b3aad339cb3e445c4f020a9b1"
|
||||
integrity sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==
|
||||
dependencies:
|
||||
"@babel/helper-module-transforms" "^7.10.4"
|
||||
"@babel/helper-module-transforms" "^7.10.5"
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
babel-plugin-dynamic-import-node "^2.3.3"
|
||||
|
||||
|
@ -800,7 +770,7 @@
|
|||
dependencies:
|
||||
regenerator-runtime "^0.13.4"
|
||||
|
||||
"@babel/template@^7.10.3", "@babel/template@^7.10.4":
|
||||
"@babel/template@^7.10.4":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278"
|
||||
integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==
|
||||
|
@ -809,28 +779,28 @@
|
|||
"@babel/parser" "^7.10.4"
|
||||
"@babel/types" "^7.10.4"
|
||||
|
||||
"@babel/traverse@^7.10.3", "@babel/traverse@^7.10.4":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.4.tgz#e642e5395a3b09cc95c8e74a27432b484b697818"
|
||||
integrity sha512-aSy7p5THgSYm4YyxNGz6jZpXf+Ok40QF3aA2LyIONkDHpAcJzDUqlCKXv6peqYUs2gmic849C/t2HKw2a2K20Q==
|
||||
"@babel/traverse@^7.10.4", "@babel/traverse@^7.10.5":
|
||||
version "7.10.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.5.tgz#77ce464f5b258be265af618d8fddf0536f20b564"
|
||||
integrity sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ==
|
||||
dependencies:
|
||||
"@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-split-export-declaration" "^7.10.4"
|
||||
"@babel/parser" "^7.10.4"
|
||||
"@babel/types" "^7.10.4"
|
||||
"@babel/parser" "^7.10.5"
|
||||
"@babel/types" "^7.10.5"
|
||||
debug "^4.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":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.4.tgz#369517188352e18219981efd156bfdb199fff1ee"
|
||||
integrity sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==
|
||||
"@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.4.4":
|
||||
version "7.10.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.5.tgz#d88ae7e2fde86bfbfe851d4d81afa70a997b5d15"
|
||||
integrity sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==
|
||||
dependencies:
|
||||
"@babel/helper-validator-identifier" "^7.10.4"
|
||||
lodash "^4.17.13"
|
||||
lodash "^4.17.19"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@csstools/convert-colors@^1.4.0":
|
||||
|
@ -1345,7 +1315,7 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1:
|
|||
dependencies:
|
||||
color-convert "^1.9.0"
|
||||
|
||||
ansi-styles@^4.1.0:
|
||||
ansi-styles@^4.0.0, ansi-styles@^4.1.0:
|
||||
version "4.2.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359"
|
||||
integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==
|
||||
|
@ -1371,6 +1341,14 @@ anymatch@^2.0.0:
|
|||
micromatch "^3.1.4"
|
||||
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:
|
||||
version "1.0.2"
|
||||
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"
|
||||
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
|
||||
|
||||
autoprefixer@^9.0.0, autoprefixer@^9.6.1, autoprefixer@^9.8.0:
|
||||
version "9.8.2"
|
||||
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.2.tgz#7347396ee576b18687041bfbacd76d78e27baa56"
|
||||
integrity sha512-9UwMMU8Rg7Fj0c55mbOpXrr/2WrRqoOwOlLNTyyYt+nhiyQdIBWipp5XWzt+Lge8r3DK5y+EHMc1OBf8VpZA6Q==
|
||||
autoprefixer@^9.0.0, autoprefixer@^9.6.1, autoprefixer@^9.8.0, autoprefixer@^9.8.5:
|
||||
version "9.8.5"
|
||||
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.5.tgz#2c225de229ddafe1d1424c02791d0c3e10ccccaa"
|
||||
integrity sha512-C2p5KkumJlsTHoNv9w31NrBRgXhf6eCMteJuHZi2xhkgC+5Vm40MEtCKPhc0qdgAOhox0YPy1SQHTAky05UoKg==
|
||||
dependencies:
|
||||
browserslist "^4.12.0"
|
||||
caniuse-lite "^1.0.30001084"
|
||||
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"
|
||||
caniuse-lite "^1.0.30001097"
|
||||
colorette "^1.2.0"
|
||||
normalize-range "^0.1.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"
|
||||
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:
|
||||
version "1.5.0"
|
||||
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"
|
||||
to-regex "^3.0.1"
|
||||
|
||||
braces@^3.0.1:
|
||||
braces@^3.0.1, braces@~3.0.2:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
|
||||
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"
|
||||
integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
|
||||
|
||||
browser-sync-client@^2.26.6:
|
||||
version "2.26.6"
|
||||
resolved "https://registry.yarnpkg.com/browser-sync-client/-/browser-sync-client-2.26.6.tgz#e5201d3ace8aee88af17656b7b0c0620b6f8e4ab"
|
||||
integrity sha512-mGrkZdNzttKdf/16I+y+2dTQxoMCIpKbVIMJ/uP8ZpnKu9f9qa/2CYVtLtbjZG8nsM14EwiCrjuFTGBEnT3Gjw==
|
||||
browser-sync-client@^2.26.10:
|
||||
version "2.26.10"
|
||||
resolved "https://registry.yarnpkg.com/browser-sync-client/-/browser-sync-client-2.26.10.tgz#ca9309ba19f9695e7945b95062da8a7ef3156711"
|
||||
integrity sha512-8pYitKwpVva7hzXJI8lTljNDbA9fjMEobHSxWqegIUon/GjJAG3UgHB/+lBWnOLzTY8rGX66MvGqL1Aknyrj7g==
|
||||
dependencies:
|
||||
etag "1.8.1"
|
||||
fresh "0.5.2"
|
||||
mitt "^1.1.3"
|
||||
rxjs "^5.5.6"
|
||||
|
||||
browser-sync-ui@^2.26.4:
|
||||
version "2.26.4"
|
||||
resolved "https://registry.yarnpkg.com/browser-sync-ui/-/browser-sync-ui-2.26.4.tgz#3772f13c6b93f2d7d333f4be0ca1ec02aae97dba"
|
||||
integrity sha512-u20P3EsZoM8Pt+puoi3BU3KlbQAH1lAcV+/O4saF26qokrBqIDotmGonfWwoRbUmdxZkM9MBmA0K39ZTG1h4sA==
|
||||
browser-sync-ui@^2.26.10:
|
||||
version "2.26.10"
|
||||
resolved "https://registry.yarnpkg.com/browser-sync-ui/-/browser-sync-ui-2.26.10.tgz#7b4b378de204b3913d4b8a6f93b16b1ba769d4bc"
|
||||
integrity sha512-UfNSBItlXcmEvJ9RE4JooNtIsiIfHowp+7/52Jz4VFfQD4v78QK5/NV9DVrG41oMM3zLyhW4f/RliOb4ysStZg==
|
||||
dependencies:
|
||||
async-each-series "0.1.1"
|
||||
connect-history-api-fallback "^1"
|
||||
|
@ -1954,16 +1924,16 @@ browser-sync-ui@^2.26.4:
|
|||
socket.io-client "^2.0.4"
|
||||
stream-throttle "^0.1.3"
|
||||
|
||||
browser-sync@^2.26.7:
|
||||
version "2.26.7"
|
||||
resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.26.7.tgz#120287716eb405651a76cc74fe851c31350557f9"
|
||||
integrity sha512-lY3emme0OyvA2ujEMpRmyRy9LY6gHLuTr2/ABxhIm3lADOiRXzP4dgekvnDrQqZ/Ec2Fz19lEjm6kglSG5766w==
|
||||
browser-sync@^2.26.10:
|
||||
version "2.26.10"
|
||||
resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.26.10.tgz#f03c043f615cf53c9294ccb2a5a5e25cfe11a230"
|
||||
integrity sha512-JeVQP3CARvNA1DELj+ZGWj+/0pzE8+Omvq1WNgzaTXVdP3lNEbGxZbkjvLK7hHpQywjQ1sDJWlJQZT6V59XDTg==
|
||||
dependencies:
|
||||
browser-sync-client "^2.26.6"
|
||||
browser-sync-ui "^2.26.4"
|
||||
browser-sync-client "^2.26.10"
|
||||
browser-sync-ui "^2.26.10"
|
||||
bs-recipes "1.3.4"
|
||||
bs-snippet-injector "^2.0.1"
|
||||
chokidar "^2.0.4"
|
||||
chokidar "^3.4.1"
|
||||
connect "3.6.6"
|
||||
connect-history-api-fallback "^1"
|
||||
dev-ip "^1.0.1"
|
||||
|
@ -1972,10 +1942,10 @@ browser-sync@^2.26.7:
|
|||
etag "^1.8.1"
|
||||
fresh "^0.5.2"
|
||||
fs-extra "3.0.1"
|
||||
http-proxy "1.15.2"
|
||||
http-proxy "^1.18.1"
|
||||
immutable "^3"
|
||||
localtunnel "1.9.2"
|
||||
micromatch "^3.1.10"
|
||||
localtunnel "^2.0.0"
|
||||
micromatch "^4.0.2"
|
||||
opn "5.3.0"
|
||||
portscanner "2.1.1"
|
||||
qs "6.2.3"
|
||||
|
@ -1987,8 +1957,8 @@ browser-sync@^2.26.7:
|
|||
serve-static "1.13.2"
|
||||
server-destroy "1.0.1"
|
||||
socket.io "2.1.1"
|
||||
ua-parser-js "0.7.17"
|
||||
yargs "6.4.0"
|
||||
ua-parser-js "^0.7.18"
|
||||
yargs "^15.4.1"
|
||||
|
||||
browserify-aes@^1.0.0, browserify-aes@^1.0.4:
|
||||
version "1.2.0"
|
||||
|
@ -2057,17 +2027,7 @@ browserslist@^1.1.3:
|
|||
caniuse-db "^1.0.30000639"
|
||||
electron-to-chromium "^1.2.7"
|
||||
|
||||
browserslist@^4.0.0, browserslist@^4.6.4:
|
||||
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:
|
||||
browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.12.2, browserslist@^4.6.4, browserslist@^4.8.5:
|
||||
version "4.12.2"
|
||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.2.tgz#76653d7e4c57caa8a1a28513e2f4e197dc11a711"
|
||||
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"
|
||||
integrity sha512-XqXxHR6Z9IN0BXLKMaTJ1NZ+US74cbKritholD6uaDLUWHiDj0QilpSb708wOcoGz0PmPRsXT/6zE+bjx+QSMw==
|
||||
|
||||
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981:
|
||||
version "1.0.30001085"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001085.tgz#bed28bd51ff7425d33ee23e730c7f3b703711db6"
|
||||
integrity sha512-x0YRFRE0pmOD90z+9Xk7jwO58p4feVNXP+U8kWV+Uo/HADyrgESlepzIkUqPgaXkpyceZU6siM1gsK7sHgplqA==
|
||||
|
||||
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==
|
||||
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001088, caniuse-lite@^1.0.30001097:
|
||||
version "1.0.30001099"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001099.tgz#540118fcc6842d1fde62f4ee5521d1ec6afdb40e"
|
||||
integrity sha512-sdS9A+sQTk7wKoeuZBN/YMAHVztUfVnjDi4/UV3sDE8xoh7YR12hKW+pIdB3oqKGwr9XaFL2ovfzt9w8eUI5CA==
|
||||
|
||||
caseless@~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"
|
||||
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"
|
||||
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
|
||||
integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==
|
||||
|
@ -2432,6 +2387,21 @@ chokidar@^2.0.0, chokidar@^2.0.4, chokidar@^2.1.8:
|
|||
optionalDependencies:
|
||||
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:
|
||||
version "1.1.4"
|
||||
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"
|
||||
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:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58"
|
||||
|
@ -3193,10 +3172,10 @@ dashdash@^1.12.0:
|
|||
dependencies:
|
||||
assert-plus "^1.0.0"
|
||||
|
||||
date-fns@^2.14.0:
|
||||
version "2.14.0"
|
||||
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.14.0.tgz#359a87a265bb34ef2e38f93ecf63ac453f9bc7ba"
|
||||
integrity sha512-1zD+68jhFgDIM0rF05rcwYO8cExdNqxjq4xP1QKM60Q45mnO6zaMWB4tOzrIr4M4GSLntsKeE4c9Bdl2jhL/yw==
|
||||
date-fns@^2.15.0:
|
||||
version "2.15.0"
|
||||
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.15.0.tgz#424de6b3778e4e69d3ff27046ec136af58ae5d5f"
|
||||
integrity sha512-ZCPzAMJZn3rNUvvQIMlXhDr4A+Ar07eLeGsGREoWU19a3Pqf5oYa+ccd+B3F6XVtQY6HANMFdOQ8A+ipFnvJdQ==
|
||||
|
||||
dateformat@^2.0.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"
|
||||
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"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.488.tgz#9226229f5fbc825959210e81e0bb3e63035d1c06"
|
||||
integrity sha512-NReBdOugu1yl8ly+0VDtiQ6Yw/1sLjnvflWq0gvY1nfUXU2PbA+1XAVuEb7ModnwL/MfUPjby7e4pAFnSHiy6Q==
|
||||
|
@ -4105,12 +4084,7 @@ event-emitter@^0.3.5:
|
|||
d "1"
|
||||
es5-ext "~0.10.14"
|
||||
|
||||
eventemitter3@1.x.x:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508"
|
||||
integrity sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=
|
||||
|
||||
eventemitter3@^4.0.3:
|
||||
eventemitter3@^4.0.0, eventemitter3@^4.0.3:
|
||||
version "4.0.4"
|
||||
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384"
|
||||
integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==
|
||||
|
@ -4599,6 +4573,11 @@ follow-redirects@1.5.10:
|
|||
dependencies:
|
||||
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:
|
||||
version "1.0.2"
|
||||
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"
|
||||
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:
|
||||
version "1.0.12"
|
||||
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"
|
||||
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"
|
||||
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
|
||||
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"
|
||||
integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==
|
||||
|
||||
hls.js@^0.14.0:
|
||||
version "0.14.0"
|
||||
resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-0.14.0.tgz#a815553f206685137bf4a2533cd87ff358a87aa3"
|
||||
integrity sha512-PHQJ7gJpkRkOlufn9z2ID+V93HgJQahhsHr8rCcRS0q2XuUBdidAHeYsWeVYvZ73ZILVDN0EYVBvHZM1g2zZUA==
|
||||
hls.js@^0.14.3:
|
||||
version "0.14.3"
|
||||
resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-0.14.3.tgz#07f30710576376327f0b29c1316fd0bff31ca23a"
|
||||
integrity sha512-j+lbGBH5eU9r8A8kYQQHw/8x+G+mGCmtBaP5n4LS4qY7dUEbZRfa/RHfS2jM+4OgCfjdL/hgkYWYSZmwTgG5KQ==
|
||||
dependencies:
|
||||
eventemitter3 "^4.0.3"
|
||||
url-toolkit "^2.1.6"
|
||||
|
@ -5576,13 +5560,14 @@ http-errors@~1.6.2:
|
|||
setprototypeof "1.1.0"
|
||||
statuses ">= 1.4.0 < 2"
|
||||
|
||||
http-proxy@1.15.2:
|
||||
version "1.15.2"
|
||||
resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.15.2.tgz#642fdcaffe52d3448d2bda3b0079e9409064da31"
|
||||
integrity sha1-ZC/cr/5S00SNK9o7AHnpQJBk2jE=
|
||||
http-proxy@^1.18.1:
|
||||
version "1.18.1"
|
||||
resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549"
|
||||
integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==
|
||||
dependencies:
|
||||
eventemitter3 "1.x.x"
|
||||
requires-port "1.x.x"
|
||||
eventemitter3 "^4.0.0"
|
||||
follow-redirects "^1.0.0"
|
||||
requires-port "^1.0.0"
|
||||
|
||||
http-signature@~1.2.0:
|
||||
version "1.2.0"
|
||||
|
@ -5926,6 +5911,13 @@ is-binary-path@^1.0.0:
|
|||
dependencies:
|
||||
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:
|
||||
version "1.1.6"
|
||||
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
|
||||
|
@ -6053,7 +6045,7 @@ is-glob@^3.1.0:
|
|||
dependencies:
|
||||
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"
|
||||
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
|
||||
integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
|
||||
|
@ -6308,10 +6300,10 @@ isurl@^1.0.0-alpha5:
|
|||
has-to-string-tag-x "^1.2.0"
|
||||
is-object "^1.0.1"
|
||||
|
||||
jellyfin-apiclient@^1.3.0:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/jellyfin-apiclient/-/jellyfin-apiclient-1.3.1.tgz#7ecaa986dbb6e36cce9d8f94dd66619419afa32d"
|
||||
integrity sha512-PQUKFDcQOy4hJ43Jc3Lm3571zONlTjr2qmr6pEVcfLZs7Lvwa4oUu/yonH6MMxpjZOvTbcirjer+XXgF2RwXyA==
|
||||
jellyfin-apiclient@^1.4.1:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/jellyfin-apiclient/-/jellyfin-apiclient-1.4.1.tgz#5e544a19bc001b16669eb7ecf46bb7d652365e41"
|
||||
integrity sha512-BTTRucQ4tCLyiZ9kR9nAoxqxYp5/z+MCzkayy9vmMZ5C7jlVVsnxAXuuZjoa+AgXMjohXcM5Ci54myfJM1pRkA==
|
||||
|
||||
"jellyfin-noto@https://github.com/jellyfin/jellyfin-noto":
|
||||
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"
|
||||
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:
|
||||
version "0.11.0"
|
||||
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:
|
||||
lie "3.1.1"
|
||||
|
||||
localtunnel@1.9.2:
|
||||
version "1.9.2"
|
||||
resolved "https://registry.yarnpkg.com/localtunnel/-/localtunnel-1.9.2.tgz#0012fcabc29cf964c130a01858768aa2bb65b5af"
|
||||
integrity sha512-NEKF7bDJE9U3xzJu3kbayF0WTvng6Pww7tzqNb/XtEARYwqw7CKEX7BvOMg98FtE9es2CRizl61gkV3hS8dqYg==
|
||||
localtunnel@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/localtunnel/-/localtunnel-2.0.0.tgz#2ea71174fa80e34cce91b2a7ce416e6a57d9ff7c"
|
||||
integrity sha512-g6E0aLgYYDvQDxIjIXkgJo2+pHj3sGg4Wz/XP3h2KtZnRsWPbOQY+hw1H8Z91jep998fkcVE9l+kghO+97vllg==
|
||||
dependencies:
|
||||
axios "0.19.0"
|
||||
debug "4.1.1"
|
||||
openurl "1.1.1"
|
||||
yargs "6.6.0"
|
||||
yargs "13.3.0"
|
||||
|
||||
locate-path@^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"
|
||||
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:
|
||||
version "4.17.15"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
|
||||
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
|
||||
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.19"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b"
|
||||
integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==
|
||||
|
||||
log-symbols@^1.0.2:
|
||||
version "1.0.2"
|
||||
|
@ -7479,7 +7466,7 @@ node-libs-browser@^2.2.1:
|
|||
util "^0.11.0"
|
||||
vm-browserify "^1.0.1"
|
||||
|
||||
node-releases@^1.1.53, node-releases@^1.1.58:
|
||||
node-releases@^1.1.58:
|
||||
version "1.1.58"
|
||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.58.tgz#8ee20eef30fa60e52755fcc0942def5a734fe935"
|
||||
integrity sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg==
|
||||
|
@ -7554,7 +7541,7 @@ normalize-path@^2.0.1, normalize-path@^2.1.1:
|
|||
dependencies:
|
||||
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"
|
||||
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
|
||||
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"
|
||||
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"
|
||||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
|
||||
integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
|
||||
|
@ -8275,13 +8262,6 @@ pkg-dir@^3.0.0:
|
|||
dependencies:
|
||||
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:
|
||||
version "1.0.1"
|
||||
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"
|
||||
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:
|
||||
version "0.6.2"
|
||||
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"
|
||||
integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
|
||||
|
||||
requires-port@1.x.x:
|
||||
requires-port@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
|
||||
integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
|
||||
|
@ -11375,10 +11362,10 @@ typedarray@^0.0.6:
|
|||
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
|
||||
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
|
||||
|
||||
ua-parser-js@0.7.17:
|
||||
version "0.7.17"
|
||||
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac"
|
||||
integrity sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==
|
||||
ua-parser-js@^0.7.18:
|
||||
version "0.7.21"
|
||||
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.21.tgz#853cf9ce93f642f67174273cc34565ae6f308777"
|
||||
integrity sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==
|
||||
|
||||
uglify-js@3.4.x:
|
||||
version "3.4.10"
|
||||
|
@ -11996,10 +11983,10 @@ webworkify@^1.5.0:
|
|||
resolved "https://registry.yarnpkg.com/webworkify/-/webworkify-1.5.0.tgz#734ad87a774de6ebdd546e1d3e027da5b8f4a42c"
|
||||
integrity sha512-AMcUeyXAhbACL8S2hqqdqOLqvJ8ylmIbNwUIqQujRSouf4+eUFaXbG6F1Rbu+srlJMmxQWsiU7mOJi0nMBfM1g==
|
||||
|
||||
whatwg-fetch@^3.0.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.1.0.tgz#49d630cdfa308dba7f2819d49d09364f540dbcc6"
|
||||
integrity sha512-pgmbsVWKpH9GxLXZmtdowDIqtb/rvPyjjQv3z9wLcmgWKFHilKnZD3ldgrOlwJoPGOUluQsRPWd52yVkPfmI1A==
|
||||
whatwg-fetch@^3.2.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.2.0.tgz#8e134f701f0a4ab5fda82626f113e2b647fd16dc"
|
||||
integrity sha512-SdGPoQMMnzVYThUbSrEvqTlkvC1Ux27NehaJ/GUHBfNrh5Mjg+1/uRyFMwVnxO2MrikMWvWAqUGgQOfVU4hT7w==
|
||||
|
||||
which-module@^1.0.0:
|
||||
version "1.0.0"
|
||||
|
@ -12025,11 +12012,6 @@ wide-align@^1.1.0:
|
|||
dependencies:
|
||||
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:
|
||||
version "1.2.3"
|
||||
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"
|
||||
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:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||
|
@ -12156,7 +12147,7 @@ yargs-parser@^10.0.0:
|
|||
dependencies:
|
||||
camelcase "^4.1.0"
|
||||
|
||||
yargs-parser@^13.1.2:
|
||||
yargs-parser@^13.1.1, yargs-parser@^13.1.2:
|
||||
version "13.1.2"
|
||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38"
|
||||
integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==
|
||||
|
@ -12164,7 +12155,7 @@ yargs-parser@^13.1.2:
|
|||
camelcase "^5.0.0"
|
||||
decamelize "^1.2.0"
|
||||
|
||||
yargs-parser@^18.1.3:
|
||||
yargs-parser@^18.1.2, yargs-parser@^18.1.3:
|
||||
version "18.1.3"
|
||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
|
||||
integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
|
||||
|
@ -12172,13 +12163,6 @@ yargs-parser@^18.1.3:
|
|||
camelcase "^5.0.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:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a"
|
||||
|
@ -12186,44 +12170,21 @@ yargs-parser@^5.0.0:
|
|||
dependencies:
|
||||
camelcase "^3.0.0"
|
||||
|
||||
yargs@6.4.0:
|
||||
version "6.4.0"
|
||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.4.0.tgz#816e1a866d5598ccf34e5596ddce22d92da490d4"
|
||||
integrity sha1-gW4ahm1VmMzzTlWW3c4i2S2kkNQ=
|
||||
yargs@13.3.0:
|
||||
version "13.3.0"
|
||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83"
|
||||
integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==
|
||||
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"
|
||||
cliui "^5.0.0"
|
||||
find-up "^3.0.0"
|
||||
get-caller-file "^2.0.1"
|
||||
require-directory "^2.1.1"
|
||||
require-main-filename "^1.0.1"
|
||||
require-main-filename "^2.0.0"
|
||||
set-blocking "^2.0.0"
|
||||
string-width "^1.0.2"
|
||||
which-module "^1.0.0"
|
||||
window-size "^0.2.0"
|
||||
y18n "^3.2.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"
|
||||
string-width "^3.0.0"
|
||||
which-module "^2.0.0"
|
||||
y18n "^4.0.0"
|
||||
yargs-parser "^13.1.1"
|
||||
|
||||
yargs@^13.3.2:
|
||||
version "13.3.2"
|
||||
|
@ -12241,6 +12202,23 @@ yargs@^13.3.2:
|
|||
y18n "^4.0.0"
|
||||
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:
|
||||
version "7.1.0"
|
||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue