diff --git a/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/chaptercardbuilder.js b/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/chaptercardbuilder.js index 050355300a..4cac68f975 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/chaptercardbuilder.js +++ b/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/chaptercardbuilder.js @@ -1 +1 @@ -define(["datetime","imageLoader","connectionManager","layoutManager","browser"],function(datetime,imageLoader,connectionManager,layoutManager,browser){"use strict";function buildChapterCardsHtml(item,chapters,options){var className="card scalableCard itemAction chapterCard";layoutManager.tv&&(browser.animate||browser.edge)&&(className+=" card-focusscale");var mediaStreams=((item.MediaSources||[])[0]||{}).MediaStreams||[],videoStream=mediaStreams.filter(function(i){return"Video"===i.Type})[0]||{},shape=options.backdropShape||"backdrop";videoStream.Width&&videoStream.Height&&videoStream.Width/videoStream.Height<=1.2&&(shape=options.squareShape||"square"),className+=" "+shape+"Card",className+=" "+shape+"Card-scalable",(options.block||options.rows)&&(className+=" block");for(var html="",itemsInRow=0,apiClient=connectionManager.getApiClient(item.ServerId),i=0,length=chapters.length;i');var chapter=chapters[i];html+=buildChapterCard(item,apiClient,chapter,i,options,className,shape),itemsInRow++,options.rows&&itemsInRow>=options.rows&&(itemsInRow=0,html+="")}return html}function getImgUrl(item,chapter,index,maxWidth,apiClient){return chapter.ImageTag?apiClient.getScaledImageUrl(item.Id,{maxWidth:maxWidth,tag:chapter.ImageTag,type:"Chapter",index:index}):null}function buildChapterCard(item,apiClient,chapter,index,options,className,shape){var imgUrl=getImgUrl(item,chapter,index,options.width||400,apiClient),cardImageContainerClass="cardImageContainer chapterCardImageContainer";options.coverImage&&(cardImageContainerClass+=" coveredImage");var dataAttributes=' data-action="play" data-isfolder="'+item.IsFolder+'" data-id="'+item.Id+'" data-serverid="'+item.ServerId+'" data-type="'+item.Type+'" data-mediatype="'+item.MediaType+'" data-positionticks="'+chapter.StartPositionTicks+'"',cardImageContainer=imgUrl?'
':'
';imgUrl||(cardImageContainer+='local_movies');var nameHtml="";nameHtml+='
'+chapter.Name+"
",nameHtml+='
'+datetime.getDisplayRunningTime(chapter.StartPositionTicks)+"
";var cardBoxCssClass="cardBox";if(layoutManager.tv){var enableFocusTransfrom=!browser.slow&&!browser.xboxOne&&!browser.edgeUwp;enableFocusTransfrom&&(cardBoxCssClass+=" cardBox-focustransform"),enableFocusTransfrom||(cardBoxCssClass+=" card-focuscontent card-focuscontent-large")}var html='
";return html}function buildChapterCards(item,chapters,options){if(options.parentContainer){if(!document.body.contains(options.parentContainer))return;if(!chapters.length)return void options.parentContainer.classList.add("hide");options.parentContainer.classList.remove("hide")}var html=buildChapterCardsHtml(item,chapters,options);options.itemsContainer.innerHTML=html,imageLoader.lazyChildren(options.itemsContainer)}return{buildChapterCards:buildChapterCards}}); \ No newline at end of file +define(["datetime","imageLoader","connectionManager","layoutManager","browser"],function(datetime,imageLoader,connectionManager,layoutManager,browser){"use strict";function buildChapterCardsHtml(item,chapters,options){var className="card itemAction chapterCard";layoutManager.tv&&(browser.animate||browser.edge)&&(className+=" card-focusscale");var mediaStreams=((item.MediaSources||[])[0]||{}).MediaStreams||[],videoStream=mediaStreams.filter(function(i){return"Video"===i.Type})[0]||{},shape=options.backdropShape||"backdrop";videoStream.Width&&videoStream.Height&&videoStream.Width/videoStream.Height<=1.2&&(shape=options.squareShape||"square"),className+=" "+shape+"Card",(options.block||options.rows)&&(className+=" block");for(var html="",itemsInRow=0,apiClient=connectionManager.getApiClient(item.ServerId),i=0,length=chapters.length;i');var chapter=chapters[i];html+=buildChapterCard(item,apiClient,chapter,i,options,className,shape),itemsInRow++,options.rows&&itemsInRow>=options.rows&&(itemsInRow=0,html+="
")}return html}function getImgUrl(item,chapter,index,maxWidth,apiClient){return chapter.ImageTag?apiClient.getScaledImageUrl(item.Id,{maxWidth:maxWidth,tag:chapter.ImageTag,type:"Chapter",index:index}):null}function buildChapterCard(item,apiClient,chapter,index,options,className,shape){var imgUrl=getImgUrl(item,chapter,index,options.width||400,apiClient),cardImageContainerClass="cardImageContainer chapterCardImageContainer";options.coverImage&&(cardImageContainerClass+=" coveredImage");var dataAttributes=' data-action="play" data-isfolder="'+item.IsFolder+'" data-id="'+item.Id+'" data-serverid="'+item.ServerId+'" data-type="'+item.Type+'" data-mediatype="'+item.MediaType+'" data-positionticks="'+chapter.StartPositionTicks+'"',cardImageContainer=imgUrl?'
':'
';imgUrl||(cardImageContainer+='local_movies');var nameHtml="";nameHtml+='
'+chapter.Name+"
",nameHtml+='
'+datetime.getDisplayRunningTime(chapter.StartPositionTicks)+"
";var cardBoxCssClass="cardBox",cardScalableClass="cardScalable";if(layoutManager.tv){var enableFocusTransfrom=!browser.slow&&!browser.xboxOne&&!browser.edgeUwp;cardScalableClass+=" card-focuscontent",enableFocusTransfrom?cardBoxCssClass+=" cardBox-focustransform":(cardBoxCssClass+=" card-focuscontent card-focuscontent-large",cardScalableClass+=" card-focuscontent-large")}var html='
";return html}function buildChapterCards(item,chapters,options){if(options.parentContainer){if(!document.body.contains(options.parentContainer))return;if(!chapters.length)return void options.parentContainer.classList.add("hide");options.parentContainer.classList.remove("hide")}var html=buildChapterCardsHtml(item,chapters,options);options.itemsContainer.innerHTML=html,imageLoader.lazyChildren(options.itemsContainer)}return{buildChapterCards:buildChapterCards}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-button/emby-button.css b/dashboard-ui/bower_components/emby-webcomponents/emby-button/emby-button.css index 7a0ad0c42a..91b567e045 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/emby-button/emby-button.css +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-button/emby-button.css @@ -1 +1 @@ -.emby-button,.fab{-webkit-box-sizing:border-box}.emby-button,.paper-icon-button-light{text-align:center;font-family:inherit;color:inherit;cursor:pointer;outline:0!important;font-weight:500;-webkit-tap-highlight-color:transparent;position:relative}.emby-button{display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;box-sizing:border-box;margin:0 .29em;font-size:inherit;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none;z-index:0;padding:1em;border:0;vertical-align:middle;-webkit-border-radius:.2em;border-radius:.2em;overflow:hidden;text-decoration:none}.emby-button.block,.fab{-webkit-box-align:center}.emby-button::-moz-focus-inner{border:0}.button-flat{background:0 0;-webkit-box-shadow:none;box-shadow:none}.button-flat:hover{opacity:.5}.button-link{background:0 0;-webkit-box-shadow:none;box-shadow:none;margin:0;padding:0;vertical-align:initial}.button-link:hover{text-decoration:underline}.emby-button-focusscale{-webkit-transition:-webkit-transform 180ms ease-out!important;-o-transition:transform 180ms ease-out!important;transition:transform 180ms ease-out!important;-webkit-transform-origin:center center;transform-origin:center center}.emby-button-focusscale:focus{-webkit-transform:scale(1.16);transform:scale(1.16);z-index:1}.emby-button>i{font-size:1.36em;width:1em;height:1em}.button-link>i{font-size:1em}.fab{display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;-webkit-border-radius:50%;border-radius:50%;padding:.6em;box-sizing:border-box;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;text-align:center;margin:0}.fab>i{height:1em;width:1em;vertical-align:middle;font-size:2.85em}.fab.mini{padding:8px}.fab.mini>i{height:1em;width:1em;font-size:1.72em}.emby-button.block{display:block;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;margin:.25em 0;width:100%}.fab,.raised{-webkit-box-shadow:0 .145em .145em 0 rgba(0,0,0,.14),0 .0725em .3625em 0 rgba(0,0,0,.12),0 .2175em .0725em -.145em rgba(0,0,0,.2);box-shadow:0 .145em .145em 0 rgba(0,0,0,.14),0 .0725em .3625em 0 rgba(0,0,0,.12),0 .2175em .0725em -.145em rgba(0,0,0,.2);-webkit-transition:-webkit-box-shadow .28s cubic-bezier(.4,0,.2,1);-o-transition:box-shadow .28s cubic-bezier(.4,0,.2,1);transition:box-shadow .28s cubic-bezier(.4,0,.2,1)}.fab:focus,.raised:focus{-webkit-box-shadow:0 .58em .725em .0725em rgba(0,0,0,.14),0 .2175em 1.015em .145em rgba(0,0,0,.12),0 .3625em .3625em -.2175em rgba(0,0,0,.4);box-shadow:0 .58em .725em .0725em rgba(0,0,0,.14),0 .2175em 1.015em .145em rgba(0,0,0,.12),0 .3625em .3625em -.2175em rgba(0,0,0,.4)}.raised-mini{padding:.44em 1em;-webkit-border-radius:100em;border-radius:100em;font-size:92%}.button-flat-mini{padding:.5em .7em}.emby-button>i+span,.emby-button>span+i{margin-left:.5em}.paper-icon-button-light{display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 .29em;background:0 0;font-size:inherit;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none;z-index:0;min-width:initial;min-height:initial;width:auto;height:auto;padding:8px;border:0;vertical-align:middle;overflow:hidden;-webkit-border-radius:50%;border-radius:50%;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.paper-icon-button-light::-moz-focus-inner{border:0}.paper-icon-button-light[disabled]{opacity:.3}.paper-icon-button-light>i{width:1em;height:1em;font-size:1.6em;position:relative;z-index:1;vertical-align:middle}.paper-icon-button-light>img{width:1.72em;max-height:100%;position:relative;z-index:1;vertical-align:middle}.paper-icon-button-light:after{content:'';position:absolute;top:0;left:0;right:0;bottom:0;-webkit-transition:opacity .3s ease-out;-o-transition:opacity .3s ease-out;transition:opacity .3s ease-out;background:currentcolor;opacity:0}.paper-icon-button-light:focus:after{opacity:.2}.emby-button-ripple-effect,.paper-icon-button-light-ripple-effect{position:absolute;-webkit-border-radius:50%;border-radius:50%;width:50px;height:50px;top:50%;left:50%;background:currentcolor;-webkit-animation:ripple-animation .8s;animation:ripple-animation .8s;opacity:.25;-webkit-transform-origin:center center;transform-origin:center center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@-webkit-keyframes ripple-animation{from{-webkit-transform:none;transform:none;opacity:.5}to{-webkit-transform:scale(20);transform:scale(20);opacity:0}}@keyframes ripple-animation{from{-webkit-transform:none;transform:none;opacity:.5}to{-webkit-transform:scale(20);transform:scale(20);opacity:0}}.emby-button-foreground{position:relative;z-index:1}.icon-button-focusscale{-webkit-transition:-webkit-transform 180ms ease-out!important;-o-transition:transform 180ms ease-out!important;transition:transform 180ms ease-out!important;-webkit-transform-origin:center center;transform-origin:center center}.icon-button-focusscale:focus{-webkit-transform:scale(1.3);transform:scale(1.3);z-index:1} \ No newline at end of file +.emby-button,.fab{-webkit-box-sizing:border-box}.emby-button,.paper-icon-button-light{text-align:center;font-family:inherit;color:inherit;cursor:pointer;font-weight:500;-webkit-tap-highlight-color:transparent;position:relative}.emby-button{display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;box-sizing:border-box;margin:0 .29em;font-size:inherit;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none;z-index:0;padding:1em;border:0;vertical-align:middle;-webkit-border-radius:.2em;border-radius:.2em;outline:0!important;overflow:hidden;text-decoration:none}.emby-button.block,.fab{-webkit-box-align:center}.emby-button::-moz-focus-inner{border:0}.button-flat{background:0 0;-webkit-box-shadow:none;box-shadow:none}.button-flat:hover{opacity:.5}.button-link{background:0 0;-webkit-box-shadow:none;box-shadow:none;margin:0;padding:0;vertical-align:initial}.button-link-inline{display:inline}.button-link:hover{text-decoration:underline}.emby-button-focusscale{-webkit-transition:-webkit-transform 180ms ease-out!important;-o-transition:transform 180ms ease-out!important;transition:transform 180ms ease-out!important;-webkit-transform-origin:center center;transform-origin:center center}.emby-button-focusscale:focus{-webkit-transform:scale(1.16);transform:scale(1.16);z-index:1}.emby-button>i{font-size:1.36em;width:1em;height:1em}.button-link>i{font-size:1em}.fab{display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;-webkit-border-radius:50%;border-radius:50%;padding:.6em;box-sizing:border-box;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;text-align:center;margin:0}.fab>i{height:1em;width:1em;vertical-align:middle;font-size:2.85em}.fab.mini{padding:8px}.fab.mini>i{height:1em;width:1em;font-size:1.72em}.emby-button.block{display:block;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;margin:.25em 0;width:100%}.fab,.raised{-webkit-box-shadow:0 .145em .145em 0 rgba(0,0,0,.14),0 .0725em .3625em 0 rgba(0,0,0,.12),0 .2175em .0725em -.145em rgba(0,0,0,.2);box-shadow:0 .145em .145em 0 rgba(0,0,0,.14),0 .0725em .3625em 0 rgba(0,0,0,.12),0 .2175em .0725em -.145em rgba(0,0,0,.2);-webkit-transition:-webkit-box-shadow .28s cubic-bezier(.4,0,.2,1);-o-transition:box-shadow .28s cubic-bezier(.4,0,.2,1);transition:box-shadow .28s cubic-bezier(.4,0,.2,1)}.fab:focus,.raised:focus{-webkit-box-shadow:0 .58em .725em .0725em rgba(0,0,0,.14),0 .2175em 1.015em .145em rgba(0,0,0,.12),0 .3625em .3625em -.2175em rgba(0,0,0,.4);box-shadow:0 .58em .725em .0725em rgba(0,0,0,.14),0 .2175em 1.015em .145em rgba(0,0,0,.12),0 .3625em .3625em -.2175em rgba(0,0,0,.4)}.raised-mini{padding:.44em 1em;-webkit-border-radius:100em;border-radius:100em;font-size:92%}.button-flat-mini{padding:.5em .7em}.emby-button>i+span{margin-left:.5em;vertical-align:middle}.emby-button>span+i{margin-left:.5em}.paper-icon-button-light{display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 .29em;background:0 0;font-size:inherit;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none;z-index:0;min-width:initial;min-height:initial;width:auto;height:auto;padding:8px;border:0;vertical-align:middle;outline:0!important;overflow:hidden;-webkit-border-radius:50%;border-radius:50%;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.paper-icon-button-light::-moz-focus-inner{border:0}.paper-icon-button-light[disabled]{opacity:.3}.paper-icon-button-light>i{width:1em;height:1em;font-size:1.6em;position:relative;z-index:1;vertical-align:middle}.paper-icon-button-light>img{width:1.72em;max-height:100%;position:relative;z-index:1;vertical-align:middle}.paper-icon-button-light:after{content:'';position:absolute;top:0;left:0;right:0;bottom:0;-webkit-transition:opacity .3s ease-out;-o-transition:opacity .3s ease-out;transition:opacity .3s ease-out;background:currentcolor;opacity:0}.paper-icon-button-light:focus:after{opacity:.2}.emby-button-ripple-effect,.paper-icon-button-light-ripple-effect{position:absolute;-webkit-border-radius:50%;border-radius:50%;width:50px;height:50px;top:50%;left:50%;background:currentcolor;-webkit-animation:ripple-animation .8s;animation:ripple-animation .8s;opacity:.25;-webkit-transform-origin:center center;transform-origin:center center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@-webkit-keyframes ripple-animation{from{-webkit-transform:none;transform:none;opacity:.5}to{-webkit-transform:scale(20);transform:scale(20);opacity:0}}@keyframes ripple-animation{from{-webkit-transform:none;transform:none;opacity:.5}to{-webkit-transform:scale(20);transform:scale(20);opacity:0}}.emby-button-foreground{position:relative;z-index:1}.icon-button-focusscale{-webkit-transition:-webkit-transform 180ms ease-out!important;-o-transition:transform 180ms ease-out!important;transition:transform 180ms ease-out!important;-webkit-transform-origin:center center;transform-origin:center center}.icon-button-focusscale:focus{-webkit-transform:scale(1.3);transform:scale(1.3);z-index:1} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-button/emby-button.js b/dashboard-ui/bower_components/emby-webcomponents/emby-button/emby-button.js index 05e3fb511c..af49ea062c 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/emby-button/emby-button.js +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-button/emby-button.js @@ -1 +1 @@ -define(["browser","dom","layoutManager","shell","appRouter","apphost","css!./emby-button","registerElement"],function(browser,dom,layoutManager,shell,appRouter,appHost){"use strict";function animateButtonInternal(e,btn){for(var div=document.createElement("div"),i=0,length=btn.classList.length;i0&&offsetY>0&&(div.style.left=offsetX+"px",div.style.top=offsetY+"px");var firstChild=btn.firstChild;firstChild?btn.insertBefore(div,btn.firstChild):btn.appendChild(div),div.addEventListener(dom.whichAnimationEvent(),function(){div.parentNode.removeChild(div)},!1)}function animateButton(e,btn){requestAnimationFrame(function(){animateButtonInternal(e,btn)})}function onKeyDown(e){13===e.keyCode&&animateButton(e,this)}function onMouseDown(e){0===e.button&&animateButton(e,this)}function onClick(e){animateButton(e,this)}function enableAnimation(){return!browser.tv}function onAnchorClick(e){var href=this.getAttribute("href");"#"!==href?this.getAttribute("target")?appHost.supports("targetblank")||(e.preventDefault(),shell.openUrl(href)):appRouter.handleAnchorClick(e):e.preventDefault()}var EmbyButtonPrototype=Object.create(HTMLButtonElement.prototype),EmbyLinkButtonPrototype=Object.create(HTMLAnchorElement.prototype);return EmbyButtonPrototype.createdCallback=function(){this.classList.contains("emby-button")||(this.classList.add("emby-button"),layoutManager.tv&&(this.classList.add("emby-button-focusscale"),this.classList.add("emby-button-tv")),enableAnimation()&&"false"!==this.getAttribute("data-ripple")&&!this.classList.contains("button-link")&&(dom.addEventListener(this,"keydown",onKeyDown,{passive:!0}),browser.safari||browser.firefox&&"A"===this.tagName?dom.addEventListener(this,"click",onClick,{passive:!0}):dom.addEventListener(this,"mousedown",onMouseDown,{passive:!0})))},EmbyButtonPrototype.attachedCallback=function(){"A"===this.tagName&&(dom.removeEventListener(this,"click",onAnchorClick,{}),dom.addEventListener(this,"click",onAnchorClick,{}),"true"===this.getAttribute("data-autohide")&&(appHost.supports("externallinks")?this.classList.remove("hide"):this.classList.add("hide")))},EmbyButtonPrototype.detachedCallback=function(){dom.removeEventListener(this,"click",onAnchorClick,{})},EmbyLinkButtonPrototype.createdCallback=EmbyButtonPrototype.createdCallback,EmbyLinkButtonPrototype.attachedCallback=EmbyButtonPrototype.attachedCallback,document.registerElement("emby-button",{prototype:EmbyButtonPrototype,extends:"button"}),document.registerElement("emby-linkbutton",{prototype:EmbyLinkButtonPrototype,extends:"a"}),EmbyButtonPrototype}); \ No newline at end of file +define(["browser","dom","layoutManager","shell","appRouter","apphost","css!./emby-button","registerElement"],function(browser,dom,layoutManager,shell,appRouter,appHost){"use strict";function animateButtonInternal(e,btn){for(var div=document.createElement("div"),i=0,length=btn.classList.length;i0&&offsetY>0&&(div.style.left=offsetX+"px",div.style.top=offsetY+"px");var firstChild=btn.firstChild;firstChild?btn.insertBefore(div,btn.firstChild):btn.appendChild(div),div.addEventListener(dom.whichAnimationEvent(),function(){div.parentNode.removeChild(div)},!1)}function animateButton(e,btn){requestAnimationFrame(function(){animateButtonInternal(e,btn)})}function onKeyDown(e){13===e.keyCode&&animateButton(e,this)}function onMouseDown(e){0===e.button&&animateButton(e,this)}function onClick(e){animateButton(e,this)}function enableAnimation(){return!browser.tv}function onAnchorClick(e){var href=this.getAttribute("href");"#"!==href?this.getAttribute("target")?appHost.supports("targetblank")||(e.preventDefault(),shell.openUrl(href)):appRouter.handleAnchorClick(e):e.preventDefault()}var EmbyButtonPrototype=Object.create(HTMLButtonElement.prototype),EmbyLinkButtonPrototype=Object.create(HTMLAnchorElement.prototype);return EmbyButtonPrototype.createdCallback=function(){this.classList.contains("emby-button")||(this.classList.add("emby-button"),browser.firefox&&this.classList.add("button-link-inline"),layoutManager.tv&&(this.classList.add("emby-button-focusscale"),this.classList.add("emby-button-tv")),enableAnimation()&&"false"!==this.getAttribute("data-ripple")&&!this.classList.contains("button-link")&&(dom.addEventListener(this,"keydown",onKeyDown,{passive:!0}),browser.safari||browser.firefox&&"A"===this.tagName?dom.addEventListener(this,"click",onClick,{passive:!0}):dom.addEventListener(this,"mousedown",onMouseDown,{passive:!0})))},EmbyButtonPrototype.attachedCallback=function(){"A"===this.tagName&&(dom.removeEventListener(this,"click",onAnchorClick,{}),dom.addEventListener(this,"click",onAnchorClick,{}),"true"===this.getAttribute("data-autohide")&&(appHost.supports("externallinks")?this.classList.remove("hide"):this.classList.add("hide")))},EmbyButtonPrototype.detachedCallback=function(){dom.removeEventListener(this,"click",onAnchorClick,{})},EmbyLinkButtonPrototype.createdCallback=EmbyButtonPrototype.createdCallback,EmbyLinkButtonPrototype.attachedCallback=EmbyButtonPrototype.attachedCallback,document.registerElement("emby-button",{prototype:EmbyButtonPrototype,extends:"button"}),document.registerElement("emby-linkbutton",{prototype:EmbyLinkButtonPrototype,extends:"a"}),EmbyButtonPrototype}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/metadataeditor/metadataeditor.js b/dashboard-ui/bower_components/emby-webcomponents/metadataeditor/metadataeditor.js index a487f163e4..dd31f116a7 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/metadataeditor/metadataeditor.js +++ b/dashboard-ui/bower_components/emby-webcomponents/metadataeditor/metadataeditor.js @@ -1 +1 @@ -define(["itemHelper","dom","layoutManager","dialogHelper","datetime","loading","focusManager","connectionManager","globalize","require","shell","emby-checkbox","emby-input","emby-select","listViewStyle","emby-textarea","emby-button","paper-icon-button-light","css!./../formdialog","clearButtonStyle"],function(itemHelper,dom,layoutManager,dialogHelper,datetime,loading,focusManager,connectionManager,globalize,require,shell){"use strict";function isDialog(){return currentContext.classList.contains("dialog")}function closeDialog(isSubmitted){isDialog()&&dialogHelper.close(currentContext)}function submitUpdatedItem(form,item){function afterContentTypeUpdated(){require(["toast"],function(toast){toast(globalize.translate("sharedcomponents#MessageItemSaved"))}),loading.hide(),closeDialog(!0)}var apiClient=getApiClient();apiClient.updateItem(item).then(function(){var newContentType=form.querySelector("#selectContentType").value||"";(metadataEditorInfo.ContentType||"")!==newContentType?apiClient.ajax({url:apiClient.getUrl("Items/"+item.Id+"/ContentType",{ContentType:newContentType}),type:"POST"}).then(function(){afterContentTypeUpdated()}):afterContentTypeUpdated()})}function getSelectedAirDays(form){var checkedItems=form.querySelectorAll(".chkAirDay:checked")||[];return Array.prototype.map.call(checkedItems,function(c){return c.getAttribute("data-day")})}function getAlbumArtists(form){return form.querySelector("#txtAlbumArtist").value.trim().split(";").filter(function(s){return s.length>0}).map(function(a){return{Name:a}})}function getArtists(form){return form.querySelector("#txtArtist").value.trim().split(";").filter(function(s){return s.length>0}).map(function(a){return{Name:a}})}function getDateFromForm(form,element,property){var val=form.querySelector(element).value;if(!val)return null;if(currentItem[property]){var date=datetime.parseISO8601Date(currentItem[property],!0),parts=date.toISOString().split("T");if(0===parts[0].indexOf(val)){var iso=parts[1];val+="T"+iso}}return val}function onSubmit(e){loading.show();var form=this;try{var item={Id:currentItem.Id,Name:form.querySelector("#txtName").value,OriginalTitle:form.querySelector("#txtOriginalName").value,ForcedSortName:form.querySelector("#txtSortName").value,CommunityRating:form.querySelector("#txtCommunityRating").value,HomePageUrl:form.querySelector("#txtHomePageUrl").value,CriticRating:form.querySelector("#txtCriticRating").value,IndexNumber:form.querySelector("#txtIndexNumber").value||null,AbsoluteEpisodeNumber:form.querySelector("#txtAbsoluteEpisodeNumber").value,DvdEpisodeNumber:form.querySelector("#txtDvdEpisodeNumber").value,DvdSeasonNumber:form.querySelector("#txtDvdSeasonNumber").value,AirsBeforeSeasonNumber:form.querySelector("#txtAirsBeforeSeason").value,AirsAfterSeasonNumber:form.querySelector("#txtAirsAfterSeason").value,AirsBeforeEpisodeNumber:form.querySelector("#txtAirsBeforeEpisode").value,ParentIndexNumber:form.querySelector("#txtParentIndexNumber").value||null,DisplayOrder:form.querySelector("#selectDisplayOrder").value,Album:form.querySelector("#txtAlbum").value,AlbumArtists:getAlbumArtists(form),ArtistItems:getArtists(form),Overview:form.querySelector("#txtOverview").value,Status:form.querySelector("#selectStatus").value,AirDays:getSelectedAirDays(form),AirTime:form.querySelector("#txtAirTime").value,Genres:editableListViewValues(form.querySelector("#listGenres")),Tags:editableListViewValues(form.querySelector("#listTags")),Studios:editableListViewValues(form.querySelector("#listStudios")).map(function(element){return{Name:element}}),PremiereDate:getDateFromForm(form,"#txtPremiereDate","PremiereDate"),DateCreated:getDateFromForm(form,"#txtDateAdded","DateCreated"),EndDate:getDateFromForm(form,"#txtEndDate","EndDate"),ProductionYear:form.querySelector("#txtProductionYear").value,AspectRatio:form.querySelector("#txtOriginalAspectRatio").value,Video3DFormat:form.querySelector("#select3dFormat").value,OfficialRating:form.querySelector("#selectOfficialRating").value,CustomRating:form.querySelector("#selectCustomRating").value,People:currentItem.People,LockData:form.querySelector("#chkLockData").checked,LockedFields:Array.prototype.filter.call(form.querySelectorAll(".selectLockedField"),function(c){return!c.checked}).map(function(c){return c.getAttribute("data-value")})};item.ProviderIds=Object.assign({},currentItem.ProviderIds);var idElements=form.querySelectorAll(".txtExternalId");if(Array.prototype.map.call(idElements,function(idElem){var providerKey=idElem.getAttribute("data-providerkey");item.ProviderIds[providerKey]=idElem.value}),item.PreferredMetadataLanguage=form.querySelector("#selectLanguage").value,item.PreferredMetadataCountryCode=form.querySelector("#selectCountry").value,"Person"===currentItem.Type){var placeOfBirth=form.querySelector("#txtPlaceOfBirth").value;item.ProductionLocations=placeOfBirth?[placeOfBirth]:[]}if("Series"===currentItem.Type){var seriesRuntime=form.querySelector("#txtSeriesRuntime").value;item.RunTimeTicks=seriesRuntime?6e8*seriesRuntime:null}var tagline=form.querySelector("#txtTagline").value;item.Taglines=tagline?[tagline]:[],submitUpdatedItem(form,item)}catch(err){alert(err)}return e.preventDefault(),e.stopPropagation(),!1}function editableListViewValues(list){return Array.prototype.map.call(list.querySelectorAll(".textValue"),function(el){return el.textContent})}function addElementToEditableListview(source,sortCallback){require(["prompt"],function(prompt){prompt({label:"Value:"}).then(function(text){var list=dom.parentWithClass(source,"editableListviewContainer").querySelector(".paperList"),items=editableListViewValues(list);items.push(text),populateListView(list,items,sortCallback)})})}function removeElementFromListview(source){var el=dom.parentWithClass(source,"listItem");el.parentNode.removeChild(el)}function editPerson(context,person,index){require(["personEditor"],function(personEditor){personEditor.show(person).then(function(updatedPerson){var isNew=index===-1;isNew&¤tItem.People.push(updatedPerson),populatePeople(context,currentItem.People)})})}function showMoreMenu(context,button,user){require(["itemContextMenu"],function(itemContextMenu){var item=currentItem;itemContextMenu.show({item:item,positionTo:button,edit:!1,editImages:!0,editSubtitles:!0,sync:!1,share:!1,play:!1,queue:!1,user:user}).then(function(result){result.deleted?afterDeleted(context,item):result.updated&&reload(context,item.Id,item.ServerId)})})}function afterDeleted(context,item){var parentId=item.ParentId||item.SeasonId||item.SeriesId;parentId?reload(context,parentId,item.ServerId):require(["appRouter"],function(appRouter){appRouter.goHome()})}function onWebSocketMessageReceived(e,data){var msg=data;"LibraryChanged"===msg.MessageType&&msg.Data.ItemsUpdated.indexOf(currentItem.Id)!==-1&&(console.log("Item updated - reloading metadata"),reload(currentContext,currentItem.Id,currentItem.ServerId))}function bindItemChanged(context,apiClient){Events.on(apiClient,"websocketmessage",onWebSocketMessageReceived)}function unbindItemChanged(context,apiClient){Events.off(apiClient,"websocketmessage",onWebSocketMessageReceived)}function onEditorClick(e){var btnRemoveFromEditorList=dom.parentWithClass(e.target,"btnRemoveFromEditorList");if(btnRemoveFromEditorList)return void removeElementFromListview(btnRemoveFromEditorList);var btnAddTextItem=dom.parentWithClass(e.target,"btnAddTextItem");btnAddTextItem&&addElementToEditableListview(btnAddTextItem)}function getApiClient(){return connectionManager.getApiClient(currentItem.ServerId)}function init(context,apiClient){context.querySelector(".externalIds").addEventListener("click",function(e){var btnOpenExternalId=dom.parentWithClass(e.target,"btnOpenExternalId");if(btnOpenExternalId){var field=context.querySelector("#"+btnOpenExternalId.getAttribute("data-fieldid")),formatString=field.getAttribute("data-formatstring");field.value&&shell.openUrl(formatString.replace("{0}",field.value))}}),context.querySelector(".btnCancel").addEventListener("click",function(){closeDialog(!1)}),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){e.target.checked?hideElement(".providerSettingsContainer"):showElement(".providerSettingsContainer")}),context.removeEventListener("click",onEditorClick),context.addEventListener("click",onEditorClick);var form=context.querySelector("form");form.removeEventListener("submit",onSubmit),form.addEventListener("submit",onSubmit),context.querySelector("#btnAddPerson").addEventListener("click",function(event,data){editPerson(context,{},-1)}),context.querySelector("#peopleList").addEventListener("click",function(e){var index,btnDeletePerson=dom.parentWithClass(e.target,"btnDeletePerson");btnDeletePerson&&(index=parseInt(btnDeletePerson.getAttribute("data-index")),currentItem.People.splice(index,1),populatePeople(context,currentItem.People));var btnEditPerson=dom.parentWithClass(e.target,"btnEditPerson");btnEditPerson&&(index=parseInt(btnEditPerson.getAttribute("data-index")),editPerson(context,currentItem.People[index],index))}),isDialog()&&bindItemChanged(context,apiClient)}function getItem(itemId,serverId){var apiClient=connectionManager.getApiClient(serverId);return itemId?apiClient.getItem(apiClient.getCurrentUserId(),itemId):apiClient.getRootFolder(apiClient.getCurrentUserId())}function getEditorConfig(itemId,serverId){var apiClient=connectionManager.getApiClient(serverId);return itemId?apiClient.getJSON(apiClient.getUrl("Items/"+itemId+"/MetadataEditor")):Promise.resolve({})}function populateCountries(select,allCountries){var html="";html+="";for(var i=0,length=allCountries.length;i"+culture.DisplayName+""}select.innerHTML=html}function populateLanguages(select,languages){var html="";html+="";for(var i=0,length=languages.length;i"+culture.DisplayName+""}select.innerHTML=html}function renderContentTypeOptions(context,metadataInfo){metadataInfo.ContentTypeOptions.length?showElement("#fldContentType",context):hideElement("#fldContentType",context);var html=metadataInfo.ContentTypeOptions.map(function(i){return'"}).join(""),selectEl=context.querySelector("#selectContentType");selectEl.innerHTML=html,selectEl.value=metadataInfo.ContentType||""}function loadExternalIds(context,item,externalIds){for(var html="",providerIds=item.ProviderIds||{},i=0,length=externalIds.length;i',html+='
';var value=providerIds[idInfo.Key]||"";html+='
',html+='',html+="
",formatString&&(html+=''),html+="
",html+="
"}var elem=context.querySelector(".externalIds",context);elem.innerHTML=html,externalIds.length?context.querySelector(".externalIdsSection").classList.remove("hide"):context.querySelector(".externalIdsSection").classList.add("hide")}function hideElement(selector,context,multiple){if(context=context||document,"string"==typeof selector){var elements=multiple?context.querySelectorAll(selector):[context.querySelector(selector)];Array.prototype.forEach.call(elements,function(el){el&&el.classList.add("hide")})}else selector.classList.add("hide")}function showElement(selector,context,multiple){if(context=context||document,"string"==typeof selector){var elements=multiple?context.querySelectorAll(selector):[context.querySelector(selector)];Array.prototype.forEach.call(elements,function(el){el&&el.classList.remove("hide")})}else selector.classList.remove("hide")}function setFieldVisibilities(context,item){item.Path&&"Remote"!==item.LocationType?showElement("#fldPath",context):hideElement("#fldPath",context),"Series"===item.Type||"Movie"===item.Type||"Trailer"===item.Type?showElement("#fldOriginalName",context):hideElement("#fldOriginalName",context),"Series"===item.Type?showElement("#fldSeriesRuntime",context):hideElement("#fldSeriesRuntime",context),"Series"===item.Type||"Person"===item.Type?showElement("#fldEndDate",context):hideElement("#fldEndDate",context),"MusicAlbum"===item.Type?showElement("#albumAssociationMessage",context):hideElement("#albumAssociationMessage",context),"Movie"===item.Type||"Trailer"===item.Type?showElement("#fldCriticRating",context):hideElement("#fldCriticRating",context),"Series"===item.Type?(showElement("#fldStatus",context),showElement("#fldAirDays",context),showElement("#fldAirTime",context)):(hideElement("#fldStatus",context),hideElement("#fldAirDays",context),hideElement("#fldAirTime",context)),"Video"===item.MediaType&&"TvChannel"!==item.Type?showElement("#fld3dFormat",context):hideElement("#fld3dFormat",context),"Audio"===item.Type?showElement("#fldAlbumArtist",context):hideElement("#fldAlbumArtist",context),"Audio"===item.Type||"MusicVideo"===item.Type?(showElement("#fldArtist",context),showElement("#fldAlbum",context)):(hideElement("#fldArtist",context),hideElement("#fldAlbum",context)),"Episode"===item.Type?showElement("#collapsibleDvdEpisodeInfo",context):hideElement("#collapsibleDvdEpisodeInfo",context),"Episode"===item.Type&&0===item.ParentIndexNumber?showElement("#collapsibleSpecialEpisodeInfo",context):hideElement("#collapsibleSpecialEpisodeInfo",context),"Person"===item.Type||"Genre"===item.Type||"Studio"===item.Type||"GameGenre"===item.Type||"MusicGenre"===item.Type||"TvChannel"===item.Type?(hideElement("#fldCommunityRating",context),hideElement("#genresCollapsible",context),hideElement("#peopleCollapsible",context),hideElement("#studiosCollapsible",context),"TvChannel"===item.Type?showElement("#fldOfficialRating",context):hideElement("#fldOfficialRating",context),hideElement("#fldCustomRating",context)):(showElement("#fldCommunityRating",context),showElement("#genresCollapsible",context),showElement("#peopleCollapsible",context),showElement("#studiosCollapsible",context),showElement("#fldOfficialRating",context),showElement("#fldCustomRating",context)),showElement("#tagsCollapsible",context),"TvChannel"===item.Type?(hideElement("#metadataSettingsCollapsible",context),hideElement("#fldPremiereDate",context),hideElement("#fldDateAdded",context),hideElement("#fldYear",context)):(showElement("#metadataSettingsCollapsible",context),showElement("#fldPremiereDate",context),showElement("#fldDateAdded",context),showElement("#fldYear",context)),"TvChannel"===item.Type?hideElement(".overviewContainer",context):showElement(".overviewContainer",context),"TvChannel"===item.Type?hideElement(".websiteFieldContainer",context):showElement(".websiteFieldContainer",context),"Person"===item.Type?(context.querySelector("#txtProductionYear").label(globalize.translate("sharedcomponents#LabelBirthYear")),context.querySelector("#txtPremiereDate").label(globalize.translate("sharedcomponents#LabelBirthDate")),context.querySelector("#txtEndDate").label(globalize.translate("sharedcomponents#LabelDeathDate")),showElement("#fldPlaceOfBirth")):(context.querySelector("#txtProductionYear").label(globalize.translate("sharedcomponents#LabelYear")),context.querySelector("#txtPremiereDate").label(globalize.translate("sharedcomponents#LabelReleaseDate")),context.querySelector("#txtEndDate").label(globalize.translate("sharedcomponents#LabelEndDate")),hideElement("#fldPlaceOfBirth")),"Video"===item.MediaType&&"TvChannel"!==item.Type?showElement("#fldOriginalAspectRatio"):hideElement("#fldOriginalAspectRatio"),"Audio"===item.Type||"Episode"===item.Type||"Season"===item.Type?(showElement("#fldIndexNumber"),"Episode"===item.Type?context.querySelector("#txtIndexNumber").label(globalize.translate("sharedcomponents#LabelEpisodeNumber")):"Season"===item.Type?context.querySelector("#txtIndexNumber").label(globalize.translate("sharedcomponents#LabelSeasonNumber")):"Audio"===item.Type?context.querySelector("#txtIndexNumber").label(globalize.translate("sharedcomponents#LabelTrackNumber")):context.querySelector("#txtIndexNumber").label(globalize.translate("sharedcomponents#LabelNumber"))):hideElement("#fldIndexNumber"),"Audio"===item.Type||"Episode"===item.Type?(showElement("#fldParentIndexNumber"),"Episode"===item.Type?context.querySelector("#txtParentIndexNumber").label(globalize.translate("sharedcomponents#LabelSeasonNumber")):"Audio"===item.Type?context.querySelector("#txtParentIndexNumber").label(globalize.translate("sharedcomponents#LabelDiscNumber")):context.querySelector("#txtParentIndexNumber").label(globalize.translate("sharedcomponents#LabelParentNumber"))):hideElement("#fldParentIndexNumber",context),"BoxSet"===item.Type?(showElement("#fldDisplayOrder",context),context.querySelector("#selectDisplayOrder").innerHTML='",showElement("#collapsibleDisplaySettings",context)):(context.querySelector("#selectDisplayOrder").innerHTML="",hideElement("#fldDisplayOrder",context),hideElement("#collapsibleDisplaySettings",context))}function fillItemInfo(context,item,parentalRatingOptions){var select=context.querySelector("#selectOfficialRating");populateRatings(parentalRatingOptions,select,item.OfficialRating),select.value=item.OfficialRating||"",select=context.querySelector("#selectCustomRating"),populateRatings(parentalRatingOptions,select,item.CustomRating),select.value=item.CustomRating||"";var selectStatus=context.querySelector("#selectStatus");populateStatus(selectStatus),selectStatus.value=item.Status||"",context.querySelector("#select3dFormat",context).value=item.Video3DFormat||"",Array.prototype.forEach.call(context.querySelectorAll(".chkAirDay",context),function(el){el.checked=(item.AirDays||[]).indexOf(el.getAttribute("data-day"))!==-1}),populateListView(context.querySelector("#listGenres"),item.Genres),populatePeople(context,item.People||[]),populateListView(context.querySelector("#listStudios"),(item.Studios||[]).map(function(element){return element.Name||""})),populateListView(context.querySelector("#listTags"),item.Tags);var lockData=item.LockData||!1,chkLockData=context.querySelector("#chkLockData");chkLockData.checked=lockData,chkLockData.checked?hideElement(".providerSettingsContainer",context):showElement(".providerSettingsContainer",context),populateInternetProviderSettings(context,item,item.LockedFields),context.querySelector("#txtPath").value=item.Path||"",context.querySelector("#txtName").value=item.Name||"",context.querySelector("#txtOriginalName").value=item.OriginalTitle||"",context.querySelector("#txtOverview").value=item.Overview||"",context.querySelector("#txtTagline").value=item.Taglines&&item.Taglines.length?item.Taglines[0]:"",context.querySelector("#txtSortName").value=item.ForcedSortName||"",context.querySelector("#txtCommunityRating").value=item.CommunityRating||"",context.querySelector("#txtHomePageUrl").value=item.HomePageUrl||"",context.querySelector("#txtCriticRating").value=item.CriticRating||"",context.querySelector("#txtIndexNumber").value="IndexNumber"in item?item.IndexNumber:"",context.querySelector("#txtParentIndexNumber").value="ParentIndexNumber"in item?item.ParentIndexNumber:"",context.querySelector("#txtAbsoluteEpisodeNumber").value="AbsoluteEpisodeNumber"in item?item.AbsoluteEpisodeNumber:"",context.querySelector("#txtDvdEpisodeNumber").value="DvdEpisodeNumber"in item?item.DvdEpisodeNumber:"",context.querySelector("#txtDvdSeasonNumber").value="DvdSeasonNumber"in item?item.DvdSeasonNumber:"",context.querySelector("#txtAirsBeforeSeason").value="AirsBeforeSeasonNumber"in item?item.AirsBeforeSeasonNumber:"",context.querySelector("#txtAirsAfterSeason").value="AirsAfterSeasonNumber"in item?item.AirsAfterSeasonNumber:"",context.querySelector("#txtAirsBeforeEpisode").value="AirsBeforeEpisodeNumber"in item?item.AirsBeforeEpisodeNumber:"",context.querySelector("#txtAlbum").value=item.Album||"",context.querySelector("#txtAlbumArtist").value=(item.AlbumArtists||[]).map(function(a){return a.Name}).join(";"),context.querySelector("#selectDisplayOrder").value=item.DisplayOrder,context.querySelector("#txtArtist").value=(item.ArtistItems||[]).map(function(a){return a.Name}).join(";");var date;if(item.DateCreated)try{date=datetime.parseISO8601Date(item.DateCreated,!0),context.querySelector("#txtDateAdded").value=date.toISOString().slice(0,10)}catch(e){context.querySelector("#txtDateAdded").value=""}else context.querySelector("#txtDateAdded").value="";if(item.PremiereDate)try{date=datetime.parseISO8601Date(item.PremiereDate,!0),context.querySelector("#txtPremiereDate").value=date.toISOString().slice(0,10)}catch(e){context.querySelector("#txtPremiereDate").value=""}else context.querySelector("#txtPremiereDate").value="";if(item.EndDate)try{date=datetime.parseISO8601Date(item.EndDate,!0),context.querySelector("#txtEndDate").value=date.toISOString().slice(0,10)}catch(e){context.querySelector("#txtEndDate").value=""}else context.querySelector("#txtEndDate").value="";context.querySelector("#txtProductionYear").value=item.ProductionYear||"",context.querySelector("#txtAirTime").value=item.AirTime||"";var placeofBirth=item.ProductionLocations&&item.ProductionLocations.length?item.ProductionLocations[0]:"";if(context.querySelector("#txtPlaceOfBirth").value=placeofBirth,context.querySelector("#txtOriginalAspectRatio").value=item.AspectRatio||"",context.querySelector("#selectLanguage").value=item.PreferredMetadataLanguage||"",context.querySelector("#selectCountry").value=item.PreferredMetadataCountryCode||"",item.RunTimeTicks){var minutes=item.RunTimeTicks/6e8;context.querySelector("#txtSeriesRuntime").value=Math.round(minutes)}else context.querySelector("#txtSeriesRuntime",context).value=""}function populateRatings(allParentalRatings,select,currentValue){var html="";html+="";var i,length,rating,ratings=[],currentValueFound=!1;for(i=0,length=allParentalRatings.length;i"+rating.Name+"";select.innerHTML=html}function populateStatus(select){var html="";html+="",html+="",html+="",select.innerHTML=html}function populateListView(list,items,sortCallback){items=items||[],"undefined"==typeof sortCallback?items.sort(function(a,b){return a.toLowerCase().localeCompare(b.toLowerCase())}):items=sortCallback(items);for(var html="",i=0;i',html+='live_tv',html+='
',html+='
',html+=items[i],html+="
",html+="
",html+='',html+="";list.innerHTML=html}function populatePeople(context,people){for(var lastType="",html="",elem=context.querySelector("#peopleList"),i=0,length=people.length;i',html+='person',html+='
',html+='",html+="
",html+='',html+=""}elem.innerHTML=html}function generateSliders(fields,currentFields){for(var html="",i=0;i",html+=""+name+"",html+=""}return html}function populateInternetProviderSettings(context,item,lockedFields){var container=context.querySelector(".providerSettingsContainer");lockedFields=lockedFields||[];var metadatafields=[{name:globalize.translate("sharedcomponents#Name"),value:"Name"},{name:globalize.translate("sharedcomponents#Overview"),value:"Overview"},{name:globalize.translate("sharedcomponents#Genres"),value:"Genres"},{name:globalize.translate("sharedcomponents#ParentalRating"),value:"OfficialRating"},{name:globalize.translate("sharedcomponents#People"),value:"Cast"}];"Person"===item.Type?metadatafields.push({name:globalize.translate("sharedcomponents#BirthLocation"),value:"ProductionLocations"}):metadatafields.push({name:globalize.translate("sharedcomponents#ProductionLocations"),value:"ProductionLocations"}),"Series"===item.Type&&metadatafields.push({name:globalize.translate("Runtime"),value:"Runtime"}),metadatafields.push({name:globalize.translate("sharedcomponents#Studios"),value:"Studios"}),metadatafields.push({name:globalize.translate("sharedcomponents#Tags"),value:"Tags"}),metadatafields.push({name:globalize.translate("sharedcomponents#Images"),value:"Images"}),metadatafields.push({name:globalize.translate("sharedcomponents#Backdrops"),value:"Backdrops"}),"Game"===item.Type&&metadatafields.push({name:globalize.translate("sharedcomponents#Screenshots"),value:"Screenshots"});var html="";html+="

"+globalize.translate("sharedcomponents#HeaderEnabledFields")+"

",html+="

"+globalize.translate("sharedcomponents#HeaderEnabledFieldsHelp")+"

",html+=generateSliders(metadatafields,lockedFields),container.innerHTML=html}function reload(context,itemId,serverId){loading.show(),Promise.all([getItem(itemId,serverId),getEditorConfig(itemId,serverId)]).then(function(responses){var item=responses[0];metadataEditorInfo=responses[1],currentItem=item;var languages=metadataEditorInfo.Cultures,countries=metadataEditorInfo.Countries;renderContentTypeOptions(context,metadataEditorInfo),loadExternalIds(context,item,metadataEditorInfo.ExternalIdInfos),populateLanguages(context.querySelector("#selectLanguage"),languages),populateCountries(context.querySelector("#selectCountry"),countries),setFieldVisibilities(context,item),fillItemInfo(context,item,metadataEditorInfo.ParentalRatingOptions),"Video"===item.MediaType&&"Episode"!==item.Type&&"TvChannel"!==item.Type?showElement("#fldTagline",context):hideElement("#fldTagline",context),loading.hide()})}function centerFocus(elem,horiz,on){require(["scrollHelper"],function(scrollHelper){var fn=on?"on":"off";scrollHelper.centerFocus[fn](elem,horiz)})}function show(itemId,serverId,resolve,reject){loading.show(),require(["text!./metadataeditor.template.html"],function(template){var dialogOptions={removeOnClose:!0,scrollY:!1};layoutManager.tv?dialogOptions.size="fullscreen":dialogOptions.size="medium-tall";var dlg=dialogHelper.createDialog(dialogOptions);dlg.classList.add("formDialog");var html="";html+=globalize.translateDocument(template,"sharedcomponents"),dlg.innerHTML=html,layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!0),dialogHelper.open(dlg),dlg.addEventListener("close",function(){layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!1),unbindItemChanged(dlg,connectionManager.getApiClient(serverId)),resolve()}),currentContext=dlg,init(dlg,connectionManager.getApiClient(serverId)),reload(dlg,itemId,serverId)})}var currentContext,metadataEditorInfo,currentItem;return{show:function(itemId,serverId){return new Promise(function(resolve,reject){return show(itemId,serverId,resolve,reject)})},embed:function(elem,itemId,serverId){return new Promise(function(resolve,reject){loading.show(),require(["text!./metadataeditor.template.html"],function(template){elem.innerHTML=globalize.translateDocument(template,"sharedcomponents"),elem.querySelector(".formDialogFooter").classList.remove("formDialogFooter"),elem.querySelector(".btnHeaderSave").classList.remove("hide"),elem.querySelector(".btnCancel").classList.add("hide"),currentContext=elem,init(elem,connectionManager.getApiClient(serverId)),reload(elem,itemId,serverId),focusManager.autoFocus(elem)})})}}}); \ No newline at end of file +define(["itemHelper","dom","layoutManager","dialogHelper","datetime","loading","focusManager","connectionManager","globalize","require","shell","emby-checkbox","emby-input","emby-select","listViewStyle","emby-textarea","emby-button","paper-icon-button-light","css!./../formdialog","clearButtonStyle"],function(itemHelper,dom,layoutManager,dialogHelper,datetime,loading,focusManager,connectionManager,globalize,require,shell){"use strict";function isDialog(){return currentContext.classList.contains("dialog")}function closeDialog(isSubmitted){isDialog()&&dialogHelper.close(currentContext)}function submitUpdatedItem(form,item){function afterContentTypeUpdated(){require(["toast"],function(toast){toast(globalize.translate("sharedcomponents#MessageItemSaved"))}),loading.hide(),closeDialog(!0)}var apiClient=getApiClient();apiClient.updateItem(item).then(function(){var newContentType=form.querySelector("#selectContentType").value||"";(metadataEditorInfo.ContentType||"")!==newContentType?apiClient.ajax({url:apiClient.getUrl("Items/"+item.Id+"/ContentType",{ContentType:newContentType}),type:"POST"}).then(function(){afterContentTypeUpdated()}):afterContentTypeUpdated()})}function getSelectedAirDays(form){var checkedItems=form.querySelectorAll(".chkAirDay:checked")||[];return Array.prototype.map.call(checkedItems,function(c){return c.getAttribute("data-day")})}function getAlbumArtists(form){return form.querySelector("#txtAlbumArtist").value.trim().split(";").filter(function(s){return s.length>0}).map(function(a){return{Name:a}})}function getArtists(form){return form.querySelector("#txtArtist").value.trim().split(";").filter(function(s){return s.length>0}).map(function(a){return{Name:a}})}function getDateFromForm(form,element,property){var val=form.querySelector(element).value;if(!val)return null;if(currentItem[property]){var date=datetime.parseISO8601Date(currentItem[property],!0),parts=date.toISOString().split("T");if(0===parts[0].indexOf(val)){var iso=parts[1];val+="T"+iso}}return val}function onSubmit(e){loading.show();var form=this;try{var item={Id:currentItem.Id,Name:form.querySelector("#txtName").value,OriginalTitle:form.querySelector("#txtOriginalName").value,ForcedSortName:form.querySelector("#txtSortName").value,CommunityRating:form.querySelector("#txtCommunityRating").value,HomePageUrl:form.querySelector("#txtHomePageUrl").value,CriticRating:form.querySelector("#txtCriticRating").value,IndexNumber:form.querySelector("#txtIndexNumber").value||null,AbsoluteEpisodeNumber:form.querySelector("#txtAbsoluteEpisodeNumber").value,DvdEpisodeNumber:form.querySelector("#txtDvdEpisodeNumber").value,DvdSeasonNumber:form.querySelector("#txtDvdSeasonNumber").value,AirsBeforeSeasonNumber:form.querySelector("#txtAirsBeforeSeason").value,AirsAfterSeasonNumber:form.querySelector("#txtAirsAfterSeason").value,AirsBeforeEpisodeNumber:form.querySelector("#txtAirsBeforeEpisode").value,ParentIndexNumber:form.querySelector("#txtParentIndexNumber").value||null,DisplayOrder:form.querySelector("#selectDisplayOrder").value,Album:form.querySelector("#txtAlbum").value,AlbumArtists:getAlbumArtists(form),ArtistItems:getArtists(form),Overview:form.querySelector("#txtOverview").value,Status:form.querySelector("#selectStatus").value,AirDays:getSelectedAirDays(form),AirTime:form.querySelector("#txtAirTime").value,Genres:editableListViewValues(form.querySelector("#listGenres")),Tags:editableListViewValues(form.querySelector("#listTags")),Studios:editableListViewValues(form.querySelector("#listStudios")).map(function(element){return{Name:element}}),PremiereDate:getDateFromForm(form,"#txtPremiereDate","PremiereDate"),DateCreated:getDateFromForm(form,"#txtDateAdded","DateCreated"),EndDate:getDateFromForm(form,"#txtEndDate","EndDate"),ProductionYear:form.querySelector("#txtProductionYear").value,AspectRatio:form.querySelector("#txtOriginalAspectRatio").value,Video3DFormat:form.querySelector("#select3dFormat").value,OfficialRating:form.querySelector("#selectOfficialRating").value,CustomRating:form.querySelector("#selectCustomRating").value,People:currentItem.People,LockData:form.querySelector("#chkLockData").checked,LockedFields:Array.prototype.filter.call(form.querySelectorAll(".selectLockedField"),function(c){return!c.checked}).map(function(c){return c.getAttribute("data-value")})};item.ProviderIds=Object.assign({},currentItem.ProviderIds);var idElements=form.querySelectorAll(".txtExternalId");if(Array.prototype.map.call(idElements,function(idElem){var providerKey=idElem.getAttribute("data-providerkey");item.ProviderIds[providerKey]=idElem.value}),item.PreferredMetadataLanguage=form.querySelector("#selectLanguage").value,item.PreferredMetadataCountryCode=form.querySelector("#selectCountry").value,"Person"===currentItem.Type){var placeOfBirth=form.querySelector("#txtPlaceOfBirth").value;item.ProductionLocations=placeOfBirth?[placeOfBirth]:[]}if("Series"===currentItem.Type){var seriesRuntime=form.querySelector("#txtSeriesRuntime").value;item.RunTimeTicks=seriesRuntime?6e8*seriesRuntime:null}var tagline=form.querySelector("#txtTagline").value;item.Taglines=tagline?[tagline]:[],submitUpdatedItem(form,item)}catch(err){alert(err)}return e.preventDefault(),e.stopPropagation(),!1}function editableListViewValues(list){return Array.prototype.map.call(list.querySelectorAll(".textValue"),function(el){return el.textContent})}function addElementToEditableListview(source,sortCallback){require(["prompt"],function(prompt){prompt({label:"Value:"}).then(function(text){var list=dom.parentWithClass(source,"editableListviewContainer").querySelector(".paperList"),items=editableListViewValues(list);items.push(text),populateListView(list,items,sortCallback)})})}function removeElementFromListview(source){var el=dom.parentWithClass(source,"listItem");el.parentNode.removeChild(el)}function editPerson(context,person,index){require(["personEditor"],function(personEditor){personEditor.show(person).then(function(updatedPerson){var isNew=index===-1;isNew&¤tItem.People.push(updatedPerson),populatePeople(context,currentItem.People)})})}function showMoreMenu(context,button,user){require(["itemContextMenu"],function(itemContextMenu){var item=currentItem;itemContextMenu.show({item:item,positionTo:button,edit:!1,editImages:!0,editSubtitles:!0,sync:!1,share:!1,play:!1,queue:!1,user:user}).then(function(result){result.deleted?afterDeleted(context,item):result.updated&&reload(context,item.Id,item.ServerId)})})}function afterDeleted(context,item){var parentId=item.ParentId||item.SeasonId||item.SeriesId;parentId?reload(context,parentId,item.ServerId):require(["appRouter"],function(appRouter){appRouter.goHome()})}function onWebSocketMessageReceived(e,data){var msg=data;"LibraryChanged"===msg.MessageType&&msg.Data.ItemsUpdated.indexOf(currentItem.Id)!==-1&&(console.log("Item updated - reloading metadata"),reload(currentContext,currentItem.Id,currentItem.ServerId))}function bindItemChanged(context,apiClient){Events.on(apiClient,"websocketmessage",onWebSocketMessageReceived)}function unbindItemChanged(context,apiClient){Events.off(apiClient,"websocketmessage",onWebSocketMessageReceived)}function onEditorClick(e){var btnRemoveFromEditorList=dom.parentWithClass(e.target,"btnRemoveFromEditorList");if(btnRemoveFromEditorList)return void removeElementFromListview(btnRemoveFromEditorList);var btnAddTextItem=dom.parentWithClass(e.target,"btnAddTextItem");btnAddTextItem&&addElementToEditableListview(btnAddTextItem)}function getApiClient(){return connectionManager.getApiClient(currentItem.ServerId)}function init(context,apiClient){context.querySelector(".externalIds").addEventListener("click",function(e){var btnOpenExternalId=dom.parentWithClass(e.target,"btnOpenExternalId");if(btnOpenExternalId){var field=context.querySelector("#"+btnOpenExternalId.getAttribute("data-fieldid")),formatString=field.getAttribute("data-formatstring");field.value&&shell.openUrl(formatString.replace("{0}",field.value))}}),context.querySelector(".btnCancel").addEventListener("click",function(){closeDialog(!1)}),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){e.target.checked?hideElement(".providerSettingsContainer"):showElement(".providerSettingsContainer")}),context.removeEventListener("click",onEditorClick),context.addEventListener("click",onEditorClick);var form=context.querySelector("form");form.removeEventListener("submit",onSubmit),form.addEventListener("submit",onSubmit),context.querySelector("#btnAddPerson").addEventListener("click",function(event,data){editPerson(context,{},-1)}),context.querySelector("#peopleList").addEventListener("click",function(e){var index,btnDeletePerson=dom.parentWithClass(e.target,"btnDeletePerson");btnDeletePerson&&(index=parseInt(btnDeletePerson.getAttribute("data-index")),currentItem.People.splice(index,1),populatePeople(context,currentItem.People));var btnEditPerson=dom.parentWithClass(e.target,"btnEditPerson");btnEditPerson&&(index=parseInt(btnEditPerson.getAttribute("data-index")),editPerson(context,currentItem.People[index],index))}),isDialog()&&bindItemChanged(context,apiClient)}function getItem(itemId,serverId){var apiClient=connectionManager.getApiClient(serverId);return itemId?apiClient.getItem(apiClient.getCurrentUserId(),itemId):apiClient.getRootFolder(apiClient.getCurrentUserId())}function getEditorConfig(itemId,serverId){var apiClient=connectionManager.getApiClient(serverId);return itemId?apiClient.getJSON(apiClient.getUrl("Items/"+itemId+"/MetadataEditor")):Promise.resolve({})}function populateCountries(select,allCountries){var html="";html+="";for(var i=0,length=allCountries.length;i"+culture.DisplayName+""}select.innerHTML=html}function populateLanguages(select,languages){var html="";html+="";for(var i=0,length=languages.length;i"+culture.DisplayName+""}select.innerHTML=html}function renderContentTypeOptions(context,metadataInfo){metadataInfo.ContentTypeOptions.length?showElement("#fldContentType",context):hideElement("#fldContentType",context);var html=metadataInfo.ContentTypeOptions.map(function(i){return'"}).join(""),selectEl=context.querySelector("#selectContentType");selectEl.innerHTML=html,selectEl.value=metadataInfo.ContentType||""}function loadExternalIds(context,item,externalIds){for(var html="",providerIds=item.ProviderIds||{},i=0,length=externalIds.length;i',html+='
';var value=providerIds[idInfo.Key]||"";html+='
',html+='',html+="
",formatString&&(html+=''),html+="
",html+=""}var elem=context.querySelector(".externalIds",context);elem.innerHTML=html,externalIds.length?context.querySelector(".externalIdsSection").classList.remove("hide"):context.querySelector(".externalIdsSection").classList.add("hide")}function hideElement(selector,context,multiple){if(context=context||document,"string"==typeof selector){var elements=multiple?context.querySelectorAll(selector):[context.querySelector(selector)];Array.prototype.forEach.call(elements,function(el){el&&el.classList.add("hide")})}else selector.classList.add("hide")}function showElement(selector,context,multiple){if(context=context||document,"string"==typeof selector){var elements=multiple?context.querySelectorAll(selector):[context.querySelector(selector)];Array.prototype.forEach.call(elements,function(el){el&&el.classList.remove("hide")})}else selector.classList.remove("hide")}function setFieldVisibilities(context,item){item.Path&&"Remote"!==item.LocationType?showElement("#fldPath",context):hideElement("#fldPath",context),"Series"===item.Type||"Movie"===item.Type||"Trailer"===item.Type?showElement("#fldOriginalName",context):hideElement("#fldOriginalName",context),"Series"===item.Type?showElement("#fldSeriesRuntime",context):hideElement("#fldSeriesRuntime",context),"Series"===item.Type||"Person"===item.Type?showElement("#fldEndDate",context):hideElement("#fldEndDate",context),"MusicAlbum"===item.Type?showElement("#albumAssociationMessage",context):hideElement("#albumAssociationMessage",context),"Movie"===item.Type||"Trailer"===item.Type?showElement("#fldCriticRating",context):hideElement("#fldCriticRating",context),"Series"===item.Type?(showElement("#fldStatus",context),showElement("#fldAirDays",context),showElement("#fldAirTime",context)):(hideElement("#fldStatus",context),hideElement("#fldAirDays",context),hideElement("#fldAirTime",context)),"Video"===item.MediaType&&"TvChannel"!==item.Type?showElement("#fld3dFormat",context):hideElement("#fld3dFormat",context),"Audio"===item.Type?showElement("#fldAlbumArtist",context):hideElement("#fldAlbumArtist",context),"Audio"===item.Type||"MusicVideo"===item.Type?(showElement("#fldArtist",context),showElement("#fldAlbum",context)):(hideElement("#fldArtist",context),hideElement("#fldAlbum",context)),"Episode"===item.Type?showElement("#collapsibleDvdEpisodeInfo",context):hideElement("#collapsibleDvdEpisodeInfo",context),"Episode"===item.Type&&0===item.ParentIndexNumber?showElement("#collapsibleSpecialEpisodeInfo",context):hideElement("#collapsibleSpecialEpisodeInfo",context),"Person"===item.Type||"Genre"===item.Type||"Studio"===item.Type||"GameGenre"===item.Type||"MusicGenre"===item.Type||"TvChannel"===item.Type?(hideElement("#fldCommunityRating",context),hideElement("#genresCollapsible",context),hideElement("#peopleCollapsible",context),hideElement("#studiosCollapsible",context),"TvChannel"===item.Type?showElement("#fldOfficialRating",context):hideElement("#fldOfficialRating",context),hideElement("#fldCustomRating",context)):(showElement("#fldCommunityRating",context),showElement("#genresCollapsible",context),showElement("#peopleCollapsible",context),showElement("#studiosCollapsible",context),showElement("#fldOfficialRating",context),showElement("#fldCustomRating",context)),showElement("#tagsCollapsible",context),"TvChannel"===item.Type?(hideElement("#metadataSettingsCollapsible",context),hideElement("#fldPremiereDate",context),hideElement("#fldDateAdded",context),hideElement("#fldYear",context)):(showElement("#metadataSettingsCollapsible",context),showElement("#fldPremiereDate",context),showElement("#fldDateAdded",context),showElement("#fldYear",context)),"TvChannel"===item.Type?hideElement(".overviewContainer",context):showElement(".overviewContainer",context),"TvChannel"===item.Type?hideElement(".websiteFieldContainer",context):showElement(".websiteFieldContainer",context),"Person"===item.Type?(context.querySelector("#txtProductionYear").label(globalize.translate("sharedcomponents#LabelBirthYear")),context.querySelector("#txtPremiereDate").label(globalize.translate("sharedcomponents#LabelBirthDate")),context.querySelector("#txtEndDate").label(globalize.translate("sharedcomponents#LabelDeathDate")),showElement("#fldPlaceOfBirth")):(context.querySelector("#txtProductionYear").label(globalize.translate("sharedcomponents#LabelYear")),context.querySelector("#txtPremiereDate").label(globalize.translate("sharedcomponents#LabelReleaseDate")),context.querySelector("#txtEndDate").label(globalize.translate("sharedcomponents#LabelEndDate")),hideElement("#fldPlaceOfBirth")),"Video"===item.MediaType&&"TvChannel"!==item.Type?showElement("#fldOriginalAspectRatio"):hideElement("#fldOriginalAspectRatio"),"Audio"===item.Type||"Episode"===item.Type||"Season"===item.Type?(showElement("#fldIndexNumber"),"Episode"===item.Type?context.querySelector("#txtIndexNumber").label(globalize.translate("sharedcomponents#LabelEpisodeNumber")):"Season"===item.Type?context.querySelector("#txtIndexNumber").label(globalize.translate("sharedcomponents#LabelSeasonNumber")):"Audio"===item.Type?context.querySelector("#txtIndexNumber").label(globalize.translate("sharedcomponents#LabelTrackNumber")):context.querySelector("#txtIndexNumber").label(globalize.translate("sharedcomponents#LabelNumber"))):hideElement("#fldIndexNumber"),"Audio"===item.Type||"Episode"===item.Type?(showElement("#fldParentIndexNumber"),"Episode"===item.Type?context.querySelector("#txtParentIndexNumber").label(globalize.translate("sharedcomponents#LabelSeasonNumber")):"Audio"===item.Type?context.querySelector("#txtParentIndexNumber").label(globalize.translate("sharedcomponents#LabelDiscNumber")):context.querySelector("#txtParentIndexNumber").label(globalize.translate("sharedcomponents#LabelParentNumber"))):hideElement("#fldParentIndexNumber",context),"BoxSet"===item.Type?(showElement("#fldDisplayOrder",context),context.querySelector("#selectDisplayOrder").innerHTML='",showElement("#collapsibleDisplaySettings",context)):(context.querySelector("#selectDisplayOrder").innerHTML="",hideElement("#fldDisplayOrder",context),hideElement("#collapsibleDisplaySettings",context))}function fillItemInfo(context,item,parentalRatingOptions){var select=context.querySelector("#selectOfficialRating");populateRatings(parentalRatingOptions,select,item.OfficialRating),select.value=item.OfficialRating||"",select=context.querySelector("#selectCustomRating"),populateRatings(parentalRatingOptions,select,item.CustomRating),select.value=item.CustomRating||"";var selectStatus=context.querySelector("#selectStatus");populateStatus(selectStatus),selectStatus.value=item.Status||"",context.querySelector("#select3dFormat",context).value=item.Video3DFormat||"",Array.prototype.forEach.call(context.querySelectorAll(".chkAirDay",context),function(el){el.checked=(item.AirDays||[]).indexOf(el.getAttribute("data-day"))!==-1}),populateListView(context.querySelector("#listGenres"),item.Genres),populatePeople(context,item.People||[]),populateListView(context.querySelector("#listStudios"),(item.Studios||[]).map(function(element){return element.Name||""})),populateListView(context.querySelector("#listTags"),item.Tags);var lockData=item.LockData||!1,chkLockData=context.querySelector("#chkLockData");chkLockData.checked=lockData,chkLockData.checked?hideElement(".providerSettingsContainer",context):showElement(".providerSettingsContainer",context),populateInternetProviderSettings(context,item,item.LockedFields),context.querySelector("#txtPath").value=item.Path||"",context.querySelector("#txtName").value=item.Name||"",context.querySelector("#txtOriginalName").value=item.OriginalTitle||"",context.querySelector("#txtOverview").value=item.Overview||"",context.querySelector("#txtTagline").value=item.Taglines&&item.Taglines.length?item.Taglines[0]:"",context.querySelector("#txtSortName").value=item.ForcedSortName||"",context.querySelector("#txtCommunityRating").value=item.CommunityRating||"",context.querySelector("#txtHomePageUrl").value=item.HomePageUrl||"",context.querySelector("#txtCriticRating").value=item.CriticRating||"",context.querySelector("#txtIndexNumber").value="IndexNumber"in item?item.IndexNumber:"",context.querySelector("#txtParentIndexNumber").value="ParentIndexNumber"in item?item.ParentIndexNumber:"",context.querySelector("#txtAbsoluteEpisodeNumber").value="AbsoluteEpisodeNumber"in item?item.AbsoluteEpisodeNumber:"",context.querySelector("#txtDvdEpisodeNumber").value="DvdEpisodeNumber"in item?item.DvdEpisodeNumber:"",context.querySelector("#txtDvdSeasonNumber").value="DvdSeasonNumber"in item?item.DvdSeasonNumber:"",context.querySelector("#txtAirsBeforeSeason").value="AirsBeforeSeasonNumber"in item?item.AirsBeforeSeasonNumber:"",context.querySelector("#txtAirsAfterSeason").value="AirsAfterSeasonNumber"in item?item.AirsAfterSeasonNumber:"",context.querySelector("#txtAirsBeforeEpisode").value="AirsBeforeEpisodeNumber"in item?item.AirsBeforeEpisodeNumber:"",context.querySelector("#txtAlbum").value=item.Album||"",context.querySelector("#txtAlbumArtist").value=(item.AlbumArtists||[]).map(function(a){return a.Name}).join(";"),context.querySelector("#selectDisplayOrder").value=item.DisplayOrder,context.querySelector("#txtArtist").value=(item.ArtistItems||[]).map(function(a){return a.Name}).join(";");var date;if(item.DateCreated)try{date=datetime.parseISO8601Date(item.DateCreated,!0),context.querySelector("#txtDateAdded").value=date.toISOString().slice(0,10)}catch(e){context.querySelector("#txtDateAdded").value=""}else context.querySelector("#txtDateAdded").value="";if(item.PremiereDate)try{date=datetime.parseISO8601Date(item.PremiereDate,!0),context.querySelector("#txtPremiereDate").value=date.toISOString().slice(0,10)}catch(e){context.querySelector("#txtPremiereDate").value=""}else context.querySelector("#txtPremiereDate").value="";if(item.EndDate)try{date=datetime.parseISO8601Date(item.EndDate,!0),context.querySelector("#txtEndDate").value=date.toISOString().slice(0,10)}catch(e){context.querySelector("#txtEndDate").value=""}else context.querySelector("#txtEndDate").value="";context.querySelector("#txtProductionYear").value=item.ProductionYear||"",context.querySelector("#txtAirTime").value=item.AirTime||"";var placeofBirth=item.ProductionLocations&&item.ProductionLocations.length?item.ProductionLocations[0]:"";if(context.querySelector("#txtPlaceOfBirth").value=placeofBirth,context.querySelector("#txtOriginalAspectRatio").value=item.AspectRatio||"",context.querySelector("#selectLanguage").value=item.PreferredMetadataLanguage||"",context.querySelector("#selectCountry").value=item.PreferredMetadataCountryCode||"",item.RunTimeTicks){var minutes=item.RunTimeTicks/6e8;context.querySelector("#txtSeriesRuntime").value=Math.round(minutes)}else context.querySelector("#txtSeriesRuntime",context).value=""}function populateRatings(allParentalRatings,select,currentValue){var html="";html+="";var i,length,rating,ratings=[],currentValueFound=!1;for(i=0,length=allParentalRatings.length;i"+rating.Name+"";select.innerHTML=html}function populateStatus(select){var html="";html+="",html+="",html+="",select.innerHTML=html}function populateListView(list,items,sortCallback){items=items||[],"undefined"==typeof sortCallback?items.sort(function(a,b){return a.toLowerCase().localeCompare(b.toLowerCase())}):items=sortCallback(items);for(var html="",i=0;i',html+='live_tv',html+='
',html+='
',html+=items[i],html+="
",html+="
",html+='',html+="";list.innerHTML=html}function populatePeople(context,people){for(var lastType="",html="",elem=context.querySelector("#peopleList"),i=0,length=people.length;i',html+='person',html+='
',html+='",html+="
",html+='',html+=""}elem.innerHTML=html}function generateSliders(fields,currentFields){for(var html="",i=0;i",html+=""+name+"",html+=""}return html}function populateInternetProviderSettings(context,item,lockedFields){var container=context.querySelector(".providerSettingsContainer");lockedFields=lockedFields||[];var metadatafields=[{name:globalize.translate("sharedcomponents#Name"),value:"Name"},{name:globalize.translate("sharedcomponents#Overview"),value:"Overview"},{name:globalize.translate("sharedcomponents#Genres"),value:"Genres"},{name:globalize.translate("sharedcomponents#ParentalRating"),value:"OfficialRating"},{name:globalize.translate("sharedcomponents#People"),value:"Cast"}];"Person"===item.Type?metadatafields.push({name:globalize.translate("sharedcomponents#BirthLocation"),value:"ProductionLocations"}):metadatafields.push({name:globalize.translate("sharedcomponents#ProductionLocations"),value:"ProductionLocations"}),"Series"===item.Type&&metadatafields.push({name:globalize.translate("Runtime"),value:"Runtime"}),metadatafields.push({name:globalize.translate("sharedcomponents#Studios"),value:"Studios"}),metadatafields.push({name:globalize.translate("sharedcomponents#Tags"),value:"Tags"}),metadatafields.push({name:globalize.translate("sharedcomponents#Images"),value:"Images"}),metadatafields.push({name:globalize.translate("sharedcomponents#Backdrops"),value:"Backdrops"}),"Game"===item.Type&&metadatafields.push({name:globalize.translate("sharedcomponents#Screenshots"),value:"Screenshots"});var html="";html+="

"+globalize.translate("sharedcomponents#HeaderEnabledFields")+"

",html+="

"+globalize.translate("sharedcomponents#HeaderEnabledFieldsHelp")+"

",html+=generateSliders(metadatafields,lockedFields),container.innerHTML=html}function reload(context,itemId,serverId){loading.show(),Promise.all([getItem(itemId,serverId),getEditorConfig(itemId,serverId)]).then(function(responses){var item=responses[0];metadataEditorInfo=responses[1],currentItem=item;var languages=metadataEditorInfo.Cultures,countries=metadataEditorInfo.Countries;renderContentTypeOptions(context,metadataEditorInfo),loadExternalIds(context,item,metadataEditorInfo.ExternalIdInfos),populateLanguages(context.querySelector("#selectLanguage"),languages),populateCountries(context.querySelector("#selectCountry"),countries),setFieldVisibilities(context,item),fillItemInfo(context,item,metadataEditorInfo.ParentalRatingOptions),"Video"===item.MediaType&&"Episode"!==item.Type&&"TvChannel"!==item.Type?showElement("#fldTagline",context):hideElement("#fldTagline",context),loading.hide()})}function centerFocus(elem,horiz,on){require(["scrollHelper"],function(scrollHelper){var fn=on?"on":"off";scrollHelper.centerFocus[fn](elem,horiz)})}function show(itemId,serverId,resolve,reject){loading.show(),require(["text!./metadataeditor.template.html"],function(template){var dialogOptions={removeOnClose:!0,scrollY:!1};layoutManager.tv?dialogOptions.size="fullscreen":dialogOptions.size="medium-tall";var dlg=dialogHelper.createDialog(dialogOptions);dlg.classList.add("formDialog");var html="";html+=globalize.translateDocument(template,"sharedcomponents"),dlg.innerHTML=html,layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!0),dialogHelper.open(dlg),dlg.addEventListener("close",function(){layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!1),unbindItemChanged(dlg,connectionManager.getApiClient(serverId)),resolve()}),currentContext=dlg,init(dlg,connectionManager.getApiClient(serverId)),reload(dlg,itemId,serverId)})}var currentContext,metadataEditorInfo,currentItem;return{show:function(itemId,serverId){return new Promise(function(resolve,reject){return show(itemId,serverId,resolve,reject)})},embed:function(elem,itemId,serverId){return new Promise(function(resolve,reject){loading.show(),require(["text!./metadataeditor.template.html"],function(template){elem.innerHTML=globalize.translateDocument(template,"sharedcomponents"),elem.querySelector(".formDialogFooter").classList.remove("formDialogFooter"),elem.querySelector(".btnHeaderSave").classList.remove("hide"),elem.querySelector(".btnCancel").classList.add("hide"),currentContext=elem,init(elem,connectionManager.getApiClient(serverId)),reload(elem,itemId,serverId),focusManager.autoFocus(elem)})})}}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/metadataeditor/metadataeditor.template.html b/dashboard-ui/bower_components/emby-webcomponents/metadataeditor/metadataeditor.template.html index 0231f85b7a..1e32a9eb9b 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/metadataeditor/metadataeditor.template.html +++ b/dashboard-ui/bower_components/emby-webcomponents/metadataeditor/metadataeditor.template.html @@ -150,9 +150,9 @@
-

+

${HeaderAlternateEpisodeNumbers} -

+
@@ -165,9 +165,9 @@
-

+

${HeaderSpecialEpisodeInfo} -

+
@@ -180,26 +180,26 @@
-

+

${HeaderExternalIds} -

+
-

+

${HeaderDisplaySettings} -

+
-

+

${Genres} -

+
-

+

${People} -

+
-

+

${Studios} -

+
-

+

${Tags} -

+
-

${HeaderMetadataSettings}

+

${HeaderMetadataSettings}

diff --git a/dashboard-ui/bower_components/emby-webcomponents/playback/playbackmanager.js b/dashboard-ui/bower_components/emby-webcomponents/playback/playbackmanager.js index 7b82f5ddf9..dd7c6fa88a 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/playback/playbackmanager.js +++ b/dashboard-ui/bower_components/emby-webcomponents/playback/playbackmanager.js @@ -1,3 +1,3 @@ -define(["events","datetime","appSettings","itemHelper","pluginManager","playQueueManager","userSettings","globalize","connectionManager","loading","apphost","fullscreenManager"],function(events,datetime,appSettings,itemHelper,pluginManager,PlayQueueManager,userSettings,globalize,connectionManager,loading,apphost,fullscreenManager){"use strict";function enableLocalPlaylistManagement(player){return!player.getPlaylist&&!!player.isLocalPlayer}function bindToFullscreenChange(player){events.on(fullscreenManager,"fullscreenchange",function(){events.trigger(player,"fullscreenchange")})}function triggerPlayerChange(playbackManagerInstance,newPlayer,newTarget,previousPlayer,previousTargetInfo){(newPlayer||previousPlayer)&&(newTarget&&previousTargetInfo&&newTarget.id===previousTargetInfo.id||events.trigger(playbackManagerInstance,"playerchange",[newPlayer,newTarget,previousPlayer]))}function reportPlayback(state,serverId,method,progressEventName){if(serverId){var info=Object.assign({},state.PlayState);info.ItemId=state.NowPlayingItem.Id,progressEventName&&(info.EventName=progressEventName);var apiClient=connectionManager.getApiClient(serverId);apiClient[method](info)}}function normalizeName(t){return t.toLowerCase().replace(" ","")}function getItemsForPlayback(serverId,query){var apiClient=connectionManager.getApiClient(serverId);if(query.Ids&&1===query.Ids.split(",").length){var itemId=query.Ids.split(",");return apiClient.getItem(apiClient.getCurrentUserId(),itemId).then(function(item){return{Items:[item],TotalRecordCount:1}})}return query.Limit=query.Limit||200,query.Fields="MediaSources,Chapters",query.ExcludeLocationTypes="Virtual",query.EnableTotalRecordCount=!1,apiClient.getItems(apiClient.getCurrentUserId(),query)}function createStreamInfoFromUrlItem(item){return{url:item.Url||item.Path,playMethod:"DirectPlay",item:item,textTracks:[],mediaType:item.MediaType}}function mergePlaybackQueries(obj1,obj2){var query=Object.assign(obj1,obj2),filters=query.Filters?query.Filters.split(","):[];return filters.indexOf("IsNotFolder")===-1&&filters.push("IsNotFolder"),query.Filters=filters.join(","),query}function backdropImageUrl(apiClient,item,options){return options=options||{},options.type=options.type||"Backdrop",options.maxWidth||options.width||options.maxHeight||options.height||(options.quality=100),item.BackdropImageTags&&item.BackdropImageTags.length?(options.tag=item.BackdropImageTags[0],apiClient.getScaledImageUrl(item.Id,options)):item.ParentBackdropImageTags&&item.ParentBackdropImageTags.length?(options.tag=item.ParentBackdropImageTags[0],apiClient.getScaledImageUrl(item.ParentBackdropItemId,options)):null}function getMimeType(type,container){if(container=(container||"").toLowerCase(),"audio"===type){if("opus"===container)return"audio/ogg";if("webma"===container)return"audio/webm";if("m4a"===container)return"audio/mp4"}else if("video"===type){if("mkv"===container)return"video/x-matroska";if("m4v"===container)return"video/mp4";if("mov"===container)return"video/quicktime";if("mpg"===container)return"video/mpeg";if("flv"===container)return"video/x-flv"}return type+"/"+container}function getParam(name,url){name=name.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var regexS="[\\?&]"+name+"=([^&#]*)",regex=new RegExp(regexS,"i"),results=regex.exec(url);return null==results?"":decodeURIComponent(results[1].replace(/\+/g," "))}function isAutomaticPlayer(player){return!!player.isLocalPlayer}function getAutomaticPlayers(instance){var player=instance._currentPlayer;return player&&!isAutomaticPlayer(player)?[player]:instance.getPlayers().filter(isAutomaticPlayer)}function isServerItem(item){return!!item.Id}function enableIntros(item){return"Video"===item.MediaType&&("TvChannel"!==item.Type&&("InProgress"!==item.Status&&isServerItem(item)))}function getIntros(firstItem,apiClient,options){return!options.startPositionTicks&&options.fullscreen!==!1&&enableIntros(firstItem)&&userSettings.enableCinemaMode()?apiClient.getIntros(firstItem.Id):Promise.resolve({Items:[]})}function getAudioMaxValues(deviceProfile){var maxAudioSampleRate=null,maxAudioBitDepth=null;return deviceProfile.CodecProfiles.map(function(codecProfile){"Audio"===codecProfile.Type&&(codecProfile.Conditions||[]).map(function(condition){"LessThanEqual"===condition.Condition&&"AudioBitDepth"===condition.Property&&(maxAudioBitDepth=condition.Value),"LessThanEqual"===condition.Condition&&"AudioSampleRate"===condition.Property&&(maxAudioSampleRate=condition.Value)})}),{maxAudioSampleRate:maxAudioSampleRate,maxAudioBitDepth:maxAudioBitDepth}}function getAudioStreamUrl(item,transcodingProfile,directPlayContainers,maxBitrate,apiClient,maxAudioSampleRate,maxAudioBitDepth,startPosition){var url="Audio/"+item.Id+"/universal";return startingPlaySession++,apiClient.getUrl(url,{UserId:apiClient.getCurrentUserId(),DeviceId:apiClient.deviceId(),MaxStreamingBitrate:maxBitrate,Container:directPlayContainers,TranscodingContainer:transcodingProfile.Container||null,TranscodingProtocol:transcodingProfile.Protocol||null,AudioCodec:transcodingProfile.AudioCodec,MaxAudioSampleRate:maxAudioSampleRate,MaxAudioBitDepth:maxAudioBitDepth,api_key:apiClient.accessToken(),PlaySessionId:startingPlaySession,StartTimeTicks:startPosition||0,EnableRedirection:!0,EnableRemoteMedia:apphost.supports("remotemedia")})}function getAudioStreamUrlFromDeviceProfile(item,deviceProfile,maxBitrate,apiClient,startPosition){var transcodingProfile=deviceProfile.TranscodingProfiles.filter(function(p){return"Audio"===p.Type&&"Streaming"===p.Context})[0],directPlayContainers="";deviceProfile.DirectPlayProfiles.map(function(p){"Audio"===p.Type&&(directPlayContainers?directPlayContainers+=","+p.Container:directPlayContainers=p.Container,p.AudioCodec&&(directPlayContainers+="|"+p.AudioCodec))});var maxValues=getAudioMaxValues(deviceProfile);return getAudioStreamUrl(item,transcodingProfile,directPlayContainers,maxBitrate,apiClient,maxValues.maxAudioSampleRate,maxValues.maxAudioBitDepth,startPosition)}function getStreamUrls(items,deviceProfile,maxBitrate,apiClient,startPosition){var audioTranscodingProfile=deviceProfile.TranscodingProfiles.filter(function(p){return"Audio"===p.Type&&"Streaming"===p.Context})[0],audioDirectPlayContainers="";deviceProfile.DirectPlayProfiles.map(function(p){"Audio"===p.Type&&(audioDirectPlayContainers?audioDirectPlayContainers+=","+p.Container:audioDirectPlayContainers=p.Container,p.AudioCodec&&(audioDirectPlayContainers+="|"+p.AudioCodec))});for(var maxValues=getAudioMaxValues(deviceProfile),streamUrls=[],i=0,length=items.length;i=interceptors.length)return void resolve();var interceptor=interceptors[index];interceptor.intercept(options).then(function(){runNextPrePlay(interceptors,index+1,options,resolve,reject)},reject)}function sendPlaybackListToPlayer(player,items,deviceProfile,maxBitrate,apiClient,startPosition){return setStreamUrls(items,deviceProfile,maxBitrate,apiClient,startPosition).then(function(){return loading.hide(),player.play({items:items})})}function playAfterBitrateDetect(maxBitrate,item,playOptions,onPlaybackStartedFn){var promise,startPosition=playOptions.startPositionTicks,player=getPlayer(item,playOptions),activePlayer=self._currentPlayer;return activePlayer?(self._playNextAfterEnded=!1,promise=onPlaybackChanging(activePlayer,player,item)):promise=Promise.resolve(),isServerItem(item)&&"Game"!==item.MediaType?Promise.all([promise,player.getDeviceProfile(item)]).then(function(responses){var deviceProfile=responses[1],apiClient=connectionManager.getApiClient(item.ServerId);if(player&&!enableLocalPlaylistManagement(player))return sendPlaybackListToPlayer(player,playOptions.items,deviceProfile,maxBitrate,apiClient,startPosition);var mediaSourceId=playOptions.mediaSourceId,audioStreamIndex=playOptions.audioStreamIndex,subtitleStreamIndex=playOptions.subtitleStreamIndex;return getPlaybackMediaSource(player,apiClient,deviceProfile,maxBitrate,item,startPosition,mediaSourceId,audioStreamIndex,subtitleStreamIndex).then(function(mediaSource){var streamInfo=createStreamInfo(apiClient,item.MediaType,item,mediaSource,startPosition);return streamInfo.fullscreen=playOptions.fullscreen,getPlayerData(player).isChangingStream=!1,getPlayerData(player).maxStreamingBitrate=maxBitrate,player.play(streamInfo).then(function(){loading.hide(),onPlaybackStartedFn(),onPlaybackStarted(player,playOptions,streamInfo,mediaSource)},function(){onPlaybackStartedFn(),onPlaybackStarted(player,playOptions,streamInfo,mediaSource),setTimeout(function(err){onPlaybackError.call(player,err,{type:"mediadecodeerror"})},100)})})}):promise.then(function(){var streamInfo=createStreamInfoFromUrlItem(item);return streamInfo.fullscreen=playOptions.fullscreen,getPlayerData(player).isChangingStream=!1,player.play(streamInfo).then(function(){loading.hide(),onPlaybackStartedFn(),onPlaybackStarted(player,playOptions,streamInfo)},function(){self.stop(player)})})}function createStreamInfo(apiClient,type,item,mediaSource,startPosition,forceTranscoding){var mediaUrl,contentType,directOptions,transcodingOffsetTicks=0,playerStartPositionTicks=startPosition,liveStreamId=mediaSource.LiveStreamId,playMethod="Transcode",mediaSourceContainer=(mediaSource.Container||"").toLowerCase();"Video"===type?(contentType=getMimeType("video",mediaSourceContainer),mediaSource.enableDirectPlay&&!forceTranscoding?(mediaUrl=mediaSource.Path,playMethod="DirectPlay"):mediaSource.SupportsDirectStream&&!forceTranscoding?(directOptions={Static:!0,mediaSourceId:mediaSource.Id,deviceId:apiClient.deviceId(),api_key:apiClient.accessToken()},mediaSource.ETag&&(directOptions.Tag=mediaSource.ETag),mediaSource.LiveStreamId&&(directOptions.LiveStreamId=mediaSource.LiveStreamId),mediaUrl=apiClient.getUrl("Videos/"+item.Id+"/stream."+mediaSourceContainer,directOptions),playMethod="DirectStream"):mediaSource.SupportsTranscoding&&(mediaUrl=apiClient.getUrl(mediaSource.TranscodingUrl),"hls"===mediaSource.TranscodingSubProtocol?contentType="application/x-mpegURL":(playerStartPositionTicks=null,contentType=getMimeType("video",mediaSource.TranscodingContainer),mediaUrl.toLowerCase().indexOf("copytimestamps=true")===-1&&(transcodingOffsetTicks=startPosition||0)))):"Audio"===type?(contentType=getMimeType("audio",mediaSourceContainer),mediaSource.enableDirectPlay&&!forceTranscoding?(mediaUrl=mediaSource.Path,playMethod="DirectPlay"):mediaSource.StreamUrl?(playMethod="Transcode",mediaUrl=mediaSource.StreamUrl):mediaSource.SupportsDirectStream&&!forceTranscoding?(directOptions={Static:!0,mediaSourceId:mediaSource.Id,deviceId:apiClient.deviceId(),api_key:apiClient.accessToken()},mediaSource.ETag&&(directOptions.Tag=mediaSource.ETag),mediaSource.LiveStreamId&&(directOptions.LiveStreamId=mediaSource.LiveStreamId),mediaUrl=apiClient.getUrl("Audio/"+item.Id+"/stream."+mediaSourceContainer,directOptions),playMethod="DirectStream"):mediaSource.SupportsTranscoding&&(mediaUrl=apiClient.getUrl(mediaSource.TranscodingUrl),"hls"===mediaSource.TranscodingSubProtocol?contentType="application/x-mpegURL":(transcodingOffsetTicks=startPosition||0,playerStartPositionTicks=null,contentType=getMimeType("audio",mediaSource.TranscodingContainer)))):"Game"===type&&(mediaUrl=mediaSource.Path,playMethod="DirectPlay"),!mediaUrl&&mediaSource.SupportsDirectPlay&&(mediaUrl=mediaSource.Path,playMethod="DirectPlay");var resultInfo={url:mediaUrl,mimeType:contentType,transcodingOffsetTicks:transcodingOffsetTicks,playMethod:playMethod,playerStartPositionTicks:playerStartPositionTicks,item:item,mediaSource:mediaSource,textTracks:getTextTracks(apiClient,item,mediaSource),tracks:getTextTracks(apiClient,item,mediaSource),mediaType:type,liveStreamId:liveStreamId,playSessionId:getParam("playSessionId",mediaUrl),title:item.Name},backdropUrl=backdropImageUrl(apiClient,item,{});return backdropUrl&&(resultInfo.backdropUrl=backdropUrl),resultInfo}function getTextTracks(apiClient,item,mediaSource){for(var subtitleStreams=mediaSource.MediaStreams.filter(function(s){return"Subtitle"===s.Type}),textStreams=subtitleStreams.filter(function(s){return"External"===s.DeliveryMethod}),tracks=[],i=0,length=textStreams.length;i0},self.isPlayingVideo=function(player){return self.isPlayingMediaType("Video",player)},self.isPlayingAudio=function(player){return self.isPlayingMediaType("Audio",player)},self.getPlayers=function(){return players},self.canPlay=function(item){var itemType=item.Type,locationType=item.LocationType;if("MusicGenre"===itemType||"Season"===itemType||"Series"===itemType||"BoxSet"===itemType||"MusicAlbum"===itemType||"MusicArtist"===itemType||"Playlist"===itemType)return!0;if("Virtual"===locationType&&"Program"!==itemType)return!1;if("Program"===itemType){if(!item.EndDate||!item.StartDate)return!1;if((new Date).getTime()>datetime.parseISO8601Date(item.EndDate).getTime()||(new Date).getTime()=supported.length&&(index=0),self.setAspectRatio(supported[index].id,player)}},self.setAspectRatio=function(val,player){player=player||self._currentPlayer,player&&player.setAspectRatio&&player.setAspectRatio(val)},self.getSupportedAspectRatios=function(player){return player=player||self._currentPlayer,player&&player.getSupportedAspectRatios?player.getSupportedAspectRatios():[]},self.getAspectRatio=function(player){if(player=player||self._currentPlayer,player&&player.getAspectRatio)return player.getAspectRatio()};var brightnessOsdLoaded;self.setBrightness=function(val,player){player=player||self._currentPlayer,player&&(brightnessOsdLoaded||(brightnessOsdLoaded=!0,require(["brightnessOsd"])),player.setBrightness(val))},self.getBrightness=function(player){if(player=player||self._currentPlayer)return player.getBrightness()},self.setVolume=function(val,player){player=player||self._currentPlayer,player&&player.setVolume(val)},self.getVolume=function(player){if(player=player||self._currentPlayer)return player.getVolume()},self.volumeUp=function(player){player=player||self._currentPlayer,player&&player.volumeUp()},self.volumeDown=function(player){player=player||self._currentPlayer,player&&player.volumeDown()},self.changeAudioStream=function(player){if(player=player||self._currentPlayer,player&&!enableLocalPlaylistManagement(player))return player.changeAudioStream();if(player){var i,length,currentMediaSource=self.currentMediaSource(player),mediaStreams=[];for(i=0,length=currentMediaSource.MediaStreams.length;i=mediaStreams.length&&(nextIndex=0),nextIndex=nextIndex===-1?-1:mediaStreams[nextIndex].Index,self.setAudioStreamIndex(nextIndex,player)}}},self.changeSubtitleStream=function(player){if(player=player||self._currentPlayer,player&&!enableLocalPlaylistManagement(player))return player.changeSubtitleStream();if(player){var i,length,currentMediaSource=self.currentMediaSource(player),mediaStreams=[];for(i=0,length=currentMediaSource.MediaStreams.length;i=mediaStreams.length&&(nextIndex=-1),nextIndex=nextIndex===-1?-1:mediaStreams[nextIndex].Index,self.setSubtitleStreamIndex(nextIndex,player)}}},self.getAudioStreamIndex=function(player){return player=player||self._currentPlayer,player&&!enableLocalPlaylistManagement(player)?player.getAudioStreamIndex():getPlayerData(player).audioStreamIndex},self.setAudioStreamIndex=function(index,player){return player=player||self._currentPlayer,player&&!enableLocalPlaylistManagement(player)?player.setAudioStreamIndex(index):void("Transcode"!==self.playMethod(player)&&player.canSetAudioStreamIndex()?(player.setAudioStreamIndex(index),getPlayerData(player).audioStreamIndex=index):(changeStream(player,getCurrentTicks(player),{AudioStreamIndex:index}),getPlayerData(player).audioStreamIndex=index))},self.getMaxStreamingBitrate=function(player){if(player=player||self._currentPlayer,player&&player.getMaxStreamingBitrate)return player.getMaxStreamingBitrate();var playerData=getPlayerData(player);if(playerData.maxStreamingBitrate)return playerData.maxStreamingBitrate;var mediaType=playerData.streamInfo?playerData.streamInfo.mediaType:null,currentItem=self.currentItem(player),apiClient=currentItem?connectionManager.getApiClient(currentItem.ServerId):connectionManager.currentApiClient();return getSavedMaxStreamingBitrate(apiClient,mediaType)},self.enableAutomaticBitrateDetection=function(player){if(player=player||self._currentPlayer,player&&player.enableAutomaticBitrateDetection)return player.enableAutomaticBitrateDetection();var playerData=getPlayerData(player),mediaType=playerData.streamInfo?playerData.streamInfo.mediaType:null,currentItem=self.currentItem(player),apiClient=currentItem?connectionManager.getApiClient(currentItem.ServerId):connectionManager.currentApiClient(),endpointInfo=apiClient.getSavedEndpointInfo()||{};return appSettings.enableAutomaticBitrateDetection(endpointInfo.IsInNetwork,mediaType)},self.setMaxStreamingBitrate=function(options,player){if(player=player||self._currentPlayer,player&&player.setMaxStreamingBitrate)return player.setMaxStreamingBitrate(options);var apiClient=connectionManager.getApiClient(self.currentItem(player).ServerId);apiClient.getEndpointInfo().then(function(endpointInfo){var promise,playerData=getPlayerData(player),mediaType=playerData.streamInfo?playerData.streamInfo.mediaType:null;options.enableAutomaticBitrateDetection?(appSettings.enableAutomaticBitrateDetection(endpointInfo.IsInNetwork,mediaType,!0),promise=apiClient.detectBitrate(!0)):(appSettings.enableAutomaticBitrateDetection(endpointInfo.IsInNetwork,mediaType,!1),promise=Promise.resolve(options.maxBitrate)),promise.then(function(bitrate){appSettings.maxStreamingBitrate(endpointInfo.IsInNetwork,mediaType,bitrate),changeStream(player,getCurrentTicks(player),{MaxStreamingBitrate:bitrate})})})},self.isFullscreen=function(player){return player=player||self._currentPlayer,!player.isLocalPlayer||player.isFullscreen?player.isFullscreen():fullscreenManager.isFullScreen()},self.toggleFullscreen=function(player){return player=player||self._currentPlayer,!player.isLocalPlayer||player.toggleFulscreen?player.toggleFulscreen():void(fullscreenManager.isFullScreen()?fullscreenManager.exitFullscreen():fullscreenManager.requestFullscreen())},self.togglePictureInPicture=function(player){return player=player||self._currentPlayer,player.togglePictureInPicture()},self.getSubtitleStreamIndex=function(player){if(player=player||self._currentPlayer,player&&!enableLocalPlaylistManagement(player))return player.getSubtitleStreamIndex();if(!player)throw new Error("player cannot be null");return getPlayerData(player).subtitleStreamIndex},self.setSubtitleStreamIndex=function(index,player){if(player=player||self._currentPlayer,player&&!enableLocalPlaylistManagement(player))return player.setSubtitleStreamIndex(index);var currentStream=getCurrentSubtitleStream(player),newStream=getSubtitleStream(player,index);if(currentStream||newStream){var selectedTrackElementIndex=-1,currentPlayMethod=self.playMethod(player);currentStream&&!newStream?("Encode"===getDeliveryMethod(currentStream)||"Embed"===getDeliveryMethod(currentStream)&&"Transcode"===currentPlayMethod)&&changeStream(player,getCurrentTicks(player),{SubtitleStreamIndex:-1}):!currentStream&&newStream?"External"===getDeliveryMethod(newStream)?selectedTrackElementIndex=index:"Embed"===getDeliveryMethod(newStream)&&"Transcode"!==currentPlayMethod?selectedTrackElementIndex=index:changeStream(player,getCurrentTicks(player),{SubtitleStreamIndex:index}):currentStream&&newStream&&("External"===getDeliveryMethod(newStream)||"Embed"===getDeliveryMethod(newStream)&&"Transcode"!==currentPlayMethod?(selectedTrackElementIndex=index,"External"!==getDeliveryMethod(currentStream)&&"Embed"!==getDeliveryMethod(currentStream)&&changeStream(player,getCurrentTicks(player),{SubtitleStreamIndex:-1})):changeStream(player,getCurrentTicks(player),{SubtitleStreamIndex:index})),player.setSubtitleStreamIndex(selectedTrackElementIndex),getPlayerData(player).subtitleStreamIndex=index}},self.seek=function(ticks,player){return ticks=Math.max(0,ticks),player=player||self._currentPlayer,player&&!enableLocalPlaylistManagement(player)?player.isLocalPlayer?player.seek((ticks||0)/1e4):player.seek(ticks):void changeStream(player,ticks)},self.seekRelative=function(offsetTicks,player){if(player=player||self._currentPlayer,player&&!enableLocalPlaylistManagement(player)&&player.seekRelative)return player.isLocalPlayer?player.seekRelative((ticks||0)/1e4):player.seekRelative(ticks);var ticks=getCurrentTicks(player)+offsetTicks;return this.seek(ticks,player)},self.play=function(options){if(normalizePlayOptions(options),self._currentPlayer){if(options.enableRemotePlayers===!1&&!self._currentPlayer.isLocalPlayer)return Promise.reject();if(!self._currentPlayer.isLocalPlayer)return self._currentPlayer.play(options)}if(options.fullscreen&&loading.show(),options.items)return translateItemsForPlayback(options.items,options).then(function(items){return playWithIntros(items,options)});if(!options.serverId)throw new Error("serverId required!");return getItemsForPlayback(options.serverId,{Ids:options.ids.join(",")}).then(function(result){return translateItemsForPlayback(result.Items,options).then(function(items){return playWithIntros(items,options)})})},self.getPlayerState=function(player){if(player=player||self._currentPlayer,!player)throw new Error("player cannot be null");if(!enableLocalPlaylistManagement(player)&&player.getPlayerState)return player.getPlayerState();var item=player?self.currentItem(player):null,mediaSource=player?self.currentMediaSource(player):null,state={PlayState:{}};return player&&(state.PlayState.VolumeLevel=player.getVolume(),state.PlayState.IsMuted=player.isMuted(),state.PlayState.IsPaused=player.paused(),state.PlayState.RepeatMode=self.getRepeatMode(player),state.PlayState.MaxStreamingBitrate=self.getMaxStreamingBitrate(player),state.PlayState.PositionTicks=getCurrentTicks(player),state.PlayState.PlaybackStartTimeTicks=self.playbackStartTime(player),state.PlayState.SubtitleStreamIndex=self.getSubtitleStreamIndex(player),state.PlayState.AudioStreamIndex=self.getAudioStreamIndex(player),state.PlayState.BufferedRanges=self.getBufferedRanges(player),state.PlayState.PlayMethod=self.playMethod(player),mediaSource&&(state.PlayState.LiveStreamId=mediaSource.LiveStreamId),state.PlayState.PlaySessionId=self.playSessionId(player)),mediaSource&&(state.PlayState.MediaSourceId=mediaSource.Id,state.NowPlayingItem={RunTimeTicks:mediaSource.RunTimeTicks},state.PlayState.CanSeek=(mediaSource.RunTimeTicks||0)>0||canPlayerSeek(player)),item&&(state.NowPlayingItem=getNowPlayingItemForReporting(player,item,mediaSource)),state.MediaSource=mediaSource,state},self.duration=function(player){if(player=player||self._currentPlayer,player&&!enableLocalPlaylistManagement(player)&&!player.isLocalPlayer)return player.duration();if(!player)throw new Error("player cannot be null");var mediaSource=self.currentMediaSource(player);if(mediaSource&&mediaSource.RunTimeTicks)return mediaSource.RunTimeTicks;var playerDuration=player.duration();return playerDuration&&(playerDuration*=1e4),playerDuration},self.getCurrentTicks=getCurrentTicks,self.getPlaybackInfo=function(item,options){options=options||{};var playOptions={},startPosition=0,mediaType=options.mediaType||item.MediaType,player=getPlayer(item,playOptions),apiClient=connectionManager.getApiClient(item.ServerId),maxBitrate=getSavedMaxStreamingBitrate(connectionManager.getApiClient(item.ServerId),mediaType);return player.getDeviceProfile(item).then(function(deviceProfile){var mediaSourceId=null,audioStreamIndex=null,subtitleStreamIndex=null;return getPlaybackMediaSource(player,apiClient,deviceProfile,maxBitrate,item,startPosition,mediaSourceId,audioStreamIndex,subtitleStreamIndex).then(function(mediaSource){return createStreamInfo(apiClient,item.MediaType,item,mediaSource,startPosition)})})},self.setCurrentPlaylistItem=function(playlistItemId,player){if(player=player||self._currentPlayer,player&&!enableLocalPlaylistManagement(player))return player.setCurrentPlaylistItem(playlistItemId);for(var newItem,newItemIndex,playlist=self._playQueueManager.getPlaylist(),i=0,length=playlist.length;i=0){var playlist=self._playQueueManager.getPlaylist(),newItem=playlist[newIndex];if(newItem){var playOptions=Object.assign({},currentPlayOptions,{startPositionTicks:0,mediaSourceId:null,audioStreamIndex:null,subtitleStreamIndex:null});playInternal(newItem,playOptions,function(){setPlaylistState(newItem.PlaylistItemId,newIndex)})}}},self.queue=function(options,player){queue(options,"",player)},self.queueNext=function(options,player){queue(options,"next",player)},events.on(pluginManager,"registered",function(e,plugin){"mediaplayer"===plugin.type&&initMediaPlayer(plugin)}),pluginManager.ofType("mediaplayer").map(initMediaPlayer),self.onAppClose=function(){var player=this._currentPlayer;player&&this.isPlaying(player)&&(this._playNextAfterEnded=!1,onPlaybackStopped.call(player))},self.playbackStartTime=function(player){if(player=player||this._currentPlayer,player&&!enableLocalPlaylistManagement(player)&&!player.isLocalPlayer)return player.playbackStartTime();var streamInfo=getPlayerData(player).streamInfo;return streamInfo?streamInfo.playbackStartTimeTicks:null},apphost.supports("remotecontrol")&&require(["serverNotifications"],function(serverNotifications){events.on(serverNotifications,"ServerShuttingDown",self.setDefaultPlayerActive.bind(self)),events.on(serverNotifications,"ServerRestarting",self.setDefaultPlayerActive.bind(self))})}var startingPlaySession=(new Date).getTime();return PlaybackManager.prototype.getCurrentPlayer=function(){return this._currentPlayer},PlaybackManager.prototype.currentTime=function(player){return player=player||this._currentPlayer,!player||enableLocalPlaylistManagement(player)||player.isLocalPlayer?this.getCurrentTicks(player):player.currentTime()},PlaybackManager.prototype.nextItem=function(player){if(player=player||this._currentPlayer,player&&!enableLocalPlaylistManagement(player))return player.nextItem();var nextItem=this._playQueueManager.getNextItemInfo();if(!nextItem||!nextItem.item)return Promise.reject();var apiClient=connectionManager.getApiClient(nextItem.item.ServerId);return apiClient.getItem(apiClient.getCurrentUserId(),nextItem.item.Id)},PlaybackManager.prototype.canQueue=function(item){return"MusicAlbum"===item.Type||"MusicArtist"===item.Type||"MusicGenre"===item.Type?this.canQueueMediaType("Audio"):this.canQueueMediaType(item.MediaType)},PlaybackManager.prototype.canQueueMediaType=function(mediaType){return!!this._currentPlayer&&this._currentPlayer.canPlayMediaType(mediaType)},PlaybackManager.prototype.isMuted=function(player){return player=player||this._currentPlayer,!!player&&player.isMuted()},PlaybackManager.prototype.setMute=function(mute,player){player=player||this._currentPlayer,player&&player.setMute(mute)},PlaybackManager.prototype.toggleMute=function(mute,player){player=player||this._currentPlayer,player&&(player.toggleMute?player.toggleMute():player.setMute(!player.isMuted()))},PlaybackManager.prototype.toggleDisplayMirroring=function(){this.enableDisplayMirroring(!this.enableDisplayMirroring())},PlaybackManager.prototype.enableDisplayMirroring=function(enabled){if(null!=enabled){var val=enabled?"1":"0";return void appSettings.set("displaymirror",val)}return"0"!==(appSettings.get("displaymirror")||"")},PlaybackManager.prototype.nextChapter=function(player){player=player||this._currentPlayer;var item=this.currentItem(player),ticks=this.getCurrentTicks(player),nextChapter=(item.Chapters||[]).filter(function(i){return i.StartPositionTicks>ticks})[0];nextChapter?this.seek(nextChapter.StartPositionTicks,player):this.nextTrack(player)},PlaybackManager.prototype.previousChapter=function(player){player=player||this._currentPlayer;var item=this.currentItem(player),ticks=this.getCurrentTicks(player);ticks-=1e8,0===this.getCurrentPlaylistIndex(player)&&(ticks=Math.max(ticks,0));var previousChapters=(item.Chapters||[]).filter(function(i){return i.StartPositionTicks<=ticks});previousChapters.length?this.seek(previousChapters[previousChapters.length-1].StartPositionTicks,player):this.previousTrack(player)},PlaybackManager.prototype.fastForward=function(player){if(player=player||this._currentPlayer,null!=player.fastForward)return void player.fastForward(userSettings.skipForwardLength());var offsetTicks=1e4*userSettings.skipForwardLength();this.seekRelative(offsetTicks,player)},PlaybackManager.prototype.rewind=function(player){if(player=player||this._currentPlayer,null!=player.rewind)return void player.rewind(userSettings.skipBackLength());var offsetTicks=0-1e4*userSettings.skipBackLength();this.seekRelative(offsetTicks,player)},PlaybackManager.prototype.seekPercent=function(percent,player){player=player||this._currentPlayer;var ticks=this.duration(player)||0;percent/=100,ticks*=percent,this.seek(parseInt(ticks),player)},PlaybackManager.prototype.playTrailers=function(item){var apiClient=connectionManager.getApiClient(item.ServerId),instance=this;if(item.LocalTrailerCount)return apiClient.getLocalTrailers(apiClient.getCurrentUserId(),item.Id).then(function(result){ -return instance.play({items:result})});var remoteTrailers=item.RemoteTrailers||[];return remoteTrailers.length?this.play({items:remoteTrailers.map(function(t){return{Name:t.Name||item.Name+" Trailer",Url:t.Url,MediaType:"Video",Type:"Trailer",ServerId:apiClient.serverId()}})}):Promise.reject()},PlaybackManager.prototype.getSubtitleUrl=function(textStream,serverId){var apiClient=connectionManager.getApiClient(serverId),textStreamUrl=textStream.IsExternalUrl?textStream.DeliveryUrl:apiClient.getUrl(textStream.DeliveryUrl);return textStreamUrl},PlaybackManager.prototype.stop=function(player){return player=player||this._currentPlayer,player?(enableLocalPlaylistManagement(player)&&(this._playNextAfterEnded=!1),player.stop(!0,!0)):Promise.resolve()},PlaybackManager.prototype.getBufferedRanges=function(player){return player=player||this._currentPlayer,player&&player.getBufferedRanges?player.getBufferedRanges():[]},PlaybackManager.prototype.playPause=function(player){if(player=player||this._currentPlayer)return player.playPause?player.playPause():player.paused()?this.unpause(player):this.pause(player)},PlaybackManager.prototype.paused=function(player){if(player=player||this._currentPlayer)return player.paused()},PlaybackManager.prototype.pause=function(player){player=player||this._currentPlayer,player&&player.pause()},PlaybackManager.prototype.unpause=function(player){player=player||this._currentPlayer,player&&player.unpause()},PlaybackManager.prototype.instantMix=function(item,player){if(player=player||this._currentPlayer,player&&player.instantMix)return player.instantMix(item);var apiClient=connectionManager.getApiClient(item.ServerId),options={};options.UserId=apiClient.getCurrentUserId(),options.Fields="MediaSources",options.Limit=200;var instance=this;apiClient.getInstantMixFromItem(item.Id,options).then(function(result){instance.play({items:result.Items})})},PlaybackManager.prototype.shuffle=function(shuffleItem,player,queryOptions){if(player=player||this._currentPlayer,player&&player.shuffle)return player.shuffle(shuffleItem);var apiClient=connectionManager.getApiClient(shuffleItem.ServerId),instance=this;apiClient.getItem(apiClient.getCurrentUserId(),shuffleItem.Id).then(function(item){var query={Fields:"MediaSources,Chapters",Limit:200,Recursive:!0,SortBy:"Random"};if("MusicArtist"===item.Type)query.MediaTypes="Audio",query.ArtistIds=item.Id;else if("MusicGenre"===item.Type)query.MediaTypes="Audio",query.Genres=item.Name;else{if(!item.IsFolder)return;query.ParentId=item.Id}queryOptions&&(query=mergePlaybackQueries(query,queryOptions)),getItemsForPlayback(item.ServerId,query).then(function(result){instance.play({items:result.Items})})})},PlaybackManager.prototype.audioTracks=function(player){if(player=player||this._currentPlayer,player.audioTracks){var result=player.audioTracks();if(result)return result}var mediaSource=this.currentMediaSource(player),mediaStreams=(mediaSource||{}).MediaStreams||[];return mediaStreams.filter(function(s){return"Audio"===s.Type})},PlaybackManager.prototype.subtitleTracks=function(player){if(player=player||this._currentPlayer,player.subtitleTracks){var result=player.subtitleTracks();if(result)return result}var mediaSource=this.currentMediaSource(player),mediaStreams=(mediaSource||{}).MediaStreams||[];return mediaStreams.filter(function(s){return"Subtitle"===s.Type})},PlaybackManager.prototype.getSupportedCommands=function(player){if(player=player||this._currentPlayer,player.isLocalPlayer){var list=["GoHome","GoToSettings","VolumeUp","VolumeDown","Mute","Unmute","ToggleMute","SetVolume","SetAudioStreamIndex","SetSubtitleStreamIndex","SetMaxStreamingBitrate","DisplayContent","GoToSearch","DisplayMessage","SetRepeatMode"];return apphost.supports("fullscreenchange")&&list.push("ToggleFullscreen"),player.supports&&(player.supports("PictureInPicture")&&list.push("PictureInPicture"),player.supports("SetBrightness")&&list.push("SetBrightness"),player.supports("SetAspectRatio")&&list.push("SetAspectRatio")),list}var info=this.getPlayerInfo();return info?info.supportedCommands:[]},PlaybackManager.prototype.setRepeatMode=function(value,player){return player=player||this._currentPlayer,player&&!enableLocalPlaylistManagement(player)?player.setRepeatMode(value):(this._playQueueManager.setRepeatMode(value),void events.trigger(player,"repeatmodechange"))},PlaybackManager.prototype.getRepeatMode=function(player){return player=player||this._currentPlayer,player&&!enableLocalPlaylistManagement(player)?player.getRepeatMode():this._playQueueManager.getRepeatMode()},PlaybackManager.prototype.trySetActiveDeviceName=function(name){name=normalizeName(name);var instance=this;instance.getTargets().then(function(result){var target=result.filter(function(p){return normalizeName(p.name)===name})[0];target&&instance.trySetActivePlayer(target.playerName,target)})},PlaybackManager.prototype.displayContent=function(options,player){player=player||this._currentPlayer,player&&player.displayContent&&player.displayContent(options)},PlaybackManager.prototype.beginPlayerUpdates=function(player){player.beginPlayerUpdates&&player.beginPlayerUpdates()},PlaybackManager.prototype.endPlayerUpdates=function(player){player.endPlayerUpdates&&player.endPlayerUpdates()},PlaybackManager.prototype.setDefaultPlayerActive=function(){this.setActivePlayer("localplayer")},PlaybackManager.prototype.removeActivePlayer=function(name){var playerInfo=this.getPlayerInfo();playerInfo&&playerInfo.name===name&&this.setDefaultPlayerActive()},PlaybackManager.prototype.removeActiveTarget=function(id){var playerInfo=this.getPlayerInfo();playerInfo&&playerInfo.id===id&&this.setDefaultPlayerActive()},PlaybackManager.prototype.sendCommand=function(cmd,player){switch(console.log("MediaController received command: "+cmd.Name),cmd.Name){case"SetRepeatMode":this.setRepeatMode(cmd.Arguments.RepeatMode,player);break;case"VolumeUp":this.volumeUp(player);break;case"VolumeDown":this.volumeDown(player);break;case"Mute":this.setMute(!0,player);break;case"Unmute":this.setMute(!1,player);break;case"ToggleMute":this.toggleMute(player);break;case"SetVolume":this.setVolume(cmd.Arguments.Volume,player);break;case"SetAspectRatio":this.setAspectRatio(cmd.Arguments.AspectRatio,player);break;case"SetBrightness":this.setBrightness(cmd.Arguments.Brightness,player);break;case"SetAudioStreamIndex":this.setAudioStreamIndex(parseInt(cmd.Arguments.Index),player);break;case"SetSubtitleStreamIndex":this.setSubtitleStreamIndex(parseInt(cmd.Arguments.Index),player);break;case"SetMaxStreamingBitrate":break;case"ToggleFullscreen":this.toggleFullscreen(player);break;default:player.sendCommand&&player.sendCommand(cmd)}},new PlaybackManager}); \ No newline at end of file +define(["events","datetime","appSettings","itemHelper","pluginManager","playQueueManager","userSettings","globalize","connectionManager","loading","apphost","fullscreenManager"],function(events,datetime,appSettings,itemHelper,pluginManager,PlayQueueManager,userSettings,globalize,connectionManager,loading,apphost,fullscreenManager){"use strict";function enableLocalPlaylistManagement(player){return!player.getPlaylist&&!!player.isLocalPlayer}function bindToFullscreenChange(player){events.on(fullscreenManager,"fullscreenchange",function(){events.trigger(player,"fullscreenchange")})}function triggerPlayerChange(playbackManagerInstance,newPlayer,newTarget,previousPlayer,previousTargetInfo){(newPlayer||previousPlayer)&&(newTarget&&previousTargetInfo&&newTarget.id===previousTargetInfo.id||events.trigger(playbackManagerInstance,"playerchange",[newPlayer,newTarget,previousPlayer]))}function reportPlayback(state,serverId,method,progressEventName){if(serverId){var info=Object.assign({},state.PlayState);info.ItemId=state.NowPlayingItem.Id,progressEventName&&(info.EventName=progressEventName);var apiClient=connectionManager.getApiClient(serverId);apiClient[method](info)}}function normalizeName(t){return t.toLowerCase().replace(" ","")}function getItemsForPlayback(serverId,query){var apiClient=connectionManager.getApiClient(serverId);if(query.Ids&&1===query.Ids.split(",").length){var itemId=query.Ids.split(",");return apiClient.getItem(apiClient.getCurrentUserId(),itemId).then(function(item){return{Items:[item],TotalRecordCount:1}})}return query.Limit=query.Limit||200,query.Fields="MediaSources,Chapters",query.ExcludeLocationTypes="Virtual",query.EnableTotalRecordCount=!1,apiClient.getItems(apiClient.getCurrentUserId(),query)}function createStreamInfoFromUrlItem(item){return{url:item.Url||item.Path,playMethod:"DirectPlay",item:item,textTracks:[],mediaType:item.MediaType}}function mergePlaybackQueries(obj1,obj2){var query=Object.assign(obj1,obj2),filters=query.Filters?query.Filters.split(","):[];return filters.indexOf("IsNotFolder")===-1&&filters.push("IsNotFolder"),query.Filters=filters.join(","),query}function backdropImageUrl(apiClient,item,options){return options=options||{},options.type=options.type||"Backdrop",options.maxWidth||options.width||options.maxHeight||options.height||(options.quality=100),item.BackdropImageTags&&item.BackdropImageTags.length?(options.tag=item.BackdropImageTags[0],apiClient.getScaledImageUrl(item.Id,options)):item.ParentBackdropImageTags&&item.ParentBackdropImageTags.length?(options.tag=item.ParentBackdropImageTags[0],apiClient.getScaledImageUrl(item.ParentBackdropItemId,options)):null}function getMimeType(type,container){if(container=(container||"").toLowerCase(),"audio"===type){if("opus"===container)return"audio/ogg";if("webma"===container)return"audio/webm";if("m4a"===container)return"audio/mp4"}else if("video"===type){if("mkv"===container)return"video/x-matroska";if("m4v"===container)return"video/mp4";if("mov"===container)return"video/quicktime";if("mpg"===container)return"video/mpeg";if("flv"===container)return"video/x-flv"}return type+"/"+container}function getParam(name,url){name=name.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var regexS="[\\?&]"+name+"=([^&#]*)",regex=new RegExp(regexS,"i"),results=regex.exec(url);return null==results?"":decodeURIComponent(results[1].replace(/\+/g," "))}function isAutomaticPlayer(player){return!!player.isLocalPlayer}function getAutomaticPlayers(instance){var player=instance._currentPlayer;return player&&!isAutomaticPlayer(player)?[player]:instance.getPlayers().filter(isAutomaticPlayer)}function isServerItem(item){return!!item.Id}function enableIntros(item){return"Video"===item.MediaType&&("TvChannel"!==item.Type&&("InProgress"!==item.Status&&isServerItem(item)))}function getIntros(firstItem,apiClient,options){return!options.startPositionTicks&&options.fullscreen!==!1&&enableIntros(firstItem)&&userSettings.enableCinemaMode()?apiClient.getIntros(firstItem.Id):Promise.resolve({Items:[]})}function getAudioMaxValues(deviceProfile){var maxAudioSampleRate=null,maxAudioBitDepth=null;return deviceProfile.CodecProfiles.map(function(codecProfile){"Audio"===codecProfile.Type&&(codecProfile.Conditions||[]).map(function(condition){"LessThanEqual"===condition.Condition&&"AudioBitDepth"===condition.Property&&(maxAudioBitDepth=condition.Value),"LessThanEqual"===condition.Condition&&"AudioSampleRate"===condition.Property&&(maxAudioSampleRate=condition.Value)})}),{maxAudioSampleRate:maxAudioSampleRate,maxAudioBitDepth:maxAudioBitDepth}}function getAudioStreamUrl(item,transcodingProfile,directPlayContainers,maxBitrate,apiClient,maxAudioSampleRate,maxAudioBitDepth,startPosition){var url="Audio/"+item.Id+"/universal";return startingPlaySession++,apiClient.getUrl(url,{UserId:apiClient.getCurrentUserId(),DeviceId:apiClient.deviceId(),MaxStreamingBitrate:maxBitrate,Container:directPlayContainers,TranscodingContainer:transcodingProfile.Container||null,TranscodingProtocol:transcodingProfile.Protocol||null,AudioCodec:transcodingProfile.AudioCodec,MaxAudioSampleRate:maxAudioSampleRate,MaxAudioBitDepth:maxAudioBitDepth,api_key:apiClient.accessToken(),PlaySessionId:startingPlaySession,StartTimeTicks:startPosition||0,EnableRedirection:!0,EnableRemoteMedia:apphost.supports("remotemedia")})}function getAudioStreamUrlFromDeviceProfile(item,deviceProfile,maxBitrate,apiClient,startPosition){var transcodingProfile=deviceProfile.TranscodingProfiles.filter(function(p){return"Audio"===p.Type&&"Streaming"===p.Context})[0],directPlayContainers="";deviceProfile.DirectPlayProfiles.map(function(p){"Audio"===p.Type&&(directPlayContainers?directPlayContainers+=","+p.Container:directPlayContainers=p.Container,p.AudioCodec&&(directPlayContainers+="|"+p.AudioCodec))});var maxValues=getAudioMaxValues(deviceProfile);return getAudioStreamUrl(item,transcodingProfile,directPlayContainers,maxBitrate,apiClient,maxValues.maxAudioSampleRate,maxValues.maxAudioBitDepth,startPosition)}function getStreamUrls(items,deviceProfile,maxBitrate,apiClient,startPosition){var audioTranscodingProfile=deviceProfile.TranscodingProfiles.filter(function(p){return"Audio"===p.Type&&"Streaming"===p.Context})[0],audioDirectPlayContainers="";deviceProfile.DirectPlayProfiles.map(function(p){"Audio"===p.Type&&(audioDirectPlayContainers?audioDirectPlayContainers+=","+p.Container:audioDirectPlayContainers=p.Container,p.AudioCodec&&(audioDirectPlayContainers+="|"+p.AudioCodec))});for(var maxValues=getAudioMaxValues(deviceProfile),streamUrls=[],i=0,length=items.length;i=interceptors.length)return void resolve();var interceptor=interceptors[index];interceptor.intercept(options).then(function(){runNextPrePlay(interceptors,index+1,options,resolve,reject)},reject)}function sendPlaybackListToPlayer(player,items,deviceProfile,maxBitrate,apiClient,startPositionTicks){return setStreamUrls(items,deviceProfile,maxBitrate,apiClient,startPositionTicks).then(function(){return loading.hide(),player.play({items:items,startPositionTicks:startPositionTicks||0})})}function playAfterBitrateDetect(maxBitrate,item,playOptions,onPlaybackStartedFn){var promise,startPosition=playOptions.startPositionTicks,player=getPlayer(item,playOptions),activePlayer=self._currentPlayer;return activePlayer?(self._playNextAfterEnded=!1,promise=onPlaybackChanging(activePlayer,player,item)):promise=Promise.resolve(),isServerItem(item)&&"Game"!==item.MediaType?Promise.all([promise,player.getDeviceProfile(item)]).then(function(responses){var deviceProfile=responses[1],apiClient=connectionManager.getApiClient(item.ServerId);if(player&&!enableLocalPlaylistManagement(player))return sendPlaybackListToPlayer(player,playOptions.items,deviceProfile,maxBitrate,apiClient,startPosition);var mediaSourceId=playOptions.mediaSourceId,audioStreamIndex=playOptions.audioStreamIndex,subtitleStreamIndex=playOptions.subtitleStreamIndex;return getPlaybackMediaSource(player,apiClient,deviceProfile,maxBitrate,item,startPosition,mediaSourceId,audioStreamIndex,subtitleStreamIndex).then(function(mediaSource){var streamInfo=createStreamInfo(apiClient,item.MediaType,item,mediaSource,startPosition);return streamInfo.fullscreen=playOptions.fullscreen,getPlayerData(player).isChangingStream=!1,getPlayerData(player).maxStreamingBitrate=maxBitrate,player.play(streamInfo).then(function(){loading.hide(),onPlaybackStartedFn(),onPlaybackStarted(player,playOptions,streamInfo,mediaSource)},function(){onPlaybackStartedFn(),onPlaybackStarted(player,playOptions,streamInfo,mediaSource),setTimeout(function(err){onPlaybackError.call(player,err,{type:"mediadecodeerror"})},100)})})}):promise.then(function(){var streamInfo=createStreamInfoFromUrlItem(item);return streamInfo.fullscreen=playOptions.fullscreen,getPlayerData(player).isChangingStream=!1,player.play(streamInfo).then(function(){loading.hide(),onPlaybackStartedFn(),onPlaybackStarted(player,playOptions,streamInfo)},function(){self.stop(player)})})}function createStreamInfo(apiClient,type,item,mediaSource,startPosition,forceTranscoding){var mediaUrl,contentType,directOptions,transcodingOffsetTicks=0,playerStartPositionTicks=startPosition,liveStreamId=mediaSource.LiveStreamId,playMethod="Transcode",mediaSourceContainer=(mediaSource.Container||"").toLowerCase();"Video"===type?(contentType=getMimeType("video",mediaSourceContainer),mediaSource.enableDirectPlay&&!forceTranscoding?(mediaUrl=mediaSource.Path,playMethod="DirectPlay"):mediaSource.SupportsDirectStream&&!forceTranscoding?(directOptions={Static:!0,mediaSourceId:mediaSource.Id,deviceId:apiClient.deviceId(),api_key:apiClient.accessToken()},mediaSource.ETag&&(directOptions.Tag=mediaSource.ETag),mediaSource.LiveStreamId&&(directOptions.LiveStreamId=mediaSource.LiveStreamId),mediaUrl=apiClient.getUrl("Videos/"+item.Id+"/stream."+mediaSourceContainer,directOptions),playMethod="DirectStream"):mediaSource.SupportsTranscoding&&(mediaUrl=apiClient.getUrl(mediaSource.TranscodingUrl),"hls"===mediaSource.TranscodingSubProtocol?contentType="application/x-mpegURL":(playerStartPositionTicks=null,contentType=getMimeType("video",mediaSource.TranscodingContainer),mediaUrl.toLowerCase().indexOf("copytimestamps=true")===-1&&(transcodingOffsetTicks=startPosition||0)))):"Audio"===type?(contentType=getMimeType("audio",mediaSourceContainer),mediaSource.enableDirectPlay&&!forceTranscoding?(mediaUrl=mediaSource.Path,playMethod="DirectPlay"):mediaSource.StreamUrl?(playMethod="Transcode",mediaUrl=mediaSource.StreamUrl):mediaSource.SupportsDirectStream&&!forceTranscoding?(directOptions={Static:!0,mediaSourceId:mediaSource.Id,deviceId:apiClient.deviceId(),api_key:apiClient.accessToken()},mediaSource.ETag&&(directOptions.Tag=mediaSource.ETag),mediaSource.LiveStreamId&&(directOptions.LiveStreamId=mediaSource.LiveStreamId),mediaUrl=apiClient.getUrl("Audio/"+item.Id+"/stream."+mediaSourceContainer,directOptions),playMethod="DirectStream"):mediaSource.SupportsTranscoding&&(mediaUrl=apiClient.getUrl(mediaSource.TranscodingUrl),"hls"===mediaSource.TranscodingSubProtocol?contentType="application/x-mpegURL":(transcodingOffsetTicks=startPosition||0,playerStartPositionTicks=null,contentType=getMimeType("audio",mediaSource.TranscodingContainer)))):"Game"===type&&(mediaUrl=mediaSource.Path,playMethod="DirectPlay"),!mediaUrl&&mediaSource.SupportsDirectPlay&&(mediaUrl=mediaSource.Path,playMethod="DirectPlay");var resultInfo={url:mediaUrl,mimeType:contentType,transcodingOffsetTicks:transcodingOffsetTicks,playMethod:playMethod,playerStartPositionTicks:playerStartPositionTicks,item:item,mediaSource:mediaSource,textTracks:getTextTracks(apiClient,item,mediaSource),tracks:getTextTracks(apiClient,item,mediaSource),mediaType:type,liveStreamId:liveStreamId,playSessionId:getParam("playSessionId",mediaUrl),title:item.Name},backdropUrl=backdropImageUrl(apiClient,item,{});return backdropUrl&&(resultInfo.backdropUrl=backdropUrl),resultInfo}function getTextTracks(apiClient,item,mediaSource){for(var subtitleStreams=mediaSource.MediaStreams.filter(function(s){return"Subtitle"===s.Type}),textStreams=subtitleStreams.filter(function(s){return"External"===s.DeliveryMethod}),tracks=[],i=0,length=textStreams.length;i0},self.isPlayingVideo=function(player){return self.isPlayingMediaType("Video",player)},self.isPlayingAudio=function(player){return self.isPlayingMediaType("Audio",player)},self.getPlayers=function(){return players},self.canPlay=function(item){var itemType=item.Type,locationType=item.LocationType;if("MusicGenre"===itemType||"Season"===itemType||"Series"===itemType||"BoxSet"===itemType||"MusicAlbum"===itemType||"MusicArtist"===itemType||"Playlist"===itemType)return!0;if("Virtual"===locationType&&"Program"!==itemType)return!1;if("Program"===itemType){if(!item.EndDate||!item.StartDate)return!1;if((new Date).getTime()>datetime.parseISO8601Date(item.EndDate).getTime()||(new Date).getTime()=supported.length&&(index=0),self.setAspectRatio(supported[index].id,player)}},self.setAspectRatio=function(val,player){player=player||self._currentPlayer,player&&player.setAspectRatio&&player.setAspectRatio(val)},self.getSupportedAspectRatios=function(player){return player=player||self._currentPlayer,player&&player.getSupportedAspectRatios?player.getSupportedAspectRatios():[]},self.getAspectRatio=function(player){if(player=player||self._currentPlayer,player&&player.getAspectRatio)return player.getAspectRatio()};var brightnessOsdLoaded;self.setBrightness=function(val,player){player=player||self._currentPlayer,player&&(brightnessOsdLoaded||(brightnessOsdLoaded=!0,require(["brightnessOsd"])),player.setBrightness(val))},self.getBrightness=function(player){if(player=player||self._currentPlayer)return player.getBrightness()},self.setVolume=function(val,player){player=player||self._currentPlayer,player&&player.setVolume(val)},self.getVolume=function(player){if(player=player||self._currentPlayer)return player.getVolume()},self.volumeUp=function(player){player=player||self._currentPlayer,player&&player.volumeUp()},self.volumeDown=function(player){player=player||self._currentPlayer,player&&player.volumeDown()},self.changeAudioStream=function(player){if(player=player||self._currentPlayer,player&&!enableLocalPlaylistManagement(player))return player.changeAudioStream();if(player){var i,length,currentMediaSource=self.currentMediaSource(player),mediaStreams=[];for(i=0,length=currentMediaSource.MediaStreams.length;i=mediaStreams.length&&(nextIndex=0),nextIndex=nextIndex===-1?-1:mediaStreams[nextIndex].Index,self.setAudioStreamIndex(nextIndex,player)}}},self.changeSubtitleStream=function(player){if(player=player||self._currentPlayer,player&&!enableLocalPlaylistManagement(player))return player.changeSubtitleStream();if(player){var i,length,currentMediaSource=self.currentMediaSource(player),mediaStreams=[];for(i=0,length=currentMediaSource.MediaStreams.length;i=mediaStreams.length&&(nextIndex=-1),nextIndex=nextIndex===-1?-1:mediaStreams[nextIndex].Index,self.setSubtitleStreamIndex(nextIndex,player)}}},self.getAudioStreamIndex=function(player){return player=player||self._currentPlayer,player&&!enableLocalPlaylistManagement(player)?player.getAudioStreamIndex():getPlayerData(player).audioStreamIndex},self.setAudioStreamIndex=function(index,player){return player=player||self._currentPlayer,player&&!enableLocalPlaylistManagement(player)?player.setAudioStreamIndex(index):void("Transcode"!==self.playMethod(player)&&player.canSetAudioStreamIndex()?(player.setAudioStreamIndex(index),getPlayerData(player).audioStreamIndex=index):(changeStream(player,getCurrentTicks(player),{AudioStreamIndex:index}),getPlayerData(player).audioStreamIndex=index))},self.getMaxStreamingBitrate=function(player){if(player=player||self._currentPlayer,player&&player.getMaxStreamingBitrate)return player.getMaxStreamingBitrate();var playerData=getPlayerData(player);if(playerData.maxStreamingBitrate)return playerData.maxStreamingBitrate;var mediaType=playerData.streamInfo?playerData.streamInfo.mediaType:null,currentItem=self.currentItem(player),apiClient=currentItem?connectionManager.getApiClient(currentItem.ServerId):connectionManager.currentApiClient();return getSavedMaxStreamingBitrate(apiClient,mediaType)},self.enableAutomaticBitrateDetection=function(player){if(player=player||self._currentPlayer,player&&player.enableAutomaticBitrateDetection)return player.enableAutomaticBitrateDetection();var playerData=getPlayerData(player),mediaType=playerData.streamInfo?playerData.streamInfo.mediaType:null,currentItem=self.currentItem(player),apiClient=currentItem?connectionManager.getApiClient(currentItem.ServerId):connectionManager.currentApiClient(),endpointInfo=apiClient.getSavedEndpointInfo()||{};return appSettings.enableAutomaticBitrateDetection(endpointInfo.IsInNetwork,mediaType)},self.setMaxStreamingBitrate=function(options,player){if(player=player||self._currentPlayer,player&&player.setMaxStreamingBitrate)return player.setMaxStreamingBitrate(options);var apiClient=connectionManager.getApiClient(self.currentItem(player).ServerId);apiClient.getEndpointInfo().then(function(endpointInfo){var promise,playerData=getPlayerData(player),mediaType=playerData.streamInfo?playerData.streamInfo.mediaType:null;options.enableAutomaticBitrateDetection?(appSettings.enableAutomaticBitrateDetection(endpointInfo.IsInNetwork,mediaType,!0),promise=apiClient.detectBitrate(!0)):(appSettings.enableAutomaticBitrateDetection(endpointInfo.IsInNetwork,mediaType,!1),promise=Promise.resolve(options.maxBitrate)),promise.then(function(bitrate){appSettings.maxStreamingBitrate(endpointInfo.IsInNetwork,mediaType,bitrate),changeStream(player,getCurrentTicks(player),{MaxStreamingBitrate:bitrate})})})},self.isFullscreen=function(player){return player=player||self._currentPlayer,!player.isLocalPlayer||player.isFullscreen?player.isFullscreen():fullscreenManager.isFullScreen()},self.toggleFullscreen=function(player){return player=player||self._currentPlayer,!player.isLocalPlayer||player.toggleFulscreen?player.toggleFulscreen():void(fullscreenManager.isFullScreen()?fullscreenManager.exitFullscreen():fullscreenManager.requestFullscreen())},self.togglePictureInPicture=function(player){return player=player||self._currentPlayer,player.togglePictureInPicture()},self.getSubtitleStreamIndex=function(player){if(player=player||self._currentPlayer,player&&!enableLocalPlaylistManagement(player))return player.getSubtitleStreamIndex();if(!player)throw new Error("player cannot be null");return getPlayerData(player).subtitleStreamIndex},self.setSubtitleStreamIndex=function(index,player){if(player=player||self._currentPlayer,player&&!enableLocalPlaylistManagement(player))return player.setSubtitleStreamIndex(index);var currentStream=getCurrentSubtitleStream(player),newStream=getSubtitleStream(player,index);if(currentStream||newStream){var selectedTrackElementIndex=-1,currentPlayMethod=self.playMethod(player);currentStream&&!newStream?("Encode"===getDeliveryMethod(currentStream)||"Embed"===getDeliveryMethod(currentStream)&&"Transcode"===currentPlayMethod)&&changeStream(player,getCurrentTicks(player),{SubtitleStreamIndex:-1}):!currentStream&&newStream?"External"===getDeliveryMethod(newStream)?selectedTrackElementIndex=index:"Embed"===getDeliveryMethod(newStream)&&"Transcode"!==currentPlayMethod?selectedTrackElementIndex=index:changeStream(player,getCurrentTicks(player),{SubtitleStreamIndex:index}):currentStream&&newStream&&("External"===getDeliveryMethod(newStream)||"Embed"===getDeliveryMethod(newStream)&&"Transcode"!==currentPlayMethod?(selectedTrackElementIndex=index,"External"!==getDeliveryMethod(currentStream)&&"Embed"!==getDeliveryMethod(currentStream)&&changeStream(player,getCurrentTicks(player),{SubtitleStreamIndex:-1})):changeStream(player,getCurrentTicks(player),{SubtitleStreamIndex:index})),player.setSubtitleStreamIndex(selectedTrackElementIndex),getPlayerData(player).subtitleStreamIndex=index}},self.seek=function(ticks,player){return ticks=Math.max(0,ticks),player=player||self._currentPlayer,player&&!enableLocalPlaylistManagement(player)?player.isLocalPlayer?player.seek((ticks||0)/1e4):player.seek(ticks):void changeStream(player,ticks)},self.seekRelative=function(offsetTicks,player){if(player=player||self._currentPlayer,player&&!enableLocalPlaylistManagement(player)&&player.seekRelative)return player.isLocalPlayer?player.seekRelative((ticks||0)/1e4):player.seekRelative(ticks);var ticks=getCurrentTicks(player)+offsetTicks;return this.seek(ticks,player)},self.play=function(options){if(normalizePlayOptions(options),self._currentPlayer){if(options.enableRemotePlayers===!1&&!self._currentPlayer.isLocalPlayer)return Promise.reject();if(!self._currentPlayer.isLocalPlayer)return self._currentPlayer.play(options)}if(options.fullscreen&&loading.show(),options.items)return translateItemsForPlayback(options.items,options).then(function(items){return playWithIntros(items,options)});if(!options.serverId)throw new Error("serverId required!");return getItemsForPlayback(options.serverId,{Ids:options.ids.join(",")}).then(function(result){return translateItemsForPlayback(result.Items,options).then(function(items){return playWithIntros(items,options)})})},self.getPlayerState=function(player){if(player=player||self._currentPlayer,!player)throw new Error("player cannot be null");if(!enableLocalPlaylistManagement(player)&&player.getPlayerState)return player.getPlayerState();var item=player?self.currentItem(player):null,mediaSource=player?self.currentMediaSource(player):null,state={PlayState:{}};return player&&(state.PlayState.VolumeLevel=player.getVolume(),state.PlayState.IsMuted=player.isMuted(),state.PlayState.IsPaused=player.paused(),state.PlayState.RepeatMode=self.getRepeatMode(player),state.PlayState.MaxStreamingBitrate=self.getMaxStreamingBitrate(player),state.PlayState.PositionTicks=getCurrentTicks(player),state.PlayState.PlaybackStartTimeTicks=self.playbackStartTime(player),state.PlayState.SubtitleStreamIndex=self.getSubtitleStreamIndex(player),state.PlayState.AudioStreamIndex=self.getAudioStreamIndex(player),state.PlayState.BufferedRanges=self.getBufferedRanges(player),state.PlayState.PlayMethod=self.playMethod(player),mediaSource&&(state.PlayState.LiveStreamId=mediaSource.LiveStreamId),state.PlayState.PlaySessionId=self.playSessionId(player)),mediaSource&&(state.PlayState.MediaSourceId=mediaSource.Id,state.NowPlayingItem={RunTimeTicks:mediaSource.RunTimeTicks},state.PlayState.CanSeek=(mediaSource.RunTimeTicks||0)>0||canPlayerSeek(player)),item&&(state.NowPlayingItem=getNowPlayingItemForReporting(player,item,mediaSource)),state.MediaSource=mediaSource,state},self.duration=function(player){if(player=player||self._currentPlayer,player&&!enableLocalPlaylistManagement(player)&&!player.isLocalPlayer)return player.duration();if(!player)throw new Error("player cannot be null");var mediaSource=self.currentMediaSource(player);if(mediaSource&&mediaSource.RunTimeTicks)return mediaSource.RunTimeTicks;var playerDuration=player.duration();return playerDuration&&(playerDuration*=1e4),playerDuration},self.getCurrentTicks=getCurrentTicks,self.getPlaybackInfo=function(item,options){options=options||{};var startPosition=options.startPositionTicks||0,mediaType=options.mediaType||item.MediaType,player=getPlayer(item,options),apiClient=connectionManager.getApiClient(item.ServerId),maxBitrate=getSavedMaxStreamingBitrate(connectionManager.getApiClient(item.ServerId),mediaType);return player.getDeviceProfile(item).then(function(deviceProfile){var mediaSourceId=null,audioStreamIndex=null,subtitleStreamIndex=null;return getPlaybackMediaSource(player,apiClient,deviceProfile,maxBitrate,item,startPosition,mediaSourceId,audioStreamIndex,subtitleStreamIndex).then(function(mediaSource){return createStreamInfo(apiClient,item.MediaType,item,mediaSource,startPosition)})})},self.setCurrentPlaylistItem=function(playlistItemId,player){if(player=player||self._currentPlayer,player&&!enableLocalPlaylistManagement(player))return player.setCurrentPlaylistItem(playlistItemId);for(var newItem,newItemIndex,playlist=self._playQueueManager.getPlaylist(),i=0,length=playlist.length;i=0){var playlist=self._playQueueManager.getPlaylist(),newItem=playlist[newIndex];if(newItem){var playOptions=Object.assign({},currentPlayOptions,{startPositionTicks:0,mediaSourceId:null,audioStreamIndex:null,subtitleStreamIndex:null});playInternal(newItem,playOptions,function(){setPlaylistState(newItem.PlaylistItemId,newIndex)})}}},self.queue=function(options,player){queue(options,"",player)},self.queueNext=function(options,player){queue(options,"next",player)},events.on(pluginManager,"registered",function(e,plugin){"mediaplayer"===plugin.type&&initMediaPlayer(plugin)}),pluginManager.ofType("mediaplayer").map(initMediaPlayer),self.onAppClose=function(){var player=this._currentPlayer;player&&this.isPlaying(player)&&(this._playNextAfterEnded=!1,onPlaybackStopped.call(player))},self.playbackStartTime=function(player){if(player=player||this._currentPlayer,player&&!enableLocalPlaylistManagement(player)&&!player.isLocalPlayer)return player.playbackStartTime();var streamInfo=getPlayerData(player).streamInfo;return streamInfo?streamInfo.playbackStartTimeTicks:null},apphost.supports("remotecontrol")&&require(["serverNotifications"],function(serverNotifications){events.on(serverNotifications,"ServerShuttingDown",self.setDefaultPlayerActive.bind(self)),events.on(serverNotifications,"ServerRestarting",self.setDefaultPlayerActive.bind(self))})}var startingPlaySession=(new Date).getTime();return PlaybackManager.prototype.getCurrentPlayer=function(){return this._currentPlayer},PlaybackManager.prototype.currentTime=function(player){return player=player||this._currentPlayer,!player||enableLocalPlaylistManagement(player)||player.isLocalPlayer?this.getCurrentTicks(player):player.currentTime()},PlaybackManager.prototype.nextItem=function(player){if(player=player||this._currentPlayer,player&&!enableLocalPlaylistManagement(player))return player.nextItem();var nextItem=this._playQueueManager.getNextItemInfo();if(!nextItem||!nextItem.item)return Promise.reject();var apiClient=connectionManager.getApiClient(nextItem.item.ServerId);return apiClient.getItem(apiClient.getCurrentUserId(),nextItem.item.Id)},PlaybackManager.prototype.canQueue=function(item){return"MusicAlbum"===item.Type||"MusicArtist"===item.Type||"MusicGenre"===item.Type?this.canQueueMediaType("Audio"):this.canQueueMediaType(item.MediaType)},PlaybackManager.prototype.canQueueMediaType=function(mediaType){return!!this._currentPlayer&&this._currentPlayer.canPlayMediaType(mediaType)},PlaybackManager.prototype.isMuted=function(player){return player=player||this._currentPlayer,!!player&&player.isMuted()},PlaybackManager.prototype.setMute=function(mute,player){player=player||this._currentPlayer,player&&player.setMute(mute)},PlaybackManager.prototype.toggleMute=function(mute,player){player=player||this._currentPlayer,player&&(player.toggleMute?player.toggleMute():player.setMute(!player.isMuted()))},PlaybackManager.prototype.toggleDisplayMirroring=function(){this.enableDisplayMirroring(!this.enableDisplayMirroring())},PlaybackManager.prototype.enableDisplayMirroring=function(enabled){if(null!=enabled){var val=enabled?"1":"0";return void appSettings.set("displaymirror",val)}return"0"!==(appSettings.get("displaymirror")||"")},PlaybackManager.prototype.nextChapter=function(player){player=player||this._currentPlayer;var item=this.currentItem(player),ticks=this.getCurrentTicks(player),nextChapter=(item.Chapters||[]).filter(function(i){return i.StartPositionTicks>ticks})[0];nextChapter?this.seek(nextChapter.StartPositionTicks,player):this.nextTrack(player)},PlaybackManager.prototype.previousChapter=function(player){player=player||this._currentPlayer;var item=this.currentItem(player),ticks=this.getCurrentTicks(player);ticks-=1e8,0===this.getCurrentPlaylistIndex(player)&&(ticks=Math.max(ticks,0));var previousChapters=(item.Chapters||[]).filter(function(i){return i.StartPositionTicks<=ticks});previousChapters.length?this.seek(previousChapters[previousChapters.length-1].StartPositionTicks,player):this.previousTrack(player)},PlaybackManager.prototype.fastForward=function(player){if(player=player||this._currentPlayer,null!=player.fastForward)return void player.fastForward(userSettings.skipForwardLength());var offsetTicks=1e4*userSettings.skipForwardLength();this.seekRelative(offsetTicks,player)},PlaybackManager.prototype.rewind=function(player){if(player=player||this._currentPlayer,null!=player.rewind)return void player.rewind(userSettings.skipBackLength());var offsetTicks=0-1e4*userSettings.skipBackLength();this.seekRelative(offsetTicks,player)},PlaybackManager.prototype.seekPercent=function(percent,player){player=player||this._currentPlayer;var ticks=this.duration(player)||0;percent/=100,ticks*=percent,this.seek(parseInt(ticks),player)},PlaybackManager.prototype.playTrailers=function(item){var apiClient=connectionManager.getApiClient(item.ServerId),instance=this; +if(item.LocalTrailerCount)return apiClient.getLocalTrailers(apiClient.getCurrentUserId(),item.Id).then(function(result){return instance.play({items:result})});var remoteTrailers=item.RemoteTrailers||[];return remoteTrailers.length?this.play({items:remoteTrailers.map(function(t){return{Name:t.Name||item.Name+" Trailer",Url:t.Url,MediaType:"Video",Type:"Trailer",ServerId:apiClient.serverId()}})}):Promise.reject()},PlaybackManager.prototype.getSubtitleUrl=function(textStream,serverId){var apiClient=connectionManager.getApiClient(serverId),textStreamUrl=textStream.IsExternalUrl?textStream.DeliveryUrl:apiClient.getUrl(textStream.DeliveryUrl);return textStreamUrl},PlaybackManager.prototype.stop=function(player){return player=player||this._currentPlayer,player?(enableLocalPlaylistManagement(player)&&(this._playNextAfterEnded=!1),player.stop(!0,!0)):Promise.resolve()},PlaybackManager.prototype.getBufferedRanges=function(player){return player=player||this._currentPlayer,player&&player.getBufferedRanges?player.getBufferedRanges():[]},PlaybackManager.prototype.playPause=function(player){if(player=player||this._currentPlayer)return player.playPause?player.playPause():player.paused()?this.unpause(player):this.pause(player)},PlaybackManager.prototype.paused=function(player){if(player=player||this._currentPlayer)return player.paused()},PlaybackManager.prototype.pause=function(player){player=player||this._currentPlayer,player&&player.pause()},PlaybackManager.prototype.unpause=function(player){player=player||this._currentPlayer,player&&player.unpause()},PlaybackManager.prototype.instantMix=function(item,player){if(player=player||this._currentPlayer,player&&player.instantMix)return player.instantMix(item);var apiClient=connectionManager.getApiClient(item.ServerId),options={};options.UserId=apiClient.getCurrentUserId(),options.Fields="MediaSources",options.Limit=200;var instance=this;apiClient.getInstantMixFromItem(item.Id,options).then(function(result){instance.play({items:result.Items})})},PlaybackManager.prototype.shuffle=function(shuffleItem,player,queryOptions){if(player=player||this._currentPlayer,player&&player.shuffle)return player.shuffle(shuffleItem);var apiClient=connectionManager.getApiClient(shuffleItem.ServerId),instance=this;apiClient.getItem(apiClient.getCurrentUserId(),shuffleItem.Id).then(function(item){var query={Fields:"MediaSources,Chapters",Limit:200,Recursive:!0,SortBy:"Random"};if("MusicArtist"===item.Type)query.MediaTypes="Audio",query.ArtistIds=item.Id;else if("MusicGenre"===item.Type)query.MediaTypes="Audio",query.Genres=item.Name;else{if(!item.IsFolder)return;query.ParentId=item.Id}queryOptions&&(query=mergePlaybackQueries(query,queryOptions)),getItemsForPlayback(item.ServerId,query).then(function(result){instance.play({items:result.Items})})})},PlaybackManager.prototype.audioTracks=function(player){if(player=player||this._currentPlayer,player.audioTracks){var result=player.audioTracks();if(result)return result}var mediaSource=this.currentMediaSource(player),mediaStreams=(mediaSource||{}).MediaStreams||[];return mediaStreams.filter(function(s){return"Audio"===s.Type})},PlaybackManager.prototype.subtitleTracks=function(player){if(player=player||this._currentPlayer,player.subtitleTracks){var result=player.subtitleTracks();if(result)return result}var mediaSource=this.currentMediaSource(player),mediaStreams=(mediaSource||{}).MediaStreams||[];return mediaStreams.filter(function(s){return"Subtitle"===s.Type})},PlaybackManager.prototype.getSupportedCommands=function(player){if(player=player||this._currentPlayer,player.isLocalPlayer){var list=["GoHome","GoToSettings","VolumeUp","VolumeDown","Mute","Unmute","ToggleMute","SetVolume","SetAudioStreamIndex","SetSubtitleStreamIndex","SetMaxStreamingBitrate","DisplayContent","GoToSearch","DisplayMessage","SetRepeatMode"];return apphost.supports("fullscreenchange")&&list.push("ToggleFullscreen"),player.supports&&(player.supports("PictureInPicture")&&list.push("PictureInPicture"),player.supports("SetBrightness")&&list.push("SetBrightness"),player.supports("SetAspectRatio")&&list.push("SetAspectRatio")),list}var info=this.getPlayerInfo();return info?info.supportedCommands:[]},PlaybackManager.prototype.setRepeatMode=function(value,player){return player=player||this._currentPlayer,player&&!enableLocalPlaylistManagement(player)?player.setRepeatMode(value):(this._playQueueManager.setRepeatMode(value),void events.trigger(player,"repeatmodechange"))},PlaybackManager.prototype.getRepeatMode=function(player){return player=player||this._currentPlayer,player&&!enableLocalPlaylistManagement(player)?player.getRepeatMode():this._playQueueManager.getRepeatMode()},PlaybackManager.prototype.trySetActiveDeviceName=function(name){name=normalizeName(name);var instance=this;instance.getTargets().then(function(result){var target=result.filter(function(p){return normalizeName(p.name)===name})[0];target&&instance.trySetActivePlayer(target.playerName,target)})},PlaybackManager.prototype.displayContent=function(options,player){player=player||this._currentPlayer,player&&player.displayContent&&player.displayContent(options)},PlaybackManager.prototype.beginPlayerUpdates=function(player){player.beginPlayerUpdates&&player.beginPlayerUpdates()},PlaybackManager.prototype.endPlayerUpdates=function(player){player.endPlayerUpdates&&player.endPlayerUpdates()},PlaybackManager.prototype.setDefaultPlayerActive=function(){this.setActivePlayer("localplayer")},PlaybackManager.prototype.removeActivePlayer=function(name){var playerInfo=this.getPlayerInfo();playerInfo&&playerInfo.name===name&&this.setDefaultPlayerActive()},PlaybackManager.prototype.removeActiveTarget=function(id){var playerInfo=this.getPlayerInfo();playerInfo&&playerInfo.id===id&&this.setDefaultPlayerActive()},PlaybackManager.prototype.sendCommand=function(cmd,player){switch(console.log("MediaController received command: "+cmd.Name),cmd.Name){case"SetRepeatMode":this.setRepeatMode(cmd.Arguments.RepeatMode,player);break;case"VolumeUp":this.volumeUp(player);break;case"VolumeDown":this.volumeDown(player);break;case"Mute":this.setMute(!0,player);break;case"Unmute":this.setMute(!1,player);break;case"ToggleMute":this.toggleMute(player);break;case"SetVolume":this.setVolume(cmd.Arguments.Volume,player);break;case"SetAspectRatio":this.setAspectRatio(cmd.Arguments.AspectRatio,player);break;case"SetBrightness":this.setBrightness(cmd.Arguments.Brightness,player);break;case"SetAudioStreamIndex":this.setAudioStreamIndex(parseInt(cmd.Arguments.Index),player);break;case"SetSubtitleStreamIndex":this.setSubtitleStreamIndex(parseInt(cmd.Arguments.Index),player);break;case"SetMaxStreamingBitrate":break;case"ToggleFullscreen":this.toggleFullscreen(player);break;default:player.sendCommand&&player.sendCommand(cmd)}},new PlaybackManager}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/slideshow/slideshow.js b/dashboard-ui/bower_components/emby-webcomponents/slideshow/slideshow.js index 999197a38a..ee7d63ea24 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/slideshow/slideshow.js +++ b/dashboard-ui/bower_components/emby-webcomponents/slideshow/slideshow.js @@ -1 +1 @@ -define(["dialogHelper","inputManager","connectionManager","layoutManager","focusManager","browser","apphost","loading","css!./style","material-icons","paper-icon-button-light"],function(dialogHelper,inputmanager,connectionManager,layoutManager,focusManager,browser,appHost,loading){"use strict";function getImageUrl(item,options,apiClient){return options=options||{},options.type=options.type||"Primary","string"==typeof item?apiClient.getScaledImageUrl(item,options):item.ImageTags&&item.ImageTags[options.type]?(options.tag=item.ImageTags[options.type],apiClient.getScaledImageUrl(item.Id,options)):"Primary"===options.type&&item.AlbumId&&item.AlbumPrimaryImageTag?(options.tag=item.AlbumPrimaryImageTag,apiClient.getScaledImageUrl(item.AlbumId,options)):null}function getBackdropImageUrl(item,options,apiClient){return options=options||{},options.type=options.type||"Backdrop",options.maxWidth||options.width||options.maxHeight||options.height||(options.quality=100),item.BackdropImageTags&&item.BackdropImageTags.length?(options.tag=item.BackdropImageTags[0],apiClient.getScaledImageUrl(item.Id,options)):null}function getImgUrl(item,original){var apiClient=connectionManager.getApiClient(item.ServerId),imageOptions={};return original||(imageOptions.maxWidth=screen.availWidth),item.BackdropImageTags&&item.BackdropImageTags.length?getBackdropImageUrl(item,imageOptions,apiClient):"Photo"===item.MediaType&&original?apiClient.getItemDownloadUrl(item.Id):(imageOptions.type="Primary",getImageUrl(item,imageOptions,apiClient))}function getIcon(icon,cssClass,canFocus,autoFocus){var tabIndex=canFocus?"":' tabindex="-1"';return autoFocus=autoFocus?" autofocus":"",'"}return function(options){function createElements(options){dlg=dialogHelper.createDialog({exitAnimationDuration:options.interactive?400:800,size:"fullscreen",autoFocus:!1,scrollY:!1,exitAnimation:"fadeout",removeOnClose:!0}),dlg.classList.add("slideshowDialog");var html="";if(options.interactive){var actionButtonsOnTop=layoutManager.mobile;html+="
",html+='
',html+=getIcon("keyboard_arrow_left","btnSlideshowPrevious slideshowButton",!1),html+=getIcon("keyboard_arrow_right","btnSlideshowNext slideshowButton",!1),html+='
',actionButtonsOnTop&&(appHost.supports("filedownload")&&(html+=getIcon("file_download","btnDownload slideshowButton",!0)),appHost.supports("sharing")&&(html+=getIcon("share","btnShare slideshowButton",!0))),html+=getIcon("close","slideshowButton btnSlideshowExit",!1),html+="
",actionButtonsOnTop||(html+='
',html+=getIcon("pause","btnSlideshowPause slideshowButton",!0,!0),appHost.supports("filedownload")&&(html+=getIcon("file_download","btnDownload slideshowButton",!0)),appHost.supports("sharing")&&(html+=getIcon("share","btnShare slideshowButton",!0)),html+="
"),html+="
"}else html+='

';if(dlg.innerHTML=html,options.interactive){dlg.querySelector(".btnSlideshowExit").addEventListener("click",function(e){dialogHelper.close(dlg)}),dlg.querySelector(".btnSlideshowNext").addEventListener("click",nextImage),dlg.querySelector(".btnSlideshowPrevious").addEventListener("click",previousImage);var btnPause=dlg.querySelector(".btnSlideshowPause");btnPause&&btnPause.addEventListener("click",playPause);var btnDownload=dlg.querySelector(".btnDownload");btnDownload&&btnDownload.addEventListener("click",download);var btnShare=dlg.querySelector(".btnShare");btnShare&&btnShare.addEventListener("click",share)}dialogHelper.open(dlg).then(function(){stopInterval()}),inputmanager.on(window,onInputCommand),document.addEventListener("mousemove",onMouseMove),dlg.addEventListener("close",onDialogClosed),options.interactive&&loadSwiper(dlg)}function loadSwiper(dlg){currentOptions.slides?dlg.querySelector(".swiper-wrapper").innerHTML=currentOptions.slides.map(getSwiperSlideHtmlFromSlide).join(""):dlg.querySelector(".swiper-wrapper").innerHTML=currentOptions.items.map(getSwiperSlideHtmlFromItem).join(""),require(["swiper"],function(swiper){swiperInstance=new Swiper(dlg.querySelector(".slideshowSwiperContainer"),{direction:"horizontal",loop:options.loop!==!1,autoplay:options.interval||8e3,preloadImages:!1,lazyLoading:!0,lazyLoadingInPrevNext:!0,autoplayDisableOnInteraction:!1,initialSlide:options.startIndex||0,speed:240}),layoutManager.mobile?pause():play()})}function getSwiperSlideHtmlFromItem(item){return getSwiperSlideHtmlFromSlide({imageUrl:getImgUrl(item),originalImage:getImgUrl(item,!0),Id:item.Id,ServerId:item.ServerId})}function getSwiperSlideHtmlFromSlide(item){var html="";return html+='
',html+='',(item.title||item.subtitle)&&(html+='
',html+='
',item.title&&(html+='

',html+=item.title,html+="

"),item.description&&(html+='
',html+=item.description,html+="
"),html+="
",html+="
"),html+="
"}function previousImage(){swiperInstance?swiperInstance.slidePrev():(stopInterval(),showNextImage(currentIndex-1))}function nextImage(){if(swiperInstance){if(options.loop===!1&&swiperInstance.activeIndex>=swiperInstance.slides.length-1)return void dialogHelper.close(dlg);swiperInstance.slideNext()}else stopInterval(),showNextImage(currentIndex+1)}function getCurrentImageInfo(){if(swiperInstance){var slide=document.querySelector(".swiper-slide-active");return slide?{url:slide.getAttribute("data-original"),itemId:slide.getAttribute("data-itemid"),serverId:slide.getAttribute("data-serverid")}:null}return null}function download(){var imageInfo=getCurrentImageInfo();require(["fileDownloader"],function(fileDownloader){fileDownloader.download([imageInfo])})}function share(){var imageInfo=getCurrentImageInfo();require(["sharingmanager"],function(sharingManager){sharingManager.showMenu(imageInfo)})}function play(){var btnSlideshowPause=dlg.querySelector(".btnSlideshowPause i");btnSlideshowPause&&(btnSlideshowPause.innerHTML="pause"),swiperInstance.startAutoplay()}function pause(){var btnSlideshowPause=dlg.querySelector(".btnSlideshowPause i");btnSlideshowPause&&(btnSlideshowPause.innerHTML="play_arrow"),swiperInstance.stopAutoplay()}function playPause(){var paused="pause"!==dlg.querySelector(".btnSlideshowPause i").innerHTML;paused?play():pause()}function onDialogClosed(){var swiper=swiperInstance;swiper&&(swiper.destroy(!0,!0),swiperInstance=null),inputmanager.off(window,onInputCommand),document.removeEventListener("mousemove",onMouseMove)}function startInterval(options){currentOptions=options,stopInterval(),createElements(options),options.interactive||(currentIntervalMs=options.interval||11e3,showNextImage(options.startIndex||0,!0))}function isOsdOpen(){return _osdOpen}function getOsdBottom(){return dlg.querySelector(".slideshowBottomBar")}function showOsd(){var bottom=getOsdBottom();bottom&&(slideUpToShow(bottom),startHideTimer())}function hideOsd(){var bottom=getOsdBottom();bottom&&slideDownToHide(bottom)}function startHideTimer(){stopHideTimer(),hideTimeout=setTimeout(hideOsd,4e3)}function stopHideTimer(){hideTimeout&&(clearTimeout(hideTimeout),hideTimeout=null)}function slideUpToShow(elem){if(elem.classList.contains("hide")){_osdOpen=!0,elem.classList.remove("hide");var onFinish=function(){focusManager.focus(elem.querySelector(".btnSlideshowPause"))};return elem.animate?void requestAnimationFrame(function(){var keyframes=[{transform:"translate3d(0,"+elem.offsetHeight+"px,0)",opacity:".3",offset:0},{transform:"translate3d(0,0,0)",opacity:"1",offset:1}],timing={duration:300,iterations:1,easing:"ease-out"};elem.animate(keyframes,timing).onfinish=onFinish}):void onFinish()}}function slideDownToHide(elem){if(!elem.classList.contains("hide")){var onFinish=function(){elem.classList.add("hide"),_osdOpen=!1};return elem.animate?void requestAnimationFrame(function(){var keyframes=[{transform:"translate3d(0,0,0)",opacity:"1",offset:0},{transform:"translate3d(0,"+elem.offsetHeight+"px,0)",opacity:".3",offset:1}],timing={duration:300,iterations:1,easing:"ease-out"};elem.animate(keyframes,timing).onfinish=onFinish}):void onFinish()}}function onMouseMove(e){var eventX=e.screenX||0,eventY=e.screenY||0,obj=lastMouseMoveData;return obj?void(Math.abs(eventX-obj.x)<10&&Math.abs(eventY-obj.y)<10||(obj.x=eventX,obj.y=eventY,showOsd())):void(lastMouseMoveData={x:eventX,y:eventY})}function onInputCommand(e){switch(e.detail.command){case"left":isOsdOpen()||(e.preventDefault(),e.stopPropagation(),previousImage());break;case"right":isOsdOpen()||(e.preventDefault(),e.stopPropagation(),nextImage());break;case"up":case"down":case"select":case"menu":case"info":case"play":case"playpause":case"pause":case"fastforward":case"rewind":case"next":case"previous":showOsd()}}function showNextImage(index,skipPreload){index=Math.max(0,index),index>=currentOptions.items.length&&(index=0),currentIndex=index;var options=currentOptions,items=options.items,item=items[index],imgUrl=getImgUrl(item),onSrcLoaded=function(){var cardImageContainer=dlg.querySelector(".slideshowImage"),newCardImageContainer=document.createElement("div");newCardImageContainer.className=cardImageContainer.className,options.cover&&newCardImageContainer.classList.add("slideshowImage-cover"),newCardImageContainer.style.backgroundImage="url('"+imgUrl+"')",newCardImageContainer.classList.add("hide"),cardImageContainer.parentNode.appendChild(newCardImageContainer),options.showTitle?dlg.querySelector(".slideshowImageText").innerHTML=item.Name:dlg.querySelector(".slideshowImageText").innerHTML="",newCardImageContainer.classList.remove("hide");var onAnimationFinished=function(){var parentNode=cardImageContainer.parentNode;parentNode&&parentNode.removeChild(cardImageContainer)};if(newCardImageContainer.animate){var keyframes=[{opacity:"0",offset:0},{opacity:"1",offset:1}],timing={duration:1200,iterations:1};newCardImageContainer.animate(keyframes,timing).onfinish=onAnimationFinished}else onAnimationFinished();stopInterval(),currentTimeout=setTimeout(function(){showNextImage(index+1,!0)},currentIntervalMs)};if(skipPreload)onSrcLoaded();else{var img=new Image;img.onload=onSrcLoaded,img.src=imgUrl}}function stopInterval(){currentTimeout&&(clearTimeout(currentTimeout),currentTimeout=null)}var swiperInstance,dlg,currentTimeout,currentIntervalMs,currentOptions,currentIndex,hideTimeout,lastMouseMoveData,self=this,_osdOpen=!1;self.show=function(){startInterval(options)},self.hide=function(){var dialog=dlg;dialog&&dialogHelper.close(dialog)}}}); \ No newline at end of file +define(["dialogHelper","inputManager","connectionManager","layoutManager","focusManager","browser","apphost","loading","css!./style","material-icons","paper-icon-button-light"],function(dialogHelper,inputmanager,connectionManager,layoutManager,focusManager,browser,appHost,loading){"use strict";function getImageUrl(item,options,apiClient){return options=options||{},options.type=options.type||"Primary","string"==typeof item?apiClient.getScaledImageUrl(item,options):item.ImageTags&&item.ImageTags[options.type]?(options.tag=item.ImageTags[options.type],apiClient.getScaledImageUrl(item.Id,options)):"Primary"===options.type&&item.AlbumId&&item.AlbumPrimaryImageTag?(options.tag=item.AlbumPrimaryImageTag,apiClient.getScaledImageUrl(item.AlbumId,options)):null}function getBackdropImageUrl(item,options,apiClient){return options=options||{},options.type=options.type||"Backdrop",options.maxWidth||options.width||options.maxHeight||options.height||(options.quality=100),item.BackdropImageTags&&item.BackdropImageTags.length?(options.tag=item.BackdropImageTags[0],apiClient.getScaledImageUrl(item.Id,options)):null}function getImgUrl(item,original){var apiClient=connectionManager.getApiClient(item.ServerId),imageOptions={};return original||(imageOptions.maxWidth=screen.availWidth),item.BackdropImageTags&&item.BackdropImageTags.length?getBackdropImageUrl(item,imageOptions,apiClient):"Photo"===item.MediaType&&original?apiClient.getItemDownloadUrl(item.Id):(imageOptions.type="Primary",getImageUrl(item,imageOptions,apiClient))}function getIcon(icon,cssClass,canFocus,autoFocus){var tabIndex=canFocus?"":' tabindex="-1"';return autoFocus=autoFocus?" autofocus":"",'"}return function(options){function createElements(options){dlg=dialogHelper.createDialog({exitAnimationDuration:options.interactive?400:800,size:"fullscreen",autoFocus:!1,scrollY:!1,exitAnimation:"fadeout",removeOnClose:!0}),dlg.classList.add("slideshowDialog");var html="";if(options.interactive){var actionButtonsOnTop=layoutManager.mobile;html+="
",html+='
',html+=getIcon("keyboard_arrow_left","btnSlideshowPrevious slideshowButton",!1),html+=getIcon("keyboard_arrow_right","btnSlideshowNext slideshowButton",!1),html+='
',actionButtonsOnTop&&(appHost.supports("filedownload")&&(html+=getIcon("file_download","btnDownload slideshowButton",!0)),appHost.supports("sharing")&&(html+=getIcon("share","btnShare slideshowButton",!0))),html+=getIcon("close","slideshowButton btnSlideshowExit",!1),html+="
",actionButtonsOnTop||(html+='
',html+=getIcon("pause","btnSlideshowPause slideshowButton",!0,!0),appHost.supports("filedownload")&&(html+=getIcon("file_download","btnDownload slideshowButton",!0)),appHost.supports("sharing")&&(html+=getIcon("share","btnShare slideshowButton",!0)),html+="
"),html+="
"}else html+='

';if(dlg.innerHTML=html,options.interactive){dlg.querySelector(".btnSlideshowExit").addEventListener("click",function(e){dialogHelper.close(dlg)}),dlg.querySelector(".btnSlideshowNext").addEventListener("click",nextImage),dlg.querySelector(".btnSlideshowPrevious").addEventListener("click",previousImage);var btnPause=dlg.querySelector(".btnSlideshowPause");btnPause&&btnPause.addEventListener("click",playPause);var btnDownload=dlg.querySelector(".btnDownload");btnDownload&&btnDownload.addEventListener("click",download);var btnShare=dlg.querySelector(".btnShare");btnShare&&btnShare.addEventListener("click",share)}dialogHelper.open(dlg).then(function(){stopInterval()}),inputmanager.on(window,onInputCommand),document.addEventListener(window.PointerEvent?"pointermove":"mousemove",onPointerMove),dlg.addEventListener("close",onDialogClosed),options.interactive&&loadSwiper(dlg)}function loadSwiper(dlg){currentOptions.slides?dlg.querySelector(".swiper-wrapper").innerHTML=currentOptions.slides.map(getSwiperSlideHtmlFromSlide).join(""):dlg.querySelector(".swiper-wrapper").innerHTML=currentOptions.items.map(getSwiperSlideHtmlFromItem).join(""),require(["swiper"],function(swiper){swiperInstance=new Swiper(dlg.querySelector(".slideshowSwiperContainer"),{direction:"horizontal",loop:options.loop!==!1,autoplay:options.interval||8e3,preloadImages:!1,lazyLoading:!0,lazyLoadingInPrevNext:!0,autoplayDisableOnInteraction:!1,initialSlide:options.startIndex||0,speed:240}),layoutManager.mobile?pause():play()})}function getSwiperSlideHtmlFromItem(item){return getSwiperSlideHtmlFromSlide({imageUrl:getImgUrl(item),originalImage:getImgUrl(item,!0),Id:item.Id,ServerId:item.ServerId})}function getSwiperSlideHtmlFromSlide(item){var html="";return html+='
',html+='',(item.title||item.subtitle)&&(html+='
',html+='
',item.title&&(html+='

',html+=item.title,html+="

"),item.description&&(html+='
',html+=item.description,html+="
"),html+="
",html+="
"),html+="
"}function previousImage(){swiperInstance?swiperInstance.slidePrev():(stopInterval(),showNextImage(currentIndex-1))}function nextImage(){if(swiperInstance){if(options.loop===!1&&swiperInstance.activeIndex>=swiperInstance.slides.length-1)return void dialogHelper.close(dlg);swiperInstance.slideNext()}else stopInterval(),showNextImage(currentIndex+1)}function getCurrentImageInfo(){if(swiperInstance){var slide=document.querySelector(".swiper-slide-active");return slide?{url:slide.getAttribute("data-original"),itemId:slide.getAttribute("data-itemid"),serverId:slide.getAttribute("data-serverid")}:null}return null}function download(){var imageInfo=getCurrentImageInfo();require(["fileDownloader"],function(fileDownloader){fileDownloader.download([imageInfo])})}function share(){var imageInfo=getCurrentImageInfo();require(["sharingmanager"],function(sharingManager){sharingManager.showMenu(imageInfo)})}function play(){var btnSlideshowPause=dlg.querySelector(".btnSlideshowPause i");btnSlideshowPause&&(btnSlideshowPause.innerHTML="pause"),swiperInstance.startAutoplay()}function pause(){var btnSlideshowPause=dlg.querySelector(".btnSlideshowPause i");btnSlideshowPause&&(btnSlideshowPause.innerHTML="play_arrow"),swiperInstance.stopAutoplay()}function playPause(){var paused="pause"!==dlg.querySelector(".btnSlideshowPause i").innerHTML;paused?play():pause()}function onDialogClosed(){var swiper=swiperInstance;swiper&&(swiper.destroy(!0,!0),swiperInstance=null),inputmanager.off(window,onInputCommand),document.removeEventListener(window.PointerEvent?"pointermove":"mousemove",onPointerMove)}function startInterval(options){currentOptions=options,stopInterval(),createElements(options),options.interactive||(currentIntervalMs=options.interval||11e3,showNextImage(options.startIndex||0,!0))}function isOsdOpen(){return _osdOpen}function getOsdBottom(){return dlg.querySelector(".slideshowBottomBar")}function showOsd(){var bottom=getOsdBottom();bottom&&(slideUpToShow(bottom),startHideTimer())}function hideOsd(){var bottom=getOsdBottom();bottom&&slideDownToHide(bottom)}function startHideTimer(){stopHideTimer(),hideTimeout=setTimeout(hideOsd,4e3)}function stopHideTimer(){hideTimeout&&(clearTimeout(hideTimeout),hideTimeout=null)}function slideUpToShow(elem){if(elem.classList.contains("hide")){_osdOpen=!0,elem.classList.remove("hide");var onFinish=function(){focusManager.focus(elem.querySelector(".btnSlideshowPause"))};return elem.animate?void requestAnimationFrame(function(){var keyframes=[{transform:"translate3d(0,"+elem.offsetHeight+"px,0)",opacity:".3",offset:0},{transform:"translate3d(0,0,0)",opacity:"1",offset:1}],timing={duration:300,iterations:1,easing:"ease-out"};elem.animate(keyframes,timing).onfinish=onFinish}):void onFinish()}}function slideDownToHide(elem){if(!elem.classList.contains("hide")){var onFinish=function(){elem.classList.add("hide"),_osdOpen=!1};return elem.animate?void requestAnimationFrame(function(){var keyframes=[{transform:"translate3d(0,0,0)",opacity:"1",offset:0},{transform:"translate3d(0,"+elem.offsetHeight+"px,0)",opacity:".3",offset:1}],timing={duration:300,iterations:1,easing:"ease-out"};elem.animate(keyframes,timing).onfinish=onFinish}):void onFinish()}}function onPointerMove(e){var pointerType=e.pointerType||(layoutManager.mobile?"touch":"mouse");if("mouse"===pointerType){var eventX=e.screenX||0,eventY=e.screenY||0,obj=lastMouseMoveData;if(!obj)return void(lastMouseMoveData={x:eventX,y:eventY});if(Math.abs(eventX-obj.x)<10&&Math.abs(eventY-obj.y)<10)return;obj.x=eventX,obj.y=eventY,showOsd()}}function onInputCommand(e){switch(e.detail.command){case"left":isOsdOpen()||(e.preventDefault(),e.stopPropagation(),previousImage());break;case"right":isOsdOpen()||(e.preventDefault(),e.stopPropagation(),nextImage());break;case"up":case"down":case"select":case"menu":case"info":case"play":case"playpause":case"pause":case"fastforward":case"rewind":case"next":case"previous":showOsd()}}function showNextImage(index,skipPreload){index=Math.max(0,index),index>=currentOptions.items.length&&(index=0),currentIndex=index;var options=currentOptions,items=options.items,item=items[index],imgUrl=getImgUrl(item),onSrcLoaded=function(){var cardImageContainer=dlg.querySelector(".slideshowImage"),newCardImageContainer=document.createElement("div");newCardImageContainer.className=cardImageContainer.className,options.cover&&newCardImageContainer.classList.add("slideshowImage-cover"),newCardImageContainer.style.backgroundImage="url('"+imgUrl+"')",newCardImageContainer.classList.add("hide"),cardImageContainer.parentNode.appendChild(newCardImageContainer),options.showTitle?dlg.querySelector(".slideshowImageText").innerHTML=item.Name:dlg.querySelector(".slideshowImageText").innerHTML="",newCardImageContainer.classList.remove("hide");var onAnimationFinished=function(){var parentNode=cardImageContainer.parentNode;parentNode&&parentNode.removeChild(cardImageContainer)};if(newCardImageContainer.animate){var keyframes=[{opacity:"0",offset:0},{opacity:"1",offset:1}],timing={duration:1200,iterations:1};newCardImageContainer.animate(keyframes,timing).onfinish=onAnimationFinished}else onAnimationFinished();stopInterval(),currentTimeout=setTimeout(function(){showNextImage(index+1,!0)},currentIntervalMs)};if(skipPreload)onSrcLoaded();else{var img=new Image;img.onload=onSrcLoaded,img.src=imgUrl}}function stopInterval(){currentTimeout&&(clearTimeout(currentTimeout),currentTimeout=null)}var swiperInstance,dlg,currentTimeout,currentIntervalMs,currentOptions,currentIndex,hideTimeout,lastMouseMoveData,self=this,_osdOpen=!1;self.show=function(){startInterval(options)},self.hide=function(){var dialog=dlg;dialog&&dialogHelper.close(dialog)}}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json b/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json index 78b2129d04..c91d7763ae 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json @@ -604,8 +604,8 @@ "AllowSeasonalThemesHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d \u0431\u043e\u043b\u0441\u0430, \u043c\u0430\u0443\u0441\u044b\u043c\u0434\u044b\u049b \u0442\u0430\u049b\u044b\u0440\u044b\u043f\u0442\u0430\u0440 \u0430\u043d\u0434\u0430-\u0441\u0430\u043d\u0434\u0430 \u0442\u0430\u049b\u044b\u0440\u044b\u043f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456\u04a3\u0456\u0437\u0434\u0456\u04a3 \u043a\u04af\u0448\u0456\u043d \u0436\u043e\u044f\u0434\u044b.", "AutoBasedOnLanguageSetting": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 (\u0442\u0456\u043b \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456 \u043d\u0435\u0433\u0456\u0437\u0456\u043d\u0434\u0435)", "LabelDateTimeLocale": "\u041a\u04af\u043d \u043c\u0435\u043d \u0443\u0430\u049b\u044b\u0442:", - "DirectorValue": "Director: {0}", - "DirectorsValue": "Directors: {0}", - "GenreValue": "Genre: {0}", - "GenresValue": "Genres: {0}" + "DirectorValue": "\u0420\u0435\u0436\u0438\u0441\u0441\u0435\u0440\u0456: {0}", + "DirectorsValue": "\u0420\u0435\u0436\u0438\u0441\u0441\u0435\u0440\u043b\u0435\u0440; {0}", + "GenreValue": "\u0416\u0430\u043d\u0440: {0}", + "GenresValue": "\u0416\u0430\u043d\u0440\u043b\u0430\u0440: {0}" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json index 6923cb83f9..434894bea1 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json @@ -604,8 +604,8 @@ "AllowSeasonalThemesHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u0441\u0435\u0437\u043e\u043d\u043d\u044b\u0435 \u0442\u0435\u043c\u044b \u0431\u0443\u0434\u0443\u0442 \u0432\u0440\u0435\u043c\u044f \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0432\u0430\u0448\u0443 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0442\u0435\u043c\u044b.", "AutoBasedOnLanguageSetting": "\u0410\u0432\u0442\u043e (\u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u044f\u0437\u044b\u043a\u0430)", "LabelDateTimeLocale": "\u0414\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043c\u044f:", - "DirectorValue": "Director: {0}", - "DirectorsValue": "Directors: {0}", - "GenreValue": "Genre: {0}", - "GenresValue": "Genres: {0}" + "DirectorValue": "\u0420\u0435\u0436\u0438\u0441\u0441\u0451\u0440: {0}", + "DirectorsValue": "\u0420\u0435\u0436\u0438\u0441\u0441\u0451\u0440\u044b: {0}", + "GenreValue": "\u0416\u0430\u043d\u0440: {0}", + "GenresValue": "\u0416\u0430\u043d\u0440\u044b: {0}" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/subtitleeditor/subtitleeditor.js b/dashboard-ui/bower_components/emby-webcomponents/subtitleeditor/subtitleeditor.js index 99290a9359..a8e3077b31 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/subtitleeditor/subtitleeditor.js +++ b/dashboard-ui/bower_components/emby-webcomponents/subtitleeditor/subtitleeditor.js @@ -1 +1 @@ -define(["dialogHelper","require","layoutManager","globalize","userSettings","connectionManager","loading","focusManager","dom","apphost","emby-select","listViewStyle","paper-icon-button-light","css!./../formdialog","material-icons","css!./subtitleeditor","emby-button","flexStyles"],function(dialogHelper,require,layoutManager,globalize,userSettings,connectionManager,loading,focusManager,dom,appHost){"use strict";function downloadRemoteSubtitles(context,id){var url="Items/"+currentItem.Id+"/RemoteSearch/Subtitles/"+id,apiClient=connectionManager.getApiClient(currentItem.ServerId);apiClient.ajax({type:"POST",url:apiClient.getUrl(url)}).then(function(){hasChanges=!0,require(["toast"],function(toast){toast(globalize.translate("sharedcomponents#MessageDownloadQueued"))}),focusManager.autoFocus(context)})}function deleteLocalSubtitle(context,index){var msg=globalize.translate("sharedcomponents#MessageAreYouSureDeleteSubtitles");require(["confirm"],function(confirm){confirm({title:globalize.translate("sharedcomponents#ConfirmDeletion"),text:msg,confirmText:globalize.translate("sharedcomponents#Delete"),primary:"cancel"}).then(function(){loading.show();var itemId=currentItem.Id,url="Videos/"+itemId+"/Subtitles/"+index,apiClient=connectionManager.getApiClient(currentItem.ServerId);apiClient.ajax({type:"DELETE",url:apiClient.getUrl(url)}).then(function(){hasChanges=!0,reload(context,apiClient,itemId)})})})}function fillSubtitleList(context,item){var streams=item.MediaStreams||[],subs=streams.filter(function(s){return"Subtitle"===s.Type}),html="";subs.length&&(html+="

"+globalize.translate("sharedcomponents#MySubtitles")+"

",html+=layoutManager.tv?'
':'
',html+=subs.map(function(s){var itemHtml="",tagName=layoutManager.tv?"button":"div",className=layoutManager.tv&&s.Path?"listItem btnDelete":"listItem";return layoutManager.tv&&(className+=" listItem-focusscale listItem-button"),className+=" listItem-noborder",itemHtml+="<"+tagName+' class="'+className+'" data-index="'+s.Index+'">',itemHtml+='closed_caption',itemHtml+='
',itemHtml+="
",itemHtml+=s.DisplayTitle||"",itemHtml+="
",s.Path&&(itemHtml+='
'+s.Path+"
"),itemHtml+="",itemHtml+="
",layoutManager.tv||s.Path&&(itemHtml+=''),itemHtml+=""}).join(""),html+="
");var elem=context.querySelector(".subtitleList");subs.length?elem.classList.remove("hide"):elem.classList.add("hide"),elem.innerHTML=html}function fillLanguages(context,apiClient,languages){var selectLanguage=context.querySelector("#selectLanguage");selectLanguage.innerHTML=languages.map(function(l){return'"});var lastLanguage=userSettings.get("subtitleeditor-language");lastLanguage?selectLanguage.value=lastLanguage:apiClient.getCurrentUser().then(function(user){var lang=user.Configuration.SubtitleLanguagePreference;lang&&(selectLanguage.value=lang)})}function renderSearchResults(context,results){var lastProvider="",html="";if(!results.length)return context.querySelector(".noSearchResults").classList.remove("hide"),context.querySelector(".subtitleResults").innerHTML="",void loading.hide();context.querySelector(".noSearchResults").classList.add("hide");for(var i=0,length=results.length;i0&&(html+="
"),html+="

"+provider+"

",html+=layoutManager.tv?'
':'
',lastProvider=provider);var tagName=layoutManager.tv?"button":"div",className=layoutManager.tv?"listItem btnOptions":"listItem";layoutManager.tv&&(className+=" listItem-focusscale listItem-button"),html+="<"+tagName+' class="'+className+'" data-subid="'+result.Id+'">',html+='closed_caption';var bodyClass=result.Comment||result.IsHashMatch?"three-line":"two-line";html+='
',html+="
"+result.Name+"
",html+='
',result.Format&&(html+=''+globalize.translate("sharedcomponents#FormatValue",result.Format)+""),html+=""+globalize.translate("sharedcomponents#DownloadsValue",result.DownloadCount||0)+"",html+="
",result.Comment&&(html+='
'+result.Comment+"
"),result.IsHashMatch&&(html+='
'+globalize.translate("sharedcomponents#PerfectMatch")+"
"),html+="
",layoutManager.tv||(html+=''),html+=""}results.length&&(html+="
");var elem=context.querySelector(".subtitleResults");elem.innerHTML=html,loading.hide()}function searchForSubtitles(context,language){userSettings.set("subtitleeditor-language",language),loading.show();var apiClient=connectionManager.getApiClient(currentItem.ServerId),url=apiClient.getUrl("Items/"+currentItem.Id+"/RemoteSearch/Subtitles/"+language);apiClient.getJSON(url).then(function(results){renderSearchResults(context,results)})}function reload(context,apiClient,itemId){function onGetItem(item){currentItem=item,fillSubtitleList(context,item);var file=item.Path||"",index=Math.max(file.lastIndexOf("/"),file.lastIndexOf("\\"));index>-1&&(file=file.substring(index+1)),file?(context.querySelector(".pathValue").innerHTML=file,context.querySelector(".originalFile").classList.remove("hide")):(context.querySelector(".pathValue").innerHTML="",context.querySelector(".originalFile").classList.add("hide")),loading.hide()}context.querySelector(".noSearchResults").classList.add("hide"),"string"==typeof itemId?apiClient.getItem(apiClient.getCurrentUserId(),itemId).then(onGetItem):onGetItem(itemId)}function onSearchSubmit(e){var form=this,lang=form.querySelector("#selectLanguage",form).value;return searchForSubtitles(dom.parentWithClass(form,"formDialogContent"),lang),e.preventDefault(),!1}function onSubtitleListClick(e){var btnDelete=dom.parentWithClass(e.target,"btnDelete");if(btnDelete){var index=btnDelete.getAttribute("data-index"),context=dom.parentWithClass(btnDelete,"subtitleEditorDialog");deleteLocalSubtitle(context,index)}}function onSubtitleResultsClick(e){var subtitleId,context,btnOptions=dom.parentWithClass(e.target,"btnOptions");btnOptions&&(subtitleId=btnOptions.getAttribute("data-subid"),context=dom.parentWithClass(btnOptions,"subtitleEditorDialog"),showDownloadOptions(btnOptions,context,subtitleId));var btnDownload=dom.parentWithClass(e.target,"btnDownload");btnDownload&&(subtitleId=btnDownload.getAttribute("data-subid"),context=dom.parentWithClass(btnDownload,"subtitleEditorDialog"),downloadRemoteSubtitles(context,subtitleId))}function showDownloadOptions(button,context,subtitleId){var items=[];items.push({name:Globalize.translate("sharedcomponents#Download"),id:"download"}),require(["actionsheet"],function(actionsheet){actionsheet.show({items:items,positionTo:button}).then(function(id){switch(id){case"download":downloadRemoteSubtitles(context,subtitleId)}})})}function centerFocus(elem,horiz,on){require(["scrollHelper"],function(scrollHelper){var fn=on?"on":"off";scrollHelper.centerFocus[fn](elem,horiz)})}function showEditorInternal(itemId,serverId,template){hasChanges=!1;var apiClient=connectionManager.getApiClient(serverId);return apiClient.getItem(apiClient.getCurrentUserId(),itemId).then(function(item){var dialogOptions={removeOnClose:!0,scrollY:!1};layoutManager.tv?dialogOptions.size="fullscreen":dialogOptions.size="small";var dlg=dialogHelper.createDialog(dialogOptions);dlg.classList.add("formDialog"),dlg.classList.add("subtitleEditorDialog"),dlg.innerHTML=globalize.translateDocument(template,"sharedcomponents"),dlg.querySelector(".originalSubtitleFileLabel").innerHTML=globalize.translate("sharedcomponents#File"),dlg.querySelector(".subtitleSearchForm").addEventListener("submit",onSearchSubmit);var btnSubmit=dlg.querySelector(".btnSubmit");layoutManager.tv?(centerFocus(dlg.querySelector(".formDialogContent"),!1,!0),dlg.querySelector(".btnSearchSubtitles").classList.add("hide")):btnSubmit.classList.add("hide");var editorContent=dlg.querySelector(".formDialogContent");return dlg.querySelector(".subtitleList").addEventListener("click",onSubtitleListClick),dlg.querySelector(".subtitleResults").addEventListener("click",onSubtitleResultsClick),apiClient.getCultures().then(function(languages){fillLanguages(editorContent,apiClient,languages)}),dlg.querySelector(".btnCancel").addEventListener("click",function(){dialogHelper.close(dlg)}),new Promise(function(resolve,reject){dlg.addEventListener("close",function(){layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!1),hasChanges?resolve():reject()}),dialogHelper.open(dlg),reload(editorContent,apiClient,item)})})}function showEditor(itemId,serverId){return loading.show(),new Promise(function(resolve,reject){require(["text!./subtitleeditor.template.html"],function(template){showEditorInternal(itemId,serverId,template).then(resolve,reject)})})}var currentItem,hasChanges;return{show:showEditor}}); \ No newline at end of file +define(["dialogHelper","require","layoutManager","globalize","userSettings","connectionManager","loading","focusManager","dom","apphost","emby-select","listViewStyle","paper-icon-button-light","css!./../formdialog","material-icons","css!./subtitleeditor","emby-button","flexStyles"],function(dialogHelper,require,layoutManager,globalize,userSettings,connectionManager,loading,focusManager,dom,appHost){"use strict";function downloadRemoteSubtitles(context,id){var url="Items/"+currentItem.Id+"/RemoteSearch/Subtitles/"+id,apiClient=connectionManager.getApiClient(currentItem.ServerId);apiClient.ajax({type:"POST",url:apiClient.getUrl(url)}).then(function(){hasChanges=!0,require(["toast"],function(toast){toast(globalize.translate("sharedcomponents#MessageDownloadQueued"))}),focusManager.autoFocus(context)})}function deleteLocalSubtitle(context,index){var msg=globalize.translate("sharedcomponents#MessageAreYouSureDeleteSubtitles");require(["confirm"],function(confirm){confirm({title:globalize.translate("sharedcomponents#ConfirmDeletion"),text:msg,confirmText:globalize.translate("sharedcomponents#Delete"),primary:"cancel"}).then(function(){loading.show();var itemId=currentItem.Id,url="Videos/"+itemId+"/Subtitles/"+index,apiClient=connectionManager.getApiClient(currentItem.ServerId);apiClient.ajax({type:"DELETE",url:apiClient.getUrl(url)}).then(function(){hasChanges=!0,reload(context,apiClient,itemId)})})})}function fillSubtitleList(context,item){var streams=item.MediaStreams||[],subs=streams.filter(function(s){return"Subtitle"===s.Type}),html="";subs.length&&(html+="

"+globalize.translate("sharedcomponents#MySubtitles")+"

",html+=layoutManager.tv?'
':'
',html+=subs.map(function(s){var itemHtml="",tagName=layoutManager.tv?"button":"div",className=layoutManager.tv&&s.Path?"listItem btnDelete":"listItem";return layoutManager.tv&&(className+=" listItem-focusscale listItem-button"),className+=" listItem-noborder",itemHtml+="<"+tagName+' class="'+className+'" data-index="'+s.Index+'">',itemHtml+='closed_caption',itemHtml+='
',itemHtml+="
",itemHtml+=s.DisplayTitle||"",itemHtml+="
",s.Path&&(itemHtml+='
'+s.Path+"
"),itemHtml+="",itemHtml+="
",layoutManager.tv||s.Path&&(itemHtml+=''),itemHtml+=""}).join(""),html+="
");var elem=context.querySelector(".subtitleList");subs.length?elem.classList.remove("hide"):elem.classList.add("hide"),elem.innerHTML=html}function fillLanguages(context,apiClient,languages){var selectLanguage=context.querySelector("#selectLanguage");selectLanguage.innerHTML=languages.map(function(l){return'"});var lastLanguage=userSettings.get("subtitleeditor-language");lastLanguage?selectLanguage.value=lastLanguage:apiClient.getCurrentUser().then(function(user){var lang=user.Configuration.SubtitleLanguagePreference;lang&&(selectLanguage.value=lang)})}function renderSearchResults(context,results){var lastProvider="",html="";if(!results.length)return context.querySelector(".noSearchResults").classList.remove("hide"),context.querySelector(".subtitleResults").innerHTML="",void loading.hide();context.querySelector(".noSearchResults").classList.add("hide");for(var i=0,length=results.length;i0&&(html+="
"),html+="

"+provider+"

",html+=layoutManager.tv?'
':'
',lastProvider=provider);var tagName=layoutManager.tv?"button":"div",className=layoutManager.tv?"listItem btnOptions":"listItem";layoutManager.tv&&(className+=" listItem-focusscale listItem-button"),html+="<"+tagName+' class="'+className+'" data-subid="'+result.Id+'">',html+='closed_caption';var bodyClass=result.Comment||result.IsHashMatch?"three-line":"two-line";html+='
',html+="
"+result.Name+"
",html+='
',result.Format&&(html+=''+globalize.translate("sharedcomponents#FormatValue",result.Format)+""),html+=""+globalize.translate("sharedcomponents#DownloadsValue",result.DownloadCount||0)+"",html+="
",result.Comment&&(html+='
'+result.Comment+"
"),result.IsHashMatch&&(html+='
'+globalize.translate("sharedcomponents#PerfectMatch")+"
"),html+="
",layoutManager.tv||(html+=''),html+=""}results.length&&(html+="
");var elem=context.querySelector(".subtitleResults");elem.innerHTML=html,loading.hide()}function searchForSubtitles(context,language){userSettings.set("subtitleeditor-language",language),loading.show();var apiClient=connectionManager.getApiClient(currentItem.ServerId),url=apiClient.getUrl("Items/"+currentItem.Id+"/RemoteSearch/Subtitles/"+language);apiClient.getJSON(url).then(function(results){renderSearchResults(context,results)})}function reload(context,apiClient,itemId){function onGetItem(item){currentItem=item,fillSubtitleList(context,item);var file=item.Path||"",index=Math.max(file.lastIndexOf("/"),file.lastIndexOf("\\"));index>-1&&(file=file.substring(index+1)),file?(context.querySelector(".pathValue").innerHTML=file,context.querySelector(".originalFile").classList.remove("hide")):(context.querySelector(".pathValue").innerHTML="",context.querySelector(".originalFile").classList.add("hide")),loading.hide()}context.querySelector(".noSearchResults").classList.add("hide"),"string"==typeof itemId?apiClient.getItem(apiClient.getCurrentUserId(),itemId).then(onGetItem):onGetItem(itemId)}function onSearchSubmit(e){var form=this,lang=form.querySelector("#selectLanguage",form).value;return searchForSubtitles(dom.parentWithClass(form,"formDialogContent"),lang),e.preventDefault(),!1}function onSubtitleListClick(e){var btnDelete=dom.parentWithClass(e.target,"btnDelete");if(btnDelete){var index=btnDelete.getAttribute("data-index"),context=dom.parentWithClass(btnDelete,"subtitleEditorDialog");deleteLocalSubtitle(context,index)}}function onSubtitleResultsClick(e){var subtitleId,context,btnOptions=dom.parentWithClass(e.target,"btnOptions");btnOptions&&(subtitleId=btnOptions.getAttribute("data-subid"),context=dom.parentWithClass(btnOptions,"subtitleEditorDialog"),showDownloadOptions(btnOptions,context,subtitleId));var btnDownload=dom.parentWithClass(e.target,"btnDownload");btnDownload&&(subtitleId=btnDownload.getAttribute("data-subid"),context=dom.parentWithClass(btnDownload,"subtitleEditorDialog"),downloadRemoteSubtitles(context,subtitleId))}function showDownloadOptions(button,context,subtitleId){var items=[];items.push({name:Globalize.translate("sharedcomponents#Download"),id:"download"}),require(["actionsheet"],function(actionsheet){actionsheet.show({items:items,positionTo:button}).then(function(id){switch(id){case"download":downloadRemoteSubtitles(context,subtitleId)}})})}function centerFocus(elem,horiz,on){require(["scrollHelper"],function(scrollHelper){var fn=on?"on":"off";scrollHelper.centerFocus[fn](elem,horiz)})}function showEditorInternal(itemId,serverId,template){hasChanges=!1;var apiClient=connectionManager.getApiClient(serverId);return apiClient.getItem(apiClient.getCurrentUserId(),itemId).then(function(item){var dialogOptions={removeOnClose:!0,scrollY:!1};layoutManager.tv?dialogOptions.size="fullscreen":dialogOptions.size="small";var dlg=dialogHelper.createDialog(dialogOptions);dlg.classList.add("formDialog"),dlg.classList.add("subtitleEditorDialog"),dlg.innerHTML=globalize.translateDocument(template,"sharedcomponents"),dlg.querySelector(".originalSubtitleFileLabel").innerHTML=globalize.translate("sharedcomponents#File"),dlg.querySelector(".subtitleSearchForm").addEventListener("submit",onSearchSubmit);var btnSubmit=dlg.querySelector(".btnSubmit");layoutManager.tv?(centerFocus(dlg.querySelector(".formDialogContent"),!1,!0),dlg.querySelector(".btnSearchSubtitles").classList.add("hide")):btnSubmit.classList.add("hide");var editorContent=dlg.querySelector(".formDialogContent");return dlg.querySelector(".subtitleList").addEventListener("click",onSubtitleListClick),dlg.querySelector(".subtitleResults").addEventListener("click",onSubtitleResultsClick),apiClient.getCultures().then(function(languages){fillLanguages(editorContent,apiClient,languages)}),dlg.querySelector(".btnCancel").addEventListener("click",function(){dialogHelper.close(dlg)}),new Promise(function(resolve,reject){dlg.addEventListener("close",function(){layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!1),hasChanges?resolve():reject()}),dialogHelper.open(dlg),reload(editorContent,apiClient,item)})})}function showEditor(itemId,serverId){return loading.show(),new Promise(function(resolve,reject){require(["text!./subtitleeditor.template.html"],function(template){showEditorInternal(itemId,serverId,template).then(resolve,reject)})})}var currentItem,hasChanges;return{show:showEditor}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/subtitleeditor/subtitleeditor.template.html b/dashboard-ui/bower_components/emby-webcomponents/subtitleeditor/subtitleeditor.template.html index 061bf11f5c..7bdab97b3c 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/subtitleeditor/subtitleeditor.template.html +++ b/dashboard-ui/bower_components/emby-webcomponents/subtitleeditor/subtitleeditor.template.html @@ -9,7 +9,7 @@
-

${SearchForSubtitles}

+

${SearchForSubtitles}

diff --git a/dashboard-ui/components/libraryoptionseditor/libraryoptionseditor.template.html b/dashboard-ui/components/libraryoptionseditor/libraryoptionseditor.template.html index e0fc0e30d2..db1e216187 100644 --- a/dashboard-ui/components/libraryoptionseditor/libraryoptionseditor.template.html +++ b/dashboard-ui/components/libraryoptionseditor/libraryoptionseditor.template.html @@ -1,4 +1,4 @@ -

${HeaderLibrarySettings}

+

${HeaderLibrarySettings}

-

${HeaderChapterSettings}

+

${HeaderChapterSettings}

-

${HeadersFolders}

+

${HeadersFolders}

",html+="
"}html+="
",html+=virtualFolder.showNameWithIcon?" ":virtualFolder.Name,html+="
";var typeName=getCollectionTypeOptions().filter(function(t){return t.value==virtualFolder.CollectionType})[0];return typeName=typeName?typeName.name:globalize.translate("FolderTypeUnset"),html+="
",html+=virtualFolder.showType===!1?" ":typeName,html+="
",virtualFolder.showLocations===!1?(html+="
",html+=" ",html+="
"):virtualFolder.Locations.length&&1==virtualFolder.Locations.length?(html+="
",html+=virtualFolder.Locations[0],html+="
"):(html+="
",html+=globalize.translate("NumLocationsValue",virtualFolder.Locations.length),html+="
"),html+="
",html+="
",html+="
"}function getTabs(){return[{href:"library.html",name:globalize.translate("HeaderLibraries")},{href:"librarydisplay.html",name:globalize.translate("TabDisplay")},{href:"metadataimages.html",name:globalize.translate("TabMetadata")},{href:"metadatanfo.html",name:globalize.translate("TabNfoSettings")},{href:"librarysettings.html",name:globalize.translate("TabAdvanced")}]}window.WizardLibraryPage={next:function(){loading.show();var apiClient=ApiClient;apiClient.ajax({type:"POST",url:apiClient.getUrl("System/Configuration/MetadataPlugins/Autoset")}).then(function(){loading.hide(),Dashboard.navigate("wizardsettings.html")})}},pageClassOn("pageshow","mediaLibraryPage",function(){var page=this;reloadLibrary(page)}),pageIdOn("pageshow","mediaLibraryPage",function(){libraryMenu.setTabs("librarysetup",0,getTabs);var page=this;taskButton({mode:"on",progressElem:page.querySelector(".refreshProgress"),taskKey:"RefreshLibrary",button:page.querySelector(".btnRefresh")})}),pageIdOn("pagebeforehide","mediaLibraryPage",function(){var page=this;taskButton({mode:"off",progressElem:page.querySelector(".refreshProgress"),taskKey:"RefreshLibrary",button:page.querySelector(".btnRefresh")})})}); \ No newline at end of file +define(["jQuery","apphost","scripts/taskbutton","loading","libraryMenu","globalize","dom","indicators","cardStyle","emby-itemrefreshindicator"],function($,appHost,taskButton,loading,libraryMenu,globalize,dom,indicators){"use strict";function changeCollectionType(page,virtualFolder){require(["alert"],function(alert){alert({title:globalize.translate("HeaderChangeFolderType"),text:globalize.translate("HeaderChangeFolderTypeHelp")})})}function addVirtualFolder(page){require(["medialibrarycreator"],function(medialibrarycreator){(new medialibrarycreator).show({collectionTypeOptions:getCollectionTypeOptions().filter(function(f){return!f.hidden}),refresh:shouldRefreshLibraryAfterChanges(page)}).then(function(hasChanges){hasChanges&&reloadLibrary(page)})})}function editVirtualFolder(page,virtualFolder){require(["medialibraryeditor"],function(medialibraryeditor){(new medialibraryeditor).show({refresh:shouldRefreshLibraryAfterChanges(page),library:virtualFolder}).then(function(hasChanges){hasChanges&&reloadLibrary(page)})})}function deleteVirtualFolder(page,virtualFolder){var msg=globalize.translate("MessageAreYouSureYouWishToRemoveMediaFolder");virtualFolder.Locations.length&&(msg+="

"+globalize.translate("MessageTheFollowingLocationWillBeRemovedFromLibrary")+"

",msg+=virtualFolder.Locations.join("
")),require(["confirm"],function(confirm){confirm(msg,globalize.translate("HeaderRemoveMediaFolder")).then(function(){var refreshAfterChange=shouldRefreshLibraryAfterChanges(page);ApiClient.removeVirtualFolder(virtualFolder.Name,refreshAfterChange).then(function(){reloadLibrary(page)})})})}function refreshVirtualFolder(page,virtualFolder){require(["refreshDialog"],function(refreshDialog){new refreshDialog({itemIds:[virtualFolder.ItemId],serverId:ApiClient.serverId(),mode:"scan"}).show()})}function renameVirtualFolder(page,virtualFolder){require(["prompt"],function(prompt){prompt({label:globalize.translate("LabelNewName"),confirmText:globalize.translate("ButtonRename")}).then(function(newName){if(newName&&newName!=virtualFolder.Name){var refreshAfterChange=shouldRefreshLibraryAfterChanges(page);ApiClient.renameVirtualFolder(virtualFolder.Name,newName,refreshAfterChange).then(function(){reloadLibrary(page)})}})})}function showCardMenu(page,elem,virtualFolders){var card=dom.parentWithClass(elem,"card"),index=parseInt(card.getAttribute("data-index")),virtualFolder=virtualFolders[index],menuItems=[];menuItems.push({name:globalize.translate("ButtonChangeContentType"),id:"changetype",ironIcon:"videocam"}),menuItems.push({name:globalize.translate("ButtonEditImages"),id:"editimages",ironIcon:"photo"}),menuItems.push({name:globalize.translate("ButtonManageFolders"),id:"edit",ironIcon:"folder_open"}),menuItems.push({name:globalize.translate("ButtonRemove"),id:"delete",ironIcon:"remove"}),menuItems.push({name:globalize.translate("ButtonRename"),id:"rename",ironIcon:"mode_edit"}),menuItems.push({name:globalize.translate("ScanLibrary"),id:"refresh",ironIcon:"refresh"}),require(["actionsheet"],function(actionsheet){actionsheet.show({items:menuItems,positionTo:elem,callback:function(resultId){switch(resultId){case"changetype":changeCollectionType(page,virtualFolder);break;case"edit":editVirtualFolder(page,virtualFolder);break;case"editimages":editImages(page,virtualFolder);break;case"rename":renameVirtualFolder(page,virtualFolder);break;case"delete":deleteVirtualFolder(page,virtualFolder);break;case"refresh":refreshVirtualFolder(page,virtualFolder)}}})})}function reloadLibrary(page){loading.show(),ApiClient.getVirtualFolders().then(function(result){reloadVirtualFolders(page,result)})}function shouldRefreshLibraryAfterChanges(page){return"mediaLibraryPage"===page.id}function reloadVirtualFolders(page,virtualFolders){var html="";virtualFolders.push({Name:globalize.translate("ButtonAddMediaLibrary"),icon:"add_circle",Locations:[],showType:!1,showLocations:!1,showMenu:!1,showNameWithIcon:!0});for(var i=0,length=virtualFolders.length;i',"")}function getCollectionTypeOptions(){return[{name:"",value:""},{name:globalize.translate("FolderTypeMovies"),value:"movies",message:getLink("MovieLibraryHelp","https://github.com/MediaBrowser/Wiki/wiki/Movie%20naming")},{name:globalize.translate("FolderTypeMusic"),value:"music"},{name:globalize.translate("FolderTypeTvShows"),value:"tvshows",message:getLink("TvLibraryHelp","https://github.com/MediaBrowser/Wiki/wiki/TV%20naming")},{name:globalize.translate("FolderTypeBooks"),value:"books",message:globalize.translate("BookLibraryHelp")},{name:globalize.translate("FolderTypeGames"),value:"games",message:globalize.translate("MessageGamePluginRequired")},{name:globalize.translate("OptionHomeVideos"),value:"homevideos"},{name:globalize.translate("FolderTypeMusicVideos"),value:"musicvideos"},{name:globalize.translate("FolderTypeUnset"),value:"mixed",message:globalize.translate("MessageUnsetContentHelp")}]}function getIcon(type){switch(type){case"movies":return"local_movies";case"music":return"library_music";case"photos":return"photo";case"livetv":return"live_tv";case"tvshows":return"live_tv";case"games":return"folder";case"trailers":return"local_movies";case"homevideos":return"video_library";case"musicvideos":return"video_library";case"books":return"folder";case"channels":return"folder";case"playlists":return"folder";default:return"folder"}}function getVirtualFolderHtml(page,virtualFolder,index){var html="",style="";page.classList.contains("wizardPage")&&(style+="min-width:33.3%;"),html+='
',html+='
',html+='
',html+='
',html+='
';var imgUrl="";virtualFolder.PrimaryImageItemId&&(imgUrl=ApiClient.getScaledImageUrl(virtualFolder.PrimaryImageItemId,{type:"Primary"}));var hasCardImageContainer;if(imgUrl?(html+='
",hasCardImageContainer=!0):virtualFolder.showNameWithIcon||(html+='
',html+=''+(virtualFolder.icon||getIcon(virtualFolder.CollectionType))+"",hasCardImageContainer=!0),hasCardImageContainer){html+='
';var refreshClass=virtualFolder.RefreshProgress||virtualFolder.RefreshStatus&&"Idle"!==virtualFolder.RefreshStatus?"":' class="hide"';html+='
',html+="
",html+="
"}if(!imgUrl&&virtualFolder.showNameWithIcon&&(html+='

',html+=''+(virtualFolder.icon||getIcon(virtualFolder.CollectionType))+"",virtualFolder.showNameWithIcon&&(html+='
',html+=virtualFolder.Name,html+="
"),html+="

"),html+="
",html+="
",html+='
',virtualFolder.showMenu!==!1){var moreIcon="dots-horiz"==appHost.moreIcon?"":"";html+='
',html+='",html+="
"}html+="
",html+=virtualFolder.showNameWithIcon?" ":virtualFolder.Name,html+="
";var typeName=getCollectionTypeOptions().filter(function(t){return t.value==virtualFolder.CollectionType})[0];return typeName=typeName?typeName.name:globalize.translate("FolderTypeUnset"),html+="
",html+=virtualFolder.showType===!1?" ":typeName,html+="
",virtualFolder.showLocations===!1?(html+="
",html+=" ",html+="
"):virtualFolder.Locations.length&&1==virtualFolder.Locations.length?(html+="
",html+=virtualFolder.Locations[0],html+="
"):(html+="
",html+=globalize.translate("NumLocationsValue",virtualFolder.Locations.length),html+="
"),html+="
",html+="
",html+="
"}function getTabs(){return[{href:"library.html",name:globalize.translate("HeaderLibraries")},{href:"librarydisplay.html",name:globalize.translate("TabDisplay")},{href:"metadataimages.html",name:globalize.translate("TabMetadata")},{href:"metadatanfo.html",name:globalize.translate("TabNfoSettings")},{href:"librarysettings.html",name:globalize.translate("TabAdvanced")}]}window.WizardLibraryPage={next:function(){loading.show();var apiClient=ApiClient;apiClient.ajax({type:"POST",url:apiClient.getUrl("System/Configuration/MetadataPlugins/Autoset")}).then(function(){loading.hide(),Dashboard.navigate("wizardsettings.html")})}},pageClassOn("pageshow","mediaLibraryPage",function(){var page=this;reloadLibrary(page)}),pageIdOn("pageshow","mediaLibraryPage",function(){libraryMenu.setTabs("librarysetup",0,getTabs);var page=this;taskButton({mode:"on",progressElem:page.querySelector(".refreshProgress"),taskKey:"RefreshLibrary",button:page.querySelector(".btnRefresh")})}),pageIdOn("pagebeforehide","mediaLibraryPage",function(){var page=this;taskButton({mode:"off",progressElem:page.querySelector(".refreshProgress"),taskKey:"RefreshLibrary",button:page.querySelector(".btnRefresh")})})}); \ No newline at end of file diff --git a/dashboard-ui/scripts/notificationsettings.js b/dashboard-ui/scripts/notificationsettings.js index 15ee63cdb1..fc7fd19713 100644 --- a/dashboard-ui/scripts/notificationsettings.js +++ b/dashboard-ui/scripts/notificationsettings.js @@ -1 +1 @@ -define(["loading","libraryMenu","listViewStyle","emby-linkbutton"],function(loading,libraryMenu){"use strict";function reload(page){loading.show(),ApiClient.getJSON(ApiClient.getUrl("Notifications/Types")).then(function(list){var html="",lastCategory="";html+=list.map(function(i){var itemHtml="";return i.Category!=lastCategory&&(lastCategory=i.Category,lastCategory&&(itemHtml+="
"),itemHtml+="

",itemHtml+=i.Category,itemHtml+="

",itemHtml+='"),page.querySelector(".notificationList").innerHTML=html,loading.hide()})}function getTabs(){return[{href:"notificationsettings.html",name:Globalize.translate("TabNotifications")},{href:"appservices.html?context=notifications",name:Globalize.translate("TabServices")}]}return function(view,params){view.addEventListener("viewshow",function(){libraryMenu.setTabs("notifications",0,getTabs),reload(view)})}}); \ No newline at end of file +define(["loading","libraryMenu","listViewStyle","emby-linkbutton"],function(loading,libraryMenu){"use strict";function reload(page){loading.show(),ApiClient.getJSON(ApiClient.getUrl("Notifications/Types")).then(function(list){var html="",lastCategory="";html+=list.map(function(i){var itemHtml="";return i.Category!=lastCategory&&(lastCategory=i.Category,lastCategory&&(itemHtml+="
"),itemHtml+="

",itemHtml+=i.Category,itemHtml+="

",itemHtml+='"),page.querySelector(".notificationList").innerHTML=html,loading.hide()})}function getTabs(){return[{href:"notificationsettings.html",name:Globalize.translate("TabNotifications")},{href:"appservices.html?context=notifications",name:Globalize.translate("TabServices")}]}return function(view,params){view.addEventListener("viewshow",function(){libraryMenu.setTabs("notifications",0,getTabs),reload(view)})}}); \ No newline at end of file diff --git a/dashboard-ui/scripts/plugincatalogpage.js b/dashboard-ui/scripts/plugincatalogpage.js index 8597d3d36b..855c91c798 100644 --- a/dashboard-ui/scripts/plugincatalogpage.js +++ b/dashboard-ui/scripts/plugincatalogpage.js @@ -1 +1 @@ -define(["jQuery","loading","libraryMenu","cardStyle","emby-linkbutton"],function($,loading,libraryMenu){"use strict";function reloadList(page){loading.show(),query.IsAppStoreSafe=!0;var promise1=ApiClient.getAvailablePlugins(query),promise2=ApiClient.getInstalledPlugins();Promise.all([promise1,promise2]).then(function(responses){populateList({catalogElement:$("#pluginTiles",page),noItemsElement:$("#noPlugins",page),availablePlugins:responses[0],installedPlugins:responses[1]})})}function populateList(options){populateListInternal(options)}function populateListInternal(options){var availablePlugins=options.availablePlugins,installedPlugins=options.installedPlugins,allPlugins=availablePlugins.filter(function(p){return p.category=p.category||"General",p.categoryDisplayName=Globalize.translate("PluginCategory"+p.category.replace(" ","")),(!options.categories||options.categories.indexOf(p.category)!=-1)&&((!options.targetSystem||p.targetSystem==options.targetSystem)&&"UserInstalled"==p.type)});availablePlugins=allPlugins.sort(function(a,b){var aName=a.category,bName=b.category;return aName>bName?1:bName>aName?-1:(aName=a.name,bName=b.name,aName>bName?1:bName>aName?-1:0)});var i,length,plugin,currentCategory,html="";if(!options.categories){currentCategory=Globalize.translate("HeaderTopPlugins"),html+='

'+currentCategory+"

";var topPlugins=allPlugins.slice(0).sort(function(a,b){if(a.installs>b.installs)return-1;if(b.installs>a.installs)return 1;var aName=a.name,bName=b.name;return aName>bName?1:bName>aName?-1:0});html+='
';var limit=screen.availWidth>=1920?15:12;for(i=0,length=Math.min(topPlugins.length,limit);i",html+="
",html+="
"}var hasOpenTag=!1;for(currentCategory=null,options.showCategory===!1&&(html+='
',hasOpenTag=!0),i=0,length=availablePlugins.length;i",html+="
",html+="
"),html+='

'+category+"

",html+='
',hasOpenTag=!0),currentCategory=category),html+=getPluginHtml(plugin,options,installedPlugins)}hasOpenTag&&(html+="
"),!availablePlugins.length&&options.noItemsElement&&$(options.noItemsElement).hide(),$(options.catalogElement).html(html),loading.hide()}function getPluginHtml(plugin,options,installedPlugins){var html="",href=plugin.externalUrl?plugin.externalUrl:"addplugin.html?name="+encodeURIComponent(plugin.name)+"&guid="+plugin.guid;options.context&&(href+="&context="+options.context);var target=plugin.externalUrl?' target="_blank"':"";html+="
",html+='
',html+='
',html+='
',html+='",html+=plugin.thumbImage?'",html+='
',html+="
",html+=plugin.name,html+="
";var installedPlugin=plugin.isApp?null:installedPlugins.filter(function(ip){return ip.Id==plugin.guid})[0];return html+="
",html+=installedPlugin?Globalize.translate("LabelVersionInstalled").replace("{0}",installedPlugin.Version):" ",html+="
",html+="
",html+="
",html+="
"}function getTabs(){return[{href:"plugins.html",name:Globalize.translate("TabMyPlugins")},{href:"plugincatalog.html",name:Globalize.translate("TabCatalog")}]}var query={TargetSystems:"Server",IsAdult:!1};$(document).on("pageinit","#pluginCatalogPage",function(){var page=this;$("#selectSystem",page).on("change",function(){query.TargetSystems=this.value,reloadList(page)})}).on("pageshow","#pluginCatalogPage",function(){libraryMenu.setTabs("plugins",1,getTabs);var page=this;reloadList(page)}),window.PluginCatalog={renderCatalog:populateList}}); \ No newline at end of file +define(["jQuery","loading","libraryMenu","cardStyle","emby-linkbutton"],function($,loading,libraryMenu){"use strict";function reloadList(page){loading.show(),query.IsAppStoreSafe=!0;var promise1=ApiClient.getAvailablePlugins(query),promise2=ApiClient.getInstalledPlugins();Promise.all([promise1,promise2]).then(function(responses){populateList({catalogElement:$("#pluginTiles",page),noItemsElement:$("#noPlugins",page),availablePlugins:responses[0],installedPlugins:responses[1]})})}function populateList(options){populateListInternal(options)}function populateListInternal(options){var availablePlugins=options.availablePlugins,installedPlugins=options.installedPlugins,allPlugins=availablePlugins.filter(function(p){return p.category=p.category||"General",p.categoryDisplayName=Globalize.translate("PluginCategory"+p.category.replace(" ","")),(!options.categories||options.categories.indexOf(p.category)!=-1)&&((!options.targetSystem||p.targetSystem==options.targetSystem)&&"UserInstalled"==p.type)});availablePlugins=allPlugins.sort(function(a,b){var aName=a.category,bName=b.category;return aName>bName?1:bName>aName?-1:(aName=a.name,bName=b.name,aName>bName?1:bName>aName?-1:0)});var i,length,plugin,currentCategory,html="";if(!options.categories){currentCategory=Globalize.translate("HeaderTopPlugins"),html+='

'+currentCategory+"

";var topPlugins=allPlugins.slice(0).sort(function(a,b){if(a.installs>b.installs)return-1;if(b.installs>a.installs)return 1;var aName=a.name,bName=b.name;return aName>bName?1:bName>aName?-1:0});html+='
';var limit=screen.availWidth>=1920?15:12;for(i=0,length=Math.min(topPlugins.length,limit);i",html+="
",html+="
"}var hasOpenTag=!1;for(currentCategory=null,options.showCategory===!1&&(html+='
',hasOpenTag=!0),i=0,length=availablePlugins.length;i",html+="
",html+="
"),html+='

'+category+"

",html+='
',hasOpenTag=!0),currentCategory=category),html+=getPluginHtml(plugin,options,installedPlugins)}hasOpenTag&&(html+="
"),!availablePlugins.length&&options.noItemsElement&&$(options.noItemsElement).hide(),$(options.catalogElement).html(html),loading.hide()}function getPluginHtml(plugin,options,installedPlugins){var html="",href=plugin.externalUrl?plugin.externalUrl:"addplugin.html?name="+encodeURIComponent(plugin.name)+"&guid="+plugin.guid;options.context&&(href+="&context="+options.context);var target=plugin.externalUrl?' target="_blank"':"";html+="
",html+='
',html+='
',html+='
',html+='",html+=plugin.thumbImage?'",html+='
',html+="
",html+=plugin.name,html+="
";var installedPlugin=plugin.isApp?null:installedPlugins.filter(function(ip){return ip.Id==plugin.guid})[0];return html+="
",html+=installedPlugin?Globalize.translate("LabelVersionInstalled").replace("{0}",installedPlugin.Version):" ",html+="
",html+="
",html+="
",html+="
"}function getTabs(){return[{href:"plugins.html",name:Globalize.translate("TabMyPlugins")},{href:"plugincatalog.html",name:Globalize.translate("TabCatalog")}]}var query={TargetSystems:"Server",IsAdult:!1};$(document).on("pageinit","#pluginCatalogPage",function(){var page=this;$("#selectSystem",page).on("change",function(){query.TargetSystems=this.value,reloadList(page)})}).on("pageshow","#pluginCatalogPage",function(){libraryMenu.setTabs("plugins",1,getTabs);var page=this;reloadList(page)}),window.PluginCatalog={renderCatalog:populateList}}); \ No newline at end of file diff --git a/dashboard-ui/scripts/scheduledtaskspage.js b/dashboard-ui/scripts/scheduledtaskspage.js index 6283e7d238..69d3fd43c2 100644 --- a/dashboard-ui/scripts/scheduledtaskspage.js +++ b/dashboard-ui/scripts/scheduledtaskspage.js @@ -1 +1 @@ -define(["jQuery","loading","events","globalize","serverNotifications","humanedate","listViewStyle","emby-linkbutton"],function($,loading,events,globalize,serverNotifications){"use strict";function reloadList(page){ApiClient.getScheduledTasks({isHidden:!1}).then(function(tasks){populateList(page,tasks),loading.hide()})}function populateList(page,tasks){tasks=tasks.sort(function(a,b){return a=a.Category+" "+a.Name,b=b.Category+" "+b.Name,a==b?0:a",html+="
"),html+='
',html+="

",html+=currentCategory,html+="

",html+='
'),html+='
',html+="",html+='schedule',html+="",html+='",html+="Idle"==task.State?'':"Running"==task.State?'':'',html+="
"}tasks.length&&(html+="
",html+="
");var divScheduledTasks=page.querySelector(".divScheduledTasks");divScheduledTasks.innerHTML=html}function humane_elapsed(firstDateStr,secondDateStr){var dt1=new Date(firstDateStr),dt2=new Date(secondDateStr),seconds=(dt2.getTime()-dt1.getTime())/1e3,numdays=Math.floor(seconds%31536e3/86400),numhours=Math.floor(seconds%31536e3%86400/3600),numminutes=Math.floor(seconds%31536e3%86400%3600/60),numseconds=Math.round(seconds%31536e3%86400%3600%60),elapsedStr="";return elapsedStr+=1==numdays?numdays+" day ":"",elapsedStr+=numdays>1?numdays+" days ":"",elapsedStr+=1==numhours?numhours+" hour ":"",elapsedStr+=numhours>1?numhours+" hours ":"",elapsedStr+=1==numminutes?numminutes+" minute ":"",elapsedStr+=numminutes>1?numminutes+" minutes ":"",elapsedStr+=elapsedStr.length>0?"and ":"",elapsedStr+=1==numseconds?numseconds+" second":"",elapsedStr+=0==numseconds||numseconds>1?numseconds+" seconds":""}function getTaskProgressHtml(task){var html="";if("Idle"==task.State)task.LastExecutionResult&&(html+=globalize.translate("LabelScheduledTaskLastRan").replace("{0}",humane_date(task.LastExecutionResult.EndTimeUtc)).replace("{1}",humane_elapsed(task.LastExecutionResult.StartTimeUtc,task.LastExecutionResult.EndTimeUtc)),"Failed"==task.LastExecutionResult.Status?html+=" ("+globalize.translate("LabelFailed")+")":"Cancelled"==task.LastExecutionResult.Status?html+=" ("+globalize.translate("LabelCancelled")+")":"Aborted"==task.LastExecutionResult.Status&&(html+=" "+globalize.translate("LabelAbortedByServerShutdown")+""));else if("Running"==task.State){var progress=(task.CurrentProgressPercentage||0).toFixed(1);html+='
',html+='
',html+='
',html+="
",html+="
",html+=""+progress+"%",html+="
"}else html+=""+globalize.translate("LabelStopping")+"";return html}function updateTaskButton(elem,state){"Idle"==state?(elem.classList.add("btnStartTask"),elem.classList.remove("btnStopTask"),elem.classList.remove("hide"),elem.querySelector("i").innerHTML="play_arrow",elem.title=globalize.translate("ButtonStart")):"Running"==state?(elem.classList.remove("btnStartTask"),elem.classList.add("btnStopTask"),elem.classList.remove("hide"),elem.querySelector("i").innerHTML="stop",elem.title=globalize.translate("ButtonStop")):(elem.classList.add("btnStartTask"),elem.classList.remove("btnStopTask"),elem.classList.add("hide"),elem.querySelector("i").innerHTML="play_arrow",elem.title=globalize.translate("ButtonStart"));var item=$(elem).parents(".listItem")[0];item.setAttribute("data-status",state)}return function(view,params){function updateTasks(tasks){for(var i=0,length=tasks.length;i",html+="
"),html+='
',html+="

",html+=currentCategory,html+="

",html+='
'),html+='
',html+="",html+='schedule',html+="",html+='",html+="Idle"==task.State?'':"Running"==task.State?'':'',html+="
"}tasks.length&&(html+="
",html+="
");var divScheduledTasks=page.querySelector(".divScheduledTasks");divScheduledTasks.innerHTML=html}function humane_elapsed(firstDateStr,secondDateStr){var dt1=new Date(firstDateStr),dt2=new Date(secondDateStr),seconds=(dt2.getTime()-dt1.getTime())/1e3,numdays=Math.floor(seconds%31536e3/86400),numhours=Math.floor(seconds%31536e3%86400/3600),numminutes=Math.floor(seconds%31536e3%86400%3600/60),numseconds=Math.round(seconds%31536e3%86400%3600%60),elapsedStr="";return elapsedStr+=1==numdays?numdays+" day ":"",elapsedStr+=numdays>1?numdays+" days ":"",elapsedStr+=1==numhours?numhours+" hour ":"",elapsedStr+=numhours>1?numhours+" hours ":"",elapsedStr+=1==numminutes?numminutes+" minute ":"",elapsedStr+=numminutes>1?numminutes+" minutes ":"",elapsedStr+=elapsedStr.length>0?"and ":"",elapsedStr+=1==numseconds?numseconds+" second":"",elapsedStr+=0==numseconds||numseconds>1?numseconds+" seconds":""}function getTaskProgressHtml(task){var html="";if("Idle"==task.State)task.LastExecutionResult&&(html+=globalize.translate("LabelScheduledTaskLastRan").replace("{0}",humane_date(task.LastExecutionResult.EndTimeUtc)).replace("{1}",humane_elapsed(task.LastExecutionResult.StartTimeUtc,task.LastExecutionResult.EndTimeUtc)),"Failed"==task.LastExecutionResult.Status?html+=" ("+globalize.translate("LabelFailed")+")":"Cancelled"==task.LastExecutionResult.Status?html+=" ("+globalize.translate("LabelCancelled")+")":"Aborted"==task.LastExecutionResult.Status&&(html+=" "+globalize.translate("LabelAbortedByServerShutdown")+""));else if("Running"==task.State){var progress=(task.CurrentProgressPercentage||0).toFixed(1);html+='
',html+='
',html+='
',html+="
",html+="
",html+=""+progress+"%",html+="
"}else html+=""+globalize.translate("LabelStopping")+"";return html}function updateTaskButton(elem,state){"Idle"==state?(elem.classList.add("btnStartTask"),elem.classList.remove("btnStopTask"),elem.classList.remove("hide"),elem.querySelector("i").innerHTML="play_arrow",elem.title=globalize.translate("ButtonStart")):"Running"==state?(elem.classList.remove("btnStartTask"),elem.classList.add("btnStopTask"),elem.classList.remove("hide"),elem.querySelector("i").innerHTML="stop",elem.title=globalize.translate("ButtonStop")):(elem.classList.add("btnStartTask"),elem.classList.remove("btnStopTask"),elem.classList.add("hide"),elem.querySelector("i").innerHTML="play_arrow",elem.title=globalize.translate("ButtonStart"));var item=$(elem).parents(".listItem")[0];item.setAttribute("data-status",state)}return function(view,params){function updateTasks(tasks){for(var i=0,length=tasks.length;i1?view.querySelector(".btnAudio").classList.remove("hide"):view.querySelector(".btnAudio").classList.add("hide"))):(setPoster(null),Emby.Page.setTitle(""),nowPlayingVolumeSlider.disabled=!0,nowPlayingPositionSlider.disabled=!0,btnFastForward.disabled=!0,btnRewind.disabled=!0,view.querySelector(".btnSubtitles").classList.add("hide"),view.querySelector(".btnAudio").classList.add("hide"),view.querySelector(".osdTitle").innerHTML="",void(view.querySelector(".osdMediaInfo").innerHTML=""))}function setTitle(item,parentName){var url=logoImageUrl(item,connectionManager.getApiClient(item.ServerId),{});if(url){Emby.Page.setTitle("");var pageTitle=document.querySelector(".pageTitle");pageTitle.style.backgroundImage="url('"+url+"')",pageTitle.classList.add("pageTitleWithLogo"),pageTitle.classList.remove("pageTitleWithDefaultLogo"),pageTitle.innerHTML=""}else Emby.Page.setTitle(parentName||"")}function setPoster(item,secondaryItem){var osdPoster=view.querySelector(".osdPoster");if(item){var imgUrl=seriesImageUrl(item,{type:"Primary"})||seriesImageUrl(item,{type:"Thumb"})||imageUrl(item,{type:"Primary"});if(!imgUrl&&secondaryItem&&(imgUrl=seriesImageUrl(secondaryItem,{type:"Primary"})||seriesImageUrl(secondaryItem,{type:"Thumb"})||imageUrl(secondaryItem,{type:"Primary"})),imgUrl)return void(osdPoster.innerHTML='')}osdPoster.innerHTML=""}function showOsd(){slideDownToShow(headerElement),showMainOsdControls(),startOsdHideTimer()}function hideOsd(){slideUpToHide(headerElement),hideMainOsdControls()}function toggleOsd(){"osd"===currentVisibleMenu?hideOsd():currentVisibleMenu||showOsd()}function startOsdHideTimer(){stopOsdHideTimer(),osdHideTimeout=setTimeout(hideOsd,5e3)}function stopOsdHideTimer(){osdHideTimeout&&(clearTimeout(osdHideTimeout),osdHideTimeout=null)}function slideDownToShow(elem){elem.classList.remove("osdHeader-hidden")}function slideUpToHide(elem){elem.classList.add("osdHeader-hidden")}function clearHideAnimationEventListeners(elem){dom.removeEventListener(elem,transitionEndEventName,onHideAnimationComplete,{once:!0})}function onHideAnimationComplete(e){var elem=e.target;elem.classList.add("hide"),dom.removeEventListener(elem,transitionEndEventName,onHideAnimationComplete,{once:!0})}function showMainOsdControls(){if(!currentVisibleMenu){var elem=osdBottomElement;currentVisibleMenu="osd",clearHideAnimationEventListeners(elem),elem.classList.remove("hide"),void elem.offsetWidth,elem.classList.remove("videoOsdBottom-hidden"),setTimeout(function(){focusManager.focus(elem.querySelector(".btnPause"))},50)}}function hideMainOsdControls(){if("osd"===currentVisibleMenu){var elem=osdBottomElement;clearHideAnimationEventListeners(elem),void elem.offsetWidth,elem.classList.add("videoOsdBottom-hidden"),dom.addEventListener(elem,transitionEndEventName,onHideAnimationComplete,{once:!0}),currentVisibleMenu=null}}function onPointerMove(e){var pointerType=e.pointerType||(layoutManager.mobile?"touch":"mouse");if("mouse"===pointerType){var eventX=e.screenX||0,eventY=e.screenY||0,obj=lastPointerMoveData;if(!obj)return void(lastPointerMoveData={x:eventX,y:eventY});if(Math.abs(eventX-obj.x)<10&&Math.abs(eventY-obj.y)<10)return;obj.x=eventX,obj.y=eventY,showOsd()}}function onInputCommand(e){var player=currentPlayer;switch(e.detail.command){case"left":"osd"===currentVisibleMenu?showOsd():currentVisibleMenu||(e.preventDefault(),playbackManager.rewind(player));break;case"right":"osd"===currentVisibleMenu?showOsd():currentVisibleMenu||(e.preventDefault(),playbackManager.fastForward(player));break;case"pageup":playbackManager.unpause(player);break;case"pagedown":playbackManager.pause(player);break;case"up":case"down":case"select":case"menu":case"info":case"play":case"playpause":case"pause":case"fastforward":case"rewind":case"next":case"previous":showOsd();break;case"record":onRecordingCommand(),showOsd();break;case"togglestats":toggleStats()}}function onRecordingCommand(){var btnRecord=view.querySelector(".btnRecord");btnRecord.classList.contains("hide")||btnRecord.click()}function updateFullscreenIcon(){playbackManager.isFullscreen(currentPlayer)?(view.querySelector(".btnFullscreen").setAttribute("title",globalize.translate("ExitFullscreen")),view.querySelector(".btnFullscreen i").innerHTML=""):(view.querySelector(".btnFullscreen").setAttribute("title",globalize.translate("Fullscreen")),view.querySelector(".btnFullscreen i").innerHTML="")}function onPlayerChange(){var player=playbackManager.getCurrentPlayer();player&&!player.isLocalPlayer?view.querySelector(".btnCast i").innerHTML="":view.querySelector(".btnCast i").innerHTML="",bindToPlayer(player)}function onStateChanged(event,state){var player=this;state.NowPlayingItem&&(isEnabled=!0,updatePlayerStateInternal(event,player,state),updatePlaylist(player),enableStopOnBack(!0))}function onPlayPauseStateChanged(e){if(isEnabled){var player=this;updatePlayPauseState(player.paused())}}function onVolumeChanged(e){if(isEnabled){var player=this;updatePlayerVolumeState(player,player.isMuted(),player.getVolume())}}function onPlaybackStart(e,state){console.log("nowplaying event: "+e.type);var player=this;onStateChanged.call(player,e,state),resetUpNextDialog()}function resetUpNextDialog(){comingUpNextDisplayed=!1;var dlg=currentUpNextDialog;dlg&&(dlg.destroy(),currentUpNextDialog=null)}function onPlaybackStopped(e,state){currentRuntimeTicks=null,resetUpNextDialog(),console.log("nowplaying event: "+e.type),"Video"!==state.NextMediaType&&(view.removeEventListener("viewbeforehide",onViewHideStopPlayback),Emby.Page.back())}function bindToPlayer(player){if(player!==currentPlayer&&(releaseCurrentPlayer(),currentPlayer=player,player)){var state=playbackManager.getPlayerState(player);onStateChanged.call(player,{type:"init"},state),events.on(player,"playbackstart",onPlaybackStart),events.on(player,"playbackstop",onPlaybackStopped),events.on(player,"volumechange",onVolumeChanged),events.on(player,"pause",onPlayPauseStateChanged),events.on(player,"unpause",onPlayPauseStateChanged),events.on(player,"timeupdate",onTimeUpdate),events.on(player,"fullscreenchange",updateFullscreenIcon),resetUpNextDialog()}}function releaseCurrentPlayer(){destroyStats(),resetUpNextDialog();var player=currentPlayer;player&&(events.off(player,"playbackstart",onPlaybackStart),events.off(player,"playbackstop",onPlaybackStopped),events.off(player,"volumechange",onVolumeChanged),events.off(player,"pause",onPlayPauseStateChanged),events.off(player,"unpause",onPlayPauseStateChanged),events.off(player,"timeupdate",onTimeUpdate),events.off(player,"fullscreenchange",updateFullscreenIcon),currentPlayer=null)}function onTimeUpdate(e){if(isEnabled){var now=(new Date).getTime();if(!(now-lastUpdateTime<700)){lastUpdateTime=now;var player=this;currentRuntimeTicks=playbackManager.duration(player);var currentTime=playbackManager.currentTime(player);updateTimeDisplay(currentTime,currentRuntimeTicks,playbackManager.playbackStartTime(player),playbackManager.getBufferedRanges(player)),refreshProgramInfoIfNeeded(player),showComingUpNextIfNeeded(player,currentItem,currentTime,currentRuntimeTicks)}}}function showComingUpNextIfNeeded(player,currentItem,currentTimeTicks,runtimeTicks){if(runtimeTicks&¤tTimeTicks&&!comingUpNextDisplayed&&!currentVisibleMenu&&"Episode"===currentItem.Type&&userSettings.enableNextVideoInfoOverlay()){var minRuntimeTicks=6e9,fiftyMinuteTicks=3e10,fortyMinuteTicks=24e9,showAtSecondsLeft=runtimeTicks>=fiftyMinuteTicks?40:runtimeTicks>=fortyMinuteTicks?35:30,showAtTicks=runtimeTicks-1e3*showAtSecondsLeft*1e4,timeRemainingTicks=runtimeTicks-currentTimeTicks,minTimeRemainingTicks=2e8;currentTimeTicks>=showAtTicks&&runtimeTicks>=minRuntimeTicks&&timeRemainingTicks>=minTimeRemainingTicks&&showComingUpNext(player)}}function onUpNextHidden(){"upnext"===currentVisibleMenu&&(currentVisibleMenu=null)}function showComingUpNext(player){require(["upNextDialog"],function(UpNextDialog){currentVisibleMenu||currentUpNextDialog||(currentVisibleMenu="upnext",comingUpNextDisplayed=!0,currentUpNextDialog=new UpNextDialog({parent:view.querySelector(".upNextContainer"),player:player}),events.on(currentUpNextDialog,"hide",onUpNextHidden))})}function refreshProgramInfoIfNeeded(player){var item=currentItem;if("TvChannel"===item.Type){var program=item.CurrentProgram;if(program&&program.EndDate)try{var endDate=datetime.parseISO8601Date(program.EndDate);if((new Date).getTime()>=endDate.getTime()){console.log("program info needs to be refreshed");var state=playbackManager.getPlayerState(player);onStateChanged.call(player,{type:"init"},state)}}catch(e){console.log("Error parsing date: "+program.EndDate)}}}function updatePlayPauseState(isPaused){isPaused?view.querySelector(".btnPause i").innerHTML="":view.querySelector(".btnPause i").innerHTML=""}function updatePlayerStateInternal(event,player,state){var playState=state.PlayState||{};updatePlayPauseState(playState.IsPaused);var supportedCommands=playbackManager.getSupportedCommands(player);currentPlayerSupportedCommands=supportedCommands,supportsBrightnessChange=supportedCommands.indexOf("SetBrightness")!==-1,updatePlayerVolumeState(player,playState.IsMuted,playState.VolumeLevel),nowPlayingPositionSlider&&!nowPlayingPositionSlider.dragging&&(nowPlayingPositionSlider.disabled=!playState.CanSeek),btnFastForward.disabled=!playState.CanSeek,btnRewind.disabled=!playState.CanSeek;var nowPlayingItem=state.NowPlayingItem||{};playbackStartTimeTicks=playState.PlaybackStartTimeTicks,updateTimeDisplay(playState.PositionTicks,nowPlayingItem.RunTimeTicks,playState.PlaybackStartTimeTicks,playState.BufferedRanges||[]),updateNowPlayingInfo(player,state),state.MediaSource&&state.MediaSource.SupportsTranscoding&&supportedCommands.indexOf("SetMaxStreamingBitrate")!==-1?view.querySelector(".btnVideoOsdSettings").classList.remove("hide"):view.querySelector(".btnVideoOsdSettings").classList.add("hide"),supportedCommands.indexOf("ToggleFullscreen")===-1||player.isLocalPlayer&&layoutManager.tv&&playbackManager.isFullscreen(player)?view.querySelector(".btnFullscreen").classList.add("hide"):view.querySelector(".btnFullscreen").classList.remove("hide"),supportedCommands.indexOf("PictureInPicture")===-1?view.querySelector(".btnPip").classList.add("hide"):view.querySelector(".btnPip").classList.remove("hide"),updateFullscreenIcon()}function getDisplayPercentByTimeOfDay(programStartDateMs,programRuntimeMs,currentTimeMs){return(currentTimeMs-programStartDateMs)/programRuntimeMs*100}function updateTimeDisplay(positionTicks,runtimeTicks,playbackStartTimeTicks,bufferedRanges){if(enableProgressByTimeOfDay){if(nowPlayingPositionSlider&&!nowPlayingPositionSlider.dragging)if(programStartDateMs&&programEndDateMs){var currentTimeMs=(playbackStartTimeTicks+(positionTicks||0))/1e4,programRuntimeMs=programEndDateMs-programStartDateMs;if(nowPlayingPositionSlider.value=getDisplayPercentByTimeOfDay(programStartDateMs,programRuntimeMs,currentTimeMs),bufferedRanges.length){var rangeStart=getDisplayPercentByTimeOfDay(programStartDateMs,programRuntimeMs,(playbackStartTimeTicks+(bufferedRanges[0].start||0))/1e4),rangeEnd=getDisplayPercentByTimeOfDay(programStartDateMs,programRuntimeMs,(playbackStartTimeTicks+(bufferedRanges[0].end||0))/1e4);nowPlayingPositionSlider.setBufferedRanges([{start:rangeStart,end:rangeEnd}])}else nowPlayingPositionSlider.setBufferedRanges([])}else nowPlayingPositionSlider.value=0,nowPlayingPositionSlider.setBufferedRanges([]);nowPlayingPositionText.innerHTML="",nowPlayingDurationText.innerHTML=""}else{if(nowPlayingPositionSlider&&!nowPlayingPositionSlider.dragging){if(runtimeTicks){var pct=positionTicks/runtimeTicks;pct*=100,nowPlayingPositionSlider.value=pct}else nowPlayingPositionSlider.value=0;runtimeTicks&&null!=positionTicks&¤tRuntimeTicks&&!enableProgressByTimeOfDay&¤tItem.RunTimeTicks&&"Recording"!==currentItem.Type?endsAtText.innerHTML="  -  "+mediaInfo.getEndsAtFromPosition(runtimeTicks,positionTicks,!0):endsAtText.innerHTML=""}nowPlayingPositionSlider&&nowPlayingPositionSlider.setBufferedRanges(bufferedRanges,runtimeTicks,positionTicks),updateTimeText(nowPlayingPositionText,positionTicks),updateTimeText(nowPlayingDurationText,runtimeTicks,!0)}}function updatePlayerVolumeState(player,isMuted,volumeLevel){var supportedCommands=currentPlayerSupportedCommands,showMuteButton=!0,showVolumeSlider=!0;supportedCommands.indexOf("Mute")===-1&&(showMuteButton=!1),supportedCommands.indexOf("SetVolume")===-1&&(showVolumeSlider=!1),player.isLocalPlayer&&appHost.supports("physicalvolumecontrol")&&(showMuteButton=!1,showVolumeSlider=!1),isMuted?(view.querySelector(".buttonMute").setAttribute("title",globalize.translate("Unmute")),view.querySelector(".buttonMute i").innerHTML=""):(view.querySelector(".buttonMute").setAttribute("title",globalize.translate("Mute")),view.querySelector(".buttonMute i").innerHTML=""),showMuteButton?view.querySelector(".buttonMute").classList.remove("hide"):view.querySelector(".buttonMute").classList.add("hide"),nowPlayingVolumeSlider&&(showVolumeSlider?nowPlayingVolumeSliderContainer.classList.remove("hide"):nowPlayingVolumeSliderContainer.classList.add("hide"),nowPlayingVolumeSlider.dragging||(nowPlayingVolumeSlider.value=volumeLevel||0))}function updatePlaylist(player){var btnPreviousTrack=view.querySelector(".btnPreviousTrack"),btnNextTrack=view.querySelector(".btnNextTrack");btnPreviousTrack.classList.remove("hide"),btnNextTrack.classList.remove("hide"),btnNextTrack.disabled=!1,btnPreviousTrack.disabled=!1}function updateTimeText(elem,ticks,divider){if(null==ticks)return void(elem.innerHTML="");var html=datetime.getDisplayRunningTime(ticks);divider&&(html=" / "+html),elem.innerHTML=html}function onSettingsButtonClick(e){var btn=this;require(["playerSettingsMenu"],function(playerSettingsMenu){var player=currentPlayer;player&&playerSettingsMenu.show({mediaType:"Video",player:player,positionTo:btn,stats:!0,onOption:onSettingsOption})})}function onSettingsOption(selectedOption){"stats"===selectedOption&&toggleStats()}function toggleStats(){require(["playerStats"],function(PlayerStats){var player=currentPlayer;player&&(statsOverlay?statsOverlay.toggle():statsOverlay=new PlayerStats({player:player}))})}function destroyStats(){statsOverlay&&(statsOverlay.destroy(),statsOverlay=null)}function showAudioTrackSelection(){var player=currentPlayer,audioTracks=playbackManager.audioTracks(player),currentIndex=playbackManager.getAudioStreamIndex(player),menuItems=audioTracks.map(function(stream){var opt={name:stream.DisplayTitle,id:stream.Index};return stream.Index===currentIndex&&(opt.selected=!0),opt}),positionTo=this;require(["actionsheet"],function(actionsheet){actionsheet.show({items:menuItems,title:globalize.translate("Audio"),positionTo:positionTo}).then(function(id){var index=parseInt(id);index!==currentIndex&&playbackManager.setAudioStreamIndex(index,player)})})}function showSubtitleTrackSelection(){var player=currentPlayer,streams=playbackManager.subtitleTracks(player),currentIndex=playbackManager.getSubtitleStreamIndex(player);null==currentIndex&&(currentIndex=-1),streams.unshift({Index:-1,DisplayTitle:globalize.translate("Off")});var menuItems=streams.map(function(stream){var opt={name:stream.DisplayTitle,id:stream.Index};return stream.Index===currentIndex&&(opt.selected=!0),opt}),positionTo=this;require(["actionsheet"],function(actionsheet){actionsheet.show({title:globalize.translate("Subtitles"),items:menuItems,positionTo:positionTo}).then(function(id){var index=parseInt(id);index!==currentIndex&&playbackManager.setSubtitleStreamIndex(index,player)})})}function onWindowKeyDown(e){if(!currentVisibleMenu&&(32===e.keyCode||13===e.keyCode))return playbackManager.playPause(currentPlayer),void showOsd();switch(e.key){case"f":e.ctrlKey||playbackManager.toggleFullscreen(currentPlayer);break;case"m":playbackManager.toggleMute(currentPlayer);break;case"ArrowLeft":case"Left":case"NavigationLeft":case"GamepadDPadLeft":case"GamepadLeftThumbstickLeft":e.shiftKey&&playbackManager.rewind(currentPlayer);break;case"ArrowRight":case"Right":case"NavigationRight":case"GamepadDPadRight":case"GamepadLeftThumbstickRight":e.shiftKey&&playbackManager.fastForward(currentPlayer)}}function getImgUrl(item,chapter,index,maxWidth,apiClient){return chapter.ImageTag?apiClient.getScaledImageUrl(item.Id,{maxWidth:maxWidth,tag:chapter.ImageTag,type:"Chapter",index:index}):null}function getChapterBubbleHtml(apiClient,item,chapters,positionTicks){for(var chapter,index=-1,i=0,length=chapters.length;i=currentChapter.StartPositionTicks&&(chapter=currentChapter,index=i)}if(!chapter)return null;var src=getImgUrl(item,chapter,index,400,apiClient);if(src){var html='
';return html+='',html+='
',html+='
',html+=chapter.Name,html+="
",html+='

',html+=datetime.getDisplayRunningTime(positionTicks),html+="

",html+="
",html+="
"}return null}function onViewHideStopPlayback(){if(playbackManager.isPlayingVideo()){var player=currentPlayer;view.removeEventListener("viewbeforehide",onViewHideStopPlayback),releaseCurrentPlayer(),playbackManager.stop(player)}}function enableStopOnBack(enabled){view.removeEventListener("viewbeforehide",onViewHideStopPlayback),enabled&&playbackManager.isPlayingVideo(currentPlayer)&&view.addEventListener("viewbeforehide",onViewHideStopPlayback)}var currentPlayer,comingUpNextDisplayed,currentUpNextDialog,isEnabled,currentItem,recordingButtonManager,enableProgressByTimeOfDay,supportsBrightnessChange,currentVisibleMenu,statsOverlay,osdHideTimeout,lastPointerMoveData,self=this,currentPlayerSupportedCommands=[],currentRuntimeTicks=0,lastUpdateTime=0,programStartDateMs=0,programEndDateMs=0,playbackStartTimeTicks=0,nowPlayingVolumeSlider=view.querySelector(".osdVolumeSlider"),nowPlayingVolumeSliderContainer=view.querySelector(".osdVolumeSliderContainer"),nowPlayingPositionSlider=view.querySelector(".osdPositionSlider"),nowPlayingPositionText=view.querySelector(".osdPositionText"),nowPlayingDurationText=view.querySelector(".osdDurationText"),startTimeText=view.querySelector(".startTimeText"),endTimeText=view.querySelector(".endTimeText"),endsAtText=view.querySelector(".endsAtText"),btnRewind=view.querySelector(".btnRewind"),btnFastForward=view.querySelector(".btnFastForward"),transitionEndEventName=dom.whichTransitionEvent(),headerElement=document.querySelector(".skinHeader"),osdBottomElement=document.querySelector(".videoOsdBottom-maincontrols");view.addEventListener("viewbeforeshow",function(e){headerElement.classList.add("osdHeader"),Emby.Page.setTransparency("full")}),view.addEventListener("viewshow",function(e){events.on(playbackManager,"playerchange",onPlayerChange),bindToPlayer(playbackManager.getCurrentPlayer()),dom.addEventListener(document,window.PointerEvent?"pointermove":"mousemove",onPointerMove,{passive:!0}),document.body.classList.add("autoScrollY"),showOsd(),inputManager.on(window,onInputCommand),dom.addEventListener(window,"keydown",onWindowKeyDown,{passive:!0})}),view.addEventListener("viewbeforehide",function(){statsOverlay&&statsOverlay.enabled(!1),dom.removeEventListener(window,"keydown",onWindowKeyDown,{passive:!0}),stopOsdHideTimer(),headerElement.classList.remove("osdHeader"),headerElement.classList.remove("osdHeader-hidden"),dom.removeEventListener(document,window.PointerEvent?"pointermove":"mousemove",onPointerMove,{passive:!0}),document.body.classList.remove("autoScrollY"),inputManager.off(window,onInputCommand),events.off(playbackManager,"playerchange",onPlayerChange),releaseCurrentPlayer()}),appHost.supports("remotecontrol")&&!layoutManager.tv&&view.querySelector(".btnCast").classList.remove("hide"),view.querySelector(".btnCast").addEventListener("click",function(){var btn=this;require(["playerSelectionMenu"],function(playerSelectionMenu){playerSelectionMenu.show(btn)})}),view.querySelector(".btnFullscreen").addEventListener("click",function(){playbackManager.toggleFullscreen(currentPlayer)}),view.querySelector(".btnPip").addEventListener("click",function(){playbackManager.togglePictureInPicture(currentPlayer)}),view.querySelector(".btnVideoOsdSettings").addEventListener("click",onSettingsButtonClick),view.addEventListener("viewhide",function(){headerElement.classList.remove("hide")}),view.addEventListener("viewdestroy",function(){self.touchHelper&&(self.touchHelper.destroy(),self.touchHelper=null),recordingButtonManager&&(recordingButtonManager.destroy(),recordingButtonManager=null),destroyStats()});var lastPointerDown=0;view.addEventListener(window.PointerEvent?"pointerdown":"click",function(e){var isClickInControlsArea=dom.parentWithClass(e.target,["videoOsdBottom","upNextContainer"]);if(isClickInControlsArea)return void showOsd();var pointerType=e.pointerType||(layoutManager.mobile?"touch":"mouse"),now=(new Date).getTime();switch(pointerType){case"touch":now-lastPointerDown>300&&(lastPointerDown=now,toggleOsd());break;default:playbackManager.playPause(currentPlayer),showOsd()}}),browser.touch&&view.addEventListener("dblclick",onDoubleClick),view.querySelector(".buttonMute").addEventListener("click",function(){playbackManager.toggleMute(currentPlayer)}),nowPlayingVolumeSlider.addEventListener("change",function(){playbackManager.setVolume(this.value,currentPlayer)}),nowPlayingPositionSlider.addEventListener("change",function(){var player=currentPlayer;if(player){var newPercent=parseFloat(this.value);if(enableProgressByTimeOfDay){var seekAirTimeTicks=(programEndDateMs-programStartDateMs)*(newPercent/100)*1e4;seekAirTimeTicks+=1e4*programStartDateMs,seekAirTimeTicks-=playbackStartTimeTicks,playbackManager.seek(seekAirTimeTicks,player)}else playbackManager.seekPercent(newPercent,player)}}),nowPlayingPositionSlider.getBubbleHtml=function(value){if(showOsd(),enableProgressByTimeOfDay){if(programStartDateMs&&programEndDateMs){var ms=programEndDateMs-programStartDateMs;ms/=100,ms*=value,ms+=programStartDateMs;var date=new Date(parseInt(ms));return'

'+getDisplayTimeWithoutAmPm(date,!0)+"

"}return"--:--"}if(!currentRuntimeTicks)return"--:--";var ticks=currentRuntimeTicks;ticks/=100,ticks*=value;var item=currentItem;if(item&&item.Chapters&&item.Chapters.length&&item.Chapters[0].ImageTag){var html=getChapterBubbleHtml(connectionManager.getApiClient(item.ServerId),item,item.Chapters,ticks);if(html)return html}return'

'+datetime.getDisplayRunningTime(ticks)+"

"},view.querySelector(".btnPreviousTrack").addEventListener("click",function(){playbackManager.previousTrack(currentPlayer)}),view.querySelector(".btnPause").addEventListener("click",function(){playbackManager.playPause(currentPlayer)}),view.querySelector(".btnNextTrack").addEventListener("click",function(){playbackManager.nextTrack(currentPlayer)}),btnRewind.addEventListener("click",function(){playbackManager.rewind(currentPlayer)}),btnFastForward.addEventListener("click",function(){playbackManager.fastForward(currentPlayer)}),view.querySelector(".btnAudio").addEventListener("click",showAudioTrackSelection),view.querySelector(".btnSubtitles").addEventListener("click",showSubtitleTrackSelection),browser.touch&&initSwipeEvents()}}); \ No newline at end of file +define(["playbackManager","dom","inputmanager","datetime","itemHelper","mediaInfo","focusManager","imageLoader","scrollHelper","events","connectionManager","browser","globalize","apphost","layoutManager","userSettings","scrollStyles","emby-slider","paper-icon-button-light","css!css/videoosd"],function(playbackManager,dom,inputManager,datetime,itemHelper,mediaInfo,focusManager,imageLoader,scrollHelper,events,connectionManager,browser,globalize,appHost,layoutManager,userSettings){"use strict";function seriesImageUrl(item,options){if("Episode"!==item.Type)return null;if(options=options||{},options.type=options.type||"Primary","Primary"===options.type&&item.SeriesPrimaryImageTag)return options.tag=item.SeriesPrimaryImageTag,connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId,options);if("Thumb"===options.type){if(item.SeriesThumbImageTag)return options.tag=item.SeriesThumbImageTag,connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId,options);if(item.ParentThumbImageTag)return options.tag=item.ParentThumbImageTag,connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.ParentThumbItemId,options)}return null}function imageUrl(item,options){return options=options||{},options.type=options.type||"Primary",item.ImageTags&&item.ImageTags[options.type]?(options.tag=item.ImageTags[options.type],connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.PrimaryImageItemId||item.Id,options)):"Primary"===options.type&&item.AlbumId&&item.AlbumPrimaryImageTag?(options.tag=item.AlbumPrimaryImageTag,connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.AlbumId,options)):null}function logoImageUrl(item,apiClient,options){return options=options||{},options.type="Logo",item.ImageTags&&item.ImageTags.Logo?(options.tag=item.ImageTags.Logo,apiClient.getScaledImageUrl(item.Id,options)):item.ParentLogoImageTag?(options.tag=item.ParentLogoImageTag,apiClient.getScaledImageUrl(item.ParentLogoItemId,options)):null}return function(view,params){function onVerticalSwipe(e,elem,data){var player=currentPlayer;if(player){var deltaY=data.currentDeltaY,windowSize=dom.getWindowSize();if(supportsBrightnessChange&&data.clientX1?view.querySelector(".btnAudio").classList.remove("hide"):view.querySelector(".btnAudio").classList.add("hide"))):(setPoster(null),Emby.Page.setTitle(""),nowPlayingVolumeSlider.disabled=!0,nowPlayingPositionSlider.disabled=!0,btnFastForward.disabled=!0,btnRewind.disabled=!0,view.querySelector(".btnSubtitles").classList.add("hide"),view.querySelector(".btnAudio").classList.add("hide"),view.querySelector(".osdTitle").innerHTML="",void(view.querySelector(".osdMediaInfo").innerHTML=""))}function setTitle(item,parentName){var url=logoImageUrl(item,connectionManager.getApiClient(item.ServerId),{});if(url){Emby.Page.setTitle("");var pageTitle=document.querySelector(".pageTitle");pageTitle.style.backgroundImage="url('"+url+"')",pageTitle.classList.add("pageTitleWithLogo"),pageTitle.classList.remove("pageTitleWithDefaultLogo"),pageTitle.innerHTML=""}else Emby.Page.setTitle(parentName||"")}function setPoster(item,secondaryItem){var osdPoster=view.querySelector(".osdPoster");if(item){var imgUrl=seriesImageUrl(item,{type:"Primary"})||seriesImageUrl(item,{type:"Thumb"})||imageUrl(item,{type:"Primary"});if(!imgUrl&&secondaryItem&&(imgUrl=seriesImageUrl(secondaryItem,{type:"Primary"})||seriesImageUrl(secondaryItem,{type:"Thumb"})||imageUrl(secondaryItem,{type:"Primary"})),imgUrl)return void(osdPoster.innerHTML='')}osdPoster.innerHTML=""}function showOsd(){slideDownToShow(headerElement),showMainOsdControls(),startOsdHideTimer()}function hideOsd(){slideUpToHide(headerElement),hideMainOsdControls()}function toggleOsd(){"osd"===currentVisibleMenu?hideOsd():currentVisibleMenu||showOsd()}function startOsdHideTimer(){stopOsdHideTimer(),osdHideTimeout=setTimeout(hideOsd,5e3)}function stopOsdHideTimer(){osdHideTimeout&&(clearTimeout(osdHideTimeout),osdHideTimeout=null)}function slideDownToShow(elem){elem.classList.remove("osdHeader-hidden")}function slideUpToHide(elem){elem.classList.add("osdHeader-hidden")}function clearHideAnimationEventListeners(elem){dom.removeEventListener(elem,transitionEndEventName,onHideAnimationComplete,{once:!0})}function onHideAnimationComplete(e){var elem=e.target;elem.classList.add("hide"),dom.removeEventListener(elem,transitionEndEventName,onHideAnimationComplete,{once:!0})}function showMainOsdControls(){if(!currentVisibleMenu){var elem=osdBottomElement;currentVisibleMenu="osd",clearHideAnimationEventListeners(elem),elem.classList.remove("hide"),void elem.offsetWidth,elem.classList.remove("videoOsdBottom-hidden"),setTimeout(function(){focusManager.focus(elem.querySelector(".btnPause"))},50)}}function hideMainOsdControls(){if("osd"===currentVisibleMenu){var elem=osdBottomElement;clearHideAnimationEventListeners(elem),void elem.offsetWidth,elem.classList.add("videoOsdBottom-hidden"),dom.addEventListener(elem,transitionEndEventName,onHideAnimationComplete,{once:!0}),currentVisibleMenu=null}}function onPointerMove(e){var pointerType=e.pointerType||(layoutManager.mobile?"touch":"mouse");if("mouse"===pointerType){var eventX=e.screenX||0,eventY=e.screenY||0,obj=lastPointerMoveData;if(!obj)return void(lastPointerMoveData={x:eventX,y:eventY});if(Math.abs(eventX-obj.x)<10&&Math.abs(eventY-obj.y)<10)return;obj.x=eventX,obj.y=eventY,showOsd()}}function onInputCommand(e){var player=currentPlayer;switch(e.detail.command){case"left":"osd"===currentVisibleMenu?showOsd():currentVisibleMenu||(e.preventDefault(),playbackManager.rewind(player));break;case"right":"osd"===currentVisibleMenu?showOsd():currentVisibleMenu||(e.preventDefault(),playbackManager.fastForward(player));break;case"pageup":playbackManager.unpause(player);break;case"pagedown":playbackManager.pause(player);break;case"up":case"down":case"select":case"menu":case"info":case"play":case"playpause":case"pause":case"fastforward":case"rewind":case"next":case"previous":showOsd();break;case"record":onRecordingCommand(),showOsd();break;case"togglestats":toggleStats()}}function onRecordingCommand(){var btnRecord=view.querySelector(".btnRecord");btnRecord.classList.contains("hide")||btnRecord.click()}function updateFullscreenIcon(){playbackManager.isFullscreen(currentPlayer)?(view.querySelector(".btnFullscreen").setAttribute("title",globalize.translate("ExitFullscreen")),view.querySelector(".btnFullscreen i").innerHTML=""):(view.querySelector(".btnFullscreen").setAttribute("title",globalize.translate("Fullscreen")),view.querySelector(".btnFullscreen i").innerHTML="")}function onPlayerChange(){var player=playbackManager.getCurrentPlayer();player&&!player.isLocalPlayer?view.querySelector(".btnCast i").innerHTML="":view.querySelector(".btnCast i").innerHTML="",bindToPlayer(player)}function onStateChanged(event,state){var player=this;state.NowPlayingItem&&(isEnabled=!0,updatePlayerStateInternal(event,player,state),updatePlaylist(player),enableStopOnBack(!0))}function onPlayPauseStateChanged(e){if(isEnabled){var player=this;updatePlayPauseState(player.paused())}}function onVolumeChanged(e){if(isEnabled){var player=this;updatePlayerVolumeState(player,player.isMuted(),player.getVolume())}}function onPlaybackStart(e,state){console.log("nowplaying event: "+e.type);var player=this;onStateChanged.call(player,e,state),resetUpNextDialog()}function resetUpNextDialog(){comingUpNextDisplayed=!1;var dlg=currentUpNextDialog;dlg&&(dlg.destroy(),currentUpNextDialog=null)}function onPlaybackStopped(e,state){currentRuntimeTicks=null,resetUpNextDialog(),console.log("nowplaying event: "+e.type),"Video"!==state.NextMediaType&&(view.removeEventListener("viewbeforehide",onViewHideStopPlayback),Emby.Page.back())}function bindToPlayer(player){if(player!==currentPlayer&&(releaseCurrentPlayer(),currentPlayer=player,player)){var state=playbackManager.getPlayerState(player);onStateChanged.call(player,{type:"init"},state),events.on(player,"playbackstart",onPlaybackStart),events.on(player,"playbackstop",onPlaybackStopped),events.on(player,"volumechange",onVolumeChanged),events.on(player,"pause",onPlayPauseStateChanged),events.on(player,"unpause",onPlayPauseStateChanged),events.on(player,"timeupdate",onTimeUpdate),events.on(player,"fullscreenchange",updateFullscreenIcon),resetUpNextDialog()}}function releaseCurrentPlayer(){destroyStats(),resetUpNextDialog();var player=currentPlayer;player&&(events.off(player,"playbackstart",onPlaybackStart),events.off(player,"playbackstop",onPlaybackStopped),events.off(player,"volumechange",onVolumeChanged),events.off(player,"pause",onPlayPauseStateChanged),events.off(player,"unpause",onPlayPauseStateChanged),events.off(player,"timeupdate",onTimeUpdate),events.off(player,"fullscreenchange",updateFullscreenIcon),currentPlayer=null)}function onTimeUpdate(e){if(isEnabled){var now=(new Date).getTime();if(!(now-lastUpdateTime<700)){lastUpdateTime=now;var player=this;currentRuntimeTicks=playbackManager.duration(player);var currentTime=playbackManager.currentTime(player);updateTimeDisplay(currentTime,currentRuntimeTicks,playbackManager.playbackStartTime(player),playbackManager.getBufferedRanges(player)),refreshProgramInfoIfNeeded(player),showComingUpNextIfNeeded(player,currentItem,currentTime,currentRuntimeTicks)}}}function showComingUpNextIfNeeded(player,currentItem,currentTimeTicks,runtimeTicks){if(runtimeTicks&¤tTimeTicks&&!comingUpNextDisplayed&&!currentVisibleMenu&&"Episode"===currentItem.Type&&userSettings.enableNextVideoInfoOverlay()){var minRuntimeTicks=6e9,fiftyMinuteTicks=3e10,fortyMinuteTicks=24e9,showAtSecondsLeft=runtimeTicks>=fiftyMinuteTicks?40:runtimeTicks>=fortyMinuteTicks?35:30,showAtTicks=runtimeTicks-1e3*showAtSecondsLeft*1e4,timeRemainingTicks=runtimeTicks-currentTimeTicks,minTimeRemainingTicks=2e8;currentTimeTicks>=showAtTicks&&runtimeTicks>=minRuntimeTicks&&timeRemainingTicks>=minTimeRemainingTicks&&showComingUpNext(player)}}function onUpNextHidden(){"upnext"===currentVisibleMenu&&(currentVisibleMenu=null)}function showComingUpNext(player){require(["upNextDialog"],function(UpNextDialog){currentVisibleMenu||currentUpNextDialog||(currentVisibleMenu="upnext",comingUpNextDisplayed=!0,currentUpNextDialog=new UpNextDialog({parent:view.querySelector(".upNextContainer"),player:player}),events.on(currentUpNextDialog,"hide",onUpNextHidden))})}function refreshProgramInfoIfNeeded(player){var item=currentItem;if("TvChannel"===item.Type){var program=item.CurrentProgram;if(program&&program.EndDate)try{var endDate=datetime.parseISO8601Date(program.EndDate);if((new Date).getTime()>=endDate.getTime()){console.log("program info needs to be refreshed");var state=playbackManager.getPlayerState(player);onStateChanged.call(player,{type:"init"},state)}}catch(e){console.log("Error parsing date: "+program.EndDate)}}}function updatePlayPauseState(isPaused){isPaused?view.querySelector(".btnPause i").innerHTML="":view.querySelector(".btnPause i").innerHTML=""}function updatePlayerStateInternal(event,player,state){var playState=state.PlayState||{};updatePlayPauseState(playState.IsPaused);var supportedCommands=playbackManager.getSupportedCommands(player);currentPlayerSupportedCommands=supportedCommands,supportsBrightnessChange=supportedCommands.indexOf("SetBrightness")!==-1,updatePlayerVolumeState(player,playState.IsMuted,playState.VolumeLevel),nowPlayingPositionSlider&&!nowPlayingPositionSlider.dragging&&(nowPlayingPositionSlider.disabled=!playState.CanSeek),btnFastForward.disabled=!playState.CanSeek,btnRewind.disabled=!playState.CanSeek;var nowPlayingItem=state.NowPlayingItem||{};playbackStartTimeTicks=playState.PlaybackStartTimeTicks,updateTimeDisplay(playState.PositionTicks,nowPlayingItem.RunTimeTicks,playState.PlaybackStartTimeTicks,playState.BufferedRanges||[]),updateNowPlayingInfo(player,state),state.MediaSource&&state.MediaSource.SupportsTranscoding&&supportedCommands.indexOf("SetMaxStreamingBitrate")!==-1?view.querySelector(".btnVideoOsdSettings").classList.remove("hide"):view.querySelector(".btnVideoOsdSettings").classList.add("hide"),supportedCommands.indexOf("ToggleFullscreen")===-1||player.isLocalPlayer&&layoutManager.tv&&playbackManager.isFullscreen(player)?view.querySelector(".btnFullscreen").classList.add("hide"):view.querySelector(".btnFullscreen").classList.remove("hide"),supportedCommands.indexOf("PictureInPicture")===-1?view.querySelector(".btnPip").classList.add("hide"):view.querySelector(".btnPip").classList.remove("hide"),updateFullscreenIcon()}function getDisplayPercentByTimeOfDay(programStartDateMs,programRuntimeMs,currentTimeMs){return(currentTimeMs-programStartDateMs)/programRuntimeMs*100}function updateTimeDisplay(positionTicks,runtimeTicks,playbackStartTimeTicks,bufferedRanges){if(enableProgressByTimeOfDay){if(nowPlayingPositionSlider&&!nowPlayingPositionSlider.dragging)if(programStartDateMs&&programEndDateMs){var currentTimeMs=(playbackStartTimeTicks+(positionTicks||0))/1e4,programRuntimeMs=programEndDateMs-programStartDateMs;if(nowPlayingPositionSlider.value=getDisplayPercentByTimeOfDay(programStartDateMs,programRuntimeMs,currentTimeMs),bufferedRanges.length){var rangeStart=getDisplayPercentByTimeOfDay(programStartDateMs,programRuntimeMs,(playbackStartTimeTicks+(bufferedRanges[0].start||0))/1e4),rangeEnd=getDisplayPercentByTimeOfDay(programStartDateMs,programRuntimeMs,(playbackStartTimeTicks+(bufferedRanges[0].end||0))/1e4);nowPlayingPositionSlider.setBufferedRanges([{start:rangeStart,end:rangeEnd}])}else nowPlayingPositionSlider.setBufferedRanges([])}else nowPlayingPositionSlider.value=0,nowPlayingPositionSlider.setBufferedRanges([]);nowPlayingPositionText.innerHTML="",nowPlayingDurationText.innerHTML=""}else{if(nowPlayingPositionSlider&&!nowPlayingPositionSlider.dragging){if(runtimeTicks){var pct=positionTicks/runtimeTicks;pct*=100,nowPlayingPositionSlider.value=pct}else nowPlayingPositionSlider.value=0;runtimeTicks&&null!=positionTicks&¤tRuntimeTicks&&!enableProgressByTimeOfDay&¤tItem.RunTimeTicks&&"Recording"!==currentItem.Type?endsAtText.innerHTML="  -  "+mediaInfo.getEndsAtFromPosition(runtimeTicks,positionTicks,!0):endsAtText.innerHTML=""}nowPlayingPositionSlider&&nowPlayingPositionSlider.setBufferedRanges(bufferedRanges,runtimeTicks,positionTicks),updateTimeText(nowPlayingPositionText,positionTicks),updateTimeText(nowPlayingDurationText,runtimeTicks,!0)}}function updatePlayerVolumeState(player,isMuted,volumeLevel){var supportedCommands=currentPlayerSupportedCommands,showMuteButton=!0,showVolumeSlider=!0;supportedCommands.indexOf("Mute")===-1&&(showMuteButton=!1),supportedCommands.indexOf("SetVolume")===-1&&(showVolumeSlider=!1),player.isLocalPlayer&&appHost.supports("physicalvolumecontrol")&&(showMuteButton=!1,showVolumeSlider=!1),isMuted?(view.querySelector(".buttonMute").setAttribute("title",globalize.translate("Unmute")),view.querySelector(".buttonMute i").innerHTML=""):(view.querySelector(".buttonMute").setAttribute("title",globalize.translate("Mute")),view.querySelector(".buttonMute i").innerHTML=""),showMuteButton?view.querySelector(".buttonMute").classList.remove("hide"):view.querySelector(".buttonMute").classList.add("hide"),nowPlayingVolumeSlider&&(showVolumeSlider?nowPlayingVolumeSliderContainer.classList.remove("hide"):nowPlayingVolumeSliderContainer.classList.add("hide"),nowPlayingVolumeSlider.dragging||(nowPlayingVolumeSlider.value=volumeLevel||0))}function updatePlaylist(player){var btnPreviousTrack=view.querySelector(".btnPreviousTrack"),btnNextTrack=view.querySelector(".btnNextTrack");btnPreviousTrack.classList.remove("hide"),btnNextTrack.classList.remove("hide"),btnNextTrack.disabled=!1,btnPreviousTrack.disabled=!1}function updateTimeText(elem,ticks,divider){if(null==ticks)return void(elem.innerHTML="");var html=datetime.getDisplayRunningTime(ticks);divider&&(html=" / "+html),elem.innerHTML=html}function onSettingsButtonClick(e){var btn=this;require(["playerSettingsMenu"],function(playerSettingsMenu){var player=currentPlayer;player&&playerSettingsMenu.show({mediaType:"Video",player:player,positionTo:btn,stats:!0,onOption:onSettingsOption})})}function onSettingsOption(selectedOption){"stats"===selectedOption&&toggleStats()}function toggleStats(){require(["playerStats"],function(PlayerStats){var player=currentPlayer;player&&(statsOverlay?statsOverlay.toggle():statsOverlay=new PlayerStats({player:player}))})}function destroyStats(){statsOverlay&&(statsOverlay.destroy(),statsOverlay=null)}function showAudioTrackSelection(){var player=currentPlayer,audioTracks=playbackManager.audioTracks(player),currentIndex=playbackManager.getAudioStreamIndex(player),menuItems=audioTracks.map(function(stream){var opt={name:stream.DisplayTitle,id:stream.Index};return stream.Index===currentIndex&&(opt.selected=!0),opt}),positionTo=this;require(["actionsheet"],function(actionsheet){actionsheet.show({items:menuItems,title:globalize.translate("Audio"),positionTo:positionTo}).then(function(id){var index=parseInt(id);index!==currentIndex&&playbackManager.setAudioStreamIndex(index,player)})})}function showSubtitleTrackSelection(){var player=currentPlayer,streams=playbackManager.subtitleTracks(player),currentIndex=playbackManager.getSubtitleStreamIndex(player);null==currentIndex&&(currentIndex=-1),streams.unshift({Index:-1,DisplayTitle:globalize.translate("Off")});var menuItems=streams.map(function(stream){var opt={name:stream.DisplayTitle,id:stream.Index};return stream.Index===currentIndex&&(opt.selected=!0),opt}),positionTo=this;require(["actionsheet"],function(actionsheet){actionsheet.show({title:globalize.translate("Subtitles"),items:menuItems,positionTo:positionTo}).then(function(id){var index=parseInt(id);index!==currentIndex&&playbackManager.setSubtitleStreamIndex(index,player)})})}function onWindowKeyDown(e){if(!currentVisibleMenu&&(32===e.keyCode||13===e.keyCode))return playbackManager.playPause(currentPlayer),void showOsd();switch(e.key){case"f":e.ctrlKey||playbackManager.toggleFullscreen(currentPlayer);break;case"m":playbackManager.toggleMute(currentPlayer);break;case"ArrowLeft":case"Left":case"NavigationLeft":case"GamepadDPadLeft":case"GamepadLeftThumbstickLeft":e.shiftKey&&playbackManager.rewind(currentPlayer);break;case"ArrowRight":case"Right":case"NavigationRight":case"GamepadDPadRight":case"GamepadLeftThumbstickRight":e.shiftKey&&playbackManager.fastForward(currentPlayer)}}function getImgUrl(item,chapter,index,maxWidth,apiClient){return chapter.ImageTag?apiClient.getScaledImageUrl(item.Id,{maxWidth:maxWidth,tag:chapter.ImageTag,type:"Chapter",index:index}):null}function getChapterBubbleHtml(apiClient,item,chapters,positionTicks){for(var chapter,index=-1,i=0,length=chapters.length;i=currentChapter.StartPositionTicks&&(chapter=currentChapter,index=i)}if(!chapter)return null;var src=getImgUrl(item,chapter,index,400,apiClient);if(src){var html='
';return html+='',html+='
',html+='
',html+=chapter.Name,html+="
",html+='

',html+=datetime.getDisplayRunningTime(positionTicks),html+="

",html+="
",html+="
"}return null}function onViewHideStopPlayback(){if(playbackManager.isPlayingVideo()){var player=currentPlayer;view.removeEventListener("viewbeforehide",onViewHideStopPlayback),releaseCurrentPlayer(),playbackManager.stop(player)}}function enableStopOnBack(enabled){view.removeEventListener("viewbeforehide",onViewHideStopPlayback),enabled&&playbackManager.isPlayingVideo(currentPlayer)&&view.addEventListener("viewbeforehide",onViewHideStopPlayback)}var currentPlayer,comingUpNextDisplayed,currentUpNextDialog,isEnabled,currentItem,recordingButtonManager,enableProgressByTimeOfDay,supportsBrightnessChange,currentVisibleMenu,statsOverlay,osdHideTimeout,lastPointerMoveData,self=this,currentPlayerSupportedCommands=[],currentRuntimeTicks=0,lastUpdateTime=0,programStartDateMs=0,programEndDateMs=0,playbackStartTimeTicks=0,nowPlayingVolumeSlider=view.querySelector(".osdVolumeSlider"),nowPlayingVolumeSliderContainer=view.querySelector(".osdVolumeSliderContainer"),nowPlayingPositionSlider=view.querySelector(".osdPositionSlider"),nowPlayingPositionText=view.querySelector(".osdPositionText"),nowPlayingDurationText=view.querySelector(".osdDurationText"),startTimeText=view.querySelector(".startTimeText"),endTimeText=view.querySelector(".endTimeText"),endsAtText=view.querySelector(".endsAtText"),btnRewind=view.querySelector(".btnRewind"),btnFastForward=view.querySelector(".btnFastForward"),transitionEndEventName=dom.whichTransitionEvent(),headerElement=document.querySelector(".skinHeader"),osdBottomElement=document.querySelector(".videoOsdBottom-maincontrols");view.addEventListener("viewbeforeshow",function(e){headerElement.classList.add("osdHeader"),Emby.Page.setTransparency("full")}),view.addEventListener("viewshow",function(e){events.on(playbackManager,"playerchange",onPlayerChange),bindToPlayer(playbackManager.getCurrentPlayer()),dom.addEventListener(document,window.PointerEvent?"pointermove":"mousemove",onPointerMove,{passive:!0}),document.body.classList.add("autoScrollY"),showOsd(),inputManager.on(window,onInputCommand),dom.addEventListener(window,"keydown",onWindowKeyDown,{passive:!0})}),view.addEventListener("viewbeforehide",function(){statsOverlay&&statsOverlay.enabled(!1),dom.removeEventListener(window,"keydown",onWindowKeyDown,{passive:!0}),stopOsdHideTimer(),headerElement.classList.remove("osdHeader"),headerElement.classList.remove("osdHeader-hidden"),dom.removeEventListener(document,window.PointerEvent?"pointermove":"mousemove",onPointerMove,{passive:!0}),document.body.classList.remove("autoScrollY"),inputManager.off(window,onInputCommand),events.off(playbackManager,"playerchange",onPlayerChange),releaseCurrentPlayer()}),appHost.supports("remotecontrol")&&!layoutManager.tv&&view.querySelector(".btnCast").classList.remove("hide"),view.querySelector(".btnCast").addEventListener("click",function(){var btn=this;require(["playerSelectionMenu"],function(playerSelectionMenu){playerSelectionMenu.show(btn)})}),view.querySelector(".btnFullscreen").addEventListener("click",function(){playbackManager.toggleFullscreen(currentPlayer)}),view.querySelector(".btnPip").addEventListener("click",function(){playbackManager.togglePictureInPicture(currentPlayer)}),view.querySelector(".btnVideoOsdSettings").addEventListener("click",onSettingsButtonClick),view.addEventListener("viewhide",function(){headerElement.classList.remove("hide")}),view.addEventListener("viewdestroy",function(){self.touchHelper&&(self.touchHelper.destroy(),self.touchHelper=null),recordingButtonManager&&(recordingButtonManager.destroy(),recordingButtonManager=null),destroyStats()});var lastPointerDown=0;view.addEventListener(window.PointerEvent?"pointerdown":"click",function(e){var isClickInControlsArea=dom.parentWithClass(e.target,["videoOsdBottom","upNextContainer"]);if(isClickInControlsArea)return void showOsd();var pointerType=e.pointerType||(layoutManager.mobile?"touch":"mouse"),now=(new Date).getTime();switch(pointerType){case"touch":now-lastPointerDown>300&&(lastPointerDown=now,toggleOsd());break;default:playbackManager.playPause(currentPlayer),showOsd()}}),browser.touch&&view.addEventListener("dblclick",onDoubleClick),view.querySelector(".buttonMute").addEventListener("click",function(){playbackManager.toggleMute(currentPlayer)}),nowPlayingVolumeSlider.addEventListener("change",function(){playbackManager.setVolume(this.value,currentPlayer)}),nowPlayingPositionSlider.addEventListener("change",function(){var player=currentPlayer;if(player){var newPercent=parseFloat(this.value);if(enableProgressByTimeOfDay){var seekAirTimeTicks=(programEndDateMs-programStartDateMs)*(newPercent/100)*1e4;seekAirTimeTicks+=1e4*programStartDateMs,seekAirTimeTicks-=playbackStartTimeTicks,playbackManager.seek(seekAirTimeTicks,player)}else playbackManager.seekPercent(newPercent,player)}}),nowPlayingPositionSlider.getBubbleHtml=function(value){if(showOsd(),enableProgressByTimeOfDay){if(programStartDateMs&&programEndDateMs){var ms=programEndDateMs-programStartDateMs;ms/=100,ms*=value,ms+=programStartDateMs;var date=new Date(parseInt(ms));return'

'+getDisplayTimeWithoutAmPm(date,!0)+"

"}return"--:--"}if(!currentRuntimeTicks)return"--:--";var ticks=currentRuntimeTicks;ticks/=100,ticks*=value;var item=currentItem;if(item&&item.Chapters&&item.Chapters.length&&item.Chapters[0].ImageTag){var html=getChapterBubbleHtml(connectionManager.getApiClient(item.ServerId),item,item.Chapters,ticks);if(html)return html}return'

'+datetime.getDisplayRunningTime(ticks)+"

"},view.querySelector(".btnPreviousTrack").addEventListener("click",function(){playbackManager.previousTrack(currentPlayer)}),view.querySelector(".btnPause").addEventListener("click",function(){playbackManager.playPause(currentPlayer)}),view.querySelector(".btnNextTrack").addEventListener("click",function(){playbackManager.nextTrack(currentPlayer)}),btnRewind.addEventListener("click",function(){playbackManager.rewind(currentPlayer)}),btnFastForward.addEventListener("click",function(){playbackManager.fastForward(currentPlayer)}),view.querySelector(".btnAudio").addEventListener("click",showAudioTrackSelection),view.querySelector(".btnSubtitles").addEventListener("click",showSubtitleTrackSelection),browser.touch&&initSwipeEvents()}}); \ No newline at end of file diff --git a/dashboard-ui/strings/en-US.json b/dashboard-ui/strings/en-US.json index 92aa9714d8..aca1805d88 100644 --- a/dashboard-ui/strings/en-US.json +++ b/dashboard-ui/strings/en-US.json @@ -949,7 +949,7 @@ "TabDevices": "Devices", "HeaderLibrarySettings": "Library Settings", "HeaderChapterSettings": "Chapter Settings", - "HeaderCameraUploadHelp": "Emby apps can automatically upload photos and videos taken from your mobile devices into Emby Server.", + "HeaderCameraUploadHelp": "Emby apps can automatically upload photos taken from your mobile devices into Emby Server.", "LabelCameraUploadPath": "Camera upload path:", "LabelCameraUploadPathHelp": "Select a custom upload path. This will override any default settings set in the Camera Upload section. If left blank, a default folder will be used. If using a custom path it will also need to be added in the library setup area.", "LabelCreateCameraUploadSubfolder": "Create a subfolder for each device", diff --git a/dashboard-ui/strings/es-MX.json b/dashboard-ui/strings/es-MX.json index 90e6794bf3..014307a533 100644 --- a/dashboard-ui/strings/es-MX.json +++ b/dashboard-ui/strings/es-MX.json @@ -1851,5 +1851,5 @@ "ButtonStopRecording": "Detener Grabaci\u00f3n", "StopRecording": "Detener grabaci\u00f3n", "CancelSeries": "Cancelar Serie", - "EnableDebugLoggingHelp": "Debug logging should only be enabled as needed for troubleshooting purposes. The increased file system access may prevent the server machine from being able to sleep in some environments." + "EnableDebugLoggingHelp": "El registro de depuraci\u00f3n deber\u00eda ser habilitado solamente para prop\u00f3sitos de soluci\u00f3n de problemas. El incremento en el archivo de sistema podr\u00eda prevenir que el servidor entre en modo suspendido bajo algunos entornos." } \ No newline at end of file diff --git a/dashboard-ui/strings/fr.json b/dashboard-ui/strings/fr.json index 35140f4b96..b81db02d19 100644 --- a/dashboard-ui/strings/fr.json +++ b/dashboard-ui/strings/fr.json @@ -7,7 +7,7 @@ "ThisWizardWillGuideYou": "Cet assistant vous guidera dans le processus de configuration. Pour commencer, merci de s\u00e9lectionner votre langue pr\u00e9f\u00e9r\u00e9e.", "TellUsAboutYourself": "Parlez-nous de vous", "ButtonQuickStartGuide": "Guide de d\u00e9marrage rapide", - "LabelYourFirstName": "Votre pr\u00e9nom:", + "LabelYourFirstName": "Votre pr\u00e9nom :", "MoreUsersCanBeAddedLater": "D'autres utilisateurs pourront \u00eatre ajout\u00e9s ult\u00e9rieurement \u00e0 partir du tableau de bord.", "UserProfilesIntro": "Emby supporte nativement les profils utilisateurs, permettant \u00e0 chaque utilisateur d'avoir ses propres pr\u00e9f\u00e9rences d'affichage, sauvegarde de l'\u00e9tat de lecture et contr\u00f4le parental.", "WizardCompleted": "C'est tout ce dont nous avons besoin pour l'instant. Emby a commenc\u00e9 \u00e0 collecter les informations de votre m\u00e9diath\u00e8que. Jetez un coup d'\u0153il \u00e0 quelques-unes de nos applications, puis cliquez sur Terminer<\/b> pour consulter le Tableau de bord du serveur<\/b>.", diff --git a/dashboard-ui/strings/kk.json b/dashboard-ui/strings/kk.json index 88be319e91..b174960f24 100644 --- a/dashboard-ui/strings/kk.json +++ b/dashboard-ui/strings/kk.json @@ -1851,5 +1851,5 @@ "ButtonStopRecording": "\u0416\u0430\u0437\u0443\u0434\u044b \u0442\u043e\u049b\u0442\u0430\u0442\u0443", "StopRecording": "\u0416\u0430\u0437\u0443\u0434\u044b \u0442\u043e\u049b\u0442\u0430\u0442\u0443", "CancelSeries": "\u0422\u0435\u043b\u0435\u0445\u0438\u043a\u0430\u044f\u043d\u044b \u0431\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443", - "EnableDebugLoggingHelp": "Debug logging should only be enabled as needed for troubleshooting purposes. The increased file system access may prevent the server machine from being able to sleep in some environments." + "EnableDebugLoggingHelp": "\u0410\u049b\u0430\u0443\u043b\u044b\u049b\u0442\u0430\u0440\u0434\u044b \u0436\u043e\u044e \u0436\u0443\u0440\u043d\u0430\u043b\u044b\u043d \u0442\u0435\u043a \u049b\u0430\u0436\u0435\u0442 \u0431\u043e\u043b\u0493\u0430\u043d \u0436\u0430\u0493\u0434\u0430\u0439\u0434\u0430 \u049b\u043e\u0441\u0443 \u043a\u0435\u0440\u0435\u043a. \u0424\u0430\u0439\u043b\u0434\u044b\u049b \u0436\u04af\u0439\u0435\u0433\u0435 \u049b\u0430\u0442\u044b\u043d\u0430\u0443 \u043a\u04e9\u0431\u0435\u044e\u0456 \u043a\u0435\u0439\u0431\u0456\u0440 \u043e\u0440\u0442\u0430\u043b\u0430\u0440\u0434\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0456\u043d\u0435 \u04b1\u0439\u044b\u049b\u0442\u0430\u0443\u0493\u0430 \u0436\u043e\u043b \u0431\u0435\u0440\u043c\u0435\u0439\u0434\u0456." } \ No newline at end of file diff --git a/dashboard-ui/strings/ru.json b/dashboard-ui/strings/ru.json index e39585b4dc..646097d30e 100644 --- a/dashboard-ui/strings/ru.json +++ b/dashboard-ui/strings/ru.json @@ -1851,5 +1851,5 @@ "ButtonStopRecording": "\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c", "StopRecording": "\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c", "CancelSeries": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0435\u0440\u0438\u0430\u043b", - "EnableDebugLoggingHelp": "Debug logging should only be enabled as needed for troubleshooting purposes. The increased file system access may prevent the server machine from being able to sleep in some environments." + "EnableDebugLoggingHelp": "\u0416\u0443\u0440\u043d\u0430\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0435\u043f\u043e\u043b\u0430\u0434\u043e\u043a. \u041f\u043e\u0432\u044b\u0448\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u0435\u0448\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u043d\u0430 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0440\u0435\u0434\u0430\u0445." } \ No newline at end of file diff --git a/dashboard-ui/strings/sk.json b/dashboard-ui/strings/sk.json index 63996aabf1..1367948992 100644 --- a/dashboard-ui/strings/sk.json +++ b/dashboard-ui/strings/sk.json @@ -24,7 +24,7 @@ "LabelPinCode": "Pin k\u00f3d:", "DeleteMedia": "Odstr\u00e1ni\u0165 m\u00e9dia", "HeaderSync": "Sync", - "HeaderPlayAll": "Play All", + "HeaderPlayAll": "Prehra\u0165 v\u0161etko", "HeaderUpcomingNews": "Nadch\u00e1dzaj\u00face spr\u00e1vy", "ButtonOk": "Ok", "ButtonCancel": "Zru\u0161i\u0165", @@ -40,25 +40,25 @@ "HeaderPaths": "Cesty", "CategorySync": "Sync", "TabPlaylist": "Playlist", - "HeaderInstantMix": "Instant Mix", + "HeaderInstantMix": "Okam\u017eit\u00fd mix", "HeaderEasyPinCode": "Jednoduch\u00fd pin k\u00f3d", "HeaderInstalledServices": "Nain\u0161talovan\u00e9 slu\u017eby", "HeaderAvailableServices": "Dostupn\u00e9 slu\u017eby", "MessageNoServicesInstalled": "Moment\u00e1lne nie s\u00fa nain\u0161talovan\u00e9 \u017eiadne slu\u017eby.", - "HeaderToAccessPleaseEnterEasyPinCode": "Pre pr\u00edstup pros\u00edm vlo\u017ete V\u00e1\u0161 jednoduch\u00fd pin k\u00f3d", + "HeaderToAccessPleaseEnterEasyPinCode": "Pre pr\u00edstup, pros\u00edm, vlo\u017ete V\u00e1\u0161 jednoduch\u00fd pin k\u00f3d", "ButtonConfigurePinCode": "Konfigurova\u0165 pin k\u00f3d", - "RegisterWithPayPal": "Register with PayPal", + "RegisterWithPayPal": "Registrova\u0165 pomocou PayPal", "LabelSyncTempPath": "Do\u010dasn\u00e1 cesta k s\u00faboru:", "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Vlastn\u00e1 cesta k certifik\u00e1tu:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file.", + "LabelCustomCertificatePath": "Vlastn\u00e1 cesta k ssl certifik\u00e1tu:", + "LabelCustomCertificatePathHelp": "Uve\u010fte V\u00e1\u0161 vlastn\u00fd .pfx s\u00fabor ssl certifik\u00e1tu.", "TitleNotifications": "Upozornenia", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "Username or email:", - "LabelEnterConnectUserNameHelp": "This is your Emby online account username or email.", + "OptionDetectArchiveFilesAsMedia": "Detegova\u0165 s\u00fabory arch\u00edvov ako m\u00e9di\u00e1", + "OptionDetectArchiveFilesAsMediaHelp": "Ak je mo\u017enos\u0165 povolen\u00e1, s\u00fabory s form\u00e1tom .rar a .zip bud\u00fa detegovan\u00e9 ako medi\u00e1lne s\u00fabory.", + "LabelEnterConnectUserName": "Meno u\u017e\u00edvate\u013ea alebo email:", + "LabelEnterConnectUserNameHelp": "Toto je u\u017e\u00edvate\u013esk\u00e9 meno alebo email V\u00e1\u0161ho Emby online \u00fa\u010dtu.", "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", + "FolderTypeMixed": "Zmie\u0161an\u00fd obsah", "FolderTypeMovies": "Filmy", "FolderTypeMusic": "Hudba", "FolderTypePhotos": "Fotky", @@ -68,198 +68,198 @@ "FolderTypeTvShows": "TV", "FolderTypeInherit": "Inherit", "LabelContentType": "Druh obsahu:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "Setup your media libraries", - "LabelFolderType": "Folder type:", - "LabelCountry": "Country:", - "LabelLanguage": "Language:", - "LabelTimeLimitHours": "Time limit (hours):", - "HeaderPreferredMetadataLanguage": "Preferred Metadata Language", + "TitleScheduledTasks": "Napl\u00e1novan\u00e9 \u00falohy", + "HeaderSetupLibrary": "Nastavte Va\u0161e kni\u017enice m\u00e9di\u00ed", + "LabelFolderType": "Druh prie\u010dinka:", + "LabelCountry": "Krajina:", + "LabelLanguage": "Jazyk:", + "LabelTimeLimitHours": "\u010casov\u00fd limit (v hodin\u00e1ch):", + "HeaderPreferredMetadataLanguage": "Uprednost\u0148ovan\u00fd jazyk metad\u00e1t", "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", "LabelDownloadInternetMetadataHelp": "Emby Server can download information about your media to enable rich presentations.", - "TabPassword": "Password", - "TabLibraryAccess": "Library Access", - "TabAccess": "Access", - "TabImage": "Image", - "TabProfile": "Profile", - "TabMetadata": "Metadata", - "TabImages": "Images", - "TabNotifications": "Notifications", - "TabCollectionTitles": "Titles", + "TabPassword": "Heslo", + "TabLibraryAccess": "Pr\u00edstup ku kni\u017enici", + "TabAccess": "Pr\u00edstup", + "TabImage": "Obr\u00e1zok", + "TabProfile": "Profil", + "TabMetadata": "Metad\u00e1ta", + "TabImages": "Obr\u00e1zky", + "TabNotifications": "Upozornenia", + "TabCollectionTitles": "N\u00e1zvy", "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", - "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", - "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", - "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", - "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", - "HeaderPlaybackSettings": "Playback Settings", - "LabelAudioLanguagePreference": "Audio language preference:", - "LabelSubtitleLanguagePreference": "Subtitle language preference:", - "OptionDefaultSubtitles": "Default", - "OptionSmartSubtitles": "Smart", - "OptionSmartSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", - "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionDefaultSubtitlesHelp": "Subtitles are loaded based on the default and forced flags in the embedded metadata. Language preferences are considered when multiple options are available.", - "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", - "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", - "TabProfiles": "Profiles", - "TabSecurity": "Security", - "ButtonAddUser": "Add User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "Save", - "ButtonResetPassword": "Reset Password", - "LabelUrl": "Url:", - "LabelNewPassword": "New password:", - "LabelNewPasswordConfirm": "New password confirm:", - "HeaderCreatePassword": "Create Password", - "LabelCurrentPassword": "Current password:", - "LabelMaxParentalRating": "Maximum allowed parental rating:", - "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", - "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", - "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", - "ButtonDeleteImage": "Delete Image", - "LabelSelectUsers": "Select users:", - "ButtonUpload": "Upload", - "HeaderUploadNewImage": "Upload New Image", - "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", - "MessageNothingHere": "Nothing here.", - "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", - "AlreadyPaidHelp1": "If you already paid to install an older version of Media Browser for Android, you don't need to pay again in order to activate this app. Click OK to send us an email at {0} and we'll get it activated for you.", - "AlreadyPaidHelp2": "Got Emby Premiere? Just cancel this dialog, setup Emby Premiere in your Emby Server Dashboard under Help -> Emby Premiere, and it will be unlocked automatically.", - "TabSuggestions": "Suggestions", - "TabLatest": "Latest", - "TabUpcoming": "Upcoming", + "OptionEnableAccessFromAllDevices": "Povoli\u0165 pr\u00edstup zo v\u0161etk\u00fdch zariaden\u00ed", + "OptionEnableAccessToAllChannels": "Povoli\u0165 pr\u00edstup ku v\u0161etk\u00fdm kan\u00e1lom", + "OptionEnableAccessToAllLibraries": "Povoli\u0165 pr\u00edstup ku v\u0161etk\u00fdm kni\u017eniciam", + "DeviceAccessHelp": "T\u00e1to mo\u017enos\u0165 sa vz\u0165ahuje iba na zariadenia, ktor\u00e9 m\u00f4\u017eu by\u0165 jedine\u010dne identifikovan\u00e9 a nezabr\u00e1ni pr\u00edstup cez prehliada\u010d. Filtrovan\u00edm pr\u00edstupu u\u017e\u00edvate\u013esk\u00fdch zariaden\u00ed zabra\u0148uje u\u017e\u00edvate\u013eom pou\u017ei\u0165 nov\u00e9 zariadenie, pokia\u013e neboli tu schv\u00e1len\u00e9.", + "LabelDisplayMissingEpisodesWithinSeasons": "Zobrazi\u0165 ch\u00fdbaj\u00face epiz\u00f3dy v s\u00e9ri\u00e1ch", + "LabelDisplayMissingEpisodesWithinSeasonsHelp": "Toto mus\u00ed by\u0165 tie\u017e povolen\u00e9 pre TV kni\u017enice v nastaven\u00ed Emby servera.", + "LabelUnairedMissingEpisodesWithinSeasons": "Zobrazi\u0165 nevysielan\u00e9 epiz\u00f3dy v s\u00e9ri\u00e1ch", + "ImportMissingEpisodesHelp": "Ak je mo\u017enos\u0165 povolen\u00e1, inform\u00e1cie o ch\u00fdbaj\u00facich epiz\u00f3dach bud\u00fa importovan\u00e9 do Va\u0161ej Emby datab\u00e1zy a bud\u00fa zobrazen\u00e9 v s\u00e9ri\u00e1ch a seri\u00e1loch. Toto m\u00f4\u017ee sp\u00f4sobi\u0165 podstatne dlh\u0161ie skenovania kni\u017en\u00edc.", + "MessageEnablingOptionLongerScans": "Povolenie tejto mo\u017enosti m\u00f4\u017ee ma\u0165 za n\u00e1sledok podstatne dlh\u0161ie skenovania kni\u017en\u00edc.", + "HeaderPlaybackSettings": "Nastavenia prehr\u00e1vania", + "LabelAudioLanguagePreference": "Preferovan\u00fd jazyk zvukovej stopy:", + "LabelSubtitleLanguagePreference": "Preferovan\u00fd jazyk titulkov:", + "OptionDefaultSubtitles": "Predvolen\u00fd", + "OptionSmartSubtitles": "Chytr\u00fd", + "OptionSmartSubtitlesHelp": "Titulky, ktor\u00fdch jazyk sa zhoduje s preferovan\u00fdm jazykom bud\u00fa na\u010d\u00edtan\u00e9, ak zvukov\u00e1 stopa je v cudzom jazyku.", + "OptionOnlyForcedSubtitles": "Iba vyn\u00faten\u00e9 titulky", + "OptionAlwaysPlaySubtitles": "V\u017edy prehr\u00e1va\u0165 titulky", + "OptionDefaultSubtitlesHelp": "Titulky s\u00fa na\u010d\u00edtan\u00e9 na z\u00e1klade predvolen\u00fdch a vyn\u00faten\u00fdch zna\u010diek vo vstavan\u00fdch metad\u00e1tach. Jazykov\u00e9 preferencie s\u00fa zv\u00e1\u017een\u00e9 ak viacero mo\u017enost\u00ed je dostupn\u00fdch.", + "OptionOnlyForcedSubtitlesHelp": "Bud\u00fa na\u010d\u00edtan\u00e9 iba titulky ozna\u010den\u00e9 ako vyn\u00faten\u00e9.", + "OptionAlwaysPlaySubtitlesHelp": "Titulky, ktor\u00fdch jazyk sa zhoduje s preferovan\u00fdm jazykom bud\u00fa na\u010d\u00edtan\u00e9 bez oh\u013eadu na jazyk zvukovej stopy.", + "OptionNoSubtitlesHelp": "Titulky nebud\u00fa predvolene na\u010d\u00edtan\u00e9.", + "TabProfiles": "Profily", + "TabSecurity": "Zabezpe\u010denie", + "ButtonAddUser": "Prida\u0165 u\u017e\u00edvate\u013ea", + "ButtonInviteUser": "Pozva\u0165 u\u017e\u00edvate\u013ea", + "ButtonSave": "Ulo\u017ei\u0165", + "ButtonResetPassword": "Obnovi\u0165 heslo", + "LabelUrl": "URL:", + "LabelNewPassword": "Nov\u00e9 heslo:", + "LabelNewPasswordConfirm": "Potvrdenie nov\u00e9ho hesla:", + "HeaderCreatePassword": "Vytvori\u0165 heslo", + "LabelCurrentPassword": "Aktu\u00e1lne heslo:", + "LabelMaxParentalRating": "Maxim\u00e1lne povolen\u00e9 rodi\u010dovsk\u00e9 hodnotenie:", + "MaxParentalRatingHelp": "Obsah s vy\u0161\u0161\u00edm rodi\u010dovsk\u00fdm hodnoten\u00edm bude skryt\u00fd pre tohto u\u017e\u00edvate\u013ea.", + "LibraryAccessHelp": "Zvo\u013ete prie\u010dinky m\u00e9di\u00ed zdie\u013ean\u00e9 s t\u00fdmto u\u017e\u00edvate\u013eom. Administr\u00e1tori bud\u00fa schopn\u00ed upravi\u0165 v\u0161etky prie\u010dinky pou\u017eit\u00edm spr\u00e1vcu metad\u00e1t.", + "ChannelAccessHelp": "Zvo\u013ete kan\u00e1ly zdie\u013ean\u00e9 s t\u00fdmto u\u017e\u00edvate\u013eom. Administr\u00e1tori bud\u00fa schopn\u00ed upravi\u0165 v\u0161etky kan\u00e1ly pou\u017eit\u00edm spr\u00e1vcu metad\u00e1t.", + "ButtonDeleteImage": "Zmaza\u0165 obr\u00e1zok", + "LabelSelectUsers": "Zvo\u013ete u\u017e\u00edvate\u013eov:", + "ButtonUpload": "Nahra\u0165", + "HeaderUploadNewImage": "Nahra\u0165 nov\u00fd obr\u00e1zok", + "ImageUploadAspectRatioHelp": "Odpor\u00fa\u010dan\u00fd pomer str\u00e1n je 1:1. Iba JPG\/PNG.", + "MessageNothingHere": "Ni\u010d tu nie je.", + "MessagePleaseEnsureInternetMetadata": "Pros\u00edm, uistite sa, \u017ee s\u0165ahovanie internetov\u00fdch metad\u00e1t je povolen\u00e9.", + "AlreadyPaidHelp1": "Ak ste u\u017e zaplatili za in\u0161tal\u00e1ciu star\u0161ej verzie aplik\u00e1cie Media Browser pre Android, nemus\u00edte znova plati\u0165 za aktiv\u00e1ciu tejto aplik\u00e1cie. Kliknut\u00edm na OK n\u00e1m odo\u0161lete email na adresu {0} a my V\u00e1m ju aktivujeme.", + "AlreadyPaidHelp2": "M\u00e1te Emby Premiere? Zavrite toto dial\u00f3gov\u00e9 okno, nastavte Emby Premiere vo Va\u0161om Dashboarde Emby serveru v sekcii Pomoc -> Emby Premiere a bude to automaticky odomknut\u00e9.", + "TabSuggestions": "N\u00e1vrhy", + "TabLatest": "Posledn\u00e9", + "TabUpcoming": "Nadch\u00e1dzaj\u00face", "TabShows": "Shows", - "TabEpisodes": "Episodes", - "TabGenres": "Genres", - "TabNetworks": "Networks", - "HeaderUsers": "Users", - "HeaderFilters": "Filters", + "TabEpisodes": "Epiz\u00f3dy", + "TabGenres": "\u017d\u00e1nre", + "TabNetworks": "Siete", + "HeaderUsers": "U\u017e\u00edvatelia", + "HeaderFilters": "Filtre", "ButtonFilter": "Filter", "OptionFavorite": "Ob\u013e\u00faben\u00e9", "OptionLikes": "Likes", "OptionDislikes": "Dislikes", - "OptionActors": "Actors", - "OptionGuestStars": "Guest Stars", - "OptionDirectors": "Directors", + "OptionActors": "Herci", + "OptionGuestStars": "Hos\u0165uj\u00face hviezdy", + "OptionDirectors": "Re\u017eis\u00e9ri", "OptionWriters": "Writers", - "OptionProducers": "Producers", - "HeaderResume": "Resume", - "HeaderContinueWatching": "Continue Watching", - "HeaderNextUp": "Next Up", - "NoNextUpItemsMessage": "None found. Start watching your shows!", - "HeaderLatestEpisodes": "Latest Episodes", + "OptionProducers": "Producenti", + "HeaderResume": "Pokra\u010dova\u0165", + "HeaderContinueWatching": "Pokra\u010dova\u0165 v pozeran\u00ed", + "HeaderNextUp": "Nasleduje", + "NoNextUpItemsMessage": "Neboli \u017eiadne n\u00e1jden\u00e9. Za\u010dnite pozera\u0165 Va\u0161e seri\u00e1ly!", + "HeaderLatestEpisodes": "Najnov\u0161ie epiz\u00f3dy", "HeaderPersonTypes": "Person Types:", - "TabSongs": "Songs", - "TabAlbums": "Albums", - "TabArtists": "Artists", + "TabSongs": "Skladby", + "TabAlbums": "Albumy", + "TabArtists": "Umelci", "TabAlbumArtists": "Album Artists", - "TabMusicVideos": "Music Videos", - "ButtonSort": "Sort", - "OptionPlayed": "Played", - "OptionUnplayed": "Unplayed", - "OptionAscending": "Ascending", - "OptionDescending": "Descending", + "TabMusicVideos": "Hudobn\u00e9 vide\u00e1", + "ButtonSort": "Zoradi\u0165", + "OptionPlayed": "Prehran\u00e9", + "OptionUnplayed": "Neprehran\u00e9", + "OptionAscending": "Vzostupne", + "OptionDescending": "Zostupne", "OptionRuntime": "Runtime", - "OptionReleaseDate": "Release Date", - "OptionPlayCount": "Play Count", - "OptionDatePlayed": "Date Played", - "OptionDateAdded": "Date Added", + "OptionReleaseDate": "D\u00e1tum vydania", + "OptionPlayCount": "Po\u010det prehran\u00ed", + "OptionDatePlayed": "D\u00e1tum prehrania", + "OptionDateAdded": "D\u00e1tum pridania", "OptionAlbumArtist": "Album Artist", - "OptionArtist": "Artist", + "OptionArtist": "Umelec", "OptionAlbum": "Album", - "OptionTrackName": "Track Name", - "OptionCommunityRating": "Community Rating", - "OptionNameSort": "Name", - "OptionFolderSort": "Folders", - "OptionPoster": "Poster", + "OptionTrackName": "N\u00e1zov skladby", + "OptionCommunityRating": "Hodnotenie komunity", + "OptionNameSort": "Meno", + "OptionFolderSort": "Prie\u010dinky", + "OptionPoster": "Plag\u00e1t:", "OptionPosterCard": "Poster card", "OptionBackdrop": "Backdrop", "OptionTimeline": "Timeline", "OptionThumb": "Thumb", "OptionThumbCard": "Thumb card", "OptionBanner": "Banner", - "OptionCriticRating": "Critic Rating", + "OptionCriticRating": "Hodnotenie kritikov", "OptionVideoBitrate": "Video Bitrate", "OptionResumable": "Resumable", - "TabMyPlugins": "My Plugins", - "TabCatalog": "Catalog", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Automatic Updates", - "HeaderNowPlaying": "Now Playing", - "HeaderLatestAlbums": "Latest Albums", - "HeaderLatestSongs": "Latest Songs", - "HeaderRecentlyPlayed": "Recently Played", - "HeaderFrequentlyPlayed": "Frequently Played", - "LabelVideoType": "Video Type:", + "TabMyPlugins": "Moje roz\u0161\u00edrenia", + "TabCatalog": "Katal\u00f3g", + "TitlePlugins": "Roz\u0161\u00edrenia", + "HeaderAutomaticUpdates": "Automatick\u00e9 aktualiz\u00e1cie", + "HeaderNowPlaying": "Teraz prehr\u00e1van\u00e9", + "HeaderLatestAlbums": "Posledn\u00e9 albumy", + "HeaderLatestSongs": "Posledn\u00e9 skladby", + "HeaderRecentlyPlayed": "Ned\u00e1vno prehr\u00e1van\u00e9", + "HeaderFrequentlyPlayed": "\u010casto hran\u00e9", + "LabelVideoType": "Druh videa:", "OptionBluray": "Bluray", "OptionDvd": "Dvd", "OptionIso": "Iso", "Option3D": "3D", - "LabelDeinterlacingMethod": "Deinterlacing method:", - "Standard": "Standard", - "BobAndWeaveWithHelp": "Bob and weave (higher quality, but slower)", - "LabelStatus": "Status:", - "LabelLastResult": "Last result:", - "OptionHasSubtitles": "Subtitles", + "LabelDeinterlacingMethod": "Met\u00f3da deinterl\u00e1cie:", + "Standard": "\u0160tandardn\u00e1", + "BobAndWeaveWithHelp": "Bob and weave (vy\u0161\u0161ia kvalita, no pomal\u0161ia)", + "LabelStatus": "Stav:", + "LabelLastResult": "Posledn\u00fd v\u00fdsledok:", + "OptionHasSubtitles": "Titulky", "OptionHasTrailer": "Trailer", "OptionHasThemeSong": "Theme Song", "OptionHasThemeVideo": "Theme Video", - "TabMovies": "Movies", + "TabMovies": "Filmy", "TabStudios": "Studios", "TabTrailers": "Trailers", - "LabelArtists": "Artists:", + "LabelArtists": "Umelci:", "LabelArtistsHelp": "Separate multiple using ;", "HeaderLatestTrailers": "Latest Trailers", "OptionHasSpecialFeatures": "Special Features", - "OptionImdbRating": "IMDb Rating", + "OptionImdbRating": "Hodnotenie IMDb", "OptionParentalRating": "Parental Rating", - "OptionPremiereDate": "Premiere Date", - "TabBasic": "Basic", - "TabAdvanced": "Advanced", + "OptionPremiereDate": "D\u00e1tum premi\u00e9ry", + "TabBasic": "Z\u00e1kladn\u00e9", + "TabAdvanced": "Pokro\u010dil\u00e9", "OptionContinuing": "Continuing", "OptionEnded": "Ended", "HeaderAirDays": "Air Days", - "OptionSundayShort": "Sun", - "OptionMondayShort": "Mon", - "OptionTuesdayShort": "Tue", - "OptionWednesdayShort": "Wed", - "OptionThursdayShort": "Thu", - "OptionFridayShort": "Fri", - "OptionSaturdayShort": "Sat", - "OptionSunday": "Sunday", - "OptionMonday": "Monday", - "OptionTuesday": "Tuesday", - "OptionWednesday": "Wednesday", - "OptionThursday": "Thursday", - "OptionFriday": "Friday", - "OptionSaturday": "Saturday", - "HeaderManagement": "Management", - "LabelManagement": "Management:", - "OptionMissingImdbId": "Missing IMDb Id", - "OptionMissingTvdbId": "Missing TheTVDB Id", + "OptionSundayShort": "Ned", + "OptionMondayShort": "Pon", + "OptionTuesdayShort": "Uto", + "OptionWednesdayShort": "Str", + "OptionThursdayShort": "\u0160tv", + "OptionFridayShort": "Pia", + "OptionSaturdayShort": "Sob", + "OptionSunday": "Nede\u013ea", + "OptionMonday": "Pondelok", + "OptionTuesday": "Utorok", + "OptionWednesday": "Streda", + "OptionThursday": "\u0160tvrtok", + "OptionFriday": "Piatok", + "OptionSaturday": "Sobota", + "HeaderManagement": "Mana\u017ement", + "LabelManagement": "Mana\u017ement:", + "OptionMissingImdbId": "Ch\u00fdbaj\u00face IMDb ID", + "OptionMissingTvdbId": "Ch\u00fdbaj\u00face TheTVDB ID", "OptionMissingOverview": "Missing Overview", - "TabGeneral": "General", - "TitleSupport": "Support", - "TabAbout": "About", + "TabGeneral": "V\u0161eobecn\u00e9", + "TitleSupport": "Podpora", + "TabAbout": "O", "TabSupporterKey": "Emby Premiere Key", "TabBecomeSupporter": "Get Emby Premiere", "TabEmbyPremiere": "Emby Premiere", - "OptionHideUser": "Hide this user from login screens", - "OptionHideUserFromLoginHelp": "Useful for private or hidden administrator accounts. The user will need to sign in manually by entering their username and password.", - "OptionDisableUser": "Disable this user", + "OptionHideUser": "Nezobrazova\u0165 tohto pou\u017e\u00edvate\u013ea v prihlasovac\u00edch obrazovk\u00e1ch", + "OptionHideUserFromLoginHelp": "U\u017eito\u010dn\u00e9 pre s\u00fakromn\u00e9 alebo ukryt\u00e9 administr\u00e1torsk\u00e9 \u00fa\u010dty. Pou\u017e\u00edvate\u013e sa bude musie\u0165 prihl\u00e1si\u0165 manu\u00e1lne zadan\u00edm mena a hesla.", + "OptionDisableUser": "Zak\u00e1za\u0165 tohto u\u017e\u00edvate\u013ea", "OptionDisableUserHelp": "If disabled the server will not allow any connections from this user. Existing connections will be abruptly terminated.", - "LabelName": "Name:", - "ButtonHelp": "Help", - "OptionAllowUserToManageServer": "Allow this user to manage the server", + "LabelName": "Meno:", + "ButtonHelp": "Pomoc", + "OptionAllowUserToManageServer": "Povoli\u0165 tomuto pou\u017e\u00edvate\u013eovi spravova\u0165 server", "HeaderFeatureAccess": "Feature Access", "OptionAllowMediaPlayback": "Allow media playback", "OptionAllowBrowsingLiveTv": "Allow Live TV access", @@ -271,24 +271,24 @@ "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", "OptionAllowLinkSharing": "Allow social media sharing", "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire after {0} days.", - "HeaderRemoteControl": "Remote Control", + "HeaderRemoteControl": "\u010eia\u013ekov\u00e9 ovl\u00e1danie", "OptionMissingTmdbId": "Missing Tmdb Id", "OptionIsHD": "HD", "OptionIsSD": "SD", - "ButtonSelect": "Select", + "ButtonSelect": "Vybra\u0165", "PismoMessage": "Utilizing Pismo File Mount through a donated license.", "HeaderCredits": "Credits", "PleaseSupportOtherProduces": "Please support other free products we utilize:", "VersionNumber": "Version {0}", - "TabPaths": "Paths", + "TabPaths": "Cesty", "TabServer": "Server", "TabTranscoding": "Transcoding", - "OptionRelease": "Official Release", + "OptionRelease": "Ofici\u00e1lne vydanie", "LabelAllowServerAutoRestart": "Allow the server to restart automatically to apply updates", "LabelAllowServerAutoRestartHelp": "The server will only restart during idle periods, when no users are active.", - "LabelRunServerAtStartup": "Run server at startup", + "LabelRunServerAtStartup": "Spusti\u0165 server pri \u0161tarte", "LabelRunServerAtStartupHelp": "This will start the Emby tray icon on Windows startup. If you've set up a Windows service then leave this unchecked and configure the service to run at startup.", - "ButtonSelectDirectory": "Select Directory", + "ButtonSelectDirectory": "Vybra\u0165 prie\u010dinok", "LabelCachePath": "Cache path:", "DefaultMetadataLangaugeDescription": "These are your defaults and can be customized on a per-library basis.", "LabelCachePathHelp": "Specify a custom location for server cache files, such as images. Leave blank to use the server default.", @@ -300,58 +300,58 @@ "LabelMetadataPathHelp": "Specify a custom location for downloaded artwork and metadata.", "LabelTranscodingTempPath": "Transcoding temporary path:", "LabelTranscodingTempPathHelp": "This folder contains working files used by the transcoder. Specify a custom path, or leave empty to use the default within the server's data folder.", - "TabBasics": "Basics", + "TabBasics": "Z\u00e1klady", "TabTV": "TV", - "TabGames": "Games", - "TabMusic": "Music", - "TabOthers": "Others", - "OptionMovies": "Movies", - "OptionEpisodes": "Episodes", - "OptionOtherVideos": "Other Videos", + "TabGames": "Hry", + "TabMusic": "Hudba", + "TabOthers": "In\u00e9", + "OptionMovies": "Filmy", + "OptionEpisodes": "Epiz\u00f3dy", + "OptionOtherVideos": "In\u00e9 vide\u00e1", "LabelFanartApiKey": "Personal api key:", "LabelFanartApiKeyHelp": "Requests to fanart without a personal API key return images that were approved over 7 days ago. With a personal API key that drops to 48 hours and if you are also a fanart VIP member that will further drop to around 10 minutes.", "ExtractChapterImagesHelp": "Extracting chapter images will allow Emby apps to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs when videos are discovered, and also as a nightly scheduled task. The schedule is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelMetadataDownloadLanguage": "Preferred metadata language:", - "ButtonSignIn": "Sign In", - "TitleSignIn": "Sign In", - "HeaderPleaseSignIn": "Please sign in", - "LabelUser": "User:", - "LabelPassword": "Password:", - "ButtonManualLogin": "Manual Login", - "TabGuide": "Guide", - "TabChannels": "Channels", - "TabCollections": "Collections", - "HeaderChannels": "Channels", - "TabRecordings": "Recordings", + "LabelMetadataDownloadLanguage": "Uprednost\u0148ovan\u00fd jazyk metad\u00e1t:", + "ButtonSignIn": "Prihl\u00e1si\u0165 sa", + "TitleSignIn": "Prihl\u00e1si\u0165 sa", + "HeaderPleaseSignIn": "Pros\u00edm prihl\u00e1ste sa", + "LabelUser": "U\u017e\u00edvate\u013e:", + "LabelPassword": "Heslo:", + "ButtonManualLogin": "Manu\u00e1lne prihl\u00e1senie", + "TabGuide": "Sprievodca", + "TabChannels": "Kan\u00e1ly", + "TabCollections": "Zbierky", + "HeaderChannels": "Kan\u00e1ly", + "TabRecordings": "Nahr\u00e1vky", "TabSeries": "Series", "TabFavorites": "Ob\u013e\u00faben\u00e9", - "TabMyLibrary": "My Library", + "TabMyLibrary": "Moja kni\u017enica", "LabelStartWhenPossible": "Start when possible:", "LabelStopWhenPossible": "Stop when possible:", - "MinutesBefore": "minutes before", - "MinutesAfter": "minutes after", - "TabSettings": "Settings", + "MinutesBefore": "Nastavenia", + "MinutesAfter": "min\u00fat po", + "TabSettings": "Nastavenia", "ButtonRefreshGuideData": "Refresh Guide Data", - "ButtonRefresh": "Refresh", - "OptionPriority": "Priority", + "ButtonRefresh": "Obnovi\u0165", + "OptionPriority": "Priorita", "OptionRecordOnAllChannels": "Record on all channels", "OptionRecordAnytime": "Record at any time", "OptionRecordOnlyNewEpisodes": "Record only new episodes", - "HeaderDays": "Days", - "HeaderActiveRecordings": "Active Recordings", - "HeaderLatestRecordings": "Latest Recordings", - "ButtonPlay": "Play", + "HeaderDays": "Dni", + "HeaderActiveRecordings": "Akt\u00edvne nahr\u00e1vky", + "HeaderLatestRecordings": "Posledn\u00e9 nahr\u00e1vky", + "ButtonPlay": "Prehra\u0165", "ButtonEdit": "Edit", "ButtonRecord": "Record", - "ButtonDelete": "Delete", - "ButtonRemove": "Remove", + "ButtonDelete": "Zmaza\u0165", + "ButtonRemove": "Odstr\u00e1ni\u0165", "OptionRecordSeries": "Record Series", - "HeaderDetails": "Details", + "HeaderDetails": "Detaily", "TitleLiveTV": "Live TV", "LabelNumberOfGuideDays": "Number of days of guide data to download:", "LabelNumberOfGuideDaysHelp": "Downloading more days worth of guide data provides the ability to schedule out further in advance and view more listings, but it will also take longer to download. Auto will choose based on the number of channels.", "OptionAutomatic": "Auto", - "HeaderServices": "Services", + "HeaderServices": "Slu\u017eby", "LabelCustomizeOptionsPerMediaType": "Customize for media type:", "OptionDownloadThumbImage": "Thumb", "OptionDownloadMenuImage": "Menu", @@ -359,39 +359,39 @@ "OptionDownloadBoxImage": "Box", "OptionDownloadDiscImage": "Disc", "OptionDownloadBannerImage": "Banner", - "OptionDownloadBackImage": "Back", + "OptionDownloadBackImage": "Sp\u00e4\u0165", "OptionDownloadArtImage": "Art", "OptionDownloadPrimaryImage": "Primary", "HeaderFetchImages": "Fetch Images:", - "HeaderImageSettings": "Image Settings", - "TabOther": "Other", + "HeaderImageSettings": "Nastavenia obr\u00e1zkov", + "TabOther": "In\u00e9", "LabelMaxBackdropsPerItem": "Maximum number of backdrops per item:", "LabelMaxScreenshotsPerItem": "Maximum number of screenshots per item:", "LabelMinBackdropDownloadWidth": "Minimum backdrop download width:", "LabelMinScreenshotDownloadWidth": "Minimum screenshot download width:", "ButtonAddScheduledTaskTrigger": "Add Trigger", "HeaderAddScheduledTaskTrigger": "Add Trigger", - "ButtonAdd": "Add", + "ButtonAdd": "Prida\u0165", "LabelTriggerType": "Trigger Type:", - "OptionDaily": "Daily", - "OptionWeekly": "Weekly", + "OptionDaily": "Denne", + "OptionWeekly": "T\u00fd\u017edenne", "OptionOnInterval": "On an interval", "OptionOnAppStartup": "On application startup", "OptionAfterSystemEvent": "After a system event", - "LabelDay": "Day:", - "LabelTime": "Time:", - "LabelEvent": "Event:", - "OptionWakeFromSleep": "Wake from sleep", + "LabelDay": "De\u0148:", + "LabelTime": "\u010cas:", + "LabelEvent": "Udalos\u0165:", + "OptionWakeFromSleep": "Zobudi\u0165 zo sp\u00e1nku", "LabelEveryXMinutes": "Every:", "HeaderTvTuners": "Tuners", - "HeaderLatestGames": "Latest Games", + "HeaderLatestGames": "Posledn\u00e9 hry", "TabGameSystems": "Game Systems", - "TabFolders": "Folders", + "TabFolders": "Prie\u010dinky", "LabelSpecialSeasonsDisplayName": "Special season display name:", "LabelEnableRealtimeMonitor": "Enable real time monitoring", "LabelEnableRealtimeMonitorHelp": "Changes will be processed immediately, on supported file systems.", - "ButtonScanLibrary": "Scan Library", - "HeaderNumberOfPlayers": "Players", + "ButtonScanLibrary": "Skenova\u0165 kni\u017enicu", + "HeaderNumberOfPlayers": "Prehr\u00e1va\u010de", "OptionAnyNumberOfPlayers": "Any", "Option1Player": "1+", "Option2Player": "2+", @@ -402,7 +402,7 @@ "HeaderThemeSongs": "Theme Songs", "HeaderScenes": "Scenes", "HeaderAwardsAndReviews": "Awards and Reviews", - "HeaderMusicVideos": "Music Videos", + "HeaderMusicVideos": "Hudobn\u00e9 vide\u00e1", "HeaderSpecialFeatures": "Special Features", "HeaderCastCrew": "Cast & Crew", "HeaderAdditionalParts": "Additional Parts", @@ -410,10 +410,10 @@ "ButtonPlayTrailer": "Trailer", "LabelMissing": "Missing", "OptionSpecialEpisode": "Specials", - "OptionMissingEpisode": "Missing Episodes", - "OptionUnairedEpisode": "Unaired Episodes", + "OptionMissingEpisode": "Ch\u00fdbaj\u00face epiz\u00f3dy", + "OptionUnairedEpisode": "Nevysielan\u00e9 epiz\u00f3dy", "OptionEpisodeSortName": "Episode Sort Name", - "OptionTvdbRating": "Tvdb Rating", + "OptionTvdbRating": "TVDB hodnotenie", "HeaderAddTitles": "Add Titles", "LabelEnableDlnaPlayTo": "Enable DLNA Play To", "LabelEnableDlnaPlayToHelp": "Emby can detect devices within your network and offer the ability to remote control them.", @@ -425,10 +425,10 @@ "HeaderSystemDlnaProfiles": "System Profiles", "CustomDlnaProfilesHelp": "Create a custom profile to target a new device or override a system profile.", "SystemDlnaProfilesHelp": "System profiles are read-only. Changes to a system profile will be saved to a new custom profile.", - "TabHome": "Home", + "TabHome": "Domov", "TabInfo": "Info", - "HeaderLinks": "Links", - "LinkCommunity": "Community", + "HeaderLinks": "Odkazy", + "LinkCommunity": "Komunita", "LinkGithub": "Github", "LinkApi": "Api", "LabelFriendlyServerName": "Friendly server name:", @@ -437,7 +437,7 @@ "LabelPreferredDisplayLanguageHelp": "Translating Emby is an ongoing project.", "LabelReadHowYouCanContribute": "Learn how you can contribute.", "ButtonSubmit": "Submit", - "ButtonCreate": "Create", + "ButtonCreate": "Vytvori\u0165", "LabelCustomCss": "Custom css:", "LabelCustomCssHelp": "Apply your own custom css to the web interface.", "LabelLocalHttpServerPortNumber": "Local http port number:", @@ -452,9 +452,9 @@ "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", "LabelEnableAutomaticPortMap": "Enable automatic port mapping", "LabelEnableAutomaticPortMapHelp": "Attempt to automatically map the public port to the local port via UPnP. This may not work with some router models.", - "LabelExternalDDNS": "External domain:", + "LabelExternalDDNS": "Extern\u00e1 dom\u00e9na:", "LabelExternalDDNSHelp": "If you have a dynamic DNS enter it here. Emby apps will use it when connecting remotely. This field is required when used with a custom ssl certificate. Example: mydomain.com.", - "TitleAppSettings": "App Settings", + "TitleAppSettings": "Nastavenia aplik\u00e1cie", "LabelMinResumePercentage": "Min resume percentage:", "LabelMaxResumePercentage": "Max resume percentage:", "LabelMinResumeDuration": "Min resume duration (seconds):", @@ -462,42 +462,42 @@ "LabelMaxResumePercentageHelp": "Titles are assumed fully played if stopped after this time", "LabelMinResumeDurationHelp": "Titles shorter than this will not be resumable", "HeaderName": "Name", - "HeaderDate": "Date", - "HeaderSource": "Source", + "HeaderDate": "D\u00e1tum", + "HeaderSource": "Zdroj", "HeaderStatus": "Status", - "HeaderDestination": "Destination", + "HeaderDestination": "Cie\u013e", "HeaderProgram": "Program", - "HeaderClients": "Clients", - "LabelCompleted": "Completed", + "HeaderClients": "Klienti", + "LabelCompleted": "Dokon\u010den\u00e9", "LabelFailed": "Failed", - "LabelSkipped": "Skipped", + "LabelSkipped": "Presko\u010den\u00e9", "LabelSeries": "Series:", - "LabelSeasonNumber": "Season number:", - "LabelEpisodeNumber": "Episode number:", + "LabelSeasonNumber": "\u010c\u00edslo sez\u00f3ny:", + "LabelEpisodeNumber": "\u010c\u00edslo epiz\u00f3dy:", "LabelEndingEpisodeNumber": "Ending episode number:", "LabelEndingEpisodeNumberHelp": "Only required for multi-episode files", - "HeaderSupportTheTeam": "Support the Emby Team", + "HeaderSupportTheTeam": "Podporte Emby t\u00edm", "HeaderSupportTheTeamHelp": "Help ensure the continued development of this project by purchasing Emby Premiere. A portion of all income will be contributed to other free tools we depend on.", "DonationNextStep": "Once complete, please return and enter your Emby Premiere key, which you will receive by email.", "OptionEnableEpisodeOrganization": "Enable new episode organization", "LabelSeasonFolderPattern": "Season folder pattern:", "LabelSeasonZeroFolderName": "Season zero folder name:", - "HeaderResult": "Result", - "OptionOverwriteExistingEpisodes": "Overwrite existing episodes", - "LabelTransferMethod": "Transfer method", + "HeaderResult": "V\u00fdsledok", + "OptionOverwriteExistingEpisodes": "Prep\u00edsa\u0165 existuj\u00face epiz\u00f3dy", + "LabelTransferMethod": "Sp\u00f4sob prenosu", "HeaderLatestNews": "Latest News", - "HeaderRunningTasks": "Running Tasks", - "HeaderActiveDevices": "Active Devices", + "HeaderRunningTasks": "Be\u017eiace \u00falohy", + "HeaderActiveDevices": "Akt\u00edvne zariadenia", "HeaderPendingInstallations": "Pending Installations", - "ButtonRestartNow": "Restart Now", - "ButtonRestart": "Restart", - "ButtonShutdown": "Shutdown", - "ButtonUpdateNow": "Update Now", + "ButtonRestartNow": "Re\u0161tartova\u0165 teraz", + "ButtonRestart": "Re\u0161tartova\u0165", + "ButtonShutdown": "Vypn\u00fa\u0165", + "ButtonUpdateNow": "Aktualizova\u0165 teraz", "TabHosting": "Hosting", - "PleaseUpdateManually": "Please shutdown Emby Server and install the latest version.", - "NewServerVersionAvailable": "A new version of Emby Server is available!", - "ServerUpToDate": "Emby Server is up to date", - "LabelComponentsUpdated": "The following components have been installed or updated:", + "PleaseUpdateManually": "Vypnite pros\u00edm Emby server a nain\u0161talujte najnov\u0161iu verziu.", + "NewServerVersionAvailable": "Je dostupn\u00e1 nov\u00e1 verzia Emby servera!", + "ServerUpToDate": "Emby Server je aktu\u00e1lny", + "LabelComponentsUpdated": "Nasledovn\u00e9 komponenty boli nain\u0161talovan\u00e9 alebo aktualizovan\u00e9:", "MessagePleaseRestartServerToFinishUpdating": "Please restart the server to finish applying updates.", "LabelDownMixAudioScale": "Audio boost when downmixing:", "LabelDownMixAudioScaleHelp": "Boost audio when downmixing. Set to 1 to preserve original volume value.", @@ -512,7 +512,7 @@ "MessageInvalidKey": "Emby Premiere key is missing or invalid.", "ErrorMessageInvalidKey": "In order for any premium content to be registered, you must also have an active Emby Premiere subscription.", "HeaderDisplaySettings": "Display Settings", - "LabelEnableDlnaServer": "Enable Dlna server", + "LabelEnableDlnaServer": "Povoli\u0165 DLNA server", "LabelEnableDlnaServerHelp": "Allows UPnP devices on your network to browse and play Emby content.", "LabelEnableBlastAliveMessages": "Blast alive messages", "LabelEnableBlastAliveMessagesHelp": "Enable this if the server is not detected reliably by other UPnP devices on your network.", @@ -520,64 +520,64 @@ "LabelBlastMessageIntervalHelp": "Determines the duration in seconds between server alive messages.", "LabelDefaultUser": "Default user:", "LabelDefaultUserHelp": "Determines which user library should be displayed on connected devices. This can be overridden for each device using profiles.", - "HeaderServerSettings": "Server Settings", + "HeaderServerSettings": "Nastavenia servera", "HeaderRequireManualLogin": "Require manual username entry for:", "HeaderRequireManualLoginHelp": "When disabled, Emby apps may present a login screen with a visual selection of users.", - "OptionOtherApps": "Other apps", - "OptionMobileApps": "Mobile apps", + "OptionOtherApps": "In\u00e9 aplik\u00e1cie", + "OptionMobileApps": "Mobiln\u00e9 aplik\u00e1cie", "LabelNotificationEnabled": "Enable this notification", "LabelMonitorUsers": "Monitor activity from:", "LabelSendNotificationToUsers": "Send the notification to:", "LabelUseNotificationServices": "Use the following services:", "CategoryUser": "User", - "CategorySystem": "System", - "CategoryApplication": "Application", + "CategorySystem": "Syst\u00e9m", + "CategoryApplication": "Aplik\u00e1cia", "CategoryPlugin": "Plugin", - "LabelAvailableTokens": "Available tokens:", + "LabelAvailableTokens": "Dostupn\u00e9 tokeny:", "AdditionalNotificationServices": "Browse the plugin catalog to install additional notification services.", - "OptionAllUsers": "All users", + "OptionAllUsers": "V\u0161etci u\u017e\u00edvatelia", "OptionAdminUsers": "Administrators", "OptionCustomUsers": "Custom", - "ButtonArrowUp": "Up", - "ButtonArrowDown": "Down", - "ButtonArrowLeft": "Left", - "ButtonArrowRight": "Right", - "ButtonBack": "Back", + "ButtonArrowUp": "Hore", + "ButtonArrowDown": "Dole", + "ButtonArrowLeft": "V\u013eavo", + "ButtonArrowRight": "Vpravo", + "ButtonBack": "Sp\u00e4\u0165", "ButtonInfo": "Info", - "ButtonHome": "Home", - "ButtonSearch": "Search", - "ButtonSettings": "Settings", - "Settings": "Settings", + "ButtonHome": "Domov", + "ButtonSearch": "H\u013eada\u0165", + "ButtonSettings": "Nastavenia", + "Settings": "Nastavenia", "Mute": "Mute", "Unmute": "Unmute", - "Subtitles": "Subtitles", + "Subtitles": "Titulky", "Audio": "Audio", "Rewind": "Rewind", - "Fullscreen": "Full screen", + "Fullscreen": "Na cel\u00fa obrazovku", "ExitFullscreen": "Exit full screen", - "PictureInPicture": "Picture in picture", - "PlayOnAnotherDevice": "Play on another device", + "PictureInPicture": "Obraz v obraze", + "PlayOnAnotherDevice": "Prehra\u0165 na inom zariaden\u00ed", "FastForward": "Fast-forward", "LetterButtonAbbreviation": "A", - "TabNowPlaying": "Now Playing", - "TabNavigation": "Navigation", + "TabNowPlaying": "Teraz prehr\u00e1van\u00e9", + "TabNavigation": "Navig\u00e1cia", "TabControls": "Controls", - "ButtonSubtitles": "Subtitles", + "ButtonSubtitles": "Titulky", "ButtonPreviousTrack": "Previous track", "ButtonNextTrack": "Next track", "ButtonStop": "Stop", - "ButtonPause": "Pause", - "ButtonNext": "Next", - "ButtonPrevious": "Previous", + "ButtonPause": "Pauza", + "ButtonNext": "\u010eal\u0161ie", + "ButtonPrevious": "Predch\u00e1dzaj\u00face", "LabelGroupMoviesIntoCollections": "Group movies into collections", "LabelGroupMoviesIntoCollectionsHelp": "When displaying movie lists, movies belonging to a collection will be displayed as one grouped item.", "HeaderLatestMedia": "Latest Media", - "OptionNoSubtitles": "No Subtitles", - "HeaderCollections": "Collections", + "OptionNoSubtitles": "\u017diadne titulky", + "HeaderCollections": "Zbierky", "LabelProfileCodecsHelp": "Separated by comma. This can be left empty to apply to all codecs.", "LabelProfileContainersHelp": "Separated by comma. This can be left empty to apply to all containers.", "HeaderResponseProfile": "Response Profile", - "LabelType": "Type:", + "LabelType": "Typ:", "LabelProfileContainer": "Container:", "LabelProfileVideoCodecs": "Video codecs:", "LabelProfileAudioCodecs": "Audio codecs:", @@ -596,7 +596,7 @@ "OptionPlainStorageFoldersHelp": "If enabled, all folders are represented in DIDL as \"object.container.storageFolder\" instead of a more specific type, such as \"object.container.person.musicArtist\".", "OptionPlainVideoItems": "Display all videos as plain video items", "OptionPlainVideoItemsHelp": "If enabled, all videos are represented in DIDL as \"object.item.videoItem\" instead of a more specific type, such as \"object.item.videoItem.movie\".", - "LabelSupportedMediaTypes": "Supported Media Types:", + "LabelSupportedMediaTypes": "Podporovan\u00e9 typy m\u00e9di\u00ed:", "HeaderIdentification": "Identification", "TabDirectPlay": "Direct Play", "TabContainers": "Containers", @@ -629,15 +629,15 @@ "OptionIgnoreTranscodeByteRangeRequests": "Ignore transcode byte range requests", "OptionIgnoreTranscodeByteRangeRequestsHelp": "If enabled, these requests will be honored but will ignore the byte range header.", "LabelFriendlyName": "Friendly name", - "LabelManufacturer": "Manufacturer", + "LabelManufacturer": "V\u00fdrobca", "LabelManufacturerUrl": "Manufacturer url", - "LabelModelName": "Model name", - "LabelModelNumber": "Model number", - "LabelModelDescription": "Model description", + "LabelModelName": "N\u00e1zov modelu", + "LabelModelNumber": "\u010c\u00edslo modelu", + "LabelModelDescription": "Popis modelu", "LabelModelUrl": "Model url", - "LabelSerialNumber": "Serial number", - "LabelDeviceDescription": "Device description", - "HeaderIdentificationCriteriaHelp": "Enter at least one identification criteria.", + "LabelSerialNumber": "S\u00e9riov\u00e9 \u010d\u00edslo", + "LabelDeviceDescription": "Popis zariadenia", + "HeaderIdentificationCriteriaHelp": "Zadajte aspo\u0148 jedno identifika\u010dn\u00e9 krit\u00e9rium.", "HeaderDirectPlayProfileHelp": "Add direct play profiles to indicate which formats the device can handle natively.", "HeaderTranscodingProfileHelp": "Add transcoding profiles to indicate which formats should be used when transcoding is required.", "HeaderContainerProfileHelp": "Container profiles indicate the limitations of a device when playing specific formats. If a limitation applies then the media will be transcoded, even if the format is configured for direct play.", @@ -658,49 +658,49 @@ "OptionReportByteRangeSeekingWhenTranscoding": "Report that the server supports byte seeking when transcoding", "OptionReportByteRangeSeekingWhenTranscodingHelp": "This is required for some devices that don't time seek very well.", "HeaderDownloadSubtitlesFor": "Download subtitles for:", - "LabelSkipIfGraphicalSubsPresent": "Skip if the video already contains embedded subtitles", + "LabelSkipIfGraphicalSubsPresent": "Presko\u010di\u0165 ak video obsahuje vlo\u017een\u00e9 titulky", "LabelSkipIfGraphicalSubsPresentHelp": "Keeping text versions of subtitles will result in more efficient delivery and decrease the likelihood of video transcoding.", - "TabSubtitles": "Subtitles", - "TabChapters": "Chapters", + "TabSubtitles": "Titulky", + "TabChapters": "Kapitoly", "LabelOpenSubtitlesUsername": "Open Subtitles username:", "LabelOpenSubtitlesPassword": "Open Subtitles password:", "LabelPlayDefaultAudioTrack": "Play default audio track regardless of language", "LabelSubtitlePlaybackMode": "Subtitle mode:", - "LabelDownloadLanguages": "Download languages:", + "LabelDownloadLanguages": "Prebra\u0165 jazyky:", "ButtonRegister": "Register", "LabelSkipIfAudioTrackPresent": "Skip if the default audio track matches the download language", "LabelSkipIfAudioTrackPresentHelp": "Uncheck this to ensure all videos have subtitles, regardless of audio language.", - "SendMessage": "Send message", - "HeaderSendMessage": "Send Message", - "ButtonSend": "Send", + "SendMessage": "Posla\u0165 spr\u00e1vu", + "HeaderSendMessage": "Posla\u0165 spr\u00e1vu", + "ButtonSend": "Odosla\u0165", "ViewPlaybackInfo": "View playback info", - "LabelMessageText": "Message text:", + "LabelMessageText": "Text spr\u00e1vy:", "LabelMessageTitle": "Message title:", - "MessageNoAvailablePlugins": "No available plugins.", - "LabelDisplayPluginsFor": "Display plugins for:", - "PluginTabAppClassic": "Emby for Windows Media Center", + "MessageNoAvailablePlugins": "\u017diadne dostupn\u00e9 roz\u0161\u00edrenia.", + "LabelDisplayPluginsFor": "Zobrazi\u0165 roz\u0161\u00edrenia pre:", + "PluginTabAppClassic": "Emby pre Windows Media Center", "HeaderTypeText": "Enter Text", "LabelTypeText": "Text", "TabDisplay": "Display", - "TabLanguages": "Languages", - "TabAppSettings": "App Settings", - "HeaderHomePage": "Home Page", + "TabLanguages": "Jazyky", + "TabAppSettings": "Nastavenia aplik\u00e1cie", + "HeaderHomePage": "Domovsk\u00e1 str\u00e1nka", "OptionAuto": "Auto", - "OptionYes": "Yes", - "OptionNo": "No", + "OptionYes": "\u00c1no", + "OptionNo": "Nie", "HeaderOptions": "Options", "LabelHomeScreenSectionValue": "Home screen section {0}:", - "OptionResumablemedia": "Resume", + "OptionResumablemedia": "Pokra\u010dova\u0165", "OptionLatestMedia": "Latest media", "OptionLatestChannelMedia": "Latest channel items", "HeaderLatestChannelItems": "Latest Channel Items", - "OptionNone": "None", + "OptionNone": "\u017diadne", "HeaderLiveTv": "Live TV", "HeaderReports": "Reports", - "HeaderSettings": "Settings", + "HeaderSettings": "Nastavenia", "OptionDefaultSort": "Default", - "TabNextUp": "Next Up", - "HeaderBecomeProjectSupporter": "Get Emby Premiere", + "TabNextUp": "Nasleduje", + "HeaderBecomeProjectSupporter": "Z\u00edska\u0165 Emby Premiere", "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", "MessageNoPlaylistsAvailable": "Playlists allow you to create lists of content to play consecutively at a time. To add items to playlists, right click or tap and hold, then select Add to Playlist.", @@ -709,7 +709,7 @@ "LabelChannelStreamQuality": "Preferred internet channel quality:", "LabelChannelStreamQualityHelp": "In a low bandwidth environment, limiting quality can help ensure a smooth streaming experience.", "OptionBestAvailableStreamQuality": "Best available", - "ViewTypeMovies": "Movies", + "ViewTypeMovies": "Filmy", "ViewTypeTvShows": "TV", "ViewTypeGames": "Games", "ViewTypeMusic": "Music", @@ -720,10 +720,10 @@ "ViewTypeMusicFavoriteArtists": "Favorite Artists", "ViewTypeMusicFavoriteSongs": "Ob\u013e\u00faben\u00e9 pesni\u010dky", "HeaderMyViews": "My Views", - "OptionDisplayAdultContent": "Display adult content", + "OptionDisplayAdultContent": "Zobrazi\u0165 obsah pre dospel\u00fdch", "OptionLibraryFolders": "Media folders", - "TitleRemoteControl": "Remote Control", - "OptionLatestTvRecordings": "Latest recordings", + "TitleRemoteControl": "\u010eia\u013ekov\u00e9 ovl\u00e1danie", + "OptionLatestTvRecordings": "Posledn\u00e9 nahr\u00e1vky", "LabelProtocolInfo": "Protocol info:", "LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.", "TabNfoSettings": "Nfo Settings", @@ -753,20 +753,20 @@ "TitleServer": "Server", "LabelCache": "Cache:", "LabelLogs": "Logs:", - "LabelMetadata": "Metadata:", + "LabelMetadata": "Metad\u00e1ta:", "LabelTranscodingTemporaryFiles": "Transcoding temporary files:", - "HeaderLatestMusic": "Latest Music", + "HeaderLatestMusic": "Posledn\u00e1 hudba", "HeaderBranding": "Branding", "HeaderApiKeys": "Api Keys", "HeaderApiKeysHelp": "External applications are required to have an Api key in order to communicate with Emby Server. Keys are issued by logging in with an Emby account, or by manually granting the application a key.", "HeaderApiKey": "Api Key", "HeaderApp": "App", - "HeaderDevice": "Device", + "HeaderDevice": "Zariadenie", "HeaderUser": "User", "HeaderDateIssued": "Date Issued", "HeaderHttpHeaders": "Http Headers", "HeaderIdentificationHeader": "Identification Header", - "LabelValue": "Value:", + "LabelValue": "Hodnota:", "LabelMatchType": "Match type:", "OptionEquals": "Equals", "OptionRegex": "Regex", @@ -779,29 +779,29 @@ "LabelView": "View:", "TabUsers": "Users", "HeaderFeatures": "Features", - "HeaderAdvanced": "Advanced", + "HeaderAdvanced": "Pokro\u010dil\u00e9", "ButtonSync": "Sync", "TabScheduledTasks": "Scheduled Tasks", - "HeaderChapters": "Chapters", + "HeaderChapters": "Kapitoly", "HeaderResumeSettings": "Resume Settings", "TabSync": "Sync", - "TitleUsers": "Users", - "LabelProtocol": "Protocol:", - "OptionProtocolHttp": "Http", + "TitleUsers": "U\u017e\u00edvatelia", + "LabelProtocol": "Protokol:", + "OptionProtocolHttp": "HTTP", "OptionProtocolHls": "Http Live Streaming", "LabelContext": "Context:", "TabPlaylists": "Playlists", - "ButtonClose": "Close", - "LabelAllLanguages": "All languages", - "LabelSource": "Source:", - "OptionAll": "All", - "LabelImage": "Image:", - "HeaderImages": "Images", + "ButtonClose": "Zatvori\u0165", + "LabelAllLanguages": "V\u0161etky jazyky", + "LabelSource": "Zdroj:", + "OptionAll": "V\u0161etky", + "LabelImage": "Obr\u00e1zok:", + "HeaderImages": "Obr\u00e1zky", "HeaderBackdrops": "Backdrops", "HeaderAddUpdateImage": "Add\/Update Image", "LabelDropImageHere": "Drop image here.", - "LabelJpgPngOnly": "JPG\/PNG only", - "LabelImageType": "Image type:", + "LabelJpgPngOnly": "Iba JPG\/PNG", + "LabelImageType": "Typ obr\u00e1zku:", "OptionPrimary": "Primary", "OptionArt": "Art", "OptionBox": "Box", @@ -811,62 +811,62 @@ "OptionLogo": "Logo", "OptionMenu": "Menu", "OptionScreenshot": "Screenshot", - "OptionLocked": "Locked", - "OptionUnidentified": "Unidentified", + "OptionLocked": "Zamknut\u00e9", + "OptionUnidentified": "Neidentifikovan\u00e9", "OptionMissingParentalRating": "Missing parental rating", "OptionSeason0": "Season 0", "LabelReport": "Report:", "OptionReportSongs": "Songs", "OptionReportSeries": "Series", - "OptionReportSeasons": "Seasons", + "OptionReportSeasons": "Sez\u00f3ny", "OptionReportTrailers": "Trailers", - "OptionReportMusicVideos": "Music videos", - "OptionReportMovies": "Movies", - "OptionReportHomeVideos": "Home videos", - "OptionReportGames": "Games", - "OptionReportEpisodes": "Episodes", - "OptionReportCollections": "Collections", - "OptionReportBooks": "Books", - "OptionReportArtists": "Artists", - "OptionReportAlbums": "Albums", - "ButtonMore": "More", - "HeaderActivity": "Activity", + "OptionReportMusicVideos": "Hudobn\u00e9 vide\u00e1", + "OptionReportMovies": "Filmy", + "OptionReportHomeVideos": "Dom\u00e1ce vide\u00e1", + "OptionReportGames": "Hry", + "OptionReportEpisodes": "Epiz\u00f3dy", + "OptionReportCollections": "Zbierky", + "OptionReportBooks": "Knihy", + "OptionReportArtists": "Umelci", + "OptionReportAlbums": "Albumy", + "ButtonMore": "Viac", + "HeaderActivity": "Aktivita", "PluginInstalledWithName": "{0} was installed", "PluginUpdatedWithName": "{0} was updated", "PluginUninstalledWithName": "{0} was uninstalled", "LabelRunningTimeValue": "Running time: {0}", - "LabelIpAddressValue": "Ip address: {0}", + "LabelIpAddressValue": "IP adresa: {0}", "MessageServerConfigurationUpdated": "Server configuration has been updated", "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", "MessageApplicationUpdated": "Emby Server has been updated", "ProviderValue": "Provider: {0}", - "HeaderRecentActivity": "Recent Activity", + "HeaderRecentActivity": "Posledn\u00e1 aktivita", "HeaderPeople": "People", - "OptionComposers": "Composers", - "OptionOthers": "Others", + "OptionComposers": "Skladatelia", + "OptionOthers": "In\u00e9", "ViewTypeFolders": "Folders", "OptionDisplayFolderView": "Display a folder view to show plain media folders", "OptionDisplayFolderViewHelp": "If enabled, Emby apps will display a Folders category alongside your media library. This is useful if you'd like to have plain folder views.", "ViewTypeLiveTvRecordingGroups": "Recordings", - "ViewTypeLiveTvChannels": "Channels", - "LabelEasyPinCode": "Easy pin code:", + "ViewTypeLiveTvChannels": "Kan\u00e1ly", + "LabelEasyPinCode": "Jednoduch\u00fd PIN k\u00f3d:", "EasyPasswordHelp": "Your easy pin code is used for offline access with supported Emby apps, and can also be used for easy in-network sign in.", "LabelInNetworkSignInWithEasyPassword": "Enable in-network sign in with my easy pin code", "LabelInNetworkSignInWithEasyPasswordHelp": "If enabled, you'll be able to use your easy pin code to sign in to Emby apps from inside your home network. Your regular password will only be needed away from home. If the pin code is left blank, you won't need a password within your home network.", - "HeaderPassword": "Password", - "HeaderViewOrder": "View Order", + "HeaderPassword": "Heslo", + "HeaderViewOrder": "Poradie zobrazenia", "ButtonResetEasyPassword": "Reset easy pin code", "HeaderPersonInfo": "Person Info", "HeaderConfirmDeletion": "Confirm Deletion", "LabelAlbumArtist": "Album artist:", "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", - "LabelCommunityRating": "Community rating:", - "LabelReleaseDate": "Release date:", + "LabelCommunityRating": "Hodnotenie komunity:", + "LabelReleaseDate": "D\u00e1tum vydania:", "LabelEndDate": "End date:", "LabelAirDate": "Air days:", "LabelAirTime:": "Air time:", - "LabelRuntimeMinutes": "Run time (minutes):", + "LabelRuntimeMinutes": "D\u013a\u017eka (min\u00faty):", "HeaderSpecialEpisodeInfo": "Special Episode Info", "LabelDisplaySpecialsWithinSeasons": "Display specials within seasons they aired in", "HeaderGenres": "Genres", @@ -874,28 +874,28 @@ "HeaderTags": "Tags", "OptionNoTrailer": "No Trailer", "ButtonPurchase": "Purchase", - "OptionActor": "Actor", + "OptionActor": "Herec", "OptionComposer": "Composer", - "OptionDirector": "Director", - "OptionProducer": "Producer", + "OptionDirector": "Re\u017eis\u00e9r", + "OptionProducer": "Producent", "LabelAirDays": "Air days:", "LabelAirTime": "Air time:", "HeaderMediaInfo": "Media Info", - "HeaderPhotoInfo": "Photo Info", - "HeaderInstall": "Install", + "HeaderPhotoInfo": "Inform\u00e1cie o fotke", + "HeaderInstall": "In\u0161talova\u0165", "LabelSelectVersionToInstall": "Select version to install:", "LinkLearnMoreAboutSubscription": "Learn about Emby Premiere", "MessagePluginRequiresSubscription": "This plugin will require an active Emby Premiere subscription after the 14 day free trial.", "MessagePremiumPluginRequiresMembership": "This plugin will require an active Emby Premiere subscription in order to purchase after the 14 day free trial.", "HeaderReviews": "Reviews", "HeaderDeveloperInfo": "Developer Info", - "HeaderRevisionHistory": "Revision History", + "HeaderRevisionHistory": "Hist\u00f3ria rev\u00edzi\u00ed", "ButtonViewWebsite": "View website", "HeaderXmlSettings": "Xml Settings", "HeaderXmlDocumentAttributes": "Xml Document Attributes", "HeaderXmlDocumentAttribute": "Xml Document Attribute", "XmlDocumentAttributeListHelp": "These attributes are applied to the root element of every xml response.", - "OptionSaveMetadataAsHidden": "Save metadata and images as hidden files", + "OptionSaveMetadataAsHidden": "Ulo\u017ei\u0165 metad\u00e1ta a obr\u00e1zky ako skryt\u00e9 s\u00fabory", "LabelExtractChaptersDuringLibraryScan": "Extract chapter images during the library scan", "LabelExtractChaptersDuringLibraryScanHelp": "If enabled, chapter images will be extracted when videos are imported during the library scan. If disabled they will be extracted during the chapter images scheduled task, allowing the regular library scan to complete faster.", "LabelConnectGuestUserName": "Their Emby username or email address:", @@ -907,7 +907,7 @@ "HeaderSubtitleProfile": "Subtitle Profile", "HeaderSubtitleProfiles": "Subtitle Profiles", "HeaderSubtitleProfilesHelp": "Subtitle profiles describe the subtitle formats supported by the device.", - "LabelFormat": "Format:", + "LabelFormat": "Form\u00e1t:", "LabelMethod": "Method:", "LabelDidlMode": "Didl mode:", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", @@ -915,12 +915,12 @@ "OptionEmbedSubtitles": "Embed within container", "OptionExternallyDownloaded": "External download", "OptionHlsSegmentedSubtitles": "Hls segmented subtitles", - "LabelSubtitleFormatHelp": "Example: srt", + "LabelSubtitleFormatHelp": "Pr\u00edklad: srt", "ButtonLearnMore": "Learn more", "TabPlayback": "Playback", - "HeaderAudioSettings": "Audio Settings", - "HeaderSubtitleSettings": "Subtitle Settings", - "TabCinemaMode": "Cinema Mode", + "HeaderAudioSettings": "Nastavenia zvuku", + "HeaderSubtitleSettings": "Nastavenia titulkov", + "TabCinemaMode": "Kino m\u00f3d", "TitlePlayback": "Playback", "LabelEnableCinemaModeFor": "Enable cinema mode for:", "CinemaModeConfigurationHelp": "Cinema mode brings the theater experience straight to your living room with the ability to play trailers and custom intros before the main feature.", @@ -937,80 +937,80 @@ "OptionUpcomingDvdMovies": "Include trailers from new and upcoming movies on Dvd & Blu-ray", "OptionUpcomingStreamingMovies": "Include trailers from new and upcoming movies on Netflix", "CinemaModeConfigurationHelp2": "Emby apps will have a setting to enable or disable cinema mode. TV apps enable cinema mode by default.", - "LabelEnableCinemaMode": "Enable cinema mode", - "HeaderCinemaMode": "Cinema Mode", + "LabelEnableCinemaMode": "Povoli\u0165 kino m\u00f3d", + "HeaderCinemaMode": "Kino m\u00f3d", "LabelDateAddedBehavior": "Date added behavior for new content:", "OptionDateAddedImportTime": "Use date scanned into the library", - "OptionDateAddedFileTime": "Use file creation date", + "OptionDateAddedFileTime": "Pou\u017ei\u0165 d\u00e1tum vytvorenia s\u00faboru", "LabelDateAddedBehaviorHelp": "If a metadata value is present it will always be used before either of these options.", "LabelNumberTrailerToPlay": "Number of trailers to play:", - "TitleDevices": "Devices", + "TitleDevices": "Zariadenia", "TabCameraUpload": "Camera Upload", - "TabDevices": "Devices", - "HeaderLibrarySettings": "Library Settings", - "HeaderChapterSettings": "Chapter Settings", + "TabDevices": "Zariadenia", + "HeaderLibrarySettings": "Nastavenia kni\u017enice", + "HeaderChapterSettings": "Nastavenia kapitoly", "HeaderCameraUploadHelp": "Emby apps can automatically upload photos and videos taken from your mobile devices into Emby Server.", "LabelCameraUploadPath": "Camera upload path:", "LabelCameraUploadPathHelp": "Select a custom upload path. This will override any default settings set in the Camera Upload section. If left blank, a default folder will be used. If using a custom path it will also need to be added in the library setup area.", - "LabelCreateCameraUploadSubfolder": "Create a subfolder for each device", + "LabelCreateCameraUploadSubfolder": "Vytvori\u0165 podprie\u010dinok pre ka\u017ed\u00e9 zariadenie", "LabelCreateCameraUploadSubfolderHelp": "Specific folders can be assigned to a device by clicking on it from the Devices page.", "LabelCustomDeviceDisplayName": "Display name:", "LabelCustomDeviceDisplayNameHelp": "Supply a custom display name or leave empty to use the name reported by the device.", "HeaderInviteUser": "Invite User", "LabelConnectGuestUserNameHelp": "This is the username that your friend uses to sign in to the Emby website, or their email address.", "HeaderInviteUserHelp": "Sharing your media with friends is easier than ever before with Emby Connect.", - "ButtonSendInvitation": "Send Invitation", + "ButtonSendInvitation": "Posla\u0165 pozv\u00e1nku", "HeaderSignInWithConnect": "Sign in with Emby Connect", - "HeaderGuests": "Guests", - "HeaderPendingInvitations": "Pending Invitations", - "TabParentalControl": "Parental Control", + "HeaderGuests": "Hostia", + "HeaderPendingInvitations": "\u010cakaj\u00face pozv\u00e1nky", + "TabParentalControl": "Rodi\u010dovsk\u00e1 kontrola", "HeaderAccessSchedule": "Access Schedule", "HeaderAccessScheduleHelp": "Create an access schedule to limit access to certain hours.", - "LabelAccessDay": "Day of week:", + "LabelAccessDay": "De\u0148 v t\u00fd\u017edni:", "LabelAccessStart": "Start time:", "LabelAccessEnd": "End time:", "HeaderSchedule": "Schedule", - "OptionEveryday": "Every day", + "OptionEveryday": "Ka\u017ed\u00fd de\u0148", "OptionWeekdays": "Weekdays", "OptionWeekends": "Weekends", "MessageProfileInfoSynced": "User profile information synced with Emby Connect.", "HeaderOptionalLinkEmbyAccount": "Optional: Link your Emby account", "ButtonTrailer": "Trailer", "MessageNoTrailersFound": "No trailers found. Install the Trailer channel to enhance your movie experience by adding a library of internet trailers.", - "HeaderNewUsers": "New Users", - "ButtonSignUp": "Sign up", - "ButtonForgotPassword": "Forgot password", - "HeaderSelectServer": "Select Server", + "HeaderNewUsers": "Nov\u00ed pou\u017e\u00edvatelia", + "ButtonSignUp": "Prihl\u00e1si\u0165 sa", + "ButtonForgotPassword": "Zabudnut\u00e9 heslo", + "HeaderSelectServer": "Vybra\u0165 server", "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to accept it below or by clicking the link in the email.", - "TitleNewUser": "New User", - "ButtonConfigurePassword": "Configure Password", + "TitleNewUser": "Nov\u00fd u\u017e\u00edvate\u013e", + "ButtonConfigurePassword": "Nastavi\u0165 heslo", "HeaderDashboardUserPassword": "User passwords are managed within each user's personal profile settings.", "HeaderLibraryAccess": "Library Access", "HeaderChannelAccess": "Channel Access", - "HeaderLatestItems": "Latest Items", + "HeaderLatestItems": "Posledn\u00e9 polo\u017eky", "HeaderShareMediaFolders": "Share Media Folders", "MessageGuestSharingPermissionsHelp": "Most features are initially unavailable to guests but can be enabled as needed.", - "HeaderInvitations": "Invitations", - "Invitations": "Invitations", + "HeaderInvitations": "Pozv\u00e1nky", + "Invitations": "Pozv\u00e1nky", "LabelForgotPasswordUsernameHelp": "Enter your username, if you remember it.", - "HeaderForgotPassword": "Forgot Password", - "TitlePasswordReset": "Password Reset", - "LabelPasswordRecoveryPinCode": "Pin code:", - "HeaderPasswordReset": "Password Reset", + "HeaderForgotPassword": "Zabudnut\u00e9 heslo", + "TitlePasswordReset": "Obnovenie hesla", + "LabelPasswordRecoveryPinCode": "PIN k\u00f3d:", + "HeaderPasswordReset": "Obnovi\u0165 heslo", "HeaderParentalRatings": "Parental Ratings", "HeaderVideoTypes": "Video Types", - "HeaderYears": "Years", + "HeaderYears": "Roky", "HeaderBlockItemsWithNoRating": "Block items with no or unrecognized rating information:", "LabelBlockContentWithTags": "Block items with tags:", "LabelEnableSingleImageInDidlLimit": "Limit to single embedded image", "LabelEnableSingleImageInDidlLimitHelp": "Some devices will not render properly if multiple images are embedded within Didl.", - "TabActivity": "Activity", + "TabActivity": "Aktivita", "TitleSync": "Sync", "OptionAllowSyncContent": "Allow Sync", "OptionAllowContentDownloading": "Allow media downloading", - "NameSeasonUnknown": "Season Unknown", + "NameSeasonUnknown": "Nezn\u00e1ma sez\u00f3na", "NameSeasonNumber": "Season {0}", - "LabelNewUserNameHelp": "Usernames can contain letters (a-z), numbers (0-9), dashes (-), underscores (_), apostrophes ('), and periods (.)", + "LabelNewUserNameHelp": "Pou\u017e\u00edvate\u013esk\u00e9 men\u00e1 m\u00f4\u017eu obsahova\u0165 p\u00edsmen\u00e1 (a-z), \u010d\u00edsla (0-9), poml\u010dky (-), pod\u010diarkovn\u00edky (_), apostrofy (') a bodky (.)", "TabJobs": "Jobs", "TabSyncJobs": "Sync Jobs", "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", @@ -1035,42 +1035,42 @@ "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", "HeaderPlaylists": "Playlists", "HeaderViewStyles": "View Styles", - "TabPhotos": "Photos", - "HeaderWelcomeToEmby": "Welcome to Emby", + "TabPhotos": "Fotky", + "HeaderWelcomeToEmby": "V\u00edtajte v Emby", "EmbyIntroMessage": "With Emby you can easily stream videos, music and photos to smart phones, tablets and other devices from your Emby Server.", - "ButtonSkip": "Skip", + "ButtonSkip": "Presko\u010di\u0165", "TextConnectToServerManually": "Connect to server manually", "ButtonSignInWithConnect": "Sign in with Emby Connect", - "ButtonConnect": "Connect", + "ButtonConnect": "Pripoji\u0165", "LabelServerHost": "Host:", - "LabelServerHostHelp": "192.168.1.100 or https:\/\/myserver.com", + "LabelServerHostHelp": "192.168.1.100 alebo https:\/\/myserver.com", "LabelServerPort": "Port:", - "HeaderNewServer": "New Server", + "HeaderNewServer": "Nov\u00fd server", "ButtonChangeServer": "Change Server", - "HeaderConnectToServer": "Connect to Server", + "HeaderConnectToServer": "Propoji\u0165 sa k serveru", "OptionReportList": "List View", "OptionReportStatistics": "Statistics", "OptionReportGrouping": "Grouping", "HeaderExport": "Export", - "HeaderColumns": "Columns", + "HeaderColumns": "St\u013apce", "ButtonReset": "Reset", "OptionEnableExternalVideoPlayers": "Enable external video players", "LabelEnableFullScreen": "Enable fullscreen mode", "LabelEmail": "Email:", "LabelUsername": "Username:", - "HeaderSignUp": "Sign Up", - "LabelPasswordConfirm": "Password (confirm):", - "ButtonAddServer": "Add Server", - "TabHomeScreen": "Home Screen", + "HeaderSignUp": "Prihl\u00e1si\u0165 sa", + "LabelPasswordConfirm": "Heslo (potvrdenie):", + "ButtonAddServer": "Prida\u0165 server", + "TabHomeScreen": "Domovsk\u00e1 obrazovka", "HeaderDisplay": "Display", - "HeaderNavigation": "Navigation", - "OptionEnableAutomaticServerUpdates": "Enable automatic server updates", + "HeaderNavigation": "Navig\u00e1cia", + "OptionEnableAutomaticServerUpdates": "Povoli\u0165 automatick\u00e9 aktualiz\u00e1cie servera", "OptionOtherTrailers": "Include trailers from older movies", "HeaderOverview": "Overview", - "HeaderType": "Type", + "HeaderType": "Typ", "OptionReportActivities": "Activities Log", "HeaderTunerDevices": "Tuner Devices", - "HeaderAddDevice": "Add Device", + "HeaderAddDevice": "Prida\u0165 zariadenie", "HeaderExternalServices": "External Services", "LabelTunerIpAddress": "Tuner IP Address:", "TabExternalServices": "External Services", @@ -1083,18 +1083,18 @@ "MessageTunerDeviceNotListed": "Is your tuner device not listed? Try installing an external service provider for more Live TV options.", "LabelImportOnlyFavoriteChannels": "Restrict to channels marked as favorite", "ImportFavoriteChannelsHelp": "If enabled, only channels that are marked as favorite on the tuner device will be imported.", - "ButtonRepeat": "Repeat", + "ButtonRepeat": "Opakova\u0165", "LabelEnableThisTuner": "Enable this tuner", "LabelEnableThisTunerHelp": "Uncheck to prevent importing channels from this tuner.", "HeaderImagePrimary": "Primary", "HeaderImageBackdrop": "Backdrop", "HeaderImageLogo": "Logo", "HeaderUserPrimaryImage": "User Image", - "ButtonProfile": "Profile", + "ButtonProfile": "Profil", "ButtonProfileHelp": "Set your profile image and password.", - "HeaderHomeScreenSettings": "Home Screen settings", - "HeaderProfile": "Profile", - "HeaderLanguage": "Language", + "HeaderHomeScreenSettings": "Nastavenia dom\u00e1cej obrazovky", + "HeaderProfile": "Profil", + "HeaderLanguage": "Jazyk", "LabelTranscodingThreadCount": "Transcoding thread count:", "LabelTranscodingThreadCountHelp": "Select the maximum number of threads to use when transcoding. Reducing the thread count will lower cpu usage but may not convert fast enough for a smooth playback experience.", "OptionMax": "Max", @@ -1107,47 +1107,47 @@ "HeaderDefaultRecordingSettings": "Default Recording Settings", "OptionEnableRecordingSubfolders": "Create sub-folders for categories such as Sports, Kids, etc.", "HeaderSubtitles": "Subtitles", - "HeaderVideos": "Videos", + "HeaderVideos": "Vide\u00e1", "LabelHardwareAccelerationType": "Hardware acceleration:", "LabelHardwareAccelerationTypeHelp": "Available on supported systems only.", "ButtonServerDashboard": "Server Dashboard", "HeaderAdmin": "Admin", - "ButtonSignOut": "Sign out", + "ButtonSignOut": "Odhl\u00e1si\u0165 sa", "HeaderCameraUpload": "Camera Upload", "SelectCameraUploadServers": "Upload camera photos to the following servers:", "ButtonClear": "Clear", - "LabelFolder": "Folder:", - "HeadersFolders": "Folders", + "LabelFolder": "Prie\u010dinok:", + "HeadersFolders": "Prie\u010dinky", "LabelDisplayName": "Display name:", "LabelCodecIntrosPath": "Codec intros path:", "LabelCodecIntrosPathHelp": "A folder containing video files. If an intro video file name matches the video codec, audio codec, audio profile, or a tag, then it will be played prior to the main feature.", "OptionConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format", "OptionConvertRecordingsToStreamingFormatHelp": "Recordings will be converted on the fly to MKV for easy playback on your devices.", "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", - "OptionPlayNextEpisodeAutomatically": "Play next episode automatically", + "OptionPlayNextEpisodeAutomatically": "Automaticky prehra\u0165 \u010fal\u0161iu epiz\u00f3du", "OptionDownloadImagesInAdvance": "Download images in advance", - "SettingsSaved": "Settings saved.", + "SettingsSaved": "Nastavenia ulo\u017een\u00e9.", "OptionDownloadImagesInAdvanceHelp": "By default, most images are only downloaded when requested by an Emby app. Enable this option to download all images in advance, as new media is imported. This may cause significantly longer library scans.", "Users": "Users", - "Delete": "Delete", - "Password": "Password", - "DeleteImage": "Delete Image", + "Delete": "Zmaza\u0165", + "Password": "Heslo", + "DeleteImage": "Zmaza\u0165 obr\u00e1zok", "MessageThankYouForSupporting": "Thank you for supporting Emby.", - "DeleteImageConfirmation": "Are you sure you wish to delete this image?", + "DeleteImageConfirmation": "Ste si ist\u00fd, \u017ee chcete zmaza\u0165 tento obr\u00e1zok?", "FileReadCancelled": "The file read has been canceled.", - "FileNotFound": "File not found.", - "FileReadError": "An error occurred while reading the file.", - "DeleteUser": "Delete User", - "DeleteUserConfirmation": "Are you sure you wish to delete this user?", - "PasswordResetHeader": "Reset Password", - "PasswordResetComplete": "The password has been reset.", + "FileNotFound": "S\u00fabor nen\u00e1jden\u00fd.", + "FileReadError": "Pri \u010d\u00edtan\u00ed s\u00faboru nastala chyba.", + "DeleteUser": "Zmaza\u0165 pou\u017e\u00edvate\u013ea", + "DeleteUserConfirmation": "Ste si ist\u00fd, \u017ee chcete zmaza\u0165 tohto pou\u017e\u00edvate\u013ea?", + "PasswordResetHeader": "Obnovi\u0165 heslo", + "PasswordResetComplete": "Heslo bolo obnoven\u00e9.", "PinCodeResetComplete": "The pin code has been reset.", - "PasswordResetConfirmation": "Are you sure you wish to reset the password?", + "PasswordResetConfirmation": "Naozaj chcete obnovi\u0165 heslo?", "PinCodeResetConfirmation": "Are you sure you wish to reset the pin code?", "HeaderPinCodeReset": "Reset Pin Code", - "PasswordSaved": "Password saved.", + "PasswordSaved": "Heslo ulo\u017een\u00e9.", "PasswordMatchError": "Password and password confirmation must match.", - "UninstallPluginHeader": "Uninstall Plugin", + "UninstallPluginHeader": "Odin\u0161talova\u0165 roz\u0161\u00edrenie", "UninstallPluginConfirmation": "Are you sure you wish to uninstall {0}?", "NoPluginConfigurationMessage": "This plugin has no settings to configure.", "NoPluginsInstalledMessage": "You have no plugins installed.", @@ -1165,44 +1165,44 @@ "HeaderAddTag": "Add Tag", "LabelTag": "Tag:", "ButtonSelectView": "Select view", - "HeaderSelectDate": "Select Date", + "HeaderSelectDate": "Vybra\u0165 d\u00e1tum", "ServerUpdateNeeded": "This Emby Server needs to be updated. To download the latest version, please visit {0}", "LabelFromHelp": "Example: {0} (on the server)", "HeaderMyMedia": "Moje M\u00e9dia", "MessageErrorLoadingSupporterInfo": "There was an error loading Emby Premiere information. Please try again later.", - "HeaderConfirmRemoveUser": "Remove User", - "ValueTimeLimitSingleHour": "Time limit: 1 hour", + "HeaderConfirmRemoveUser": "Odobra\u0165 pou\u017e\u00edvate\u013ea", + "ValueTimeLimitSingleHour": "\u010casov\u00fd limit: 1 hodina", "ValueTimeLimitMultiHour": "Time limit: {0} hours", - "PluginCategoryGeneral": "General", - "PluginCategoryContentProvider": "Content Providers", - "PluginCategoryScreenSaver": "Screen Savers", - "PluginCategoryTheme": "Themes", + "PluginCategoryGeneral": "V\u0161eobecn\u00e9", + "PluginCategoryContentProvider": "Poskytovatelia obsahu", + "PluginCategoryScreenSaver": "\u0160etri\u010de obrazovky", + "PluginCategoryTheme": "T\u00e9my", "PluginCategorySync": "Sync", - "PluginCategorySocialIntegration": "Social Networks", + "PluginCategorySocialIntegration": "Soci\u00e1lne siete", "PluginCategoryNotifications": "Notifications", - "PluginCategoryMetadata": "Metadata", + "PluginCategoryMetadata": "Metad\u00e1ta", "PluginCategoryLiveTV": "Live TV", - "PluginCategoryChannel": "Channels", - "HeaderSearch": "Search", + "PluginCategoryChannel": "Kan\u00e1ly", + "HeaderSearch": "H\u013eada\u0165", "ValueDateCreated": "Date created: {0}", - "LabelArtist": "Artist", - "LabelMovie": "Movie", + "LabelArtist": "Umelec", + "LabelMovie": "Film", "LabelMusicVideo": "Music Video", - "LabelEpisode": "Episode", + "LabelEpisode": "Epiz\u00f3da", "Series": "Series", "LabelStopping": "Stopping", - "LabelCancelled": "Cancelled", + "LabelCancelled": "Zru\u0161en\u00e9", "ButtonDownload": "Download", "LabelCollection": "Collection", - "HeaderDevices": "Devices", - "ButtonScheduledTasks": "Scheduled tasks", + "HeaderDevices": "Zariadenia", + "ButtonScheduledTasks": "Napl\u00e1novan\u00e9 \u00falohy", "MessageItemsAdded": "Items added", "HeaderSelectCertificatePath": "Select Certificate Path", "HeaderSupporterBenefit": "An active Emby Premiere subscription provides additional benefits such as access to Emby DVR, offline media, premium plugins, and more. {0}Learn more{1}.", "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welcome to Emby", - "ButtonTakeTheTour": "Take the tour", - "HeaderWelcomeBack": "Welcome back!", + "HeaderWelcomeToProjectWebClient": "V\u00edtajte v Emby", + "ButtonTakeTheTour": "Za\u010da\u0165 prehliadku", + "HeaderWelcomeBack": "Vitajte sp\u00e4\u0165!", "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the app.", "MessageDownloadsFound": "No offline downloads. Make your media available offline by clicking Make Available Offline throughout the app.", @@ -1212,25 +1212,25 @@ "LabelScheduledTaskLastRan": "Last ran {0}, taking {1}.", "HeaderDeleteTaskTrigger": "Delete Task Trigger", "MessageDeleteTaskTrigger": "Are you sure you wish to delete this task trigger?", - "MessageNoPluginsInstalled": "You have no plugins installed.", + "MessageNoPluginsInstalled": "Nem\u00e1te nain\u0161talovan\u00e9 \u017eiadne roz\u0161\u00edrenia.", "MessageNoPluginsDueToAppStore": "To manage plugins, please use the Emby web app.", "LabelVersionInstalled": "{0} installed", "LabelNumberReviews": "{0} Reviews", "LabelFree": "Free", "HeaderSelectAudio": "Select Audio", - "HeaderSelectSubtitles": "Select Subtitles", + "HeaderSelectSubtitles": "Vybra\u0165 titulky", "LabelDefaultStream": "(Default)", "LabelForcedStream": "(Forced)", "LabelDefaultForcedStream": "(Default\/Forced)", - "LabelUnknownLanguage": "Unknown language", - "ButtonMute": "Mute", + "LabelUnknownLanguage": "Nezn\u00e1my jazyk", + "ButtonMute": "St\u00ed\u0161i\u0165", "ButtonUnmute": "Unmute", "ButtonPlaylist": "Playlist", - "LabelEnabled": "Enabled", - "LabelDisabled": "Disabled", - "ButtonMoreInformation": "More Information", + "LabelEnabled": "Povolen\u00e9", + "LabelDisabled": "Zak\u00e1zan\u00e9", + "ButtonMoreInformation": "Viac inform\u00e1ci\u00ed", "LabelNoUnreadNotifications": "No unread notifications.", - "MessageInvalidUser": "Invalid username or password. Please try again.", + "MessageInvalidUser": "Nespr\u00e1vne meno alebo heslo. Sk\u00faste pros\u00edm znovu.", "HeaderLoginFailure": "Login Failure", "RecommendationBecauseYouLike": "Because you like {0}", "RecommendationBecauseYouWatched": "Because you watched {0}", @@ -1258,12 +1258,12 @@ "StatusWatchingProgram": "Watching {0}", "HeaderSplitMedia": "Split Media Apart", "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", - "HeaderError": "Error", + "HeaderError": "Chyba", "HeaderLibraryFolders": "Media Folders", - "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteMovies": "Ob\u013e\u00faben\u00e9 filmy", "HeaderFavoriteShows": "Ob\u013e\u00faben\u00e9 seri\u00e1ly", - "HeaderFavoriteEpisodes": "Favorite Episodes", - "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteEpisodes": "Ob\u013e\u00faben\u00e9 epiz\u00f3dy", + "HeaderFavoriteGames": "Ob\u013e\u00faben\u00e9 hry", "HeaderConfirmProfileDeletion": "Confirm Profile Deletion", "MessageConfirmProfileDeletion": "Are you sure you wish to delete this profile?", "HeaderSelectServerCachePath": "Select Server Cache Path", @@ -1272,17 +1272,17 @@ "HeaderSelectServerCachePathHelp": "Browse or enter the path to use for server cache files. The folder must be writeable.", "HeaderSelectTranscodingPathHelp": "Browse or enter the path to use for transcoding temporary files. The folder must be writeable.", "HeaderSelectMetadataPathHelp": "Browse or enter the path you'd like to store metadata within. The folder must be writeable.", - "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteAlbums": "Ob\u013e\u00faben\u00e9 albumy", "HeaderLatestChannelMedia": "Latest Channel Items", - "MessageFileWillBeDeleted": "The following file will be deleted:", - "MessageSureYouWishToProceed": "Are you sure you wish to proceed?", + "MessageFileWillBeDeleted": "Nasledovn\u00fd s\u00fabor bude odstr\u00e1nen\u00fd:", + "MessageSureYouWishToProceed": "Ste si ist\u00fd, \u017ee chcete pokra\u010dova\u0165?", "MessageDuplicatesWillBeDeleted": "In addition the following duplicates will be deleted:", - "MessageFollowingFileWillBeMovedFrom": "The following file will be moved from:", - "MessageDestinationTo": "to:", - "HeaderRestart": "Restart", - "HeaderShutdown": "Shutdown", - "MessageConfirmRestart": "Are you sure you wish to restart Emby Server?", - "MessageConfirmShutdown": "Are you sure you wish to shutdown Emby Server?", + "MessageFollowingFileWillBeMovedFrom": "Nasleduj\u00faci s\u00fabor bude presunut\u00fd z:", + "MessageDestinationTo": "do:", + "HeaderRestart": "Re\u0161tartova\u0165", + "HeaderShutdown": "Vypn\u00fa\u0165", + "MessageConfirmRestart": "Ste si ist\u00fd, \u017ee chcete re\u0161tartova\u0165 Emby Server?", + "MessageConfirmShutdown": "Ste si ist\u00fd, \u017ee chcete vypn\u00fa\u0165 Emby Server?", "ValueItemCount": "{0} item", "ValueItemCountPlural": "{0} items", "NewVersionOfSomethingAvailable": "A new version of {0} is available!", @@ -1298,36 +1298,36 @@ "LabelRunningOnPort": "Running on http port {0}.", "LabelRunningOnPorts": "Running on http port {0}, and https port {1}.", "HeaderLatestFromChannel": "Latest from {0}", - "ButtonRemoteControl": "Remote Control", + "ButtonRemoteControl": "\u010eia\u013ekov\u00e9 ovl\u00e1danie", "HeaderLatestTvRecordings": "Latest Recordings", "LabelCurrentPath": "Current path:", "HeaderSelectMediaPath": "Select Media Path", "HeaderSelectPath": "Select Path", - "ButtonNetwork": "Network", + "ButtonNetwork": "Sie\u0165", "MessageDirectoryPickerInstruction": "Network paths can be entered manually in the event the Network button fails to locate your devices. For example, {0} or {1}.", "MessageDirectoryPickerBSDInstruction": "For BSD, you may need to configure storage within your FreeNAS Jail in order to allow Emby to access it.", "MessageDirectoryPickerLinuxInstruction": "For Linux on Arch Linux, CentOS, Debian, Fedora, OpenSuse, or Ubuntu, you must grant the Emby system user at least read access to your storage locations.", "HeaderMenu": "Menu", - "ButtonOpen": "Open", - "ButtonShuffle": "Shuffle", - "ButtonResume": "Resume", + "ButtonOpen": "Otvori\u0165", + "ButtonShuffle": "Zamie\u0161a\u0165", + "ButtonResume": "Pokra\u010dova\u0165", "HeaderAudioTracks": "Audio Tracks", - "HeaderLibraries": "Libraries", - "HeaderVideoQuality": "Video Quality", + "HeaderLibraries": "Kni\u017enice", + "HeaderVideoQuality": "Kvalita videa", "MessageErrorPlayingVideo": "There was an error playing the video.", "MessageEnsureOpenTuner": "Please ensure there is an open tuner availalble.", "ButtonReports": "Reports", - "MetadataManager": "Metadata Manager", - "HeaderTime": "Time", + "MetadataManager": "Spr\u00e1vca metad\u00e1t", + "HeaderTime": "\u010cas", "LabelAddedOnDate": "Added {0}", "ButtonStart": "Start", - "OptionBlockOthers": "Others", + "OptionBlockOthers": "In\u00e9", "OptionBlockTvShows": "TV Shows", "OptionBlockTrailers": "Trailers", - "OptionBlockMusic": "Music", - "OptionBlockMovies": "Movies", - "OptionBlockBooks": "Books", - "OptionBlockGames": "Games", + "OptionBlockMusic": "Hudba", + "OptionBlockMovies": "Filmy", + "OptionBlockBooks": "Knihy", + "OptionBlockGames": "Hry", "OptionBlockLiveTvPrograms": "Live TV Programs", "OptionBlockLiveTvChannels": "Live TV Channels", "OptionBlockChannelContent": "Internet Channel Content", @@ -1339,77 +1339,77 @@ "ValueVideoCodec": "Video Codec: {0}", "ValueCodec": "Codec: {0}", "ValueConditions": "Conditions: {0}", - "LabelAll": "All", - "HeaderDeleteImage": "Delete Image", - "MessageFileNotFound": "File not found.", - "MessageFileReadError": "An error occurred reading this file.", - "ButtonNextPage": "Next Page", - "ButtonPreviousPage": "Previous Page", - "HeaderDeleteItem": "Delete Item", + "LabelAll": "V\u0161etky", + "HeaderDeleteImage": "Zmaza\u0165 obr\u00e1zok", + "MessageFileNotFound": "S\u00fabor nen\u00e1jden\u00fd.", + "MessageFileReadError": "Pri \u010d\u00edtan\u00ed s\u00faboru nastala chyba.", + "ButtonNextPage": "\u010eal\u0161ia strana", + "ButtonPreviousPage": "Predch\u00e1dzaj\u00faca strana", + "HeaderDeleteItem": "Zmaza\u0165 polo\u017eku", "MessageItemSaved": "Item saved.", "MessagePleaseAcceptTermsOfServiceBeforeContinuing": "Please accept the terms of service before continuing.", "OptionOff": "Off", "OptionOn": "On", - "ButtonUninstall": "Uninstall", + "ButtonUninstall": "Odin\u0161talova\u0165.", "HeaderLiveTV": "Live TV", - "MissingPrimaryImage": "Missing primary image.", + "MissingPrimaryImage": "Ch\u00fdba prim\u00e1rny obr\u00e1zok.", "MissingBackdropImage": "Missing backdrop image.", "MissingLogoImage": "Missing logo image.", - "MissingEpisode": "Missing episode.", + "MissingEpisode": "Ch\u00fdbaj\u00faca epiz\u00f3da.", "OptionBackdrops": "Backdrops", - "OptionImages": "Images", - "OptionKeywords": "Keywords", + "OptionImages": "Obr\u00e1zky", + "OptionKeywords": "K\u013e\u00fa\u010dov\u00e9 slov\u00e1", "OptionTags": "Tags", "OptionStudios": "Studios", "OptionName": "Name", - "OptionOverview": "Overview", - "OptionGenres": "Genres", + "OptionOverview": "Preh\u013ead", + "OptionGenres": "\u017d\u00e1nre", "OptionPeople": "People", "OptionProductionLocations": "Production Locations", - "OptionBirthLocation": "Birth Location", - "HeaderChangeFolderType": "Change Content Type", + "OptionBirthLocation": "Miesto narodenia", + "HeaderChangeFolderType": "Zmeni\u0165 typ obsahu", "HeaderChangeFolderTypeHelp": "To change the type, please remove and rebuild the library with the new type.", "HeaderAlert": "Alert", "MessagePleaseRestart": "Please restart to finish updating.", - "ButtonHide": "Hide", - "MessageSettingsSaved": "Settings saved.", - "TabLibrary": "Library", + "ButtonHide": "Skry\u0165", + "MessageSettingsSaved": "Nastavenia ulo\u017een\u00e9.", + "TabLibrary": "Kni\u017enica", "TabDLNA": "DLNA", "TabLiveTV": "Live TV", - "TabPlugins": "Plugins", - "TabHelp": "Help", - "ButtonFullscreen": "Fullscreen", + "TabPlugins": "Roz\u0161\u00edrenia", + "TabHelp": "Pomoc", + "ButtonFullscreen": "Cel\u00e1 obrazovka", "ButtonAudioTracks": "Audio Tracks", - "ButtonQuality": "Quality", + "ButtonQuality": "Kvalita", "HeaderNotifications": "Notifications", "HeaderSelectPlayer": "Select Player", "ButtonViewSeriesRecording": "View series recording", "HeaderSpecials": "Specials", "HeaderTrailers": "Trailers", - "HeaderResolution": "Resolution", + "HeaderResolution": "Rozl\u00ed\u0161enie", "HeaderRuntime": "Runtime", "HeaderParentalRating": "Parental Rating", "HeaderReleaseDate": "Release date", "HeaderSeries": "Series:", "HeaderSeason": "Season", "HeaderSeasonNumber": "Season number", - "HeaderNetwork": "Network", + "HeaderNetwork": "Sie\u0165", "HeaderYear": "Year:", "HeaderEmbeddedImage": "Embedded image", "HeaderTrack": "Track", - "OptionCollections": "Collections", + "OptionCollections": "Zbierky", "OptionSeries": "Series", - "OptionSeasons": "Seasons", - "OptionGames": "Games", + "OptionSeasons": "Sez\u00f3ny", + "OptionGames": "Hry", "OptionGameSystems": "Game systems", "OptionMusicArtists": "Music artists", "OptionMusicAlbums": "Music albums", "OptionMusicVideos": "Music videos", "OptionSongs": "Songs", - "OptionHomeVideos": "Home videos & photos", - "OptionBooks": "Books", - "ButtonUp": "Up", - "ButtonDown": "Down", + "OptionHomeVideos": "Dom\u00e1ce vide\u00e1 a fotky", + "OptionBooks": "Knihy", + "ButtonUp": "Hore", + "ButtonDown": "Dole", "LabelMetadataReaders": "Metadata readers:", "LabelMetadataReadersHelp": "Rank your preferred local metadata sources in order of priority. The first file found will be read.", "LabelMetadataDownloaders": "Metadata downloaders:", @@ -1421,16 +1421,16 @@ "LabelDynamicExternalId": "{0} Id:", "PersonTypePerson": "Person", "OptionSortName": "Sort name", - "LabelDateOfBirth": "Date of birth:", - "LabelDeathDate": "Death date:", + "LabelDateOfBirth": "D\u00e1tum narodenia:", + "LabelDeathDate": "D\u00e1tum \u00famrtia:", "HeaderRemoveMediaLocation": "Remove Media Location", "MessageConfirmRemoveMediaLocation": "Are you sure you wish to remove this location?", - "LabelNewName": "New name:", + "LabelNewName": "Nov\u00e9 meno:", "HeaderRemoveMediaFolder": "Remove Media Folder", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "The following media locations will be removed from your Emby library:", "MessageAreYouSureYouWishToRemoveMediaFolder": "Are you sure you wish to remove this media folder?", - "ButtonRename": "Rename", - "ButtonChangeContentType": "Change content type", + "ButtonRename": "Premenova\u0165", + "ButtonChangeContentType": "Zmeni\u0165 typ obsahu", "HeaderMediaLocations": "Media Locations", "LabelContentTypeValue": "Content type: {0}", "FolderTypeUnset": "Unset (mixed content)", @@ -1439,12 +1439,12 @@ "BirthDateValue": "Born: {0}", "HeaderLatestReviews": "Latest Reviews", "HeaderPluginInstallation": "Plugin Installation", - "MessageAlreadyInstalled": "This version is already installed.", + "MessageAlreadyInstalled": "T\u00e1to verzia u\u017e je nain\u0161talovan\u00e1.", "MessageYouHaveVersionInstalled": "You currently have version {0} installed.", "MessageTrialExpired": "The trial period for this feature has expired", "MessageTrialWillExpireIn": "The trial period for this feature will expire in {0} day(s)", "MessageInstallPluginFromApp": "This plugin must be installed from with in the app you intend to use it in.", - "ValuePriceUSD": "Price: {0} (USD)", + "ValuePriceUSD": "Cena: {0} (USD)", "MessageFeatureIncludedWithSupporter": "You are registered for this feature, and will be able to continue using it with an active Emby Premiere subscription.", "HeaderEmbyAccountAdded": "Emby Account Added", "MessageEmbyAccountAdded": "The Emby account has been added to this user.", @@ -1454,17 +1454,17 @@ "TooltipLinkedToEmbyConnect": "Linked to Emby Connect", "HeaderUnrated": "Unrated", "ValueDiscNumber": "Disc {0}", - "HeaderUnknownDate": "Unknown Date", - "HeaderUnknownYear": "Unknown Year", + "HeaderUnknownDate": "Nezn\u00e1my d\u00e1tum", + "HeaderUnknownYear": "Nezn\u00e1my rok", "ValueMinutes": "{0} min", "HeaderSelectExternalPlayer": "Select External Player", "HeaderExternalPlayerPlayback": "External Player Playback", - "OptionWatched": "Watched", - "OptionUnwatched": "Unwatched", - "LabelMarkAs": "Mark as:", + "OptionWatched": "Pozret\u00e9", + "OptionUnwatched": "Nepozret\u00e9", + "LabelMarkAs": "Ozna\u010di\u0165 ako:", "OptionInProgress": "In-Progress", "LabelResumePoint": "Resume point:", - "ValueOneMovie": "1 movie", + "ValueOneMovie": "1 film", "ValueMovieCount": "{0} movies", "ValueOneTrailer": "1 trailer", "ValueTrailerCount": "{0} trailers", @@ -1481,8 +1481,8 @@ "ValueOneMusicVideo": "1 music video", "ValueMusicVideoCount": "{0} music videos", "HeaderOffline": "Offline", - "HeaderUnaired": "Unaired", - "HeaderMissing": "Missing", + "HeaderUnaired": "Nevysielan\u00e9", + "HeaderMissing": "Ch\u00fdbaj\u00face", "ButtonWebsite": "Website", "ValueSeriesYearToPresent": "{0} - Present", "ValueAwards": "Awards: {0}", @@ -1494,36 +1494,36 @@ "LabelLimit": "Limit:", "ValueLinks": "Links: {0}", "HeaderCastAndCrew": "Cast & Crew", - "ValueArtist": "Artist: {0}", - "ValueArtists": "Artists: {0}", + "ValueArtist": "Umelec: {0}", + "ValueArtists": "Umelci: {0}", "MediaInfoCameraMake": "Camera make", "MediaInfoCameraModel": "Camera model", - "MediaInfoAltitude": "Altitude", - "MediaInfoAperture": "Aperture", - "MediaInfoExposureTime": "Exposure time", + "MediaInfoAltitude": "V\u00fd\u0161ka", + "MediaInfoAperture": "Clona", + "MediaInfoExposureTime": "\u010cas expoz\u00edcie", "MediaInfoFocalLength": "Focal length", - "MediaInfoOrientation": "Orientation", + "MediaInfoOrientation": "Orient\u00e1cia", "MediaInfoIsoSpeedRating": "Iso speed rating", - "MediaInfoLatitude": "Latitude", - "MediaInfoLongitude": "Longitude", - "MediaInfoShutterSpeed": "Shutter speed", + "MediaInfoLatitude": "Zemepisn\u00e1 \u0161\u00edrka", + "MediaInfoLongitude": "Zemepisn\u00e1 d\u013a\u017eka", + "MediaInfoShutterSpeed": "R\u00fdchlos\u0165 uz\u00e1vierky", "MediaInfoSoftware": "Software", "HeaderMoreLikeThis": "More Like This", - "HeaderMovies": "Movies", - "HeaderAlbums": "Albums", - "HeaderGames": "Games", - "HeaderBooks": "Books", - "HeaderEpisodes": "Episodes", - "HeaderSeasons": "Seasons", + "HeaderMovies": "Filmy", + "HeaderAlbums": "Albumy", + "HeaderGames": "Hry", + "HeaderBooks": "Knihy", + "HeaderEpisodes": "Epiz\u00f3dy", + "HeaderSeasons": "Sez\u00f3ny", "HeaderTracks": "Tracks", - "HeaderItems": "Items", - "HeaderOtherItems": "Other Items", + "HeaderItems": "Polo\u017eky", + "HeaderOtherItems": "In\u00e9 polo\u017eky", "ValueAsRole": "as {0}", - "ValueGuestStar": "Guest star", - "MediaInfoSize": "Size", + "ValueGuestStar": "Hos\u0165uj\u00faca hviezda", + "MediaInfoSize": "Ve\u013ekos\u0165", "MediaInfoPath": "Path", - "MediaInfoFile": "File", - "MediaInfoFormat": "Format", + "MediaInfoFile": "S\u00fabor", + "MediaInfoFormat": "Form\u00e1t", "MediaInfoContainer": "Container", "MediaInfoDefault": "Default", "MediaInfoForced": "Forced", @@ -1533,17 +1533,17 @@ "MediaInfoBitDepth": "Bit depth", "MediaInfoSampleRate": "Sample rate", "MediaInfoBitrate": "Bitrate", - "MediaInfoChannels": "Channels", + "MediaInfoChannels": "Kan\u00e1ly", "MediaInfoLayout": "Layout", - "MediaInfoLanguage": "Language", + "MediaInfoLanguage": "Jazyk", "MediaInfoCodec": "Codec", "MediaInfoCodecTag": "Codec tag", - "MediaInfoProfile": "Profile", - "MediaInfoLevel": "Level", - "MediaInfoAspectRatio": "Aspect ratio", - "MediaInfoResolution": "Resolution", + "MediaInfoProfile": "Profil", + "MediaInfoLevel": "\u00darove\u0148", + "MediaInfoAspectRatio": "Pomer str\u00e1n", + "MediaInfoResolution": "Rozl\u00ed\u0161enie", "MediaInfoAnamorphic": "Anamorphic", - "MediaInfoInterlaced": "Interlaced", + "MediaInfoInterlaced": "Prekladan\u00e9", "MediaInfoFramerate": "Framerate", "MediaInfoStreamTypeAudio": "Audio", "MediaInfoStreamTypeData": "Data", @@ -1584,27 +1584,27 @@ "DashboardTourMobile": "The Emby Server dashboard works great on smartphones and tablets. Manage your server from the palm of your hand anytime, anywhere.", "DashboardTourSync": "Sync your personal media to your devices for offline viewing.", "TabExtras": "Extras", - "HeaderUploadImage": "Upload Image", + "HeaderUploadImage": "Nahra\u0165 obr\u00e1zok", "DeviceLastUsedByUserName": "Last used by {0}", - "HeaderDeleteDevice": "Delete Device", + "HeaderDeleteDevice": "Zmaza\u0165 zariadenie", "DeleteDeviceConfirmation": "Are you sure you wish to delete this device? It will reappear the next time a user signs in with it.", "LabelEnableCameraUploadFor": "Enable camera upload for:", "HeaderSelectUploadPath": "Select Upload Path", "LabelEnableCameraUploadForHelp": "Uploads will occur automatically in the background when signed into Emby.", "ErrorMessageStartHourGreaterThanEnd": "End time must be greater than the start time.", "ButtonLibraryAccess": "Library access", - "ButtonParentalControl": "Parental control", - "HeaderInvitationSent": "Invitation Sent", + "ButtonParentalControl": "Rodi\u010dovsk\u00e1 kontrola", + "HeaderInvitationSent": "Pozv\u00e1nka odoslan\u00e1", "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", - "HeaderConnectionFailure": "Connection Failure", + "HeaderConnectionFailure": "Chyba pripojenia", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", - "ButtonSelectServer": "Select Server", + "ButtonSelectServer": "Vybra\u0165 server", "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", "DefaultErrorMessage": "There was an error processing the request. Please try again later.", - "ButtonAccept": "Accept", - "ButtonReject": "Reject", + "ButtonAccept": "Prija\u0165", + "ButtonReject": "Odmietnu\u0165", "MessageContactAdminToResetPassword": "Please contact your system administrator to reset your password.", "MessageForgotPasswordInNetworkRequired": "Please try again within your home network to initiate the password reset process.", "MessageForgotPasswordFileCreated": "The following file has been created on your server and contains instructions on how to proceed:", @@ -1615,43 +1615,43 @@ "MessageConnectAccountRequiredToInviteGuest": "In order to invite guests you need to first link your Emby account to this server.", "SyncMedia": "Sync Media", "HeaderCancelSyncJob": "Cancel Sync", - "LabelQuality": "Quality:", + "LabelQuality": "Kvalita:", "MovieLibraryHelp": "Review the {0}Emby movie naming guide{1}.", "TvLibraryHelp": "Review the {0}Emby TV naming guide{1}.", "BookLibraryHelp": "Audio and text books are supported", - "MessageGamePluginRequired": "Requires installation of the GameBrowser plugin", + "MessageGamePluginRequired": "Po\u017eaduje in\u0161tal\u00e1ciu roz\u0161\u00edrenia GameBrowser", "MessageUnsetContentHelp": "Content will be displayed as plain folders. For best results use the metadata manager to set the content types of sub-folders.", - "LabelProfile": "Profile:", + "LabelProfile": "Profil:", "LabelBitrateMbps": "Bitrate (Mbps):", "EmbyIntroDownloadMessage": "To download and install the free Emby Server visit {0}.", "EmbyIntroDownloadMessageWithoutLink": "To download and install the free Emby Server visit the Emby website.", - "ButtonNewServer": "New Server", - "MyDevice": "My Device", + "ButtonNewServer": "Nov\u00fd server", + "MyDevice": "Moje zariadenie", "ButtonRemote": "Remote", - "TabCast": "Cast", + "TabCast": "Obsadenie", "TabScenes": "Scenes", "HeaderUnlockApp": "Unlock App", "HeaderUnlockSync": "Unlock Emby Sync", "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", "OptionEnableFullscreen": "Enable Fullscreen", "ButtonServer": "Server", - "HeaderLibrary": "Library", + "HeaderLibrary": "Kni\u017enica", "HeaderMedia": "Media", "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No results found.", - "ButtonManageServer": "Manage Server", - "ButtonPreferences": "Preferences", + "ButtonManageServer": "Spravova\u0165 server", + "ButtonPreferences": "Nastavenia", "ButtonViewArtist": "View artist", "ButtonViewAlbum": "View album", - "ButtonEditImages": "Edit images", + "ButtonEditImages": "Upravi\u0165 obr\u00e1zky", "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", "MessageThankYouForConnectSignUpNoValidation": "Thank you for signing up for Emby Connect! You will now be asked to login with your Emby Connect information.", - "ButtonShare": "Share", - "HeaderConfirm": "Confirm", - "MessageConfirmDeleteTunerDevice": "Are you sure you wish to delete this device?", + "ButtonShare": "Zdie\u013ea\u0165", + "HeaderConfirm": "Potvrdi\u0165", + "MessageConfirmDeleteTunerDevice": "Ste si ist\u00fd, \u017ee chcete zmaza\u0165 toto zariadenie?", "MessageConfirmDeleteGuideProvider": "Are you sure you wish to delete this guide provider?", "HeaderDeleteProvider": "Delete Provider", "ErrorAddingTunerDevice": "There was an error adding the tuner device. Please ensure it is accessible and try again.", @@ -1665,24 +1665,24 @@ "LabelLocalSyncStatusValue": "Status: {0}", "MessageSyncStarted": "Sync started", "OptionBackdropSlideshow": "Backdrop slideshow", - "HeaderTopPlugins": "Top Plugins", - "ButtonOther": "Other", - "HeaderSortBy": "Sort By", + "HeaderTopPlugins": "Najlep\u0161ie roz\u0161\u00edrenia", + "ButtonOther": "In\u00e9", + "HeaderSortBy": "Zoradi\u0165 pod\u013ea", "HeaderSortOrder": "Sort Order", "ButtonMenu": "Menu", "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "Guide", - "ButtonYes": "Yes", - "AddUser": "Add User", - "ButtonNo": "No", - "ButtonNowPlaying": "Now Playing", + "ButtonYes": "\u00c1no", + "AddUser": "Prida\u0165 u\u017e\u00edvate\u013ea", + "ButtonNo": "Nie", + "ButtonNowPlaying": "Teraz prehr\u00e1van\u00e9", "HeaderLatestMovies": "Posledne pridan\u00e9 Filmy", "HeaderEmailAddress": "E-Mail Address", "LoginDisclaimer": "Emby is designed to help you manage your personal media library, such as home videos and photos. Please see our terms of use. The use of any Emby software constitutes acceptance of these terms.", - "TermsOfUse": "Terms of use", + "TermsOfUse": "Podmienky pou\u017eitia", "NumLocationsValue": "{0} folders", - "ButtonAddMediaLibrary": "Add Media Library", - "ButtonManageFolders": "Manage folders", + "ButtonAddMediaLibrary": "Prida\u0165 kni\u017enicu m\u00e9di\u00ed", + "ButtonManageFolders": "Spravova\u0165 prie\u010dinky", "ErrorAddingListingsToSchedulesDirect": "There was an error adding the lineup to your Schedules Direct account. Schedules Direct only allows a limited number of lineups per account. You may need to log into the Schedules Direct website and remove others listings from your account before proceeeding.", "PleaseAddAtLeastOneFolder": "Please add at least one folder to this library by clicking the Add button.", "ErrorAddingMediaPathToVirtualFolder": "There was an error adding the media path. Please ensure the path is valid and the Emby Server process has access to that location.", @@ -1690,7 +1690,7 @@ "ErrorAddingEmbyConnectAccount1": "There was an error adding the Emby Connect account. Have you created an Emby account? You can sign up at {0}.", "ErrorAddingEmbyConnectAccount2": "If you're still having a problem, please send an email to {0}.", "ErrorAddingEmbyConnectAccount3": "The Emby account is already linked to an existing local user. An Emby account can only be linked to one local user at a time.", - "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteArtists": "Ob\u013e\u00faben\u00ed umelci", "HeaderFavoriteSongs": "Ob\u013e\u00faben\u00e9 pesni\u010dky", "HeaderConfirmPluginInstallation": "Confirm Plugin Installation", "PleaseConfirmPluginInstallation": "Please click OK to confirm you've read the above and wish to proceed with the plugin installation.", @@ -1717,7 +1717,7 @@ "OptionRequirePerfectSubtitleMatch": "Only download subtitles that are a perfect match for my video files", "OptionRequirePerfectSubtitleMatchHelp": "Requiring a perfect match will filter subtitles to include only those that have been tested and verified with your exact video file. Unchecking this will increase the likelihood of subtitles being downloaded, but will increase the chances of mistimed or incorrect subtitle text.", "GuestUserNotFound": "User not found. Please ensure the name is correct and try again, or try entering their email address.", - "Yesterday": "Yesterday", + "Yesterday": "V\u010dera", "MetadataSettingChangeHelp": "Changing metadata settings will affect new content that is added going forward. To refresh existing content, open the detail screen and click the refresh button, or perform bulk refreshes using the metadata manager.", "OptionConvertRecordingPreserveAudio": "Preserve original audio when converting recordings (when possible)", "OptionConvertRecordingPreserveAudioHelp": "This will provide better audio but may require transcoding during playback on some devices.", @@ -1731,7 +1731,7 @@ "XmlTvNewsCategoriesHelp": "Programs with these categories will be displayed as news programs. Separate multiple with '|'.", "LabelKidsCategories": "Children's categories:", "XmlTvKidsCategoriesHelp": "Programs with these categories will be displayed as programs for children. Separate multiple with '|'.", - "LabelMovieCategories": "Movie categories:", + "LabelMovieCategories": "Kateg\u00f3rie filmov:", "XmlTvMovieCategoriesHelp": "Programs with these categories will be displayed as movies. Separate multiple with '|'.", "XmlTvPathHelp": "A path to an xml tv file. Emby will read this file and periodically check it for updates. You are responsible for creating and updating the file.", "LabelBindToLocalNetworkAddress": "Bind to local network address:", @@ -1755,13 +1755,13 @@ "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", - "EnablePhotos": "Enable photos", + "EnablePhotos": "Povoli\u0165 fotky", "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", "RemoveDownload": "Remove download", "SyncToOtherDevices": "Sync to other devices", "ManageOfflineDownloads": "Manage offline downloads", "MessageDownloadScheduled": "Download scheduled", - "RememberMe": "Remember me", + "RememberMe": "Zapam\u00e4ta\u0165 si ma", "HeaderOfflineSync": "Offline Sync", "LabelMaxAudioFileBitrate": "Max audio file bitrate:", "LabelMaxAudioFileBitrateHelp": "Audio files with a higher bitrate will be converted by Emby Server. Select a higher value for better quality, or a lower value to conserve local storage space.", @@ -1777,8 +1777,8 @@ "H264EncodingPresetHelp": "Choose a faster value to improve performance, or a slower value to improve quality.", "LabelH264Crf": "H264 encoding CRF:", "H264CrfHelp": "The Constant Rate Factor (CRF) is the default quality setting for the x264 encoder. You can set the values between 0 and 51, where lower values would result in better quality (at the expense of higher file sizes). Sane values are between 18 and 28. The default for x264 is 23, so you can use this as a starting point.", - "Sports": "Sports", - "HeaderForKids": "For Kids", + "Sports": "\u0160porty", + "HeaderForKids": "Pre deti", "HeaderRecordingGroups": "Recording Groups", "LabelConvertRecordingsTo": "Convert recordings to:", "HeaderUpcomingOnTV": "Upcoming On TV", @@ -1801,21 +1801,21 @@ "PreferEmbeddedTitlesOverFileNames": "Prefer embedded titles over filenames", "PreferEmbeddedTitlesOverFileNamesHelp": "This determines the default display title when no internet metadata or local metadata is available.", "HeaderUpcomingEpisodes": "Upcoming Episodes", - "HeaderFavoriteVideos": "Favorite Videos", + "HeaderFavoriteVideos": "Ob\u013e\u00faben\u00e9 vide\u00e1", "HeaderLiveTvTunerSetup": "Live TV Tuner Setup", "HeaderDetectMyDevices": "Detect My Devices", - "MessagePleaseWait": "Please wait. This may take a minute.", - "DetectingDevices": "Detecting devices", + "MessagePleaseWait": "Pros\u00edm po\u010dkajte. Toto m\u00f4\u017ee chv\u00ed\u013eu trva\u0165.", + "DetectingDevices": "Detegujem zariadenia", "LabelAutomaticallyRefreshInternetMetadataEvery": "Automatically refresh metadata from the internet:", - "Never": "Never", + "Never": "Nikdy", "EveryNDays": "Every {0} days", - "HeaderNewDevices": "New Devices", + "HeaderNewDevices": "Nov\u00e9 zariadenia", "HeaderOnNow": "On Now", "Downloading": "Downloading", "LabelCertificatePassword": "Certificate password:", "LabelCertificatePasswordHelp": "If your certificate requires a password, please enter it here.", "Programs": "Programs", - "News": "News", + "News": "Spr\u00e1vy", "HeaderDownloadSync": "Download & Sync", "LabelEnableHardwareDecodingFor": "Enable hardware decoding for:", "EnableHardwareEncoding": "Enable hardware encoding", @@ -1825,11 +1825,11 @@ "EnableStreamLooping": "Auto-loop live streams", "EnableStreamLoopingHelp": "Enable this if live streams only contain a few seconds of data and need to be continuously requested.", "HttpsRequiresCert": "To require https for external connections, you will need to supply a trusted SSL certificate, such as Lets Encrypt.", - "HeaderLatestDownloadedVideos": "Latest Downloaded Videos", - "ServerRestartNeededAfterPluginInstall": "Emby Server will need to be restarted after installing a plugin.", + "HeaderLatestDownloadedVideos": "Naposledy prebran\u00e9 vide\u00e1", + "ServerRestartNeededAfterPluginInstall": "Po in\u0161tal\u00e1cii roz\u0161\u00edrenia bude potrebn\u00fd re\u0161tart Emby servera.", "PluginInstalledMessage": "The plugin has been successfully installed. Emby Server will need to be restarted for changes to take effect.", - "Themes": "Themes", - "LabelTheme": "Theme:", + "Themes": "T\u00e9my", + "LabelTheme": "T\u00e9ma:", "LabelDashboardTheme": "Server dashboard theme:", "MessagePremiereStatusGood": "You have a {0} Emby Premiere plan and your device usage is well within your limit.", "MessagePremiereStatusClose": "You have a {0} Emby Premiere plan, but your device usage is close to the limit.", @@ -1848,8 +1848,8 @@ "LabelAlreadyCancelled": "This subscription has been cancelled. You will not be charged again but the features will work until the date above.", "AllowOnTheFlySubtitleExtraction": "Allow subtitle extraction on the fly", "AllowOnTheFlySubtitleExtractionHelp": "Embedded subtitles can be extracted from videos and delivered to Emby apps in plain text in order to help prevent video transcoding. On some systems this can take a long time and cause video playback to stall during the extraction process. Disable this to have embedded subtitles burned in with video transcoding when they are not natively supported by the client device.", - "ButtonStopRecording": "Stop Recording", - "StopRecording": "Stop recording", + "ButtonStopRecording": "Zastavi\u0165 nahr\u00e1vanie", + "StopRecording": "Zastavi\u0165 nahr\u00e1vanie", "CancelSeries": "Cancel series", "EnableDebugLoggingHelp": "Debug logging should only be enabled as needed for troubleshooting purposes. The increased file system access may prevent the server machine from being able to sleep in some environments." } \ No newline at end of file