diff --git a/MediaBrowser.WebDashboard.nuget.targets b/MediaBrowser.WebDashboard.nuget.targets deleted file mode 100644 index e69ce0e64f..0000000000 --- a/MediaBrowser.WebDashboard.nuget.targets +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/dashboard-ui/addplugin.html b/dashboard-ui/addplugin.html index 83eb6d8d0c..52395cc0cf 100644 --- a/dashboard-ui/addplugin.html +++ b/dashboard-ui/addplugin.html @@ -1,72 +1,76 @@ -
+
+
-

-

-

+
+
+

+ ${Help} +
-

+

+

-
-

${HeaderInstall}

+

-
-
-

-
- -
+
-

- -

${ServerRestartNeededAfterPluginInstall}
-

-

- +
+

${HeaderInstall}

- diff --git a/dashboard-ui/appservices.html b/dashboard-ui/appservices.html index 2c2cc2b223..acb4303458 100644 --- a/dashboard-ui/appservices.html +++ b/dashboard-ui/appservices.html @@ -1,14 +1,19 @@ -
+
-

${HeaderInstalledServices}

+ +
+

${HeaderInstalledServices}

+ ${Help} +
+
-

${HeaderAvailableServices}

+

${HeaderAvailableServices}

diff --git a/dashboard-ui/bower_components/Sortable/knockout-sortable.js b/dashboard-ui/bower_components/Sortable/knockout-sortable.js index ca4657f18e..387aa64e67 100644 --- a/dashboard-ui/bower_components/Sortable/knockout-sortable.js +++ b/dashboard-ui/bower_components/Sortable/knockout-sortable.js @@ -1 +1 @@ -!function(factory){"use strict";if("function"==typeof define&&define.amd)define(["knockout"],factory);else if("function"==typeof require&&"object"==typeof exports&&"object"==typeof module){var ko=require("knockout");factory(ko)}else factory(window.ko)}(function(ko){"use strict";var init=function(element,valueAccessor,allBindings,viewModel,bindingContext,sortableOptions){var options=buildOptions(valueAccessor,sortableOptions);["onStart","onEnd","onRemove","onAdd","onUpdate","onSort","onFilter"].forEach(function(e){(options[e]||eventHandlers[e])&&(options[e]=function(eventType,parentVM,parentBindings,handler,e){var itemVM=ko.dataFor(e.item),bindings=ko.utils.peekObservable(parentBindings()),bindingHandlerBinding=bindings.sortable||bindings.draggable,collection=bindingHandlerBinding.collection||bindingHandlerBinding.foreach;handler&&handler(e,itemVM,parentVM,collection,bindings),eventHandlers[eventType]&&eventHandlers[eventType](e,itemVM,parentVM,collection,bindings)}.bind(void 0,e,viewModel,allBindings,options[e]))});var sortableElement=Sortable.create(element,options);return ko.utils.domNodeDisposal.addDisposeCallback(element,function(){sortableElement.destroy()}),ko.bindingHandlers.template.init(element,valueAccessor)},update=function(element,valueAccessor,allBindings,viewModel,bindingContext,sortableOptions){return ko.bindingHandlers.template.update(element,valueAccessor,allBindings,viewModel,bindingContext)},eventHandlers=function(handlers){var moveOperations=[],tryMoveOperation=function(e,itemVM,parentVM,collection,parentBindings){var currentOperation={event:e,itemVM:itemVM,parentVM:parentVM,collection:collection,parentBindings:parentBindings},existingOperation=moveOperations.filter(function(op){return op.itemVM===currentOperation.itemVM})[0];if(existingOperation){moveOperations.splice(moveOperations.indexOf(existingOperation),1);var removeOperation="remove"===currentOperation.event.type?currentOperation:existingOperation,addOperation="add"===currentOperation.event.type?currentOperation:existingOperation;moveItem(itemVM,removeOperation.collection,addOperation.collection,addOperation.event.clone,addOperation.event)}else moveOperations.push(currentOperation)},moveItem=function(itemVM,from,to,clone,e){var fromArray=from(),originalIndex=fromArray.indexOf(itemVM),newIndex=e.newIndex;e.item.previousElementSibling&&(newIndex=fromArray.indexOf(ko.dataFor(e.item.previousElementSibling)),originalIndex>newIndex&&(newIndex+=1)),e.item.parentNode.removeChild(e.item),fromArray.splice(originalIndex,1),from.valueHasMutated(),clone&&from!==to&&(fromArray.splice(originalIndex,0,itemVM),from.valueHasMutated()),to().splice(newIndex,0,itemVM),to.valueHasMutated()};return handlers.onRemove=tryMoveOperation,handlers.onAdd=tryMoveOperation,handlers.onUpdate=function(e,itemVM,parentVM,collection,parentBindings){moveItem(itemVM,collection,collection,!1,e)},handlers}({}),buildOptions=function(bindingOptions,options){var merge=function(into,from){for(var prop in from)"[object Object]"===Object.prototype.toString.call(from[prop])?("[object Object]"!==Object.prototype.toString.call(into[prop])&&(into[prop]={}),into[prop]=merge(into[prop],from[prop])):into[prop]=from[prop];return into},unwrappedOptions=ko.utils.peekObservable(bindingOptions()).options||{};return options=merge({},options),unwrappedOptions.group&&"[object Object]"!==Object.prototype.toString.call(unwrappedOptions.group)&&(unwrappedOptions.group={name:unwrappedOptions.group}),merge(options,unwrappedOptions)};ko.bindingHandlers.draggable={sortableOptions:{group:{pull:"clone",put:!1},sort:!1},init:function(element,valueAccessor,allBindings,viewModel,bindingContext){return init(element,valueAccessor,allBindings,viewModel,bindingContext,ko.bindingHandlers.draggable.sortableOptions)},update:function(element,valueAccessor,allBindings,viewModel,bindingContext){return update(element,valueAccessor,allBindings,viewModel,bindingContext,ko.bindingHandlers.draggable.sortableOptions)}},ko.bindingHandlers.sortable={sortableOptions:{group:{pull:!0,put:!0}},init:function(element,valueAccessor,allBindings,viewModel,bindingContext){return init(element,valueAccessor,allBindings,viewModel,bindingContext,ko.bindingHandlers.sortable.sortableOptions)},update:function(element,valueAccessor,allBindings,viewModel,bindingContext){return update(element,valueAccessor,allBindings,viewModel,bindingContext,ko.bindingHandlers.sortable.sortableOptions)}}}); \ No newline at end of file +!function(factory){"use strict";if("function"==typeof define&&define.amd)define(["knockout"],factory);else if("function"==typeof require&&"object"==typeof exports&&"object"==typeof module){var ko=require("knockout");factory(ko)}else factory(window.ko)}(function(ko){"use strict";var init=function(element,valueAccessor,allBindings,viewModel,bindingContext,sortableOptions){var options=buildOptions(valueAccessor,sortableOptions);["onStart","onEnd","onRemove","onAdd","onUpdate","onSort","onFilter"].forEach(function(e){(options[e]||eventHandlers[e])&&(options[e]=function(eventType,parentVM,parentBindings,handler,e){var itemVM=ko.dataFor(e.item),bindings=ko.utils.peekObservable(parentBindings()),bindingHandlerBinding=bindings.sortable||bindings.draggable,collection=bindingHandlerBinding.collection||bindingHandlerBinding.foreach;handler&&handler(e,itemVM,parentVM,collection,bindings),eventHandlers[eventType]&&eventHandlers[eventType](e,itemVM,parentVM,collection,bindings)}.bind(void 0,e,viewModel,allBindings,options[e]))});var sortableElement=Sortable.create(element,options);return ko.utils.domNodeDisposal.addDisposeCallback(element,function(){sortableElement.destroy()}),ko.bindingHandlers.template.init(element,valueAccessor)},update=function(element,valueAccessor,allBindings,viewModel,bindingContext,sortableOptions){return ko.bindingHandlers.template.update(element,valueAccessor,allBindings,viewModel,bindingContext)},eventHandlers=function(handlers){var moveOperations=[],tryMoveOperation=function(e,itemVM,parentVM,collection,parentBindings){var currentOperation={event:e,itemVM:itemVM,parentVM:parentVM,collection:collection,parentBindings:parentBindings},existingOperation=moveOperations.filter(function(op){return op.itemVM===currentOperation.itemVM})[0];if(existingOperation){moveOperations.splice(moveOperations.indexOf(existingOperation),1);var removeOperation="remove"===currentOperation.event.type?currentOperation:existingOperation,addOperation="add"===currentOperation.event.type?currentOperation:existingOperation;moveItem(itemVM,removeOperation.collection,addOperation.collection,addOperation.event.clone,addOperation.event)}else moveOperations.push(currentOperation)},moveItem=function(itemVM,from,to,clone,e){var fromArray=from(),originalIndex=fromArray.indexOf(itemVM),newIndex=e.newIndex;e.item.previousElementSibling&&(newIndex=fromArray.indexOf(ko.dataFor(e.item.previousElementSibling)),originalIndex>newIndex&&(newIndex+=1)),e.item.parentNode.removeChild(e.item),fromArray.splice(originalIndex,1),from.valueHasMutated(),clone&&from!==to&&(fromArray.splice(originalIndex,0,itemVM),from.valueHasMutated()),to().splice(newIndex,0,itemVM),to.valueHasMutated()};return handlers.onRemove=tryMoveOperation,handlers.onAdd=tryMoveOperation,handlers.onUpdate=function(e,itemVM,parentVM,collection,parentBindings){moveItem(itemVM,collection,collection,!1,e)},handlers}({}),buildOptions=function(bindingOptions,options){var merge=function(into,from){for(var prop in from)"[object Object]"===Object.prototype.toString.call(from[prop])?("[object Object]"!==Object.prototype.toString.call(into[prop])&&(into[prop]={}),into[prop]=merge(into[prop],from[prop])):into[prop]=from[prop];return into},unwrappedOptions=ko.utils.peekObservable(bindingOptions()).options||{};return options=merge({},options),unwrappedOptions.group&&"[object Object]"!==Object.prototype.toString.call(unwrappedOptions.group)&&(unwrappedOptions.group={name:unwrappedOptions.group}),merge(options,unwrappedOptions)};ko.bindingHandlers.draggable={sortableOptions:{group:{pull:"clone",put:!1},sort:!1},init:function(element,valueAccessor,allBindings,viewModel,bindingContext){return init(element,valueAccessor,allBindings,viewModel,0,ko.bindingHandlers.draggable.sortableOptions)},update:function(element,valueAccessor,allBindings,viewModel,bindingContext){return update(element,valueAccessor,allBindings,viewModel,bindingContext,ko.bindingHandlers.draggable.sortableOptions)}},ko.bindingHandlers.sortable={sortableOptions:{group:{pull:!0,put:!0}},init:function(element,valueAccessor,allBindings,viewModel,bindingContext){return init(element,valueAccessor,allBindings,viewModel,0,ko.bindingHandlers.sortable.sortableOptions)},update:function(element,valueAccessor,allBindings,viewModel,bindingContext){return update(element,valueAccessor,allBindings,viewModel,bindingContext,ko.bindingHandlers.sortable.sortableOptions)}}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/Sortable/ng-sortable.js b/dashboard-ui/bower_components/Sortable/ng-sortable.js index 9ad7b459d9..47890a3b49 100644 --- a/dashboard-ui/bower_components/Sortable/ng-sortable.js +++ b/dashboard-ui/bower_components/Sortable/ng-sortable.js @@ -1 +1 @@ -!function(factory){"use strict";"function"==typeof define&&define.amd?define(["angular","./Sortable"],factory):"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?(require("angular"),factory(angular,require("./Sortable")),module.exports="ng-sortable"):window.angular&&window.Sortable&&factory(angular,Sortable)}(function(angular,Sortable){"use strict";var expando="Sortable:ng-sortable";angular.module("ng-sortable",[]).constant("ngSortableVersion","0.4.0").constant("ngSortableConfig",{}).directive("ngSortable",["$parse","ngSortableConfig",function($parse,ngSortableConfig){var removed,nextSibling,getSourceFactory=function(el,scope){var ngRepeat=[].filter.call(el.childNodes,function(node){return 8===node.nodeType&&node.nodeValue.indexOf("ngRepeat:")!==-1})[0];if(!ngRepeat)return function(){return null};ngRepeat=ngRepeat.nodeValue.match(/ngRepeat:\s*(?:\(.*?,\s*)?([^\s)]+)[\s)]+in\s+([^\s|]+)/);var itemsExpr=$parse(ngRepeat[2]);return function(){return itemsExpr(scope.$parent)||[]}};return{restrict:"AC",scope:{ngSortable:"=?"},link:function(scope,$el){function _emitEvent(evt,item){var name="on"+evt.type.charAt(0).toUpperCase()+evt.type.substr(1),source=getSource();options[name]&&options[name]({model:item||source[evt.newIndex],models:source,oldIndex:evt.oldIndex,newIndex:evt.newIndex})}function _sync(evt){var items=getSource();if(items){var oldIndex=evt.oldIndex,newIndex=evt.newIndex;if(el!==evt.from){var prevItems=evt.from[expando]();removed=prevItems[oldIndex],evt.clone?(removed=angular.copy(removed),prevItems.splice(Sortable.utils.index(evt.clone),0,prevItems.splice(oldIndex,1)[0]),evt.from.removeChild(evt.clone)):prevItems.splice(oldIndex,1),items.splice(newIndex,0,removed),evt.from.insertBefore(evt.item,nextSibling)}else items.splice(newIndex,0,items.splice(oldIndex,1)[0]);scope.$apply()}}var sortable,el=$el[0],options=angular.extend(scope.ngSortable||{},ngSortableConfig),watchers=[],getSource=getSourceFactory(el,scope);el[expando]=getSource,sortable=Sortable.create(el,Object.keys(options).reduce(function(opts,name){return opts[name]=opts[name]||options[name],opts},{onStart:function(evt){nextSibling=evt.item.nextSibling,_emitEvent(evt),scope.$apply()},onEnd:function(evt){_emitEvent(evt,removed),scope.$apply()},onAdd:function(evt){_sync(evt),_emitEvent(evt,removed),scope.$apply()},onUpdate:function(evt){_sync(evt),_emitEvent(evt)},onRemove:function(evt){_emitEvent(evt,removed)},onSort:function(evt){_emitEvent(evt)}})),$el.on("$destroy",function(){angular.forEach(watchers,function(unwatch){unwatch()}),sortable.destroy(),el[expando]=null,el=null,watchers=null,sortable=null,nextSibling=null}),angular.forEach(["sort","disabled","draggable","handle","animation","group","ghostClass","filter","onStart","onEnd","onAdd","onUpdate","onRemove","onSort"],function(name){watchers.push(scope.$watch("ngSortable."+name,function(value){void 0!==value&&(options[name]=value,/^on[A-Z]/.test(name)||sortable.option(name,value))}))})}}}])}); \ No newline at end of file +!function(factory){"use strict";"function"==typeof define&&define.amd?define(["angular","./Sortable"],factory):"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?(require("angular"),factory(angular,require("./Sortable")),module.exports="ng-sortable"):window.angular&&window.Sortable&&factory(angular,Sortable)}(function(angular,Sortable){"use strict";var expando="Sortable:ng-sortable";angular.module("ng-sortable",[]).constant("ngSortableVersion","0.4.0").constant("ngSortableConfig",{}).directive("ngSortable",["$parse","ngSortableConfig",function($parse,ngSortableConfig){var removed,nextSibling,getSourceFactory=function(el,scope){var ngRepeat=[].filter.call(el.childNodes,function(node){return 8===node.nodeType&&-1!==node.nodeValue.indexOf("ngRepeat:")})[0];if(!ngRepeat)return function(){return null};ngRepeat=ngRepeat.nodeValue.match(/ngRepeat:\s*(?:\(.*?,\s*)?([^\s)]+)[\s)]+in\s+([^\s|]+)/);var itemsExpr=$parse(ngRepeat[2]);return function(){return itemsExpr(scope.$parent)||[]}};return{restrict:"AC",scope:{ngSortable:"=?"},link:function(scope,$el){function _emitEvent(evt,item){var name="on"+evt.type.charAt(0).toUpperCase()+evt.type.substr(1),source=getSource();options[name]&&options[name]({model:item||source[evt.newIndex],models:source,oldIndex:evt.oldIndex,newIndex:evt.newIndex})}function _sync(evt){var items=getSource();if(items){var oldIndex=evt.oldIndex,newIndex=evt.newIndex;if(el!==evt.from){var prevItems=evt.from[expando]();removed=prevItems[oldIndex],evt.clone?(removed=angular.copy(removed),prevItems.splice(Sortable.utils.index(evt.clone),0,prevItems.splice(oldIndex,1)[0]),evt.from.removeChild(evt.clone)):prevItems.splice(oldIndex,1),items.splice(newIndex,0,removed),evt.from.insertBefore(evt.item,nextSibling)}else items.splice(newIndex,0,items.splice(oldIndex,1)[0]);scope.$apply()}}var sortable,el=$el[0],options=angular.extend(scope.ngSortable||{},ngSortableConfig),watchers=[],getSource=getSourceFactory(el,scope);el[expando]=getSource,sortable=Sortable.create(el,Object.keys(options).reduce(function(opts,name){return opts[name]=opts[name]||options[name],opts},{onStart:function(evt){nextSibling=evt.item.nextSibling,_emitEvent(evt),scope.$apply()},onEnd:function(evt){_emitEvent(evt,removed),scope.$apply()},onAdd:function(evt){_sync(evt),_emitEvent(evt,removed),scope.$apply()},onUpdate:function(evt){_sync(evt),_emitEvent(evt)},onRemove:function(evt){_emitEvent(evt,removed)},onSort:function(evt){_emitEvent(evt)}})),$el.on("$destroy",function(){angular.forEach(watchers,function(unwatch){unwatch()}),sortable.destroy(),el[expando]=null,el=null,watchers=null,sortable=null,nextSibling=null}),angular.forEach(["sort","disabled","draggable","handle","animation","group","ghostClass","filter","onStart","onEnd","onAdd","onUpdate","onRemove","onSort"],function(name){watchers.push(scope.$watch("ngSortable."+name,function(value){void 0!==value&&(options[name]=value,/^on[A-Z]/.test(name)||sortable.option(name,value))}))})}}}])}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/Sortable/react-sortable-mixin.js b/dashboard-ui/bower_components/Sortable/react-sortable-mixin.js index 4492ee7c84..ec578ed833 100644 --- a/dashboard-ui/bower_components/Sortable/react-sortable-mixin.js +++ b/dashboard-ui/bower_components/Sortable/react-sortable-mixin.js @@ -1 +1 @@ -!function(factory){"use strict";"undefined"!=typeof module&&"undefined"!=typeof module.exports?module.exports=factory(require("./Sortable")):"function"==typeof define&&define.amd?define(["./Sortable"],factory):window.SortableMixin=factory(Sortable)}(function(Sortable){"use strict";function _getModelName(component){return component.sortableOptions&&component.sortableOptions.model||_defaultOptions.model}function _getModelItems(component){var name=_getModelName(component),items=component.state&&component.state[name]||component.props[name];return items.slice()}function _extend(dst,src){for(var key in src)src.hasOwnProperty(key)&&(dst[key]=src[key]);return dst}var _nextSibling,_activeComponent,_defaultOptions={ref:"list",model:"items",animation:100,onStart:"handleStart",onEnd:"handleEnd",onAdd:"handleAdd",onUpdate:"handleUpdate",onRemove:"handleRemove",onSort:"handleSort",onFilter:"handleFilter",onMove:"handleMove"},SortableMixin={sortableMixinVersion:"0.1.1",_sortableInstance:null,componentDidMount:function(){var DOMNode,options=_extend(_extend({},_defaultOptions),this.sortableOptions||{}),copyOptions=_extend({},options),emitEvent=function(type,evt){var method=this[options[type]];method&&method.call(this,evt,this._sortableInstance)}.bind(this);"onStart onEnd onAdd onSort onUpdate onRemove onFilter onMove".split(" ").forEach(function(name){copyOptions[name]=function(evt){if("onStart"===name)_nextSibling=evt.item.nextElementSibling,_activeComponent=this;else if("onAdd"===name||"onUpdate"===name){evt.from.insertBefore(evt.item,_nextSibling);var remoteItems,item,newState={},remoteState={},oldIndex=evt.oldIndex,newIndex=evt.newIndex,items=_getModelItems(this);"onAdd"===name?(remoteItems=_getModelItems(_activeComponent),item=remoteItems.splice(oldIndex,1)[0],items.splice(newIndex,0,item),remoteState[_getModelName(_activeComponent)]=remoteItems):items.splice(newIndex,0,items.splice(oldIndex,1)[0]),newState[_getModelName(this)]=items,copyOptions.stateHandler?this[copyOptions.stateHandler](newState):this.setState(newState),this!==_activeComponent&&_activeComponent.setState(remoteState)}setTimeout(function(){emitEvent(name,evt)},0)}.bind(this)},this),DOMNode=this.getDOMNode()?(this.refs[options.ref]||this).getDOMNode():this.refs[options.ref]||this,this._sortableInstance=Sortable.create(DOMNode,copyOptions)},componentWillReceiveProps:function(nextProps){var newState={},modelName=_getModelName(this),items=nextProps[modelName];items&&(newState[modelName]=items,this.setState(newState))},componentWillUnmount:function(){this._sortableInstance.destroy(),this._sortableInstance=null}};return SortableMixin}); \ No newline at end of file +!function(factory){"use strict";"undefined"!=typeof module&&void 0!==module.exports?module.exports=factory(require("./Sortable")):"function"==typeof define&&define.amd?define(["./Sortable"],factory):window.SortableMixin=factory(Sortable)}(function(Sortable){"use strict";function _getModelName(component){return component.sortableOptions&&component.sortableOptions.model||_defaultOptions.model}function _getModelItems(component){var name=_getModelName(component);return(component.state&&component.state[name]||component.props[name]).slice()}function _extend(dst,src){for(var key in src)src.hasOwnProperty(key)&&(dst[key]=src[key]);return dst}var _nextSibling,_activeComponent,_defaultOptions={ref:"list",model:"items",animation:100,onStart:"handleStart",onEnd:"handleEnd",onAdd:"handleAdd",onUpdate:"handleUpdate",onRemove:"handleRemove",onSort:"handleSort",onFilter:"handleFilter",onMove:"handleMove"};return{sortableMixinVersion:"0.1.1",_sortableInstance:null,componentDidMount:function(){var DOMNode,options=_extend(_extend({},_defaultOptions),this.sortableOptions||{}),copyOptions=_extend({},options),emitEvent=function(type,evt){var method=this[options[type]];method&&method.call(this,evt,this._sortableInstance)}.bind(this);"onStart onEnd onAdd onSort onUpdate onRemove onFilter onMove".split(" ").forEach(function(name){copyOptions[name]=function(evt){if("onStart"===name)_nextSibling=evt.item.nextElementSibling,_activeComponent=this;else if("onAdd"===name||"onUpdate"===name){evt.from.insertBefore(evt.item,_nextSibling);var remoteItems,item,newState={},remoteState={},oldIndex=evt.oldIndex,newIndex=evt.newIndex,items=_getModelItems(this);"onAdd"===name?(remoteItems=_getModelItems(_activeComponent),item=remoteItems.splice(oldIndex,1)[0],items.splice(newIndex,0,item),remoteState[_getModelName(_activeComponent)]=remoteItems):items.splice(newIndex,0,items.splice(oldIndex,1)[0]),newState[_getModelName(this)]=items,copyOptions.stateHandler?this[copyOptions.stateHandler](newState):this.setState(newState),this!==_activeComponent&&_activeComponent.setState(remoteState)}setTimeout(function(){emitEvent(name,evt)},0)}.bind(this)},this),DOMNode=this.getDOMNode()?(this.refs[options.ref]||this).getDOMNode():this.refs[options.ref]||this,this._sortableInstance=Sortable.create(DOMNode,copyOptions)},componentWillReceiveProps:function(nextProps){var newState={},modelName=_getModelName(this),items=nextProps[modelName];items&&(newState[modelName]=items,this.setState(newState))},componentWillUnmount:function(){this._sortableInstance.destroy(),this._sortableInstance=null}}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/Swiper/LICENSE b/dashboard-ui/bower_components/Swiper/LICENSE deleted file mode 100644 index 1e18fd4120..0000000000 --- a/dashboard-ui/bower_components/Swiper/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Vladimir Kharlampidi - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/dashboard-ui/bower_components/Swiper/gulpfile.js b/dashboard-ui/bower_components/Swiper/gulpfile.js deleted file mode 100644 index 9125c87dc8..0000000000 --- a/dashboard-ui/bower_components/Swiper/gulpfile.js +++ /dev/null @@ -1 +0,0 @@ -!function(){"use strict";function addJSIndent(file,t,minusIndent){var addIndent=" ",filename=file.path.split("src/js/")[1];if(["wrap-start.js","wrap-start-umd.js","wrap-end.js","wrap-end-umd.js","amd.js"].indexOf(filename)!==-1&&(addIndent=""),"swiper-intro.js"!==filename&&"swiper-intro-f7.js"!==filename&&"swiper-outro.js"!==filename&&"dom.js"!==filename&&"get-dom-lib.js"!==filename&&"get-jquery.js"!==filename&&"dom-plugins.js"!==filename&&"swiper-proto.js"!==filename||(addIndent=" "),minusIndent&&(addIndent=addIndent.substring(4)),""!==addIndent){for(var fileLines=fs.readFileSync(file.path).toString().split("\n"),newFileContents="",i=0;i"," * <%= pkg.description %>"," * "," * <%= pkg.homepage %>"," * "," * Copyright <%= date.year %>, <%= pkg.author %>"," * The iDangero.us"," * http://www.idangero.us/"," * ",' * Licensed under <%= pkg.license.join(" & ") %>'," * "," * Released on: <%= date.month %> <%= date.day %>, <%= date.year %>"," */",""].join("\n"),date:{year:(new Date).getFullYear(),month:"January February March April May June July August September October November December".split(" ")[(new Date).getMonth()],day:(new Date).getDate()}};gulp.task("scripts",function(cb){gulp.src(swiper.jsFiles).pipe(tap(function(file,t){addJSIndent(file,t)})).pipe(sourcemaps.init()).pipe(concat(swiper.filename+".js")).pipe(header(swiper.banner,{pkg:swiper.pkg,date:swiper.date})).pipe(jshint()).pipe(jshint.reporter(stylish)).pipe(sourcemaps.write("./maps/")).pipe(gulp.dest(paths.build.scripts)),gulp.src(swiper.jQueryFiles).pipe(tap(function(file,t){addJSIndent(file,t)})).pipe(sourcemaps.init()).pipe(concat(swiper.filename+".jquery.js")).pipe(header(swiper.banner,{pkg:swiper.pkg,date:swiper.date})).pipe(sourcemaps.write("./maps/")).pipe(gulp.dest(paths.build.scripts)),gulp.src(swiper.jQueryUMDFiles).pipe(tap(function(file,t){addJSIndent(file,t)})).pipe(sourcemaps.init()).pipe(concat(swiper.filename+".jquery.umd.js")).pipe(header(swiper.banner,{pkg:swiper.pkg,date:swiper.date})).pipe(sourcemaps.write("./maps/")).pipe(gulp.dest(paths.build.scripts)),gulp.src(swiper.Framework7Files).pipe(tap(function(file,t){addJSIndent(file,t,!0)})).pipe(sourcemaps.init()).pipe(concat(swiper.filename+".framework7.js")).pipe(header(swiper.banner,{pkg:swiper.pkg,date:swiper.date})).pipe(sourcemaps.write("./maps/")).pipe(gulp.dest(paths.build.scripts)).pipe(connect.reload()),cb()}),gulp.task("styles",function(cb){gulp.src(paths.source.styles+"swiper.less").pipe(less({paths:[path.join(__dirname,"less","includes")]})).pipe(header(swiper.banner,{pkg:swiper.pkg,date:swiper.date})).pipe(rename(function(path){path.basename=swiper.filename})).pipe(gulp.dest(paths.build.styles)).pipe(connect.reload()),gulp.src([paths.source.styles+"core.less",paths.source.styles+"navigation-f7.less",paths.source.styles+"effects.less",paths.source.styles+"scrollbar.less",paths.source.styles+"preloader-f7.less"]).pipe(concat(swiper.filename+".framework7.less")).pipe(header("/* === Swiper === */\n")).pipe(gulp.dest(paths.build.styles)),cb()}),gulp.task("build",["scripts","styles"],function(cb){cb()}),gulp.task("dist",function(){gulp.src([paths.build.scripts+swiper.filename+".js"]).pipe(gulp.dest(paths.dist.scripts)).pipe(sourcemaps.init()).pipe(uglify()).pipe(header(swiper.banner,{pkg:swiper.pkg,date:swiper.date})).pipe(rename(function(path){path.basename=swiper.filename+".min"})).pipe(sourcemaps.write("./maps")).pipe(gulp.dest(paths.dist.scripts)),gulp.src([paths.build.scripts+swiper.filename+".jquery.js"]).pipe(gulp.dest(paths.dist.scripts)).pipe(sourcemaps.init()).pipe(uglify()).pipe(header(swiper.banner,{pkg:swiper.pkg,date:swiper.date})).pipe(rename(function(path){path.basename=swiper.filename+".jquery.min"})).pipe(sourcemaps.write("./maps")).pipe(gulp.dest(paths.dist.scripts)),gulp.src([paths.build.scripts+swiper.filename+".jquery.umd.js"]).pipe(gulp.dest(paths.dist.scripts)).pipe(sourcemaps.init()).pipe(uglify()).pipe(header(swiper.banner,{pkg:swiper.pkg,date:swiper.date})).pipe(rename(function(path){path.basename=swiper.filename+".jquery.umd.min"})).pipe(sourcemaps.write("./maps")).pipe(gulp.dest(paths.dist.scripts)),gulp.src(paths.build.styles+"*.css").pipe(gulp.dest(paths.dist.styles)).pipe(minifyCSS({advanced:!1,aggressiveMerging:!1})).pipe(header(swiper.banner,{pkg:swiper.pkg,date:swiper.date})).pipe(rename(function(path){path.basename=swiper.filename+".min"})).pipe(gulp.dest(paths.dist.styles))}),gulp.task("watch",function(){gulp.watch(paths.source.scripts,["scripts"]),gulp.watch(paths.source.styles+"*.less",["styles"])}),gulp.task("connect",function(){return connect.server({root:[paths.root],livereload:!0,port:"3000"})}),gulp.task("open",function(){return gulp.src(paths.playground.root+"index.html").pipe(open({uri:"http://localhost:3000/"+paths.playground.root+"index.html"}))}),gulp.task("server",["watch","connect","open"]),gulp.task("default",["server"])}(); \ No newline at end of file diff --git a/dashboard-ui/bower_components/alameda/LICENSE b/dashboard-ui/bower_components/alameda/LICENSE deleted file mode 100644 index cd164e2731..0000000000 --- a/dashboard-ui/bower_components/alameda/LICENSE +++ /dev/null @@ -1,45 +0,0 @@ -Copyright jQuery Foundation and other contributors, https://jquery.org/ - -This software consists of voluntary contributions made by many -individuals. For exact contribution history, see the revision history -available at https://github.com/requirejs/alameda - -The following license applies to all parts of this software except as -documented below: - -==== - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -==== - -Copyright and related rights for sample code are waived via CC0. Sample -code is defined as all source code displayed within the prose of the -documentation. - -CC0: http://creativecommons.org/publicdomain/zero/1.0/ - -==== - -Files located in the node_modules directory, and certain utilities used -to build or test the software in the tests and tests-requirejs directories, are -externally maintained libraries used by this software which have their own -licenses; we recommend you read them, as their terms may differ from the -terms above. diff --git a/dashboard-ui/bower_components/alameda/alameda.js b/dashboard-ui/bower_components/alameda/alameda.js index eeb8362f8d..8f8d95207a 100644 --- a/dashboard-ui/bower_components/alameda/alameda.js +++ b/dashboard-ui/bower_components/alameda/alameda.js @@ -1 +1 @@ -var requirejs,require,define;!function(global,Promise,undef){function commentReplace(match,singlePrefix){return singlePrefix||""}function hasProp(obj,prop){return hasOwn.call(obj,prop)}function getOwn(obj,prop){return obj&&hasProp(obj,prop)&&obj[prop]}function obj(){return Object.create(null)}function eachProp(obj,func){var prop;for(prop in obj)if(hasProp(obj,prop)&&func(obj[prop],prop))break}function mixin(target,source,force,deepStringMixin){return source&&eachProp(source,function(value,prop){!force&&hasProp(target,prop)||(!deepStringMixin||"object"!=typeof value||!value||Array.isArray(value)||"function"==typeof value||value instanceof RegExp?target[prop]=value:(target[prop]||(target[prop]={}),mixin(target[prop],value,force,deepStringMixin)))}),target}function getGlobal(value){if(!value)return value;var g=global;return value.split(".").forEach(function(part){g=g[part]}),g}function newContext(contextName){function trimDots(ary){var i,part,length=ary.length;for(i=0;i0&&(ary.splice(i-1,2),i-=2)}}function normalize(name,baseName,applyMap){var pkgMain,mapValue,nameParts,i,j,nameSegment,lastIndex,foundMap,foundI,foundStarMap,starI,baseParts=baseName&&baseName.split("/"),normalizedBaseParts=baseParts,map=config.map,starMap=map&&map["*"];if(name&&(name=name.split("/"),lastIndex=name.length-1,config.nodeIdCompat&&jsSuffixRegExp.test(name[lastIndex])&&(name[lastIndex]=name[lastIndex].replace(jsSuffixRegExp,"")),"."===name[0].charAt(0)&&baseParts&&(normalizedBaseParts=baseParts.slice(0,baseParts.length-1),name=normalizedBaseParts.concat(name)),trimDots(name),name=name.join("/")),applyMap&&map&&(baseParts||starMap)){nameParts=name.split("/");outerLoop:for(i=nameParts.length;i>0;i-=1){if(nameSegment=nameParts.slice(0,i).join("/"),baseParts)for(j=baseParts.length;j>0;j-=1)if(mapValue=getOwn(map,baseParts.slice(0,j).join("/")),mapValue&&(mapValue=getOwn(mapValue,nameSegment))){foundMap=mapValue,foundI=i;break outerLoop}!foundStarMap&&starMap&&getOwn(starMap,nameSegment)&&(foundStarMap=getOwn(starMap,nameSegment),starI=i)}!foundMap&&foundStarMap&&(foundMap=foundStarMap,foundI=starI),foundMap&&(nameParts.splice(0,foundI,foundMap),name=nameParts.join("/"))}return pkgMain=getOwn(config.pkgs,name),pkgMain?pkgMain:name}function makeShimExports(value){function fn(){var ret;return value.init&&(ret=value.init.apply(global,arguments)),ret||value.exports&&getGlobal(value.exports)}return fn}function takeQueue(anonId){var i,id,args,shim;for(i=0;i0;i-=1)if(parentModule=syms.slice(0,i).join("/"),parentPath=getOwn(paths,parentModule)){Array.isArray(parentPath)&&(parentPath=parentPath[0]),syms.splice(0,i,parentPath);break}url=syms.join("/"),url+=ext||(/^data\:|^blob\:|\?/.test(url)||skipExt?"":".js"),url=("/"===url.charAt(0)||url.match(/^[\w\+\.\-]+:/)?"":config.baseUrl)+url}return config.urlArgs&&!/^blob\:/.test(url)?url+config.urlArgs(moduleName,url):url},req.toUrl=function(moduleNamePlusExt){var ext,index=moduleNamePlusExt.lastIndexOf("."),segment=moduleNamePlusExt.split("/")[0],isRelative="."===segment||".."===segment;return index!==-1&&(!isRelative||index>1)&&(ext=moduleNamePlusExt.substring(index,moduleNamePlusExt.length),moduleNamePlusExt=moduleNamePlusExt.substring(0,index)),req.nameToUrl(normalize(moduleNamePlusExt,relName),ext,!0)},req.defined=function(id){return makeMap(id,relName,!0).id in defined},req.specified=function(id){return id=makeMap(id,relName,!0).id,id in defined||id in deferreds},req}function resolve(name,d,value){name&&(defined[name]=value,requirejs.onResourceLoad&&requirejs.onResourceLoad(context,d.map,d.deps)),d.finished=!0,d.resolve(value)}function reject(d,err){d.finished=!0,d.rejected=!0,d.reject(err)}function makeNormalize(relName){return function(name){return normalize(name,relName,!0)}}function defineModule(d){d.factoryCalled=!0;var ret,name=d.map.id;try{ret=context.execCb(name,d.factory,d.values,defined[name])}catch(err){return reject(d,err)}name?ret===undef&&(d.cjsModule?ret=d.cjsModule.exports:d.usingExports&&(ret=defined[name])):requireDeferreds.splice(requireDeferreds.indexOf(d),1),resolve(name,d,ret)}function depFinished(val,i){this.rejected||this.depDefined[i]||(this.depDefined[i]=!0,this.depCount+=1,this.values[i]=val,this.depending||this.depCount!==this.depMax||defineModule(this))}function makeDefer(name,calculatedMap){var d={};return d.promise=new Promise(function(resolve,reject){d.resolve=resolve,d.reject=function(err){name||requireDeferreds.splice(requireDeferreds.indexOf(d),1),reject(err)}}),d.map=name?calculatedMap||makeMap(name):{},d.depCount=0,d.depMax=0,d.values=[],d.depDefined=[],d.depFinished=depFinished,d.map.pr&&(d.deps=[makeMap(d.map.pr)]),d}function getDefer(name,calculatedMap){var d;return name?(d=name in deferreds&&deferreds[name],d||(d=deferreds[name]=makeDefer(name,calculatedMap))):(d=makeDefer(),requireDeferreds.push(d)),d}function makeErrback(d,name){return function(err){d.rejected||(err.dynaId||(err.dynaId="id"+(errCount+=1),err.requireModules=[name]),reject(d,err))}}function waitForDep(depMap,relName,d,i){d.depMax+=1,callDep(depMap,relName).then(function(val){d.depFinished(val,i)},makeErrback(d,depMap.id)).catch(makeErrback(d,d.map.id))}function makeLoad(id){function load(value){fromTextCalled||resolve(id,getDefer(id),value)}var fromTextCalled;return load.error=function(err){reject(getDefer(id),err)},load.fromText=function(text,textAlt){var execError,d=getDefer(id),map=makeMap(makeMap(id).n),plainId=map.id;fromTextCalled=!0,d.factory=function(p,val){return val},textAlt&&(text=textAlt),hasProp(config.config,id)&&(config.config[plainId]=config.config[id]);try{req.exec(text)}catch(e){execError=new Error("fromText eval for "+plainId+" failed: "+e),execError.requireType="fromtexteval",reject(d,execError)}takeQueue(plainId),d.deps=[map],waitForDep(map,null,d,d.deps.length)},load}function callPlugin(plugin,map,relName){plugin.load(map.n,makeRequire(relName),makeLoad(map.id),config)}function splitPrefix(name){var prefix,index=name?name.indexOf("!"):-1;return index>-1&&(prefix=name.substring(0,index),name=name.substring(index+1,name.length)),[prefix,name]}function breakCycle(d,traced,processed){var id=d.map.id;traced[id]=!0,!d.finished&&d.deps&&d.deps.forEach(function(depMap){var depId=depMap.id,dep=!hasProp(handlers,depId)&&getDefer(depId,depMap);!dep||dep.finished||processed[depId]||(hasProp(traced,depId)?d.deps.forEach(function(depMap,i){depMap.id===depId&&d.depFinished(defined[depId],i)}):breakCycle(dep,traced,processed))}),processed[id]=!0}function check(d){var err,mid,dfd,notFinished=[],waitInterval=1e3*config.waitSeconds,expired=waitInterval&&startTime+waitInterval<(new Date).getTime();if(0===loadCount&&(d?d.finished||breakCycle(d,{},{}):requireDeferreds.length&&requireDeferreds.forEach(function(d){breakCycle(d,{},{})})),expired){for(mid in deferreds)dfd=deferreds[mid],dfd.finished||notFinished.push(dfd.map.id);err=new Error("Timeout for modules: "+notFinished),err.requireModules=notFinished,err.requireType="timeout",notFinished.forEach(function(id){reject(getDefer(id),err)})}else(loadCount||requireDeferreds.length)&&(checkingLater||(checkingLater=!0,setTimeout(function(){checkingLater=!1,check()},70)))}function delayedError(e){return setTimeout(function(){e.dynaId&&trackedErrors[e.dynaId]||(trackedErrors[e.dynaId]=!0,req.onError(e))}),e}var req,main,makeMap,callDep,handlers,checkingLater,load,context,defined=obj(),waiting=obj(),config={waitSeconds:7,baseUrl:"./",paths:{},bundles:{},pkgs:{},shim:{},config:{}},mapCache=obj(),requireDeferreds=[],deferreds=obj(),calledDefine=obj(),calledPlugin=obj(),loadCount=0,startTime=(new Date).getTime(),errCount=0,trackedErrors=obj(),urlFetched=obj(),bundlesMap=obj(),asyncResolve=Promise.resolve();return load="function"==typeof importScripts?function(map){var url=map.url;urlFetched[url]||(urlFetched[url]=!0,getDefer(map.id),importScripts(url),takeQueue(map.id))}:function(map){var script,id=map.id,url=map.url;urlFetched[url]||(urlFetched[url]=!0,script=document.createElement("script"),script.setAttribute("data-requiremodule",id),script.type=config.scriptType||"text/javascript",script.charset="utf-8",script.async=!0,loadCount+=1,script.addEventListener("load",function(){loadCount-=1,takeQueue(id)},!1),script.addEventListener("error",function(){loadCount-=1;var err,pathConfig=getOwn(config.paths,id);if(pathConfig&&Array.isArray(pathConfig)&&pathConfig.length>1){script.parentNode.removeChild(script),pathConfig.shift();var d=getDefer(id);d.map=makeMap(id),d.map.url=req.nameToUrl(id),load(d.map)}else err=new Error("Load failed: "+id+": "+script.src),err.requireModules=[id],err.requireType="scripterror",reject(getDefer(id),err)},!1),script.src=url,10===document.documentMode?asap.then(function(){document.head.appendChild(script)}):document.head.appendChild(script))},callDep=function(map,relName){var args,bundleId,name=map.id,shim=config.shim[name];if(name in waiting)args=waiting[name],delete waiting[name],main.apply(undef,args);else if(!(name in deferreds))if(map.pr){if(!(bundleId=getOwn(bundlesMap,name)))return callDep(makeMap(map.pr)).then(function(plugin){var newMap=map.prn?map:makeMap(name,relName,!0),newId=newMap.id,shim=getOwn(config.shim,newId);return newId in calledPlugin||(calledPlugin[newId]=!0,shim&&shim.deps?req(shim.deps,function(){callPlugin(plugin,newMap,relName)}):callPlugin(plugin,newMap,relName)),getDefer(newId).promise});map.url=req.nameToUrl(bundleId),load(map)}else shim&&shim.deps?req(shim.deps,function(){load(map)}):load(map);return getDefer(name).promise},makeMap=function(name,relName,applyMap){if("string"!=typeof name)return name;var plugin,url,parts,prefix,result,prefixNormalized,cacheKey=name+" & "+(relName||"")+" & "+!!applyMap;return parts=splitPrefix(name),prefix=parts[0],name=parts[1],!prefix&&cacheKey in mapCache?mapCache[cacheKey]:(prefix&&(prefix=normalize(prefix,relName,applyMap),plugin=prefix in defined&&defined[prefix]),prefix?plugin&&plugin.normalize?(name=plugin.normalize(name,makeNormalize(relName)),prefixNormalized=!0):name=name.indexOf("!")===-1?normalize(name,relName,applyMap):name:(name=normalize(name,relName,applyMap),parts=splitPrefix(name),prefix=parts[0],name=parts[1],url=req.nameToUrl(name)),result={id:prefix?prefix+"!"+name:name,n:name,pr:prefix,url:url,prn:prefix&&prefixNormalized},prefix||(mapCache[cacheKey]=result),result)},handlers={require:function(name){return makeRequire(name)},exports:function(name){var e=defined[name];return"undefined"!=typeof e?e:defined[name]={}},module:function(name){return{id:name,uri:"",exports:handlers.exports(name),config:function(){return getOwn(config.config,name)||{}}}}},main=function(name,deps,factory,errback,relName){if(name){if(name in calledDefine)return;calledDefine[name]=!0}var d=getDefer(name);return deps&&!Array.isArray(deps)&&(factory=deps,deps=[]),deps=deps?slice.call(deps,0):null,errback||(hasProp(config,"defaultErrback")?config.defaultErrback&&(errback=config.defaultErrback):errback=delayedError),errback&&d.promise.catch(errback),relName=relName||name,"function"==typeof factory?(!deps.length&&factory.length&&(factory.toString().replace(commentRegExp,commentReplace).replace(cjsRequireRegExp,function(match,dep){deps.push(dep)}),deps=(1===factory.length?["require"]:["require","exports","module"]).concat(deps)),d.factory=factory,d.deps=deps,d.depending=!0,deps.forEach(function(depName,i){var depMap;deps[i]=depMap=makeMap(depName,relName,!0),depName=depMap.id,"require"===depName?d.values[i]=handlers.require(name):"exports"===depName?(d.values[i]=handlers.exports(name),d.usingExports=!0):"module"===depName?d.values[i]=d.cjsModule=handlers.module(name):void 0===depName?d.values[i]=void 0:waitForDep(depMap,relName,d,i)}),d.depending=!1,d.depCount===d.depMax&&defineModule(d)):name&&resolve(name,d,factory),startTime=(new Date).getTime(),name||check(d),d.promise},req=makeRequire(null,!0),req.config=function(cfg){if(cfg.context&&cfg.context!==contextName){var existingContext=getOwn(contexts,cfg.context);return existingContext?existingContext.req.config(cfg):newContext(cfg.context).config(cfg)}if(mapCache=obj(),cfg.baseUrl&&"/"!==cfg.baseUrl.charAt(cfg.baseUrl.length-1)&&(cfg.baseUrl+="/"),"string"==typeof cfg.urlArgs){var urlArgs=cfg.urlArgs;cfg.urlArgs=function(id,url){return(url.indexOf("?")===-1?"?":"&")+urlArgs}}var shim=config.shim,objs={paths:!0,bundles:!0,config:!0,map:!0};return eachProp(cfg,function(value,prop){objs[prop]?(config[prop]||(config[prop]={}),mixin(config[prop],value,!0,!0)):config[prop]=value}),cfg.bundles&&eachProp(cfg.bundles,function(value,prop){value.forEach(function(v){v!==prop&&(bundlesMap[v]=prop)})}),cfg.shim&&(eachProp(cfg.shim,function(value,id){Array.isArray(value)&&(value={deps:value}),!value.exports&&!value.init||value.exportsFn||(value.exportsFn=makeShimExports(value)),shim[id]=value}),config.shim=shim),cfg.packages&&cfg.packages.forEach(function(pkgObj){var location,name;pkgObj="string"==typeof pkgObj?{name:pkgObj}:pkgObj,name=pkgObj.name,location=pkgObj.location,location&&(config.paths[name]=pkgObj.location),config.pkgs[name]=pkgObj.name+"/"+(pkgObj.main||"main").replace(currDirRegExp,"").replace(jsSuffixRegExp,"")}),(cfg.deps||cfg.callback)&&req(cfg.deps,cfg.callback),req},req.onError=function(err){throw err},context={id:contextName,defined:defined,waiting:waiting,config:config,deferreds:deferreds,req:req,execCb:function(name,callback,args,exports){return callback.apply(exports,args)}},contexts[contextName]=context,req}if(!Promise)throw new Error("No Promise implementation available");var topReq,dataMain,src,subPath,bootstrapConfig=requirejs||require,hasOwn=Object.prototype.hasOwnProperty,contexts={},queue=[],currDirRegExp=/^\.\//,urlRegExp=/^\/|\:|\?|\.js$/,commentRegExp=/\/\*[\s\S]*?\*\/|([^:"'=]|^)\/\/.*$/gm,cjsRequireRegExp=/[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,jsSuffixRegExp=/\.js$/,slice=Array.prototype.slice;if("function"!=typeof requirejs){var asap=Promise.resolve(void 0);requirejs=topReq=newContext("_"),"function"!=typeof require&&(require=topReq),topReq.exec=function(text){return eval(text)},topReq.contexts=contexts,define=function(){queue.push(slice.call(arguments,0))},define.amd={jQuery:!0},bootstrapConfig&&topReq.config(bootstrapConfig),topReq.isBrowser&&!contexts._.config.skipDataMain&&(dataMain=document.querySelectorAll("script[data-main]")[0],dataMain=dataMain&&dataMain.getAttribute("data-main"),dataMain&&(dataMain=dataMain.replace(jsSuffixRegExp,""),bootstrapConfig&&bootstrapConfig.baseUrl||dataMain.indexOf("!")!==-1||(src=dataMain.split("/"),dataMain=src.pop(),subPath=src.length?src.join("/")+"/":"./",topReq.config({baseUrl:subPath})),topReq([dataMain])))}}(this,"undefined"!=typeof Promise?Promise:void 0); \ No newline at end of file +var requirejs,require,define;!function(global,Promise,undef){function commentReplace(match,singlePrefix){return singlePrefix||""}function hasProp(obj,prop){return hasOwn.call(obj,prop)}function getOwn(obj,prop){return obj&&hasProp(obj,prop)&&obj[prop]}function obj(){return Object.create(null)}function eachProp(obj,func){var prop;for(prop in obj)if(hasProp(obj,prop)&&func(obj[prop],prop))break}function mixin(target,source,force,deepStringMixin){return source&&eachProp(source,function(value,prop){!force&&hasProp(target,prop)||(!deepStringMixin||"object"!=typeof value||!value||Array.isArray(value)||"function"==typeof value||value instanceof RegExp?target[prop]=value:(target[prop]||(target[prop]={}),mixin(target[prop],value,force,deepStringMixin)))}),target}function getGlobal(value){if(!value)return value;var g=global;return value.split(".").forEach(function(part){g=g[part]}),g}function newContext(contextName){function trimDots(ary){var i,part,length=ary.length;for(i=0;i0&&(ary.splice(i-1,2),i-=2)}}function normalize(name,baseName,applyMap){var mapValue,nameParts,i,j,nameSegment,lastIndex,foundMap,foundI,foundStarMap,starI,baseParts=baseName&&baseName.split("/"),normalizedBaseParts=baseParts,map=config.map,starMap=map&&map["*"];if(name&&(name=name.split("/"),lastIndex=name.length-1,config.nodeIdCompat&&jsSuffixRegExp.test(name[lastIndex])&&(name[lastIndex]=name[lastIndex].replace(jsSuffixRegExp,"")),"."===name[0].charAt(0)&&baseParts&&(normalizedBaseParts=baseParts.slice(0,baseParts.length-1),name=normalizedBaseParts.concat(name)),trimDots(name),name=name.join("/")),applyMap&&map&&(baseParts||starMap)){nameParts=name.split("/");outerLoop:for(i=nameParts.length;i>0;i-=1){if(nameSegment=nameParts.slice(0,i).join("/"),baseParts)for(j=baseParts.length;j>0;j-=1)if((mapValue=getOwn(map,baseParts.slice(0,j).join("/")))&&(mapValue=getOwn(mapValue,nameSegment))){foundMap=mapValue,foundI=i;break outerLoop}!foundStarMap&&starMap&&getOwn(starMap,nameSegment)&&(foundStarMap=getOwn(starMap,nameSegment),starI=i)}!foundMap&&foundStarMap&&(foundMap=foundStarMap,foundI=starI),foundMap&&(nameParts.splice(0,foundI,foundMap),name=nameParts.join("/"))}return getOwn(config.pkgs,name)||name}function makeShimExports(value){function fn(){var ret;return value.init&&(ret=value.init.apply(global,arguments)),ret||value.exports&&getGlobal(value.exports)}return fn}function takeQueue(anonId){var i,id,args,shim;for(i=0;i0;i-=1)if(parentModule=syms.slice(0,i).join("/"),parentPath=getOwn(paths,parentModule)){Array.isArray(parentPath)&&(parentPath=parentPath[0]),syms.splice(0,i,parentPath);break}url=syms.join("/"),url+=ext||(/^data\:|^blob\:|\?/.test(url)||skipExt?"":".js"),url=("/"===url.charAt(0)||url.match(/^[\w\+\.\-]+:/)?"":config.baseUrl)+url}return config.urlArgs&&!/^blob\:/.test(url)?url+config.urlArgs(moduleName,url):url},req.toUrl=function(moduleNamePlusExt){var ext,index=moduleNamePlusExt.lastIndexOf("."),segment=moduleNamePlusExt.split("/")[0],isRelative="."===segment||".."===segment;return-1!==index&&(!isRelative||index>1)&&(ext=moduleNamePlusExt.substring(index,moduleNamePlusExt.length),moduleNamePlusExt=moduleNamePlusExt.substring(0,index)),req.nameToUrl(normalize(moduleNamePlusExt,relName),ext,!0)},req.defined=function(id){return makeMap(id,relName,!0).id in defined},req.specified=function(id){return(id=makeMap(id,relName,!0).id)in defined||id in deferreds},req}function resolve(name,d,value){name&&(defined[name]=value,requirejs.onResourceLoad&&requirejs.onResourceLoad(context,d.map,d.deps)),d.finished=!0,d.resolve(value)}function reject(d,err){d.finished=!0,d.rejected=!0,d.reject(err)}function makeNormalize(relName){return function(name){return normalize(name,relName,!0)}}function defineModule(d){d.factoryCalled=!0;var ret,name=d.map.id;try{ret=context.execCb(name,d.factory,d.values,defined[name])}catch(err){return reject(d,err)}name?ret===undef&&(d.cjsModule?ret=d.cjsModule.exports:d.usingExports&&(ret=defined[name])):requireDeferreds.splice(requireDeferreds.indexOf(d),1),resolve(name,d,ret)}function depFinished(val,i){this.rejected||this.depDefined[i]||(this.depDefined[i]=!0,this.depCount+=1,this.values[i]=val,this.depending||this.depCount!==this.depMax||defineModule(this))}function makeDefer(name,calculatedMap){var d={};return d.promise=new Promise(function(resolve,reject){d.resolve=resolve,d.reject=function(err){name||requireDeferreds.splice(requireDeferreds.indexOf(d),1),reject(err)}}),d.map=name?calculatedMap||makeMap(name):{},d.depCount=0,d.depMax=0,d.values=[],d.depDefined=[],d.depFinished=depFinished,d.map.pr&&(d.deps=[makeMap(d.map.pr)]),d}function getDefer(name,calculatedMap){var d;return name?(d=name in deferreds&&deferreds[name])||(d=deferreds[name]=makeDefer(name,calculatedMap)):(d=makeDefer(),requireDeferreds.push(d)),d}function makeErrback(d,name){return function(err){d.rejected||(err.dynaId||(err.dynaId="id"+(errCount+=1),err.requireModules=[name]),reject(d,err))}}function waitForDep(depMap,relName,d,i){d.depMax+=1,callDep(depMap,relName).then(function(val){d.depFinished(val,i)},makeErrback(d,depMap.id)).catch(makeErrback(d,d.map.id))}function makeLoad(id){function load(value){fromTextCalled||resolve(id,getDefer(id),value)}var fromTextCalled;return load.error=function(err){reject(getDefer(id),err)},load.fromText=function(text,textAlt){var execError,d=getDefer(id),map=makeMap(makeMap(id).n),plainId=map.id;fromTextCalled=!0,d.factory=function(p,val){return val},textAlt&&(text=textAlt),hasProp(config.config,id)&&(config.config[plainId]=config.config[id]);try{req.exec(text)}catch(e){execError=new Error("fromText eval for "+plainId+" failed: "+e),execError.requireType="fromtexteval",reject(d,execError)}takeQueue(plainId),d.deps=[map],waitForDep(map,null,d,d.deps.length)},load}function callPlugin(plugin,map,relName){plugin.load(map.n,makeRequire(relName),makeLoad(map.id),config)}function splitPrefix(name){var prefix,index=name?name.indexOf("!"):-1;return index>-1&&(prefix=name.substring(0,index),name=name.substring(index+1,name.length)),[prefix,name]}function breakCycle(d,traced,processed){var id=d.map.id;traced[id]=!0,!d.finished&&d.deps&&d.deps.forEach(function(depMap){var depId=depMap.id,dep=!hasProp(handlers,depId)&&getDefer(depId,depMap);!dep||dep.finished||processed[depId]||(hasProp(traced,depId)?d.deps.forEach(function(depMap,i){depMap.id===depId&&d.depFinished(defined[depId],i)}):breakCycle(dep,traced,processed))}),processed[id]=!0}function check(d){var err,mid,dfd,notFinished=[],waitInterval=1e3*config.waitSeconds,expired=waitInterval&&startTime+waitInterval<(new Date).getTime();if(0===loadCount&&(d?d.finished||breakCycle(d,{},{}):requireDeferreds.length&&requireDeferreds.forEach(function(d){breakCycle(d,{},{})})),expired){for(mid in deferreds)dfd=deferreds[mid],dfd.finished||notFinished.push(dfd.map.id);err=new Error("Timeout for modules: "+notFinished),err.requireModules=notFinished,err.requireType="timeout",notFinished.forEach(function(id){reject(getDefer(id),err)})}else(loadCount||requireDeferreds.length)&&(checkingLater||(checkingLater=!0,setTimeout(function(){checkingLater=!1,check()},70)))}function delayedError(e){return setTimeout(function(){e.dynaId&&trackedErrors[e.dynaId]||(trackedErrors[e.dynaId]=!0,req.onError(e))}),e}var req,main,makeMap,callDep,handlers,checkingLater,load,context,defined=obj(),waiting=obj(),config={waitSeconds:7,baseUrl:"./",paths:{},bundles:{},pkgs:{},shim:{},config:{}},mapCache=obj(),requireDeferreds=[],deferreds=obj(),calledDefine=obj(),calledPlugin=obj(),loadCount=0,startTime=(new Date).getTime(),errCount=0,trackedErrors=obj(),urlFetched=obj(),bundlesMap=obj(),asyncResolve=Promise.resolve();return load="function"==typeof importScripts?function(map){var url=map.url;urlFetched[url]||(urlFetched[url]=!0,getDefer(map.id),importScripts(url),takeQueue(map.id))}:function(map){var script,id=map.id,url=map.url;urlFetched[url]||(urlFetched[url]=!0,script=document.createElement("script"),script.setAttribute("data-requiremodule",id),script.type=config.scriptType||"text/javascript",script.charset="utf-8",script.async=!0,loadCount+=1,script.addEventListener("load",function(){loadCount-=1,takeQueue(id)},!1),script.addEventListener("error",function(){loadCount-=1;var err,pathConfig=getOwn(config.paths,id);if(pathConfig&&Array.isArray(pathConfig)&&pathConfig.length>1){script.parentNode.removeChild(script),pathConfig.shift();var d=getDefer(id);d.map=makeMap(id),d.map.url=req.nameToUrl(id),load(d.map)}else err=new Error("Load failed: "+id+": "+script.src),err.requireModules=[id],err.requireType="scripterror",reject(getDefer(id),err)},!1),script.src=url,10===document.documentMode?asap.then(function(){document.head.appendChild(script)}):document.head.appendChild(script))},callDep=function(map,relName){var args,bundleId,name=map.id,shim=config.shim[name];if(name in waiting)args=waiting[name],delete waiting[name],main.apply(undef,args);else if(!(name in deferreds))if(map.pr){if(!(bundleId=getOwn(bundlesMap,name)))return callDep(makeMap(map.pr)).then(function(plugin){var newMap=map.prn?map:makeMap(name,relName,!0),newId=newMap.id,shim=getOwn(config.shim,newId);return newId in calledPlugin||(calledPlugin[newId]=!0,shim&&shim.deps?req(shim.deps,function(){callPlugin(plugin,newMap,relName)}):callPlugin(plugin,newMap,relName)),getDefer(newId).promise});map.url=req.nameToUrl(bundleId),load(map)}else shim&&shim.deps?req(shim.deps,function(){load(map)}):load(map);return getDefer(name).promise},makeMap=function(name,relName,applyMap){if("string"!=typeof name)return name;var plugin,url,parts,prefix,result,prefixNormalized,cacheKey=name+" & "+(relName||"")+" & "+!!applyMap;return parts=splitPrefix(name),prefix=parts[0],name=parts[1],!prefix&&cacheKey in mapCache?mapCache[cacheKey]:(prefix&&(prefix=normalize(prefix,relName,applyMap),plugin=prefix in defined&&defined[prefix]),prefix?plugin&&plugin.normalize?(name=plugin.normalize(name,makeNormalize(relName)),prefixNormalized=!0):name=-1===name.indexOf("!")?normalize(name,relName,applyMap):name:(name=normalize(name,relName,applyMap),parts=splitPrefix(name),prefix=parts[0],name=parts[1],url=req.nameToUrl(name)),result={id:prefix?prefix+"!"+name:name,n:name,pr:prefix,url:url,prn:prefix&&prefixNormalized},prefix||(mapCache[cacheKey]=result),result)},handlers={require:function(name){return makeRequire(name)},exports:function(name){var e=defined[name];return void 0!==e?e:defined[name]={}},module:function(name){return{id:name,uri:"",exports:handlers.exports(name),config:function(){return getOwn(config.config,name)||{}}}}},main=function(name,deps,factory,errback,relName){if(name){if(name in calledDefine)return;calledDefine[name]=!0}var d=getDefer(name);return deps&&!Array.isArray(deps)&&(factory=deps,deps=[]),deps=deps?slice.call(deps,0):null,errback||(hasProp(config,"defaultErrback")?config.defaultErrback&&(errback=config.defaultErrback):errback=delayedError),errback&&d.promise.catch(errback),relName=relName||name,"function"==typeof factory?(!deps.length&&factory.length&&(factory.toString().replace(commentRegExp,commentReplace).replace(cjsRequireRegExp,function(match,dep){deps.push(dep)}),deps=(1===factory.length?["require"]:["require","exports","module"]).concat(deps)),d.factory=factory,d.deps=deps,d.depending=!0,deps.forEach(function(depName,i){var depMap;deps[i]=depMap=makeMap(depName,relName,!0),depName=depMap.id,"require"===depName?d.values[i]=handlers.require(name):"exports"===depName?(d.values[i]=handlers.exports(name),d.usingExports=!0):"module"===depName?d.values[i]=d.cjsModule=handlers.module(name):void 0===depName?d.values[i]=void 0:waitForDep(depMap,relName,d,i)}),d.depending=!1,d.depCount===d.depMax&&defineModule(d)):name&&resolve(name,d,factory),startTime=(new Date).getTime(),name||check(d),d.promise},req=makeRequire(null,!0),req.config=function(cfg){if(cfg.context&&cfg.context!==contextName){var existingContext=getOwn(contexts,cfg.context);return existingContext?existingContext.req.config(cfg):newContext(cfg.context).config(cfg)}if(mapCache=obj(),cfg.baseUrl&&"/"!==cfg.baseUrl.charAt(cfg.baseUrl.length-1)&&(cfg.baseUrl+="/"),"string"==typeof cfg.urlArgs){var urlArgs=cfg.urlArgs;cfg.urlArgs=function(id,url){return(-1===url.indexOf("?")?"?":"&")+urlArgs}}var shim=config.shim,objs={paths:!0,bundles:!0,config:!0,map:!0};return eachProp(cfg,function(value,prop){objs[prop]?(config[prop]||(config[prop]={}),mixin(config[prop],value,!0,!0)):config[prop]=value}),cfg.bundles&&eachProp(cfg.bundles,function(value,prop){value.forEach(function(v){v!==prop&&(bundlesMap[v]=prop)})}),cfg.shim&&(eachProp(cfg.shim,function(value,id){Array.isArray(value)&&(value={deps:value}),!value.exports&&!value.init||value.exportsFn||(value.exportsFn=makeShimExports(value)),shim[id]=value}),config.shim=shim),cfg.packages&&cfg.packages.forEach(function(pkgObj){var location,name;pkgObj="string"==typeof pkgObj?{name:pkgObj}:pkgObj,name=pkgObj.name,location=pkgObj.location,location&&(config.paths[name]=pkgObj.location),config.pkgs[name]=pkgObj.name+"/"+(pkgObj.main||"main").replace(currDirRegExp,"").replace(jsSuffixRegExp,"")}),(cfg.deps||cfg.callback)&&req(cfg.deps,cfg.callback),req},req.onError=function(err){throw err},context={id:contextName,defined:defined,waiting:waiting,config:config,deferreds:deferreds,req:req,execCb:function(name,callback,args,exports){return callback.apply(exports,args)}},contexts[contextName]=context,req}if(!Promise)throw new Error("No Promise implementation available");var topReq,dataMain,src,subPath,bootstrapConfig=requirejs||require,hasOwn=Object.prototype.hasOwnProperty,contexts={},queue=[],currDirRegExp=/^\.\//,urlRegExp=/^\/|\:|\?|\.js$/,commentRegExp=/\/\*[\s\S]*?\*\/|([^:"'=]|^)\/\/.*$/gm,cjsRequireRegExp=/[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,jsSuffixRegExp=/\.js$/,slice=Array.prototype.slice;if("function"!=typeof requirejs){var asap=Promise.resolve(void 0);requirejs=topReq=newContext("_"),"function"!=typeof require&&(require=topReq),topReq.exec=function(text){return eval(text)},topReq.contexts=contexts,define=function(){queue.push(slice.call(arguments,0))},define.amd={jQuery:!0},bootstrapConfig&&topReq.config(bootstrapConfig),topReq.isBrowser&&!contexts._.config.skipDataMain&&(dataMain=document.querySelectorAll("script[data-main]")[0],(dataMain=dataMain&&dataMain.getAttribute("data-main"))&&(dataMain=dataMain.replace(jsSuffixRegExp,""),bootstrapConfig&&bootstrapConfig.baseUrl||-1!==dataMain.indexOf("!")||(src=dataMain.split("/"),dataMain=src.pop(),subPath=src.length?src.join("/")+"/":"./",topReq.config({baseUrl:subPath})),topReq([dataMain])))}}(this,"undefined"!=typeof Promise?Promise:void 0); \ No newline at end of file diff --git a/dashboard-ui/bower_components/cryptojslib/components/core-min.js b/dashboard-ui/bower_components/cryptojslib/components/core-min.js deleted file mode 100644 index 3f191b4316..0000000000 --- a/dashboard-ui/bower_components/cryptojslib/components/core-min.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -CryptoJS v3.1.2 -code.google.com/p/crypto-js -(c) 2009-2013 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -var CryptoJS=CryptoJS||function(h,r){var k={},l=k.lib={},n=function(){},f=l.Base={extend:function(a){n.prototype=this;var b=new n;a&&b.mixIn(a);b.hasOwnProperty("init")||(b.init=function(){b.$super.init.apply(this,arguments)});b.init.prototype=b;b.$super=this;return b},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var b in a)a.hasOwnProperty(b)&&(this[b]=a[b]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.init.prototype.extend(this)}}, -j=l.WordArray=f.extend({init:function(a,b){a=this.words=a||[];this.sigBytes=b!=r?b:4*a.length},toString:function(a){return(a||s).stringify(this)},concat:function(a){var b=this.words,d=a.words,c=this.sigBytes;a=a.sigBytes;this.clamp();if(c%4)for(var e=0;e>>2]|=(d[e>>>2]>>>24-8*(e%4)&255)<<24-8*((c+e)%4);else if(65535>>2]=d[e>>>2];else b.push.apply(b,d);this.sigBytes+=a;return this},clamp:function(){var a=this.words,b=this.sigBytes;a[b>>>2]&=4294967295<< -32-8*(b%4);a.length=h.ceil(b/4)},clone:function(){var a=f.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var b=[],d=0;d>>2]>>>24-8*(c%4)&255;d.push((e>>>4).toString(16));d.push((e&15).toString(16))}return d.join("")},parse:function(a){for(var b=a.length,d=[],c=0;c>>3]|=parseInt(a.substr(c, -2),16)<<24-4*(c%8);return new j.init(d,b/2)}},p=m.Latin1={stringify:function(a){var b=a.words;a=a.sigBytes;for(var d=[],c=0;c>>2]>>>24-8*(c%4)&255));return d.join("")},parse:function(a){for(var b=a.length,d=[],c=0;c>>2]|=(a.charCodeAt(c)&255)<<24-8*(c%4);return new j.init(d,b)}},t=m.Utf8={stringify:function(a){try{return decodeURIComponent(escape(p.stringify(a)))}catch(b){throw Error("Malformed UTF-8 data");}},parse:function(a){return p.parse(unescape(encodeURIComponent(a)))}}, -q=l.BufferedBlockAlgorithm=f.extend({reset:function(){this._data=new j.init;this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=t.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var b=this._data,d=b.words,c=b.sigBytes,e=this.blockSize,f=c/(4*e),f=a?h.ceil(f):h.max((f|0)-this._minBufferSize,0);a=f*e;c=h.min(4*a,c);if(a){for(var g=0;g>>32-h)+f}function k(a,f,g,j,p,h,k){a=a+(f&j|g&~j)+p+k;return(a<>>32-h)+f}function l(a,f,g,j,h,k,l){a=a+(f^g^j)+h+l;return(a<>>32-k)+f}function n(a,f,g,j,h,k,l){a=a+(g^(f|~j))+h+l;return(a<>>32-k)+f}for(var r=CryptoJS,q=r.lib,F=q.WordArray,s=q.Hasher,q=r.algo,a=[],t=0;64>t;t++)a[t]=4294967296*E.abs(E.sin(t+1))|0;q=q.MD5=s.extend({_doReset:function(){this._hash=new F.init([1732584193,4023233417,2562383102,271733878])}, -_doProcessBlock:function(m,f){for(var g=0;16>g;g++){var j=f+g,p=m[j];m[j]=(p<<8|p>>>24)&16711935|(p<<24|p>>>8)&4278255360}var g=this._hash.words,j=m[f+0],p=m[f+1],q=m[f+2],r=m[f+3],s=m[f+4],t=m[f+5],u=m[f+6],v=m[f+7],w=m[f+8],x=m[f+9],y=m[f+10],z=m[f+11],A=m[f+12],B=m[f+13],C=m[f+14],D=m[f+15],b=g[0],c=g[1],d=g[2],e=g[3],b=h(b,c,d,e,j,7,a[0]),e=h(e,b,c,d,p,12,a[1]),d=h(d,e,b,c,q,17,a[2]),c=h(c,d,e,b,r,22,a[3]),b=h(b,c,d,e,s,7,a[4]),e=h(e,b,c,d,t,12,a[5]),d=h(d,e,b,c,u,17,a[6]),c=h(c,d,e,b,v,22,a[7]), -b=h(b,c,d,e,w,7,a[8]),e=h(e,b,c,d,x,12,a[9]),d=h(d,e,b,c,y,17,a[10]),c=h(c,d,e,b,z,22,a[11]),b=h(b,c,d,e,A,7,a[12]),e=h(e,b,c,d,B,12,a[13]),d=h(d,e,b,c,C,17,a[14]),c=h(c,d,e,b,D,22,a[15]),b=k(b,c,d,e,p,5,a[16]),e=k(e,b,c,d,u,9,a[17]),d=k(d,e,b,c,z,14,a[18]),c=k(c,d,e,b,j,20,a[19]),b=k(b,c,d,e,t,5,a[20]),e=k(e,b,c,d,y,9,a[21]),d=k(d,e,b,c,D,14,a[22]),c=k(c,d,e,b,s,20,a[23]),b=k(b,c,d,e,x,5,a[24]),e=k(e,b,c,d,C,9,a[25]),d=k(d,e,b,c,r,14,a[26]),c=k(c,d,e,b,w,20,a[27]),b=k(b,c,d,e,B,5,a[28]),e=k(e,b, -c,d,q,9,a[29]),d=k(d,e,b,c,v,14,a[30]),c=k(c,d,e,b,A,20,a[31]),b=l(b,c,d,e,t,4,a[32]),e=l(e,b,c,d,w,11,a[33]),d=l(d,e,b,c,z,16,a[34]),c=l(c,d,e,b,C,23,a[35]),b=l(b,c,d,e,p,4,a[36]),e=l(e,b,c,d,s,11,a[37]),d=l(d,e,b,c,v,16,a[38]),c=l(c,d,e,b,y,23,a[39]),b=l(b,c,d,e,B,4,a[40]),e=l(e,b,c,d,j,11,a[41]),d=l(d,e,b,c,r,16,a[42]),c=l(c,d,e,b,u,23,a[43]),b=l(b,c,d,e,x,4,a[44]),e=l(e,b,c,d,A,11,a[45]),d=l(d,e,b,c,D,16,a[46]),c=l(c,d,e,b,q,23,a[47]),b=n(b,c,d,e,j,6,a[48]),e=n(e,b,c,d,v,10,a[49]),d=n(d,e,b,c, -C,15,a[50]),c=n(c,d,e,b,t,21,a[51]),b=n(b,c,d,e,A,6,a[52]),e=n(e,b,c,d,r,10,a[53]),d=n(d,e,b,c,y,15,a[54]),c=n(c,d,e,b,p,21,a[55]),b=n(b,c,d,e,w,6,a[56]),e=n(e,b,c,d,D,10,a[57]),d=n(d,e,b,c,u,15,a[58]),c=n(c,d,e,b,B,21,a[59]),b=n(b,c,d,e,s,6,a[60]),e=n(e,b,c,d,z,10,a[61]),d=n(d,e,b,c,q,15,a[62]),c=n(c,d,e,b,x,21,a[63]);g[0]=g[0]+b|0;g[1]=g[1]+c|0;g[2]=g[2]+d|0;g[3]=g[3]+e|0},_doFinalize:function(){var a=this._data,f=a.words,g=8*this._nDataBytes,j=8*a.sigBytes;f[j>>>5]|=128<<24-j%32;var h=E.floor(g/ -4294967296);f[(j+64>>>9<<4)+15]=(h<<8|h>>>24)&16711935|(h<<24|h>>>8)&4278255360;f[(j+64>>>9<<4)+14]=(g<<8|g>>>24)&16711935|(g<<24|g>>>8)&4278255360;a.sigBytes=4*(f.length+1);this._process();a=this._hash;f=a.words;for(g=0;4>g;g++)j=f[g],f[g]=(j<<8|j>>>24)&16711935|(j<<24|j>>>8)&4278255360;return a},clone:function(){var a=s.clone.call(this);a._hash=this._hash.clone();return a}});r.MD5=s._createHelper(q);r.HmacMD5=s._createHmacHelper(q)})(Math); diff --git a/dashboard-ui/bower_components/cryptojslib/components/sha1-min.js b/dashboard-ui/bower_components/cryptojslib/components/sha1-min.js deleted file mode 100644 index 3ae0311e20..0000000000 --- a/dashboard-ui/bower_components/cryptojslib/components/sha1-min.js +++ /dev/null @@ -1,8 +0,0 @@ -/* -CryptoJS v3.1.2 -code.google.com/p/crypto-js -(c) 2009-2013 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -(function(){var k=CryptoJS,b=k.lib,m=b.WordArray,l=b.Hasher,d=[],b=k.algo.SHA1=l.extend({_doReset:function(){this._hash=new m.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(n,p){for(var a=this._hash.words,e=a[0],f=a[1],h=a[2],j=a[3],b=a[4],c=0;80>c;c++){if(16>c)d[c]=n[p+c]|0;else{var g=d[c-3]^d[c-8]^d[c-14]^d[c-16];d[c]=g<<1|g>>>31}g=(e<<5|e>>>27)+b+d[c];g=20>c?g+((f&h|~f&j)+1518500249):40>c?g+((f^h^j)+1859775393):60>c?g+((f&h|f&j|h&j)-1894007588):g+((f^h^ -j)-899497514);b=j;j=h;h=f<<30|f>>>2;f=e;e=g}a[0]=a[0]+e|0;a[1]=a[1]+f|0;a[2]=a[2]+h|0;a[3]=a[3]+j|0;a[4]=a[4]+b|0},_doFinalize:function(){var b=this._data,d=b.words,a=8*this._nDataBytes,e=8*b.sigBytes;d[e>>>5]|=128<<24-e%32;d[(e+64>>>9<<4)+14]=Math.floor(a/4294967296);d[(e+64>>>9<<4)+15]=a;b.sigBytes=4*d.length;this._process();return this._hash},clone:function(){var b=l.clone.call(this);b._hash=this._hash.clone();return b}});k.SHA1=l._createHelper(b);k.HmacSHA1=l._createHmacHelper(b)})(); diff --git a/dashboard-ui/bower_components/document-register-element/testrunner.js b/dashboard-ui/bower_components/document-register-element/testrunner.js deleted file mode 100644 index 8c1e2d6a7e..0000000000 --- a/dashboard-ui/bower_components/document-register-element/testrunner.js +++ /dev/null @@ -1 +0,0 @@ -console.log("Loading: test.html");var page=require("webpage").create(),url="index.html";page.open(url,function(status){"success"===status?setTimeout(function(){var results=page.evaluate(function(){var passed=Math.max(0,document.querySelectorAll(".pass").length-1);return{total:"".concat(passed," blocks (",document.querySelector("#wru strong").textContent.replace(/\D/g,"")," single tests)"),passed:passed,failed:Math.max(0,document.querySelectorAll(".fail").length-1),failures:[].map.call(document.querySelectorAll(".fail"),function(node){return node.textContent}),errored:Math.max(0,document.querySelectorAll(".error").length-1),errors:[].map.call(document.querySelectorAll(".error"),function(node){return node.textContent})}});console.log("- - - - - - - - - -"),console.log("total: "+results.total),console.log("- - - - - - - - - -"),console.log("passed: "+results.passed),results.failed?console.log("failures: \n"+results.failures.join("\n")):console.log("failed: "+results.failed),results.errored?console.log("errors: \n"+results.errors.join("\n")):console.log("errored: "+results.errored),console.log("- - - - - - - - - -"),0=tests.length)return normalizeReturnBitrate(instance,currentBitrate);var test=tests[index];return instance.getDownloadSpeed(test.bytes).then(function(bitrate){return bitratebVal)return 1}return 0}return ApiClient.prototype.appName=function(){return this._appName},ApiClient.prototype.setRequestHeaders=function(headers){var currentServerInfo=this.serverInfo(),appName=this._appName,accessToken=currentServerInfo.AccessToken,values=[];if(appName&&values.push('Client="'+appName+'"'),this._deviceName&&values.push('Device="'+this._deviceName+'"'),this._deviceId&&values.push('DeviceId="'+this._deviceId+'"'),this._appVersion&&values.push('Version="'+this._appVersion+'"'),accessToken&&values.push('Token="'+accessToken+'"'),values.length){var auth="MediaBrowser "+values.join(", ");headers["X-Emby-Authorization"]=auth}},ApiClient.prototype.appVersion=function(){return this._appVersion},ApiClient.prototype.deviceName=function(){return this._deviceName},ApiClient.prototype.deviceId=function(){return this._deviceId},ApiClient.prototype.serverAddress=function(val){if(null!=val){if(0!==val.toLowerCase().indexOf("http"))throw new Error("Invalid url: "+val);var changed=val!==this._serverAddress;this._serverAddress=val,this.onNetworkChange(),changed&&events.trigger(this,"serveraddresschanged")}return this._serverAddress},ApiClient.prototype.onNetworkChange=function(){this.lastDetectedBitrate=0,this.lastDetectedBitrateTime=0,setSavedEndpointInfo(this,null),redetectBitrate(this)},ApiClient.prototype.getUrl=function(name,params){if(!name)throw new Error("Url name cannot be empty");var url=this._serverAddress;if(!url)throw new Error("serverAddress is yet not set");var lowered=url.toLowerCase();return lowered.indexOf("/emby")===-1&&lowered.indexOf("/mediabrowser")===-1&&(url+="/emby"),"/"!==name.charAt(0)&&(url+="/"),url+=name,params&&(params=paramsToString(params),params&&(url+="?"+params)),url},ApiClient.prototype.fetchWithFailover=function(request,enableReconnection){console.log("Requesting "+request.url),request.timeout=3e4;var instance=this;return getFetchPromise(request).then(function(response){return instance.lastFetch=(new Date).getTime(),response.status<400?"json"===request.dataType||"application/json"===request.headers.accept?response.json():"text"===request.dataType||0===(response.headers.get("Content-Type")||"").toLowerCase().indexOf("text/")?response.text():response:(onFetchFail(instance,request.url,response),Promise.reject(response))},function(error){if(error?console.log("Request failed to "+request.url+" "+error.toString()):console.log("Request timed out to "+request.url),!error&&enableReconnection){console.log("Attempting reconnection");var previousServerAddress=instance.serverAddress();return tryReconnect(instance).then(function(){return console.log("Reconnect succeesed"),request.url=request.url.replace(previousServerAddress,instance.serverAddress()),instance.fetchWithFailover(request,!1)},function(innerError){throw console.log("Reconnect failed"),onFetchFail(instance,request.url,{}),innerError})}throw console.log("Reporting request failure"),onFetchFail(instance,request.url,{}),error})},ApiClient.prototype.fetch=function(request,includeAuthorization){if(!request)throw new Error("Request cannot be null");if(request.headers=request.headers||{},includeAuthorization!==!1&&this.setRequestHeaders(request.headers),this.enableAutomaticNetworking===!1||"GET"!==request.type){console.log("Requesting url without automatic networking: "+request.url);var instance=this;return getFetchPromise(request).then(function(response){return instance.lastFetch=(new Date).getTime(),response.status<400?"json"===request.dataType||"application/json"===request.headers.accept?response.json():"text"===request.dataType||0===(response.headers.get("Content-Type")||"").toLowerCase().indexOf("text/")?response.text():response:(onFetchFail(instance,request.url,response),Promise.reject(response))},function(error){throw onFetchFail(instance,request.url,{}),error})}return this.fetchWithFailover(request,!0)},ApiClient.prototype.setAuthenticationInfo=function(accessKey,userId){this._currentUser=null,this._serverInfo.AccessToken=accessKey,this._serverInfo.UserId=userId,redetectBitrate(this)},ApiClient.prototype.serverInfo=function(info){return info&&(this._serverInfo=info),this._serverInfo},ApiClient.prototype.getCurrentUserId=function(){return this._serverInfo.UserId},ApiClient.prototype.accessToken=function(){return this._serverInfo.AccessToken},ApiClient.prototype.serverId=function(){return this.serverInfo().Id},ApiClient.prototype.serverName=function(){return this.serverInfo().Name},ApiClient.prototype.ajax=function(request,includeAuthorization){if(!request)throw new Error("Request cannot be null");return this.fetch(request,includeAuthorization)},ApiClient.prototype.getCurrentUser=function(enableCache){if(this._currentUser)return Promise.resolve(this._currentUser);var userId=this.getCurrentUserId();if(!userId)return Promise.reject();var user,instance=this,serverPromise=this.getUser(userId).then(function(user){return appStorage.setItem("user-"+user.Id+"-"+user.ServerId,JSON.stringify(user)),instance._currentUser=user,user},function(response){if(!response.status&&userId&&instance.accessToken()&&(user=getCachedUser(instance,userId)))return Promise.resolve(user);throw response});return!this.lastFetch&&enableCache!==!1&&(user=getCachedUser(instance,userId))?Promise.resolve(user):serverPromise},ApiClient.prototype.isLoggedIn=function(){var info=this.serverInfo();return!!(info&&info.UserId&&info.AccessToken)},ApiClient.prototype.logout=function(){stopBitrateDetection(this),this.closeWebSocket();var done=function(){this.setAuthenticationInfo(null,null)}.bind(this);if(this.accessToken()){var url=this.getUrl("Sessions/Logout");return this.ajax({type:"POST",url:url}).then(done,done)}return done(),Promise.resolve()},ApiClient.prototype.authenticateUserByName=function(name,password){if(!name)return Promise.reject();var url=this.getUrl("Users/authenticatebyname"),instance=this;return new Promise(function(resolve,reject){require(["cryptojs-sha1","cryptojs-md5"],function(){var postData={Password:CryptoJS.SHA1(password||"").toString(),PasswordMd5:CryptoJS.MD5(password||"").toString(),Username:name,Pw:password};instance.ajax({type:"POST",url:url,data:JSON.stringify(postData),dataType:"json",contentType:"application/json"}).then(function(result){var afterOnAuthenticated=function(){redetectBitrate(instance),resolve(result)};instance.onAuthenticated?instance.onAuthenticated(instance,result).then(afterOnAuthenticated):afterOnAuthenticated()},reject)})})},ApiClient.prototype.ensureWebSocket=function(){if(!this.isWebSocketOpenOrConnecting()&&this.isWebSocketSupported())try{this.openWebSocket()}catch(err){console.log("Error opening web socket: "+err)}},ApiClient.prototype.openWebSocket=function(){var accessToken=this.accessToken();if(!accessToken)throw new Error("Cannot open web socket without access token.");var url=this.getUrl("socket");url=replaceAll(url,"emby/socket","embywebsocket"),url=replaceAll(url,"https:","wss:"),url=replaceAll(url,"http:","ws:"),url+="?api_key="+accessToken,url+="&deviceId="+this.deviceId(),console.log("opening web socket with url: "+url);var webSocket=new WebSocket(url);webSocket.onmessage=onWebSocketMessage.bind(this),webSocket.onopen=onWebSocketOpen.bind(this),webSocket.onerror=onWebSocketError.bind(this),setSocketOnClose(this,webSocket),this._webSocket=webSocket},ApiClient.prototype.closeWebSocket=function(){var socket=this._webSocket;socket&&socket.readyState===WebSocket.OPEN&&socket.close()},ApiClient.prototype.sendWebSocketMessage=function(name,data){console.log("Sending web socket message: "+name);var msg={MessageType:name};data&&(msg.Data=data),msg=JSON.stringify(msg),this._webSocket.send(msg)},ApiClient.prototype.isWebSocketOpen=function(){var socket=this._webSocket;return!!socket&&socket.readyState===WebSocket.OPEN},ApiClient.prototype.isWebSocketOpenOrConnecting=function(){var socket=this._webSocket;return!!socket&&(socket.readyState===WebSocket.OPEN||socket.readyState===WebSocket.CONNECTING)},ApiClient.prototype.get=function(url){return this.ajax({type:"GET",url:url})},ApiClient.prototype.getJSON=function(url,includeAuthorization){return this.fetch({url:url,type:"GET",dataType:"json",headers:{accept:"application/json"}},includeAuthorization)},ApiClient.prototype.updateServerInfo=function(server,connectionMode){if(null==server)throw new Error("server cannot be null");if(null==connectionMode)throw new Error("connectionMode cannot be null");console.log("Begin updateServerInfo. connectionMode: "+connectionMode),this.serverInfo(server);var serverUrl=MediaBrowser.ServerInfo.getServerAddress(server,connectionMode);if(!serverUrl)throw new Error("serverUrl cannot be null. serverInfo: "+JSON.stringify(server));console.log("Setting server address to "+serverUrl),this.serverAddress(serverUrl)},ApiClient.prototype.isWebSocketSupported=function(){try{return null!=WebSocket}catch(err){return!1}},ApiClient.prototype.clearAuthenticationInfo=function(){this.setAuthenticationInfo(null,null)},ApiClient.prototype.encodeName=function(name){name=name.split("/").join("-"),name=name.split("&").join("-"),name=name.split("?").join("-");var val=paramsToString({name:name});return val.substring(val.indexOf("=")+1).replace("'","%27")},ApiClient.prototype.getProductNews=function(options){options=options||{};var url=this.getUrl("News/Product",options);return this.getJSON(url)},ApiClient.prototype.getDownloadSpeed=function(byteSize){var url=this.getUrl("Playback/BitrateTest",{Size:byteSize}),now=(new Date).getTime();return this.ajax({type:"GET",url:url,timeout:5e3}).then(function(){var responseTimeSeconds=((new Date).getTime()-now)/1e3,bytesPerSecond=byteSize/responseTimeSeconds,bitrate=Math.round(8*bytesPerSecond);return bitrate})},ApiClient.prototype.detectBitrate=function(force){if(!force&&this.lastDetectedBitrate&&(new Date).getTime()-(this.lastDetectedBitrateTime||0)<=36e5)return Promise.resolve(this.lastDetectedBitrate);var instance=this;return this.getEndpointInfo().then(function(info){return detectBitrateWithEndpointInfo(instance,info)},function(info){return detectBitrateWithEndpointInfo(instance,{})})},ApiClient.prototype.getItem=function(userId,itemId){if(!itemId)throw new Error("null itemId");var url=userId?this.getUrl("Users/"+userId+"/Items/"+itemId):this.getUrl("Items/"+itemId);return this.getJSON(url)},ApiClient.prototype.getRootFolder=function(userId){if(!userId)throw new Error("null userId");var url=this.getUrl("Users/"+userId+"/Items/Root");return this.getJSON(url)},ApiClient.prototype.getNotificationSummary=function(userId){if(!userId)throw new Error("null userId");var url=this.getUrl("Notifications/"+userId+"/Summary");return this.getJSON(url)},ApiClient.prototype.getNotifications=function(userId,options){if(!userId)throw new Error("null userId");var url=this.getUrl("Notifications/"+userId,options||{});return this.getJSON(url)},ApiClient.prototype.markNotificationsRead=function(userId,idList,isRead){if(!userId)throw new Error("null userId");if(!idList)throw new Error("null idList");var suffix=isRead?"Read":"Unread",params={UserId:userId,Ids:idList.join(",")},url=this.getUrl("Notifications/"+userId+"/"+suffix,params);return this.ajax({type:"POST",url:url})},ApiClient.prototype.getRemoteImageProviders=function(options){if(!options)throw new Error("null options");var urlPrefix=getRemoteImagePrefix(this,options),url=this.getUrl(urlPrefix+"/RemoteImages/Providers",options);return this.getJSON(url)},ApiClient.prototype.getAvailableRemoteImages=function(options){if(!options)throw new Error("null options");var urlPrefix=getRemoteImagePrefix(this,options),url=this.getUrl(urlPrefix+"/RemoteImages",options);return this.getJSON(url)},ApiClient.prototype.downloadRemoteImage=function(options){if(!options)throw new Error("null options");var urlPrefix=getRemoteImagePrefix(this,options),url=this.getUrl(urlPrefix+"/RemoteImages/Download",options);return this.ajax({type:"POST",url:url})},ApiClient.prototype.getLiveTvInfo=function(options){var url=this.getUrl("LiveTv/Info",options||{});return this.getJSON(url)},ApiClient.prototype.getLiveTvGuideInfo=function(options){var url=this.getUrl("LiveTv/GuideInfo",options||{});return this.getJSON(url)},ApiClient.prototype.getLiveTvChannel=function(id,userId){if(!id)throw new Error("null id");var options={};userId&&(options.userId=userId);var url=this.getUrl("LiveTv/Channels/"+id,options);return this.getJSON(url)},ApiClient.prototype.getLiveTvChannels=function(options){var url=this.getUrl("LiveTv/Channels",options||{});return this.getJSON(url)},ApiClient.prototype.getLiveTvPrograms=function(options){return options=options||{},options.channelIds&&options.channelIds.length>1800?this.ajax({type:"POST",url:this.getUrl("LiveTv/Programs"),data:JSON.stringify(options),contentType:"application/json",dataType:"json"}):this.ajax({type:"GET",url:this.getUrl("LiveTv/Programs",options),dataType:"json"})},ApiClient.prototype.getLiveTvRecommendedPrograms=function(options){return options=options||{},this.ajax({type:"GET",url:this.getUrl("LiveTv/Programs/Recommended",options),dataType:"json"})},ApiClient.prototype.getLiveTvRecordings=function(options){var url=this.getUrl("LiveTv/Recordings",options||{});return this.getJSON(url)},ApiClient.prototype.getLiveTvRecordingSeries=function(options){var url=this.getUrl("LiveTv/Recordings/Series",options||{});return this.getJSON(url)},ApiClient.prototype.getLiveTvRecordingGroups=function(options){var url=this.getUrl("LiveTv/Recordings/Groups",options||{});return this.getJSON(url)},ApiClient.prototype.getLiveTvRecordingGroup=function(id){if(!id)throw new Error("null id");var url=this.getUrl("LiveTv/Recordings/Groups/"+id);return this.getJSON(url)},ApiClient.prototype.getLiveTvRecording=function(id,userId){if(!id)throw new Error("null id");var options={};userId&&(options.userId=userId);var url=this.getUrl("LiveTv/Recordings/"+id,options);return this.getJSON(url)},ApiClient.prototype.getLiveTvProgram=function(id,userId){if(!id)throw new Error("null id");var options={};userId&&(options.userId=userId);var url=this.getUrl("LiveTv/Programs/"+id,options);return this.getJSON(url)},ApiClient.prototype.deleteLiveTvRecording=function(id){if(!id)throw new Error("null id");var url=this.getUrl("LiveTv/Recordings/"+id);return this.ajax({type:"DELETE",url:url})},ApiClient.prototype.cancelLiveTvTimer=function(id){if(!id)throw new Error("null id");var url=this.getUrl("LiveTv/Timers/"+id);return this.ajax({type:"DELETE",url:url})},ApiClient.prototype.getLiveTvTimers=function(options){var url=this.getUrl("LiveTv/Timers",options||{});return this.getJSON(url)},ApiClient.prototype.getLiveTvTimer=function(id){if(!id)throw new Error("null id");var url=this.getUrl("LiveTv/Timers/"+id);return this.getJSON(url)},ApiClient.prototype.getNewLiveTvTimerDefaults=function(options){options=options||{};var url=this.getUrl("LiveTv/Timers/Defaults",options);return this.getJSON(url)},ApiClient.prototype.createLiveTvTimer=function(item){if(!item)throw new Error("null item");var url=this.getUrl("LiveTv/Timers");return this.ajax({type:"POST",url:url,data:JSON.stringify(item),contentType:"application/json"})},ApiClient.prototype.updateLiveTvTimer=function(item){if(!item)throw new Error("null item");var url=this.getUrl("LiveTv/Timers/"+item.Id);return this.ajax({type:"POST",url:url,data:JSON.stringify(item),contentType:"application/json"})},ApiClient.prototype.resetLiveTvTuner=function(id){if(!id)throw new Error("null id");var url=this.getUrl("LiveTv/Tuners/"+id+"/Reset");return this.ajax({type:"POST",url:url})},ApiClient.prototype.getLiveTvSeriesTimers=function(options){var url=this.getUrl("LiveTv/SeriesTimers",options||{});return this.getJSON(url)},ApiClient.prototype.getFileOrganizationResults=function(options){var url=this.getUrl("Library/FileOrganization",options||{});return this.getJSON(url)},ApiClient.prototype.deleteOriginalFileFromOrganizationResult=function(id){var url=this.getUrl("Library/FileOrganizations/"+id+"/File");return this.ajax({type:"DELETE",url:url})},ApiClient.prototype.clearOrganizationLog=function(){var url=this.getUrl("Library/FileOrganizations");return this.ajax({type:"DELETE",url:url})},ApiClient.prototype.performOrganization=function(id){var url=this.getUrl("Library/FileOrganizations/"+id+"/Organize");return this.ajax({type:"POST",url:url})},ApiClient.prototype.performEpisodeOrganization=function(id,options){var url=this.getUrl("Library/FileOrganizations/"+id+"/Episode/Organize");return this.ajax({type:"POST",url:url,data:JSON.stringify(options),contentType:"application/json"})},ApiClient.prototype.getLiveTvSeriesTimer=function(id){if(!id)throw new Error("null id");var url=this.getUrl("LiveTv/SeriesTimers/"+id);return this.getJSON(url)},ApiClient.prototype.cancelLiveTvSeriesTimer=function(id){if(!id)throw new Error("null id");var url=this.getUrl("LiveTv/SeriesTimers/"+id);return this.ajax({type:"DELETE",url:url})},ApiClient.prototype.createLiveTvSeriesTimer=function(item){if(!item)throw new Error("null item");var url=this.getUrl("LiveTv/SeriesTimers");return this.ajax({type:"POST",url:url,data:JSON.stringify(item),contentType:"application/json"})},ApiClient.prototype.updateLiveTvSeriesTimer=function(item){if(!item)throw new Error("null item");var url=this.getUrl("LiveTv/SeriesTimers/"+item.Id);return this.ajax({type:"POST",url:url,data:JSON.stringify(item),contentType:"application/json"})},ApiClient.prototype.getRegistrationInfo=function(feature){var url=this.getUrl("Registrations/"+feature);return this.getJSON(url)},ApiClient.prototype.getSystemInfo=function(){var url=this.getUrl("System/Info"),instance=this;return this.getJSON(url).then(function(info){return instance.setSystemInfo(info),Promise.resolve(info)})},ApiClient.prototype.getPublicSystemInfo=function(){var url=this.getUrl("System/Info/Public"),instance=this;return this.getJSON(url).then(function(info){return instance.setSystemInfo(info),Promise.resolve(info)})},ApiClient.prototype.getInstantMixFromItem=function(itemId,options){var url=this.getUrl("Items/"+itemId+"/InstantMix",options);return this.getJSON(url)},ApiClient.prototype.getEpisodes=function(itemId,options){var url=this.getUrl("Shows/"+itemId+"/Episodes",options);return this.getJSON(url)},ApiClient.prototype.getDisplayPreferences=function(id,userId,app){var url=this.getUrl("DisplayPreferences/"+id,{userId:userId,client:app});return this.getJSON(url)},ApiClient.prototype.updateDisplayPreferences=function(id,obj,userId,app){var url=this.getUrl("DisplayPreferences/"+id,{userId:userId,client:app});return this.ajax({type:"POST",url:url,data:JSON.stringify(obj),contentType:"application/json"})},ApiClient.prototype.getSeasons=function(itemId,options){var url=this.getUrl("Shows/"+itemId+"/Seasons",options);return this.getJSON(url)},ApiClient.prototype.getSimilarItems=function(itemId,options){var url=this.getUrl("Items/"+itemId+"/Similar",options);return this.getJSON(url)},ApiClient.prototype.getCultures=function(){var url=this.getUrl("Localization/cultures");return this.getJSON(url)},ApiClient.prototype.getCountries=function(){var url=this.getUrl("Localization/countries");return this.getJSON(url)},ApiClient.prototype.getPluginSecurityInfo=function(){var url=this.getUrl("Plugins/SecurityInfo");return this.getJSON(url)},ApiClient.prototype.getPlaybackInfo=function(itemId,options,deviceProfile){var postData={DeviceProfile:deviceProfile};return this.ajax({url:this.getUrl("Items/"+itemId+"/PlaybackInfo",options),type:"POST",data:JSON.stringify(postData),contentType:"application/json",dataType:"json"})},ApiClient.prototype.getIntros=function(itemId){return this.getJSON(this.getUrl("Users/"+this.getCurrentUserId()+"/Items/"+itemId+"/Intros"))},ApiClient.prototype.getDirectoryContents=function(path,options){if(!path)throw new Error("null path");if("string"!=typeof path)throw new Error("invalid path");options=options||{},options.path=path;var url=this.getUrl("Environment/DirectoryContents",options);return this.getJSON(url)},ApiClient.prototype.getNetworkShares=function(path){if(!path)throw new Error("null path");var options={};options.path=path;var url=this.getUrl("Environment/NetworkShares",options);return this.getJSON(url)},ApiClient.prototype.getParentPath=function(path){if(!path)throw new Error("null path");var options={};options.path=path;var url=this.getUrl("Environment/ParentPath",options);return this.ajax({type:"GET",url:url,dataType:"text"})},ApiClient.prototype.getDrives=function(){var url=this.getUrl("Environment/Drives");return this.getJSON(url)},ApiClient.prototype.getNetworkDevices=function(){var url=this.getUrl("Environment/NetworkDevices");return this.getJSON(url)},ApiClient.prototype.cancelPackageInstallation=function(installationId){if(!installationId)throw new Error("null installationId");var url=this.getUrl("Packages/Installing/"+installationId);return this.ajax({type:"DELETE",url:url})},ApiClient.prototype.refreshItem=function(itemId,options){if(!itemId)throw new Error("null itemId");var url=this.getUrl("Items/"+itemId+"/Refresh",options||{});return this.ajax({type:"POST",url:url})},ApiClient.prototype.installPlugin=function(name,guid,updateClass,version){if(!name)throw new Error("null name");if(!updateClass)throw new Error("null updateClass");var options={updateClass:updateClass,AssemblyGuid:guid};version&&(options.version=version);var url=this.getUrl("Packages/Installed/"+name,options);return this.ajax({type:"POST",url:url})},ApiClient.prototype.restartServer=function(){var url=this.getUrl("System/Restart");return this.ajax({type:"POST",url:url})},ApiClient.prototype.shutdownServer=function(){var url=this.getUrl("System/Shutdown");return this.ajax({type:"POST",url:url})},ApiClient.prototype.getPackageInfo=function(name,guid){if(!name)throw new Error("null name");var options={AssemblyGuid:guid},url=this.getUrl("Packages/"+name,options);return this.getJSON(url)},ApiClient.prototype.getAvailableApplicationUpdate=function(){var url=this.getUrl("Packages/Updates",{PackageType:"System"});return this.getJSON(url)},ApiClient.prototype.getAvailablePluginUpdates=function(){var url=this.getUrl("Packages/Updates",{PackageType:"UserInstalled"});return this.getJSON(url)},ApiClient.prototype.getVirtualFolders=function(){var url="Library/VirtualFolders";return url=this.getUrl(url),this.getJSON(url)},ApiClient.prototype.getPhysicalPaths=function(){var url=this.getUrl("Library/PhysicalPaths");return this.getJSON(url)},ApiClient.prototype.getServerConfiguration=function(){var url=this.getUrl("System/Configuration");return this.getJSON(url)},ApiClient.prototype.getDevicesOptions=function(){var url=this.getUrl("System/Configuration/devices");return this.getJSON(url)},ApiClient.prototype.getContentUploadHistory=function(){var url=this.getUrl("Devices/CameraUploads",{DeviceId:this.deviceId()});return this.getJSON(url)},ApiClient.prototype.getNamedConfiguration=function(name){var url=this.getUrl("System/Configuration/"+name);return this.getJSON(url)},ApiClient.prototype.getScheduledTasks=function(options){options=options||{};var url=this.getUrl("ScheduledTasks",options);return this.getJSON(url)},ApiClient.prototype.startScheduledTask=function(id){if(!id)throw new Error("null id");var url=this.getUrl("ScheduledTasks/Running/"+id);return this.ajax({type:"POST",url:url})},ApiClient.prototype.getScheduledTask=function(id){if(!id)throw new Error("null id");var url=this.getUrl("ScheduledTasks/"+id);return this.getJSON(url)},ApiClient.prototype.getNextUpEpisodes=function(options){var url=this.getUrl("Shows/NextUp",options);return this.getJSON(url)},ApiClient.prototype.stopScheduledTask=function(id){if(!id)throw new Error("null id");var url=this.getUrl("ScheduledTasks/Running/"+id);return this.ajax({type:"DELETE",url:url})},ApiClient.prototype.getPluginConfiguration=function(id){if(!id)throw new Error("null Id");var url=this.getUrl("Plugins/"+id+"/Configuration");return this.getJSON(url)},ApiClient.prototype.getAvailablePlugins=function(options){options=options||{},options.PackageType="UserInstalled";var url=this.getUrl("Packages",options);return this.getJSON(url)},ApiClient.prototype.uninstallPlugin=function(id){ -if(!id)throw new Error("null Id");var url=this.getUrl("Plugins/"+id);return this.ajax({type:"DELETE",url:url})},ApiClient.prototype.removeVirtualFolder=function(name,refreshLibrary){if(!name)throw new Error("null name");var url="Library/VirtualFolders";return url=this.getUrl(url,{refreshLibrary:!!refreshLibrary,name:name}),this.ajax({type:"DELETE",url:url})},ApiClient.prototype.addVirtualFolder=function(name,type,refreshLibrary,libraryOptions){if(!name)throw new Error("null name");var options={};type&&(options.collectionType=type),options.refreshLibrary=!!refreshLibrary,options.name=name;var url="Library/VirtualFolders";return url=this.getUrl(url,options),this.ajax({type:"POST",url:url,data:JSON.stringify({LibraryOptions:libraryOptions}),contentType:"application/json"})},ApiClient.prototype.updateVirtualFolderOptions=function(id,libraryOptions){if(!id)throw new Error("null name");var url="Library/VirtualFolders/LibraryOptions";return url=this.getUrl(url),this.ajax({type:"POST",url:url,data:JSON.stringify({Id:id,LibraryOptions:libraryOptions}),contentType:"application/json"})},ApiClient.prototype.renameVirtualFolder=function(name,newName,refreshLibrary){if(!name)throw new Error("null name");var url="Library/VirtualFolders/Name";return url=this.getUrl(url,{refreshLibrary:!!refreshLibrary,newName:newName,name:name}),this.ajax({type:"POST",url:url})},ApiClient.prototype.addMediaPath=function(virtualFolderName,mediaPath,networkSharePath,refreshLibrary){if(!virtualFolderName)throw new Error("null virtualFolderName");if(!mediaPath)throw new Error("null mediaPath");var url="Library/VirtualFolders/Paths",pathInfo={Path:mediaPath};return networkSharePath&&(pathInfo.NetworkPath=networkSharePath),url=this.getUrl(url,{refreshLibrary:!!refreshLibrary}),this.ajax({type:"POST",url:url,data:JSON.stringify({Name:virtualFolderName,PathInfo:pathInfo}),contentType:"application/json"})},ApiClient.prototype.updateMediaPath=function(virtualFolderName,pathInfo){if(!virtualFolderName)throw new Error("null virtualFolderName");if(!pathInfo)throw new Error("null pathInfo");var url="Library/VirtualFolders/Paths/Update";return url=this.getUrl(url),this.ajax({type:"POST",url:url,data:JSON.stringify({Name:virtualFolderName,PathInfo:pathInfo}),contentType:"application/json"})},ApiClient.prototype.removeMediaPath=function(virtualFolderName,mediaPath,refreshLibrary){if(!virtualFolderName)throw new Error("null virtualFolderName");if(!mediaPath)throw new Error("null mediaPath");var url="Library/VirtualFolders/Paths";return url=this.getUrl(url,{refreshLibrary:!!refreshLibrary,path:mediaPath,name:virtualFolderName}),this.ajax({type:"DELETE",url:url})},ApiClient.prototype.deleteUser=function(id){if(!id)throw new Error("null id");var url=this.getUrl("Users/"+id);return this.ajax({type:"DELETE",url:url})},ApiClient.prototype.deleteUserImage=function(userId,imageType,imageIndex){if(!userId)throw new Error("null userId");if(!imageType)throw new Error("null imageType");var url=this.getUrl("Users/"+userId+"/Images/"+imageType);return null!=imageIndex&&(url+="/"+imageIndex),this.ajax({type:"DELETE",url:url})},ApiClient.prototype.deleteItemImage=function(itemId,imageType,imageIndex){if(!imageType)throw new Error("null imageType");var url=this.getUrl("Items/"+itemId+"/Images");return url+="/"+imageType,null!=imageIndex&&(url+="/"+imageIndex),this.ajax({type:"DELETE",url:url})},ApiClient.prototype.deleteItem=function(itemId){if(!itemId)throw new Error("null itemId");var url=this.getUrl("Items/"+itemId);return this.ajax({type:"DELETE",url:url})},ApiClient.prototype.stopActiveEncodings=function(playSessionId){var options={deviceId:this.deviceId()};playSessionId&&(options.PlaySessionId=playSessionId);var url=this.getUrl("Videos/ActiveEncodings",options);return this.ajax({type:"DELETE",url:url})},ApiClient.prototype.reportCapabilities=function(options){var url=this.getUrl("Sessions/Capabilities/Full");return this.ajax({type:"POST",url:url,data:JSON.stringify(options),contentType:"application/json"})},ApiClient.prototype.updateItemImageIndex=function(itemId,imageType,imageIndex,newIndex){if(!imageType)throw new Error("null imageType");var options={newIndex:newIndex},url=this.getUrl("Items/"+itemId+"/Images/"+imageType+"/"+imageIndex+"/Index",options);return this.ajax({type:"POST",url:url})},ApiClient.prototype.getItemImageInfos=function(itemId){var url=this.getUrl("Items/"+itemId+"/Images");return this.getJSON(url)},ApiClient.prototype.getCriticReviews=function(itemId,options){if(!itemId)throw new Error("null itemId");var url=this.getUrl("Items/"+itemId+"/CriticReviews",options);return this.getJSON(url)},ApiClient.prototype.getItemDownloadUrl=function(itemId){if(!itemId)throw new Error("itemId cannot be empty");var url="Items/"+itemId+"/Download";return this.getUrl(url,{api_key:this.accessToken()})},ApiClient.prototype.getSessions=function(options){var url=this.getUrl("Sessions",options);return this.getJSON(url)},ApiClient.prototype.uploadUserImage=function(userId,imageType,file){if(!userId)throw new Error("null userId");if(!imageType)throw new Error("null imageType");if(!file)throw new Error("File must be an image.");if("image/png"!==file.type&&"image/jpeg"!==file.type&&"image/jpeg"!==file.type)throw new Error("File must be an image.");var instance=this;return new Promise(function(resolve,reject){var reader=new FileReader;reader.onerror=function(){reject()},reader.onabort=function(){reject()},reader.onload=function(e){var data=e.target.result.split(",")[1],url=instance.getUrl("Users/"+userId+"/Images/"+imageType);instance.ajax({type:"POST",url:url,data:data,contentType:"image/"+file.name.substring(file.name.lastIndexOf(".")+1)}).then(resolve,reject)},reader.readAsDataURL(file)})},ApiClient.prototype.uploadItemImage=function(itemId,imageType,file){if(!itemId)throw new Error("null itemId");if(!imageType)throw new Error("null imageType");if(!file)throw new Error("File must be an image.");if("image/png"!==file.type&&"image/jpeg"!==file.type&&"image/jpeg"!==file.type)throw new Error("File must be an image.");var url=this.getUrl("Items/"+itemId+"/Images");url+="/"+imageType;var instance=this;return new Promise(function(resolve,reject){var reader=new FileReader;reader.onerror=function(){reject()},reader.onabort=function(){reject()},reader.onload=function(e){var data=e.target.result.split(",")[1];instance.ajax({type:"POST",url:url,data:data,contentType:"image/"+file.name.substring(file.name.lastIndexOf(".")+1)}).then(resolve,reject)},reader.readAsDataURL(file)})},ApiClient.prototype.getInstalledPlugins=function(){var options={},url=this.getUrl("Plugins",options);return this.getJSON(url)},ApiClient.prototype.getUser=function(id){if(!id)throw new Error("Must supply a userId");var url=this.getUrl("Users/"+id);return this.getJSON(url)},ApiClient.prototype.getStudio=function(name,userId){if(!name)throw new Error("null name");var options={};userId&&(options.userId=userId);var url=this.getUrl("Studios/"+this.encodeName(name),options);return this.getJSON(url)},ApiClient.prototype.getGenre=function(name,userId){if(!name)throw new Error("null name");var options={};userId&&(options.userId=userId);var url=this.getUrl("Genres/"+this.encodeName(name),options);return this.getJSON(url)},ApiClient.prototype.getMusicGenre=function(name,userId){if(!name)throw new Error("null name");var options={};userId&&(options.userId=userId);var url=this.getUrl("MusicGenres/"+this.encodeName(name),options);return this.getJSON(url)},ApiClient.prototype.getGameGenre=function(name,userId){if(!name)throw new Error("null name");var options={};userId&&(options.userId=userId);var url=this.getUrl("GameGenres/"+this.encodeName(name),options);return this.getJSON(url)},ApiClient.prototype.getArtist=function(name,userId){if(!name)throw new Error("null name");var options={};userId&&(options.userId=userId);var url=this.getUrl("Artists/"+this.encodeName(name),options);return this.getJSON(url)},ApiClient.prototype.getPerson=function(name,userId){if(!name)throw new Error("null name");var options={};userId&&(options.userId=userId);var url=this.getUrl("Persons/"+this.encodeName(name),options);return this.getJSON(url)},ApiClient.prototype.getPublicUsers=function(){var url=this.getUrl("users/public");return this.ajax({type:"GET",url:url,dataType:"json"},!1)},ApiClient.prototype.getUsers=function(options){var url=this.getUrl("users",options||{});return this.getJSON(url)},ApiClient.prototype.getParentalRatings=function(){var url=this.getUrl("Localization/ParentalRatings");return this.getJSON(url)},ApiClient.prototype.getDefaultImageQuality=function(imageType){return"backdrop"===imageType.toLowerCase()?80:90},ApiClient.prototype.getUserImageUrl=function(userId,options){if(!userId)throw new Error("null userId");options=options||{};var url="Users/"+userId+"/Images/"+options.type;return null!=options.index&&(url+="/"+options.index),normalizeImageOptions(this,options),delete options.type,delete options.index,this.getUrl(url,options)},ApiClient.prototype.getImageUrl=function(itemId,options){if(!itemId)throw new Error("itemId cannot be empty");options=options||{};var url="Items/"+itemId+"/Images/"+options.type;return null!=options.index&&(url+="/"+options.index),options.quality=options.quality||this.getDefaultImageQuality(options.type),this.normalizeImageOptions&&this.normalizeImageOptions(options),delete options.type,delete options.index,this.getUrl(url,options)},ApiClient.prototype.getScaledImageUrl=function(itemId,options){if(!itemId)throw new Error("itemId cannot be empty");options=options||{};var url="Items/"+itemId+"/Images/"+options.type;return null!=options.index&&(url+="/"+options.index),normalizeImageOptions(this,options),delete options.type,delete options.index,delete options.minScale,this.getUrl(url,options)},ApiClient.prototype.getThumbImageUrl=function(item,options){if(!item)throw new Error("null item");return options=options||{},options.imageType="thumb",item.ImageTags&&item.ImageTags.Thumb?(options.tag=item.ImageTags.Thumb,this.getImageUrl(item.Id,options)):item.ParentThumbItemId?(options.tag=item.ImageTags.ParentThumbImageTag,this.getImageUrl(item.ParentThumbItemId,options)):null},ApiClient.prototype.updateUserPassword=function(userId,currentPassword,newPassword){if(!userId)return Promise.reject();var url=this.getUrl("Users/"+userId+"/Password"),instance=this;return new Promise(function(resolve,reject){require(["cryptojs-sha1"],function(){instance.ajax({type:"POST",url:url,data:{CurrentPassword:CryptoJS.SHA1(currentPassword).toString(),NewPassword:CryptoJS.SHA1(newPassword).toString(),CurrentPw:currentPassword,NewPw:newPassword}}).then(resolve,reject)})})},ApiClient.prototype.updateEasyPassword=function(userId,newPassword){var instance=this;return new Promise(function(resolve,reject){if(!userId)return void reject();var url=instance.getUrl("Users/"+userId+"/EasyPassword");require(["cryptojs-sha1"],function(){instance.ajax({type:"POST",url:url,data:{newPassword:CryptoJS.SHA1(newPassword).toString(),NewPw:newPassword}}).then(resolve,reject)})})},ApiClient.prototype.resetUserPassword=function(userId){if(!userId)throw new Error("null userId");var url=this.getUrl("Users/"+userId+"/Password"),postData={};return postData.resetPassword=!0,this.ajax({type:"POST",url:url,data:postData})},ApiClient.prototype.resetEasyPassword=function(userId){if(!userId)throw new Error("null userId");var url=this.getUrl("Users/"+userId+"/EasyPassword"),postData={};return postData.resetPassword=!0,this.ajax({type:"POST",url:url,data:postData})},ApiClient.prototype.updateServerConfiguration=function(configuration){if(!configuration)throw new Error("null configuration");var url=this.getUrl("System/Configuration");return this.ajax({type:"POST",url:url,data:JSON.stringify(configuration),contentType:"application/json"})},ApiClient.prototype.updateNamedConfiguration=function(name,configuration){if(!configuration)throw new Error("null configuration");var url=this.getUrl("System/Configuration/"+name);return this.ajax({type:"POST",url:url,data:JSON.stringify(configuration),contentType:"application/json"})},ApiClient.prototype.updateItem=function(item){if(!item)throw new Error("null item");var url=this.getUrl("Items/"+item.Id);return this.ajax({type:"POST",url:url,data:JSON.stringify(item),contentType:"application/json"})},ApiClient.prototype.updatePluginSecurityInfo=function(info){var url=this.getUrl("Plugins/SecurityInfo");return this.ajax({type:"POST",url:url,data:JSON.stringify(info),contentType:"application/json"})},ApiClient.prototype.createUser=function(name){var url=this.getUrl("Users/New");return this.ajax({type:"POST",url:url,data:{Name:name},dataType:"json"})},ApiClient.prototype.updateUser=function(user){if(!user)throw new Error("null user");var url=this.getUrl("Users/"+user.Id);return this.ajax({type:"POST",url:url,data:JSON.stringify(user),contentType:"application/json"})},ApiClient.prototype.updateUserPolicy=function(userId,policy){if(!userId)throw new Error("null userId");if(!policy)throw new Error("null policy");var url=this.getUrl("Users/"+userId+"/Policy");return this.ajax({type:"POST",url:url,data:JSON.stringify(policy),contentType:"application/json"})},ApiClient.prototype.updateUserConfiguration=function(userId,configuration){if(!userId)throw new Error("null userId");if(!configuration)throw new Error("null configuration");var url=this.getUrl("Users/"+userId+"/Configuration");return this.ajax({type:"POST",url:url,data:JSON.stringify(configuration),contentType:"application/json"})},ApiClient.prototype.updateScheduledTaskTriggers=function(id,triggers){if(!id)throw new Error("null id");if(!triggers)throw new Error("null triggers");var url=this.getUrl("ScheduledTasks/"+id+"/Triggers");return this.ajax({type:"POST",url:url,data:JSON.stringify(triggers),contentType:"application/json"})},ApiClient.prototype.updatePluginConfiguration=function(id,configuration){if(!id)throw new Error("null Id");if(!configuration)throw new Error("null configuration");var url=this.getUrl("Plugins/"+id+"/Configuration");return this.ajax({type:"POST",url:url,data:JSON.stringify(configuration),contentType:"application/json"})},ApiClient.prototype.getAncestorItems=function(itemId,userId){if(!itemId)throw new Error("null itemId");var options={};userId&&(options.userId=userId);var url=this.getUrl("Items/"+itemId+"/Ancestors",options);return this.getJSON(url)},ApiClient.prototype.getItems=function(userId,options){var url;return url="string"===(typeof userId).toString().toLowerCase()?this.getUrl("Users/"+userId+"/Items",options):this.getUrl("Items",options),this.getJSON(url)},ApiClient.prototype.getResumableItems=function(userId,options){return this.isMinServerVersion("3.2.33")?this.getJSON(this.getUrl("Users/"+userId+"/Items/Resume",options)):this.getItems(userId,Object.assign({SortBy:"DatePlayed",SortOrder:"Descending",Filters:"IsResumable",Recursive:!0,CollapseBoxSetItems:!1,ExcludeLocationTypes:"Virtual"},options))},ApiClient.prototype.getMovieRecommendations=function(options){return this.getJSON(this.getUrl("Movies/Recommendations",options))},ApiClient.prototype.getUpcomingEpisodes=function(options){return this.getJSON(this.getUrl("Shows/Upcoming",options))},ApiClient.prototype.getChannels=function(query){return this.getJSON(this.getUrl("Channels",query||{}))},ApiClient.prototype.getLatestChannelItems=function(query){return this.getJSON(this.getUrl("Channels/Items/Latest",query))},ApiClient.prototype.getUserViews=function(options,userId){options=options||{};var url=this.getUrl("Users/"+(userId||this.getCurrentUserId())+"/Views",options);return this.getJSON(url)},ApiClient.prototype.getArtists=function(userId,options){if(!userId)throw new Error("null userId");options=options||{},options.userId=userId;var url=this.getUrl("Artists",options);return this.getJSON(url)},ApiClient.prototype.getAlbumArtists=function(userId,options){if(!userId)throw new Error("null userId");options=options||{},options.userId=userId;var url=this.getUrl("Artists/AlbumArtists",options);return this.getJSON(url)},ApiClient.prototype.getGenres=function(userId,options){if(!userId)throw new Error("null userId");options=options||{},options.userId=userId;var url=this.getUrl("Genres",options);return this.getJSON(url)},ApiClient.prototype.getMusicGenres=function(userId,options){if(!userId)throw new Error("null userId");options=options||{},options.userId=userId;var url=this.getUrl("MusicGenres",options);return this.getJSON(url)},ApiClient.prototype.getGameGenres=function(userId,options){if(!userId)throw new Error("null userId");options=options||{},options.userId=userId;var url=this.getUrl("GameGenres",options);return this.getJSON(url)},ApiClient.prototype.getPeople=function(userId,options){if(!userId)throw new Error("null userId");options=options||{},options.userId=userId;var url=this.getUrl("Persons",options);return this.getJSON(url)},ApiClient.prototype.getStudios=function(userId,options){if(!userId)throw new Error("null userId");options=options||{},options.userId=userId;var url=this.getUrl("Studios",options);return this.getJSON(url)},ApiClient.prototype.getLocalTrailers=function(userId,itemId){if(!userId)throw new Error("null userId");if(!itemId)throw new Error("null itemId");var url=this.getUrl("Users/"+userId+"/Items/"+itemId+"/LocalTrailers");return this.getJSON(url)},ApiClient.prototype.getGameSystems=function(){var options={},userId=this.getCurrentUserId();userId&&(options.userId=userId);var url=this.getUrl("Games/SystemSummaries",options);return this.getJSON(url)},ApiClient.prototype.getAdditionalVideoParts=function(userId,itemId){if(!itemId)throw new Error("null itemId");var options={};userId&&(options.userId=userId);var url=this.getUrl("Videos/"+itemId+"/AdditionalParts",options);return this.getJSON(url)},ApiClient.prototype.getThemeMedia=function(userId,itemId,inherit){if(!itemId)throw new Error("null itemId");var options={};userId&&(options.userId=userId),options.InheritFromParent=inherit||!1;var url=this.getUrl("Items/"+itemId+"/ThemeMedia",options);return this.getJSON(url)},ApiClient.prototype.getSearchHints=function(options){var url=this.getUrl("Search/Hints",options),serverId=this.serverId();return this.getJSON(url).then(function(result){return result.SearchHints.forEach(function(i){i.ServerId=serverId}),result})},ApiClient.prototype.getSpecialFeatures=function(userId,itemId){if(!userId)throw new Error("null userId");if(!itemId)throw new Error("null itemId");var url=this.getUrl("Users/"+userId+"/Items/"+itemId+"/SpecialFeatures");return this.getJSON(url)},ApiClient.prototype.getDateParamValue=function(date){function formatDigit(i){return i<10?"0"+i:i}var d=date;return""+d.getFullYear()+formatDigit(d.getMonth()+1)+formatDigit(d.getDate())+formatDigit(d.getHours())+formatDigit(d.getMinutes())+formatDigit(d.getSeconds())},ApiClient.prototype.markPlayed=function(userId,itemId,date){if(!userId)throw new Error("null userId");if(!itemId)throw new Error("null itemId");var options={};date&&(options.DatePlayed=this.getDateParamValue(date));var url=this.getUrl("Users/"+userId+"/PlayedItems/"+itemId,options);return this.ajax({type:"POST",url:url,dataType:"json"})},ApiClient.prototype.markUnplayed=function(userId,itemId){if(!userId)throw new Error("null userId");if(!itemId)throw new Error("null itemId");var url=this.getUrl("Users/"+userId+"/PlayedItems/"+itemId);return this.ajax({type:"DELETE",url:url,dataType:"json"})},ApiClient.prototype.updateFavoriteStatus=function(userId,itemId,isFavorite){if(!userId)throw new Error("null userId");if(!itemId)throw new Error("null itemId");var url=this.getUrl("Users/"+userId+"/FavoriteItems/"+itemId),method=isFavorite?"POST":"DELETE";return this.ajax({type:method,url:url,dataType:"json"})},ApiClient.prototype.updateUserItemRating=function(userId,itemId,likes){if(!userId)throw new Error("null userId");if(!itemId)throw new Error("null itemId");var url=this.getUrl("Users/"+userId+"/Items/"+itemId+"/Rating",{likes:likes});return this.ajax({type:"POST",url:url,dataType:"json"})},ApiClient.prototype.getItemCounts=function(userId){var options={};userId&&(options.userId=userId);var url=this.getUrl("Items/Counts",options);return this.getJSON(url)},ApiClient.prototype.clearUserItemRating=function(userId,itemId){if(!userId)throw new Error("null userId");if(!itemId)throw new Error("null itemId");var url=this.getUrl("Users/"+userId+"/Items/"+itemId+"/Rating");return this.ajax({type:"DELETE",url:url,dataType:"json"})},ApiClient.prototype.reportPlaybackStart=function(options){if(!options)throw new Error("null options");this.lastPlaybackProgressReport=0,this.lastPlaybackProgressReportTicks=null,stopBitrateDetection(this);var url=this.getUrl("Sessions/Playing");return this.ajax({type:"POST",data:JSON.stringify(options),contentType:"application/json",url:url})},ApiClient.prototype.reportPlaybackProgress=function(options){if(!options)throw new Error("null options");var newPositionTicks=options.PositionTicks;if("timeupdate"===(options.EventName||"timeupdate")){var now=(new Date).getTime(),msSinceLastReport=now-(this.lastPlaybackProgressReport||0);if(msSinceLastReport<=1e4){if(!newPositionTicks)return Promise.resolve();var expectedReportTicks=1e4*msSinceLastReport+(this.lastPlaybackProgressReportTicks||0);if(Math.abs((newPositionTicks||0)-expectedReportTicks)<5e7)return Promise.resolve()}this.lastPlaybackProgressReport=now}else this.lastPlaybackProgressReport=0;this.lastPlaybackProgressReportTicks=newPositionTicks;var url=this.getUrl("Sessions/Playing/Progress");return this.ajax({type:"POST",data:JSON.stringify(options),contentType:"application/json",url:url})},ApiClient.prototype.reportOfflineActions=function(actions){if(!actions)throw new Error("null actions");var url=this.getUrl("Sync/OfflineActions");return this.ajax({type:"POST",data:JSON.stringify(actions),contentType:"application/json",url:url})},ApiClient.prototype.syncData=function(data){if(!data)throw new Error("null data");var url=this.getUrl("Sync/Data");return this.ajax({type:"POST",data:JSON.stringify(data),contentType:"application/json",url:url,dataType:"json"})},ApiClient.prototype.getReadySyncItems=function(deviceId){if(!deviceId)throw new Error("null deviceId");var url=this.getUrl("Sync/Items/Ready",{TargetId:deviceId});return this.getJSON(url)},ApiClient.prototype.reportSyncJobItemTransferred=function(syncJobItemId){if(!syncJobItemId)throw new Error("null syncJobItemId");var url=this.getUrl("Sync/JobItems/"+syncJobItemId+"/Transferred");return this.ajax({type:"POST",url:url})},ApiClient.prototype.cancelSyncItems=function(itemIds,targetId){if(!itemIds)throw new Error("null itemIds");var url=this.getUrl("Sync/"+(targetId||this.deviceId())+"/Items",{ItemIds:itemIds.join(",")});return this.ajax({type:"DELETE",url:url})},ApiClient.prototype.reportPlaybackStopped=function(options){if(!options)throw new Error("null options");this.lastPlaybackProgressReport=0,this.lastPlaybackProgressReportTicks=null,redetectBitrate(this);var url=this.getUrl("Sessions/Playing/Stopped");return this.ajax({type:"POST",data:JSON.stringify(options),contentType:"application/json",url:url})},ApiClient.prototype.sendPlayCommand=function(sessionId,options){if(!sessionId)throw new Error("null sessionId");if(!options)throw new Error("null options");var url=this.getUrl("Sessions/"+sessionId+"/Playing",options);return this.ajax({type:"POST",url:url})},ApiClient.prototype.sendCommand=function(sessionId,command){if(!sessionId)throw new Error("null sessionId");if(!command)throw new Error("null command");var url=this.getUrl("Sessions/"+sessionId+"/Command"),ajaxOptions={type:"POST",url:url};return ajaxOptions.data=JSON.stringify(command),ajaxOptions.contentType="application/json",this.ajax(ajaxOptions)},ApiClient.prototype.sendMessageCommand=function(sessionId,options){if(!sessionId)throw new Error("null sessionId");if(!options)throw new Error("null options");var url=this.getUrl("Sessions/"+sessionId+"/Message",options);return this.ajax({type:"POST",url:url})},ApiClient.prototype.sendPlayStateCommand=function(sessionId,command,options){if(!sessionId)throw new Error("null sessionId");if(!command)throw new Error("null command");var url=this.getUrl("Sessions/"+sessionId+"/Playing/"+command,options||{});return this.ajax({type:"POST",url:url})},ApiClient.prototype.createPackageReview=function(review){var url=this.getUrl("Packages/Reviews/"+review.id,review);return this.ajax({type:"POST",url:url})},ApiClient.prototype.getPackageReviews=function(packageId,minRating,maxRating,limit){if(!packageId)throw new Error("null packageId");var options={};minRating&&(options.MinRating=minRating),maxRating&&(options.MaxRating=maxRating),limit&&(options.Limit=limit);var url=this.getUrl("Packages/"+packageId+"/Reviews",options);return this.getJSON(url)},ApiClient.prototype.getSmartMatchInfos=function(options){options=options||{};var url=this.getUrl("Library/FileOrganizations/SmartMatches",options);return this.ajax({type:"GET",url:url,dataType:"json"})},ApiClient.prototype.deleteSmartMatchEntries=function(entries){var url=this.getUrl("Library/FileOrganizations/SmartMatches/Delete"),postData={Entries:entries};return this.ajax({type:"POST",url:url,data:JSON.stringify(postData),contentType:"application/json"})},ApiClient.prototype.getSavedEndpointInfo=function(){return this._endPointInfo},ApiClient.prototype.getEndpointInfo=function(){var savedValue=this._endPointInfo;if(savedValue)return Promise.resolve(savedValue);var instance=this;return this.getJSON(this.getUrl("System/Endpoint")).then(function(endPointInfo){return setSavedEndpointInfo(instance,endPointInfo),endPointInfo})},ApiClient.prototype.getLatestItems=function(options){return options=options||{},this.getJSON(this.getUrl("Users/"+this.getCurrentUserId()+"/Items/Latest",options))},ApiClient.prototype.setSystemInfo=function(info){this._serverVersion=info.Version},ApiClient.prototype.serverVersion=function(){return this._serverVersion},ApiClient.prototype.isMinServerVersion=function(version){var serverVersion=this.serverVersion();return!!serverVersion&&compareVersions(serverVersion,version)>=0},ApiClient}); \ No newline at end of file +define(["events","appStorage","wakeOnLan"],function(events,appStorage,wakeOnLan){"use strict";function redetectBitrate(instance){stopBitrateDetection(instance),instance.accessToken()&&!1!==instance.enableAutomaticBitrateDetection&&setTimeout(redetectBitrateInternal.bind(instance),6e3)}function redetectBitrateInternal(){this.accessToken()&&this.detectBitrate()}function stopBitrateDetection(instance){instance.detectTimeout&&clearTimeout(instance.detectTimeout)}function replaceAll(originalString,strReplace,strWith){var reg=new RegExp(strReplace,"ig");return originalString.replace(reg,strWith)}function onFetchFail(instance,url,response){events.trigger(instance,"requestfail",[{url:url,status:response.status,errorCode:response.headers?response.headers.get("X-Application-Error-Code"):null}])}function paramsToString(params){var values=[];for(var key in params){var value=params[key];null!==value&&void 0!==value&&""!==value&&values.push(encodeURIComponent(key)+"="+encodeURIComponent(value))}return values.join("&")}function fetchWithTimeout(url,options,timeoutMs){return new Promise(function(resolve,reject){var timeout=setTimeout(reject,timeoutMs);options=options||{},options.credentials="same-origin",fetch(url,options).then(function(response){clearTimeout(timeout),resolve(response)},function(error){clearTimeout(timeout),reject(error)})})}function getFetchPromise(request){var headers=request.headers||{};"json"===request.dataType&&(headers.accept="application/json");var fetchRequest={headers:headers,method:request.type,credentials:"same-origin"},contentType=request.contentType;return request.data&&("string"==typeof request.data?fetchRequest.body=request.data:(fetchRequest.body=paramsToString(request.data),contentType=contentType||"application/x-www-form-urlencoded; charset=UTF-8")),contentType&&(headers["Content-Type"]=contentType),request.timeout?fetchWithTimeout(request.url,fetchRequest,request.timeout):fetch(request.url,fetchRequest)}function ApiClient(serverAddress,appName,appVersion,deviceName,deviceId,devicePixelRatio){if(!serverAddress)throw new Error("Must supply a serverAddress");console.log("ApiClient serverAddress: "+serverAddress),console.log("ApiClient appName: "+appName),console.log("ApiClient appVersion: "+appVersion),console.log("ApiClient deviceName: "+deviceName),console.log("ApiClient deviceId: "+deviceId),this._serverInfo={},this._serverAddress=serverAddress,this._deviceId=deviceId,this._deviceName=deviceName,this._appName=appName,this._appVersion=appVersion,this._devicePixelRatio=devicePixelRatio}function setSavedEndpointInfo(instance,info){instance._endPointInfo=info}function getTryConnectPromise(instance,url,state,resolve,reject){console.log("getTryConnectPromise "+url),fetchWithTimeout(instance.getUrl("system/info/public",null,url),{method:"GET",accept:"application/json"},15e3).then(function(){state.resolved||(state.resolved=!0,console.log("Reconnect succeeded to "+url),instance.serverAddress(url),resolve())},function(){state.resolved||(console.log("Reconnect failed to "+url),++state.rejects>=state.numAddresses&&reject())})}function tryReconnectInternal(instance){var addresses=[],addressesStrings=[],serverInfo=instance.serverInfo();return serverInfo.LocalAddress&&-1===addressesStrings.indexOf(serverInfo.LocalAddress)&&(addresses.push({url:serverInfo.LocalAddress,timeout:0}),addressesStrings.push(addresses[addresses.length-1].url)),serverInfo.ManualAddress&&-1===addressesStrings.indexOf(serverInfo.ManualAddress)&&(addresses.push({url:serverInfo.ManualAddress,timeout:100}),addressesStrings.push(addresses[addresses.length-1].url)),serverInfo.RemoteAddress&&-1===addressesStrings.indexOf(serverInfo.RemoteAddress)&&(addresses.push({url:serverInfo.RemoteAddress,timeout:200}),addressesStrings.push(addresses[addresses.length-1].url)),console.log("tryReconnect: "+addressesStrings.join("|")),new Promise(function(resolve,reject){var state={};state.numAddresses=addresses.length,state.rejects=0,addresses.map(function(url){setTimeout(function(){state.resolved||getTryConnectPromise(instance,url.url,state,resolve,reject)},url.timeout)})})}function tryReconnect(instance,retryCount){return retryCount=retryCount||0,retryCount>=20?Promise.reject():tryReconnectInternal(instance).catch(function(err){return console.log("error in tryReconnectInternal: "+(err||"")),new Promise(function(resolve,reject){setTimeout(function(){tryReconnect(instance,retryCount+1).then(resolve,reject)},500)})})}function getCachedUser(instance,userId){var serverId=instance.serverId();if(!serverId)return null;var json=appStorage.getItem("user-"+userId+"-"+serverId);return json?JSON.parse(json):null}function onWebSocketMessage(msg){var instance=this;msg=JSON.parse(msg.data),onMessageReceivedInternal(instance,msg)}function onMessageReceivedInternal(instance,msg){var messageId=msg.MessageId;if(messageId){if(messageIdsReceived[messageId])return;messageIdsReceived[messageId]=!0}if("UserDeleted"===msg.MessageType)instance._currentUser=null;else if("UserUpdated"===msg.MessageType||"UserConfigurationUpdated"===msg.MessageType){var user=msg.Data;user.Id===instance.getCurrentUserId()&&(instance._currentUser=null)}events.trigger(instance,"message",[msg])}function onWebSocketOpen(){var instance=this;console.log("web socket connection opened"),events.trigger(instance,"websocketopen")}function onWebSocketError(){var instance=this;events.trigger(instance,"websocketerror")}function setSocketOnClose(apiClient,socket){socket.onclose=function(){console.log("web socket closed"),apiClient._webSocket===socket&&(console.log("nulling out web socket"),apiClient._webSocket=null),setTimeout(function(){events.trigger(apiClient,"websocketclose")},0)}}function normalizeReturnBitrate(instance,bitrate){if(!bitrate)return instance.lastDetectedBitrate?instance.lastDetectedBitrate:Promise.reject();var result=Math.round(.7*bitrate);if(instance.getMaxBandwidth){var maxRate=instance.getMaxBandwidth();maxRate&&(result=Math.min(result,maxRate))}return instance.lastDetectedBitrate=result,instance.lastDetectedBitrateTime=(new Date).getTime(),result}function detectBitrateInternal(instance,tests,index,currentBitrate){if(index>=tests.length)return normalizeReturnBitrate(instance,currentBitrate);var test=tests[index];return instance.getDownloadSpeed(test.bytes).then(function(bitrate){return bitrate=infos.length)return void resolve();var info=infos[index];console.log("sending wakeonlan to "+info.MacAddress),wakeOnLan.send(info).then(function(result){sendNextWakeOnLan(infos,index+1,resolve)},function(){sendNextWakeOnLan(infos,index+1,resolve)})}function compareVersions(a,b){a=a.split("."),b=b.split(".");for(var i=0,length=Math.max(a.length,b.length);ibVal)return 1}return 0}ApiClient.prototype.appName=function(){return this._appName},ApiClient.prototype.setRequestHeaders=function(headers){var currentServerInfo=this.serverInfo(),appName=this._appName,accessToken=currentServerInfo.AccessToken,values=[];if(appName&&values.push('Client="'+appName+'"'),this._deviceName&&values.push('Device="'+this._deviceName+'"'),this._deviceId&&values.push('DeviceId="'+this._deviceId+'"'),this._appVersion&&values.push('Version="'+this._appVersion+'"'),accessToken&&values.push('Token="'+accessToken+'"'),values.length){var auth="MediaBrowser "+values.join(", ");headers["X-Emby-Authorization"]=auth}},ApiClient.prototype.appVersion=function(){return this._appVersion},ApiClient.prototype.deviceName=function(){return this._deviceName},ApiClient.prototype.deviceId=function(){return this._deviceId},ApiClient.prototype.serverAddress=function(val){if(null!=val){if(0!==val.toLowerCase().indexOf("http"))throw new Error("Invalid url: "+val);var changed=val!==this._serverAddress;this._serverAddress=val,this.onNetworkChange(),changed&&events.trigger(this,"serveraddresschanged")}return this._serverAddress},ApiClient.prototype.onNetworkChange=function(){this.lastDetectedBitrate=0,this.lastDetectedBitrateTime=0,setSavedEndpointInfo(this,null),redetectBitrate(this),refreshWakeOnLanInfoIfNeeded(this)},ApiClient.prototype.getUrl=function(name,params,serverAddress){if(!name)throw new Error("Url name cannot be empty");var url=serverAddress||this._serverAddress;if(!url)throw new Error("serverAddress is yet not set");var lowered=url.toLowerCase();return-1===lowered.indexOf("/emby")&&-1===lowered.indexOf("/mediabrowser")&&(url+="/emby"),"/"!==name.charAt(0)&&(url+="/"),url+=name,params&&(params=paramsToString(params))&&(url+="?"+params),url},ApiClient.prototype.fetchWithFailover=function(request,enableReconnection){console.log("Requesting "+request.url),request.timeout=3e4;var instance=this;return getFetchPromise(request).then(function(response){return instance.lastFetch=(new Date).getTime(),response.status<400?"json"===request.dataType||"application/json"===request.headers.accept?response.json():"text"===request.dataType||0===(response.headers.get("Content-Type")||"").toLowerCase().indexOf("text/")?response.text():response:(onFetchFail(instance,request.url,response),Promise.reject(response))},function(error){if(error?console.log("Request failed to "+request.url+" "+(error.status||"")+" "+error.toString()):console.log("Request timed out to "+request.url),error&&error.status||!enableReconnection)throw console.log("Reporting request failure"),onFetchFail(instance,request.url,{}),error;console.log("Attempting reconnection");var previousServerAddress=instance.serverAddress();return tryReconnect(instance).then(function(){return console.log("Reconnect succeesed"),request.url=request.url.replace(previousServerAddress,instance.serverAddress()),instance.fetchWithFailover(request,!1)},function(innerError){throw console.log("Reconnect failed"),onFetchFail(instance,request.url,{}),innerError})})},ApiClient.prototype.fetch=function(request,includeAuthorization){if(!request)throw new Error("Request cannot be null");if(request.headers=request.headers||{},!1!==includeAuthorization&&this.setRequestHeaders(request.headers),!1===this.enableAutomaticNetworking||"GET"!==request.type){console.log("Requesting url without automatic networking: "+request.url);var instance=this;return getFetchPromise(request).then(function(response){return instance.lastFetch=(new Date).getTime(),response.status<400?"json"===request.dataType||"application/json"===request.headers.accept?response.json():"text"===request.dataType||0===(response.headers.get("Content-Type")||"").toLowerCase().indexOf("text/")?response.text():response:(onFetchFail(instance,request.url,response),Promise.reject(response))},function(error){throw onFetchFail(instance,request.url,{}),error})}return this.fetchWithFailover(request,!0)},ApiClient.prototype.setAuthenticationInfo=function(accessKey,userId){this._currentUser=null,this._serverInfo.AccessToken=accessKey,this._serverInfo.UserId=userId,redetectBitrate(this),refreshWakeOnLanInfoIfNeeded(this)},ApiClient.prototype.serverInfo=function(info){return info&&(this._serverInfo=info),this._serverInfo},ApiClient.prototype.getCurrentUserId=function(){return this._serverInfo.UserId},ApiClient.prototype.accessToken=function(){return this._serverInfo.AccessToken},ApiClient.prototype.serverId=function(){return this.serverInfo().Id},ApiClient.prototype.serverName=function(){return this.serverInfo().Name},ApiClient.prototype.ajax=function(request,includeAuthorization){if(!request)throw new Error("Request cannot be null");return this.fetch(request,includeAuthorization)},ApiClient.prototype.getCurrentUser=function(enableCache){if(this._currentUser)return Promise.resolve(this._currentUser);var userId=this.getCurrentUserId();if(!userId)return Promise.reject();var user,instance=this,serverPromise=this.getUser(userId).then(function(user){return appStorage.setItem("user-"+user.Id+"-"+user.ServerId,JSON.stringify(user)),instance._currentUser=user,user},function(response){if(!response.status&&userId&&instance.accessToken()&&(user=getCachedUser(instance,userId)))return Promise.resolve(user);throw response});return!this.lastFetch&&!1!==enableCache&&(user=getCachedUser(instance,userId))?Promise.resolve(user):serverPromise},ApiClient.prototype.isLoggedIn=function(){var info=this.serverInfo();return!!(info&&info.UserId&&info.AccessToken)},ApiClient.prototype.logout=function(){stopBitrateDetection(this),this.closeWebSocket();var done=function(){this.setAuthenticationInfo(null,null)}.bind(this);if(this.accessToken()){var url=this.getUrl("Sessions/Logout");return this.ajax({type:"POST",url:url}).then(done,done)}return done(),Promise.resolve()},ApiClient.prototype.authenticateUserByName=function(name,password){if(!name)return Promise.reject();var url=this.getUrl("Users/authenticatebyname"),instance=this;return new Promise(function(resolve,reject){var postData={Username:name,Pw:password||""};instance.ajax({type:"POST",url:url,data:JSON.stringify(postData),dataType:"json",contentType:"application/json"}).then(function(result){var afterOnAuthenticated=function(){redetectBitrate(instance),refreshWakeOnLanInfoIfNeeded(instance),resolve(result)};instance.onAuthenticated?instance.onAuthenticated(instance,result).then(afterOnAuthenticated):afterOnAuthenticated()},reject)})},ApiClient.prototype.ensureWebSocket=function(){if(!this.isWebSocketOpenOrConnecting()&&this.isWebSocketSupported())try{this.openWebSocket()}catch(err){console.log("Error opening web socket: "+err)}};var messageIdsReceived={};return ApiClient.prototype.openWebSocket=function(){var accessToken=this.accessToken();if(!accessToken)throw new Error("Cannot open web socket without access token.");var url=this.getUrl("socket");url=replaceAll(url,"emby/socket","embywebsocket"),url=replaceAll(url,"https:","wss:"),url=replaceAll(url,"http:","ws:"),url+="?api_key="+accessToken,url+="&deviceId="+this.deviceId(),console.log("opening web socket with url: "+url);var webSocket=new WebSocket(url);webSocket.onmessage=onWebSocketMessage.bind(this),webSocket.onopen=onWebSocketOpen.bind(this),webSocket.onerror=onWebSocketError.bind(this),setSocketOnClose(this,webSocket),this._webSocket=webSocket},ApiClient.prototype.closeWebSocket=function(){var socket=this._webSocket;socket&&socket.readyState===WebSocket.OPEN&&socket.close()},ApiClient.prototype.sendWebSocketMessage=function(name,data){console.log("Sending web socket message: "+name);var msg={MessageType:name};data&&(msg.Data=data),msg=JSON.stringify(msg),this._webSocket.send(msg)},ApiClient.prototype.sendMessage=function(name,data){this.isWebSocketOpen()&&this.sendWebSocketMessage(name,data)},ApiClient.prototype.isMessageChannelOpen=function(){return this.isWebSocketOpen()},ApiClient.prototype.isWebSocketOpen=function(){var socket=this._webSocket;return!!socket&&socket.readyState===WebSocket.OPEN},ApiClient.prototype.isWebSocketOpenOrConnecting=function(){var socket=this._webSocket;return!!socket&&(socket.readyState===WebSocket.OPEN||socket.readyState===WebSocket.CONNECTING)},ApiClient.prototype.get=function(url){return this.ajax({type:"GET",url:url})},ApiClient.prototype.getJSON=function(url,includeAuthorization){return this.fetch({url:url,type:"GET",dataType:"json",headers:{accept:"application/json"}},includeAuthorization)},ApiClient.prototype.updateServerInfo=function(server,serverUrl){if(null==server)throw new Error("server cannot be null");if(this.serverInfo(server),!serverUrl)throw new Error("serverUrl cannot be null. serverInfo: "+JSON.stringify(server));console.log("Setting server address to "+serverUrl),this.serverAddress(serverUrl)},ApiClient.prototype.isWebSocketSupported=function(){try{return null!=WebSocket}catch(err){return!1}},ApiClient.prototype.clearAuthenticationInfo=function(){this.setAuthenticationInfo(null,null)},ApiClient.prototype.encodeName=function(name){name=name.split("/").join("-"),name=name.split("&").join("-"),name=name.split("?").join("-");var val=paramsToString({name:name});return val.substring(val.indexOf("=")+1).replace("'","%27")},ApiClient.prototype.getProductNews=function(options){options=options||{};var url=this.getUrl("News/Product",options);return this.getJSON(url)},ApiClient.prototype.getDownloadSpeed=function(byteSize){var url=this.getUrl("Playback/BitrateTest",{Size:byteSize}),now=(new Date).getTime();return this.ajax({type:"GET",url:url,timeout:5e3}).then(function(){var responseTimeSeconds=((new Date).getTime()-now)/1e3,bytesPerSecond=byteSize/responseTimeSeconds;return Math.round(8*bytesPerSecond)})},ApiClient.prototype.detectBitrate=function(force){if(!force&&this.lastDetectedBitrate&&(new Date).getTime()-(this.lastDetectedBitrateTime||0)<=36e5)return Promise.resolve(this.lastDetectedBitrate);var instance=this;return this.getEndpointInfo().then(function(info){return detectBitrateWithEndpointInfo(instance,info)},function(info){return detectBitrateWithEndpointInfo(instance,{})})},ApiClient.prototype.getItem=function(userId,itemId){if(!itemId)throw new Error("null itemId");var url=userId?this.getUrl("Users/"+userId+"/Items/"+itemId):this.getUrl("Items/"+itemId);return this.getJSON(url)},ApiClient.prototype.getRootFolder=function(userId){if(!userId)throw new Error("null userId");var url=this.getUrl("Users/"+userId+"/Items/Root");return this.getJSON(url)},ApiClient.prototype.getNotificationSummary=function(userId){if(!userId)throw new Error("null userId");var url=this.getUrl("Notifications/"+userId+"/Summary");return this.getJSON(url)},ApiClient.prototype.getNotifications=function(userId,options){if(!userId)throw new Error("null userId");var url=this.getUrl("Notifications/"+userId,options||{});return this.getJSON(url)},ApiClient.prototype.markNotificationsRead=function(userId,idList,isRead){if(!userId)throw new Error("null userId");if(!idList)throw new Error("null idList");var suffix=isRead?"Read":"Unread",params={UserId:userId,Ids:idList.join(",")},url=this.getUrl("Notifications/"+userId+"/"+suffix,params);return this.ajax({type:"POST",url:url})},ApiClient.prototype.getRemoteImageProviders=function(options){if(!options)throw new Error("null options");var urlPrefix=getRemoteImagePrefix(this,options),url=this.getUrl(urlPrefix+"/RemoteImages/Providers",options);return this.getJSON(url)},ApiClient.prototype.getAvailableRemoteImages=function(options){if(!options)throw new Error("null options");var urlPrefix=getRemoteImagePrefix(this,options),url=this.getUrl(urlPrefix+"/RemoteImages",options);return this.getJSON(url)},ApiClient.prototype.downloadRemoteImage=function(options){if(!options)throw new Error("null options");var urlPrefix=getRemoteImagePrefix(this,options),url=this.getUrl(urlPrefix+"/RemoteImages/Download",options);return this.ajax({type:"POST",url:url})},ApiClient.prototype.getRecordingFolders=function(userId){var url=this.getUrl("LiveTv/Recordings/Folders",{userId:userId});return this.getJSON(url)},ApiClient.prototype.getLiveTvInfo=function(options){var url=this.getUrl("LiveTv/Info",options||{});return this.getJSON(url)},ApiClient.prototype.getLiveTvGuideInfo=function(options){var url=this.getUrl("LiveTv/GuideInfo",options||{});return this.getJSON(url)},ApiClient.prototype.getLiveTvChannel=function(id,userId){if(!id)throw new Error("null id");var options={};userId&&(options.userId=userId);var url=this.getUrl("LiveTv/Channels/"+id,options);return this.getJSON(url)},ApiClient.prototype.getLiveTvChannels=function(options){var url=this.getUrl("LiveTv/Channels",options||{});return this.getJSON(url)},ApiClient.prototype.getLiveTvPrograms=function(options){return options=options||{},options.channelIds&&options.channelIds.length>1800?this.ajax({type:"POST",url:this.getUrl("LiveTv/Programs"),data:JSON.stringify(options),contentType:"application/json",dataType:"json"}):this.ajax({type:"GET",url:this.getUrl("LiveTv/Programs",options),dataType:"json"})},ApiClient.prototype.getLiveTvRecommendedPrograms=function(options){return options=options||{},this.ajax({type:"GET",url:this.getUrl("LiveTv/Programs/Recommended",options),dataType:"json"})},ApiClient.prototype.getLiveTvRecordings=function(options){var url=this.getUrl("LiveTv/Recordings",options||{});return this.getJSON(url)},ApiClient.prototype.getLiveTvRecordingSeries=function(options){var url=this.getUrl("LiveTv/Recordings/Series",options||{});return this.getJSON(url)},ApiClient.prototype.getLiveTvRecordingGroups=function(options){var url=this.getUrl("LiveTv/Recordings/Groups",options||{});return this.getJSON(url)},ApiClient.prototype.getLiveTvRecordingGroup=function(id){if(!id)throw new Error("null id");var url=this.getUrl("LiveTv/Recordings/Groups/"+id);return this.getJSON(url)},ApiClient.prototype.getLiveTvRecording=function(id,userId){if(!id)throw new Error("null id");var options={};userId&&(options.userId=userId);var url=this.getUrl("LiveTv/Recordings/"+id,options);return this.getJSON(url)},ApiClient.prototype.getLiveTvProgram=function(id,userId){if(!id)throw new Error("null id");var options={};userId&&(options.userId=userId);var url=this.getUrl("LiveTv/Programs/"+id,options);return this.getJSON(url)},ApiClient.prototype.deleteLiveTvRecording=function(id){if(!id)throw new Error("null id");var url=this.getUrl("LiveTv/Recordings/"+id);return this.ajax({type:"DELETE",url:url})},ApiClient.prototype.cancelLiveTvTimer=function(id){if(!id)throw new Error("null id");var url=this.getUrl("LiveTv/Timers/"+id);return this.ajax({type:"DELETE",url:url})},ApiClient.prototype.getLiveTvTimers=function(options){var url=this.getUrl("LiveTv/Timers",options||{});return this.getJSON(url)},ApiClient.prototype.getLiveTvTimer=function(id){if(!id)throw new Error("null id");var url=this.getUrl("LiveTv/Timers/"+id);return this.getJSON(url)},ApiClient.prototype.getNewLiveTvTimerDefaults=function(options){options=options||{};var url=this.getUrl("LiveTv/Timers/Defaults",options);return this.getJSON(url)},ApiClient.prototype.createLiveTvTimer=function(item){if(!item)throw new Error("null item");var url=this.getUrl("LiveTv/Timers");return this.ajax({type:"POST",url:url,data:JSON.stringify(item),contentType:"application/json"})},ApiClient.prototype.updateLiveTvTimer=function(item){if(!item)throw new Error("null item");var url=this.getUrl("LiveTv/Timers/"+item.Id);return this.ajax({type:"POST",url:url,data:JSON.stringify(item),contentType:"application/json"})},ApiClient.prototype.resetLiveTvTuner=function(id){if(!id)throw new Error("null id");var url=this.getUrl("LiveTv/Tuners/"+id+"/Reset");return this.ajax({type:"POST",url:url})},ApiClient.prototype.getLiveTvSeriesTimers=function(options){var url=this.getUrl("LiveTv/SeriesTimers",options||{});return this.getJSON(url)},ApiClient.prototype.getLiveTvSeriesTimer=function(id){if(!id)throw new Error("null id");var url=this.getUrl("LiveTv/SeriesTimers/"+id);return this.getJSON(url)},ApiClient.prototype.cancelLiveTvSeriesTimer=function(id){if(!id)throw new Error("null id");var url=this.getUrl("LiveTv/SeriesTimers/"+id);return this.ajax({type:"DELETE",url:url})},ApiClient.prototype.createLiveTvSeriesTimer=function(item){if(!item)throw new Error("null item");var url=this.getUrl("LiveTv/SeriesTimers");return this.ajax({type:"POST",url:url,data:JSON.stringify(item),contentType:"application/json"})},ApiClient.prototype.updateLiveTvSeriesTimer=function(item){if(!item)throw new Error("null item");var url=this.getUrl("LiveTv/SeriesTimers/"+item.Id);return this.ajax({type:"POST",url:url,data:JSON.stringify(item),contentType:"application/json"})},ApiClient.prototype.getRegistrationInfo=function(feature){var url=this.getUrl("Registrations/"+feature);return this.getJSON(url)},ApiClient.prototype.getSystemInfo=function(){var url=this.getUrl("System/Info"),instance=this;return this.getJSON(url).then(function(info){return instance.setSystemInfo(info),Promise.resolve(info)})},ApiClient.prototype.getSyncStatus=function(itemId){var url=this.getUrl("Sync/"+itemId+"/Status");return this.ajax({url:url,type:"POST",dataType:"json",contentType:"application/json",data:JSON.stringify({TargetId:this.deviceId()})})},ApiClient.prototype.getPublicSystemInfo=function(){var url=this.getUrl("System/Info/Public"),instance=this;return this.getJSON(url).then(function(info){return instance.setSystemInfo(info),Promise.resolve(info)})},ApiClient.prototype.getInstantMixFromItem=function(itemId,options){var url=this.getUrl("Items/"+itemId+"/InstantMix",options);return this.getJSON(url)},ApiClient.prototype.getEpisodes=function(itemId,options){var url=this.getUrl("Shows/"+itemId+"/Episodes",options);return this.getJSON(url)},ApiClient.prototype.getDisplayPreferences=function(id,userId,app){var url=this.getUrl("DisplayPreferences/"+id,{userId:userId,client:app});return this.getJSON(url)},ApiClient.prototype.updateDisplayPreferences=function(id,obj,userId,app){var url=this.getUrl("DisplayPreferences/"+id,{userId:userId,client:app});return this.ajax({type:"POST",url:url,data:JSON.stringify(obj),contentType:"application/json"})},ApiClient.prototype.getSeasons=function(itemId,options){var url=this.getUrl("Shows/"+itemId+"/Seasons",options);return this.getJSON(url)},ApiClient.prototype.getSimilarItems=function(itemId,options){var url=this.getUrl("Items/"+itemId+"/Similar",options);return this.getJSON(url)},ApiClient.prototype.getCultures=function(){var url=this.getUrl("Localization/cultures");return this.getJSON(url)},ApiClient.prototype.getCountries=function(){var url=this.getUrl("Localization/countries");return this.getJSON(url)},ApiClient.prototype.getPlaybackInfo=function(itemId,options,deviceProfile){var postData={DeviceProfile:deviceProfile};return this.ajax({url:this.getUrl("Items/"+itemId+"/PlaybackInfo",options),type:"POST",data:JSON.stringify(postData),contentType:"application/json",dataType:"json"})},ApiClient.prototype.getLiveStreamMediaInfo=function(liveStreamId){var postData={LiveStreamId:liveStreamId};return this.ajax({url:this.getUrl("LiveStreams/MediaInfo"),type:"POST",data:JSON.stringify(postData),contentType:"application/json",dataType:"json"})},ApiClient.prototype.getIntros=function(itemId){return this.getJSON(this.getUrl("Users/"+this.getCurrentUserId()+"/Items/"+itemId+"/Intros"))},ApiClient.prototype.getDirectoryContents=function(path,options){if(!path)throw new Error("null path");if("string"!=typeof path)throw new Error("invalid path");options=options||{},options.path=path;var url=this.getUrl("Environment/DirectoryContents",options);return this.getJSON(url)},ApiClient.prototype.getNetworkShares=function(path){if(!path)throw new Error("null path");var options={};options.path=path;var url=this.getUrl("Environment/NetworkShares",options);return this.getJSON(url)},ApiClient.prototype.getParentPath=function(path){if(!path)throw new Error("null path");var options={};options.path=path;var url=this.getUrl("Environment/ParentPath",options);return this.ajax({type:"GET",url:url,dataType:"text"})},ApiClient.prototype.getDrives=function(){var url=this.getUrl("Environment/Drives");return this.getJSON(url)},ApiClient.prototype.getNetworkDevices=function(){var url=this.getUrl("Environment/NetworkDevices");return this.getJSON(url)},ApiClient.prototype.cancelPackageInstallation=function(installationId){if(!installationId)throw new Error("null installationId");var url=this.getUrl("Packages/Installing/"+installationId);return this.ajax({type:"DELETE",url:url})},ApiClient.prototype.refreshItem=function(itemId,options){if(!itemId)throw new Error("null itemId");var url=this.getUrl("Items/"+itemId+"/Refresh",options||{});return this.ajax({type:"POST",url:url})},ApiClient.prototype.installPlugin=function(name,guid,updateClass,version){if(!name)throw new Error("null name");if(!updateClass)throw new Error("null updateClass");var options={updateClass:updateClass,AssemblyGuid:guid};version&&(options.version=version);var url=this.getUrl("Packages/Installed/"+name,options);return this.ajax({type:"POST",url:url})},ApiClient.prototype.restartServer=function(){var url=this.getUrl("System/Restart");return this.ajax({type:"POST",url:url})},ApiClient.prototype.shutdownServer=function(){var url=this.getUrl("System/Shutdown");return this.ajax({type:"POST",url:url})},ApiClient.prototype.getPackageInfo=function(name,guid){if(!name)throw new Error("null name");var options={AssemblyGuid:guid},url=this.getUrl("Packages/"+name,options);return this.getJSON(url)},ApiClient.prototype.getAvailableApplicationUpdate=function(){var url=this.getUrl("Packages/Updates",{PackageType:"System"});return this.getJSON(url)},ApiClient.prototype.getAvailablePluginUpdates=function(){var url=this.getUrl("Packages/Updates",{PackageType:"UserInstalled"});return this.getJSON(url)},ApiClient.prototype.getVirtualFolders=function(){var url="Library/VirtualFolders";return url=this.getUrl(url),this.getJSON(url)},ApiClient.prototype.getPhysicalPaths=function(){var url=this.getUrl("Library/PhysicalPaths");return this.getJSON(url)},ApiClient.prototype.getServerConfiguration=function(){var url=this.getUrl("System/Configuration");return this.getJSON(url)},ApiClient.prototype.getDevicesOptions=function(){var url=this.getUrl("System/Configuration/devices");return this.getJSON(url)},ApiClient.prototype.getContentUploadHistory=function(){var url=this.getUrl("Devices/CameraUploads",{DeviceId:this.deviceId()});return this.getJSON(url)},ApiClient.prototype.getNamedConfiguration=function(name){var url=this.getUrl("System/Configuration/"+name);return this.getJSON(url)},ApiClient.prototype.getScheduledTasks=function(options){options=options||{} +;var url=this.getUrl("ScheduledTasks",options);return this.getJSON(url)},ApiClient.prototype.startScheduledTask=function(id){if(!id)throw new Error("null id");var url=this.getUrl("ScheduledTasks/Running/"+id);return this.ajax({type:"POST",url:url})},ApiClient.prototype.getScheduledTask=function(id){if(!id)throw new Error("null id");var url=this.getUrl("ScheduledTasks/"+id);return this.getJSON(url)},ApiClient.prototype.getNextUpEpisodes=function(options){var url=this.getUrl("Shows/NextUp",options);return this.getJSON(url)},ApiClient.prototype.stopScheduledTask=function(id){if(!id)throw new Error("null id");var url=this.getUrl("ScheduledTasks/Running/"+id);return this.ajax({type:"DELETE",url:url})},ApiClient.prototype.getPluginConfiguration=function(id){if(!id)throw new Error("null Id");var url=this.getUrl("Plugins/"+id+"/Configuration");return this.getJSON(url)},ApiClient.prototype.getAvailablePlugins=function(options){options=options||{},options.PackageType="UserInstalled";var url=this.getUrl("Packages",options);return this.getJSON(url)},ApiClient.prototype.uninstallPlugin=function(id){if(!id)throw new Error("null Id");var url=this.getUrl("Plugins/"+id);return this.ajax({type:"DELETE",url:url})},ApiClient.prototype.removeVirtualFolder=function(name,refreshLibrary){if(!name)throw new Error("null name");var url="Library/VirtualFolders";return url=this.getUrl(url,{refreshLibrary:!!refreshLibrary,name:name}),this.ajax({type:"DELETE",url:url})},ApiClient.prototype.addVirtualFolder=function(name,type,refreshLibrary,libraryOptions){if(!name)throw new Error("null name");var options={};type&&(options.collectionType=type),options.refreshLibrary=!!refreshLibrary,options.name=name;var url="Library/VirtualFolders";return url=this.getUrl(url,options),this.ajax({type:"POST",url:url,data:JSON.stringify({LibraryOptions:libraryOptions}),contentType:"application/json"})},ApiClient.prototype.updateVirtualFolderOptions=function(id,libraryOptions){if(!id)throw new Error("null name");var url="Library/VirtualFolders/LibraryOptions";return url=this.getUrl(url),this.ajax({type:"POST",url:url,data:JSON.stringify({Id:id,LibraryOptions:libraryOptions}),contentType:"application/json"})},ApiClient.prototype.renameVirtualFolder=function(name,newName,refreshLibrary){if(!name)throw new Error("null name");var url="Library/VirtualFolders/Name";return url=this.getUrl(url,{refreshLibrary:!!refreshLibrary,newName:newName,name:name}),this.ajax({type:"POST",url:url})},ApiClient.prototype.addMediaPath=function(virtualFolderName,mediaPath,networkSharePath,refreshLibrary){if(!virtualFolderName)throw new Error("null virtualFolderName");if(!mediaPath)throw new Error("null mediaPath");var url="Library/VirtualFolders/Paths",pathInfo={Path:mediaPath};return networkSharePath&&(pathInfo.NetworkPath=networkSharePath),url=this.getUrl(url,{refreshLibrary:!!refreshLibrary}),this.ajax({type:"POST",url:url,data:JSON.stringify({Name:virtualFolderName,PathInfo:pathInfo}),contentType:"application/json"})},ApiClient.prototype.updateMediaPath=function(virtualFolderName,pathInfo){if(!virtualFolderName)throw new Error("null virtualFolderName");if(!pathInfo)throw new Error("null pathInfo");var url="Library/VirtualFolders/Paths/Update";return url=this.getUrl(url),this.ajax({type:"POST",url:url,data:JSON.stringify({Name:virtualFolderName,PathInfo:pathInfo}),contentType:"application/json"})},ApiClient.prototype.removeMediaPath=function(virtualFolderName,mediaPath,refreshLibrary){if(!virtualFolderName)throw new Error("null virtualFolderName");if(!mediaPath)throw new Error("null mediaPath");var url="Library/VirtualFolders/Paths";return url=this.getUrl(url,{refreshLibrary:!!refreshLibrary,path:mediaPath,name:virtualFolderName}),this.ajax({type:"DELETE",url:url})},ApiClient.prototype.deleteUser=function(id){if(!id)throw new Error("null id");var url=this.getUrl("Users/"+id);return this.ajax({type:"DELETE",url:url})},ApiClient.prototype.deleteUserImage=function(userId,imageType,imageIndex){if(!userId)throw new Error("null userId");if(!imageType)throw new Error("null imageType");var url=this.getUrl("Users/"+userId+"/Images/"+imageType);return null!=imageIndex&&(url+="/"+imageIndex),this.ajax({type:"DELETE",url:url})},ApiClient.prototype.deleteItemImage=function(itemId,imageType,imageIndex){if(!imageType)throw new Error("null imageType");var url=this.getUrl("Items/"+itemId+"/Images");return url+="/"+imageType,null!=imageIndex&&(url+="/"+imageIndex),this.ajax({type:"DELETE",url:url})},ApiClient.prototype.deleteItem=function(itemId){if(!itemId)throw new Error("null itemId");var url=this.getUrl("Items/"+itemId);return this.ajax({type:"DELETE",url:url})},ApiClient.prototype.stopActiveEncodings=function(playSessionId){var options={deviceId:this.deviceId()};playSessionId&&(options.PlaySessionId=playSessionId);var url=this.getUrl("Videos/ActiveEncodings",options);return this.ajax({type:"DELETE",url:url})},ApiClient.prototype.reportCapabilities=function(options){var url=this.getUrl("Sessions/Capabilities/Full");return this.ajax({type:"POST",url:url,data:JSON.stringify(options),contentType:"application/json"})},ApiClient.prototype.updateItemImageIndex=function(itemId,imageType,imageIndex,newIndex){if(!imageType)throw new Error("null imageType");var options={newIndex:newIndex},url=this.getUrl("Items/"+itemId+"/Images/"+imageType+"/"+imageIndex+"/Index",options);return this.ajax({type:"POST",url:url})},ApiClient.prototype.getItemImageInfos=function(itemId){var url=this.getUrl("Items/"+itemId+"/Images");return this.getJSON(url)},ApiClient.prototype.getCriticReviews=function(itemId,options){if(!itemId)throw new Error("null itemId");var url=this.getUrl("Items/"+itemId+"/CriticReviews",options);return this.getJSON(url)},ApiClient.prototype.getItemDownloadUrl=function(itemId){if(!itemId)throw new Error("itemId cannot be empty");var url="Items/"+itemId+"/Download";return this.getUrl(url,{api_key:this.accessToken()})},ApiClient.prototype.getSessions=function(options){var url=this.getUrl("Sessions",options);return this.getJSON(url)},ApiClient.prototype.uploadUserImage=function(userId,imageType,file){if(!userId)throw new Error("null userId");if(!imageType)throw new Error("null imageType");if(!file)throw new Error("File must be an image.");if("image/png"!==file.type&&"image/jpeg"!==file.type&&"image/jpeg"!==file.type)throw new Error("File must be an image.");var instance=this;return new Promise(function(resolve,reject){var reader=new FileReader;reader.onerror=function(){reject()},reader.onabort=function(){reject()},reader.onload=function(e){var data=e.target.result.split(",")[1],url=instance.getUrl("Users/"+userId+"/Images/"+imageType);instance.ajax({type:"POST",url:url,data:data,contentType:"image/"+file.name.substring(file.name.lastIndexOf(".")+1)}).then(resolve,reject)},reader.readAsDataURL(file)})},ApiClient.prototype.uploadItemImage=function(itemId,imageType,file){if(!itemId)throw new Error("null itemId");if(!imageType)throw new Error("null imageType");if(!file)throw new Error("File must be an image.");if("image/png"!==file.type&&"image/jpeg"!==file.type&&"image/jpeg"!==file.type)throw new Error("File must be an image.");var url=this.getUrl("Items/"+itemId+"/Images");url+="/"+imageType;var instance=this;return new Promise(function(resolve,reject){var reader=new FileReader;reader.onerror=function(){reject()},reader.onabort=function(){reject()},reader.onload=function(e){var data=e.target.result.split(",")[1];instance.ajax({type:"POST",url:url,data:data,contentType:"image/"+file.name.substring(file.name.lastIndexOf(".")+1)}).then(resolve,reject)},reader.readAsDataURL(file)})},ApiClient.prototype.getInstalledPlugins=function(){var options={},url=this.getUrl("Plugins",options);return this.getJSON(url)},ApiClient.prototype.getUser=function(id){if(!id)throw new Error("Must supply a userId");var url=this.getUrl("Users/"+id);return this.getJSON(url)},ApiClient.prototype.getStudio=function(name,userId){if(!name)throw new Error("null name");var options={};userId&&(options.userId=userId);var url=this.getUrl("Studios/"+this.encodeName(name),options);return this.getJSON(url)},ApiClient.prototype.getGenre=function(name,userId){if(!name)throw new Error("null name");var options={};userId&&(options.userId=userId);var url=this.getUrl("Genres/"+this.encodeName(name),options);return this.getJSON(url)},ApiClient.prototype.getMusicGenre=function(name,userId){if(!name)throw new Error("null name");var options={};userId&&(options.userId=userId);var url=this.getUrl("MusicGenres/"+this.encodeName(name),options);return this.getJSON(url)},ApiClient.prototype.getGameGenre=function(name,userId){if(!name)throw new Error("null name");var options={};userId&&(options.userId=userId);var url=this.getUrl("GameGenres/"+this.encodeName(name),options);return this.getJSON(url)},ApiClient.prototype.getArtist=function(name,userId){if(!name)throw new Error("null name");var options={};userId&&(options.userId=userId);var url=this.getUrl("Artists/"+this.encodeName(name),options);return this.getJSON(url)},ApiClient.prototype.getPerson=function(name,userId){if(!name)throw new Error("null name");var options={};userId&&(options.userId=userId);var url=this.getUrl("Persons/"+this.encodeName(name),options);return this.getJSON(url)},ApiClient.prototype.getPublicUsers=function(){var url=this.getUrl("users/public");return this.ajax({type:"GET",url:url,dataType:"json"},!1)},ApiClient.prototype.getUsers=function(options){var url=this.getUrl("users",options||{});return this.getJSON(url)},ApiClient.prototype.getParentalRatings=function(){var url=this.getUrl("Localization/ParentalRatings");return this.getJSON(url)},ApiClient.prototype.getDefaultImageQuality=function(imageType){return"backdrop"===imageType.toLowerCase()?80:90},ApiClient.prototype.getUserImageUrl=function(userId,options){if(!userId)throw new Error("null userId");options=options||{};var url="Users/"+userId+"/Images/"+options.type;return null!=options.index&&(url+="/"+options.index),normalizeImageOptions(this,options),delete options.type,delete options.index,this.getUrl(url,options)},ApiClient.prototype.getImageUrl=function(itemId,options){if(!itemId)throw new Error("itemId cannot be empty");options=options||{};var url="Items/"+itemId+"/Images/"+options.type;return null!=options.index&&(url+="/"+options.index),options.quality=options.quality||this.getDefaultImageQuality(options.type),this.normalizeImageOptions&&this.normalizeImageOptions(options),delete options.type,delete options.index,this.getUrl(url,options)},ApiClient.prototype.getScaledImageUrl=function(itemId,options){if(!itemId)throw new Error("itemId cannot be empty");options=options||{};var url="Items/"+itemId+"/Images/"+options.type;return null!=options.index&&(url+="/"+options.index),normalizeImageOptions(this,options),delete options.type,delete options.index,delete options.minScale,this.getUrl(url,options)},ApiClient.prototype.getThumbImageUrl=function(item,options){if(!item)throw new Error("null item");return options=options||{},options.imageType="thumb",item.ImageTags&&item.ImageTags.Thumb?(options.tag=item.ImageTags.Thumb,this.getImageUrl(item.Id,options)):item.ParentThumbItemId?(options.tag=item.ImageTags.ParentThumbImageTag,this.getImageUrl(item.ParentThumbItemId,options)):null},ApiClient.prototype.updateUserPassword=function(userId,currentPassword,newPassword){if(!userId)return Promise.reject();var url=this.getUrl("Users/"+userId+"/Password");return this.ajax({type:"POST",url:url,data:JSON.stringify({CurrentPw:currentPassword||"",NewPw:newPassword}),contentType:"application/json"})},ApiClient.prototype.updateEasyPassword=function(userId,newPassword){if(!userId)return void Promise.reject();var url=this.getUrl("Users/"+userId+"/EasyPassword");return this.ajax({type:"POST",url:url,data:{NewPw:newPassword}})},ApiClient.prototype.resetUserPassword=function(userId){if(!userId)throw new Error("null userId");var url=this.getUrl("Users/"+userId+"/Password"),postData={};return postData.resetPassword=!0,this.ajax({type:"POST",url:url,data:postData})},ApiClient.prototype.resetEasyPassword=function(userId){if(!userId)throw new Error("null userId");var url=this.getUrl("Users/"+userId+"/EasyPassword"),postData={};return postData.resetPassword=!0,this.ajax({type:"POST",url:url,data:postData})},ApiClient.prototype.updateServerConfiguration=function(configuration){if(!configuration)throw new Error("null configuration");var url=this.getUrl("System/Configuration");return this.ajax({type:"POST",url:url,data:JSON.stringify(configuration),contentType:"application/json"})},ApiClient.prototype.updateNamedConfiguration=function(name,configuration){if(!configuration)throw new Error("null configuration");var url=this.getUrl("System/Configuration/"+name);return this.ajax({type:"POST",url:url,data:JSON.stringify(configuration),contentType:"application/json"})},ApiClient.prototype.updateItem=function(item){if(!item)throw new Error("null item");var url=this.getUrl("Items/"+item.Id);return this.ajax({type:"POST",url:url,data:JSON.stringify(item),contentType:"application/json"})},ApiClient.prototype.updatePluginSecurityInfo=function(info){var url=this.getUrl("Plugins/SecurityInfo");return this.ajax({type:"POST",url:url,data:JSON.stringify(info),contentType:"application/json"})},ApiClient.prototype.createUser=function(name){var url=this.getUrl("Users/New");return this.ajax({type:"POST",url:url,data:{Name:name},dataType:"json"})},ApiClient.prototype.updateUser=function(user){if(!user)throw new Error("null user");var url=this.getUrl("Users/"+user.Id);return this.ajax({type:"POST",url:url,data:JSON.stringify(user),contentType:"application/json"})},ApiClient.prototype.updateUserPolicy=function(userId,policy){if(!userId)throw new Error("null userId");if(!policy)throw new Error("null policy");var url=this.getUrl("Users/"+userId+"/Policy");return this.ajax({type:"POST",url:url,data:JSON.stringify(policy),contentType:"application/json"})},ApiClient.prototype.updateUserConfiguration=function(userId,configuration){if(!userId)throw new Error("null userId");if(!configuration)throw new Error("null configuration");var url=this.getUrl("Users/"+userId+"/Configuration");return this.ajax({type:"POST",url:url,data:JSON.stringify(configuration),contentType:"application/json"})},ApiClient.prototype.updateScheduledTaskTriggers=function(id,triggers){if(!id)throw new Error("null id");if(!triggers)throw new Error("null triggers");var url=this.getUrl("ScheduledTasks/"+id+"/Triggers");return this.ajax({type:"POST",url:url,data:JSON.stringify(triggers),contentType:"application/json"})},ApiClient.prototype.updatePluginConfiguration=function(id,configuration){if(!id)throw new Error("null Id");if(!configuration)throw new Error("null configuration");var url=this.getUrl("Plugins/"+id+"/Configuration");return this.ajax({type:"POST",url:url,data:JSON.stringify(configuration),contentType:"application/json"})},ApiClient.prototype.getAncestorItems=function(itemId,userId){if(!itemId)throw new Error("null itemId");var options={};userId&&(options.userId=userId);var url=this.getUrl("Items/"+itemId+"/Ancestors",options);return this.getJSON(url)},ApiClient.prototype.getItems=function(userId,options){var url;return url="string"===(typeof userId).toString().toLowerCase()?this.getUrl("Users/"+userId+"/Items",options):this.getUrl("Items",options),this.getJSON(url)},ApiClient.prototype.getResumableItems=function(userId,options){return this.isMinServerVersion("3.2.33")?this.getJSON(this.getUrl("Users/"+userId+"/Items/Resume",options)):this.getItems(userId,Object.assign({SortBy:"DatePlayed",SortOrder:"Descending",Filters:"IsResumable",Recursive:!0,CollapseBoxSetItems:!1,ExcludeLocationTypes:"Virtual"},options))},ApiClient.prototype.getMovieRecommendations=function(options){return this.getJSON(this.getUrl("Movies/Recommendations",options))},ApiClient.prototype.getUpcomingEpisodes=function(options){return this.getJSON(this.getUrl("Shows/Upcoming",options))},ApiClient.prototype.getUserViews=function(options,userId){options=options||{};var url=this.getUrl("Users/"+(userId||this.getCurrentUserId())+"/Views",options);return this.getJSON(url)},ApiClient.prototype.getArtists=function(userId,options){if(!userId)throw new Error("null userId");options=options||{},options.userId=userId;var url=this.getUrl("Artists",options);return this.getJSON(url)},ApiClient.prototype.getAlbumArtists=function(userId,options){if(!userId)throw new Error("null userId");options=options||{},options.userId=userId;var url=this.getUrl("Artists/AlbumArtists",options);return this.getJSON(url)},ApiClient.prototype.getGenres=function(userId,options){if(!userId)throw new Error("null userId");options=options||{},options.userId=userId;var url=this.getUrl("Genres",options);return this.getJSON(url)},ApiClient.prototype.getMusicGenres=function(userId,options){if(!userId)throw new Error("null userId");options=options||{},options.userId=userId;var url=this.getUrl("MusicGenres",options);return this.getJSON(url)},ApiClient.prototype.getGameGenres=function(userId,options){if(!userId)throw new Error("null userId");options=options||{},options.userId=userId;var url=this.getUrl("GameGenres",options);return this.getJSON(url)},ApiClient.prototype.getPeople=function(userId,options){if(!userId)throw new Error("null userId");options=options||{},options.userId=userId;var url=this.getUrl("Persons",options);return this.getJSON(url)},ApiClient.prototype.getStudios=function(userId,options){if(!userId)throw new Error("null userId");options=options||{},options.userId=userId;var url=this.getUrl("Studios",options);return this.getJSON(url)},ApiClient.prototype.getLocalTrailers=function(userId,itemId){if(!userId)throw new Error("null userId");if(!itemId)throw new Error("null itemId");var url=this.getUrl("Users/"+userId+"/Items/"+itemId+"/LocalTrailers");return this.getJSON(url)},ApiClient.prototype.getGameSystems=function(){var options={},userId=this.getCurrentUserId();userId&&(options.userId=userId);var url=this.getUrl("Games/SystemSummaries",options);return this.getJSON(url)},ApiClient.prototype.getAdditionalVideoParts=function(userId,itemId){if(!itemId)throw new Error("null itemId");var options={};userId&&(options.userId=userId);var url=this.getUrl("Videos/"+itemId+"/AdditionalParts",options);return this.getJSON(url)},ApiClient.prototype.getThemeMedia=function(userId,itemId,inherit){if(!itemId)throw new Error("null itemId");var options={};userId&&(options.userId=userId),options.InheritFromParent=inherit||!1;var url=this.getUrl("Items/"+itemId+"/ThemeMedia",options);return this.getJSON(url)},ApiClient.prototype.getSearchHints=function(options){var url=this.getUrl("Search/Hints",options),serverId=this.serverId();return this.getJSON(url).then(function(result){return result.SearchHints.forEach(function(i){i.ServerId=serverId}),result})},ApiClient.prototype.getSpecialFeatures=function(userId,itemId){if(!userId)throw new Error("null userId");if(!itemId)throw new Error("null itemId");var url=this.getUrl("Users/"+userId+"/Items/"+itemId+"/SpecialFeatures");return this.getJSON(url)},ApiClient.prototype.getDateParamValue=function(date){function formatDigit(i){return i<10?"0"+i:i}var d=date;return""+d.getFullYear()+formatDigit(d.getMonth()+1)+formatDigit(d.getDate())+formatDigit(d.getHours())+formatDigit(d.getMinutes())+formatDigit(d.getSeconds())},ApiClient.prototype.markPlayed=function(userId,itemId,date){if(!userId)throw new Error("null userId");if(!itemId)throw new Error("null itemId");var options={};date&&(options.DatePlayed=this.getDateParamValue(date));var url=this.getUrl("Users/"+userId+"/PlayedItems/"+itemId,options);return this.ajax({type:"POST",url:url,dataType:"json"})},ApiClient.prototype.markUnplayed=function(userId,itemId){if(!userId)throw new Error("null userId");if(!itemId)throw new Error("null itemId");var url=this.getUrl("Users/"+userId+"/PlayedItems/"+itemId);return this.ajax({type:"DELETE",url:url,dataType:"json"})},ApiClient.prototype.updateFavoriteStatus=function(userId,itemId,isFavorite){if(!userId)throw new Error("null userId");if(!itemId)throw new Error("null itemId");var url=this.getUrl("Users/"+userId+"/FavoriteItems/"+itemId),method=isFavorite?"POST":"DELETE";return this.ajax({type:method,url:url,dataType:"json"})},ApiClient.prototype.updateUserItemRating=function(userId,itemId,likes){if(!userId)throw new Error("null userId");if(!itemId)throw new Error("null itemId");var url=this.getUrl("Users/"+userId+"/Items/"+itemId+"/Rating",{likes:likes});return this.ajax({type:"POST",url:url,dataType:"json"})},ApiClient.prototype.getItemCounts=function(userId){var options={};userId&&(options.userId=userId);var url=this.getUrl("Items/Counts",options);return this.getJSON(url)},ApiClient.prototype.clearUserItemRating=function(userId,itemId){if(!userId)throw new Error("null userId");if(!itemId)throw new Error("null itemId");var url=this.getUrl("Users/"+userId+"/Items/"+itemId+"/Rating");return this.ajax({type:"DELETE",url:url,dataType:"json"})},ApiClient.prototype.reportPlaybackStart=function(options){if(!options)throw new Error("null options");this.lastPlaybackProgressReport=0,this.lastPlaybackProgressReportTicks=null,stopBitrateDetection(this);var url=this.getUrl("Sessions/Playing");return this.ajax({type:"POST",data:JSON.stringify(options),contentType:"application/json",url:url})},ApiClient.prototype.reportPlaybackProgress=function(options){if(!options)throw new Error("null options");var newPositionTicks=options.PositionTicks;if("timeupdate"===(options.EventName||"timeupdate")){var now=(new Date).getTime(),msSinceLastReport=now-(this.lastPlaybackProgressReport||0);if(msSinceLastReport<=1e4){if(!newPositionTicks)return Promise.resolve();var expectedReportTicks=1e4*msSinceLastReport+(this.lastPlaybackProgressReportTicks||0);if(Math.abs((newPositionTicks||0)-expectedReportTicks)<5e7)return Promise.resolve()}this.lastPlaybackProgressReport=now}else this.lastPlaybackProgressReport=0;this.lastPlaybackProgressReportTicks=newPositionTicks;var url=this.getUrl("Sessions/Playing/Progress");return this.ajax({type:"POST",data:JSON.stringify(options),contentType:"application/json",url:url})},ApiClient.prototype.reportOfflineActions=function(actions){if(!actions)throw new Error("null actions");var url=this.getUrl("Sync/OfflineActions");return this.ajax({type:"POST",data:JSON.stringify(actions),contentType:"application/json",url:url})},ApiClient.prototype.syncData=function(data){if(!data)throw new Error("null data");var url=this.getUrl("Sync/Data");return this.ajax({type:"POST",data:JSON.stringify(data),contentType:"application/json",url:url,dataType:"json"})},ApiClient.prototype.getReadySyncItems=function(deviceId){if(!deviceId)throw new Error("null deviceId");var url=this.getUrl("Sync/Items/Ready",{TargetId:deviceId});return this.getJSON(url)},ApiClient.prototype.reportSyncJobItemTransferred=function(syncJobItemId){if(!syncJobItemId)throw new Error("null syncJobItemId");var url=this.getUrl("Sync/JobItems/"+syncJobItemId+"/Transferred");return this.ajax({type:"POST",url:url})},ApiClient.prototype.cancelSyncItems=function(itemIds,targetId){if(!itemIds)throw new Error("null itemIds");var url=this.getUrl("Sync/"+(targetId||this.deviceId())+"/Items",{ItemIds:itemIds.join(",")});return this.ajax({type:"DELETE",url:url})},ApiClient.prototype.reportPlaybackStopped=function(options){if(!options)throw new Error("null options");this.lastPlaybackProgressReport=0,this.lastPlaybackProgressReportTicks=null,redetectBitrate(this);var url=this.getUrl("Sessions/Playing/Stopped");return this.ajax({type:"POST",data:JSON.stringify(options),contentType:"application/json",url:url})},ApiClient.prototype.sendPlayCommand=function(sessionId,options){if(!sessionId)throw new Error("null sessionId");if(!options)throw new Error("null options");var url=this.getUrl("Sessions/"+sessionId+"/Playing",options);return this.ajax({type:"POST",url:url})},ApiClient.prototype.sendCommand=function(sessionId,command){if(!sessionId)throw new Error("null sessionId");if(!command)throw new Error("null command");var url=this.getUrl("Sessions/"+sessionId+"/Command"),ajaxOptions={type:"POST",url:url};return ajaxOptions.data=JSON.stringify(command),ajaxOptions.contentType="application/json",this.ajax(ajaxOptions)},ApiClient.prototype.sendMessageCommand=function(sessionId,options){if(!sessionId)throw new Error("null sessionId");if(!options)throw new Error("null options");var url=this.getUrl("Sessions/"+sessionId+"/Message"),ajaxOptions={type:"POST",url:url};return ajaxOptions.data=JSON.stringify(options),ajaxOptions.contentType="application/json",this.ajax(ajaxOptions)},ApiClient.prototype.sendPlayStateCommand=function(sessionId,command,options){if(!sessionId)throw new Error("null sessionId");if(!command)throw new Error("null command");var url=this.getUrl("Sessions/"+sessionId+"/Playing/"+command,options||{});return this.ajax({type:"POST",url:url})},ApiClient.prototype.createPackageReview=function(review){var url=this.getUrl("Packages/Reviews/"+review.id,review);return this.ajax({type:"POST",url:url})},ApiClient.prototype.getPackageReviews=function(packageId,minRating,maxRating,limit){if(!packageId)throw new Error("null packageId");var options={};minRating&&(options.MinRating=minRating),maxRating&&(options.MaxRating=maxRating),limit&&(options.Limit=limit);var url=this.getUrl("Packages/"+packageId+"/Reviews",options);return this.getJSON(url)},ApiClient.prototype.getSavedEndpointInfo=function(){return this._endPointInfo},ApiClient.prototype.getEndpointInfo=function(){var savedValue=this._endPointInfo;if(savedValue)return Promise.resolve(savedValue);var instance=this;return this.getJSON(this.getUrl("System/Endpoint")).then(function(endPointInfo){return setSavedEndpointInfo(instance,endPointInfo),endPointInfo})},ApiClient.prototype.getWakeOnLanInfo=function(){return this.getJSON(this.getUrl("System/WakeOnLanInfo"))},ApiClient.prototype.getLatestItems=function(options){return options=options||{},this.getJSON(this.getUrl("Users/"+this.getCurrentUserId()+"/Items/Latest",options))},ApiClient.prototype.getFilters=function(options){return this.getJSON(this.getUrl("Items/Filters2",options))},ApiClient.prototype.supportsWakeOnLan=function(){return!!wakeOnLan.isSupported()&&getCachedWakeOnLanInfo(this).length>0},ApiClient.prototype.wakeOnLan=function(){var infos=getCachedWakeOnLanInfo(this);return new Promise(function(resolve,reject){sendNextWakeOnLan(infos,0,resolve)})},ApiClient.prototype.setSystemInfo=function(info){this._serverVersion=info.Version},ApiClient.prototype.serverVersion=function(){return this._serverVersion},ApiClient.prototype.isMinServerVersion=function(version){var serverVersion=this.serverVersion();return!!serverVersion&&compareVersions(serverVersion,version)>=0},ApiClient.prototype.handleMessageReceived=function(msg){onMessageReceivedInternal(this,msg)},ApiClient}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-apiclient/apiclientex.js b/dashboard-ui/bower_components/emby-apiclient/apiclientex.js index 35e31fbab0..1bab61b0b9 100644 --- a/dashboard-ui/bower_components/emby-apiclient/apiclientex.js +++ b/dashboard-ui/bower_components/emby-apiclient/apiclientex.js @@ -1 +1 @@ -define(["apiclientcore","localassetmanager"],function(ApiClient,localassetmanager){"use strict";function isLocalId(str){return startsWith(str,localPrefix)}function isLocalViewId(str){return startsWith(str,localViewPrefix)}function isTopLevelLocalViewId(str){return"localview"===str}function stripLocalPrefix(str){var res=stripStart(str,localPrefix);return res=stripStart(res,localViewPrefix)}function startsWith(str,find){return!!(str&&find&&str.length>find.length&&0===str.indexOf(find))}function stripStart(str,find){return startsWith(str,find)?str.substr(find.length):str}function createEmptyList(){var result={Items:[],TotalRecordCount:0};return result}function convertGuidToLocal(guid){return guid?isLocalId(guid)?guid:"local:"+guid:null}function adjustGuidProperties(downloadedItem){downloadedItem.Id=convertGuidToLocal(downloadedItem.Id),downloadedItem.SeriesId=convertGuidToLocal(downloadedItem.SeriesId),downloadedItem.SeasonId=convertGuidToLocal(downloadedItem.SeasonId),downloadedItem.AlbumId=convertGuidToLocal(downloadedItem.AlbumId),downloadedItem.ParentId=convertGuidToLocal(downloadedItem.ParentId),downloadedItem.ParentThumbItemId=convertGuidToLocal(downloadedItem.ParentThumbItemId),downloadedItem.ParentPrimaryImageItemId=convertGuidToLocal(downloadedItem.ParentPrimaryImageItemId),downloadedItem.PrimaryImageItemId=convertGuidToLocal(downloadedItem.PrimaryImageItemId),downloadedItem.ParentLogoItemId=convertGuidToLocal(downloadedItem.ParentLogoItemId),downloadedItem.ParentBackdropItemId=convertGuidToLocal(downloadedItem.ParentBackdropItemId),downloadedItem.ParentBackdropImageTags=null}function getLocalView(instance,serverId,userId){return instance.getLocalFolders(serverId,userId).then(function(views){var localView=null;return views.length>0&&(localView={Name:instance.downloadsTitleText||"Downloads",ServerId:serverId,Id:"localview",Type:"localview",IsFolder:!0}),Promise.resolve(localView)})}function ApiClientEx(serverAddress,clientName,applicationVersion,deviceName,deviceId,devicePixelRatio){ApiClient.call(this,serverAddress,clientName,applicationVersion,deviceName,deviceId,devicePixelRatio)}var localPrefix="local:",localViewPrefix="localview:";return Object.assign(ApiClientEx.prototype,ApiClient.prototype),ApiClientEx.prototype.getPlaybackInfo=function(itemId,options,deviceProfile){var onFailure=function(){return ApiClient.prototype.getPlaybackInfo.call(instance,itemId,options,deviceProfile)};if(isLocalId(itemId))return localassetmanager.getLocalItem(this.serverId(),stripLocalPrefix(itemId)).then(function(item){var mediaSources=item.Item.MediaSources.map(function(m){return m.SupportsDirectPlay=!0,m.SupportsDirectStream=!1,m.SupportsTranscoding=!1,m.IsLocal=!0,m});return{MediaSources:mediaSources}},onFailure);var instance=this;return localassetmanager.getLocalItem(this.serverId(),itemId).then(function(item){if(item){var mediaSources=item.Item.MediaSources.map(function(m){return m.SupportsDirectPlay=!0,m.SupportsDirectStream=!1,m.SupportsTranscoding=!1,m.IsLocal=!0,m});return localassetmanager.fileExists(item.LocalPath).then(function(exists){if(exists){var res={MediaSources:mediaSources};return Promise.resolve(res)}return ApiClient.prototype.getPlaybackInfo.call(instance,itemId,options,deviceProfile)},onFailure)}return ApiClient.prototype.getPlaybackInfo.call(instance,itemId,options,deviceProfile)},onFailure)},ApiClientEx.prototype.getItems=function(userId,options){var i,serverInfo=this.serverInfo();if(serverInfo&&"localview"===options.ParentId)return this.getLocalFolders(serverInfo.Id,userId).then(function(items){var result={Items:items,TotalRecordCount:items.length};return Promise.resolve(result)});if(serverInfo&&options&&(isLocalId(options.ParentId)||isLocalId(options.SeriesId)||isLocalId(options.SeasonId)||isLocalViewId(options.ParentId)))return localassetmanager.getViewItems(serverInfo.Id,userId,options).then(function(items){items.forEach(function(item){adjustGuidProperties(item)}),items.sort(function(a,b){return a.SortName.toLowerCase().localeCompare(b.SortName.toLowerCase())});var result={Items:items,TotalRecordCount:items.length};return Promise.resolve(result)});if(options&&options.ExcludeItemIds&&options.ExcludeItemIds.length){var exItems=options.ExcludeItemIds.split(",");for(i=0;i0?Promise.resolve(views[0]):Promise.reject()}):isLocalId(itemId)&&(serverInfo=this.serverInfo())?localassetmanager.getLocalItem(serverInfo.Id,stripLocalPrefix(itemId)).then(function(item){return adjustGuidProperties(item.Item),Promise.resolve(item.Item)}):ApiClient.prototype.getItem.call(this,userId,itemId)},ApiClientEx.prototype.getLocalFolders=function(userId){var serverInfo=this.serverInfo();return userId=userId||serverInfo.UserId,localassetmanager.getViews(serverInfo.Id,userId)},ApiClientEx.prototype.getNextUpEpisodes=function(options){return options.SeriesId&&isLocalId(options.SeriesId)?Promise.resolve(createEmptyList()):ApiClient.prototype.getNextUpEpisodes.call(this,options)},ApiClientEx.prototype.getSeasons=function(itemId,options){return isLocalId(itemId)?(options.SeriesId=itemId,options.IncludeItemTypes="Season",this.getItems(this.getCurrentUserId(),options)):ApiClient.prototype.getSeasons.call(this,itemId,options)},ApiClientEx.prototype.getEpisodes=function(itemId,options){return isLocalId(options.SeasonId)||isLocalId(options.seasonId)?(options.SeriesId=itemId,options.IncludeItemTypes="Episode",this.getItems(this.getCurrentUserId(),options)):isLocalId(itemId)?(options.SeriesId=itemId,options.IncludeItemTypes="Episode",this.getItems(this.getCurrentUserId(),options)):ApiClient.prototype.getEpisodes.call(this,itemId,options)},ApiClientEx.prototype.getLatestOfflineItems=function(options){options.SortBy="DateCreated",options.SortOrder="Descending";var serverInfo=this.serverInfo();return serverInfo?localassetmanager.getViewItems(serverInfo.Id,null,options).then(function(items){return items.forEach(function(item){adjustGuidProperties(item)}),Promise.resolve(items)}):Promise.resolve([])},ApiClientEx.prototype.getThemeMedia=function(userId,itemId,inherit){return isLocalViewId(itemId)||isLocalId(itemId)||isTopLevelLocalViewId(itemId)?Promise.reject():ApiClient.prototype.getThemeMedia.call(this,userId,itemId,inherit)},ApiClientEx.prototype.getSpecialFeatures=function(userId,itemId){return isLocalId(itemId)?Promise.resolve([]):ApiClient.prototype.getSpecialFeatures.call(this,userId,itemId)},ApiClientEx.prototype.getSimilarItems=function(itemId,options){return isLocalId(itemId)?Promise.resolve(createEmptyList()):ApiClient.prototype.getSimilarItems.call(this,itemId,options)},ApiClientEx.prototype.updateFavoriteStatus=function(userId,itemId,isFavorite){return isLocalId(itemId)?Promise.resolve():ApiClient.prototype.updateFavoriteStatus.call(this,userId,itemId,isFavorite)},ApiClientEx.prototype.getScaledImageUrl=function(itemId,options){if(isLocalId(itemId)||options&&options.itemid&&isLocalId(options.itemid)){var serverInfo=this.serverInfo(),id=stripLocalPrefix(itemId);return localassetmanager.getImageUrl(serverInfo.Id,id,options)}return ApiClient.prototype.getScaledImageUrl.call(this,itemId,options)},ApiClientEx.prototype.reportPlaybackStart=function(options){if(!options)throw new Error("null options");return isLocalId(options.ItemId)?Promise.resolve():ApiClient.prototype.reportPlaybackStart.call(this,options)},ApiClientEx.prototype.reportPlaybackProgress=function(options){if(!options)throw new Error("null options");if(isLocalId(options.ItemId)){var serverInfo=this.serverInfo();return serverInfo?localassetmanager.getLocalItem(serverInfo.Id,stripLocalPrefix(options.ItemId)).then(function(item){var libraryItem=item.Item;return libraryItem.UserData=libraryItem.UserData||{},libraryItem.UserData.PlaybackPositionTicks=options.PositionTicks,libraryItem.UserData.PlayedPercentage=Math.min(libraryItem.RunTimeTicks?100*((options.PositionTicks||0)/libraryItem.RunTimeTicks):0,100),localassetmanager.addOrUpdateLocalItem(item)}):Promise.resolve()}return ApiClient.prototype.reportPlaybackProgress.call(this,options)},ApiClientEx.prototype.reportPlaybackStopped=function(options){if(!options)throw new Error("null options");if(isLocalId(options.ItemId)){var serverInfo=this.serverInfo(),action={Date:(new Date).getTime(),ItemId:stripLocalPrefix(options.ItemId),PositionTicks:options.PositionTicks,ServerId:serverInfo.Id,Type:0,UserId:this.getCurrentUserId()};return localassetmanager.recordUserAction(action)}return ApiClient.prototype.reportPlaybackStopped.call(this,options)},ApiClientEx.prototype.getIntros=function(itemId){return isLocalId(itemId)?Promise.resolve({Items:[],TotalRecordCount:0}):ApiClient.prototype.getIntros.call(this,itemId)},ApiClientEx.prototype.getInstantMixFromItem=function(itemId,options){return isLocalId(itemId)?Promise.resolve({Items:[],TotalRecordCount:0}):ApiClient.prototype.getInstantMixFromItem.call(this,itemId,options)},ApiClientEx.prototype.getItemDownloadUrl=function(itemId){if(isLocalId(itemId)){var serverInfo=this.serverInfo();if(serverInfo)return localassetmanager.getLocalItem(serverInfo.Id,stripLocalPrefix(itemId)).then(function(item){return Promise.resolve(item.LocalPath)})}return ApiClient.prototype.getItemDownloadUrl.call(this,itemId)},ApiClientEx}); \ No newline at end of file +define(["apiclientcore","localassetmanager"],function(ApiClient,localassetmanager){"use strict";function isLocalId(str){return startsWith(str,localPrefix)}function isLocalViewId(str){return startsWith(str,localViewPrefix)}function isTopLevelLocalViewId(str){return"localview"===str}function stripLocalPrefix(str){var res=stripStart(str,localPrefix);return res=stripStart(res,localViewPrefix)}function startsWith(str,find){return!!(str&&find&&str.length>find.length&&0===str.indexOf(find))}function stripStart(str,find){return startsWith(str,find)?str.substr(find.length):str}function createEmptyList(){return{Items:[],TotalRecordCount:0}}function convertGuidToLocal(guid){return guid?isLocalId(guid)?guid:"local:"+guid:null}function adjustGuidProperties(downloadedItem){downloadedItem.Id=convertGuidToLocal(downloadedItem.Id),downloadedItem.SeriesId=convertGuidToLocal(downloadedItem.SeriesId),downloadedItem.SeasonId=convertGuidToLocal(downloadedItem.SeasonId),downloadedItem.AlbumId=convertGuidToLocal(downloadedItem.AlbumId),downloadedItem.ParentId=convertGuidToLocal(downloadedItem.ParentId),downloadedItem.ParentThumbItemId=convertGuidToLocal(downloadedItem.ParentThumbItemId),downloadedItem.ParentPrimaryImageItemId=convertGuidToLocal(downloadedItem.ParentPrimaryImageItemId),downloadedItem.PrimaryImageItemId=convertGuidToLocal(downloadedItem.PrimaryImageItemId),downloadedItem.ParentLogoItemId=convertGuidToLocal(downloadedItem.ParentLogoItemId),downloadedItem.ParentBackdropItemId=convertGuidToLocal(downloadedItem.ParentBackdropItemId),downloadedItem.ParentBackdropImageTags=null}function getLocalView(instance,serverId,userId){return instance.getLocalFolders(serverId,userId).then(function(views){var localView=null;return views.length>0&&(localView={Name:instance.downloadsTitleText||"Downloads",ServerId:serverId,Id:"localview",Type:"localview",IsFolder:!0}),Promise.resolve(localView)})}function ApiClientEx(serverAddress,clientName,applicationVersion,deviceName,deviceId,devicePixelRatio){ApiClient.call(this,serverAddress,clientName,applicationVersion,deviceName,deviceId,devicePixelRatio)}var localPrefix="local:",localViewPrefix="localview:";return Object.assign(ApiClientEx.prototype,ApiClient.prototype),ApiClientEx.prototype.getPlaybackInfo=function(itemId,options,deviceProfile){var onFailure=function(){return ApiClient.prototype.getPlaybackInfo.call(instance,itemId,options,deviceProfile)};if(isLocalId(itemId))return localassetmanager.getLocalItem(this.serverId(),stripLocalPrefix(itemId)).then(function(item){return{MediaSources:item.Item.MediaSources.map(function(m){return m.SupportsDirectPlay=!0,m.SupportsDirectStream=!1,m.SupportsTranscoding=!1,m.IsLocal=!0,m})}},onFailure);var instance=this;return localassetmanager.getLocalItem(this.serverId(),itemId).then(function(item){if(item){var mediaSources=item.Item.MediaSources.map(function(m){return m.SupportsDirectPlay=!0,m.SupportsDirectStream=!1,m.SupportsTranscoding=!1,m.IsLocal=!0,m});return localassetmanager.fileExists(item.LocalPath).then(function(exists){if(exists){var res={MediaSources:mediaSources};return Promise.resolve(res)}return ApiClient.prototype.getPlaybackInfo.call(instance,itemId,options,deviceProfile)},onFailure)}return ApiClient.prototype.getPlaybackInfo.call(instance,itemId,options,deviceProfile)},onFailure)},ApiClientEx.prototype.getItems=function(userId,options){var i,serverInfo=this.serverInfo();if(serverInfo&&"localview"===options.ParentId)return this.getLocalFolders(serverInfo.Id,userId).then(function(items){var result={Items:items,TotalRecordCount:items.length};return Promise.resolve(result)});if(serverInfo&&options&&(isLocalId(options.ParentId)||isLocalId(options.SeriesId)||isLocalId(options.SeasonId)||isLocalViewId(options.ParentId)||isLocalId(options.AlbumIds)))return localassetmanager.getViewItems(serverInfo.Id,userId,options).then(function(items){items.forEach(function(item){adjustGuidProperties(item)});var result={Items:items,TotalRecordCount:items.length};return Promise.resolve(result)});if(options&&options.ExcludeItemIds&&options.ExcludeItemIds.length){var exItems=options.ExcludeItemIds.split(",");for(i=0;i0?Promise.resolve(views[0]):Promise.reject()}):isLocalId(itemId)&&(serverInfo=this.serverInfo())?localassetmanager.getLocalItem(serverInfo.Id,stripLocalPrefix(itemId)).then(function(item){return adjustGuidProperties(item.Item),Promise.resolve(item.Item)}):ApiClient.prototype.getItem.call(this,userId,itemId)},ApiClientEx.prototype.getLocalFolders=function(userId){var serverInfo=this.serverInfo();return userId=userId||serverInfo.UserId,localassetmanager.getViews(serverInfo.Id,userId)},ApiClientEx.prototype.getNextUpEpisodes=function(options){return options.SeriesId&&isLocalId(options.SeriesId)?Promise.resolve(createEmptyList()):ApiClient.prototype.getNextUpEpisodes.call(this,options)},ApiClientEx.prototype.getSeasons=function(itemId,options){return isLocalId(itemId)?(options.SeriesId=itemId,options.IncludeItemTypes="Season",options.SortBy="SortName",this.getItems(this.getCurrentUserId(),options)):ApiClient.prototype.getSeasons.call(this,itemId,options)},ApiClientEx.prototype.getEpisodes=function(itemId,options){return isLocalId(options.SeasonId)||isLocalId(options.seasonId)?(options.SeriesId=itemId,options.IncludeItemTypes="Episode",options.SortBy="SortName",this.getItems(this.getCurrentUserId(),options)):isLocalId(itemId)?(options.SeriesId=itemId,options.IncludeItemTypes="Episode",options.SortBy="SortName",this.getItems(this.getCurrentUserId(),options)):ApiClient.prototype.getEpisodes.call(this,itemId,options)},ApiClientEx.prototype.getLatestOfflineItems=function(options){options.SortBy="DateCreated",options.SortOrder="Descending";var serverInfo=this.serverInfo();return serverInfo?localassetmanager.getViewItems(serverInfo.Id,null,options).then(function(items){return items.forEach(function(item){adjustGuidProperties(item)}),Promise.resolve(items)}):Promise.resolve([])},ApiClientEx.prototype.getThemeMedia=function(userId,itemId,inherit){return isLocalViewId(itemId)||isLocalId(itemId)||isTopLevelLocalViewId(itemId)?Promise.reject():ApiClient.prototype.getThemeMedia.call(this,userId,itemId,inherit)},ApiClientEx.prototype.getSpecialFeatures=function(userId,itemId){return isLocalId(itemId)?Promise.resolve([]):ApiClient.prototype.getSpecialFeatures.call(this,userId,itemId)},ApiClientEx.prototype.getSimilarItems=function(itemId,options){return isLocalId(itemId)?Promise.resolve(createEmptyList()):ApiClient.prototype.getSimilarItems.call(this,itemId,options)},ApiClientEx.prototype.updateFavoriteStatus=function(userId,itemId,isFavorite){return isLocalId(itemId)?Promise.resolve():ApiClient.prototype.updateFavoriteStatus.call(this,userId,itemId,isFavorite)},ApiClientEx.prototype.getScaledImageUrl=function(itemId,options){if(isLocalId(itemId)||options&&options.itemid&&isLocalId(options.itemid)){var serverInfo=this.serverInfo(),id=stripLocalPrefix(itemId);return localassetmanager.getImageUrl(serverInfo.Id,id,options)}return ApiClient.prototype.getScaledImageUrl.call(this,itemId,options)},ApiClientEx.prototype.reportPlaybackStart=function(options){if(!options)throw new Error("null options");return isLocalId(options.ItemId)?Promise.resolve():ApiClient.prototype.reportPlaybackStart.call(this,options)},ApiClientEx.prototype.reportPlaybackProgress=function(options){if(!options)throw new Error("null options");if(isLocalId(options.ItemId)){var serverInfo=this.serverInfo();return serverInfo?localassetmanager.getLocalItem(serverInfo.Id,stripLocalPrefix(options.ItemId)).then(function(item){var libraryItem=item.Item;return"Video"===libraryItem.MediaType||"AudioBook"===libraryItem.Type?(libraryItem.UserData=libraryItem.UserData||{},libraryItem.UserData.PlaybackPositionTicks=options.PositionTicks,libraryItem.UserData.PlayedPercentage=Math.min(libraryItem.RunTimeTicks?(options.PositionTicks||0)/libraryItem.RunTimeTicks*100:0,100),localassetmanager.addOrUpdateLocalItem(item)):Promise.resolve()}):Promise.resolve()}return ApiClient.prototype.reportPlaybackProgress.call(this,options)},ApiClientEx.prototype.reportPlaybackStopped=function(options){if(!options)throw new Error("null options");if(isLocalId(options.ItemId)){var serverInfo=this.serverInfo(),action={Date:(new Date).getTime(),ItemId:stripLocalPrefix(options.ItemId),PositionTicks:options.PositionTicks,ServerId:serverInfo.Id,Type:0,UserId:this.getCurrentUserId()};return localassetmanager.recordUserAction(action)}return ApiClient.prototype.reportPlaybackStopped.call(this,options)},ApiClientEx.prototype.getIntros=function(itemId){return isLocalId(itemId)?Promise.resolve({Items:[],TotalRecordCount:0}):ApiClient.prototype.getIntros.call(this,itemId)},ApiClientEx.prototype.getInstantMixFromItem=function(itemId,options){return isLocalId(itemId)?Promise.resolve({Items:[],TotalRecordCount:0}):ApiClient.prototype.getInstantMixFromItem.call(this,itemId,options)},ApiClientEx.prototype.getItemDownloadUrl=function(itemId){if(isLocalId(itemId)){var serverInfo=this.serverInfo();if(serverInfo)return localassetmanager.getLocalItem(serverInfo.Id,stripLocalPrefix(itemId)).then(function(item){return Promise.resolve(item.LocalPath)})}return ApiClient.prototype.getItemDownloadUrl.call(this,itemId)},ApiClientEx}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-apiclient/appstorage-cache.js b/dashboard-ui/bower_components/emby-apiclient/appstorage-cache.js index 73711b3125..bbad4e1ffe 100644 --- a/dashboard-ui/bower_components/emby-apiclient/appstorage-cache.js +++ b/dashboard-ui/bower_components/emby-apiclient/appstorage-cache.js @@ -1 +1 @@ -define([],function(){"use strict";function MyStore(){}function updateCache(instance){instance.cache.put("data",new Response(JSON.stringify(instance.localData)))}return MyStore.prototype.init=function(){var instance=this;return caches.open("embydata").then(function(result){instance.cache=result,instance.localData={}})},MyStore.prototype.setItem=function(name,value){if(this.localData){var changed=this.localData[name]!==value;changed&&(this.localData[name]=value,updateCache(this))}},MyStore.prototype.getItem=function(name){if(this.localData)return this.localData[name]},MyStore.prototype.removeItem=function(name){this.localData&&(this.localData[name]=null,delete this.localData[name],updateCache(this))},new MyStore}); \ No newline at end of file +define([],function(){"use strict";function MyStore(){}function updateCache(instance){instance.cache.put("data",new Response(JSON.stringify(instance.localData)))}return MyStore.prototype.init=function(){var instance=this;return caches.open("embydata").then(function(result){instance.cache=result,instance.localData={}})},MyStore.prototype.setItem=function(name,value){if(this.localData){this.localData[name]!==value&&(this.localData[name]=value,updateCache(this))}},MyStore.prototype.getItem=function(name){if(this.localData)return this.localData[name]},MyStore.prototype.removeItem=function(name){this.localData&&(this.localData[name]=null,delete this.localData[name],updateCache(this))},new MyStore}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-apiclient/appstorage-localstorage.js b/dashboard-ui/bower_components/emby-apiclient/appstorage-localstorage.js index daf431aa63..5f23b2bb6e 100644 --- a/dashboard-ui/bower_components/emby-apiclient/appstorage-localstorage.js +++ b/dashboard-ui/bower_components/emby-apiclient/appstorage-localstorage.js @@ -1 +1 @@ -define([],function(){"use strict";function onCachePutFail(e){console.log(e)}function updateCache(instance){var cache=instance.cache;cache&&cache.put("data",new Response(JSON.stringify(instance.localData))).catch(onCachePutFail)}function onCacheOpened(result){this.cache=result,this.localData={}}function MyStore(){try{self.caches&&caches.open("embydata").then(onCacheOpened.bind(this))}catch(err){console.log("Error opening cache: "+err)}}return MyStore.prototype.setItem=function(name,value){localStorage.setItem(name,value);var localData=this.localData;if(localData){var changed=localData[name]!==value;changed&&(localData[name]=value,updateCache(this))}},MyStore.prototype.getItem=function(name){return localStorage.getItem(name)},MyStore.prototype.removeItem=function(name){localStorage.removeItem(name);var localData=this.localData;localData&&(localData[name]=null,delete localData[name],updateCache(this))},new MyStore}); \ No newline at end of file +define([],function(){"use strict";function onCachePutFail(e){console.log(e)}function updateCache(instance){var cache=instance.cache;cache&&cache.put("data",new Response(JSON.stringify(instance.localData))).catch(onCachePutFail)}function onCacheOpened(result){this.cache=result,this.localData={}}function MyStore(){try{self.caches&&caches.open("embydata").then(onCacheOpened.bind(this))}catch(err){console.log("Error opening cache: "+err)}}return MyStore.prototype.setItem=function(name,value){localStorage.setItem(name,value);var localData=this.localData;if(localData){localData[name]!==value&&(localData[name]=value,updateCache(this))}},MyStore.prototype.getItem=function(name){return localStorage.getItem(name)},MyStore.prototype.removeItem=function(name){localStorage.removeItem(name);var localData=this.localData;localData&&(localData[name]=null,delete localData[name],updateCache(this))},new MyStore}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js b/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js index 8f607049d2..bfdf721bc2 100644 --- a/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js +++ b/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js @@ -1 +1 @@ -define(["events","apiclient","appStorage"],function(events,apiClientFactory,appStorage){"use strict";function paramsToString(params){var values=[];for(var key in params){var value=params[key];null!==value&&void 0!==value&&""!==value&&values.push(encodeURIComponent(key)+"="+encodeURIComponent(value))}return values.join("&")}function resolveFailure(instance,resolve){resolve({State:ConnectionState.Unavailable,ConnectUser:instance.connectUser()})}function mergeServers(credentialProvider,list1,list2){for(var i=0,length=list2.length;ibVal)return 1}return 0}var defaultTimeout=2e4,ConnectionState={Unavailable:0,ServerSelection:1,ServerSignIn:2,SignedIn:3,ConnectSignIn:4,ServerUpdateNeeded:5},ConnectionMode={Local:0,Remote:1,Manual:2},ServerInfo={getServerAddress:function(server,mode){switch(mode){case ConnectionMode.Local:return server.LocalAddress;case ConnectionMode.Manual:return server.ManualAddress;case ConnectionMode.Remote:return server.RemoteAddress;default:return server.ManualAddress||server.LocalAddress||server.RemoteAddress}}},ConnectionManager=function(credentialProvider,appName,appVersion,deviceName,deviceId,capabilities,devicePixelRatio){function onConnectUserSignIn(user){appStorage.removeItem("lastLocalServerId"),connectUser=user,events.trigger(self,"connectusersignedin",[user])}function onAuthenticated(apiClient,result,options,saveCredentials){var credentials=credentialProvider.credentials(),servers=credentials.Servers.filter(function(s){return s.Id===result.ServerId}),server=servers.length?servers[0]:apiClient.serverInfo();return options.updateDateLastAccessed!==!1&&(server.DateLastAccessed=(new Date).getTime()),server.Id=result.ServerId,saveCredentials?(server.UserId=result.User.Id,server.AccessToken=result.AccessToken):(server.UserId=null,server.AccessToken=null),credentialProvider.addOrUpdateServer(credentials.Servers,server),credentialProvider.credentials(credentials),apiClient.serverInfo(server),afterConnected(apiClient,options),onLocalUserSignIn(server,server.LastConnectionMode,result.User)}function afterConnected(apiClient,options){options=options||{},options.reportCapabilities!==!1&&apiClient.reportCapabilities(capabilities),apiClient.enableAutomaticBitrateDetection=options.enableAutomaticBitrateDetection,options.enableWebSocket!==!1&&(console.log("calling apiClient.ensureWebSocket"),apiClient.ensureWebSocket())}function onLocalUserSignIn(server,connectionMode,user){self.connectUserId()?appStorage.removeItem("lastLocalServerId"):appStorage.setItem("lastLocalServerId",server.Id),self._getOrAddApiClient(server,connectionMode);var promise=self.onLocalUserSignedIn?self.onLocalUserSignedIn.call(self,user):Promise.resolve();return promise.then(function(){events.trigger(self,"localusersignedin",[user])})}function ensureConnectUser(credentials){return connectUser&&connectUser.Id===credentials.ConnectUserId?Promise.resolve():credentials.ConnectUserId&&credentials.ConnectAccessToken?(connectUser=null,getConnectUser(credentials.ConnectUserId,credentials.ConnectAccessToken).then(function(user){return onConnectUserSignIn(user),Promise.resolve()},function(){return Promise.resolve()})):Promise.resolve()}function getConnectUser(userId,accessToken){if(!userId)throw new Error("null userId");if(!accessToken)throw new Error("null accessToken");var url="https://connect.emby.media/service/user?id="+userId;return ajax({type:"GET",url:url,dataType:"json",headers:{"X-Application":appName+"/"+appVersion,"X-Connect-UserToken":accessToken}})}function addAuthenticationInfoFromConnect(server,connectionMode,credentials){if(!server.ExchangeToken)throw new Error("server.ExchangeToken cannot be null");if(!credentials.ConnectUserId)throw new Error("credentials.ConnectUserId cannot be null");var url=ServerInfo.getServerAddress(server,connectionMode);url=getEmbyServerUrl(url,"Connect/Exchange?format=json&ConnectUserId="+credentials.ConnectUserId);var auth='MediaBrowser Client="'+appName+'", Device="'+deviceName+'", DeviceId="'+deviceId+'", Version="'+appVersion+'"';return ajax({type:"GET",url:url,dataType:"json",headers:{"X-MediaBrowser-Token":server.ExchangeToken,"X-Emby-Authorization":auth}}).then(function(auth){return server.UserId=auth.LocalUserId,server.AccessToken=auth.AccessToken,auth},function(){return server.UserId=null,server.AccessToken=null,Promise.reject()})}function validateAuthentication(server,connectionMode){var url=ServerInfo.getServerAddress(server,connectionMode);return ajax({type:"GET",url:getEmbyServerUrl(url,"System/Info"),dataType:"json",headers:{"X-MediaBrowser-Token":server.AccessToken}}).then(function(systemInfo){return updateServerInfo(server,systemInfo),server.UserId?ajax({type:"GET",url:getEmbyServerUrl(url,"users/"+server.UserId),dataType:"json",headers:{"X-MediaBrowser-Token":server.AccessToken}}).then(function(user){return onLocalUserSignIn(server,connectionMode,user),Promise.resolve()},function(){return server.UserId=null,server.AccessToken=null,Promise.resolve()}):Promise.resolve()},function(){return server.UserId=null,server.AccessToken=null,Promise.resolve()})}function getImageUrl(localUser){if(connectUser&&connectUser.ImageUrl)return{url:connectUser.ImageUrl};if(localUser&&localUser.PrimaryImageTag){var apiClient=self.getApiClient(localUser),url=apiClient.getUserImageUrl(localUser.Id,{tag:localUser.PrimaryImageTag,type:"Primary"});return{url:url,supportsParams:!0}}return{url:null,supportsParams:!1}}function logoutOfServer(apiClient){var serverInfo=apiClient.serverInfo()||{},logoutInfo={serverId:serverInfo.Id};return apiClient.logout().then(function(){events.trigger(self,"localusersignedout",[logoutInfo])},function(){events.trigger(self,"localusersignedout",[logoutInfo])})}function getConnectServers(credentials){if(console.log("Begin getConnectServers"),!credentials.ConnectAccessToken||!credentials.ConnectUserId)return Promise.resolve([]);var url="https://connect.emby.media/service/servers?userId="+credentials.ConnectUserId;return ajax({type:"GET",url:url,dataType:"json",headers:{"X-Application":appName+"/"+appVersion,"X-Connect-UserToken":credentials.ConnectAccessToken}}).then(function(servers){return servers.map(function(i){return{ExchangeToken:i.AccessKey,ConnectServerId:i.Id,Id:i.SystemId,Name:i.Name,RemoteAddress:i.Url,LocalAddress:i.LocalAddress,UserLinkType:"guest"===(i.UserType||"").toLowerCase()?"Guest":"LinkedUser"}})},function(){return credentials.Servers.slice(0).filter(function(s){return s.ExchangeToken})})}function filterServers(servers,connectServers){return servers.filter(function(server){return!server.ExchangeToken||connectServers.filter(function(connectServer){return server.Id===connectServer.Id}).length>0})}function findServers(){return new Promise(function(resolve,reject){var onFinish=function(foundServers){var servers=foundServers.map(function(foundServer){var info={Id:foundServer.Id,LocalAddress:convertEndpointAddressToManualAddress(foundServer)||foundServer.Address,Name:foundServer.Name};return info.LastConnectionMode=info.ManualAddress?ConnectionMode.Manual:ConnectionMode.Local,info});resolve(servers)};require(["serverdiscovery"],function(serverDiscovery){serverDiscovery.findServers(1e3).then(onFinish,function(){onFinish([])})})})}function convertEndpointAddressToManualAddress(info){if(info.Address&&info.EndpointAddress){var address=info.EndpointAddress.split(":")[0],parts=info.Address.split(":");if(parts.length>1){var portString=parts[parts.length-1];isNaN(parseInt(portString))||(address+=":"+portString)}return normalizeAddress(address)}return null}function testNextConnectionMode(tests,index,server,options,resolve){if(index>=tests.length)return console.log("Tested all connection modes. Failing server connection."),void resolveFailure(self,resolve);var mode=tests[index],address=ServerInfo.getServerAddress(server,mode),enableRetry=!1,skipTest=!1,timeout=defaultTimeout;return mode===ConnectionMode.Local?(enableRetry=!0,timeout=8e3,stringEqualsIgnoreCase(address,server.ManualAddress)&&(console.log("skipping LocalAddress test because it is the same as ManualAddress"),skipTest=!0)):mode===ConnectionMode.Manual&&stringEqualsIgnoreCase(address,server.LocalAddress)&&(enableRetry=!0,timeout=8e3),skipTest||!address?(console.log("skipping test at index "+index),void testNextConnectionMode(tests,index+1,server,options,resolve)):(console.log("testing connection mode "+mode+" with server "+server.Name),void tryConnect(address,timeout).then(function(result){1===compareVersions(self.minServerVersion(),result.Version)?(console.log("minServerVersion requirement not met. Server version: "+result.Version),resolve({State:ConnectionState.ServerUpdateNeeded,Servers:[server]})):result.Id!==server.Id?(console.log("http request succeeded, but found a different server Id than what was expected"),resolveFailure(self,resolve)):(console.log("calling onSuccessfulConnection with connection mode "+mode+" with server "+server.Name),onSuccessfulConnection(server,result,mode,options,resolve))},function(){console.log("test failed for connection mode "+mode+" with server "+server.Name),enableRetry?testNextConnectionMode(tests,index+1,server,options,resolve):testNextConnectionMode(tests,index+1,server,options,resolve)}))}function onSuccessfulConnection(server,systemInfo,connectionMode,options,resolve){var credentials=credentialProvider.credentials();options=options||{},credentials.ConnectAccessToken&&options.enableAutoLogin!==!1?ensureConnectUser(credentials).then(function(){server.ExchangeToken?addAuthenticationInfoFromConnect(server,connectionMode,credentials).then(function(){afterConnectValidated(server,credentials,systemInfo,connectionMode,!0,options,resolve)},function(){afterConnectValidated(server,credentials,systemInfo,connectionMode,!0,options,resolve)}):afterConnectValidated(server,credentials,systemInfo,connectionMode,!0,options,resolve)}):afterConnectValidated(server,credentials,systemInfo,connectionMode,!0,options,resolve)}function afterConnectValidated(server,credentials,systemInfo,connectionMode,verifyLocalAuthentication,options,resolve){if(options=options||{},options.enableAutoLogin===!1)server.UserId=null,server.AccessToken=null;else if(verifyLocalAuthentication&&server.AccessToken&&options.enableAutoLogin!==!1)return void validateAuthentication(server,connectionMode).then(function(){afterConnectValidated(server,credentials,systemInfo,connectionMode,!1,options,resolve)});updateServerInfo(server,systemInfo),server.LastConnectionMode=connectionMode,options.updateDateLastAccessed!==!1&&(server.DateLastAccessed=(new Date).getTime()),credentialProvider.addOrUpdateServer(credentials.Servers,server),credentialProvider.credentials(credentials);var result={Servers:[]};result.ApiClient=self._getOrAddApiClient(server,connectionMode),result.ApiClient.setSystemInfo(systemInfo),result.State=server.AccessToken&&options.enableAutoLogin!==!1?ConnectionState.SignedIn:ConnectionState.ServerSignIn,result.Servers.push(server),result.ApiClient.updateServerInfo(server,connectionMode),result.State===ConnectionState.SignedIn&&afterConnected(result.ApiClient,options),resolve(result),events.trigger(self,"connected",[result])}function addAppInfoToConnectRequest(request){request.headers=request.headers||{},request.headers["X-Application"]=appName+"/"+appVersion}function exchangePin(pinInfo){if(!pinInfo)throw new Error("pinInfo cannot be null");var request={type:"POST",url:getConnectUrl("pin/authenticate"),data:{deviceId:pinInfo.DeviceId,pin:pinInfo.Pin},dataType:"json"};return addAppInfoToConnectRequest(request),ajax(request)}console.log("Begin ConnectionManager constructor");var self=this;this._apiClients=[];var connectUser;self.connectUser=function(){return connectUser},self._minServerVersion="3.2.30",self.appVersion=function(){return appVersion},self.appName=function(){return appName},self.capabilities=function(){return capabilities},self.deviceId=function(){return deviceId},self.credentialProvider=function(){return credentialProvider},self.connectUserId=function(){return credentialProvider.credentials().ConnectUserId},self.connectToken=function(){return credentialProvider.credentials().ConnectAccessToken},self.getServerInfo=function(id){var servers=credentialProvider.credentials().Servers;return servers.filter(function(s){return s.Id===id})[0]},self.getLastUsedServer=function(){var servers=credentialProvider.credentials().Servers;return servers.sort(function(a,b){return(b.DateLastAccessed||0)-(a.DateLastAccessed||0)}),servers.length?servers[0]:null},self.getLastUsedApiClient=function(){var servers=credentialProvider.credentials().Servers;if(servers.sort(function(a,b){return(b.DateLastAccessed||0)-(a.DateLastAccessed||0)}),!servers.length)return null;var server=servers[0];return self._getOrAddApiClient(server,server.LastConnectionMode)},self.addApiClient=function(apiClient){self._apiClients.push(apiClient);var existingServers=credentialProvider.credentials().Servers.filter(function(s){return stringEqualsIgnoreCase(s.ManualAddress,apiClient.serverAddress())||stringEqualsIgnoreCase(s.LocalAddress,apiClient.serverAddress())||stringEqualsIgnoreCase(s.RemoteAddress,apiClient.serverAddress())}),existingServer=existingServers.length?existingServers[0]:{};if(existingServer.DateLastAccessed=(new Date).getTime(),existingServer.LastConnectionMode=ConnectionMode.Manual,existingServer.ManualAddress=apiClient.serverAddress(),apiClient.serverInfo(existingServer),apiClient.onAuthenticated=function(instance,result){return onAuthenticated(instance,result,{},!0)},!existingServers.length){var credentials=credentialProvider.credentials();credentials.Servers=[existingServer],credentialProvider.credentials(credentials)}events.trigger(self,"apiclientcreated",[apiClient]),existingServer.Id||apiClient.getPublicSystemInfo().then(function(systemInfo){var credentials=credentialProvider.credentials();existingServer.Id=systemInfo.Id,apiClient.serverInfo(existingServer),credentials.Servers=[existingServer],credentialProvider.credentials(credentials)})},self.clearData=function(){console.log("connection manager clearing data"),connectUser=null;var credentials=credentialProvider.credentials();credentials.ConnectAccessToken=null,credentials.ConnectUserId=null,credentials.Servers=[],credentialProvider.credentials(credentials)},self._getOrAddApiClient=function(server,connectionMode){var apiClient=self.getApiClient(server.Id);if(!apiClient){var url=ServerInfo.getServerAddress(server,connectionMode);apiClient=new apiClientFactory(url,appName,appVersion,deviceName,deviceId,devicePixelRatio),self._apiClients.push(apiClient),apiClient.serverInfo(server),apiClient.onAuthenticated=function(instance,result){return onAuthenticated(instance,result,{},!0)},events.trigger(self,"apiclientcreated",[apiClient])}return console.log("returning instance from getOrAddApiClient"),apiClient},self.getOrCreateApiClient=function(serverId){var credentials=credentialProvider.credentials(),servers=credentials.Servers.filter(function(s){return stringEqualsIgnoreCase(s.Id,serverId)});if(!servers.length)throw new Error("Server not found: "+serverId);var server=servers[0];return self._getOrAddApiClient(server,server.LastConnectionMode)},self.user=function(apiClient){return new Promise(function(resolve,reject){function onLocalUserDone(e){var image=getImageUrl(localUser);resolve({localUser:localUser,name:connectUser?connectUser.Name:localUser?localUser.Name:null,imageUrl:image.url,supportsImageParams:image.supportsParams})}function onEnsureConnectUserDone(){apiClient&&apiClient.getCurrentUserId()?apiClient.getCurrentUser().then(function(u){localUser=u,onLocalUserDone()},onLocalUserDone):onLocalUserDone()}var localUser,credentials=credentialProvider.credentials();!credentials.ConnectUserId||!credentials.ConnectAccessToken||apiClient&&apiClient.getCurrentUserId()?onEnsureConnectUserDone():ensureConnectUser(credentials).then(onEnsureConnectUserDone,onEnsureConnectUserDone)})},self.logout=function(){console.log("begin connectionManager loguot");for(var promises=[],i=0,length=self._apiClients.length;ibVal)return 1}return 0}var defaultTimeout=2e4,ConnectionMode={Local:0,Remote:1,Manual:2},ConnectionManager=function(credentialProvider,appName,appVersion,deviceName,deviceId,capabilities,devicePixelRatio){function onConnectUserSignIn(user){connectUser=user,events.trigger(self,"connectusersignedin",[user])}function onAuthenticated(apiClient,result,options,saveCredentials){var credentials=credentialProvider.credentials(),servers=credentials.Servers.filter(function(s){return s.Id===result.ServerId}),server=servers.length?servers[0]:apiClient.serverInfo();return!1!==options.updateDateLastAccessed&&(server.DateLastAccessed=(new Date).getTime()),server.Id=result.ServerId,saveCredentials?(server.UserId=result.User.Id,server.AccessToken=result.AccessToken):(server.UserId=null,server.AccessToken=null),credentialProvider.addOrUpdateServer(credentials.Servers,server),credentialProvider.credentials(credentials),apiClient.enableAutomaticBitrateDetection=options.enableAutomaticBitrateDetection,apiClient.serverInfo(server),afterConnected(apiClient,options),onLocalUserSignIn(server,apiClient.serverAddress(),result.User)}function afterConnected(apiClient,options){options=options||{},!1!==options.reportCapabilities&&apiClient.reportCapabilities(capabilities),apiClient.enableAutomaticBitrateDetection=options.enableAutomaticBitrateDetection,!1!==options.enableWebSocket&&(console.log("calling apiClient.ensureWebSocket"),apiClient.ensureWebSocket())}function onLocalUserSignIn(server,serverUrl,user){return self._getOrAddApiClient(server,serverUrl),(self.onLocalUserSignedIn?self.onLocalUserSignedIn.call(self,user):Promise.resolve()).then(function(){events.trigger(self,"localusersignedin",[user])})}function ensureConnectUser(credentials){return connectUser&&connectUser.Id===credentials.ConnectUserId?Promise.resolve():credentials.ConnectUserId&&credentials.ConnectAccessToken?(connectUser=null,getConnectUser(credentials.ConnectUserId,credentials.ConnectAccessToken).then(function(user){return onConnectUserSignIn(user),Promise.resolve()},function(){return Promise.resolve()})):Promise.resolve()}function getConnectUser(userId,accessToken){if(!userId)throw new Error("null userId");if(!accessToken)throw new Error("null accessToken");return ajax({type:"GET",url:"https://connect.emby.media/service/user?id="+userId,dataType:"json",headers:{"X-Application":appName+"/"+appVersion,"X-Connect-UserToken":accessToken}})}function addAuthenticationInfoFromConnect(server,serverUrl,credentials){if(!server.ExchangeToken)throw new Error("server.ExchangeToken cannot be null");if(!credentials.ConnectUserId)throw new Error("credentials.ConnectUserId cannot be null");var url=getEmbyServerUrl(serverUrl,"Connect/Exchange?format=json&ConnectUserId="+credentials.ConnectUserId),auth='MediaBrowser Client="'+appName+'", Device="'+deviceName+'", DeviceId="'+deviceId+'", Version="'+appVersion+'"';return ajax({type:"GET",url:url,dataType:"json",headers:{"X-MediaBrowser-Token":server.ExchangeToken,"X-Emby-Authorization":auth}}).then(function(auth){return server.UserId=auth.LocalUserId,server.AccessToken=auth.AccessToken,auth},function(){return server.UserId=null,server.AccessToken=null,Promise.reject()})}function validateAuthentication(server,serverUrl){return ajax({type:"GET",url:getEmbyServerUrl(serverUrl,"System/Info"),dataType:"json",headers:{"X-MediaBrowser-Token":server.AccessToken}}).then(function(systemInfo){return updateServerInfo(server,systemInfo),Promise.resolve()},function(){return server.UserId=null,server.AccessToken=null,Promise.resolve()})}function getImageUrl(localUser){if(connectUser&&connectUser.ImageUrl)return{url:connectUser.ImageUrl};if(localUser&&localUser.PrimaryImageTag){return{url:self.getApiClient(localUser).getUserImageUrl(localUser.Id,{tag:localUser.PrimaryImageTag,type:"Primary"}),supportsParams:!0}}return{url:null,supportsParams:!1}}function logoutOfServer(apiClient){var serverInfo=apiClient.serverInfo()||{},logoutInfo={serverId:serverInfo.Id};return apiClient.logout().then(function(){events.trigger(self,"localusersignedout",[logoutInfo])},function(){events.trigger(self,"localusersignedout",[logoutInfo])})}function getConnectServers(credentials){return console.log("Begin getConnectServers"),credentials.ConnectAccessToken&&credentials.ConnectUserId?ajax({type:"GET",url:"https://connect.emby.media/service/servers?userId="+credentials.ConnectUserId,dataType:"json",headers:{"X-Application":appName+"/"+appVersion,"X-Connect-UserToken":credentials.ConnectAccessToken}}).then(function(servers){return servers.map(function(i){return{ExchangeToken:i.AccessKey,ConnectServerId:i.Id,Id:i.SystemId,Name:i.Name,RemoteAddress:i.Url,LocalAddress:i.LocalAddress,UserLinkType:"guest"===(i.UserType||"").toLowerCase()?"Guest":"LinkedUser"}})},function(){return credentials.Servers.slice(0).filter(function(s){return s.ExchangeToken})}):Promise.resolve([])}function filterServers(servers,connectServers){return servers.filter(function(server){return!server.ExchangeToken||connectServers.filter(function(connectServer){return server.Id===connectServer.Id}).length>0})}function findServers(){return new Promise(function(resolve,reject){var onFinish=function(foundServers){var servers=foundServers.map(function(foundServer){var info={Id:foundServer.Id,LocalAddress:convertEndpointAddressToManualAddress(foundServer)||foundServer.Address,Name:foundServer.Name};return info.LastConnectionMode=info.ManualAddress?ConnectionMode.Manual:ConnectionMode.Local,info});resolve(servers)};require(["serverdiscovery"],function(serverDiscovery){serverDiscovery.findServers(1e3).then(onFinish,function(){onFinish([])})})})}function convertEndpointAddressToManualAddress(info){if(info.Address&&info.EndpointAddress){var address=info.EndpointAddress.split(":")[0],parts=info.Address.split(":");if(parts.length>1){var portString=parts[parts.length-1];isNaN(parseInt(portString))||(address+=":"+portString)}return normalizeAddress(address)}return null}function getTryConnectPromise(url,connectionMode,state,resolve,reject){console.log("getTryConnectPromise "+url),ajax({url:getEmbyServerUrl(url,"system/info/public"),timeout:defaultTimeout,type:"GET",dataType:"json"}).then(function(result){state.resolved||(state.resolved=!0,console.log("Reconnect succeeded to "+url),resolve({url:url,connectionMode:connectionMode,data:result}))},function(){state.resolved||(console.log("Reconnect failed to "+url),++state.rejects>=state.numAddresses&&reject())})}function tryReconnect(serverInfo){var addresses=[],addressesStrings=[];return!serverInfo.manualAddressOnly&&serverInfo.LocalAddress&&-1===addressesStrings.indexOf(serverInfo.LocalAddress)&&(addresses.push({url:serverInfo.LocalAddress,mode:ConnectionMode.Local,timeout:0}),addressesStrings.push(addresses[addresses.length-1].url)),serverInfo.ManualAddress&&-1===addressesStrings.indexOf(serverInfo.ManualAddress)&&(addresses.push({url:serverInfo.ManualAddress,mode:ConnectionMode.Manual,timeout:100}),addressesStrings.push(addresses[addresses.length-1].url)),!serverInfo.manualAddressOnly&&serverInfo.RemoteAddress&&-1===addressesStrings.indexOf(serverInfo.RemoteAddress)&&(addresses.push({url:serverInfo.RemoteAddress,mode:ConnectionMode.Remote,timeout:200}),addressesStrings.push(addresses[addresses.length-1].url)),console.log("tryReconnect: "+addressesStrings.join("|")),new Promise(function(resolve,reject){var state={};state.numAddresses=addresses.length,state.rejects=0,addresses.map(function(url){setTimeout(function(){state.resolved||getTryConnectPromise(url.url,url.mode,state,resolve,reject)},url.timeout)})})}function onSuccessfulConnection(server,systemInfo,connectionMode,serverUrl,options,resolve){var credentials=credentialProvider.credentials();options=options||{},credentials.ConnectAccessToken&&!1!==options.enableAutoLogin?ensureConnectUser(credentials).then(function(){server.ExchangeToken?addAuthenticationInfoFromConnect(server,serverUrl,credentials).then(function(){afterConnectValidated(server,credentials,systemInfo,connectionMode,serverUrl,!0,options,resolve)},function(){afterConnectValidated(server,credentials,systemInfo,connectionMode,serverUrl,!0,options,resolve)}):afterConnectValidated(server,credentials,systemInfo,connectionMode,serverUrl,!0,options,resolve)}):afterConnectValidated(server,credentials,systemInfo,connectionMode,serverUrl,!0,options,resolve)}function afterConnectValidated(server,credentials,systemInfo,connectionMode,serverUrl,verifyLocalAuthentication,options,resolve){if(options=options||{},!1===options.enableAutoLogin)server.UserId=null,server.AccessToken=null;else if(verifyLocalAuthentication&&server.AccessToken&&!1!==options.enableAutoLogin)return void validateAuthentication(server,serverUrl).then(function(){afterConnectValidated(server,credentials,systemInfo,connectionMode,serverUrl,!1,options,resolve)});updateServerInfo(server,systemInfo),server.LastConnectionMode=connectionMode,!1!==options.updateDateLastAccessed&&(server.DateLastAccessed=(new Date).getTime()),credentialProvider.addOrUpdateServer(credentials.Servers,server),credentialProvider.credentials(credentials);var result={Servers:[]};result.ApiClient=self._getOrAddApiClient(server,serverUrl),result.ApiClient.setSystemInfo(systemInfo),result.State=server.AccessToken&&!1!==options.enableAutoLogin?"SignedIn":"ServerSignIn",result.Servers.push(server),result.ApiClient.enableAutomaticBitrateDetection=options.enableAutomaticBitrateDetection,result.ApiClient.updateServerInfo(server,serverUrl);var resolveActions=function(){resolve(result),events.trigger(self,"connected",[result])};"SignedIn"===result.State?(afterConnected(result.ApiClient,options),result.ApiClient.getCurrentUser().then(function(user){onLocalUserSignIn(server,serverUrl,user).then(resolveActions,resolveActions)},resolveActions)):resolveActions()}function getCacheKey(feature,apiClient,options){options=options||{};var viewOnly=options.viewOnly,cacheKey="regInfo-"+apiClient.serverId();return viewOnly&&(cacheKey+="-viewonly"),cacheKey}function addAppInfoToConnectRequest(request){request.headers=request.headers||{},request.headers["X-Application"]=appName+"/"+appVersion}function exchangePin(pinInfo){if(!pinInfo)throw new Error("pinInfo cannot be null");var request={type:"POST",url:getConnectUrl("pin/authenticate"),data:{deviceId:pinInfo.DeviceId,pin:pinInfo.Pin},dataType:"json"};return addAppInfoToConnectRequest(request),ajax(request)}console.log("Begin ConnectionManager constructor");var self=this;this._apiClients=[];var connectUser;self.connectUser=function(){return connectUser},self._minServerVersion="3.2.33",self.appVersion=function(){return appVersion},self.appName=function(){return appName},self.capabilities=function(){return capabilities},self.deviceId=function(){return deviceId},self.credentialProvider=function(){return credentialProvider},self.connectUserId=function(){return credentialProvider.credentials().ConnectUserId},self.connectToken=function(){return credentialProvider.credentials().ConnectAccessToken},self.getServerInfo=function(id){return credentialProvider.credentials().Servers.filter(function(s){return s.Id===id})[0]},self.getLastUsedServer=function(){var servers=credentialProvider.credentials().Servers;return servers.sort(function(a,b){return(b.DateLastAccessed||0)-(a.DateLastAccessed||0)}),servers.length?servers[0]:null},self.addApiClient=function(apiClient){self._apiClients.push(apiClient);var existingServers=credentialProvider.credentials().Servers.filter(function(s){return stringEqualsIgnoreCase(s.ManualAddress,apiClient.serverAddress())||stringEqualsIgnoreCase(s.LocalAddress,apiClient.serverAddress())||stringEqualsIgnoreCase(s.RemoteAddress,apiClient.serverAddress())}),existingServer=existingServers.length?existingServers[0]:apiClient.serverInfo();if(existingServer.DateLastAccessed=(new Date).getTime(),existingServer.LastConnectionMode=ConnectionMode.Manual,existingServer.ManualAddress=apiClient.serverAddress(),apiClient.manualAddressOnly&&(existingServer.manualAddressOnly=!0),apiClient.serverInfo(existingServer),apiClient.onAuthenticated=function(instance,result){return onAuthenticated(instance,result,{},!0)},!existingServers.length){var credentials=credentialProvider.credentials();credentials.Servers=[existingServer],credentialProvider.credentials(credentials)}events.trigger(self,"apiclientcreated",[apiClient])},self.clearData=function(){console.log("connection manager clearing data"),connectUser=null;var credentials=credentialProvider.credentials();credentials.ConnectAccessToken=null,credentials.ConnectUserId=null,credentials.Servers=[],credentialProvider.credentials(credentials)},self._getOrAddApiClient=function(server,serverUrl){var apiClient=self.getApiClient(server.Id);return apiClient||(apiClient=new apiClientFactory(serverUrl,appName,appVersion,deviceName,deviceId,devicePixelRatio),self._apiClients.push(apiClient),apiClient.serverInfo(server),apiClient.onAuthenticated=function(instance,result){return onAuthenticated(instance,result,{},!0)},events.trigger(self,"apiclientcreated",[apiClient])),console.log("returning instance from getOrAddApiClient"),apiClient},self.getOrCreateApiClient=function(serverId){var credentials=credentialProvider.credentials(),servers=credentials.Servers.filter(function(s){return stringEqualsIgnoreCase(s.Id,serverId)});if(!servers.length)throw new Error("Server not found: "+serverId);var server=servers[0];return self._getOrAddApiClient(server,getServerAddress(server,server.LastConnectionMode))},self.user=function(apiClient){return new Promise(function(resolve,reject){function onLocalUserDone(e){var image=getImageUrl(localUser);resolve({localUser:localUser,name:connectUser?connectUser.Name:localUser?localUser.Name:null,imageUrl:image.url,supportsImageParams:image.supportsParams,connectUser:connectUser})}function onEnsureConnectUserDone(){apiClient&&apiClient.getCurrentUserId()?apiClient.getCurrentUser().then(function(u){localUser=u,onLocalUserDone()},onLocalUserDone):onLocalUserDone()}var localUser,credentials=credentialProvider.credentials();!credentials.ConnectUserId||!credentials.ConnectAccessToken||apiClient&&apiClient.getCurrentUserId()?onEnsureConnectUserDone():ensureConnectUser(credentials).then(onEnsureConnectUserDone,onEnsureConnectUserDone)})},self.logout=function(){console.log("begin connectionManager loguot");for(var promises=[],i=0,length=self._apiClients.length;i-1&&(item={Name:"Music",ServerId:serverId,Id:"localview:MusicView",Type:"MusicView",CollectionType:"music",IsFolder:!0},list.push(item)),types.indexOf("Photo")>-1&&(item={Name:"Photos",ServerId:serverId,Id:"localview:PhotosView",Type:"PhotosView",CollectionType:"photos",IsFolder:!0},list.push(item)),types.indexOf("Episode")>-1&&(item={Name:"TV",ServerId:serverId,Id:"localview:TVView",Type:"TVView",CollectionType:"tvshows",IsFolder:!0},list.push(item)),types.indexOf("Movie")>-1&&(item={Name:"Movies",ServerId:serverId,Id:"localview:MoviesView",Type:"MoviesView",CollectionType:"movies",IsFolder:!0},list.push(item)),types.indexOf("Video")>-1&&(item={Name:"Videos",ServerId:serverId,Id:"localview:VideosView",Type:"VideosView",CollectionType:"videos",IsFolder:!0},list.push(item)),types.indexOf("MusicVideo")>-1&&(item={Name:"Music Videos",ServerId:serverId,Id:"localview:MusicVideosView",Type:"MusicVideosView",CollectionType:"videos",IsFolder:!0},list.push(item)),Promise.resolve(list)})}function getTypeFilterForTopLevelView(parentId){var typeFilter=null;switch(parentId){case"localview:MusicView":typeFilter="MusicAlbum";break;case"localview:PhotosView":typeFilter="PhotoAlbum";break;case"localview:TVView":typeFilter="Series";break;case"localview:VideosView":typeFilter="Video";break;case"localview:MoviesView":typeFilter="Movie";break;case"localview:MusicVideosView":typeFilter="MusicVideo"}return typeFilter}function normalizeId(id){return id?(id=stripStart(id,"localview:"),id=stripStart(id,"local:")):null}function getViewItems(serverId,userId,options){var parentId=options.ParentId,typeFilter=getTypeFilterForTopLevelView(parentId);parentId=normalizeId(parentId);var seasonId=normalizeId(options.SeasonId||options.seasonId),seriesId=normalizeId(options.SeriesId||options.seriesId),includeItemTypes=options.IncludeItemTypes?options.IncludeItemTypes.split(","):[];return typeFilter&&(parentId=null,includeItemTypes.push(typeFilter)),getServerItems(serverId).then(function(items){var resultItems=items.filter(function(item){if(item.SyncStatus&&"synced"!==item.SyncStatus)return!1;if(options.MediaType&&item.Item.MediaType!==options.MediaType)return!1;if(seriesId&&item.Item.SeriesId!==seriesId)return!1;if(seasonId&&item.Item.SeasonId!==seasonId)return!1;if("IsNotFolder"===options.Filters&&item.Item.IsFolder)return!1;if("IsFolder"===options.Filters&&!item.Item.IsFolder)return!1;if(includeItemTypes.length&&includeItemTypes.indexOf(item.Item.Type||"")===-1)return!1;if(options.Recursive);else if(parentId&&item.Item.ParentId!==parentId)return!1;return!0}).map(function(item2){return item2.Item});return"DateCreated"===options.SortBy&&resultItems.sort(function(a,b){return compareDates(a.DateCreated,b.DateCreated)}),options.Limit&&(resultItems=resultItems.slice(0,options.Limit)),Promise.resolve(resultItems)})}function removeObsoleteContainerItems(serverId){return getServerItems(serverId).then(function(items){var seriesItems=items.filter(function(item){var type=(item.Item.Type||"").toLowerCase();return"series"===type}),seasonItems=items.filter(function(item){var type=(item.Item.Type||"").toLowerCase();return"season"===type}),albumItems=items.filter(function(item){var type=(item.Item.Type||"").toLowerCase();return"musicalbum"===type||"photoalbum"===type}),requiredSeriesIds=items.filter(function(item){var type=(item.Item.Type||"").toLowerCase();return"episode"===type}).map(function(item2){return item2.Item.SeriesId}).filter(filterDistinct),requiredSeasonIds=items.filter(function(item){var type=(item.Item.Type||"").toLowerCase();return"episode"===type}).map(function(item2){return item2.Item.SeasonId}).filter(filterDistinct),requiredAlbumIds=items.filter(function(item){var type=(item.Item.Type||"").toLowerCase();return"audio"===type||"photo"===type}).map(function(item2){return item2.Item.AlbumId}).filter(filterDistinct),obsoleteItems=[];seriesItems.forEach(function(item){requiredSeriesIds.indexOf(item.Item.Id)<0&&obsoleteItems.push(item)}),seasonItems.forEach(function(item){requiredSeasonIds.indexOf(item.Item.Id)<0&&obsoleteItems.push(item)}),albumItems.forEach(function(item){requiredAlbumIds.indexOf(item.Item.Id)<0&&obsoleteItems.push(item)});var p=Promise.resolve();return obsoleteItems.forEach(function(item){p=p.then(function(){return itemrepository.remove(item.ServerId,item.Id)})}),p})}function removeLocalItem(localItem){return itemrepository.get(localItem.ServerId,localItem.Id).then(function(item){return filerepository.deleteFile(item.LocalPath).then(function(){var p=Promise.resolve(!0);return item.AdditionalFiles&&item.AdditionalFiles.forEach(function(file){p=p.then(function(){return filerepository.deleteFile(file.Path)})}),p.then(function(file){return itemrepository.remove(localItem.ServerId,localItem.Id)})},function(error){var p=Promise.resolve(!0);return item.AdditionalFiles&&item.AdditionalFiles.forEach(function(file){p=p.then(function(item){return filerepository.deleteFile(file.Path)})}),p.then(function(file){return itemrepository.remove(localItem.ServerId,localItem.Id)})})})}function addOrUpdateLocalItem(localItem){return itemrepository.set(localItem.ServerId,localItem.Id,localItem)}function createLocalItem(libraryItem,serverInfo,jobItem){console.log("[lcoalassetmanager] Begin createLocalItem");var localPath,path=getDirectoryPath(libraryItem,serverInfo),localFolder=filerepository.getFullLocalPath(path);if(jobItem&&(path.push(getLocalFileName(libraryItem,jobItem.OriginalFileName)),localPath=filerepository.getFullLocalPath(path)),libraryItem.MediaSources)for(var i=0;i0&&(fileName=fileName.substring(0,pos)),fileName}function downloadFile(url,localItem){var imageUrl=getImageUrl(localItem.Item.ServerId,localItem.Item.Id,{type:"Primary",index:0});return transfermanager.downloadFile(url,localItem,imageUrl)}function downloadSubtitles(url,fileName){return transfermanager.downloadSubtitles(url,fileName)}function getImageUrl(serverId,itemId,imageOptions){var imageType=imageOptions.type,index=imageOptions.index,pathArray=getImagePath(serverId,itemId,imageType,index);return filerepository.getImageUrl(pathArray)}function hasImage(serverId,itemId,imageType,index){var pathArray=getImagePath(serverId,itemId,imageType,index),localFilePath=filerepository.getFullMetadataPath(pathArray);return filerepository.fileExists(localFilePath).then(function(exists){return Promise.resolve(exists)},function(err){return Promise.resolve(!1)})}function fileExists(localFilePath){return filerepository.fileExists(localFilePath)}function downloadImage(localItem,url,serverId,itemId,imageType,index){var pathArray=getImagePath(serverId,itemId,imageType,index),localFilePath=filerepository.getFullMetadataPath(pathArray);localItem.AdditionalFiles||(localItem.AdditionalFiles=[]);var fileInfo={Path:localFilePath,Type:"Image",Name:imageType+index.toString(),ImageType:imageType};return localItem.AdditionalFiles.push(fileInfo),transfermanager.downloadImage(url,localFilePath)}function isDownloadFileInQueue(path){return transfermanager.isDownloadFileInQueue(path)}function getDownloadItemCount(){return transfermanager.getDownloadItemCount()}function getDirectoryPath(item,server){var parts=[];parts.push(server.Name);var itemtype=item.Type.toLowerCase();if("episode"===itemtype){parts.push("TV");var seriesName=item.SeriesName;seriesName&&parts.push(seriesName);var seasonName=item.SeasonName;seasonName&&parts.push(seasonName)}else if("video"===itemtype)parts.push("Videos"),parts.push(item.Name);else if("audio"===itemtype){parts.push("Music");var albumArtist=item.AlbumArtist;albumArtist&&parts.push(albumArtist),item.AlbumId&&item.Album&&parts.push(item.Album)}else"photo"===itemtype&&(parts.push("Photos"),item.AlbumId&&item.Album&&parts.push(item.Album));for(var finalParts=[],i=0;ifind.length&&0===str.indexOf(find))}function stripStart(str,find){return startsWith(str,find)?str.substr(find.length):str}function filterDistinct(value,index,self){return self.indexOf(value)===index}function compareDates(a,b){return isFinite(a=a.valueOf())&&isFinite(b=b.valueOf())?(a>b)-(a-1&&(item={Name:"Music",ServerId:serverId,Id:"localview:MusicView",Type:"MusicView",CollectionType:"music",IsFolder:!0},list.push(item)),types.indexOf("Photo")>-1&&(item={Name:"Photos",ServerId:serverId,Id:"localview:PhotosView",Type:"PhotosView",CollectionType:"photos",IsFolder:!0},list.push(item)),types.indexOf("Episode")>-1&&(item={Name:"TV",ServerId:serverId,Id:"localview:TVView",Type:"TVView",CollectionType:"tvshows",IsFolder:!0},list.push(item)),types.indexOf("Movie")>-1&&(item={Name:"Movies",ServerId:serverId,Id:"localview:MoviesView",Type:"MoviesView",CollectionType:"movies",IsFolder:!0},list.push(item)),types.indexOf("Video")>-1&&(item={Name:"Videos",ServerId:serverId,Id:"localview:VideosView",Type:"VideosView",CollectionType:"videos",IsFolder:!0},list.push(item)),types.indexOf("MusicVideo")>-1&&(item={Name:"Music Videos",ServerId:serverId,Id:"localview:MusicVideosView",Type:"MusicVideosView",CollectionType:"videos",IsFolder:!0},list.push(item)),Promise.resolve(list)})}function updateFiltersForTopLevelView(parentId,mediaTypes,includeItemTypes,query){switch(parentId){case"MusicView":return query.Recursive?includeItemTypes.push("Audio"):includeItemTypes.push("MusicAlbum"),!0;case"PhotosView":return query.Recursive?includeItemTypes.push("Photo"):includeItemTypes.push("PhotoAlbum"),!0;case"TVView":return query.Recursive?includeItemTypes.push("Episode"):includeItemTypes.push("Series"),!0;case"VideosView":return query.Recursive,includeItemTypes.push("Video"),!0;case"MoviesView":return query.Recursive,includeItemTypes.push("Movie"),!0;case"MusicVideosView":return query.Recursive,includeItemTypes.push("MusicVideo"),!0}return!1}function normalizeId(id){return id?(id=stripStart(id,"localview:"),id=stripStart(id,"local:")):null}function normalizeIdList(val){return val?val.split(",").map(normalizeId):[]}function shuffle(array){for(var temporaryValue,randomIndex,currentIndex=array.length;0!==currentIndex;)randomIndex=Math.floor(Math.random()*currentIndex),currentIndex-=1,temporaryValue=array[currentIndex],array[currentIndex]=array[randomIndex],array[randomIndex]=temporaryValue;return array}function sortItems(items,query){if(!query.SortBy||0===query.SortBy.length)return items;if("Random"===query.SortBy)return shuffle(items);var sortSpec=getSortSpec(query);return items.sort(function(a,b){for(var i=0;ivalB?result=1:valA0&&mediaSource.MediaStreams.forEach(function(mediaStream){mediaStream.Path&&(p=p.then(function(){return filerepository.deleteFile(mediaStream.Path)}))})}),p.then(onFileDeletedSuccessOrFail,onFileDeletedSuccessOrFail)},function(item){return Promise.resolve()})}function addOrUpdateLocalItem(localItem){return itemrepository.set(localItem.ServerId,localItem.Id,localItem)}function getSubtitleSaveFileName(localItem,mediaPath,language,isForced,format){var name=getNameWithoutExtension(mediaPath);name=filerepository.getValidFileName(name),language&&(name+="."+language.toLowerCase()),isForced&&(name+=".foreign"),name=name+"."+format.toLowerCase();var mediaFolder=filerepository.getParentPath(localItem.LocalPath);return filerepository.combinePath(mediaFolder,name)}function getItemFileSize(path){return filerepository.getItemFileSize(path)}function getNameWithoutExtension(path){var fileName=path,pos=fileName.lastIndexOf(".");return pos>0&&(fileName=fileName.substring(0,pos)),fileName}function downloadFile(url,localItem){var imageUrl=getImageUrl(localItem.Item.ServerId,localItem.Item.Id,{type:"Primary",index:0});return transfermanager.downloadFile(url,localItem,imageUrl)}function downloadSubtitles(url,fileName){return transfermanager.downloadSubtitles(url,fileName)}function getImageUrl(serverId,itemId,imageOptions){var imageType=imageOptions.type,index=imageOptions.index,pathArray=getImagePath(serverId,itemId,imageType,index);return filerepository.getImageUrl(pathArray)}function hasImage(serverId,itemId,imageType,index){var pathArray=getImagePath(serverId,itemId,imageType,index),localFilePath=filerepository.getFullMetadataPath(pathArray);return filerepository.fileExists(localFilePath).then(function(exists){return Promise.resolve(exists)},function(err){return Promise.resolve(!1)})}function fileExists(localFilePath){return filerepository.fileExists(localFilePath)}function downloadImage(localItem,url,serverId,itemId,imageType,index){var localPathParts=getImagePath(serverId,itemId,imageType,index);return transfermanager.downloadImage(url,localPathParts)}function isDownloadFileInQueue(path){return transfermanager.isDownloadFileInQueue(path)}function getDownloadItemCount(){return transfermanager.getDownloadItemCount()}function getDirectoryPath(item){var parts=[],itemtype=item.Type.toLowerCase(),mediaType=(item.MediaType||"").toLowerCase();"episode"===itemtype||"series"===itemtype||"season"===itemtype?parts.push("TV"):"video"===mediaType?parts.push("Videos"):"audio"===itemtype||"musicalbum"===itemtype||"musicartist"===itemtype?parts.push("Music"):"photo"===itemtype||"photoalbum"===itemtype?parts.push("Photos"):"game"!==itemtype&&"gamesystem"!==itemtype||parts.push("Games");var albumArtist=item.AlbumArtist;albumArtist&&parts.push(albumArtist);var seriesName=item.SeriesName;seriesName&&parts.push(seriesName);var seasonName=item.SeasonName;seasonName&&parts.push(seasonName),item.Album&&parts.push(item.Album),("video"===mediaType&&"episode"!==itemtype||"game"===itemtype||item.IsFolder)&&parts.push(item.Name);for(var finalParts=[],i=0;ifind.length&&0===str.indexOf(find))}function stripStart(str,find){return startsWith(str,find)?str.substr(find.length):str}function filterDistinct(value,index,self){return self.indexOf(value)===index}function enableBackgroundCompletion(){return transfermanager.enableBackgroundCompletion}return{getLocalItem:getLocalItem,getDirectoryPath:getDirectoryPath,getLocalFileName:getLocalFileName,recordUserAction:recordUserAction,getUserActions:getUserActions,deleteUserAction:deleteUserAction,deleteUserActions:deleteUserActions,removeLocalItem:removeLocalItem,addOrUpdateLocalItem:addOrUpdateLocalItem,downloadFile:downloadFile,downloadSubtitles:downloadSubtitles,hasImage:hasImage,downloadImage:downloadImage,getImageUrl:getImageUrl,getSubtitleSaveFileName:getSubtitleSaveFileName,getServerItems:getServerItems,getItemFileSize:getItemFileSize,isDownloadFileInQueue:isDownloadFileInQueue,getDownloadItemCount:getDownloadItemCount,getViews:getViews,getViewItems:getViewItems,resyncTransfers:resyncTransfers,getItemsFromIds:getItemsFromIds,removeObsoleteContainerItems:removeObsoleteContainerItems,fileExists:fileExists,enableBackgroundCompletion:enableBackgroundCompletion}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-apiclient/serverdiscovery-chrome.js b/dashboard-ui/bower_components/emby-apiclient/serverdiscovery-chrome.js deleted file mode 100644 index 2e22791f1a..0000000000 --- a/dashboard-ui/bower_components/emby-apiclient/serverdiscovery-chrome.js +++ /dev/null @@ -1 +0,0 @@ -define([],function(){"use strict";function stringToArrayBuffer(string){for(var buf=new ArrayBuffer(2*string.length),bufView=new Uint16Array(buf),i=0,strLen=string.length;i=length?void resolve():void uploadFile(files[index],apiClient).then(function(){uploadNext(files,index+1,server,apiClient,resolve,reject)},function(){uploadNext(files,index+1,server,apiClient,resolve,reject)})}function uploadFile(file,apiClient){return new Promise(function(resolve,reject){require(["fileupload","cryptojs-sha1"],function(FileUpload){var name="camera image "+(new Date).getTime(),url=apiClient.getUrl("Devices/CameraUploads",{DeviceId:apiClient.deviceId(),Name:name,Album:"Camera Roll",Id:getUploadId(file),api_key:apiClient.accessToken()});console.log("Uploading file to "+url),(new FileUpload).upload(file,name,url).then(resolve,reject)})})}function ContentUploader(){}return ContentUploader.prototype.uploadImages=function(connectionManager,server){return cameraRoll.getFiles().then(function(photos){if(!photos.length)return Promise.resolve();var apiClient=connectionManager.getApiClient(server.Id);return apiClient.getContentUploadHistory().then(function(uploadHistory){return photos=getFilesToUpload(photos,uploadHistory),console.log("Found "+photos.length+" files to upload"),new Promise(function(resolve,reject){uploadNext(photos,0,server,apiClient,resolve,reject)})},function(){return Promise.resolve()})})},ContentUploader}); \ No newline at end of file +define(["localassetmanager","cameraRoll"],function(localAssetManager,cameraRoll){"use strict";function getFilesToUpload(files,uploadHistory){return files.filter(function(file){if(!file)return!1;var uploadId=getUploadId(file);return 0===uploadHistory.FilesUploaded.filter(function(u){return uploadId===u.Id}).length})}function getUploadId(file){return btoa(file.Id+"1")}function uploadNext(files,index,server,apiClient,resolve,reject){var length=files.length;if(index>=length)return void resolve();uploadFile(files[index],apiClient).then(function(){uploadNext(files,index+1,server,apiClient,resolve,reject)},function(){uploadNext(files,index+1,server,apiClient,resolve,reject)})}function uploadFile(file,apiClient){return new Promise(function(resolve,reject){require(["fileupload"],function(FileUpload){var url=apiClient.getUrl("Devices/CameraUploads",{DeviceId:apiClient.deviceId(),Name:file.Name,Album:"Camera Roll",Id:getUploadId(file),api_key:apiClient.accessToken()});console.log("Uploading file to "+url),(new FileUpload).upload(file,url).then(resolve,reject)})})}function ContentUploader(){}return ContentUploader.prototype.uploadImages=function(connectionManager,server){return cameraRoll.getFiles().then(function(photos){if(!photos.length)return Promise.resolve();var apiClient=connectionManager.getApiClient(server.Id);return apiClient.getContentUploadHistory().then(function(uploadHistory){return photos=getFilesToUpload(photos,uploadHistory),console.log("Found "+photos.length+" files to upload"),new Promise(function(resolve,reject){uploadNext(photos,0,server,apiClient,resolve,reject)})},function(){return Promise.resolve()})})},ContentUploader}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-apiclient/sync/itemrepository.js b/dashboard-ui/bower_components/emby-apiclient/sync/itemrepository.js index fc3c911b2f..1685367fe0 100644 --- a/dashboard-ui/bower_components/emby-apiclient/sync/itemrepository.js +++ b/dashboard-ui/bower_components/emby-apiclient/sync/itemrepository.js @@ -1 +1 @@ -define([],function(){"use strict";function ServerDatabase(dbName,readyCallback){var request=indexedDB.open(dbName,dbVersion);request.onerror=function(event){},request.onupgradeneeded=function(event){var db=event.target.result,objectStore=db.createObjectStore(dbName);objectStore.transaction.oncomplete=function(event){readyCallback(db)}},request.onsuccess=function(event){var db=event.target.result;readyCallback(db)}}function getDbName(serverId){return"items_"+serverId}function getDb(serverId,callback){var dbName=getDbName(serverId),db=databases[dbName];return db?void callback(db):void new ServerDatabase(dbName,function(db){databases[dbName]=db,callback(db)})}function getServerItemTypes(serverId,userId){return getAll(serverId,userId).then(function(all){return all.map(function(item2){return item2.Item.Type||""}).filter(filterDistinct)})}function getAll(serverId,userId){return new Promise(function(resolve,reject){getDb(serverId,function(db){var request,storeName=getDbName(serverId),transaction=db.transaction([storeName],"readonly"),objectStore=transaction.objectStore(storeName);if("getAll"in objectStore)request=objectStore.getAll(null,1e4),request.onsuccess=function(event){resolve(event.target.result)};else{var results=[];request=objectStore.openCursor(),request.onsuccess=function(event){var cursor=event.target.result;cursor?(results.push(cursor.value),cursor.continue()):resolve(results)}}request.onerror=reject})})}function get(serverId,key){return new Promise(function(resolve,reject){getDb(serverId,function(db){var storeName=getDbName(serverId),transaction=db.transaction([storeName],"readonly"),objectStore=transaction.objectStore(storeName),request=objectStore.get(key);request.onerror=reject,request.onsuccess=function(event){resolve(request.result)}})})}function set(serverId,key,val){return new Promise(function(resolve,reject){getDb(serverId,function(db){var storeName=getDbName(serverId),transaction=db.transaction([storeName],"readwrite"),objectStore=transaction.objectStore(storeName),request=objectStore.put(val,key);request.onerror=reject,request.onsuccess=resolve})})}function remove(serverId,key){return new Promise(function(resolve,reject){getDb(serverId,function(db){var storeName=getDbName(serverId),transaction=db.transaction([storeName],"readwrite"),objectStore=transaction.objectStore(storeName),request=objectStore.delete(key);request.onerror=reject,request.onsuccess=resolve})})}function clear(serverId){return new Promise(function(resolve,reject){getDb(serverId,function(db){var storeName=getDbName(serverId),transaction=db.transaction([storeName],"readwrite"),objectStore=transaction.objectStore(storeName),request=objectStore.clear();request.onerror=reject,request.onsuccess=resolve})})}function filterDistinct(value,index,self){return self.indexOf(value)===index}var indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,dbVersion=(self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction||{READ_WRITE:"readwrite"},self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange,1),databases={};return{get:get,set:set,remove:remove,clear:clear,getAll:getAll,getServerItemTypes:getServerItemTypes}}); \ No newline at end of file +define([],function(){"use strict";function ServerDatabase(dbName,readyCallback){var request=indexedDB.open(dbName,dbVersion);request.onerror=function(event){},request.onupgradeneeded=function(event){var db=event.target.result;db.createObjectStore(dbName).transaction.oncomplete=function(event){readyCallback(db)}},request.onsuccess=function(event){var db=event.target.result;readyCallback(db)}}function getDbName(serverId){return"items_"+serverId}function getDb(serverId,callback){var dbName=getDbName(serverId),db=databases[dbName];if(db)return void callback(db);new ServerDatabase(dbName,function(db){databases[dbName]=db,callback(db)})}function getServerItemTypes(serverId,userId){return getAll(serverId,userId).then(function(all){return all.map(function(item2){return item2.Item.Type||""}).filter(filterDistinct)})}function getAll(serverId,userId){return new Promise(function(resolve,reject){getDb(serverId,function(db){var request,storeName=getDbName(serverId),transaction=db.transaction([storeName],"readonly"),objectStore=transaction.objectStore(storeName);if("getAll"in objectStore)request=objectStore.getAll(null,1e4),request.onsuccess=function(event){resolve(event.target.result)};else{var results=[];request=objectStore.openCursor(),request.onsuccess=function(event){var cursor=event.target.result;cursor?(results.push(cursor.value),cursor.continue()):resolve(results)}}request.onerror=reject})})}function get(serverId,key){return new Promise(function(resolve,reject){getDb(serverId,function(db){var storeName=getDbName(serverId),transaction=db.transaction([storeName],"readonly"),objectStore=transaction.objectStore(storeName),request=objectStore.get(key);request.onerror=reject,request.onsuccess=function(event){resolve(request.result)}})})}function set(serverId,key,val){return new Promise(function(resolve,reject){getDb(serverId,function(db){var storeName=getDbName(serverId),transaction=db.transaction([storeName],"readwrite"),objectStore=transaction.objectStore(storeName),request=objectStore.put(val,key);request.onerror=reject,request.onsuccess=resolve})})}function remove(serverId,key){return new Promise(function(resolve,reject){getDb(serverId,function(db){var storeName=getDbName(serverId),transaction=db.transaction([storeName],"readwrite"),objectStore=transaction.objectStore(storeName),request=objectStore.delete(key);request.onerror=reject,request.onsuccess=resolve})})}function clear(serverId){return new Promise(function(resolve,reject){getDb(serverId,function(db){var storeName=getDbName(serverId),transaction=db.transaction([storeName],"readwrite"),objectStore=transaction.objectStore(storeName),request=objectStore.clear();request.onerror=reject,request.onsuccess=resolve})})}function filterDistinct(value,index,self){return self.indexOf(value)===index}var indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,dbVersion=(self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange,1),databases={};return{get:get,set:set,remove:remove,clear:clear,getAll:getAll,getServerItemTypes:getServerItemTypes}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-apiclient/sync/localsync.js b/dashboard-ui/bower_components/emby-apiclient/sync/localsync.js index 13bfbcab45..2f855bfc39 100644 --- a/dashboard-ui/bower_components/emby-apiclient/sync/localsync.js +++ b/dashboard-ui/bower_components/emby-apiclient/sync/localsync.js @@ -1 +1 @@ -define(["appSettings","connectionManager"],function(appSettings,connectionManager){"use strict";var isSyncing;return{sync:function(options){return console.log("localSync.sync starting..."),isSyncing?Promise.resolve():(isSyncing=!0,new Promise(function(resolve,reject){require(["multiserversync"],function(MultiServerSync){options=options||{},options.cameraUploadServers=appSettings.cameraUploadServers(),(new MultiServerSync).sync(connectionManager,options).then(function(){isSyncing=null,resolve()},function(err){isSyncing=null,reject(err)})})}))}}}); \ No newline at end of file +define(["connectionManager"],function(connectionManager){"use strict";var isSyncing;return{sync:function(options){return console.log("localSync.sync starting..."),isSyncing?Promise.resolve():(isSyncing=!0,new Promise(function(resolve,reject){require(["multiserversync","appSettings"],function(MultiServerSync,appSettings){options=options||{},options.cameraUploadServers=appSettings.cameraUploadServers(),(new MultiServerSync).sync(connectionManager,options).then(function(){isSyncing=null,resolve()},function(err){isSyncing=null,reject(err)})})}))}}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-apiclient/sync/mediasync.js b/dashboard-ui/bower_components/emby-apiclient/sync/mediasync.js index 337501a04f..cc09ffe5f0 100644 --- a/dashboard-ui/bower_components/emby-apiclient/sync/mediasync.js +++ b/dashboard-ui/bower_components/emby-apiclient/sync/mediasync.js @@ -1 +1 @@ -define(["localassetmanager"],function(localassetmanager){"use strict";function processDownloadStatus(apiClient,serverInfo,options){return console.log("[mediasync] Begin processDownloadStatus"),localassetmanager.resyncTransfers().then(function(){return localassetmanager.getServerItems(serverInfo.Id).then(function(items){console.log("[mediasync] Begin processDownloadStatus getServerItems completed");var p=Promise.resolve(),cnt=0,progressItems=items.filter(function(item){return"transferring"===item.SyncStatus||"queued"===item.SyncStatus});return progressItems.forEach(function(item){p=p.then(function(){return reportTransfer(apiClient,item)}),cnt++}),p.then(function(){return console.log("[mediasync] Exit processDownloadStatus. Items reported: "+cnt.toString()),Promise.resolve()})})})}function reportTransfer(apiClient,item){return localassetmanager.getItemFileSize(item.LocalPath).then(function(size){return size>0?apiClient.reportSyncJobItemTransferred(item.SyncJobItemId).then(function(){return item.SyncStatus="synced",localassetmanager.addOrUpdateLocalItem(item)},function(error){return console.error("[mediasync] Mediasync error on reportSyncJobItemTransferred",error),item.SyncStatus="error",localassetmanager.addOrUpdateLocalItem(item)}):localassetmanager.isDownloadFileInQueue(item.LocalPath).then(function(result){return result?Promise.resolve():(console.log("[mediasync] reportTransfer: Size is 0 and download no longer in queue. Deleting item."),localassetmanager.removeLocalItem(item).then(function(){return console.log("[mediasync] reportTransfer: Item deleted."),Promise.resolve()},function(err2){return console.log("[mediasync] reportTransfer: Failed to delete item.",err2),Promise.resolve()}))})},function(error){return console.error("[mediasync] reportTransfer: error on getItemFileSize. Deleting item.",error),localassetmanager.removeLocalItem(item).then(function(){return console.log("[mediasync] reportTransfer: Item deleted."),Promise.resolve()},function(err2){return console.log("[mediasync] reportTransfer: Failed to delete item.",error),Promise.resolve()})})}function reportOfflineActions(apiClient,serverInfo){return console.log("[mediasync] Begin reportOfflineActions"),localassetmanager.getUserActions(serverInfo.Id).then(function(actions){return actions.length?apiClient.reportOfflineActions(actions).then(function(){return localassetmanager.deleteUserActions(actions).then(function(){return console.log("[mediasync] Exit reportOfflineActions (actions reported and deleted.)"),Promise.resolve()})},function(err){return console.error("[mediasync] error on apiClient.reportOfflineActions: "+err.toString()),localassetmanager.deleteUserActions(actions)}):(console.log("[mediasync] Exit reportOfflineActions (no actions)"),Promise.resolve())})}function syncData(apiClient,serverInfo,syncUserItemAccess){return console.log("[mediasync] Begin syncData"),localassetmanager.getServerItems(serverInfo.Id).then(function(items){var completedItems=items.filter(function(item){return item&&("synced"===item.SyncStatus||"error"===item.SyncStatus)}),request={TargetId:apiClient.deviceId(),LocalItemIds:completedItems.map(function(xitem){return xitem.ItemId})};return apiClient.syncData(request).then(function(result){return afterSyncData(apiClient,serverInfo,syncUserItemAccess,result).then(function(){return console.log("[mediasync] Exit syncData"),Promise.resolve()},function(err){return console.error("[mediasync] Error in syncData: "+err.toString()),Promise.resolve()})})})}function afterSyncData(apiClient,serverInfo,enableSyncUserItemAccess,syncDataResult){console.log("[mediasync] Begin afterSyncData");var p=Promise.resolve();return syncDataResult.ItemIdsToRemove&&syncDataResult.ItemIdsToRemove.length>0&&syncDataResult.ItemIdsToRemove.forEach(function(itemId){p=p.then(function(){return removeLocalItem(itemId,serverInfo.Id)})}),enableSyncUserItemAccess&&(p=p.then(function(){return syncUserItemAccess(syncDataResult,serverInfo.Id)})),p=p.then(function(){return removeObsoleteContainerItems(serverInfo.Id)}),p.then(function(){return console.log("[mediasync] Exit afterSyncData"),Promise.resolve()})}function removeObsoleteContainerItems(serverId){return console.log("[mediasync] Begin removeObsoleteContainerItems"),localassetmanager.removeObsoleteContainerItems(serverId)}function removeLocalItem(itemId,serverId){return console.log("[mediasync] Begin removeLocalItem"),localassetmanager.getLocalItem(serverId,itemId).then(function(item){return item?localassetmanager.removeLocalItem(item):Promise.resolve()})}function getNewMedia(apiClient,serverInfo,options,downloadCount){return console.log("[mediasync] Begin getNewMedia"),apiClient.getReadySyncItems(apiClient.deviceId()).then(function(jobItems){var p=Promise.resolve(),maxDownloads=10,currentCount=downloadCount;return jobItems.forEach(function(jobItem){currentCount++<=maxDownloads&&(p=p.then(function(){return getNewItem(jobItem,apiClient,serverInfo,options)}))}),p.then(function(){return console.log("[mediasync] Exit getNewMedia"),Promise.resolve()})})}function getNewItem(jobItem,apiClient,serverInfo,options){console.log("[mediasync] Begin getNewItem");var libraryItem=jobItem.Item;return localassetmanager.getLocalItem(serverInfo.Id,libraryItem.Id).then(function(existingItem){var onDownloadParentItemsDone=function(localItem){return downloadMedia(apiClient,jobItem,localItem,options).then(function(){return getImages(apiClient,jobItem,localItem).then(function(){return getSubtitles(apiClient,jobItem,localItem)})})};return!existingItem||"queued"!==existingItem.SyncStatus&&"transferring"!==existingItem.SyncStatus&&"synced"!==existingItem.SyncStatus?(libraryItem.CanDelete=!1,libraryItem.CanDownload=!1,libraryItem.SupportsSync=!1,libraryItem.People=[],libraryItem.Chapters=[],libraryItem.Studios=[],libraryItem.SpecialFeatureCount=null,libraryItem.LocalTrailerCount=null,libraryItem.RemoteTrailers=[],localassetmanager.createLocalItem(libraryItem,serverInfo,jobItem).then(function(localItem){return console.log("[mediasync] getNewItem: createLocalItem completed"),localItem.SyncStatus="queued",downloadParentItems(apiClient,jobItem,localItem,serverInfo,options).then(function(){return onDownloadParentItemsDone(localItem)})})):(console.log("[mediasync] getNewItem: getLocalItem found existing item"),localassetmanager.enableRepeatDownloading()?onDownloadParentItemsDone(existingItem):Promise.resolve())})}function downloadParentItems(apiClient,jobItem,localItem,serverInfo,options){var p=Promise.resolve(),libraryItem=localItem.Item;(libraryItem.Type||"").toLowerCase();return libraryItem.SeriesId&&(p=p.then(function(){return downloadItem(apiClient,libraryItem,libraryItem.SeriesId,serverInfo)})),libraryItem.SeasonId&&(p=p.then(function(){return downloadItem(apiClient,libraryItem,libraryItem.SeasonId,serverInfo).then(function(seasonItem){return libraryItem.SeasonPrimaryImageTag=(seasonItem.Item.ImageTags||{}).Primary,Promise.resolve()})})),libraryItem.AlbumId&&(p=p.then(function(){return downloadItem(apiClient,libraryItem,libraryItem.AlbumId,serverInfo)})),p}function downloadItem(apiClient,libraryItem,itemId,serverInfo){return apiClient.getItem(apiClient.getCurrentUserId(),itemId).then(function(downloadedItem){return downloadedItem.CanDelete=!1,downloadedItem.CanDownload=!1,downloadedItem.SupportsSync=!1,downloadedItem.People=[],downloadedItem.SpecialFeatureCount=null,downloadedItem.BackdropImageTags=null,downloadedItem.ParentBackdropImageTags=null,downloadedItem.ParentArtImageTag=null,downloadedItem.ParentLogoImageTag=null,localassetmanager.createLocalItem(downloadedItem,serverInfo,null).then(function(localItem){return localassetmanager.addOrUpdateLocalItem(localItem).then(function(){return Promise.resolve(localItem)})})},function(err){return console.error("[mediasync] downloadItem failed: "+err.toString()),Promise.resolve(null)})}function downloadMedia(apiClient,jobItem,localItem,options){var url=apiClient.getUrl("Sync/JobItems/"+jobItem.SyncJobItemId+"/File",{api_key:apiClient.accessToken()}),localPath=localItem.LocalPath;return console.log("[mediasync] Downloading media. Url: "+url+". Local path: "+localPath),options=options||{},localassetmanager.downloadFile(url,localItem).then(function(result){return localItem.SyncStatus=result.isComplete?"synced":"transferring",localassetmanager.addOrUpdateLocalItem(localItem)})}function getImages(apiClient,jobItem,localItem){console.log("[mediasync] Begin getImages");var p=Promise.resolve(),libraryItem=localItem.Item,serverId=libraryItem.ServerId,mainImageTag=(libraryItem.ImageTags||{}).Primary;libraryItem.Id&&mainImageTag&&(p=p.then(function(){return downloadImage(localItem,apiClient,serverId,libraryItem.Id,mainImageTag,"Primary")}));var logoImageTag=(libraryItem.ImageTags||{}).Logo;libraryItem.Id&&logoImageTag&&(p=p.then(function(){return downloadImage(localItem,apiClient,serverId,libraryItem.Id,logoImageTag,"Logo")}));var artImageTag=(libraryItem.ImageTags||{}).Art;libraryItem.Id&&artImageTag&&(p=p.then(function(){return downloadImage(localItem,apiClient,serverId,libraryItem.Id,artImageTag,"Art")}));var bannerImageTag=(libraryItem.ImageTags||{}).Banner;libraryItem.Id&&bannerImageTag&&(p=p.then(function(){return downloadImage(localItem,apiClient,serverId,libraryItem.Id,bannerImageTag,"Banner")}));var thumbImageTag=(libraryItem.ImageTags||{}).Thumb;if(libraryItem.Id&&thumbImageTag&&(p=p.then(function(){return downloadImage(localItem,apiClient,serverId,libraryItem.Id,thumbImageTag,"Thumb")})),libraryItem.Id&&libraryItem.BackdropImageTags)for(var i=0;i2?Promise.resolve():reportOfflineActions(apiClient,serverInfo).then(function(){return getNewMedia(apiClient,serverInfo,options,downloadCount).then(function(){return syncData(apiClient,serverInfo,!1).then(function(){return console.log("[mediasync]************************************* Exit sync"),Promise.resolve()})})})})})},function(err){console.error(err.toString())})}}}); \ No newline at end of file +define(["localassetmanager"],function(localassetmanager){"use strict";function processDownloadStatus(apiClient,serverInfo,options){return console.log("[mediasync] Begin processDownloadStatus"),localassetmanager.resyncTransfers().then(function(){return localassetmanager.getServerItems(serverInfo.Id).then(function(items){console.log("[mediasync] Begin processDownloadStatus getServerItems completed");var p=Promise.resolve(),cnt=0;return items.filter(function(item){return"transferring"===item.SyncStatus||"queued"===item.SyncStatus}).forEach(function(item){p=p.then(function(){return reportTransfer(apiClient,item)}),cnt++}),p.then(function(){return console.log("[mediasync] Exit processDownloadStatus. Items reported: "+cnt.toString()),Promise.resolve()})})})}function reportTransfer(apiClient,item){return localassetmanager.getItemFileSize(item.LocalPath).then(function(size){return size>0?apiClient.reportSyncJobItemTransferred(item.SyncJobItemId).then(function(){return item.SyncStatus="synced",console.log("[mediasync] reportSyncJobItemTransferred called for "+item.LocalPath),localassetmanager.addOrUpdateLocalItem(item)},function(error){return console.error("[mediasync] Mediasync error on reportSyncJobItemTransferred",error),item.SyncStatus="error",localassetmanager.addOrUpdateLocalItem(item)}):localassetmanager.isDownloadFileInQueue(item.LocalPath).then(function(result){return result?Promise.resolve():(console.log("[mediasync] reportTransfer: Size is 0 and download no longer in queue. Deleting item."),localassetmanager.removeLocalItem(item).then(function(){return console.log("[mediasync] reportTransfer: Item deleted."),Promise.resolve()},function(err2){return console.log("[mediasync] reportTransfer: Failed to delete item.",err2),Promise.resolve()}))})},function(error){return console.error("[mediasync] reportTransfer: error on getItemFileSize. Deleting item.",error),localassetmanager.removeLocalItem(item).then(function(){return console.log("[mediasync] reportTransfer: Item deleted."),Promise.resolve()},function(err2){return console.log("[mediasync] reportTransfer: Failed to delete item.",err2),Promise.resolve()})})}function reportOfflineActions(apiClient,serverInfo){return console.log("[mediasync] Begin reportOfflineActions"),localassetmanager.getUserActions(serverInfo.Id).then(function(actions){return actions.length?apiClient.reportOfflineActions(actions).then(function(){return localassetmanager.deleteUserActions(actions).then(function(){return console.log("[mediasync] Exit reportOfflineActions (actions reported and deleted.)"),Promise.resolve()})},function(err){return console.error("[mediasync] error on apiClient.reportOfflineActions: "+err.toString()),localassetmanager.deleteUserActions(actions)}):(console.log("[mediasync] Exit reportOfflineActions (no actions)"),Promise.resolve())})}function syncData(apiClient,serverInfo){return console.log("[mediasync] Begin syncData"),localassetmanager.getServerItems(serverInfo.Id).then(function(items){var completedItems=items.filter(function(item){return item&&("synced"===item.SyncStatus||"error"===item.SyncStatus)}),request={TargetId:apiClient.deviceId(),LocalItemIds:completedItems.map(function(xitem){return xitem.ItemId})};return apiClient.syncData(request).then(function(result){return afterSyncData(apiClient,serverInfo,result).then(function(){return console.log("[mediasync] Exit syncData"),Promise.resolve()},function(err){return console.error("[mediasync] Error in syncData: "+err.toString()),Promise.resolve()})})})}function afterSyncData(apiClient,serverInfo,syncDataResult){console.log("[mediasync] Begin afterSyncData");var p=Promise.resolve();return syncDataResult.ItemIdsToRemove&&syncDataResult.ItemIdsToRemove.length>0&&syncDataResult.ItemIdsToRemove.forEach(function(itemId){p=p.then(function(){return removeLocalItem(itemId,serverInfo.Id)})}),p=p.then(function(){return removeObsoleteContainerItems(serverInfo.Id)}),p.then(function(){return console.log("[mediasync] Exit afterSyncData"),Promise.resolve()})}function removeObsoleteContainerItems(serverId){return console.log("[mediasync] Begin removeObsoleteContainerItems"),localassetmanager.removeObsoleteContainerItems(serverId)}function removeLocalItem(itemId,serverId){return console.log("[mediasync] Begin removeLocalItem"),localassetmanager.getLocalItem(serverId,itemId).then(function(item){return item?localassetmanager.removeLocalItem(item):Promise.resolve()},function(err2){return console.error("[mediasync] removeLocalItem: Failed: ",err2),Promise.resolve()})}function getNewMedia(apiClient,downloadCount){return console.log("[mediasync] Begin getNewMedia"),apiClient.getReadySyncItems(apiClient.deviceId()).then(function(jobItems){console.log("[mediasync] getReadySyncItems returned "+jobItems.length+" items");var p=Promise.resolve(),currentCount=downloadCount;return jobItems.forEach(function(jobItem){currentCount++<=10&&(p=p.then(function(){return getNewItem(jobItem,apiClient)}))}),p.then(function(){return console.log("[mediasync] Exit getNewMedia"),Promise.resolve()})},function(err){return console.error("[mediasync] getReadySyncItems: Failed: ",err),Promise.resolve()})}function afterMediaDownloaded(apiClient,jobItem,localItem){return console.log("[mediasync] Begin afterMediaDownloaded"),getImages(apiClient,jobItem,localItem).then(function(){var libraryItem=jobItem.Item;return downloadParentItems(apiClient,jobItem,libraryItem).then(function(){return getSubtitles(apiClient,jobItem,localItem)})})}function createLocalItem(libraryItem,jobItem){console.log("[localassetmanager] Begin createLocalItem");var item={Item:libraryItem,ItemId:libraryItem.Id,ServerId:libraryItem.ServerId,Id:libraryItem.Id};return jobItem&&(item.SyncJobItemId=jobItem.SyncJobItemId),console.log("[localassetmanager] End createLocalItem"),item}function getNewItem(jobItem,apiClient){console.log("[mediasync] Begin getNewItem");var libraryItem=jobItem.Item;return localassetmanager.getLocalItem(libraryItem.ServerId,libraryItem.Id).then(function(existingItem){if(existingItem&&("queued"===existingItem.SyncStatus||"transferring"===existingItem.SyncStatus||"synced"===existingItem.SyncStatus)&&(console.log("[mediasync] getNewItem: getLocalItem found existing item"),localassetmanager.enableBackgroundCompletion()))return Promise.resolve();libraryItem.CanDelete=!1,libraryItem.CanDownload=!1,libraryItem.SupportsSync=!1,libraryItem.People=[],libraryItem.Chapters=[],libraryItem.Studios=[],libraryItem.SpecialFeatureCount=null,libraryItem.LocalTrailerCount=null,libraryItem.RemoteTrailers=[];var localItem=createLocalItem(libraryItem,jobItem);return localItem.SyncStatus="queued",downloadMedia(apiClient,jobItem,localItem)})}function downloadParentItems(apiClient,jobItem,libraryItem){var p=Promise.resolve();return libraryItem.SeriesId&&(p=p.then(function(){return downloadItem(apiClient,libraryItem.SeriesId)})),libraryItem.SeasonId&&(p=p.then(function(){return downloadItem(apiClient,libraryItem.SeasonId).then(function(seasonItem){return libraryItem.SeasonPrimaryImageTag=(seasonItem.Item.ImageTags||{}).Primary,Promise.resolve()})})),libraryItem.AlbumId&&(p=p.then(function(){return downloadItem(apiClient,libraryItem.AlbumId)})),p}function downloadItem(apiClient,itemId){return apiClient.getItem(apiClient.getCurrentUserId(),itemId).then(function(downloadedItem){downloadedItem.CanDelete=!1,downloadedItem.CanDownload=!1,downloadedItem.SupportsSync=!1,downloadedItem.People=[],downloadedItem.SpecialFeatureCount=null,downloadedItem.BackdropImageTags=null,downloadedItem.ParentBackdropImageTags=null,downloadedItem.ParentArtImageTag=null,downloadedItem.ParentLogoImageTag=null;var localItem=createLocalItem(downloadedItem,null);return localassetmanager.addOrUpdateLocalItem(localItem).then(function(){return Promise.resolve(localItem)},function(err){return console.error("[mediasync] downloadItem failed: "+err.toString()),Promise.resolve(null)})})}function ensureLocalPathParts(localItem,jobItem){if(!localItem.LocalPathParts){var libraryItem=localItem.Item,parts=localassetmanager.getDirectoryPath(libraryItem);parts.push(localassetmanager.getLocalFileName(libraryItem,jobItem.OriginalFileName)),localItem.LocalPathParts=parts}}function downloadMedia(apiClient,jobItem,localItem){console.log("[mediasync] downloadMedia: start.");var url=apiClient.getUrl("Sync/JobItems/"+jobItem.SyncJobItemId+"/File",{api_key:apiClient.accessToken()});return ensureLocalPathParts(localItem,jobItem),localassetmanager.downloadFile(url,localItem).then(function(result){console.log("[mediasync] downloadMedia-downloadFile returned path: "+result.path);var localPath=result.path,libraryItem=localItem.Item;if(localPath&&libraryItem.MediaSources)for(var i=0;i2?Promise.resolve():reportOfflineActions(apiClient,serverInfo).then(function(){return getNewMedia(apiClient,downloadCount).then(function(){return syncData(apiClient,serverInfo).then(function(){return console.log("[mediasync]************************************* Exit sync"),Promise.resolve()})})})})})},function(err){console.error(err.toString())})}:self.sync=function(apiClient,serverInfo,options){return console.log("[mediasync]************************************* Start sync"),checkLocalFileExistence(apiClient,serverInfo,options).then(function(){return syncData(apiClient,serverInfo).then(function(){return processDownloadStatus(apiClient,serverInfo,options).then(function(){return localassetmanager.getDownloadItemCount().then(function(downloadCount){return!0===options.syncCheckProgressOnly&&downloadCount>2?Promise.resolve():reportOfflineActions(apiClient,serverInfo).then(function(){return getNewMedia(apiClient,downloadCount).then(function(){return syncData(apiClient,serverInfo)})})})})})},function(err){console.error(err.toString())})}}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-apiclient/sync/serversync.js b/dashboard-ui/bower_components/emby-apiclient/sync/serversync.js index 0edc66d855..870d21fc06 100644 --- a/dashboard-ui/bower_components/emby-apiclient/sync/serversync.js +++ b/dashboard-ui/bower_components/emby-apiclient/sync/serversync.js @@ -1 +1 @@ -define([],function(){"use strict";function performSync(connectionManager,server,options){console.log("ServerSync.performSync to server: "+server.Id),options=options||{};var uploadPhotos=options.uploadPhotos!==!1;options.cameraUploadServers&&options.cameraUploadServers.indexOf(server.Id)===-1&&(uploadPhotos=!1);var promise=uploadPhotos?uploadContent(connectionManager,server,options):Promise.resolve();return promise.then(function(){return syncMedia(connectionManager,server,options)})}function uploadContent(connectionManager,server,options){return new Promise(function(resolve,reject){require(["contentuploader"],function(ContentUploader){var uploader=new ContentUploader;uploader.uploadImages(connectionManager,server).then(resolve,reject)})})}function syncMedia(connectionManager,server,options){return new Promise(function(resolve,reject){require(["mediasync"],function(MediaSync){var apiClient=connectionManager.getApiClient(server.Id);(new MediaSync).sync(apiClient,server,options).then(resolve,reject)})})}function ServerSync(){}return ServerSync.prototype.sync=function(connectionManager,server,options){if(!server.AccessToken&&!server.ExchangeToken)return console.log("Skipping sync to server "+server.Id+" because there is no saved authentication information."),Promise.resolve();var connectionOptions={updateDateLastAccessed:!1,enableWebSocket:!1,reportCapabilities:!1,enableAutomaticBitrateDetection:!1};return connectionManager.connectToServer(server,connectionOptions).then(function(result){return result.State===MediaBrowser.ConnectionState.SignedIn?performSync(connectionManager,server,options):(console.log("Unable to connect to server id: "+server.Id),Promise.reject())},function(err){throw console.log("Unable to connect to server id: "+server.Id),err})},ServerSync}); \ No newline at end of file +define([],function(){"use strict";function performSync(connectionManager,server,options){console.log("ServerSync.performSync to server: "+server.Id),options=options||{};var cameraUploadServers=options.cameraUploadServers||[];console.log("ServerSync cameraUploadServers: "+JSON.stringify(cameraUploadServers));var uploadPhotos=-1!==cameraUploadServers.indexOf(server.Id);return console.log("ServerSync uploadPhotos: "+uploadPhotos),(uploadPhotos?uploadContent(connectionManager,server,options):Promise.resolve()).then(function(){return syncMedia(connectionManager,server,options)})}function uploadContent(connectionManager,server,options){return new Promise(function(resolve,reject){require(["contentuploader"],function(ContentUploader){(new ContentUploader).uploadImages(connectionManager,server).then(resolve,reject)})})}function syncMedia(connectionManager,server,options){return new Promise(function(resolve,reject){require(["mediasync"],function(MediaSync){var apiClient=connectionManager.getApiClient(server.Id);(new MediaSync).sync(apiClient,server,options).then(resolve,reject)})})}function ServerSync(){}return ServerSync.prototype.sync=function(connectionManager,server,options){if(!server.AccessToken&&!server.ExchangeToken)return console.log("Skipping sync to server "+server.Id+" because there is no saved authentication information."),Promise.resolve();var connectionOptions={updateDateLastAccessed:!1,enableWebSocket:!1,reportCapabilities:!1,enableAutomaticBitrateDetection:!1};return connectionManager.connectToServer(server,connectionOptions).then(function(result){return"SignedIn"===result.State?performSync(connectionManager,server,options):(console.log("Unable to connect to server id: "+server.Id),Promise.reject())},function(err){throw console.log("Unable to connect to server id: "+server.Id),err})},ServerSync}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-apiclient/sync/useractionrepository.js b/dashboard-ui/bower_components/emby-apiclient/sync/useractionrepository.js index a48bf8a896..106d0b3925 100644 --- a/dashboard-ui/bower_components/emby-apiclient/sync/useractionrepository.js +++ b/dashboard-ui/bower_components/emby-apiclient/sync/useractionrepository.js @@ -1 +1 @@ -define([],function(){"use strict";function getDb(callback){var db=databaseInstance;if(db)return void callback(db);var request=indexedDB.open(dbName,dbVersion);request.onerror=function(event){},request.onupgradeneeded=function(event){var db=event.target.result,objectStore=db.createObjectStore(dbName);objectStore.transaction.oncomplete=function(event){callback(db)}},request.onsuccess=function(event){var db=event.target.result;callback(db)}}function getByServerId(serverId){return getAll().then(function(items){return items.filter(function(item){return item.ServerId===serverId})})}function getAll(){return new Promise(function(resolve,reject){getDb(function(db){var request,storeName=dbName,transaction=db.transaction([storeName],"readonly"),objectStore=transaction.objectStore(storeName);if("getAll"in objectStore)request=objectStore.getAll(null,1e4),request.onsuccess=function(event){resolve(event.target.result)};else{var results=[];request=objectStore.openCursor(),request.onsuccess=function(event){var cursor=event.target.result;cursor?(results.push(cursor.value),cursor.continue()):resolve(results)}}request.onerror=reject})})}function get(key){return new Promise(function(resolve,reject){getDb(function(db){var storeName=dbName,transaction=db.transaction([storeName],"readonly"),objectStore=transaction.objectStore(storeName),request=objectStore.get(key);request.onerror=reject,request.onsuccess=function(event){resolve(request.result)}})})}function set(key,val){return new Promise(function(resolve,reject){getDb(function(db){var storeName=dbName,transaction=db.transaction([storeName],"readwrite"),objectStore=transaction.objectStore(storeName),request=objectStore.put(val,key);request.onerror=reject,request.onsuccess=resolve})})}function remove(key){return new Promise(function(resolve,reject){getDb(function(db){var storeName=dbName,transaction=db.transaction([storeName],"readwrite"),objectStore=transaction.objectStore(storeName),request=objectStore.delete(key);request.onerror=reject,request.onsuccess=resolve})})}function clear(){return new Promise(function(resolve,reject){getDb(function(db){var storeName=dbName,transaction=db.transaction([storeName],"readwrite"),objectStore=transaction.objectStore(storeName),request=objectStore.clear();request.onerror=reject,request.onsuccess=resolve})})}var databaseInstance,indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,dbName=(self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction||{READ_WRITE:"readwrite"},self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange,"useractions"),dbVersion=1;return{get:get,set:set,remove:remove,clear:clear,getAll:getAll,getByServerId:getByServerId}}); \ No newline at end of file +define([],function(){"use strict";function getDb(callback){var db=databaseInstance;if(db)return void callback(db);var request=indexedDB.open(dbName,dbVersion);request.onerror=function(event){},request.onupgradeneeded=function(event){var db=event.target.result;db.createObjectStore(dbName).transaction.oncomplete=function(event){callback(db)}},request.onsuccess=function(event){var db=event.target.result;callback(db)}}function getByServerId(serverId){return getAll().then(function(items){return items.filter(function(item){return item.ServerId===serverId})})}function getAll(){return new Promise(function(resolve,reject){getDb(function(db){var request,storeName=dbName,transaction=db.transaction([storeName],"readonly"),objectStore=transaction.objectStore(storeName);if("getAll"in objectStore)request=objectStore.getAll(null,1e4),request.onsuccess=function(event){resolve(event.target.result)};else{var results=[];request=objectStore.openCursor(),request.onsuccess=function(event){var cursor=event.target.result;cursor?(results.push(cursor.value),cursor.continue()):resolve(results)}}request.onerror=reject})})}function get(key){return new Promise(function(resolve,reject){getDb(function(db){var storeName=dbName,transaction=db.transaction([storeName],"readonly"),objectStore=transaction.objectStore(storeName),request=objectStore.get(key);request.onerror=reject,request.onsuccess=function(event){resolve(request.result)}})})}function set(key,val){return new Promise(function(resolve,reject){getDb(function(db){var storeName=dbName,transaction=db.transaction([storeName],"readwrite"),objectStore=transaction.objectStore(storeName),request=objectStore.put(val,key);request.onerror=reject,request.onsuccess=resolve})})}function remove(key){return new Promise(function(resolve,reject){getDb(function(db){var storeName=dbName,transaction=db.transaction([storeName],"readwrite"),objectStore=transaction.objectStore(storeName),request=objectStore.delete(key);request.onerror=reject,request.onsuccess=resolve})})}function clear(){return new Promise(function(resolve,reject){getDb(function(db){var storeName=dbName,transaction=db.transaction([storeName],"readwrite"),objectStore=transaction.objectStore(storeName),request=objectStore.clear();request.onerror=reject,request.onsuccess=resolve})})}var databaseInstance,indexedDB=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB,dbName=(self.IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange,"useractions"),dbVersion=1;return{get:get,set:set,remove:remove,clear:clear,getAll:getAll,getByServerId:getByServerId}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-apiclient/wakeonlan.js b/dashboard-ui/bower_components/emby-apiclient/wakeonlan.js index f2f33ebcfa..ac74370479 100644 --- a/dashboard-ui/bower_components/emby-apiclient/wakeonlan.js +++ b/dashboard-ui/bower_components/emby-apiclient/wakeonlan.js @@ -1 +1 @@ -define([],function(){"use strict";function send(info){return Promise.resolve()}return{send:send}}); \ No newline at end of file +define([],function(){"use strict";function send(info){return Promise.reject()}function isSupported(){return!1}return{send:send,isSupported:isSupported}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.css b/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.css index a7b499846c..78cc17f64e 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.css +++ b/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.css @@ -1 +1 @@ -.actionSheetContent,.actionSheetScroller{-webkit-box-orient:vertical;-webkit-box-direction:normal}.actionSheet{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;padding:0;border:none;max-height:84%;-webkit-border-radius:1px!important;border-radius:1px!important}.actionSheetContent,.actionSheetMenuItem{display:-webkit-box;display:-webkit-flex}.actionsheet-not-fullscreen{max-width:90%;max-height:90%}.actionsheet-fullscreen{max-height:none;-webkit-border-radius:0!important;border-radius:0!important}.actionSheetContent-centered{text-align:center;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.actionSheetContent{margin:0!important;padding:.4em 0!important;-webkit-flex-direction:column;flex-direction:column;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1;-webkit-box-align:center;-webkit-align-items:center;align-items:center;text-align:center;overflow:hidden}.actionSheetMenuItem{padding:.7em 1.6em;margin:0;text-transform:none;text-align:inherit;display:flex;font-weight:inherit;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-flex-shrink:0;flex-shrink:0;background:0 0;-webkit-box-shadow:none;box-shadow:none}.actionSheetMenuItem:focus{-webkit-transform:none!important;transform:none!important}.actionSheetMenuItem-extraspacing{padding:.9em 2em .9em 1.6em}.actionSheetItemText{white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;vertical-align:middle;-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}.actionSheetItemSecondaryText{opacity:.7;font-size:90%;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;-webkit-flex-shrink:0;flex-shrink:0;margin-left:5em}.actionSheetItemIcon{margin-right:1.5em!important}.actionSheetScroller{margin-bottom:0!important;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;width:100%}.actionSheetScroller-tv{max-height:64%;max-width:60%;width:auto}.actionSheetTitle{margin:.5em 0!important;padding:0 1em;-webkit-box-flex:0;-webkit-flex-grow:0;flex-grow:0}.actionSheetText{padding:0 1em;-webkit-box-flex:0;-webkit-flex-grow:0;flex-grow:0}.actionsheet-largeFont{font-size:102%}.actionsheet-xlargeFont{font-size:112%}.btnCloseActionSheet{position:fixed;top:.75em;left:.5em}.actionsheetDivider{height:.07em;margin:.25em 0;-webkit-flex-shrink:0;flex-shrink:0} \ No newline at end of file +.actionSheet,.actionSheetContent{display:-webkit-box;display:-webkit-flex}.actionSheetContent,.actionSheetScroller{-webkit-box-orient:vertical;-webkit-box-direction:normal}.actionSheet{display:flex;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;padding:0;border:none;max-height:84%;-webkit-border-radius:.1em!important;border-radius:.1em!important}.actionsheet-not-fullscreen{max-width:90%;max-height:90%}.actionsheet-fullscreen{max-height:none;-webkit-border-radius:0!important;border-radius:0!important}.actionSheetContent-centered{text-align:center;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.actionSheetContent{margin:0!important;padding:.4em 0!important;-webkit-flex-direction:column;flex-direction:column;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1;overflow:hidden}.actionSheetMenuItem{font-weight:inherit;-webkit-box-shadow:none;box-shadow:none;-webkit-flex-shrink:0;flex-shrink:0}.actionSheetMenuItem:focus{-webkit-transform:none!important;transform:none!important}.actionsheetListItemBody{padding:.4em 1em .4em .6em!important}.actionSheetItemText{white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;vertical-align:middle;-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}.actionSheetItemAsideText{opacity:.7;font-size:90%;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;-webkit-flex-shrink:0;flex-shrink:0;margin-left:5em;margin-right:.5em}.actionSheetScroller{margin-bottom:0!important;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;width:100%}.actionSheetScroller-tv{max-height:64%;max-width:60%;width:auto}.actionsheetDivider{height:.07em;margin:.25em 0;-webkit-flex-shrink:0;flex-shrink:0}.actionSheetTitle{margin:.6em 0 .7em!important;padding:0 .9em;-webkit-box-flex:0;-webkit-flex-grow:0;flex-grow:0}.actionSheetText{padding:0 1em;-webkit-box-flex:0;-webkit-flex-grow:0;flex-grow:0}.actionsheetMenuItemIcon{margin:0 .85em 0 .45em!important;padding:0!important}.actionsheet-xlargeFont{font-size:112%!important}.btnCloseActionSheet{position:fixed;top:.75em;left:.5em} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.js b/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.js index c721f31fc7..deff4b9903 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.js +++ b/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.js @@ -1 +1 @@ -define(["dialogHelper","layoutManager","globalize","browser","dom","emby-button","css!./actionsheet","material-icons","scrollStyles"],function(dialogHelper,layoutManager,globalize,browser,dom){"use strict";function getOffsets(elems){var doc=document,results=[];if(!doc)return results;for(var box,elem,i=0,length=elems.length;i0&&(pos.left-=overflowX+20),overflowY>0&&(pos.top-=overflowY+20),pos.top+=options.offsetTop||0,pos.left+=options.offsetLeft||0,pos.top=Math.max(pos.top,10),pos.left=Math.max(pos.left,10),pos}function centerFocus(elem,horiz,on){require(["scrollHelper"],function(scrollHelper){var fn=on?"on":"off";scrollHelper.centerFocus[fn](elem,horiz)})}function show(options){var isFullscreen,dialogOptions={removeOnClose:!0,enableHistory:options.enableHistory,scrollY:!1},backButton=!1;layoutManager.tv?(dialogOptions.size="fullscreen",isFullscreen=!0,backButton=!0,dialogOptions.autoFocus=!0):(dialogOptions.modal=!1,dialogOptions.entryAnimation=options.entryAnimation,dialogOptions.exitAnimation=options.exitAnimation,dialogOptions.entryAnimationDuration=options.entryAnimationDuration||140,dialogOptions.exitAnimationDuration=options.exitAnimationDuration||100,dialogOptions.autoFocus=!1);var dlg=dialogHelper.createDialog(dialogOptions);isFullscreen?dlg.classList.add("actionsheet-fullscreen"):dlg.classList.add("actionsheet-not-fullscreen");var extraSpacing=!layoutManager.tv;extraSpacing&&dlg.classList.add("actionsheet-extraSpacing"),layoutManager.mobile?dlg.classList.add("actionsheet-xlargeFont"):layoutManager.desktop&&dlg.classList.add("actionsheet-largeFont"),dlg.classList.add("actionSheet"),options.dialogClass&&dlg.classList.add(options.dialogClass);var html="",scrollClassName=layoutManager.tv?"scrollY smoothScrollY hiddenScrollY":"scrollY",style="";if(options.items.length>20){var minWidth=dom.getWindowSize().innerWidth>=300?240:200;style+="min-width:"+minWidth+"px;"}var i,length,option,renderIcon=!1;for(i=0,length=options.items.length;i');var center=options.title&&!renderIcon;html+=center?'
':'
',options.title&&(layoutManager.tv?(html+='

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

"):(html+='

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

")),options.text&&(html+='

',html+=options.text,html+="

");var scrollerClassName="actionSheetScroller";layoutManager.tv&&(scrollerClassName+=" actionSheetScroller-tv focuscontainer-x focuscontainer-y"),html+='
';var menuItemClass="actionSheetMenuItem";options.menuItemClass&&(menuItemClass+=" "+options.menuItemClass),extraSpacing&&(menuItemClass+=" actionSheetMenuItem-extraspacing");var actionSheetItemTextClass="actionSheetItemText";for(i=0,length=options.items.length;i
';else{var autoFocus=option.selected?" autoFocus":"",optionId=null==option.id||""===option.id?option.value:option.id;html+="',option.icon?html+=''+option.icon+"":renderIcon&&!center&&(html+=''),html+='
'+(option.name||option.textContent||option.innerText)+"
",option.secondaryText&&(html+='
'+option.secondaryText+"
"),html+=""}options.showCancel&&(html+='
',html+='",html+="
"),html+="
",dlg.innerHTML=html,layoutManager.tv&¢erFocus(dlg.querySelector(".actionSheetScroller"),!1,!0);var btnCloseActionSheet=dlg.querySelector(".btnCloseActionSheet");btnCloseActionSheet&&dlg.querySelector(".btnCloseActionSheet").addEventListener("click",function(){dialogHelper.close(dlg)});var selectedId,timeout;return options.timeout&&(timeout=setTimeout(function(){dialogHelper.close(dlg)},options.timeout)),new Promise(function(resolve,reject){var isResolved;dlg.addEventListener("click",function(e){var actionSheetMenuItem=dom.parentWithClass(e.target,"actionSheetMenuItem");actionSheetMenuItem&&(selectedId=actionSheetMenuItem.getAttribute("data-id"),options.resolveOnClick&&(resolve(selectedId),isResolved=!0),dialogHelper.close(dlg))}),dlg.addEventListener("close",function(){layoutManager.tv&¢erFocus(dlg.querySelector(".actionSheetScroller"),!1,!1),timeout&&(clearTimeout(timeout),timeout=null),isResolved||(null!=selectedId?(options.callback&&options.callback(selectedId),resolve(selectedId)):reject())}),dialogHelper.open(dlg);var setPositions=function(){var pos=options.positionTo&&"fullscreen"!==dialogOptions.size?getPosition(options,dlg):null;pos&&(dlg.style.position="fixed",dlg.style.margin=0,dlg.style.left=pos.left+"px",dlg.style.top=pos.top+"px")};browser.safari?setTimeout(setPositions,0):setPositions()})}return{show:show}}); \ No newline at end of file +define(["dialogHelper","layoutManager","globalize","browser","dom","emby-button","css!./actionsheet","material-icons","scrollStyles","listViewStyle"],function(dialogHelper,layoutManager,globalize,browser,dom){"use strict";function getOffsets(elems){var doc=document,results=[];if(!doc)return results;for(var box,elem,i=0,length=elems.length;i0&&(pos.left-=overflowX+20),overflowY>0&&(pos.top-=overflowY+20),pos.top+=options.offsetTop||0,pos.left+=options.offsetLeft||0,pos.top=Math.max(pos.top,10),pos.left=Math.max(pos.left,10),pos}function centerFocus(elem,horiz,on){require(["scrollHelper"],function(scrollHelper){var fn=on?"on":"off";scrollHelper.centerFocus[fn](elem,horiz)})}function show(options){var isFullscreen,dialogOptions={removeOnClose:!0,enableHistory:options.enableHistory,scrollY:!1};layoutManager.tv?(dialogOptions.size="fullscreen",isFullscreen=!0,!0,dialogOptions.autoFocus=!0):(dialogOptions.modal=!1,dialogOptions.entryAnimation=options.entryAnimation,dialogOptions.exitAnimation=options.exitAnimation,dialogOptions.entryAnimationDuration=options.entryAnimationDuration||140,dialogOptions.exitAnimationDuration=options.exitAnimationDuration||100,dialogOptions.autoFocus=!1);var dlg=dialogHelper.createDialog(dialogOptions);isFullscreen?dlg.classList.add("actionsheet-fullscreen"):dlg.classList.add("actionsheet-not-fullscreen"),dlg.classList.add("actionSheet"),options.dialogClass&&dlg.classList.add(options.dialogClass);var html="",scrollClassName=layoutManager.tv?"scrollY smoothScrollY hiddenScrollY":"scrollY",style="";if(options.items.length>20){style+="min-width:"+(dom.getWindowSize().innerWidth>=300?240:200)+"px;"}var i,length,option,itemIcon,renderIcon=!1,icons=[];for(i=0,length=options.items.length;i');var center=options.title&&!renderIcon;center||layoutManager.tv?html+='
':html+='
',options.title&&(html+='

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

"),options.text&&(html+='

',html+=options.text,html+="

");var scrollerClassName="actionSheetScroller";layoutManager.tv&&(scrollerClassName+=" actionSheetScroller-tv focuscontainer-x focuscontainer-y"),html+='
';var menuItemClass="listItem listItem-button actionSheetMenuItem";for((options.border||options.shaded)&&(menuItemClass+=" listItem-border"),options.menuItemClass&&(menuItemClass+=" "+options.menuItemClass),layoutManager.tv&&(menuItemClass+=" listItem-focusscale"),layoutManager.mobile&&(menuItemClass+=" actionsheet-xlargeFont"),i=0,length=options.items.length;i
';else{var autoFocus=option.selected&&layoutManager.tv?" autoFocus":"",optionId=null==option.id||""===option.id?option.value:option.id;html+="',itemIcon=icons[i],itemIcon?html+=''+itemIcon+"":renderIcon&&!center&&(html+=''),html+='
',html+='
',html+=option.name||option.textContent||option.innerText,html+="
",option.secondaryText&&(html+='
',html+=option.secondaryText,html+="
"),html+="
",option.asideText&&(html+='
',html+=option.asideText,html+="
"),html+=""}options.showCancel&&(html+='
',html+='",html+="
"),html+="
",dlg.innerHTML=html,layoutManager.tv&¢erFocus(dlg.querySelector(".actionSheetScroller"),!1,!0),dlg.querySelector(".btnCloseActionSheet")&&dlg.querySelector(".btnCloseActionSheet").addEventListener("click",function(){dialogHelper.close(dlg)});var selectedId,timeout;return options.timeout&&(timeout=setTimeout(function(){dialogHelper.close(dlg)},options.timeout)),new Promise(function(resolve,reject){var isResolved;dlg.addEventListener("click",function(e){var actionSheetMenuItem=dom.parentWithClass(e.target,"actionSheetMenuItem");actionSheetMenuItem&&(selectedId=actionSheetMenuItem.getAttribute("data-id"),options.resolveOnClick&&(options.resolveOnClick.indexOf?-1!==options.resolveOnClick.indexOf(selectedId)&&(resolve(selectedId),isResolved=!0):(resolve(selectedId),isResolved=!0)),dialogHelper.close(dlg))}),dlg.addEventListener("close",function(){layoutManager.tv&¢erFocus(dlg.querySelector(".actionSheetScroller"),!1,!1),timeout&&(clearTimeout(timeout),timeout=null),isResolved||(null!=selectedId?(options.callback&&options.callback(selectedId),resolve(selectedId)):reject())}),dialogHelper.open(dlg);var pos=options.positionTo&&"fullscreen"!==dialogOptions.size?getPosition(options,dlg):null;pos&&(dlg.style.position="fixed",dlg.style.margin=0,dlg.style.left=pos.left+"px",dlg.style.top=pos.top+"px")})}return{show:show}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/alphapicker/alphapicker.js b/dashboard-ui/bower_components/emby-webcomponents/alphapicker/alphapicker.js index 52377c4ddf..34980ad8cc 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/alphapicker/alphapicker.js +++ b/dashboard-ui/bower_components/emby-webcomponents/alphapicker/alphapicker.js @@ -1 +1 @@ -define(["focusManager","layoutManager","dom","css!./style.css","paper-icon-button-light","material-icons"],function(focusManager,layoutManager,dom){"use strict";function focus(){var scope=this,selected=scope.querySelector("."+selectedButtonClass);selected?focusManager.focus(selected):focusManager.autoFocus(scope,!0)}function getAlphaPickerButtonClassName(vertical){var alphaPickerButtonClassName="alphaPickerButton";return layoutManager.tv&&(alphaPickerButtonClassName+=" alphaPickerButton-tv"),vertical&&(alphaPickerButtonClassName+=" alphaPickerButton-vertical"),alphaPickerButtonClassName}function getLetterButton(l,vertical){return'"}function mapLetters(letters,vertical){return letters.map(function(l){return getLetterButton(l,vertical)})}function render(element,options){element.classList.add("alphaPicker"),layoutManager.tv&&element.classList.add("alphaPicker-tv");var vertical=element.classList.contains("alphaPicker-vertical");vertical||element.classList.add("focuscontainer-x");var letters,html="",alphaPickerButtonClassName=getAlphaPickerButtonClassName(vertical),rowClassName="alphaPickerRow";vertical&&(rowClassName+=" alphaPickerRow-vertical"),html+='
',"keyboard"===options.mode?html+='':(letters=["#"],html+=mapLetters(letters,vertical).join("")),letters=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],html+=mapLetters(letters,vertical).join(""),"keyboard"===options.mode?(html+='',html+="
",letters=["0","1","2","3","4","5","6","7","8","9"],html+='
',html+="
",html+=mapLetters(letters,vertical).join(""),html+="
"):html+="
",element.innerHTML=html,element.classList.add("focusable"),element.focus=focus}function AlphaPicker(options){function onItemFocusTimeout(){itemFocusTimeout=null,self.value(itemFocusValue)}function onAlphaFocusTimeout(){if(alphaFocusTimeout=null,document.activeElement===alphaFocusedElement){var value=alphaFocusedElement.getAttribute("data-value");self.value(value,!0)}}function onAlphaPickerInKeyboardModeClick(e){var alphaPickerButton=dom.parentWithClass(e.target,"alphaPickerButton");if(alphaPickerButton){var value=alphaPickerButton.getAttribute("data-value");element.dispatchEvent(new CustomEvent("alphavalueclicked",{cancelable:!1,detail:{value:value}}))}}function onAlphaPickerClick(e){var alphaPickerButton=dom.parentWithClass(e.target,"alphaPickerButton");if(alphaPickerButton){var value=alphaPickerButton.getAttribute("data-value");(this._currentValue||"").toUpperCase()===value.toUpperCase()?self.value(null,!0):self.value(value,!0)}}function onAlphaPickerFocusIn(e){alphaFocusTimeout&&(clearTimeout(alphaFocusTimeout),alphaFocusTimeout=null);var alphaPickerButton=dom.parentWithClass(e.target,"alphaPickerButton");alphaPickerButton&&(alphaFocusedElement=alphaPickerButton,alphaFocusTimeout=setTimeout(onAlphaFocusTimeout,100))}function onItemsFocusIn(e){var item=dom.parentWithClass(e.target,itemClass);if(item){var prefix=item.getAttribute("data-prefix");prefix&&prefix.length&&(itemFocusValue=prefix[0],itemFocusTimeout&&clearTimeout(itemFocusTimeout),itemFocusTimeout=setTimeout(onItemFocusTimeout,100))}}var self=this;this.options=options;var itemFocusValue,itemFocusTimeout,alphaFocusedElement,alphaFocusTimeout,element=options.element,itemsContainer=options.itemsContainer,itemClass=options.itemClass;self.enabled=function(enabled){enabled?(itemsContainer&&itemsContainer.addEventListener("focus",onItemsFocusIn,!0),"keyboard"===options.mode&&element.addEventListener("click",onAlphaPickerInKeyboardModeClick),"click"!==options.valueChangeEvent?element.addEventListener("focus",onAlphaPickerFocusIn,!0):element.addEventListener("click",onAlphaPickerClick.bind(this))):(itemsContainer&&itemsContainer.removeEventListener("focus",onItemsFocusIn,!0),element.removeEventListener("click",onAlphaPickerInKeyboardModeClick),element.removeEventListener("focus",onAlphaPickerFocusIn,!0),element.removeEventListener("click",onAlphaPickerClick.bind(this)))},render(element,options),this.enabled(!0),this.visible(!0)}var selectedButtonClass="alphaPickerButton-selected";return AlphaPicker.prototype.value=function(value,applyValue){var btn,selected,element=this.options.element;if(void 0!==value)if(null!=value){if(value=value.toUpperCase(),this._currentValue=value,"keyboard"!==this.options.mode){selected=element.querySelector("."+selectedButtonClass);try{btn=element.querySelector(".alphaPickerButton[data-value='"+value+"']")}catch(err){console.log("Error in querySelector: "+err)}btn&&btn!==selected&&btn.classList.add(selectedButtonClass),selected&&selected!==btn&&selected.classList.remove(selectedButtonClass)}}else this._currentValue=value,selected=element.querySelector("."+selectedButtonClass),selected&&selected.classList.remove(selectedButtonClass);return applyValue&&element.dispatchEvent(new CustomEvent("alphavaluechanged",{cancelable:!1,detail:{value:value}})),this._currentValue},AlphaPicker.prototype.on=function(name,fn){var element=this.options.element;element.addEventListener(name,fn)},AlphaPicker.prototype.off=function(name,fn){var element=this.options.element;element.removeEventListener(name,fn)},AlphaPicker.prototype.visible=function(visible){var element=this.options.element;element.style.visibility=visible?"visible":"hidden"},AlphaPicker.prototype.values=function(){for(var element=this.options.element,elems=element.querySelectorAll(".alphaPickerButton"),values=[],i=0,length=elems.length;i'+l+""}function mapLetters(letters,vertical){return letters.map(function(l){return getLetterButton(l,vertical)})}function render(element,options){element.classList.add("alphaPicker"),layoutManager.tv&&element.classList.add("alphaPicker-tv");var vertical=element.classList.contains("alphaPicker-vertical");vertical||element.classList.add("focuscontainer-x");var letters,html="",alphaPickerButtonClassName=getAlphaPickerButtonClassName(vertical),rowClassName="alphaPickerRow";vertical&&(rowClassName+=" alphaPickerRow-vertical"),html+='
',"keyboard"===options.mode?html+='':(letters=["#"],html+=mapLetters(letters,vertical).join("")),letters=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],html+=mapLetters(letters,vertical).join(""),"keyboard"===options.mode?(html+='',html+="
",letters=["0","1","2","3","4","5","6","7","8","9"],html+='
',html+="
",html+=mapLetters(letters,vertical).join(""),html+="
"):html+="
",element.innerHTML=html,element.classList.add("focusable"),element.focus=focus}function AlphaPicker(options){function onItemFocusTimeout(){itemFocusTimeout=null,self.value(itemFocusValue)}function onAlphaFocusTimeout(){if(alphaFocusTimeout=null,document.activeElement===alphaFocusedElement){var value=alphaFocusedElement.getAttribute("data-value");self.value(value,!0)}}function onAlphaPickerInKeyboardModeClick(e){var alphaPickerButton=dom.parentWithClass(e.target,"alphaPickerButton");if(alphaPickerButton){var value=alphaPickerButton.getAttribute("data-value");element.dispatchEvent(new CustomEvent("alphavalueclicked",{cancelable:!1,detail:{value:value}}))}}function onAlphaPickerClick(e){var alphaPickerButton=dom.parentWithClass(e.target,"alphaPickerButton");if(alphaPickerButton){var value=alphaPickerButton.getAttribute("data-value");(this._currentValue||"").toUpperCase()===value.toUpperCase()?self.value(null,!0):self.value(value,!0)}}function onAlphaPickerFocusIn(e){alphaFocusTimeout&&(clearTimeout(alphaFocusTimeout),alphaFocusTimeout=null);var alphaPickerButton=dom.parentWithClass(e.target,"alphaPickerButton");alphaPickerButton&&(alphaFocusedElement=alphaPickerButton,alphaFocusTimeout=setTimeout(onAlphaFocusTimeout,600))}function onItemsFocusIn(e){var item=dom.parentWithClass(e.target,itemClass);if(item){var prefix=item.getAttribute("data-prefix");prefix&&prefix.length&&(itemFocusValue=prefix[0],itemFocusTimeout&&clearTimeout(itemFocusTimeout),itemFocusTimeout=setTimeout(onItemFocusTimeout,100))}}var self=this;this.options=options;var itemFocusValue,itemFocusTimeout,alphaFocusedElement,alphaFocusTimeout,element=options.element,itemsContainer=options.itemsContainer,itemClass=options.itemClass;self.enabled=function(enabled){enabled?(itemsContainer&&itemsContainer.addEventListener("focus",onItemsFocusIn,!0),"keyboard"===options.mode&&element.addEventListener("click",onAlphaPickerInKeyboardModeClick),"click"!==options.valueChangeEvent?element.addEventListener("focus",onAlphaPickerFocusIn,!0):element.addEventListener("click",onAlphaPickerClick.bind(this))):(itemsContainer&&itemsContainer.removeEventListener("focus",onItemsFocusIn,!0),element.removeEventListener("click",onAlphaPickerInKeyboardModeClick),element.removeEventListener("focus",onAlphaPickerFocusIn,!0),element.removeEventListener("click",onAlphaPickerClick.bind(this)))},render(element,options),this.enabled(!0),this.visible(!0)}var selectedButtonClass="alphaPickerButton-selected";return AlphaPicker.prototype.value=function(value,applyValue){var btn,selected,element=this.options.element;if(void 0!==value)if(null!=value){if(value=value.toUpperCase(),this._currentValue=value,"keyboard"!==this.options.mode){selected=element.querySelector("."+selectedButtonClass);try{btn=element.querySelector(".alphaPickerButton[data-value='"+value+"']")}catch(err){console.log("Error in querySelector: "+err)}btn&&btn!==selected&&btn.classList.add(selectedButtonClass),selected&&selected!==btn&&selected.classList.remove(selectedButtonClass)}}else this._currentValue=value,(selected=element.querySelector("."+selectedButtonClass))&&selected.classList.remove(selectedButtonClass);return applyValue&&element.dispatchEvent(new CustomEvent("alphavaluechanged",{cancelable:!1,detail:{value:value}})),this._currentValue},AlphaPicker.prototype.on=function(name,fn){this.options.element.addEventListener(name,fn)},AlphaPicker.prototype.off=function(name,fn){this.options.element.removeEventListener(name,fn)},AlphaPicker.prototype.visible=function(visible){this.options.element.style.visibility=visible?"visible":"hidden"},AlphaPicker.prototype.values=function(){for(var element=this.options.element,elems=element.querySelectorAll(".alphaPickerButton"),values=[],i=0,length=elems.length;i0?item.BackdropImageTags.map(function(imgTag,index){return apiClient.getScaledImageUrl(item.BackdropItemId||item.Id,Object.assign(imageOptions,{type:"Backdrop",tag:imgTag,maxWidth:getBackdropMaxWidth(),index:index}))}):item.ParentBackdropItemId&&item.ParentBackdropImageTags&&item.ParentBackdropImageTags.length?item.ParentBackdropImageTags.map(function(imgTag,index){return apiClient.getScaledImageUrl(item.ParentBackdropItemId,Object.assign(imageOptions,{type:"Backdrop",tag:imgTag,maxWidth:getBackdropMaxWidth(),index:index}))}):[]}function getImageUrls(items,imageOptions){for(var list=[],onImg=function(img){list.push(img)},i=0,length=items.length;i1&&enableImageRotation!==!1&&enableRotation()&&(rotationInterval=setInterval(onRotationInterval,24e3)),onRotationInterval())}function onRotationInterval(){if(!playbackManager.isPlayingLocally(["Video"])){var newIndex=currentRotationIndex+1;newIndex>=currentRotatingImages.length&&(newIndex=0),currentRotationIndex=newIndex,setBackdropImage(currentRotatingImages[newIndex])}}function clearRotation(){var interval=rotationInterval;interval&&clearInterval(interval),rotationInterval=null,currentRotatingImages=[],currentRotationIndex=-1}function setBackdrop(url,imageOptions){url&&"string"!=typeof url&&(url=getImageUrls([url],imageOptions)[0]),url?(clearRotation(),setBackdropImage(url)):clearBackdrop()}Backdrop.prototype.load=function(url,parent,existingBackdropImage){var img=new Image,self=this;img.onload=function(){if(!self.isDestroyed){var backdropImage=document.createElement("div");if(backdropImage.classList.add("backdropImage"),backdropImage.classList.add("displayingBackdropImage"),backdropImage.style.backgroundImage="url('"+url+"')",backdropImage.setAttribute("data-url",url),backdropImage.classList.add("backdropImageFadeIn"),parent.appendChild(backdropImage),!enableAnimation(backdropImage))return existingBackdropImage&&existingBackdropImage.parentNode&&existingBackdropImage.parentNode.removeChild(existingBackdropImage),void internalBackdrop(!0);var onAnimationComplete=function(){dom.removeEventListener(backdropImage,dom.whichAnimationEvent(),onAnimationComplete,{once:!0}),backdropImage===self.currentAnimatingElement&&(self.currentAnimatingElement=null),existingBackdropImage&&existingBackdropImage.parentNode&&existingBackdropImage.parentNode.removeChild(existingBackdropImage)};dom.addEventListener(backdropImage,dom.whichAnimationEvent(),onAnimationComplete,{once:!0}),internalBackdrop(!0)}},img.src=url},Backdrop.prototype.cancelAnimation=function(){var elem=this.currentAnimatingElement;elem&&(elem.classList.remove("backdropImageFadeIn"),this.currentAnimatingElement=null)},Backdrop.prototype.destroy=function(){this.isDestroyed=!0,this.cancelAnimation()};var backdropContainer,backgroundContainer,hasInternalBackdrop,hasExternalBackdrop,currentLoadingBackdrop,rotationInterval,standardWidths=[480,720,1280,1440,1920],currentRotatingImages=[],currentRotationIndex=-1;return{setBackdrops:setBackdrops,setBackdrop:setBackdrop,clear:clearBackdrop,externalBackdrop:externalBackdrop}}); \ No newline at end of file +define(["browser","connectionManager","playbackManager","dom","css!./style"],function(browser,connectionManager,playbackManager,dom){"use strict";function enableAnimation(elem){return!browser.slow}function enableRotation(){return!browser.tv&&!browser.firefox}function Backdrop(){}function getBackdropContainer(){return backdropContainer||(backdropContainer=document.querySelector(".backdropContainer")),backdropContainer||(backdropContainer=document.createElement("div"),backdropContainer.classList.add("backdropContainer"),document.body.insertBefore(backdropContainer,document.body.firstChild)),backdropContainer}function clearBackdrop(clearAll){clearRotation(),currentLoadingBackdrop&&(currentLoadingBackdrop.destroy(),currentLoadingBackdrop=null),getBackdropContainer().innerHTML="",clearAll&&(hasExternalBackdrop=!1),internalBackdrop(!1)}function getBackgroundContainer(){return backgroundContainer||(backgroundContainer=document.querySelector(".backgroundContainer")),backgroundContainer}function setBackgroundContainerBackgroundEnabled(){hasInternalBackdrop||hasExternalBackdrop?getBackgroundContainer().classList.add("withBackdrop"):getBackgroundContainer().classList.remove("withBackdrop")}function internalBackdrop(enabled){hasInternalBackdrop=enabled,setBackgroundContainerBackgroundEnabled()}function externalBackdrop(enabled){hasExternalBackdrop=enabled,setBackgroundContainerBackgroundEnabled()}function setBackdropImage(url){currentLoadingBackdrop&&(currentLoadingBackdrop.destroy(),currentLoadingBackdrop=null);var elem=getBackdropContainer(),existingBackdropImage=elem.querySelector(".displayingBackdropImage");if(existingBackdropImage&&existingBackdropImage.getAttribute("data-url")===url){if(existingBackdropImage.getAttribute("data-url")===url)return;existingBackdropImage.classList.remove("displayingBackdropImage")}var instance=new Backdrop;instance.load(url,elem,existingBackdropImage),currentLoadingBackdrop=instance}function getBackdropMaxWidth(){var width=dom.getWindowSize().innerWidth;if(-1!==standardWidths.indexOf(width))return width;return width=100*Math.floor(width/100),Math.min(width,1920)}function getItemImageUrls(item,imageOptions){imageOptions=imageOptions||{};var apiClient=connectionManager.getApiClient(item.ServerId);return item.BackdropImageTags&&item.BackdropImageTags.length>0?item.BackdropImageTags.map(function(imgTag,index){return apiClient.getScaledImageUrl(item.BackdropItemId||item.Id,Object.assign(imageOptions,{type:"Backdrop",tag:imgTag,maxWidth:getBackdropMaxWidth(),index:index}))}):item.ParentBackdropItemId&&item.ParentBackdropImageTags&&item.ParentBackdropImageTags.length?item.ParentBackdropImageTags.map(function(imgTag,index){return apiClient.getScaledImageUrl(item.ParentBackdropItemId,Object.assign(imageOptions,{type:"Backdrop",tag:imgTag,maxWidth:getBackdropMaxWidth(),index:index}))}):[]}function getImageUrls(items,imageOptions){for(var list=[],onImg=function(img){list.push(img)},i=0,length=items.length;i1&&!1!==enableImageRotation&&enableRotation()&&(rotationInterval=setInterval(onRotationInterval,24e3)),onRotationInterval())}function onRotationInterval(){if(!playbackManager.isPlayingLocally(["Video"])){var newIndex=currentRotationIndex+1;newIndex>=currentRotatingImages.length&&(newIndex=0),currentRotationIndex=newIndex,setBackdropImage(currentRotatingImages[newIndex])}}function clearRotation(){var interval=rotationInterval;interval&&clearInterval(interval),rotationInterval=null,currentRotatingImages=[],currentRotationIndex=-1}function setBackdrop(url,imageOptions){url&&"string"!=typeof url&&(url=getImageUrls([url],imageOptions)[0]),url?(clearRotation(),setBackdropImage(url)):clearBackdrop()}Backdrop.prototype.load=function(url,parent,existingBackdropImage){var img=new Image,self=this;img.onload=function(){if(!self.isDestroyed){var backdropImage=document.createElement("div");if(backdropImage.classList.add("backdropImage"),backdropImage.classList.add("displayingBackdropImage"),backdropImage.style.backgroundImage="url('"+url+"')",backdropImage.setAttribute("data-url",url),backdropImage.classList.add("backdropImageFadeIn"),parent.appendChild(backdropImage),!enableAnimation(backdropImage))return existingBackdropImage&&existingBackdropImage.parentNode&&existingBackdropImage.parentNode.removeChild(existingBackdropImage),void internalBackdrop(!0);var onAnimationComplete=function(){dom.removeEventListener(backdropImage,dom.whichAnimationEvent(),onAnimationComplete,{once:!0}),backdropImage===self.currentAnimatingElement&&(self.currentAnimatingElement=null),existingBackdropImage&&existingBackdropImage.parentNode&&existingBackdropImage.parentNode.removeChild(existingBackdropImage)};dom.addEventListener(backdropImage,dom.whichAnimationEvent(),onAnimationComplete,{once:!0}),internalBackdrop(!0)}},img.src=url},Backdrop.prototype.cancelAnimation=function(){var elem=this.currentAnimatingElement;elem&&(elem.classList.remove("backdropImageFadeIn"),this.currentAnimatingElement=null)},Backdrop.prototype.destroy=function(){this.isDestroyed=!0,this.cancelAnimation()};var backdropContainer,backgroundContainer,hasInternalBackdrop,hasExternalBackdrop,currentLoadingBackdrop,rotationInterval,standardWidths=[480,720,1280,1440,1920],currentRotatingImages=[],currentRotationIndex=-1;return{setBackdrops:setBackdrops,setBackdrop:setBackdrop,clear:clearBackdrop,externalBackdrop:externalBackdrop}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/backdrop/style.css b/dashboard-ui/bower_components/emby-webcomponents/backdrop/style.css index ce6cf837f2..fe210bc34b 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/backdrop/style.css +++ b/dashboard-ui/bower_components/emby-webcomponents/backdrop/style.css @@ -1 +1 @@ -.backdropContainer{contain:layout style size}.backdropImage{background-repeat:no-repeat;background-position:center center;-webkit-background-size:cover;background-size:cover;background-attachment:fixed;position:absolute;top:0;left:0;right:0;bottom:0;contain:layout style}.backdropImageFadeIn{-webkit-animation:backdrop-fadein .8s ease-in normal both;animation:backdrop-fadein .8s ease-in normal both}@-webkit-keyframes backdrop-fadein{from{opacity:0}to{opacity:1}}@keyframes backdrop-fadein{from{opacity:0}to{opacity:1}} \ No newline at end of file +.backdropContainer{contain:layout style size}.backdropImage{background-repeat:no-repeat;background-position:center center;-webkit-background-size:cover;background-size:cover;position:absolute;top:0;left:0;right:0;bottom:0;contain:layout style}.backdropImageFadeIn{-webkit-animation:backdrop-fadein .8s ease-in normal both;animation:backdrop-fadein .8s ease-in normal both}@-webkit-keyframes backdrop-fadein{from{opacity:0}to{opacity:1}}@keyframes backdrop-fadein{from{opacity:0}to{opacity:1}} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/browser.js b/dashboard-ui/bower_components/emby-webcomponents/browser.js index 1e6ea52a68..6df8da22e6 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/browser.js +++ b/dashboard-ui/bower_components/emby-webcomponents/browser.js @@ -1 +1 @@ -define([],function(){"use strict";function isTv(){var userAgent=navigator.userAgent.toLowerCase();return userAgent.indexOf("tv")!==-1||(userAgent.indexOf("samsungbrowser")!==-1||(userAgent.indexOf("nintendo")!==-1||(userAgent.indexOf("viera")!==-1||userAgent.indexOf("webos")!==-1)))}function isMobile(userAgent){for(var terms=["mobi","ipad","iphone","ipod","silk","gt-p1000","nexus 7","kindle fire","opera mini"],lower=userAgent.toLowerCase(),i=0,length=terms.length;i2&&(version=versionMatch[2]),version=version||match[2]||"0";var versionMajor=parseInt(version.split(".")[0]);return isNaN(versionMajor)&&(versionMajor=0),{browser:browser,version:version,platform:platform_match[0]||"",versionMajor:versionMajor}},userAgent=navigator.userAgent,matched=uaMatch(userAgent),browser={};return matched.browser&&(browser[matched.browser]=!0,browser.version=matched.version,browser.versionMajor=matched.versionMajor),matched.platform&&(browser[matched.platform]=!0),browser.chrome||browser.msie||browser.edge||browser.opera||userAgent.toLowerCase().indexOf("webkit")===-1||(browser.safari=!0),userAgent.toLowerCase().indexOf("playstation 4")!==-1&&(browser.ps4=!0,browser.tv=!0),isMobile(userAgent)&&(browser.mobile=!0),browser.xboxOne=userAgent.toLowerCase().indexOf("xbox")!==-1,browser.animate="undefined"!=typeof document&&null!=document.documentElement.animate,browser.tizen=userAgent.toLowerCase().indexOf("tizen")!==-1||null!=self.tizen,browser.web0s=userAgent.toLowerCase().indexOf("Web0S".toLowerCase())!==-1,browser.edgeUwp=browser.edge&&(userAgent.toLowerCase().indexOf("msapphost")!==-1||userAgent.toLowerCase().indexOf("webview")!==-1),browser.tizen||(browser.orsay=userAgent.toLowerCase().indexOf("smarthub")!==-1),browser.edgeUwp&&(browser.edge=!0),browser.tv=isTv(),browser.operaTv=browser.tv&&userAgent.toLowerCase().indexOf("opr/")!==-1,isStyleSupported("display","flex")||(browser.noFlex=!0),(browser.mobile||browser.tv)&&(browser.slow=!0),"undefined"!=typeof document&&("ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch)&&(browser.touch=!0),browser.keyboard=hasKeyboard(browser),browser.supportsCssAnimation=supportsCssAnimation,browser.osx=userAgent.toLowerCase().indexOf("os x")!==-1,browser.iOS=browser.ipad||browser.iphone||browser.ipod,browser.iOS&&(browser.iOSVersion=iOSversion(),browser.iOSVersion=browser.iOSVersion[0]+browser.iOSVersion[1]/10),browser.chromecast=browser.chrome&&userAgent.toLowerCase().indexOf("crkey")!==-1,browser}); \ No newline at end of file +define([],function(){"use strict";function supportsCssAnimation(allowPrefix){if(allowPrefix){if(!0===_supportsCssAnimationWithPrefix||!1===_supportsCssAnimationWithPrefix)return _supportsCssAnimationWithPrefix}else if(!0===_supportsCssAnimation||!1===_supportsCssAnimation)return _supportsCssAnimation;var animation=!1,domPrefixes=["Webkit","O","Moz"],pfx="",elm=document.createElement("div");if(void 0!==elm.style.animationName&&(animation=!0),!1===animation&&allowPrefix)for(var i=0;i2&&(version=versionMatch[2]),version=version||match[2]||"0";var versionMajor=parseInt(version.split(".")[0]);return isNaN(versionMajor)&&(versionMajor=0),{browser:browser,version:version,platform:platform_match[0]||"",versionMajor:versionMajor}}(userAgent),browser={};return matched.browser&&(browser[matched.browser]=!0,browser.version=matched.version,browser.versionMajor=matched.versionMajor),matched.platform&&(browser[matched.platform]=!0),browser.chrome||browser.msie||browser.edge||browser.opera||-1===userAgent.toLowerCase().indexOf("webkit")||(browser.safari=!0),-1!==userAgent.toLowerCase().indexOf("playstation 4")&&(browser.ps4=!0,browser.tv=!0),function(userAgent){for(var terms=["mobi","ipad","iphone","ipod","silk","gt-p1000","nexus 7","kindle fire","opera mini"],lower=userAgent.toLowerCase(),i=0,length=terms.length;i=11)||!(!videoTestElement.canPlayType||!videoTestElement.canPlayType('video/hevc; codecs="hevc, aac"').replace(/no/,""))}function supportsTextTracks(){return!(!browser.tizen&&!browser.orsay)||(null==_supportsTextTracks&&(_supportsTextTracks=null!=document.createElement("video").textTracks),_supportsTextTracks)}function canPlayHls(src){return null==_canPlayHls&&(_canPlayHls=canPlayNativeHls()||canPlayHlsWithMSE()),_canPlayHls}function canPlayNativeHls(){if(browser.tizen||browser.orsay)return!0;var media=document.createElement("video");return!(!media.canPlayType("application/x-mpegURL").replace(/no/,"")&&!media.canPlayType("application/vnd.apple.mpegURL").replace(/no/,""))}function canPlayHlsWithMSE(){return null!=window.MediaSource}function canPlayAudioFormat(format){var typeString;if("flac"===format){if(browser.tizen||browser.orsay)return!0;if(browser.edgeUwp)return!0}else if("wma"===format){if(browser.tizen||browser.orsay)return!0;if(browser.edgeUwp)return!0}else{if("opus"===format)return typeString='audio/ogg; codecs="opus"',!!document.createElement("audio").canPlayType(typeString).replace(/no/,"");if("mp2"===format)return!1}if("webma"===format)typeString="audio/webm";else if("mp2"===format)typeString="audio/mpeg";else if("ogg"===format||"oga"===format){if(browser.chrome)return!1;typeString="audio/"+format}else typeString="audio/"+format;return!!document.createElement("audio").canPlayType(typeString).replace(/no/,"")}function testCanPlayMkv(videoTestElement){if(browser.tizen||browser.orsay)return!0;if(videoTestElement.canPlayType("video/x-matroska").replace(/no/,"")||videoTestElement.canPlayType("video/mkv").replace(/no/,""))return!0;var userAgent=navigator.userAgent.toLowerCase();return browser.chrome?!browser.operaTv&&(userAgent.indexOf("vivaldi")===-1&&userAgent.indexOf("opera")===-1):!!browser.edgeUwp}function testCanPlayTs(){return browser.tizen||browser.orsay||browser.web0s||browser.edgeUwp}function supportsMpeg2Video(){return browser.orsay||browser.tizen||browser.edgeUwp||browser.web0s}function supportsVc1(){return browser.orsay||browser.tizen||browser.edgeUwp}function getDirectPlayProfileForVideoContainer(container,videoAudioCodecs,videoTestElement,options){var supported=!1,profileContainer=container,videoCodecs=[];switch(container){case"asf":supported=browser.tizen||browser.orsay||browser.edgeUwp,videoAudioCodecs=[];break;case"avi":supported=browser.tizen||browser.orsay||browser.edgeUwp;break;case"mpg":case"mpeg":supported=browser.edgeUwp||browser.tizen||browser.orsay;break;case"flv":supported=browser.tizen||browser.orsay;break;case"3gp":case"mts":case"trp":case"vob":case"vro":supported=browser.tizen||browser.orsay;break;case"mov":supported=browser.tizen||browser.orsay||browser.chrome||browser.edgeUwp,videoCodecs.push("h264");break;case"m2ts":supported=browser.tizen||browser.orsay||browser.web0s||browser.edgeUwp,videoCodecs.push("h264"),supportsVc1()&&videoCodecs.push("vc1"),supportsMpeg2Video()&&videoCodecs.push("mpeg2video");break;case"wmv":supported=browser.tizen||browser.orsay||browser.web0s||browser.edgeUwp,videoAudioCodecs=[];break;case"ts":supported=testCanPlayTs(),videoCodecs.push("h264"),canPlayH265(videoTestElement,options)&&(videoCodecs.push("h265"),videoCodecs.push("hevc")),supportsVc1()&&videoCodecs.push("vc1"),supportsMpeg2Video()&&videoCodecs.push("mpeg2video"),profileContainer="ts,mpegts"}return supported?{Container:profileContainer,Type:"Video",VideoCodec:videoCodecs.join(","),AudioCodec:videoAudioCodecs.join(",")}:null}function getMaxBitrate(){return 12e7}function getGlobalMaxVideoBitrate(){var userAgent=navigator.userAgent.toLowerCase();if(browser.chromecast){var isChromecastUltra=userAgent.indexOf("aarch64")!==-1;return isChromecastUltra?null:4e7}var isTizenFhd=!1;if(browser.tizen)try{var isTizenUhd=webapis.productinfo.isUdPanelSupported();isTizenFhd=!isTizenUhd,console.log("isTizenFhd = "+isTizenFhd)}catch(error){console.log("isUdPanelSupported() error code = "+error.code)}return browser.ps4?8e6:browser.xboxOne?12e6:browser.edgeUwp?null:browser.tizen&&isTizenFhd?2e7:null}function supportsAc3(videoTestElement){return!!(browser.edgeUwp||browser.tizen||browser.orsay||browser.web0s)||videoTestElement.canPlayType('audio/mp4; codecs="ac-3"').replace(/no/,"")&&!browser.osx&&!browser.iOS}function supportsEac3(videoTestElement){return!!(browser.tizen||browser.orsay||browser.web0s)||videoTestElement.canPlayType('audio/mp4; codecs="ec-3"').replace(/no/,"")}var _supportsTextTracks,_canPlayHls;return function(options){options=options||{};var physicalAudioChannels=options.audioChannels||(browser.tv||browser.ps4||browser.xboxOne?6:2),bitrateSetting=getMaxBitrate(),videoTestElement=document.createElement("video"),canPlayVp8=videoTestElement.canPlayType('video/webm; codecs="vp8"').replace(/no/,""),canPlayVp9=videoTestElement.canPlayType('video/webm; codecs="vp9"').replace(/no/,""),canPlayMkv=testCanPlayMkv(videoTestElement),profile={};profile.MaxStreamingBitrate=bitrateSetting,profile.MaxStaticBitrate=1e8,profile.MusicStreamingTranscodingBitrate=Math.min(bitrateSetting,192e3),profile.DirectPlayProfiles=[];var videoAudioCodecs=[],hlsVideoAudioCodecs=[],supportsMp3VideoAudio=videoTestElement.canPlayType('video/mp4; codecs="avc1.640029, mp4a.69"').replace(/no/,"")||videoTestElement.canPlayType('video/mp4; codecs="avc1.640029, mp4a.6B"').replace(/no/,""),supportsMp2VideoAudio=browser.edgeUwp||browser.tizen||browser.orsay||browser.web0s,maxVideoWidth=browser.xboxOne&&self.screen?self.screen.width:null;if(options.maxVideoWidth&&(maxVideoWidth=options.maxVideoWidth),supportsAc3(videoTestElement)){videoAudioCodecs.push("ac3");var eAc3=supportsEac3(videoTestElement);eAc3&&videoAudioCodecs.push("eac3");var supportsAc3InHls=!browser.edge||!browser.touch||browser.edgeUwp;supportsAc3InHls&&(hlsVideoAudioCodecs.push("ac3"),eAc3&&hlsVideoAudioCodecs.push("eac3"))}var canPlayAacVideoAudio=videoTestElement.canPlayType('video/mp4; codecs="avc1.640029, mp4a.40.2"').replace(/no/,"");canPlayAacVideoAudio&&browser.chromecast&&videoAudioCodecs.push("aac"),supportsMp3VideoAudio&&(videoAudioCodecs.push("mp3"),browser.ps4||(physicalAudioChannels<=2||browser.chromecast)&&hlsVideoAudioCodecs.push("mp3")),canPlayAacVideoAudio&&(videoAudioCodecs.indexOf("aac")===-1&&videoAudioCodecs.push("aac"),(physicalAudioChannels<=2||!browser.chromecast)&&hlsVideoAudioCodecs.push("aac")),supportsMp3VideoAudio&&(browser.ps4||hlsVideoAudioCodecs.indexOf("mp3")===-1&&hlsVideoAudioCodecs.push("mp3")),supportsMp2VideoAudio&&videoAudioCodecs.push("mp2"),(browser.tizen||browser.orsay||browser.web0s||options.supportsDts)&&(videoAudioCodecs.push("dca"),videoAudioCodecs.push("dts")),(browser.tizen||browser.orsay)&&(videoAudioCodecs.push("pcm_s16le"),videoAudioCodecs.push("pcm_s24le")),options.supportsTrueHd&&videoAudioCodecs.push("truehd"),(browser.tizen||browser.orsay)&&videoAudioCodecs.push("aac_latm"),canPlayAudioFormat("opus")&&(videoAudioCodecs.push("opus"),hlsVideoAudioCodecs.push("opus")),canPlayAudioFormat("flac")&&videoAudioCodecs.push("flac"),videoAudioCodecs=videoAudioCodecs.filter(function(c){return(options.disableVideoAudioCodecs||[]).indexOf(c)===-1}),hlsVideoAudioCodecs=hlsVideoAudioCodecs.filter(function(c){return(options.disableHlsVideoAudioCodecs||[]).indexOf(c)===-1});var mp4VideoCodecs=[],hlsVideoCodecs=[];canPlayH264(videoTestElement)&&(mp4VideoCodecs.push("h264"),hlsVideoCodecs.push("h264")),canPlayH265(videoTestElement,options)&&(mp4VideoCodecs.push("h265"),mp4VideoCodecs.push("hevc")),supportsMpeg2Video()&&mp4VideoCodecs.push("mpeg2video"),supportsVc1()&&mp4VideoCodecs.push("vc1"),(browser.tizen||browser.orsay)&&mp4VideoCodecs.push("msmpeg4v2"),canPlayVp8&&mp4VideoCodecs.push("vp8"),canPlayVp9&&mp4VideoCodecs.push("vp9"),mp4VideoCodecs.length&&profile.DirectPlayProfiles.push({Container:"mp4,m4v",Type:"Video",VideoCodec:mp4VideoCodecs.join(","),AudioCodec:videoAudioCodecs.join(",")}),canPlayMkv&&mp4VideoCodecs.length&&profile.DirectPlayProfiles.push({Container:"mkv",Type:"Video",VideoCodec:mp4VideoCodecs.join(","),AudioCodec:videoAudioCodecs.join(",")}),["m2ts","wmv","ts","asf","avi","mpg","mpeg","flv","3gp","mts","trp","vob","vro","mov"].map(function(container){return getDirectPlayProfileForVideoContainer(container,videoAudioCodecs,videoTestElement,options)}).filter(function(i){return null!=i}).forEach(function(i){profile.DirectPlayProfiles.push(i)}),["opus","mp3","mp2","aac","flac","alac","webma","wma","wav","ogg","oga"].filter(canPlayAudioFormat).forEach(function(audioFormat){"mp2"===audioFormat?profile.DirectPlayProfiles.push({Container:"mp2,mp3",Type:"Audio",AudioCodec:audioFormat}):"mp3"===audioFormat?profile.DirectPlayProfiles.push({Container:audioFormat,Type:"Audio",AudioCodec:audioFormat}):profile.DirectPlayProfiles.push({Container:"webma"===audioFormat?"webma,webm":audioFormat,Type:"Audio"}),"aac"!==audioFormat&&"alac"!==audioFormat||profile.DirectPlayProfiles.push({Container:"m4a",AudioCodec:audioFormat,Type:"Audio"})}),canPlayVp8&&profile.DirectPlayProfiles.push({Container:"webm",Type:"Video",AudioCodec:"vorbis",VideoCodec:"VP8"}),canPlayVp9&&profile.DirectPlayProfiles.push({Container:"webm",Type:"Video",AudioCodec:"vorbis",VideoCodec:"VP9"}),profile.TranscodingProfiles=[];var hlsBreakOnNonKeyFrames=!(!browser.iOS&&!browser.osx&&canPlayNativeHls());canPlayHls()&&browser.enableHlsAudio!==!1&&profile.TranscodingProfiles.push({Container:!canPlayNativeHls()||browser.edge||browser.android?"ts":"aac",Type:"Audio",AudioCodec:"aac",Context:"Streaming",Protocol:"hls",MaxAudioChannels:physicalAudioChannels.toString(),MinSegments:browser.iOS||browser.osx?"2":"1",BreakOnNonKeyFrames:hlsBreakOnNonKeyFrames}),["aac","mp3","opus","wav"].filter(canPlayAudioFormat).forEach(function(audioFormat){profile.TranscodingProfiles.push({Container:audioFormat,Type:"Audio",AudioCodec:audioFormat,Context:"Streaming",Protocol:"http",MaxAudioChannels:physicalAudioChannels.toString()})}),["opus","mp3","aac","wav"].filter(canPlayAudioFormat).forEach(function(audioFormat){profile.TranscodingProfiles.push({Container:audioFormat,Type:"Audio",AudioCodec:audioFormat,Context:"Static",Protocol:"http",MaxAudioChannels:physicalAudioChannels.toString()})}),!canPlayMkv||browser.tizen||browser.orsay||options.enableMkvProgressive===!1||profile.TranscodingProfiles.push({Container:"mkv",Type:"Video",AudioCodec:videoAudioCodecs.join(","),VideoCodec:mp4VideoCodecs.join(","),Context:"Streaming",MaxAudioChannels:physicalAudioChannels.toString(),CopyTimestamps:!0}),canPlayMkv&&profile.TranscodingProfiles.push({Container:"mkv",Type:"Video",AudioCodec:videoAudioCodecs.join(","),VideoCodec:mp4VideoCodecs.join(","),Context:"Static",MaxAudioChannels:physicalAudioChannels.toString(),CopyTimestamps:!0}),canPlayHls()&&options.enableHls!==!1&&profile.TranscodingProfiles.push({Container:"ts",Type:"Video",AudioCodec:hlsVideoAudioCodecs.join(","),VideoCodec:hlsVideoCodecs.join(","),Context:"Streaming",Protocol:"hls",MaxAudioChannels:physicalAudioChannels.toString(),MinSegments:browser.iOS||browser.osx?"2":"1",BreakOnNonKeyFrames:hlsBreakOnNonKeyFrames}),canPlayVp8&&profile.TranscodingProfiles.push({Container:"webm",Type:"Video",AudioCodec:"vorbis",VideoCodec:"vpx",Context:"Streaming",Protocol:"http",MaxAudioChannels:physicalAudioChannels.toString()}),profile.TranscodingProfiles.push({Container:"mp4",Type:"Video",AudioCodec:videoAudioCodecs.join(","),VideoCodec:"h264",Context:"Streaming",Protocol:"http",MaxAudioChannels:physicalAudioChannels.toString()}),profile.TranscodingProfiles.push({Container:"mp4",Type:"Video",AudioCodec:videoAudioCodecs.join(","),VideoCodec:"h264",Context:"Static",Protocol:"http"}),profile.ContainerProfiles=[],profile.CodecProfiles=[];var supportsSecondaryAudio=browser.tizen||browser.orsay||browser.edge||browser.msie,aacCodecProfileConditions=[];videoTestElement.canPlayType('video/mp4; codecs="avc1.640029, mp4a.40.5"').replace(/no/,"")||aacCodecProfileConditions.push({Condition:"NotEquals",Property:"AudioProfile",Value:"HE-AAC"}),supportsSecondaryAudio||aacCodecProfileConditions.push({Condition:"Equals",Property:"IsSecondaryAudio",Value:"false",IsRequired:"false"}),browser.chromecast&&aacCodecProfileConditions.push({Condition:"LessThanEqual",Property:"AudioChannels",Value:"2",IsRequired:!0}),aacCodecProfileConditions.length&&profile.CodecProfiles.push({Type:"VideoAudio",Codec:"aac",Conditions:aacCodecProfileConditions}),supportsSecondaryAudio||profile.CodecProfiles.push({Type:"VideoAudio",Conditions:[{Condition:"Equals",Property:"IsSecondaryAudio",Value:"false",IsRequired:"false"}]});var maxH264Level=browser.chromecast?"42":"51";profile.CodecProfiles.push({Type:"Video",Codec:"h264",Conditions:[{Condition:"NotEquals",Property:"IsAnamorphic",Value:"true",IsRequired:!1},{Condition:"EqualsAny",Property:"VideoProfile",Value:"high|main|baseline|constrained baseline"},{Condition:"LessThanEqual",Property:"VideoLevel",Value:maxH264Level}]}),browser.edgeUwp||browser.tizen||browser.orsay||browser.web0s||(profile.CodecProfiles[profile.CodecProfiles.length-1].Conditions.push({Condition:"NotEquals",Property:"IsAVC",Value:"false",IsRequired:!1}),browser.chromecast||profile.CodecProfiles[profile.CodecProfiles.length-1].Conditions.push({Condition:"NotEquals",Property:"IsInterlaced",Value:"true",IsRequired:!1})),maxVideoWidth&&profile.CodecProfiles[profile.CodecProfiles.length-1].Conditions.push({Condition:"LessThanEqual",Property:"Width",Value:maxVideoWidth.toString(),IsRequired:!1});var globalMaxVideoBitrate=(getGlobalMaxVideoBitrate()||"").toString(),h264MaxVideoBitrate=globalMaxVideoBitrate;h264MaxVideoBitrate&&profile.CodecProfiles[profile.CodecProfiles.length-1].Conditions.push({Condition:"LessThanEqual",Property:"VideoBitrate",Value:h264MaxVideoBitrate,IsRequired:!0});var globalVideoConditions=[];return globalMaxVideoBitrate&&globalVideoConditions.push({Condition:"LessThanEqual",Property:"VideoBitrate",Value:globalMaxVideoBitrate}),maxVideoWidth&&globalVideoConditions.push({Condition:"LessThanEqual",Property:"Width",Value:maxVideoWidth.toString(),IsRequired:!1}),globalVideoConditions.length&&profile.CodecProfiles.push({Type:"Video",Conditions:globalVideoConditions}),browser.chromecast&&profile.CodecProfiles.push({Type:"Audio",Codec:"flac",Conditions:[{Condition:"LessThanEqual",Property:"AudioSampleRate",Value:"96000"}]}),profile.SubtitleProfiles=[],supportsTextTracks()&&profile.SubtitleProfiles.push({Format:"vtt",Method:"External"}),profile.ResponseProfiles=[],profile.ResponseProfiles.push({Type:"Video",Container:"m4v",MimeType:"video/mp4"}),profile}}); \ No newline at end of file +define(["browser"],function(browser){"use strict";function canPlayH264(videoTestElement){return!(!videoTestElement.canPlayType||!videoTestElement.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"').replace(/no/,""))}function canPlayH265(videoTestElement,options){if(browser.tizen||browser.orsay||browser.xboxOne||browser.web0s||options.supportsHevc)return!0;var userAgent=navigator.userAgent.toLowerCase();if(browser.chromecast){if(-1!==userAgent.indexOf("aarch64"))return!0}return!!(browser.iOS&&(browser.iOSVersion||0)>=11)||!(!videoTestElement.canPlayType||!videoTestElement.canPlayType('video/hevc; codecs="hevc, aac"').replace(/no/,""))}function supportsTextTracks(){return!(!browser.tizen&&!browser.orsay)||(null==_supportsTextTracks&&(_supportsTextTracks=null!=document.createElement("video").textTracks),_supportsTextTracks)}function canPlayHls(src){return null==_canPlayHls&&(_canPlayHls=canPlayNativeHls()||canPlayHlsWithMSE()),_canPlayHls}function canPlayNativeHls(){if(browser.tizen||browser.orsay)return!0;var media=document.createElement("video");return!(!media.canPlayType("application/x-mpegURL").replace(/no/,"")&&!media.canPlayType("application/vnd.apple.mpegURL").replace(/no/,""))}function canPlayHlsWithMSE(){return null!=window.MediaSource}function canPlayAudioFormat(format){var typeString;if("flac"===format){if(browser.tizen||browser.orsay||browser.web0s)return!0;if(browser.edgeUwp)return!0}else if("wma"===format){if(browser.tizen||browser.orsay)return!0;if(browser.edgeUwp)return!0}else{if("opus"===format)return typeString='audio/ogg; codecs="opus"',!!document.createElement("audio").canPlayType(typeString).replace(/no/,"");if("mp2"===format)return!1}if("webma"===format)typeString="audio/webm";else if("mp2"===format)typeString="audio/mpeg";else if("ogg"===format||"oga"===format){if(browser.chrome)return!1;typeString="audio/"+format}else typeString="audio/"+format;return!!document.createElement("audio").canPlayType(typeString).replace(/no/,"")}function testCanPlayMkv(videoTestElement){if(browser.tizen||browser.orsay||browser.web0s)return!0;if(videoTestElement.canPlayType("video/x-matroska").replace(/no/,"")||videoTestElement.canPlayType("video/mkv").replace(/no/,""))return!0;var userAgent=navigator.userAgent.toLowerCase();return browser.chrome?!browser.operaTv&&(-1===userAgent.indexOf("vivaldi")&&-1===userAgent.indexOf("opera")):!!browser.edgeUwp}function testCanPlayTs(){return browser.tizen||browser.orsay||browser.web0s||browser.edgeUwp}function supportsMpeg2Video(){return browser.orsay||browser.tizen||browser.edgeUwp||browser.web0s}function supportsVc1(){return browser.orsay||browser.tizen||browser.edgeUwp||browser.web0s}function getDirectPlayProfileForVideoContainer(container,videoAudioCodecs,videoTestElement,options){var supported=!1,profileContainer=container,videoCodecs=[];switch(container){case"asf":supported=browser.tizen||browser.orsay||browser.edgeUwp,videoAudioCodecs=[];break;case"avi":supported=browser.tizen||browser.orsay||browser.edgeUwp;break;case"mpg":case"mpeg":supported=browser.edgeUwp||browser.tizen||browser.orsay;break;case"flv":supported=browser.tizen||browser.orsay;break;case"3gp":case"mts":case"trp":case"vob":case"vro":supported=browser.tizen||browser.orsay;break;case"mov":supported=browser.tizen||browser.orsay||browser.chrome||browser.edgeUwp,videoCodecs.push("h264");break;case"m2ts":supported=browser.tizen||browser.orsay||browser.web0s||browser.edgeUwp,videoCodecs.push("h264"),supportsVc1()&&videoCodecs.push("vc1"),supportsMpeg2Video()&&videoCodecs.push("mpeg2video");break;case"wmv":supported=browser.tizen||browser.orsay||browser.web0s||browser.edgeUwp,videoAudioCodecs=[];break;case"ts":supported=testCanPlayTs(),videoCodecs.push("h264"),canPlayH265(videoTestElement,options)&&(videoCodecs.push("h265"),videoCodecs.push("hevc")),supportsVc1()&&videoCodecs.push("vc1"),supportsMpeg2Video()&&videoCodecs.push("mpeg2video"),profileContainer="ts,mpegts"}return supported?{Container:profileContainer,Type:"Video",VideoCodec:videoCodecs.join(","),AudioCodec:videoAudioCodecs.join(",")}:null}function getGlobalMaxVideoBitrate(){var userAgent=navigator.userAgent.toLowerCase();if(browser.chromecast){return-1!==userAgent.indexOf("aarch64")?null:self.screen&&self.screen.width>=3800?null:3e7}var isTizenFhd=!1;if(browser.tizen)try{isTizenFhd=!webapis.productinfo.isUdPanelSupported(),console.log("isTizenFhd = "+isTizenFhd)}catch(error){console.log("isUdPanelSupported() error code = "+error.code)}return browser.ps4?8e6:browser.xboxOne?12e6:browser.edgeUwp?null:browser.tizen&&isTizenFhd?2e7:null}function supportsAc3(videoTestElement){return!!(browser.edgeUwp||browser.tizen||browser.orsay||browser.web0s)||videoTestElement.canPlayType('audio/mp4; codecs="ac-3"').replace(/no/,"")&&!browser.osx&&!browser.iOS}function supportsEac3(videoTestElement){return!!(browser.tizen||browser.orsay||browser.web0s)||videoTestElement.canPlayType('audio/mp4; codecs="ec-3"').replace(/no/,"")}var _supportsTextTracks,_canPlayHls;return function(options){options=options||{};var physicalAudioChannels=options.audioChannels||(browser.tv||browser.ps4||browser.xboxOne?6:2),videoTestElement=document.createElement("video"),canPlayVp8=videoTestElement.canPlayType('video/webm; codecs="vp8"').replace(/no/,""),canPlayVp9=videoTestElement.canPlayType('video/webm; codecs="vp9"').replace(/no/,""),webmAudioCodecs=["vorbis"],canPlayMkv=testCanPlayMkv(videoTestElement),profile={};profile.MaxStreamingBitrate=12e7,profile.MaxStaticBitrate=1e8,profile.MusicStreamingTranscodingBitrate=Math.min(12e7,192e3),profile.DirectPlayProfiles=[];var videoAudioCodecs=[],hlsVideoAudioCodecs=[],supportsMp3VideoAudio=videoTestElement.canPlayType('video/mp4; codecs="avc1.640029, mp4a.69"').replace(/no/,"")||videoTestElement.canPlayType('video/mp4; codecs="avc1.640029, mp4a.6B"').replace(/no/,""),supportsMp2VideoAudio=browser.edgeUwp||browser.tizen||browser.orsay||browser.web0s,maxVideoWidth=browser.xboxOne&&self.screen?self.screen.width:null;options.maxVideoWidth&&(maxVideoWidth=options.maxVideoWidth);var canPlayAacVideoAudio=videoTestElement.canPlayType('video/mp4; codecs="avc1.640029, mp4a.40.2"').replace(/no/,"");if(canPlayAacVideoAudio&&browser.chromecast&&physicalAudioChannels<=2&&videoAudioCodecs.push("aac"),supportsAc3(videoTestElement)){videoAudioCodecs.push("ac3");var eAc3=supportsEac3(videoTestElement);eAc3&&videoAudioCodecs.push("eac3");(!browser.edge||!browser.touch||browser.edgeUwp)&&(hlsVideoAudioCodecs.push("ac3"),eAc3&&hlsVideoAudioCodecs.push("eac3"))}canPlayAacVideoAudio&&browser.chromecast&&-1===videoAudioCodecs.indexOf("aac")&&videoAudioCodecs.push("aac"),supportsMp3VideoAudio&&(videoAudioCodecs.push("mp3"),browser.ps4||physicalAudioChannels<=2&&hlsVideoAudioCodecs.push("mp3")),canPlayAacVideoAudio&&(-1===videoAudioCodecs.indexOf("aac")&&videoAudioCodecs.push("aac"),hlsVideoAudioCodecs.push("aac")),supportsMp3VideoAudio&&(browser.ps4||-1===hlsVideoAudioCodecs.indexOf("mp3")&&hlsVideoAudioCodecs.push("mp3")),supportsMp2VideoAudio&&videoAudioCodecs.push("mp2");var supportsDts=browser.tizen||browser.orsay||browser.web0s||options.supportsDts;if(self.tizen&&self.tizen.systeminfo){var v=tizen.systeminfo.getCapability("http://tizen.org/feature/platform.version");v&&parseFloat(v)>=parseFloat("4.0")&&(supportsDts=!1)}supportsDts&&(videoAudioCodecs.push("dca"),videoAudioCodecs.push("dts")),(browser.tizen||browser.orsay||browser.web0s)&&(videoAudioCodecs.push("pcm_s16le"),videoAudioCodecs.push("pcm_s24le")),options.supportsTrueHd&&videoAudioCodecs.push("truehd"),(browser.tizen||browser.orsay)&&videoAudioCodecs.push("aac_latm"),canPlayAudioFormat("opus")&&(videoAudioCodecs.push("opus"),hlsVideoAudioCodecs.push("opus"),webmAudioCodecs.push("opus")),canPlayAudioFormat("flac")&&videoAudioCodecs.push("flac"),videoAudioCodecs=videoAudioCodecs.filter(function(c){return-1===(options.disableVideoAudioCodecs||[]).indexOf(c)}),hlsVideoAudioCodecs=hlsVideoAudioCodecs.filter(function(c){return-1===(options.disableHlsVideoAudioCodecs||[]).indexOf(c)});var mp4VideoCodecs=[],hlsVideoCodecs=[];canPlayH264(videoTestElement)&&(mp4VideoCodecs.push("h264"),hlsVideoCodecs.push("h264")),canPlayH265(videoTestElement,options)&&(mp4VideoCodecs.push("h265"),mp4VideoCodecs.push("hevc"),(browser.tizen||browser.web0s)&&(hlsVideoCodecs.push("h265"),hlsVideoCodecs.push("hevc"))),supportsMpeg2Video()&&mp4VideoCodecs.push("mpeg2video"),supportsVc1()&&mp4VideoCodecs.push("vc1"),(browser.tizen||browser.orsay)&&mp4VideoCodecs.push("msmpeg4v2"),canPlayVp8&&mp4VideoCodecs.push("vp8"),canPlayVp9&&mp4VideoCodecs.push("vp9"),(canPlayVp8||browser.tizen||browser.orsay)&&videoAudioCodecs.push("vorbis"),mp4VideoCodecs.length&&profile.DirectPlayProfiles.push({Container:"mp4,m4v",Type:"Video",VideoCodec:mp4VideoCodecs.join(","),AudioCodec:videoAudioCodecs.join(",")}),canPlayMkv&&mp4VideoCodecs.length&&profile.DirectPlayProfiles.push({Container:"mkv",Type:"Video",VideoCodec:mp4VideoCodecs.join(","),AudioCodec:videoAudioCodecs.join(",")}),["m2ts","wmv","ts","asf","avi","mpg","mpeg","flv","3gp","mts","trp","vob","vro","mov"].map(function(container){return getDirectPlayProfileForVideoContainer(container,videoAudioCodecs,videoTestElement,options)}).filter(function(i){return null!=i}).forEach(function(i){profile.DirectPlayProfiles.push(i)}),["opus","mp3","mp2","aac","flac","alac","webma","wma","wav","ogg","oga"].filter(canPlayAudioFormat).forEach(function(audioFormat){"mp2"===audioFormat?profile.DirectPlayProfiles.push({Container:"mp2,mp3",Type:"Audio",AudioCodec:audioFormat}):"mp3"===audioFormat?profile.DirectPlayProfiles.push({Container:audioFormat,Type:"Audio",AudioCodec:audioFormat}):profile.DirectPlayProfiles.push({Container:"webma"===audioFormat?"webma,webm":audioFormat,Type:"Audio"}),"aac"!==audioFormat&&"alac"!==audioFormat||profile.DirectPlayProfiles.push({Container:"m4a",AudioCodec:audioFormat,Type:"Audio"})}),canPlayVp8&&profile.DirectPlayProfiles.push({Container:"webm",Type:"Video",AudioCodec:webmAudioCodecs.join(","),VideoCodec:"VP8"}),canPlayVp9&&profile.DirectPlayProfiles.push({Container:"webm",Type:"Video",AudioCodec:webmAudioCodecs.join(","),VideoCodec:"VP9"}),profile.TranscodingProfiles=[];var hlsBreakOnNonKeyFrames=!(!(browser.iOS||browser.osx||browser.edge)&&canPlayNativeHls());canPlayHls()&&!1!==browser.enableHlsAudio&&profile.TranscodingProfiles.push({Container:!canPlayNativeHls()||browser.edge||browser.android?"ts":"aac",Type:"Audio",AudioCodec:"aac",Context:"Streaming",Protocol:"hls",MaxAudioChannels:physicalAudioChannels.toString(),MinSegments:browser.iOS||browser.osx?"2":"1",BreakOnNonKeyFrames:hlsBreakOnNonKeyFrames}),["aac","mp3","opus","wav"].filter(canPlayAudioFormat).forEach(function(audioFormat){profile.TranscodingProfiles.push({Container:audioFormat,Type:"Audio",AudioCodec:audioFormat,Context:"Streaming",Protocol:"http",MaxAudioChannels:physicalAudioChannels.toString()})}),["opus","mp3","aac","wav"].filter(canPlayAudioFormat).forEach(function(audioFormat){profile.TranscodingProfiles.push({Container:audioFormat,Type:"Audio",AudioCodec:audioFormat,Context:"Static",Protocol:"http",MaxAudioChannels:physicalAudioChannels.toString()})}),!canPlayMkv||browser.tizen||browser.orsay||!1===options.enableMkvProgressive||profile.TranscodingProfiles.push({Container:"mkv",Type:"Video",AudioCodec:videoAudioCodecs.join(","),VideoCodec:mp4VideoCodecs.join(","),Context:"Streaming",MaxAudioChannels:physicalAudioChannels.toString(),CopyTimestamps:!0}),canPlayMkv&&profile.TranscodingProfiles.push({Container:"mkv",Type:"Video",AudioCodec:videoAudioCodecs.join(","),VideoCodec:mp4VideoCodecs.join(","),Context:"Static",MaxAudioChannels:physicalAudioChannels.toString(),CopyTimestamps:!0}),canPlayHls()&&!1!==options.enableHls&&profile.TranscodingProfiles.push({Container:"ts",Type:"Video",AudioCodec:hlsVideoAudioCodecs.join(","),VideoCodec:hlsVideoCodecs.join(","),Context:"Streaming",Protocol:"hls",MaxAudioChannels:physicalAudioChannels.toString(),MinSegments:browser.iOS||browser.osx?"2":"1",BreakOnNonKeyFrames:hlsBreakOnNonKeyFrames}),canPlayVp8&&profile.TranscodingProfiles.push({Container:"webm",Type:"Video",AudioCodec:"vorbis",VideoCodec:"vpx",Context:"Streaming",Protocol:"http",MaxAudioChannels:physicalAudioChannels.toString()}),profile.TranscodingProfiles.push({Container:"mp4",Type:"Video",AudioCodec:videoAudioCodecs.join(","),VideoCodec:"h264",Context:"Static",Protocol:"http"}),profile.ContainerProfiles=[],profile.CodecProfiles=[];var supportsSecondaryAudio=browser.tizen||browser.orsay||videoTestElement.audioTracks,aacCodecProfileConditions=[];videoTestElement.canPlayType('video/mp4; codecs="avc1.640029, mp4a.40.5"').replace(/no/,"")||aacCodecProfileConditions.push({Condition:"NotEquals",Property:"AudioProfile",Value:"HE-AAC"}),supportsSecondaryAudio||aacCodecProfileConditions.push({Condition:"Equals",Property:"IsSecondaryAudio",Value:"false",IsRequired:"false"}),browser.chromecast&&aacCodecProfileConditions.push({Condition:"LessThanEqual",Property:"AudioChannels",Value:"2",IsRequired:!0}),aacCodecProfileConditions.length&&profile.CodecProfiles.push({Type:"VideoAudio",Codec:"aac",Conditions:aacCodecProfileConditions}),supportsSecondaryAudio||profile.CodecProfiles.push({Type:"VideoAudio",Conditions:[{Condition:"Equals",Property:"IsSecondaryAudio",Value:"false",IsRequired:"false"}]});var maxH264Level=browser.chromecast?42:51,h264Profiles="high|main|baseline|constrained baseline";maxH264Level>=51&&browser.chrome&&!browser.osx&&(h264Profiles+="|high 10"),profile.CodecProfiles.push({Type:"Video",Codec:"h264",Conditions:[{Condition:"NotEquals",Property:"IsAnamorphic",Value:"true",IsRequired:!1},{Condition:"EqualsAny",Property:"VideoProfile",Value:h264Profiles},{Condition:"LessThanEqual",Property:"VideoLevel",Value:maxH264Level.toString()}]}),browser.edgeUwp||browser.tizen||browser.orsay||browser.web0s,maxVideoWidth&&profile.CodecProfiles[profile.CodecProfiles.length-1].Conditions.push({Condition:"LessThanEqual",Property:"Width",Value:maxVideoWidth.toString(),IsRequired:!1});var globalMaxVideoBitrate=(getGlobalMaxVideoBitrate()||"").toString(),h264MaxVideoBitrate=globalMaxVideoBitrate;h264MaxVideoBitrate&&profile.CodecProfiles[profile.CodecProfiles.length-1].Conditions.push({Condition:"LessThanEqual",Property:"VideoBitrate",Value:h264MaxVideoBitrate,IsRequired:!0});var globalVideoConditions=[];return globalMaxVideoBitrate&&globalVideoConditions.push({Condition:"LessThanEqual",Property:"VideoBitrate",Value:globalMaxVideoBitrate}),maxVideoWidth&&globalVideoConditions.push({Condition:"LessThanEqual",Property:"Width",Value:maxVideoWidth.toString(),IsRequired:!1}),globalVideoConditions.length&&profile.CodecProfiles.push({Type:"Video",Conditions:globalVideoConditions}),browser.chromecast&&profile.CodecProfiles.push({Type:"Audio",Codec:"flac",Conditions:[{Condition:"LessThanEqual",Property:"AudioSampleRate",Value:"96000"}]}),profile.SubtitleProfiles=[],supportsTextTracks()&&profile.SubtitleProfiles.push({Format:"vtt",Method:"External"}),profile.ResponseProfiles=[],profile.ResponseProfiles.push({Type:"Video",Container:"m4v",MimeType:"video/mp4"}),profile}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/card.css b/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/card.css index 6cd4947f2a..1b99140351 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/card.css +++ b/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/card.css @@ -1 +1 @@ -.card,.card:focus{font-weight:inherit!important}.card,.cardBox,.cardContent,.textActionButton{-webkit-tap-highlight-color:transparent;outline:0!important}button::-moz-focus-inner{padding:0;border:0}button{-webkit-border-fit:border!important}.card{border:0;font-size:inherit!important;font-family:inherit!important;text-transform:none;background:0 0!important;margin:0;padding:0;display:block;color:inherit!important;cursor:pointer;contain:layout style;-webkit-flex-shrink:0;flex-shrink:0}.cardContent-button,.textActionButton{cursor:pointer;vertical-align:middle;font-family:inherit}.card-nofocustransform{contain:layout style paint}.itemsContainer{display:-webkit-box;display:-webkit-flex;display:flex}.vertical-list,.vertical-wrap{display:-webkit-box;display:-webkit-flex;-webkit-box-direction:normal}.vertical-list{display:flex;-webkit-box-orient:vertical;-webkit-flex-direction:column;flex-direction:column;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.vertical-wrap{display:flex;-webkit-box-orient:horizontal;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:wrap;flex-wrap:wrap}.cardImageContainer,.mediaSourceIndicator{display:-webkit-flex;-webkit-box-align:center}.vertical-wrap.centered{-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.cardScalable{position:relative;contain:layout style}.cardPadder-backdrop,.cardPadder-mixedBackdrop,.cardPadder-overflowBackdrop,.cardPadder-smallBackdrop{padding-bottom:56.25%;contain:strict}.cardPadder-mixedSquare,.cardPadder-overflowSquare,.cardPadder-square{padding-bottom:100%;contain:strict}.cardPadder-mixedPortrait,.cardPadder-overflowPortrait,.cardPadder-portrait,.overflowPortraitCard-textCardPadder{padding-bottom:150%;contain:strict}.cardPadder-banner{padding-bottom:18.5%;contain:strict}.cardBox{padding:0!important;margin:.28em .4em;-webkit-transition:none;-o-transition:none;transition:none;border:0 solid transparent;contain:layout style}@media all and (max-width:50em){.cardBox{margin:.28em}}.card-focuscontent{border:.12em solid transparent;-webkit-border-radius:.12em;border-radius:.12em}.card-focuscontent-large{border-width:.24em}.cardBox-focustransform{will-change:transform;-webkit-transition:-webkit-transform .2s ease-out;-o-transition:transform .2s ease-out;transition:transform .2s ease-out}.card:focus>.cardBox-focustransform{-webkit-transform:scale(1.16,1.16);transform:scale(1.16,1.16)}.cardBox-bottompadded{margin-bottom:1.9em!important}.layout-mobile .cardBox-bottompadded{margin-bottom:1.2em!important}.card:focus{position:relative!important;z-index:10!important}.btnCardOptions{position:absolute;bottom:.25em;right:0;margin:0!important;z-index:1}.mediaSourceIndicator{display:-webkit-box;display:flex;position:absolute;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;top:.3em;left:.3em;text-align:center;vertical-align:middle;width:1.6em;height:1.6em;-webkit-border-radius:50%;border-radius:50%;color:#fff;background:#38c}.cardText,.innerCardFooter{overflow:hidden;text-align:left}.cardImageContainer{-webkit-background-size:contain;background-size:contain;background-repeat:no-repeat;background-position:center center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;-webkit-background-clip:content-box!important;background-clip:content-box!important;color:inherit;height:100%;contain:strict}.cardContent,.cardImage{position:absolute;right:0;top:0;left:0;bottom:0}.chapterCardImageContainer{background-color:#000;-webkit-border-radius:0;border-radius:0}.textCardImageContainer{background-color:#333}.cardContent{overflow:hidden;display:block;margin:0!important;height:100%;-webkit-border-radius:.08em;border-radius:.08em;contain:strict}.cardContent-button{background-color:transparent;border:0!important;padding:0!important;color:inherit;width:100%;font-size:inherit}.visualCardBox .cardContent{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.cardContent-shadow{-webkit-box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37)}.cardImageContainer{display:-webkit-box;display:-webkit-flex;display:flex}.cardImage{-webkit-background-size:contain;background-size:contain;background-repeat:no-repeat;background-position:center bottom}.cardImage-img{max-height:100%;max-width:100%;min-height:70%;min-width:70%;margin:auto}.coveredImage-img{width:100%;height:100%}.coveredImage-noscale-img{max-height:none;max-width:none}.coveredImage{-webkit-background-size:100% 100%;background-size:100% 100%;background-position:center center}.coveredImage-noScale{-webkit-background-size:cover;background-size:cover}.cardFooter{padding:.3em .3em .5em;position:relative}.visualCardBox{-webkit-box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);-webkit-border-radius:.145em;border-radius:.145em}.innerCardFooter{background:rgba(0,0,0,.7);position:absolute;bottom:0;left:0;z-index:1;max-width:100%;color:#fff}.innerCardFooterClear{background-color:transparent}.fullInnerCardFooter{right:0}.cardText{padding:.06em .5em;white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis;font-size:93%}.cardDefaultText,.cardTextCentered{text-align:center}.cardText-first{padding-top:.3em}.layout-tv .cardText-first{padding-top:.16em}.innerCardFooter>.cardText{padding:.3em .5em}.cardFooter-withlogo{padding-left:4em;position:relative}.cardFooterLogo{position:absolute;top:0;bottom:0;left:0;width:4.5em;-webkit-background-size:70% auto;background-size:70% auto;background-repeat:no-repeat;background-position:center center}.card:focus .cardText{color:inherit}.cardText-rightmargin{margin-right:2em}.cardDefaultText{white-space:normal}.textActionButton{background:0 0;border:0!important;padding:0!important;color:inherit;font-size:inherit}.textActionButton:hover{text-decoration:underline}.cardImageIcon{width:1em;height:1em;font-size:5em;color:inherit}.cardImageIcon-small{font-size:3em;margin-bottom:.1em}.cardIndicators{right:.225em;top:.225em;position:absolute;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;contain:layout style}.cardProgramAttributeIndicators{top:0;left:0;position:absolute;display:-webkit-box;display:-webkit-flex;display:flex;text-transform:uppercase;font-size:92%}.programAttributeIndicator{padding:.18em .5em;color:#fff;font-weight:500}.cardOverlayButton{color:rgba(255,255,255,.76)!important;-webkit-border-radius:100em;border-radius:100em;position:absolute;bottom:0;right:0;margin:0 .35em .65em 0;z-index:1;padding:.5em;background-color:rgba(0,0,0,.7)!important;font-size:82%}.cardOverlayButton-centered{bottom:initial;right:initial;position:static;position:absolute;display:-webkit-box;display:-webkit-flex;display:flex;font-size:112%;margin:-1.3em 0 0 -1.3em;width:2.6em;height:2.6em;top:50%;left:50%;background-color:rgba(0,0,0,.5)!important;border:2.4px solid rgba(255,255,255,.6);padding:.38em!important;color:rgba(255,255,255,.76);-webkit-transition:-webkit-transform .2s ease-out;-o-transition:transform .2s ease-out;transition:transform .2s ease-out}.cardOverlayButton-centered:hover{-webkit-transform:scale(1.2,1.2);transform:scale(1.2,1.2)}.cardOverlayButton-texticon{line-height:1;background-color:rgba(0,0,0,.4)!important}.cardOverlayButton-texticon-icon{font-style:normal}.defaultCardColor1{background-color:#009688}.defaultCardColor2{background-color:#D32F2F}.defaultCardColor3{background-color:#0288D1}.defaultCardColor4{background-color:#388E3C}.defaultCardColor5{background-color:#F57F17}.backdropCard,.bannerCard{width:100%}.smallBackdropCard,.squareCard{width:50%}.portraitCard{width:33.333333333333333333333333333333%}.mixedPortraitCard{width:12em}.mixedSquareCard{width:18em}.mixedBackdropCard{width:32em}@media all and (min-width:400px){.backdropCard{width:50%}}@media all and (min-width:500px){.portraitCard,.smallBackdropCard,.squareCard{width:33.333333333333333333333333333333%}}@media all and (min-width:700px){.portraitCard,.squareCard{width:25%}}@media all and (min-width:770px){.backdropCard{width:33.333333333333333333333333333333%}}@media all and (min-width:800px){.bannerCard{width:50%}.portraitCard,.squareCard{width:20%}.smallBackdropCard{width:25%}}@media all and (min-width:1000px){.smallBackdropCard{width:20%}}@media all and (min-width:1200px){.backdropCard{width:25%}.portraitCard,.squareCard{width:16.666666666666666666666666666667%}.bannerCard{width:33.333333333333333333333333333333%}.smallBackdropCard{width:16.666666666666666666666666666667%}}@media all and (min-width:1400px){.portraitCard,.smallBackdropCard,.squareCard{width:14.285714285714285714285714285714%}}@media all and (min-width:1600px){.smallBackdropCard{width:12.5%}.backdropCard{width:20%}.portraitCard,.squareCard{width:12.5%}}@media all and (min-width:1920px){.portraitCard,.squareCard{width:11.111111111111111111111111111111%}}@media all and (min-width:2100px){.backdropCard{width:20%}}@media all and (min-width:2200px){.bannerCard{width:25%}.portraitCard,.squareCard{width:10%}}@media all and (min-width:2500px){.backdropCard{width:16.666666666666666666666666666667%}}.itemsContainer-tv>.backdropCard{width:25%}.itemsContainer-tv>.portraitCard,.itemsContainer-tv>.squareCard{width:16.666666666666666666666666666667%}@media all and (orientation:portrait){.overflowPortraitCard{width:42vw}.overflowBackdropCard{width:72vw}.overflowSquareCard{width:42vw}}@media all and (orientation:landscape){.overflowBackdropCard{width:23.3vw}.overflowPortraitCard,.overflowSquareCard{width:15.5vw}}@media all and (orientation:landscape) and (min-width:1700px){.overflowBackdropCard{width:18.5vw}.overflowPortraitCard,.overflowSquareCard{width:11.6vw}}@media all and (orientation:portrait) and (min-width:400px){.overflowPortraitCard{width:31.5vw}}@media all and (orientation:portrait) and (min-width:540px){.overflowBackdropCard{width:64vw}.overflowSquareCard{width:31.5vw}}@media all and (orientation:portrait) and (min-width:640px){.overflowBackdropCard{width:56vw}}@media all and (orientation:portrait) and (min-width:760px){.overflowPortraitCard{width:23vw}.overflowBackdropCard{width:40vw}.overflowSquareCard{width:23vw}}@media all and (orientation:portrait) and (min-width:1200px){.overflowPortraitCard,.overflowSquareCard{width:18vw}}@media all and (orientation:portrait) and (min-width:1400px){.overflowPortraitCard,.overflowSquareCard{width:15vw}.overflowBackdropCard{width:30vw}}@media all and (orientation:portrait) and (min-width:1800px){.overflowBackdropCard{width:23.5vw}}.itemsContainer-tv>.overflowBackdropCard{width:23.3vw}.overflowBackdropCard-textCard{width:15.5vw!important}.overflowBackdropCard-textCardPadder{padding-bottom:87.75%}.itemsContainer-tv>.overflowPortraitCard,.itemsContainer-tv>.overflowSquareCard{width:15.5vw} \ No newline at end of file +.card,.card:focus{font-weight:inherit!important}.card,.cardBox,.cardContent,.textActionButton{-webkit-tap-highlight-color:transparent;outline:0!important}button::-moz-focus-inner{padding:0;border:0}button{-webkit-border-fit:border!important}.card{border:0;font-size:inherit!important;font-family:inherit!important;text-transform:none;background:0 0!important;margin:0;padding:0;display:block;color:inherit!important;cursor:pointer;contain:layout style;-webkit-flex-shrink:0;flex-shrink:0}.cardContent-button,.textActionButton{cursor:pointer;vertical-align:middle;font-family:inherit}.card-nofocustransform{contain:layout style paint}.itemsContainer{display:-webkit-box;display:-webkit-flex;display:flex}.vertical-list,.vertical-wrap{display:-webkit-box;display:-webkit-flex;-webkit-box-direction:normal}.vertical-list{display:flex;-webkit-box-orient:vertical;-webkit-flex-direction:column;flex-direction:column;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.vertical-wrap{display:flex;-webkit-box-orient:horizontal;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:wrap;flex-wrap:wrap}.cardImageContainer,.mediaSourceIndicator{display:-webkit-box;-webkit-box-align:center}.vertical-wrap.centered{-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.cardScalable{position:relative;contain:layout style}.cardPadder-backdrop,.cardPadder-mixedBackdrop,.cardPadder-overflowBackdrop,.cardPadder-overflowSmallBackdrop,.cardPadder-smallBackdrop{padding-bottom:56.25%;contain:strict}.cardPadder-mixedSquare,.cardPadder-overflowSquare,.cardPadder-square,.overflowSquareCard-textCardPadder{padding-bottom:100%;contain:strict}.cardPadder-mixedPortrait,.cardPadder-overflowPortrait,.cardPadder-portrait,.overflowPortraitCard-textCardPadder{padding-bottom:150%;contain:strict}.cardPadder-banner{padding-bottom:18.5%;contain:strict}.cardBox{padding:0!important;margin:.42em;-webkit-transition:none;-o-transition:none;transition:none;border:0 solid transparent;contain:layout style}@media (min-width:50em){.cardBox{margin:.9em}}.cardBox-withfocuscontent-large{margin:.4em}.card-focuscontent-large{border:.5em solid transparent}.cardBox-focustransform{will-change:transform;-webkit-transition:-webkit-transform .2s ease-out;-o-transition:transform .2s ease-out;transition:transform .2s ease-out}.card:focus>.cardBox-focustransform{-webkit-transform:scale(1.18,1.18);transform:scale(1.18,1.18)}.cardBox-bottompadded{margin-bottom:1.8em!important}@media (max-width:50em){.cardBox-bottompadded{margin-bottom:1.2em!important}}.card:focus{position:relative!important;z-index:10!important}.btnCardOptions{position:absolute;bottom:.25em;right:0;margin:0!important;z-index:1}.mediaSourceIndicator{display:-webkit-flex;display:flex;position:absolute;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;top:.3em;left:.3em;text-align:center;vertical-align:middle;width:1.6em;height:1.6em;-webkit-border-radius:50%;border-radius:50%;color:#fff;background:#38c}.cardText,.innerCardFooter{overflow:hidden;text-align:left}.cardImageContainer{-webkit-background-size:contain;background-size:contain;background-repeat:no-repeat;background-position:center center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;-webkit-background-clip:content-box!important;background-clip:content-box!important;color:inherit;height:100%;contain:strict}.cardContent,.cardImage{position:absolute;right:0;top:0;left:0;bottom:0}.chapterCardImageContainer{background-color:#000;-webkit-border-radius:0;border-radius:0}.textCardImageContainer{background-color:#333}.cardContent{overflow:hidden;display:block;margin:0!important;height:100%;contain:strict}.cardContent-button{border:0!important;padding:0!important;color:inherit;width:100%;font-size:inherit}.cardContent-button:not(.defaultCardBackground){background-color:transparent}.visualCardBox .cardContent{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.cardContent-shadow{-webkit-box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37)}.cardImageContainer{display:-webkit-box;display:-webkit-flex;display:flex}.cardImage{-webkit-background-size:contain;background-size:contain;background-repeat:no-repeat;background-position:center bottom}.cardImage-img{max-height:100%;max-width:100%;min-height:70%;min-width:70%;margin:auto}.coveredImage-img{width:100%;height:100%}.coveredImage-noscale-img{max-height:none;max-width:none}.coveredImage{-webkit-background-size:100% 100%;background-size:100% 100%;background-position:center center}.coveredImage-noScale{-webkit-background-size:cover;background-size:cover}.cardFooter{padding:.3em .3em .5em;position:relative}.visualCardBox{-webkit-box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);-webkit-border-radius:.145em;border-radius:.145em}.innerCardFooter{background:rgba(0,0,0,.7);position:absolute;bottom:0;left:0;z-index:1;max-width:100%;color:#fff}.innerCardFooterClear{background-color:transparent}.fullInnerCardFooter{right:0}.cardText{padding:.06em .5em;white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis}.cardDefaultText,.cardTextCentered{text-align:center}.cardText-secondary{font-size:86%}.cardText-first{padding-top:.24em}.innerCardFooter>.cardText{padding:.3em .5em}.cardFooter-withlogo{padding-left:4em;position:relative}.cardFooterLogo{position:absolute;top:0;bottom:0;left:0;width:4.5em;-webkit-background-size:70% auto;background-size:70% auto;background-repeat:no-repeat;background-position:center center}.cardText-rightmargin{margin-right:2em}.cardDefaultText{white-space:normal}.textActionButton{background:0 0;border:0!important;padding:0!important;color:inherit;font-size:inherit}.textActionButton:hover{text-decoration:underline}.cardImageIcon{font-size:5em;color:inherit}.cardImageIcon-small{font-size:3em;margin-bottom:.1em}.cardIndicators{right:.225em;top:.225em;position:absolute;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;contain:layout style}.cardProgramAttributeIndicators{top:0;left:0;position:absolute;display:-webkit-box;display:-webkit-flex;display:flex;text-transform:uppercase;font-size:92%}.programAttributeIndicator{padding:.18em .5em;color:#fff;font-weight:500}.cardOverlayButton{color:rgba(255,255,255,.76)!important;margin:0;z-index:1;padding:.75em;font-size:88%}.cardOverlayButton-br{position:absolute;bottom:0;right:0}.cardOverlayButtonIcon{background-color:rgba(0,0,0,.7)!important;-webkit-border-radius:100em;border-radius:100em;width:1.5em!important;height:1.5em!important;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:flex;font-size:1.66956521739130434em!important}.cardOverlayButton-centered{bottom:initial;right:initial;position:static;position:absolute;display:-webkit-box;display:-webkit-flex;display:flex;font-size:112%;margin:-1.3em 0 0 -1.3em;width:2.6em;height:2.6em;top:50%;left:50%;background-color:rgba(0,0,0,.5)!important;border:.06em solid rgba(255,255,255,.6);padding:.38em!important;color:rgba(255,255,255,.76);-webkit-transition:-webkit-transform .2s ease-out;-o-transition:transform .2s ease-out;transition:transform .2s ease-out}.cardOverlayButton-centered:hover{-webkit-transform:scale(1.2,1.2);transform:scale(1.2,1.2)}.backdropCard,.bannerCard{width:100%}.smallBackdropCard,.squareCard{width:50%}.portraitCard{width:33.333333333333333333333333333333%}.mixedPortraitCard{width:12em}.mixedSquareCard{width:18em}.mixedBackdropCard{width:32em}@media (min-width:25em){.backdropCard{width:50%}}@media (min-width:31.25em){.portraitCard,.smallBackdropCard,.squareCard{width:33.333333333333333333333333333333%}}@media (min-width:43.75em){.portraitCard,.squareCard{width:25%}}@media (min-width:48.125em){.backdropCard{width:33.333333333333333333333333333333%}}@media (min-width:50em){.bannerCard{width:50%}.portraitCard,.squareCard{width:20%}.smallBackdropCard{width:25%}}@media (min-width:62.5em){.smallBackdropCard{width:20%}}@media (min-width:75em){.backdropCard{width:25%}.portraitCard,.squareCard{width:16.666666666666666666666666666667%}.bannerCard{width:33.333333333333333333333333333333%}.smallBackdropCard{width:16.666666666666666666666666666667%}}@media (min-width:87.5em){.portraitCard,.smallBackdropCard,.squareCard{width:14.285714285714285714285714285714%}}@media (min-width:100em){.smallBackdropCard{width:12.5%}.backdropCard{width:20%}.portraitCard,.squareCard{width:12.5%}}@media (min-width:120em){.portraitCard,.squareCard{width:11.111111111111111111111111111111%}}@media (min-width:131.25em){.bannerCard{width:25%}.portraitCard,.squareCard{width:10%}}@media (min-width:156.25em){.backdropCard{width:16.666666666666666666666666666667%}}.itemsContainer-tv>.backdropCard{width:25%}.itemsContainer-tv>.portraitCard,.itemsContainer-tv>.squareCard{width:16.666666666666666666666666666667%}.overflowBackdropCard,.overflowSmallBackdropCard{width:72vw}.overflowPortraitCard,.overflowSquareCard{width:40vw}@media (min-width:25em){.overflowPortraitCard{width:31.2vw}}@media (min-width:35em){.overflowSquareCard{width:31.2vw}.overflowBackdropCard{width:45.5vw}.overflowSmallBackdropCard{width:30vw}}@media (min-width:43.75em){.overflowPortraitCard,.overflowSquareCard{width:23.3vw}}@media (min-width:48.125em){.overflowBackdropCard,.overflowSmallBackdropCard{width:30vw}}@media (orientation:landscape){.overflowBackdropCard,.overflowSmallBackdropCard{width:30vw}.overflowPortraitCard,.overflowSquareCard{width:23.3vw}}@media (orientation:landscape) and (min-width:48.125em){.overflowBackdropCard,.overflowSmallBackdropCard{width:23.3vw}}@media (orientation:landscape) and (min-width:50em){.overflowSmallBackdropCard{width:15.5vw}}@media (min-width:50em){.overflowPortraitCard,.overflowSquareCard{width:18.4vw}}@media (min-width:75em){.overflowBackdropCard,.overflowSmallBackdropCard{width:23.3vw}.overflowPortraitCard,.overflowSquareCard{width:15.5vw}}@media (min-width:87.5em){.overflowPortraitCard,.overflowSquareCard{width:13.3vw}}@media (min-width:100em){.overflowBackdropCard,.overflowSmallBackdropCard{width:18.7vw}.overflowPortraitCard,.overflowSquareCard{width:11.6vw}}@media (min-width:120em){.overflowPortraitCard,.overflowSquareCard{width:10.3vw}}@media (min-width:131.25em){.overflowPortraitCard,.overflowSquareCard{width:9.3vw}}@media (min-width:156.25em){.overflowBackdropCard,.overflowSmallBackdropCard{width:15.6vw}}.itemsContainer-tv>.overflowBackdropCard{width:23.5vw}.overflowBackdropCard-textCard{width:15.5vw!important}.overflowBackdropCard-textCardPadder{padding-bottom:87.75%}.itemsContainer-tv>.overflowPortraitCard,.itemsContainer-tv>.overflowSquareCard{width:15.6vw}.itemsContainer-tv>.overflowSmallBackdropCard{width:18.8vw}.cardOverlayContainer{background:-webkit-radial-gradient(50% 50%,farthest-corner,rgba(30,30,30,.5) 50%,#2c2c2c 100%);background:-o-radial-gradient(50% 50%,farthest-corner,rgba(30,30,30,.5) 50%,#2c2c2c 100%);background:radial-gradient(farthest-corner at 50% 50%,rgba(30,30,30,.5) 50%,#2c2c2c 100%);opacity:0;-webkit-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s;position:absolute;top:0;left:0;bottom:0;right:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.card-hoverable :hover .cardOverlayContainer{opacity:1}.cardOverlayButton-hover{opacity:0;-webkit-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s;background:0 0;color:#fff!important;padding:.5em}.cardOverlayButtonIcon-hover{background:0 0!important}.card-hoverable:hover .cardOverlayButton-hover{opacity:1}.cardOverlayFab-primary{font-size:130%;padding:0;width:3em;height:3em;margin-top:-1.5em;margin-left:-1.5em;position:absolute;top:50%;left:50%}.cardOverlayFab-primary i{border:.07em solid rgba(255,255,255,.9);color:#fff} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/cardbuilder.js b/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/cardbuilder.js index 5270290ddb..b13ef8b45a 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/cardbuilder.js +++ b/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/cardbuilder.js @@ -1,2 +1,2 @@ -define(["datetime","imageLoader","connectionManager","itemHelper","focusManager","indicators","globalize","layoutManager","apphost","dom","browser","itemShortcuts","css!./card","paper-icon-button-light","programStyles"],function(datetime,imageLoader,connectionManager,itemHelper,focusManager,indicators,globalize,layoutManager,appHost,dom,browser,itemShortcuts){"use strict";function getCardsHtml(items,options){1===arguments.length&&(options=arguments[0],items=options.items);var html=buildCardsHtmlInternal(items,options);return html}function getPostersPerRow(shape,screenWidth){switch(shape){case"portrait":return screenWidth>=2200?10:screenWidth>=2100?9:screenWidth>=1600?8:screenWidth>=1400?7:screenWidth>=1200?6:screenWidth>=800?5:screenWidth>=640?4:3;case"square":return screenWidth>=2100?9:screenWidth>=1800?8:screenWidth>=1400?7:screenWidth>=1200?6:screenWidth>=900?5:screenWidth>=700?4:screenWidth>=500?3:2;case"banner":return screenWidth>=2200?4:screenWidth>=1200?3:screenWidth>=800?2:1;case"backdrop":return screenWidth>=2500?6:screenWidth>=1600?5:screenWidth>=1200?4:screenWidth>=770?3:screenWidth>=420?2:1;case"smallBackdrop":return screenWidth>=1440?8:screenWidth>=1100?6:screenWidth>=800?5:screenWidth>=600?4:screenWidth>=540?3:screenWidth>=420?2:1;case"overflowPortrait":return screenWidth>=1e3?100/22:screenWidth>=540?100/30:100/42;case"overflowSquare":return screenWidth>=1e3?100/22:screenWidth>=540?100/30:100/42;case"overflowBackdrop":return screenWidth>=1e3?2.5:screenWidth>=640?100/56:screenWidth>=540?1.5625:100/72;default:return 4}}function isResizable(windowWidth){var screen=window.screen;if(screen){var screenWidth=screen.availWidth;if(screenWidth-windowWidth>20)return!0}return!1}function getImageWidth(shape){var screenWidth=dom.getWindowSize().innerWidth;if(isResizable(screenWidth)){var roundScreenTo=100;screenWidth=Math.floor(screenWidth/roundScreenTo)*roundScreenTo}window.screen&&(screenWidth=Math.min(screenWidth,screen.availWidth||screenWidth));var imagesPerRow=getPostersPerRow(shape,screenWidth),shapeWidth=screenWidth/imagesPerRow;return Math.round(shapeWidth)}function setCardData(items,options){options.shape=options.shape||"auto";var primaryImageAspectRatio=imageLoader.getPrimaryImageAspectRatio(items);if("auto"===options.shape||"autohome"===options.shape||"autooverflow"===options.shape||"autoVertical"===options.shape){var requestedShape=options.shape;options.shape=null,primaryImageAspectRatio&&(primaryImageAspectRatio>=3?(options.shape="banner",options.coverImage=!0):primaryImageAspectRatio>=1.33?options.shape="autooverflow"===requestedShape?"overflowBackdrop":"backdrop":primaryImageAspectRatio>.71?options.shape="autooverflow"===requestedShape?"overflowSquare":"square":options.shape="autooverflow"===requestedShape?"overflowPortrait":"portrait"),options.shape||(options.shape=options.defaultShape||("autooverflow"===requestedShape?"overflowSquare":"square"))}"auto"===options.preferThumb&&(options.preferThumb="backdrop"===options.shape||"overflowBackdrop"===options.shape),options.uiAspect=getDesiredAspect(options.shape),options.primaryImageAspectRatio=primaryImageAspectRatio,!options.width&&options.widths&&(options.width=options.widths[options.shape]),options.rows&&"number"!=typeof options.rows&&(options.rows=options.rows[options.shape]),layoutManager.tv&&("backdrop"===options.shape?options.width=options.width||500:"portrait"===options.shape?options.width=options.width||256:"square"===options.shape?options.width=options.width||256:"banner"===options.shape&&(options.width=options.width||800)),options.width=options.width||getImageWidth(options.shape)}function buildCardsHtmlInternal(items,options){var isVertical;"autoVertical"===options.shape&&(isVertical=!0),setCardData(items,options);var currentIndexValue,hasOpenRow,hasOpenSection,apiClient,lastServerId,i,length,html="",itemsInRow=0,sectionTitleTagName=options.sectionTitleTagName||"div";for(i=0,length=items.length;i=.5?.5:0)+"+":null);newIndexValue!==currentIndexValue&&(hasOpenRow&&(html+="
",hasOpenRow=!1,itemsInRow=0),hasOpenSection&&(html+="
",isVertical&&(html+="
"),hasOpenSection=!1),html+=isVertical?'
':'
',html+="<"+sectionTitleTagName+' class="sectionTitle">'+newIndexValue+"",isVertical&&(html+='
'),currentIndexValue=newIndexValue,hasOpenSection=!0)}options.rows&&0===itemsInRow&&(hasOpenRow&&(html+="
",hasOpenRow=!1),html+='
',hasOpenRow=!0),html+=buildCard(i,item,apiClient,options),itemsInRow++,options.rows&&itemsInRow>=options.rows&&(html+="
",hasOpenRow=!1,itemsInRow=0)}hasOpenRow&&(html+="
"),hasOpenSection&&(html+="
",isVertical&&(html+="
"));var cardFooterHtml="";for(i=0,length=options.lines;i 
':'
 
';if(options.leadingButtons)for(i=0,length=options.leadingButtons.length;i';html+='
';var icon="";return buttonInfo.icon&&(icon=''+buttonInfo.icon+""),html+='
'+icon+'
'+buttonInfo.name+"
",html+=cardFooterHtml,html+="
",html+=""}function getDesiredAspect(shape){if(shape){if(shape=shape.toLowerCase(),shape.indexOf("portrait")!==-1)return 2/3;if(shape.indexOf("backdrop")!==-1)return 16/9;if(shape.indexOf("square")!==-1)return 1;if(shape.indexOf("banner")!==-1)return 1e3/185}return null}function getCardImageUrl(item,apiClient,options,shape){var imageItem=item.ProgramInfo||item;item=imageItem;var width=options.width,height=null,primaryImageAspectRatio=item.PrimaryImageAspectRatio,forceName=!1,imgUrl=null,coverImage=!1,uiAspect=null;return options.preferThumb&&item.ImageTags&&item.ImageTags.Thumb?imgUrl=apiClient.getScaledImageUrl(item.Id,{type:"Thumb",maxWidth:width,tag:item.ImageTags.Thumb}):(options.preferBanner||"banner"===shape)&&item.ImageTags&&item.ImageTags.Banner?imgUrl=apiClient.getScaledImageUrl(item.Id,{type:"Banner",maxWidth:width,tag:item.ImageTags.Banner}):options.preferDisc&&item.ImageTags&&item.ImageTags.Disc?imgUrl=apiClient.getScaledImageUrl(item.Id,{type:"Disc",maxWidth:width,tag:item.ImageTags.Disc}):options.preferThumb&&item.SeriesThumbImageTag&&options.inheritThumb!==!1?imgUrl=apiClient.getScaledImageUrl(item.SeriesId,{type:"Thumb",maxWidth:width,tag:item.SeriesThumbImageTag}):options.preferThumb&&item.ParentThumbItemId&&options.inheritThumb!==!1&&"Photo"!==item.MediaType?imgUrl=apiClient.getScaledImageUrl(item.ParentThumbItemId,{type:"Thumb",maxWidth:width,tag:item.ParentThumbImageTag}):options.preferThumb&&item.BackdropImageTags&&item.BackdropImageTags.length?(imgUrl=apiClient.getScaledImageUrl(item.Id,{type:"Backdrop",maxWidth:width,tag:item.BackdropImageTags[0]}),forceName=!0):options.preferThumb&&item.ParentBackdropImageTags&&item.ParentBackdropImageTags.length&&options.inheritThumb!==!1&&"Episode"===item.Type?imgUrl=apiClient.getScaledImageUrl(item.ParentBackdropItemId,{type:"Backdrop",maxWidth:width,tag:item.ParentBackdropImageTags[0]}):item.ImageTags&&item.ImageTags.Primary?(height=width&&primaryImageAspectRatio?Math.round(width/primaryImageAspectRatio):null,imgUrl=apiClient.getScaledImageUrl(item.Id,{type:"Primary",maxHeight:height,maxWidth:width,tag:item.ImageTags.Primary}),options.preferThumb&&options.showTitle!==!1&&(forceName=!0),primaryImageAspectRatio&&(uiAspect=getDesiredAspect(shape),uiAspect&&(coverImage=Math.abs(primaryImageAspectRatio-uiAspect)/uiAspect<=.2))):item.PrimaryImageTag?(height=width&&primaryImageAspectRatio?Math.round(width/primaryImageAspectRatio):null,imgUrl=apiClient.getScaledImageUrl(item.PrimaryImageItemId||item.Id||item.ItemId,{type:"Primary",maxHeight:height,maxWidth:width,tag:item.PrimaryImageTag}),options.preferThumb&&options.showTitle!==!1&&(forceName=!0),primaryImageAspectRatio&&(uiAspect=getDesiredAspect(shape),uiAspect&&(coverImage=Math.abs(primaryImageAspectRatio-uiAspect)/uiAspect<=.2))):item.ParentPrimaryImageTag?imgUrl=apiClient.getScaledImageUrl(item.ParentPrimaryImageItemId,{type:"Primary",maxWidth:width,tag:item.ParentPrimaryImageTag}):item.SeriesPrimaryImageTag?imgUrl=apiClient.getScaledImageUrl(item.SeriesId,{type:"Primary",maxWidth:width,tag:item.SeriesPrimaryImageTag}):item.AlbumId&&item.AlbumPrimaryImageTag?(width=primaryImageAspectRatio?Math.round(height*primaryImageAspectRatio):null,imgUrl=apiClient.getScaledImageUrl(item.AlbumId,{type:"Primary",maxHeight:height,maxWidth:width,tag:item.AlbumPrimaryImageTag}),primaryImageAspectRatio&&(uiAspect=getDesiredAspect(shape),uiAspect&&(coverImage=Math.abs(primaryImageAspectRatio-uiAspect)/uiAspect<=.2))):"Season"===item.Type&&item.ImageTags&&item.ImageTags.Thumb?imgUrl=apiClient.getScaledImageUrl(item.Id,{type:"Thumb",maxWidth:width,tag:item.ImageTags.Thumb}):item.BackdropImageTags&&item.BackdropImageTags.length?imgUrl=apiClient.getScaledImageUrl(item.Id,{type:"Backdrop",maxWidth:width,tag:item.BackdropImageTags[0]}):item.ImageTags&&item.ImageTags.Thumb?imgUrl=apiClient.getScaledImageUrl(item.Id,{type:"Thumb",maxWidth:width,tag:item.ImageTags.Thumb}):item.SeriesThumbImageTag&&options.inheritThumb!==!1?imgUrl=apiClient.getScaledImageUrl(item.SeriesId,{type:"Thumb",maxWidth:width,tag:item.SeriesThumbImageTag}):item.ParentThumbItemId&&options.inheritThumb!==!1?imgUrl=apiClient.getScaledImageUrl(item.ParentThumbItemId,{type:"Thumb",maxWidth:width,tag:item.ParentThumbImageTag}):item.ParentBackdropImageTags&&item.ParentBackdropImageTags.length&&options.inheritThumb!==!1&&(imgUrl=apiClient.getScaledImageUrl(item.ParentBackdropItemId,{type:"Backdrop",maxWidth:width,tag:item.ParentBackdropImageTags[0]})),{imgUrl:imgUrl,forceName:forceName,coverImage:coverImage}}function getRandomInt(min,max){return Math.floor(Math.random()*(max-min+1))+min}function getDefaultColorIndex(str){if(str){for(var charIndex=Math.floor(str.length/2),character=String(str.substr(charIndex,1).charCodeAt()),sum=0,i=0;i0&&isOuterFooter?currentCssClass+=" cardText-secondary":0===valid&&isOuterFooter&&(currentCssClass+=" cardText-first"),addRightMargin&&(currentCssClass+=" cardText-rightmargin"),text&&(html+="
",html+=text,html+="
",valid++,maxLines&&valid>=maxLines))break}if(forceLines)for(length=maxLines||Math.min(lines.length,maxLines||lines.length);valid 
",valid++;return html}function isUsingLiveTvNaming(item){return"Program"===item.Type||"Timer"===item.Type||"Recording"===item.Type}function getAirTimeText(item,showAirDateTime,showAirEndTime){var airTimeText="";if(item.StartDate)try{var date=datetime.parseISO8601Date(item.StartDate);showAirDateTime&&(airTimeText+=datetime.toLocaleDateString(date,{weekday:"short",month:"short",day:"numeric"})+" "),airTimeText+=datetime.getDisplayTime(date),item.EndDate&&showAirEndTime&&(date=datetime.parseISO8601Date(item.EndDate),airTimeText+=" - "+datetime.getDisplayTime(date))}catch(e){console.log("Error parsing date: "+item.StartDate)}return airTimeText}function getCardFooterText(item,apiClient,options,showTitle,forceName,overlayText,imgUrl,footerClass,progressHtml,logoUrl,isOuterFooter){var html="";logoUrl&&(html+='');var showOtherText=isOuterFooter?!overlayText:overlayText;if(isOuterFooter&&options.cardLayout&&!layoutManager.tv&&"none"!==options.cardFooterAside){var moreIcon="dots-horiz"===appHost.moreIcon?"":"";html+='"}var titleAdded,cssClass=options.centerText?"cardText cardTextCentered":"cardText",lines=[],parentTitleUnderneath="MusicAlbum"===item.Type||"Audio"===item.Type||"MusicVideo"===item.Type;if(showOtherText&&(options.showParentTitle||options.showParentTitleOrTitle)&&!parentTitleUnderneath)if(isOuterFooter&&"Episode"===item.Type&&item.SeriesName&&item.SeriesId)lines.push(getTextActionButton({Id:item.SeriesId,ServerId:item.ServerId,Name:item.SeriesName,Type:"Series",IsFolder:!0}));else if(isUsingLiveTvNaming(item))lines.push(item.Name),item.EpisodeTitle||(titleAdded=!0);else{var parentTitle=item.SeriesName||item.Series||item.Album||item.AlbumArtist||item.GameSystem||"";(parentTitle||showTitle)&&lines.push(parentTitle)}var showMediaTitle=showTitle&&!titleAdded||options.showParentTitleOrTitle&&!lines.length;if(showMediaTitle||titleAdded||!showTitle&&!forceName||(showMediaTitle=!0),showMediaTitle){var name="auto"!==options.showTitle||item.IsFolder||"Photo"!==item.MediaType?itemHelper.getDisplayName(item,{includeParentInfo:options.includeParentInfoInTitle}):"";lines.push(name)}if(showOtherText){if(options.showParentTitle&&parentTitleUnderneath&&(isOuterFooter&&item.AlbumArtists&&item.AlbumArtists.length?(item.AlbumArtists[0].Type="MusicArtist",item.AlbumArtists[0].IsFolder=!0,lines.push(getTextActionButton(item.AlbumArtists[0],null,item.ServerId))):lines.push(isUsingLiveTvNaming(item)?item.Name:item.SeriesName||item.Series||item.Album||item.AlbumArtist||item.GameSystem||"")),options.showItemCounts){var itemCountHtml=getItemCountsHtml(options,item);lines.push(itemCountHtml)}if(options.textLines)for(var additionalLines=options.textLines(item),i=0,length=additionalLines.length;i'+html,html+="
"),html}function getTextActionButton(item,text,serverId){if(text||(text=itemHelper.getDisplayName(item)),layoutManager.tv)return text;var html=""}function getItemCountsHtml(options,item){var childText,counts=[];if("Playlist"===item.Type){if(childText="",item.RunTimeTicks){var minutes=item.RunTimeTicks/6e8;minutes=minutes||1,childText+=globalize.translate("sharedcomponents#ValueMinutes",Math.round(minutes))}else childText+=globalize.translate("sharedcomponents#ValueMinutes",0);counts.push(childText)}else"Genre"===item.Type||"Studio"===item.Type?(item.MovieCount&&(childText=1===item.MovieCount?globalize.translate("sharedcomponents#ValueOneMovie"):globalize.translate("sharedcomponents#ValueMovieCount",item.MovieCount),counts.push(childText)),item.SeriesCount&&(childText=1===item.SeriesCount?globalize.translate("sharedcomponents#ValueOneSeries"):globalize.translate("sharedcomponents#ValueSeriesCount",item.SeriesCount),counts.push(childText)),item.EpisodeCount&&(childText=1===item.EpisodeCount?globalize.translate("sharedcomponents#ValueOneEpisode"):globalize.translate("sharedcomponents#ValueEpisodeCount",item.EpisodeCount),counts.push(childText)),item.GameCount&&(childText=1===item.GameCount?globalize.translate("sharedcomponents#ValueOneGame"):globalize.translate("sharedcomponents#ValueGameCount",item.GameCount),counts.push(childText))):"GameGenre"===item.Type?item.GameCount&&(childText=1===item.GameCount?globalize.translate("sharedcomponents#ValueOneGame"):globalize.translate("sharedcomponents#ValueGameCount",item.GameCount),counts.push(childText)):"MusicGenre"===item.Type||"MusicArtist"===options.context?(item.AlbumCount&&(childText=1===item.AlbumCount?globalize.translate("sharedcomponents#ValueOneAlbum"):globalize.translate("sharedcomponents#ValueAlbumCount",item.AlbumCount),counts.push(childText)),item.SongCount&&(childText=1===item.SongCount?globalize.translate("sharedcomponents#ValueOneSong"):globalize.translate("sharedcomponents#ValueSongCount",item.SongCount),counts.push(childText)),item.MusicVideoCount&&(childText=1===item.MusicVideoCount?globalize.translate("sharedcomponents#ValueOneMusicVideo"):globalize.translate("sharedcomponents#ValueMusicVideoCount",item.MusicVideoCount),counts.push(childText))):"Series"===item.Type&&(childText=1===item.RecursiveItemCount?globalize.translate("sharedcomponents#ValueOneEpisode"):globalize.translate("sharedcomponents#ValueEpisodeCount",item.RecursiveItemCount),counts.push(childText));return counts.join(", ")}function requireRefreshIndicator(){refreshIndicatorLoaded||(refreshIndicatorLoaded=!0,require(["emby-itemrefreshindicator"]))}function buildCard(index,item,apiClient,options){var action=options.action||"link";"play"===action&&item.IsFolder?action="link":"Photo"===item.MediaType&&(action="play");var shape=options.shape;if("mixed"===shape){shape=null;var primaryImageAspectRatio=item.PrimaryImageAspectRatio;primaryImageAspectRatio&&(shape=primaryImageAspectRatio>=1.33?"mixedBackdrop":primaryImageAspectRatio>.71?"mixedSquare":"mixedPortrait"),shape=shape||"mixedSquare"}var enableFocusTransfrom=!browser.slow&&!browser.xboxOne&&!browser.edgeUwp,className="card";shape&&(className+=" "+shape+"Card"),options.cardCssClass&&(className+=" "+options.cardCssClass),options.cardClass&&(className+=" "+options.cardClass),enableFocusTransfrom&&layoutManager.tv||(className+=" card-nofocustransform");var imgInfo=getCardImageUrl(item,apiClient,options,shape),imgUrl=imgInfo.imgUrl,forceName=imgInfo.forceName,showTitle="auto"===options.showTitle||(options.showTitle||"PhotoAlbum"===item.Type||"Folder"===item.Type),overlayText=options.overlayText;forceName&&!options.cardLayout&&null==overlayText&&(overlayText=!0);var cardImageContainerClass="cardImageContainer",coveredImage=options.coverImage||imgInfo.coverImage;coveredImage&&(cardImageContainerClass+=" coveredImage",("Photo"===item.MediaType||"PhotoAlbum"===item.Type||"Folder"===item.Type||item.ProgramInfo||"Program"===item.Type||"Recording"===item.Type)&&(cardImageContainerClass+=" coveredImage-noScale")),imgUrl||(cardImageContainerClass+=" "+getDefaultColorClass(item.Name));var cardBoxClass=options.cardLayout?"cardBox visualCardBox":"cardBox";layoutManager.tv&&(enableFocusTransfrom&&(cardBoxClass+=" cardBox-focustransform"),options.cardLayout&&(cardBoxClass+=" card-focuscontent",enableFocusTransfrom||(cardBoxClass+=" card-focuscontent-large")));var footerCssClass,logoUrl,progressHtml=indicators.getProgressBarHtml(item),innerCardFooter="",footerOverlayed=!1,logoHeight=40;options.showChannelLogo&&item.ChannelPrimaryImageTag?logoUrl=apiClient.getScaledImageUrl(item.ChannelId,{type:"Primary",height:logoHeight,tag:item.ChannelPrimaryImageTag}):options.showLogo&&item.ParentLogoImageTag&&(logoUrl=apiClient.getScaledImageUrl(item.ParentLogoItemId,{type:"Logo",height:logoHeight,tag:item.ParentLogoImageTag})),overlayText?(logoUrl=null,footerCssClass=progressHtml?"innerCardFooter fullInnerCardFooter":"innerCardFooter",innerCardFooter+=getCardFooterText(item,apiClient,options,showTitle,forceName,overlayText,imgUrl,footerCssClass,progressHtml,logoUrl,!1),footerOverlayed=!0):progressHtml&&(innerCardFooter+='
',innerCardFooter+=progressHtml,innerCardFooter+="
",progressHtml="");var mediaSourceCount=item.MediaSourceCount||1;mediaSourceCount>1&&(innerCardFooter+='
'+mediaSourceCount+"
");var outerCardFooter="";overlayText||footerOverlayed||(footerCssClass=options.cardLayout?"cardFooter":"cardFooter cardFooter-transparent",logoUrl&&(footerCssClass+=" cardFooter-withlogo"),options.cardLayout||(logoUrl=null),outerCardFooter=getCardFooterText(item,apiClient,options,showTitle,forceName,overlayText,imgUrl,footerCssClass,progressHtml,logoUrl,!0)),outerCardFooter&&!options.cardLayout&&(cardBoxClass+=" cardBox-bottompadded");var overlayButtons="";if(!layoutManager.tv){var overlayPlayButton=options.overlayPlayButton;null!=overlayPlayButton||options.overlayMoreButton||options.overlayInfoButton||options.cardLayout||(overlayPlayButton="Video"===item.MediaType);var btnCssClass="cardOverlayButton itemAction";if(options.centerPlayButton&&(overlayButtons+=''),!overlayPlayButton||item.IsPlaceHolder||"Virtual"===item.LocationType&&item.MediaType&&"Program"!==item.Type||"Person"===item.Type||(overlayButtons+=''),options.overlayMoreButton){var moreIcon="dots-horiz"===appHost.moreIcon?"":"";overlayButtons+='"}options.overlayInfoButton&&(overlayButtons+='')}options.showChildCountIndicator&&item.ChildCount&&(className+=" groupedCard");var cardImageContainerOpen,cardImageContainerClose="",cardBoxClose="",cardScalableClose="",cardContentClass="cardContent";options.cardLayout||(cardContentClass+=" cardContent-shadow"),layoutManager.tv?(cardImageContainerOpen=imgUrl?'
':'
',cardImageContainerClose="
"):(cardImageContainerOpen=imgUrl?'");var cardScalableClass="cardScalable";layoutManager.tv&&!options.cardLayout&&(cardScalableClass+=" card-focuscontent",enableFocusTransfrom||(cardScalableClass+=" card-focuscontent-large")),cardImageContainerOpen='
'+cardImageContainerOpen,cardBoxClose="
",cardScalableClose="
";var indicatorsHtml="";if(indicatorsHtml+=indicators.getSyncIndicator(item),indicatorsHtml+=indicators.getTimerIndicator(item),indicatorsHtml+=indicators.getTypeIndicator(item),indicatorsHtml+=options.showGroupCount?indicators.getChildCountIndicatorHtml(item,{minCount:1}):indicators.getPlayedIndicatorHtml(item),"CollectionFolder"===item.Type||item.CollectionType){var refreshClass=item.RefreshProgress||item.RefreshStatus&&"Idle"!==virtualFolder.item?"":' class="hide"';indicatorsHtml+='
',requireRefreshIndicator()}indicatorsHtml&&(cardImageContainerOpen+='
'+indicatorsHtml+"
"),imgUrl||(cardImageContainerOpen+=getCardDefaultText(item,options));var tagName=layoutManager.tv&&!overlayButtons?"button":"div",nameWithPrefix=item.SortName||item.Name||"",prefix=nameWithPrefix.substring(0,Math.min(3,nameWithPrefix.length));prefix&&(prefix=prefix.toUpperCase());var timerAttributes="";item.TimerId&&(timerAttributes+=' data-timerid="'+item.TimerId+'"'),item.SeriesTimerId&&(timerAttributes+=' data-seriestimerid="'+item.SeriesTimerId+'"');var actionAttribute;"button"===tagName?(className+=" itemAction",actionAttribute=' data-action="'+action+'"'):actionAttribute="","MusicAlbum"!==item.Type&&"MusicArtist"!==item.Type&&"Audio"!==item.Type&&(className+=" card-withuserdata");var positionTicksData=item.UserData&&item.UserData.PlaybackPositionTicks?' data-positionticks="'+item.UserData.PlaybackPositionTicks+'"':"",collectionIdData=options.collectionId?' data-collectionid="'+options.collectionId+'"':"",playlistIdData=options.playlistId?' data-playlistid="'+options.playlistId+'"':"",mediaTypeData=item.MediaType?' data-mediatype="'+item.MediaType+'"':"",collectionTypeData=item.CollectionType?' data-collectiontype="'+item.CollectionType+'"':"",channelIdData=item.ChannelId?' data-channelid="'+item.ChannelId+'"':"",contextData=options.context?' data-context="'+options.context+'"':"",parentIdData=options.parentId?' data-parentid="'+options.parentId+'"':"";return"<"+tagName+' data-index="'+index+'"'+timerAttributes+actionAttribute+' data-isfolder="'+(item.IsFolder||!1)+'" data-serverid="'+(item.ServerId||options.serverId)+'" data-id="'+(item.Id||item.ItemId)+'" data-type="'+item.Type+'"'+mediaTypeData+collectionTypeData+channelIdData+positionTicksData+collectionIdData+playlistIdData+contextData+parentIdData+' data-prefix="'+prefix+'" class="'+className+'">'+cardImageContainerOpen+innerCardFooter+cardImageContainerClose+overlayButtons+cardScalableClose+outerCardFooter+cardBoxClose+""}function getCardDefaultText(item,options){var collectionType=item.CollectionType;if("livetv"===collectionType)return'';if("homevideos"===collectionType||"photos"===collectionType)return'';if("music"===collectionType)return'';if("Person"===item.Type)return'';if(options.defaultCardImageIcon)return''+options.defaultCardImageIcon+"";var defaultName=isUsingLiveTvNaming(item)?item.Name:itemHelper.getDisplayName(item);return'
'+defaultName+"
"}function buildCards(items,options){if(document.body.contains(options.itemsContainer)){if(options.parentContainer){if(!items.length)return void options.parentContainer.classList.add("hide");options.parentContainer.classList.remove("hide")}var html=buildCardsHtmlInternal(items,options);html?(options.itemsContainer.cardBuilderHtml!==html&&(options.itemsContainer.innerHTML=html,items.length<50?options.itemsContainer.cardBuilderHtml=html:options.itemsContainer.cardBuilderHtml=null),imageLoader.lazyChildren(options.itemsContainer)):(options.itemsContainer.innerHTML=html,options.itemsContainer.cardBuilderHtml=null),options.autoFocus&&focusManager.autoFocus(options.itemsContainer,!0)}}function ensureIndicators(card,indicatorsElem){if(indicatorsElem)return indicatorsElem;if(indicatorsElem=card.querySelector(".cardIndicators"),!indicatorsElem){var cardImageContainer=card.querySelector(".cardImageContainer");indicatorsElem=document.createElement("div"),indicatorsElem.classList.add("cardIndicators"),cardImageContainer.appendChild(indicatorsElem)}return indicatorsElem}function updateUserData(card,userData){var type=card.getAttribute("data-type"),enableCountIndicator="Series"===type||"BoxSet"===type||"Season"===type,indicatorsElem=null,playedIndicator=null,countIndicator=null,itemProgressBar=null;userData.Played?(playedIndicator=card.querySelector(".playedIndicator"),playedIndicator||(playedIndicator=document.createElement("div"),playedIndicator.classList.add("playedIndicator"),playedIndicator.classList.add("indicator"),indicatorsElem=ensureIndicators(card,indicatorsElem),indicatorsElem.appendChild(playedIndicator)),playedIndicator.innerHTML=''):(playedIndicator=card.querySelector(".playedIndicator"),playedIndicator&&playedIndicator.parentNode.removeChild(playedIndicator)),userData.UnplayedItemCount?(countIndicator=card.querySelector(".countIndicator"),countIndicator||(countIndicator=document.createElement("div"),countIndicator.classList.add("countIndicator"),indicatorsElem=ensureIndicators(card,indicatorsElem), -indicatorsElem.appendChild(countIndicator)),countIndicator.innerHTML=userData.UnplayedItemCount):enableCountIndicator&&(countIndicator=card.querySelector(".countIndicator"),countIndicator&&countIndicator.parentNode.removeChild(countIndicator));var progressHtml=indicators.getProgressBarHtml({Type:type,UserData:userData,MediaType:"Video"});if(progressHtml){if(itemProgressBar=card.querySelector(".itemProgressBar"),!itemProgressBar){itemProgressBar=document.createElement("div"),itemProgressBar.classList.add("itemProgressBar");var innerCardFooter=card.querySelector(".innerCardFooter");if(!innerCardFooter){innerCardFooter=document.createElement("div"),innerCardFooter.classList.add("innerCardFooter");var cardImageContainer=card.querySelector(".cardImageContainer");cardImageContainer.appendChild(innerCardFooter)}innerCardFooter.appendChild(itemProgressBar)}itemProgressBar.innerHTML=progressHtml}else itemProgressBar=card.querySelector(".itemProgressBar"),itemProgressBar&&itemProgressBar.parentNode.removeChild(itemProgressBar)}function onUserDataChanged(userData,scope){for(var cards=(scope||document.body).querySelectorAll('.card-withuserdata[data-id="'+userData.ItemId+'"]'),i=0,length=cards.length;i')}cell.setAttribute("data-timerid",newTimerId)}}function onTimerCancelled(id,itemsContainer){for(var cells=itemsContainer.querySelectorAll('.card[data-timerid="'+id+'"]'),i=0,length=cells.length;i=2200?10:screenWidth>=1920?9.000000000009:screenWidth>=1600?8:screenWidth>=1400?7.0000000000021:screenWidth>=1200?5.9999999988:screenWidth>=800?5:screenWidth>=700?4:3.0000000003;case"square":return layoutManager.tv?5.9999999988:screenWidth>=2200?10:screenWidth>=1920?9.000000000009:screenWidth>=1600?8:screenWidth>=1400?7.0000000000021:screenWidth>=1200?5.9999999988:screenWidth>=800?5:screenWidth>=700?4:screenWidth>=500?3.0000000003:2;case"banner":return screenWidth>=2200?4:screenWidth>=1200?3.0000000003:screenWidth>=800?2:1;case"backdrop":return layoutManager.tv?4:screenWidth>=2500?6:screenWidth>=1600?5:screenWidth>=1200?4:screenWidth>=770?3:screenWidth>=420?2:1;case"smallBackdrop":return screenWidth>=1600?8:screenWidth>=1400?7.000000000007001:screenWidth>=1200?6:screenWidth>=1e3?5:screenWidth>=800?4:screenWidth>=500?3.0000000003:2;case"overflowSmallBackdrop":return layoutManager.tv?100/18.9:isOrientationLandscape?screenWidth>=800?100/15.5:100/23.3:screenWidth>=540?100/30:100/72;case"overflowPortrait":return layoutManager.tv?100/15.5:isOrientationLandscape?screenWidth>=1700?100/11.6:100/15.5:screenWidth>=1400?100/15:screenWidth>=1200?100/18:screenWidth>=760?100/23:screenWidth>=400?100/31.5:100/42;case"overflowSquare":return layoutManager.tv?100/15.5:isOrientationLandscape?screenWidth>=1700?100/11.6:100/15.5:screenWidth>=1400?100/15:screenWidth>=1200?100/18:screenWidth>=760?100/23:screenWidth>=540?100/31.5:100/42;case"overflowBackdrop":return layoutManager.tv?100/23.3:isOrientationLandscape?screenWidth>=1700?100/18.5:100/23.3:screenWidth>=1800?100/23.5:screenWidth>=1400?100/30:screenWidth>=760?2.5:screenWidth>=640?100/56:100/72;default:return 4}}function isResizable(windowWidth){var screen=window.screen;if(screen){if(screen.availWidth-windowWidth>20)return!0}return!1}function getImageWidth(shape,screenWidth,isOrientationLandscape){var imagesPerRow=getPostersPerRow(shape,screenWidth,isOrientationLandscape),shapeWidth=screenWidth/imagesPerRow;return Math.round(shapeWidth)}function setCardData(items,options){options.shape=options.shape||"auto";var primaryImageAspectRatio=imageLoader.getPrimaryImageAspectRatio(items);if("auto"===options.shape||"autohome"===options.shape||"autooverflow"===options.shape||"autoVertical"===options.shape){var requestedShape=options.shape;options.shape=null,primaryImageAspectRatio&&(primaryImageAspectRatio>=3?(options.shape="banner",options.coverImage=!0):options.shape=primaryImageAspectRatio>=1.33?"autooverflow"===requestedShape?"overflowBackdrop":"backdrop":primaryImageAspectRatio>.71?"autooverflow"===requestedShape?"overflowSquare":"square":"autooverflow"===requestedShape?"overflowPortrait":"portrait"),options.shape||(options.shape=options.defaultShape||("autooverflow"===requestedShape?"overflowSquare":"square"))}if("auto"===options.preferThumb&&(options.preferThumb="backdrop"===options.shape||"overflowBackdrop"===options.shape),options.uiAspect=getDesiredAspect(options.shape),options.primaryImageAspectRatio=primaryImageAspectRatio,!options.width&&options.widths&&(options.width=options.widths[options.shape]),options.rows&&"number"!=typeof options.rows&&(options.rows=options.rows[options.shape]),!options.width){var screenWidth=dom.getWindowSize().innerWidth,screenHeight=dom.getWindowSize().innerHeight;if(isResizable(screenWidth)){screenWidth=100*Math.floor(screenWidth/100)}options.width=getImageWidth(options.shape,screenWidth,screenWidth>1.3*screenHeight)}}function buildCardsHtmlInternal(items,options){var isVertical;"autoVertical"===options.shape&&(isVertical=!0),setCardData(items,options);var currentIndexValue,hasOpenRow,hasOpenSection,apiClient,lastServerId,i,length,html="",itemsInRow=0,sectionTitleTagName=options.sectionTitleTagName||"div";for(i=0,length=items.length;i=.5?.5:0)+"+":null);newIndexValue!==currentIndexValue&&(hasOpenRow&&(html+="
",hasOpenRow=!1,itemsInRow=0),hasOpenSection&&(html+="
",isVertical&&(html+="
"),hasOpenSection=!1),html+=isVertical?'
':'
',html+="<"+sectionTitleTagName+' class="sectionTitle">'+newIndexValue+"",isVertical&&(html+='
'),currentIndexValue=newIndexValue,hasOpenSection=!0)}options.rows&&0===itemsInRow&&(hasOpenRow&&(html+="
",hasOpenRow=!1),html+='
',hasOpenRow=!0),html+=buildCard(i,item,apiClient,options),itemsInRow++,options.rows&&itemsInRow>=options.rows&&(html+="
",hasOpenRow=!1,itemsInRow=0)}hasOpenRow&&(html+="
"),hasOpenSection&&(html+="
",isVertical&&(html+="
"));var cardFooterHtml="";for(i=0,length=options.lines||0;i 
':'
 
';return html}function getDesiredAspect(shape){if(shape){if(shape=shape.toLowerCase(),-1!==shape.indexOf("portrait"))return 2/3;if(-1!==shape.indexOf("backdrop"))return 16/9;if(-1!==shape.indexOf("square"))return 1;if(-1!==shape.indexOf("banner"))return 1e3/185}return null}function getCardImageUrl(item,apiClient,options,shape){item=item.ProgramInfo||item;var width=options.width,height=null,primaryImageAspectRatio=item.PrimaryImageAspectRatio,forceName=!1,imgUrl=null,coverImage=!1,uiAspect=null;return options.preferThumb&&item.ImageTags&&item.ImageTags.Thumb?imgUrl=apiClient.getScaledImageUrl(item.Id,{type:"Thumb",maxWidth:width,tag:item.ImageTags.Thumb}):(options.preferBanner||"banner"===shape)&&item.ImageTags&&item.ImageTags.Banner?imgUrl=apiClient.getScaledImageUrl(item.Id,{type:"Banner",maxWidth:width,tag:item.ImageTags.Banner}):options.preferDisc&&item.ImageTags&&item.ImageTags.Disc?imgUrl=apiClient.getScaledImageUrl(item.Id,{type:"Disc",maxWidth:width,tag:item.ImageTags.Disc}):options.preferLogo&&item.ImageTags&&item.ImageTags.Logo?imgUrl=apiClient.getScaledImageUrl(item.Id,{type:"Logo",maxWidth:width,tag:item.ImageTags.Logo}):options.preferLogo&&item.ParentLogoImageTag&&item.ParentLogoItemId?imgUrl=apiClient.getScaledImageUrl(item.ParentLogoItemId,{type:"Logo",maxWidth:width,tag:item.ParentLogoImageTag}):options.preferThumb&&item.SeriesThumbImageTag&&!1!==options.inheritThumb?imgUrl=apiClient.getScaledImageUrl(item.SeriesId,{type:"Thumb",maxWidth:width,tag:item.SeriesThumbImageTag}):options.preferThumb&&item.ParentThumbItemId&&!1!==options.inheritThumb&&"Photo"!==item.MediaType?imgUrl=apiClient.getScaledImageUrl(item.ParentThumbItemId,{type:"Thumb",maxWidth:width,tag:item.ParentThumbImageTag}):options.preferThumb&&item.BackdropImageTags&&item.BackdropImageTags.length?(imgUrl=apiClient.getScaledImageUrl(item.Id,{type:"Backdrop",maxWidth:width,tag:item.BackdropImageTags[0]}),forceName=!0):options.preferThumb&&item.ParentBackdropImageTags&&item.ParentBackdropImageTags.length&&!1!==options.inheritThumb&&"Episode"===item.Type?imgUrl=apiClient.getScaledImageUrl(item.ParentBackdropItemId,{type:"Backdrop",maxWidth:width,tag:item.ParentBackdropImageTags[0]}):item.ImageTags&&item.ImageTags.Primary?(height=width&&primaryImageAspectRatio?Math.round(width/primaryImageAspectRatio):null,imgUrl=apiClient.getScaledImageUrl(item.Id,{type:"Primary",maxHeight:height,maxWidth:width,tag:item.ImageTags.Primary}),options.preferThumb&&!1!==options.showTitle&&(forceName=!0),primaryImageAspectRatio&&(uiAspect=getDesiredAspect(shape))&&(coverImage=Math.abs(primaryImageAspectRatio-uiAspect)/uiAspect<=.2)):item.PrimaryImageTag?(height=width&&primaryImageAspectRatio?Math.round(width/primaryImageAspectRatio):null,imgUrl=apiClient.getScaledImageUrl(item.PrimaryImageItemId||item.Id||item.ItemId,{type:"Primary",maxHeight:height,maxWidth:width,tag:item.PrimaryImageTag}),options.preferThumb&&!1!==options.showTitle&&(forceName=!0),primaryImageAspectRatio&&(uiAspect=getDesiredAspect(shape))&&(coverImage=Math.abs(primaryImageAspectRatio-uiAspect)/uiAspect<=.2)):item.ParentPrimaryImageTag?imgUrl=apiClient.getScaledImageUrl(item.ParentPrimaryImageItemId,{type:"Primary",maxWidth:width,tag:item.ParentPrimaryImageTag}):item.SeriesPrimaryImageTag?imgUrl=apiClient.getScaledImageUrl(item.SeriesId,{type:"Primary",maxWidth:width,tag:item.SeriesPrimaryImageTag}):item.AlbumId&&item.AlbumPrimaryImageTag?(width=primaryImageAspectRatio?Math.round(height*primaryImageAspectRatio):null,imgUrl=apiClient.getScaledImageUrl(item.AlbumId,{type:"Primary",maxHeight:height,maxWidth:width,tag:item.AlbumPrimaryImageTag}),primaryImageAspectRatio&&(uiAspect=getDesiredAspect(shape))&&(coverImage=Math.abs(primaryImageAspectRatio-uiAspect)/uiAspect<=.2)):"Season"===item.Type&&item.ImageTags&&item.ImageTags.Thumb?imgUrl=apiClient.getScaledImageUrl(item.Id,{type:"Thumb",maxWidth:width,tag:item.ImageTags.Thumb}):item.BackdropImageTags&&item.BackdropImageTags.length?imgUrl=apiClient.getScaledImageUrl(item.Id,{type:"Backdrop",maxWidth:width,tag:item.BackdropImageTags[0]}):item.ImageTags&&item.ImageTags.Thumb?imgUrl=apiClient.getScaledImageUrl(item.Id,{type:"Thumb",maxWidth:width,tag:item.ImageTags.Thumb}):item.SeriesThumbImageTag&&!1!==options.inheritThumb?imgUrl=apiClient.getScaledImageUrl(item.SeriesId,{type:"Thumb",maxWidth:width,tag:item.SeriesThumbImageTag}):item.ParentThumbItemId&&!1!==options.inheritThumb?imgUrl=apiClient.getScaledImageUrl(item.ParentThumbItemId,{type:"Thumb",maxWidth:width,tag:item.ParentThumbImageTag}):item.ParentBackdropImageTags&&item.ParentBackdropImageTags.length&&!1!==options.inheritThumb&&(imgUrl=apiClient.getScaledImageUrl(item.ParentBackdropItemId,{type:"Backdrop",maxWidth:width,tag:item.ParentBackdropImageTags[0]})),{imgUrl:imgUrl,forceName:forceName,coverImage:coverImage}}function getRandomInt(min,max){return Math.floor(Math.random()*(max-min+1))+min}function getDefaultColorIndex(str){if(str){for(var charIndex=Math.floor(str.length/2),character=String(str.substr(charIndex,1).charCodeAt()),sum=0,i=0;i0&&isOuterFooter?currentCssClass+=" cardText-secondary":0===valid&&isOuterFooter&&(currentCssClass+=" cardText-first"),addRightMargin&&(currentCssClass+=" cardText-rightmargin"),text&&(html+="
",html+=text,html+="
",valid++,maxLines&&valid>=maxLines))break}if(forceLines)for(length=maxLines||Math.min(lines.length,maxLines||lines.length);valid ",valid++;return html}function isUsingLiveTvNaming(item){return"Program"===item.Type||"Timer"===item.Type||"Recording"===item.Type}function getAirTimeText(item,showAirDateTime,showAirEndTime){var airTimeText="";if(item.StartDate)try{var date=datetime.parseISO8601Date(item.StartDate);showAirDateTime&&(airTimeText+=datetime.toLocaleDateString(date,{weekday:"short",month:"short",day:"numeric"})+" "),airTimeText+=datetime.getDisplayTime(date),item.EndDate&&showAirEndTime&&(date=datetime.parseISO8601Date(item.EndDate),airTimeText+=" - "+datetime.getDisplayTime(date))}catch(e){console.log("Error parsing date: "+item.StartDate)}return airTimeText}function getCardFooterText(item,apiClient,options,showTitle,forceName,overlayText,imgUrl,footerClass,progressHtml,logoUrl,isOuterFooter){var html="";logoUrl&&(html+='');var showOtherText=isOuterFooter?!overlayText:overlayText;isOuterFooter&&options.cardLayout&&layoutManager.mobile&&"none"!==options.cardFooterAside&&(html+='');var titleAdded,cssClass=options.centerText?"cardText cardTextCentered":"cardText",lines=[],parentTitleUnderneath="MusicAlbum"===item.Type||"Audio"===item.Type||"MusicVideo"===item.Type;if(showOtherText&&(options.showParentTitle||options.showParentTitleOrTitle)&&!parentTitleUnderneath)if(isOuterFooter&&"Episode"===item.Type&&item.SeriesName)item.SeriesId?lines.push(getTextActionButton({Id:item.SeriesId,ServerId:item.ServerId,Name:item.SeriesName,Type:"Series",IsFolder:!0})):lines.push(item.SeriesName);else if(isUsingLiveTvNaming(item))lines.push(item.Name),item.EpisodeTitle||(titleAdded=!0);else{var parentTitle=item.SeriesName||item.Series||item.Album||item.AlbumArtist||item.GameSystem||"";(parentTitle||showTitle)&&lines.push(parentTitle)}var showMediaTitle=showTitle&&!titleAdded||options.showParentTitleOrTitle&&!lines.length;if(showMediaTitle||titleAdded||!showTitle&&!forceName||(showMediaTitle=!0),showMediaTitle){var name="auto"!==options.showTitle||item.IsFolder||"Photo"!==item.MediaType?itemHelper.getDisplayName(item,{includeParentInfo:options.includeParentInfoInTitle}):"";lines.push(name)}if(showOtherText){if(options.showParentTitle&&parentTitleUnderneath&&(isOuterFooter&&item.AlbumArtists&&item.AlbumArtists.length?(item.AlbumArtists[0].Type="MusicArtist",item.AlbumArtists[0].IsFolder=!0,lines.push(getTextActionButton(item.AlbumArtists[0],null,item.ServerId))):lines.push(isUsingLiveTvNaming(item)?item.Name:item.SeriesName||item.Series||item.Album||item.AlbumArtist||item.GameSystem||"")),options.showItemCounts){var itemCountHtml=getItemCountsHtml(options,item);lines.push(itemCountHtml)}if(options.textLines)for(var additionalLines=options.textLines(item),i=0,length=additionalLines.length;i'+html,html+=""),html}function getTextActionButton(item,text,serverId){if(text||(text=itemHelper.getDisplayName(item)),layoutManager.tv)return text;var html=""}function getItemCountsHtml(options,item){var childText,counts=[];if("Playlist"===item.Type){if(childText="",item.RunTimeTicks){var minutes=item.RunTimeTicks/6e8;minutes=minutes||1,childText+=globalize.translate("sharedcomponents#ValueMinutes",Math.round(minutes))}else childText+=globalize.translate("sharedcomponents#ValueMinutes",0);counts.push(childText)}else"Genre"===item.Type||"Studio"===item.Type?(item.MovieCount&&(childText=1===item.MovieCount?globalize.translate("sharedcomponents#ValueOneMovie"):globalize.translate("sharedcomponents#ValueMovieCount",item.MovieCount),counts.push(childText)),item.SeriesCount&&(childText=1===item.SeriesCount?globalize.translate("sharedcomponents#ValueOneSeries"):globalize.translate("sharedcomponents#ValueSeriesCount",item.SeriesCount),counts.push(childText)),item.EpisodeCount&&(childText=1===item.EpisodeCount?globalize.translate("sharedcomponents#ValueOneEpisode"):globalize.translate("sharedcomponents#ValueEpisodeCount",item.EpisodeCount),counts.push(childText)),item.GameCount&&(childText=1===item.GameCount?globalize.translate("sharedcomponents#ValueOneGame"):globalize.translate("sharedcomponents#ValueGameCount",item.GameCount),counts.push(childText))):"GameGenre"===item.Type?item.GameCount&&(childText=1===item.GameCount?globalize.translate("sharedcomponents#ValueOneGame"):globalize.translate("sharedcomponents#ValueGameCount",item.GameCount),counts.push(childText)):"MusicGenre"===item.Type||"MusicArtist"===options.context?(item.AlbumCount&&(childText=1===item.AlbumCount?globalize.translate("sharedcomponents#ValueOneAlbum"):globalize.translate("sharedcomponents#ValueAlbumCount",item.AlbumCount),counts.push(childText)),item.SongCount&&(childText=1===item.SongCount?globalize.translate("sharedcomponents#ValueOneSong"):globalize.translate("sharedcomponents#ValueSongCount",item.SongCount),counts.push(childText)),item.MusicVideoCount&&(childText=1===item.MusicVideoCount?globalize.translate("sharedcomponents#ValueOneMusicVideo"):globalize.translate("sharedcomponents#ValueMusicVideoCount",item.MusicVideoCount),counts.push(childText))):"Series"===item.Type&&(childText=1===item.RecursiveItemCount?globalize.translate("sharedcomponents#ValueOneEpisode"):globalize.translate("sharedcomponents#ValueEpisodeCount",item.RecursiveItemCount),counts.push(childText));return counts.join(", ")}function requireRefreshIndicator(){refreshIndicatorLoaded||(refreshIndicatorLoaded=!0,require(["emby-itemrefreshindicator"]))}function getDefaultBackgroundClass(str){return"defaultCardBackground defaultCardBackground"+getDefaultColorIndex(str)}function buildCard(index,item,apiClient,options){var action=options.action||"link";"play"===action&&item.IsFolder?action="link":"Photo"===item.MediaType&&(action="play");var shape=options.shape;if("mixed"===shape){shape=null;var primaryImageAspectRatio=item.PrimaryImageAspectRatio;primaryImageAspectRatio&&(shape=primaryImageAspectRatio>=1.33?"mixedBackdrop":primaryImageAspectRatio>.71?"mixedSquare":"mixedPortrait"),shape=shape||"mixedSquare"}var className="card";shape&&(className+=" "+shape+"Card"),options.cardCssClass&&(className+=" "+options.cardCssClass),options.cardClass&&(className+=" "+options.cardClass),layoutManager.desktop&&(className+=" card-hoverable"),enableFocusTransfrom&&layoutManager.tv||(className+=" card-nofocustransform");var imgInfo=getCardImageUrl(item,apiClient,options,shape),imgUrl=imgInfo.imgUrl,forceName=imgInfo.forceName,showTitle="auto"===options.showTitle||(options.showTitle||"PhotoAlbum"===item.Type||"Folder"===item.Type),overlayText=options.overlayText;forceName&&!options.cardLayout&&null==overlayText&&(overlayText=!0);var cardImageContainerClass="cardImageContainer";(options.coverImage||imgInfo.coverImage)&&(cardImageContainerClass+=" coveredImage",("Photo"===item.MediaType||"PhotoAlbum"===item.Type||"Folder"===item.Type||item.ProgramInfo||"Program"===item.Type||"Recording"===item.Type)&&(cardImageContainerClass+=" coveredImage-noScale")),imgUrl||(cardImageContainerClass+=" "+getDefaultBackgroundClass(item.Name));var cardBoxClass=options.cardLayout?"cardBox visualCardBox":"cardBox";layoutManager.tv&&(cardBoxClass+=enableFocusTransfrom?" cardBox-focustransform cardBox-withfocuscontent":" cardBox-withfocuscontent-large",options.cardLayout&&(cardBoxClass+=" card-focuscontent",enableFocusTransfrom||(cardBoxClass+=" card-focuscontent-large")));var footerCssClass,logoUrl,progressHtml=indicators.getProgressBarHtml(item),innerCardFooter="",footerOverlayed=!1;options.showChannelLogo&&item.ChannelPrimaryImageTag?logoUrl=apiClient.getScaledImageUrl(item.ChannelId,{type:"Primary",height:40,tag:item.ChannelPrimaryImageTag}):options.showLogo&&item.ParentLogoImageTag&&(logoUrl=apiClient.getScaledImageUrl(item.ParentLogoItemId,{type:"Logo",height:40,tag:item.ParentLogoImageTag})),overlayText?(logoUrl=null,footerCssClass=progressHtml?"innerCardFooter fullInnerCardFooter":"innerCardFooter",innerCardFooter+=getCardFooterText(item,apiClient,options,showTitle,forceName,overlayText,imgUrl,footerCssClass,progressHtml,logoUrl,!1),footerOverlayed=!0):progressHtml&&(innerCardFooter+='
',innerCardFooter+=progressHtml,innerCardFooter+="
",progressHtml="");var mediaSourceCount=item.MediaSourceCount||1;mediaSourceCount>1&&(innerCardFooter+='
'+mediaSourceCount+"
");var outerCardFooter="";overlayText||footerOverlayed||(footerCssClass=options.cardLayout?"cardFooter":"cardFooter cardFooter-transparent",logoUrl&&(footerCssClass+=" cardFooter-withlogo"),options.cardLayout||(logoUrl=null),outerCardFooter=getCardFooterText(item,apiClient,options,showTitle,forceName,overlayText,imgUrl,footerCssClass,progressHtml,logoUrl,!0)),outerCardFooter&&!options.cardLayout&&(cardBoxClass+=" cardBox-bottompadded");var overlayButtons="";if(layoutManager.mobile){var overlayPlayButton=options.overlayPlayButton;null!=overlayPlayButton||options.overlayMoreButton||options.overlayInfoButton||options.cardLayout||(overlayPlayButton="Video"===item.MediaType);var btnCssClass="cardOverlayButton cardOverlayButton-br itemAction";options.centerPlayButton&&(overlayButtons+=''),!overlayPlayButton||item.IsPlaceHolder||"Virtual"===item.LocationType&&item.MediaType&&"Program"!==item.Type||"Person"===item.Type||(overlayButtons+=''),options.overlayMoreButton&&(overlayButtons+='')}options.showChildCountIndicator&&item.ChildCount&&(className+=" groupedCard");var cardImageContainerOpen,cardImageContainerClose="",cardBoxClose="",cardScalableClose="",cardContentClass="cardContent";options.cardLayout||(cardContentClass+=" cardContent-shadow"),layoutManager.tv?(cardImageContainerOpen=imgUrl?'
':'
',cardImageContainerClose="
"):(cardImageContainerOpen=imgUrl?'");var cardScalableClass="cardScalable";layoutManager.tv&&!options.cardLayout&&(cardScalableClass+=" card-focuscontent",enableFocusTransfrom||(cardScalableClass+=" card-focuscontent-large")),cardImageContainerOpen='
'+cardImageContainerOpen,cardBoxClose="
",cardScalableClose="
";var indicatorsHtml="";if(!1!==options.missingIndicator&&(indicatorsHtml+=indicators.getMissingIndicator(item)),indicatorsHtml+=indicators.getSyncIndicator(item),indicatorsHtml+=indicators.getTimerIndicator(item),indicatorsHtml+=indicators.getTypeIndicator(item),options.showGroupCount?indicatorsHtml+=indicators.getChildCountIndicatorHtml(item,{minCount:1}):indicatorsHtml+=indicators.getPlayedIndicatorHtml(item),"CollectionFolder"===item.Type||item.CollectionType){indicatorsHtml+='
',requireRefreshIndicator()}indicatorsHtml&&(cardImageContainerOpen+='
'+indicatorsHtml+"
"),imgUrl||(cardImageContainerOpen+=getCardDefaultText(item,options));var tagName=layoutManager.tv&&!overlayButtons?"button":"div",nameWithPrefix=item.SortName||item.Name||"",prefix=nameWithPrefix.substring(0,Math.min(3,nameWithPrefix.length));prefix&&(prefix=prefix.toUpperCase());var timerAttributes="";item.TimerId&&(timerAttributes+=' data-timerid="'+item.TimerId+'"'),item.SeriesTimerId&&(timerAttributes+=' data-seriestimerid="'+item.SeriesTimerId+'"');var actionAttribute;"button"===tagName?(className+=" itemAction",actionAttribute=' data-action="'+action+'"'):actionAttribute="","MusicAlbum"!==item.Type&&"MusicArtist"!==item.Type&&"Audio"!==item.Type&&(className+=" card-withuserdata");var positionTicksData=item.UserData&&item.UserData.PlaybackPositionTicks?' data-positionticks="'+item.UserData.PlaybackPositionTicks+'"':"",collectionIdData=options.collectionId?' data-collectionid="'+options.collectionId+'"':"",playlistIdData=options.playlistId?' data-playlistid="'+options.playlistId+'"':"",mediaTypeData=item.MediaType?' data-mediatype="'+item.MediaType+'"':"",collectionTypeData=item.CollectionType?' data-collectiontype="'+item.CollectionType+'"':"",channelIdData=item.ChannelId?' data-channelid="'+item.ChannelId+'"':"",contextData=options.context?' data-context="'+options.context+'"':"",parentIdData=options.parentId?' data-parentid="'+options.parentId+'"':"",additionalCardContent="";return layoutManager.desktop&&(additionalCardContent+=getHoverMenuHtml(item,action)),"<"+tagName+' data-index="'+index+'"'+timerAttributes+actionAttribute+' data-isfolder="'+(item.IsFolder||!1)+'" data-serverid="'+(item.ServerId||options.serverId)+'" data-id="'+(item.Id||item.ItemId)+'" data-type="'+item.Type+'"'+mediaTypeData+collectionTypeData+channelIdData+positionTicksData+collectionIdData+playlistIdData+contextData+parentIdData+' data-prefix="'+prefix+'" class="'+className+'">'+cardImageContainerOpen+innerCardFooter+cardImageContainerClose+overlayButtons+additionalCardContent+cardScalableClose+outerCardFooter+cardBoxClose+""}function getHoverMenuHtml(item,action){var html="";html+='
';var btnCssClass="cardOverlayButton cardOverlayButton-hover itemAction";playbackManager.canPlay(item)&&(html+=''),html+='
';var userData=item.UserData||{};if(itemHelper.canMarkPlayed(item)&&(require(["emby-playstatebutton"]),html+=''),itemHelper.canRate(item)){var likes=null==userData.Likes?"":userData.Likes;require(["emby-ratingbutton"]),html+=''}return html+='',html+="
",html+="
"}function getCardDefaultText(item,options){var collectionType=item.CollectionType;return"livetv"===collectionType?'':"homevideos"===collectionType||"photos"===collectionType?'':"music"===collectionType?'':"MusicAlbum"===item.Type?'':"MusicArtist"===item.Type||"Person"===item.Type?'':options.defaultCardImageIcon?''+options.defaultCardImageIcon+"":'
'+(isUsingLiveTvNaming(item)?item.Name:itemHelper.getDisplayName(item))+"
"}function buildCards(items,options){if(document.body.contains(options.itemsContainer)){if(options.parentContainer){if(!items.length)return void options.parentContainer.classList.add("hide");options.parentContainer.classList.remove("hide")}var html=buildCardsHtmlInternal(items,options);html?(options.itemsContainer.cardBuilderHtml!==html&&(options.itemsContainer.innerHTML=html,items.length<50?options.itemsContainer.cardBuilderHtml=html:options.itemsContainer.cardBuilderHtml=null),imageLoader.lazyChildren(options.itemsContainer)):(options.itemsContainer.innerHTML=html,options.itemsContainer.cardBuilderHtml=null),options.autoFocus&&focusManager.autoFocus(options.itemsContainer,!0)}}function ensureIndicators(card,indicatorsElem){if(indicatorsElem)return indicatorsElem;if(!(indicatorsElem=card.querySelector(".cardIndicators"))){var cardImageContainer=card.querySelector(".cardImageContainer");indicatorsElem=document.createElement("div"), +indicatorsElem.classList.add("cardIndicators"),cardImageContainer.appendChild(indicatorsElem)}return indicatorsElem}function updateUserData(card,userData){var type=card.getAttribute("data-type"),enableCountIndicator="Series"===type||"BoxSet"===type||"Season"===type,indicatorsElem=null,playedIndicator=null,countIndicator=null,itemProgressBar=null;userData.Played?(playedIndicator=card.querySelector(".playedIndicator"),playedIndicator||(playedIndicator=document.createElement("div"),playedIndicator.classList.add("playedIndicator"),playedIndicator.classList.add("indicator"),indicatorsElem=ensureIndicators(card,indicatorsElem),indicatorsElem.appendChild(playedIndicator)),playedIndicator.innerHTML=''):(playedIndicator=card.querySelector(".playedIndicator"))&&playedIndicator.parentNode.removeChild(playedIndicator),userData.UnplayedItemCount?(countIndicator=card.querySelector(".countIndicator"),countIndicator||(countIndicator=document.createElement("div"),countIndicator.classList.add("countIndicator"),indicatorsElem=ensureIndicators(card,indicatorsElem),indicatorsElem.appendChild(countIndicator)),countIndicator.innerHTML=userData.UnplayedItemCount):enableCountIndicator&&(countIndicator=card.querySelector(".countIndicator"))&&countIndicator.parentNode.removeChild(countIndicator);var progressHtml=indicators.getProgressBarHtml({Type:type,UserData:userData,MediaType:"Video"});if(progressHtml){if(!(itemProgressBar=card.querySelector(".itemProgressBar"))){itemProgressBar=document.createElement("div"),itemProgressBar.classList.add("itemProgressBar");var innerCardFooter=card.querySelector(".innerCardFooter");if(!innerCardFooter){innerCardFooter=document.createElement("div"),innerCardFooter.classList.add("innerCardFooter");card.querySelector(".cardImageContainer").appendChild(innerCardFooter)}innerCardFooter.appendChild(itemProgressBar)}itemProgressBar.innerHTML=progressHtml}else(itemProgressBar=card.querySelector(".itemProgressBar"))&&itemProgressBar.parentNode.removeChild(itemProgressBar)}function onUserDataChanged(userData,scope){for(var cards=(scope||document.body).querySelectorAll('.card-withuserdata[data-id="'+userData.ItemId+'"]'),i=0,length=cards.length;i')}cell.setAttribute("data-timerid",newTimerId)}}function onTimerCancelled(id,itemsContainer){for(var cells=itemsContainer.querySelectorAll('.card[data-timerid="'+id+'"]'),i=0,length=cells.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="cardContent cardContent-shadow 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":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 +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');html+=buildChapterCard(item,apiClient,chapters[i],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="cardContent cardContent-shadow 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.edge;cardScalableClass+=" card-focuscontent",enableFocusTransfrom?cardBoxCssClass+=" cardBox-focustransform cardBox-withfocuscontent":(cardBoxCssClass+=" cardBox-withfocuscontent-large",cardScalableClass+=" card-focuscontent-large")}return'
"}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/chromecast/chromecasthelpers.js b/dashboard-ui/bower_components/emby-webcomponents/chromecast/chromecasthelpers.js index 5fa9a600d3..45b034b1e6 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/chromecast/chromecasthelpers.js +++ b/dashboard-ui/bower_components/emby-webcomponents/chromecast/chromecasthelpers.js @@ -1 +1 @@ -define(["events"],function(events){"use strict";function isValidIpAddress(address){var links=LinkParser.parse(address);return 1==links.length}function isLocalIpAddress(address){return address=address.toLowerCase(),address.indexOf("127.0.0.1")!==-1||address.indexOf("localhost")!==-1}function getServerAddress(apiClient){var serverAddress=apiClient.serverAddress();if(isValidIpAddress(serverAddress)&&!isLocalIpAddress(serverAddress))return Promise.resolve(serverAddress);var cachedValue=getCachedValue(serverAddress);return cachedValue?Promise.resolve(cachedValue):apiClient.getEndpointInfo().then(function(endpoint){return endpoint.IsInNetwork?apiClient.getPublicSystemInfo().then(function(info){return addToCache(serverAddress,info.LocalAddress),info.LocalAddress}):(addToCache(serverAddress,serverAddress),serverAddress)})}function clearCache(){cache={}}function addToCache(key,value){cache[key]={value:value,time:(new Date).getTime()}}function getCachedValue(key){var obj=cache[key];return obj&&(new Date).getTime()-obj.time<18e4?obj.value:null}!function(){function ensureProtocol(url){return url.match(protocolRegExp)||(url="http://"+url),url}var protocols="(?:(?:http|https|rtsp|ftp):\\/\\/)",credentials="(?:(?:[a-z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-f0-9]{2})){1,64}(?:\\:(?:[a-z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-f0-9]{2})){1,25})?\\@)",ipv6="((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?",ipv4="(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9])\\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[0-9])",linkRegExpString="(?:"+protocols+"?"+credentials+"?(?:"+ipv6+"|"+ipv4+"))(?:\\:\\d{1,5})?(?:\\/(?:(?:[a-z0-9\\/\\@\\&\\#\\~\\*\\_\\-\\+])|(?:\\%[a-f0-9]{2})|(?:[\\;\\?\\:\\.\\!\\'\\(\\)\\,\\=]+(?=(?:[a-z0-9\\/\\@\\&\\#\\~\\*\\_\\-\\+])|(?:\\%[a-f0-9]{2}))))*|\\b|$)",linkRegExp=RegExp(linkRegExpString,"gi"),protocolRegExp=RegExp("^"+protocols,"i"),LinkParser={parse:function(text){for(var match,links=[];match=linkRegExp.exec(text);){var txt=match[0],pos=match.index,len=txt.length,url=ensureProtocol(text);links.push({pos:pos,text:txt,len:len,url:url})}return links}};window.LinkParser=LinkParser}();var cache={};return events.on(ConnectionManager,"localusersignedin",clearCache),events.on(ConnectionManager,"localusersignedout",clearCache),{getServerAddress:getServerAddress}}); \ No newline at end of file +define(["events"],function(events){"use strict";function isValidIpAddress(address){return 1==LinkParser.parse(address).length}function isLocalIpAddress(address){return address=address.toLowerCase(),-1!==address.indexOf("127.0.0.1")||-1!==address.indexOf("localhost")}function getServerAddress(apiClient){var serverAddress=apiClient.serverAddress();if(isValidIpAddress(serverAddress)&&!isLocalIpAddress(serverAddress))return Promise.resolve(serverAddress);var cachedValue=getCachedValue(serverAddress);return cachedValue?Promise.resolve(cachedValue):apiClient.getEndpointInfo().then(function(endpoint){return endpoint.IsInNetwork?apiClient.getPublicSystemInfo().then(function(info){return addToCache(serverAddress,info.LocalAddress),info.LocalAddress}):(addToCache(serverAddress,serverAddress),serverAddress)})}function clearCache(){cache={}}function addToCache(key,value){cache[key]={value:value,time:(new Date).getTime()}}function getCachedValue(key){var obj=cache[key];return obj&&(new Date).getTime()-obj.time<18e4?obj.value:null}!function(){function ensureProtocol(url){return url.match(protocolRegExp)||(url="http://"+url),url}var protocols="(?:(?:http|https|rtsp|ftp):\\/\\/)",linkRegExp=RegExp("(?:(?:(?:http|https|rtsp|ftp):\\/\\/)?(?:(?:[a-z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-f0-9]{2})){1,64}(?:\\:(?:[a-z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-f0-9]{2})){1,25})?\\@)?(?:((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?|(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9])\\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[0-9])))(?:\\:\\d{1,5})?(?:\\/(?:(?:[a-z0-9\\/\\@\\&\\#\\~\\*\\_\\-\\+])|(?:\\%[a-f0-9]{2})|(?:[\\;\\?\\:\\.\\!\\'\\(\\)\\,\\=]+(?=(?:[a-z0-9\\/\\@\\&\\#\\~\\*\\_\\-\\+])|(?:\\%[a-f0-9]{2}))))*|\\b|$)","gi"),protocolRegExp=RegExp("^"+protocols,"i"),LinkParser={parse:function(text){for(var match,links=[];match=linkRegExp.exec(text);){var txt=match[0],pos=match.index,len=txt.length,url=ensureProtocol(text);links.push({pos:pos,text:txt,len:len,url:url})}return links}};window.LinkParser=LinkParser}();var cache={};return events.on(ConnectionManager,"localusersignedin",clearCache),events.on(ConnectionManager,"localusersignedout",clearCache),{getServerAddress:getServerAddress}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/chromecast/chromecastplayer.js b/dashboard-ui/bower_components/emby-webcomponents/chromecast/chromecastplayer.js index 936c3d3771..b09ee406d7 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/chromecast/chromecastplayer.js +++ b/dashboard-ui/bower_components/emby-webcomponents/chromecast/chromecastplayer.js @@ -1 +1 @@ -define(["appSettings","userSettings","playbackManager","connectionManager","globalize","events","require","castSenderApiLoader"],function(appSettings,userSettings,playbackManager,connectionManager,globalize,events,require,castSenderApiLoader){"use strict";function sendConnectionResult(isOk){var resolve=currentResolve,reject=currentReject;currentResolve=null,currentReject=null,isOk?resolve&&resolve():reject?reject():playbackManager.removeActivePlayer(PlayerName)}function alertText(text,title){require(["alert"],function(alert){alert({text:text,title:title})})}function normalizeImages(state){if(state&&state.NowPlayingItem){var item=state.NowPlayingItem;item.ImageTags&&item.ImageTags.Primary||item.PrimaryImageTag&&(item.ImageTags=item.ImageTags||{},item.ImageTags.Primary=item.PrimaryImageTag),item.BackdropImageTag&&item.BackdropItemId===item.Id&&(item.BackdropImageTags=[item.BackdropImageTag]),item.BackdropImageTag&&item.BackdropItemId!==item.Id&&(item.ParentBackdropImageTags=[item.BackdropImageTag],item.ParentBackdropItemId=item.BackdropItemId)}}function getItemsForPlayback(apiClient,query){var userId=apiClient.getCurrentUserId();return query.Ids&&1===query.Ids.split(",").length?apiClient.getItem(userId,query.Ids.split(",")).then(function(item){return{Items:[item],TotalRecordCount:1}}):(query.Limit=query.Limit||100,query.ExcludeLocationTypes="Virtual",query.EnableTotalRecordCount=!1,apiClient.getItems(userId,query))}function bindEventForRelay(instance,eventName){events.on(instance._castPlayer,eventName,function(e,data){console.log("cc: "+eventName);var state=instance.getPlayerStateInternal(data);events.trigger(instance,eventName,[state])})}function initializeChromecast(){var instance=this;instance._castPlayer=new CastPlayer,document.dispatchEvent(new CustomEvent("chromecastloaded",{detail:{player:instance}})),events.on(instance._castPlayer,"connect",function(e){currentResolve?sendConnectionResult(!0):playbackManager.setActivePlayer(PlayerName,instance.getCurrentTargetInfo()),console.log("cc: connect"),instance.lastPlayerData=null}),events.on(instance._castPlayer,"playbackstart",function(e,data){console.log("cc: playbackstart"),instance._castPlayer.initializeCastPlayer();var state=instance.getPlayerStateInternal(data);events.trigger(instance,"playbackstart",[state])}),events.on(instance._castPlayer,"playbackstop",function(e,data){console.log("cc: playbackstop");var state=instance.getPlayerStateInternal(data);events.trigger(instance,"playbackstop",[state]),instance.lastPlayerData={}}),events.on(instance._castPlayer,"playbackprogress",function(e,data){console.log("cc: positionchange");var state=instance.getPlayerStateInternal(data);events.trigger(instance,"timeupdate",[state])}),bindEventForRelay(instance,"timeupdate"),bindEventForRelay(instance,"pause"),bindEventForRelay(instance,"unpause"),bindEventForRelay(instance,"volumechange"),bindEventForRelay(instance,"repeatmodechange"),events.on(instance._castPlayer,"playstatechange",function(e,data){console.log("cc: playstatechange");var state=instance.getPlayerStateInternal(data);events.trigger(instance,"pause",[state])})}function ChromecastPlayer(){this.name=PlayerName,this.type="mediaplayer",this.id="chromecast",this.isLocalPlayer=!1,this.lastPlayerData={},castSenderApiLoader.load().then(initializeChromecast.bind(this))}var currentResolve,currentReject,PlayerName="Chromecast",DEVICE_STATE={IDLE:0,ACTIVE:1,WARNING:2,ERROR:3},PLAYER_STATE={IDLE:"IDLE",LOADING:"LOADING",LOADED:"LOADED",PLAYING:"PLAYING",PAUSED:"PAUSED",STOPPED:"STOPPED",SEEKING:"SEEKING",ERROR:"ERROR"},applicationID="2D4B1DA3",messageNamespace="urn:x-cast:com.connectsdk",CastPlayer=function(){this.deviceState=DEVICE_STATE.IDLE,this.currentMediaSession=null,this.session=null,this.castPlayerState=PLAYER_STATE.IDLE,this.hasReceivers=!1,this.errorHandler=this.onError.bind(this),this.mediaStatusUpdateHandler=this.onMediaStatusUpdate.bind(this),this.initializeCastPlayer()};return CastPlayer.prototype.initializeCastPlayer=function(){var chrome=window.chrome;if(chrome){if(!chrome.cast||!chrome.cast.isAvailable)return void setTimeout(this.initializeCastPlayer.bind(this),1e3);var sessionRequest=new chrome.cast.SessionRequest(applicationID),apiConfig=new chrome.cast.ApiConfig(sessionRequest,this.sessionListener.bind(this),this.receiverListener.bind(this),"origin_scoped");console.log("chromecast.initialize"),chrome.cast.initialize(apiConfig,this.onInitSuccess.bind(this),this.errorHandler)}},CastPlayer.prototype.onInitSuccess=function(){this.isInitialized=!0,console.log("chromecast init success")},CastPlayer.prototype.onError=function(){console.log("chromecast error")},CastPlayer.prototype.sessionListener=function(e){this.session=e,this.session&&(console.log("sessionListener "+JSON.stringify(e)),this.session.media[0]&&this.onMediaDiscovered("activeSession",this.session.media[0]),this.onSessionConnected(e))},CastPlayer.prototype.messageListener=function(namespace,message){if("string"==typeof message&&(message=JSON.parse(message)),"playbackerror"===message.type){var errorCode=message.data;setTimeout(function(){alertText(globalize.translate("MessagePlaybackError"+errorCode),globalize.translate("HeaderPlaybackError"))},300)}else"connectionerror"===message.type?setTimeout(function(){alertText(globalize.translate("MessageChromecastConnectionError"),globalize.translate("HeaderError"))},300):message.type&&events.trigger(this,message.type,[message.data])},CastPlayer.prototype.receiverListener=function(e){"available"===e?(console.log("chromecast receiver found"),this.hasReceivers=!0):(console.log("chromecast receiver list empty"),this.hasReceivers=!1)},CastPlayer.prototype.sessionUpdateListener=function(isAlive){console.log("sessionUpdateListener alive: "+isAlive),isAlive||(this.session=null,this.deviceState=DEVICE_STATE.IDLE,this.castPlayerState=PLAYER_STATE.IDLE,console.log("sessionUpdateListener: setting currentMediaSession to null"),this.currentMediaSession=null,sendConnectionResult(!1))},CastPlayer.prototype.launchApp=function(){console.log("chromecast launching app..."),chrome.cast.requestSession(this.onRequestSessionSuccess.bind(this),this.onLaunchError.bind(this))},CastPlayer.prototype.onRequestSessionSuccess=function(e){console.log("chromecast session success: "+e.sessionId),this.onSessionConnected(e)},CastPlayer.prototype.onSessionConnected=function(session){this.session=session,this.deviceState=DEVICE_STATE.ACTIVE,this.session.addMessageListener(messageNamespace,this.messageListener.bind(this)),this.session.addMediaListener(this.sessionMediaListener.bind(this)),this.session.addUpdateListener(this.sessionUpdateListener.bind(this)),events.trigger(this,"connect"),this.sendMessage({options:{},command:"Identify"})},CastPlayer.prototype.sessionMediaListener=function(e){console.log("sessionMediaListener"),this.currentMediaSession=e,this.currentMediaSession.addUpdateListener(this.mediaStatusUpdateHandler)},CastPlayer.prototype.onLaunchError=function(){console.log("chromecast launch error"),this.deviceState=DEVICE_STATE.ERROR,sendConnectionResult(!1)},CastPlayer.prototype.stopApp=function(){this.session&&this.session.stop(this.onStopAppSuccess.bind(this,"Session stopped"),this.errorHandler)},CastPlayer.prototype.onStopAppSuccess=function(message){console.log(message),this.deviceState=DEVICE_STATE.IDLE,this.castPlayerState=PLAYER_STATE.IDLE,console.log("onStopAppSuccess: setting currentMediaSession to null"),this.currentMediaSession=null},CastPlayer.prototype.loadMedia=function(options,command){return this.session?(options.items=options.items.map(function(i){return{Id:i.Id,ServerId:i.ServerId,Name:i.Name,Type:i.Type,MediaType:i.MediaType,IsFolder:i.IsFolder}}),this.sendMessage({options:options,command:command})):(console.log("no session"),Promise.reject())},CastPlayer.prototype.sendMessage=function(message){var player=this,receiverName=null,session=player.session;session&&session.receiver&&session.receiver.friendlyName&&(receiverName=session.receiver.friendlyName);var apiClient;apiClient=message.options&&message.options.ServerId?connectionManager.getApiClient(message.options.ServerId):message.options&&message.options.items&&message.options.items.length?connectionManager.getApiClient(message.options.items[0].ServerId):connectionManager.currentApiClient(),message=Object.assign(message,{userId:apiClient.getCurrentUserId(),deviceId:apiClient.deviceId(),accessToken:apiClient.accessToken(),serverAddress:apiClient.serverAddress(),serverId:apiClient.serverId(),receiverName:receiverName});var bitrateSetting=appSettings.maxChromecastBitrate();return bitrateSetting&&(message.maxBitrate=bitrateSetting),message.options&&message.options.items&&(message.subtitleAppearance=userSettings.getSubtitleAppearanceSettings(),message.subtitleBurnIn=appSettings.get("subtitleburnin")||""),new Promise(function(resolve,reject){require(["chromecastHelper"],function(chromecastHelper){chromecastHelper.getServerAddress(apiClient).then(function(serverAddress){message.serverAddress=serverAddress,player.sendMessageInternal(message).then(resolve,reject)},reject)})})},CastPlayer.prototype.sendMessageInternal=function(message){return message=JSON.stringify(message),this.session.sendMessage(messageNamespace,message,this.onPlayCommandSuccess.bind(this),this.errorHandler),Promise.resolve()},CastPlayer.prototype.onPlayCommandSuccess=function(){console.log("Message was sent to receiver ok.")},CastPlayer.prototype.onMediaDiscovered=function(how,mediaSession){console.log("chromecast new media session ID:"+mediaSession.mediaSessionId+" ("+how+")"),this.currentMediaSession=mediaSession,"loadMedia"===how&&(this.castPlayerState=PLAYER_STATE.PLAYING),"activeSession"===how&&(this.castPlayerState=mediaSession.playerState),this.currentMediaSession.addUpdateListener(this.mediaStatusUpdateHandler)},CastPlayer.prototype.onMediaStatusUpdate=function(e){e===!1&&(this.castPlayerState=PLAYER_STATE.IDLE),console.log("chromecast updating media: "+e)},CastPlayer.prototype.setReceiverVolume=function(mute,vol){return this.currentMediaSession?void(mute?this.session.setReceiverMuted(!0,this.mediaCommandSuccessCallback.bind(this),this.errorHandler):this.session.setReceiverVolumeLevel(vol||1,this.mediaCommandSuccessCallback.bind(this),this.errorHandler)):void console.log("this.currentMediaSession is null")},CastPlayer.prototype.mute=function(){this.setReceiverVolume(!0)},CastPlayer.prototype.mediaCommandSuccessCallback=function(info,e){console.log(info)},ChromecastPlayer.prototype.tryPair=function(target){var castPlayer=this._castPlayer;return castPlayer.deviceState!==DEVICE_STATE.ACTIVE&&castPlayer.isInitialized?new Promise(function(resolve,reject){currentResolve=resolve,currentReject=reject,castPlayer.launchApp()}):(currentResolve=null,currentReject=null,Promise.reject())},ChromecastPlayer.prototype.getTargets=function(){var targets=[];return this._castPlayer.hasReceivers&&targets.push(this.getCurrentTargetInfo()),Promise.resolve(targets)},ChromecastPlayer.prototype.getCurrentTargetInfo=function(){var appName=null,castPlayer=this._castPlayer;return castPlayer.session&&castPlayer.session.receiver&&castPlayer.session.receiver.friendlyName&&(appName=castPlayer.session.receiver.friendlyName),{name:PlayerName,id:PlayerName,playerName:PlayerName,playableMediaTypes:["Audio","Video"],isLocalPlayer:!1,appName:PlayerName,deviceName:appName,supportedCommands:["VolumeUp","VolumeDown","Mute","Unmute","ToggleMute","SetVolume","SetAudioStreamIndex","SetSubtitleStreamIndex","DisplayContent","SetRepeatMode","EndSession","PlayMediaSource"]}},ChromecastPlayer.prototype.getPlayerStateInternal=function(data){var triggerStateChange=!1;return data&&!this.lastPlayerData&&(triggerStateChange=!0),data=data||this.lastPlayerData,this.lastPlayerData=data,normalizeImages(data),triggerStateChange&&events.trigger(this,"statechange",[data]),data},ChromecastPlayer.prototype.playWithCommand=function(options,command){if(!options.items){var apiClient=connectionManager.getApiClient(options.serverId),instance=this;return apiClient.getItem(apiClient.getCurrentUserId(),options.ids[0]).then(function(item){return options.items=[item],instance.playWithCommand(options,command)})}return this._castPlayer.loadMedia(options,command)},ChromecastPlayer.prototype.seek=function(position){position=parseInt(position),position/=1e7,this._castPlayer.sendMessage({options:{position:position},command:"Seek"})},ChromecastPlayer.prototype.setAudioStreamIndex=function(index){this._castPlayer.sendMessage({options:{index:index},command:"SetAudioStreamIndex"})},ChromecastPlayer.prototype.setSubtitleStreamIndex=function(index){this._castPlayer.sendMessage({options:{index:index},command:"SetSubtitleStreamIndex"})},ChromecastPlayer.prototype.setMaxStreamingBitrate=function(options){this._castPlayer.sendMessage({options:options,command:"SetMaxStreamingBitrate"})},ChromecastPlayer.prototype.isFullscreen=function(){var state=this.lastPlayerData||{};return state=state.PlayState||{},state.IsFullscreen},ChromecastPlayer.prototype.nextTrack=function(){this._castPlayer.sendMessage({options:{},command:"NextTrack"})},ChromecastPlayer.prototype.previousTrack=function(){this._castPlayer.sendMessage({options:{},command:"PreviousTrack"})},ChromecastPlayer.prototype.volumeDown=function(){this._castPlayer.sendMessage({options:{},command:"VolumeDown"})},ChromecastPlayer.prototype.endSession=function(){var instance=this;this.stop().then(function(){setTimeout(function(){instance._castPlayer.stopApp()},1e3)})},ChromecastPlayer.prototype.volumeUp=function(){this._castPlayer.sendMessage({options:{},command:"VolumeUp"})},ChromecastPlayer.prototype.setVolume=function(vol){vol=Math.min(vol,100),vol=Math.max(vol,0),this._castPlayer.sendMessage({options:{volume:vol},command:"SetVolume"})},ChromecastPlayer.prototype.unpause=function(){this._castPlayer.sendMessage({options:{},command:"Unpause"})},ChromecastPlayer.prototype.playPause=function(){this._castPlayer.sendMessage({options:{},command:"PlayPause"})},ChromecastPlayer.prototype.pause=function(){this._castPlayer.sendMessage({options:{},command:"Pause"})},ChromecastPlayer.prototype.stop=function(){return this._castPlayer.sendMessage({options:{},command:"Stop"})},ChromecastPlayer.prototype.displayContent=function(options){this._castPlayer.sendMessage({options:options,command:"DisplayContent"})},ChromecastPlayer.prototype.setMute=function(isMuted){var castPlayer=this._castPlayer;isMuted?castPlayer.sendMessage({options:{},command:"Mute"}):castPlayer.sendMessage({options:{},command:"Unmute"})},ChromecastPlayer.prototype.getRepeatMode=function(){var state=this.lastPlayerData||{};return state=state.PlayState||{},state.RepeatMode},ChromecastPlayer.prototype.setRepeatMode=function(mode){this._castPlayer.sendMessage({options:{RepeatMode:mode},command:"SetRepeatMode"})},ChromecastPlayer.prototype.toggleMute=function(){this._castPlayer.sendMessage({options:{},command:"ToggleMute"})},ChromecastPlayer.prototype.audioTracks=function(){var state=this.lastPlayerData||{};state=state.NowPlayingItem||{};var streams=state.MediaStreams||[];return streams.filter(function(s){return"Audio"===s.Type})},ChromecastPlayer.prototype.getAudioStreamIndex=function(){var state=this.lastPlayerData||{};return state=state.PlayState||{},state.AudioStreamIndex},ChromecastPlayer.prototype.subtitleTracks=function(){var state=this.lastPlayerData||{};state=state.NowPlayingItem||{};var streams=state.MediaStreams||[];return streams.filter(function(s){return"Subtitle"===s.Type})},ChromecastPlayer.prototype.getSubtitleStreamIndex=function(){var state=this.lastPlayerData||{};return state=state.PlayState||{},state.SubtitleStreamIndex},ChromecastPlayer.prototype.getMaxStreamingBitrate=function(){var state=this.lastPlayerData||{};return state=state.PlayState||{},state.MaxStreamingBitrate},ChromecastPlayer.prototype.getVolume=function(){var state=this.lastPlayerData||{};return state=state.PlayState||{},null==state.VolumeLevel?100:state.VolumeLevel},ChromecastPlayer.prototype.isPlaying=function(){var state=this.lastPlayerData||{};return null!=state.NowPlayingItem},ChromecastPlayer.prototype.isPlayingVideo=function(){var state=this.lastPlayerData||{};return state=state.NowPlayingItem||{},"Video"===state.MediaType},ChromecastPlayer.prototype.isPlayingAudio=function(){var state=this.lastPlayerData||{};return state=state.NowPlayingItem||{},"Audio"===state.MediaType},ChromecastPlayer.prototype.currentTime=function(val){if(null!=val)return this.seek(val);var state=this.lastPlayerData||{};return state=state.PlayState||{},state.PositionTicks},ChromecastPlayer.prototype.duration=function(){var state=this.lastPlayerData||{};return state=state.NowPlayingItem||{},state.RunTimeTicks},ChromecastPlayer.prototype.getBufferedRanges=function(){var state=this.lastPlayerData||{};return state=state.PlayState||{},state.BufferedRanges||[]},ChromecastPlayer.prototype.paused=function(){var state=this.lastPlayerData||{};return state=state.PlayState||{},state.IsPaused},ChromecastPlayer.prototype.isMuted=function(){var state=this.lastPlayerData||{};return state=state.PlayState||{},state.IsMuted},ChromecastPlayer.prototype.shuffle=function(item){var apiClient=connectionManager.getApiClient(item.ServerId),userId=apiClient.getCurrentUserId(),instance=this;apiClient.getItem(userId,item.Id).then(function(item){instance.playWithCommand({items:[item]},"Shuffle")})},ChromecastPlayer.prototype.instantMix=function(item){var apiClient=connectionManager.getApiClient(item.ServerId),userId=apiClient.getCurrentUserId(),instance=this;apiClient.getItem(userId,item.Id).then(function(item){instance.playWithCommand({items:[item]},"InstantMix")})},ChromecastPlayer.prototype.canPlayMediaType=function(mediaType){return mediaType=(mediaType||"").toLowerCase(),"audio"===mediaType||"video"===mediaType},ChromecastPlayer.prototype.canQueueMediaType=function(mediaType){return this.canPlayMediaType(mediaType)},ChromecastPlayer.prototype.queue=function(options){this.playWithCommand(options,"PlayLast")},ChromecastPlayer.prototype.queueNext=function(options){this.playWithCommand(options,"PlayNext")},ChromecastPlayer.prototype.play=function(options){if(options.items)return this.playWithCommand(options,"PlayNow");if(!options.serverId)throw new Error("serverId required!");var instance=this,apiClient=connectionManager.getApiClient(options.serverId);return getItemsForPlayback(apiClient,{Ids:options.ids.join(",")}).then(function(result){return options.items=result.Items,instance.playWithCommand(options,"PlayNow")})},ChromecastPlayer.prototype.toggleFullscreen=function(){},ChromecastPlayer.prototype.beginPlayerUpdates=function(){},ChromecastPlayer.prototype.endPlayerUpdates=function(){},ChromecastPlayer.prototype.getPlaylist=function(){return Promise.resolve([])},ChromecastPlayer.prototype.getCurrentPlaylistItemId=function(){},ChromecastPlayer.prototype.setCurrentPlaylistItem=function(playlistItemId){return Promise.resolve()},ChromecastPlayer.prototype.removeFromPlaylist=function(playlistItemIds){return Promise.resolve()},ChromecastPlayer.prototype.getPlayerState=function(){return this.getPlayerStateInternal()||{}},ChromecastPlayer}); \ No newline at end of file +define(["appSettings","userSettings","playbackManager","connectionManager","globalize","events","require","castSenderApiLoader"],function(appSettings,userSettings,playbackManager,connectionManager,globalize,events,require,castSenderApiLoader){"use strict";function sendConnectionResult(isOk){var resolve=currentResolve,reject=currentReject;currentResolve=null,currentReject=null,isOk?resolve&&resolve():reject?reject():playbackManager.removeActivePlayer(PlayerName)}function alertText(text,title){require(["alert"],function(alert){alert({text:text,title:title})})}function normalizeImages(state){if(state&&state.NowPlayingItem){var item=state.NowPlayingItem;item.ImageTags&&item.ImageTags.Primary||item.PrimaryImageTag&&(item.ImageTags=item.ImageTags||{},item.ImageTags.Primary=item.PrimaryImageTag),item.BackdropImageTag&&item.BackdropItemId===item.Id&&(item.BackdropImageTags=[item.BackdropImageTag]),item.BackdropImageTag&&item.BackdropItemId!==item.Id&&(item.ParentBackdropImageTags=[item.BackdropImageTag],item.ParentBackdropItemId=item.BackdropItemId)}}function getItemsForPlayback(apiClient,query){var userId=apiClient.getCurrentUserId();return query.Ids&&1===query.Ids.split(",").length?apiClient.getItem(userId,query.Ids.split(",")).then(function(item){return{Items:[item],TotalRecordCount:1}}):(query.Limit=query.Limit||100,query.ExcludeLocationTypes="Virtual",query.EnableTotalRecordCount=!1,apiClient.getItems(userId,query))}function bindEventForRelay(instance,eventName){events.on(instance._castPlayer,eventName,function(e,data){var state=instance.getPlayerStateInternal(data);events.trigger(instance,eventName,[state])})}function initializeChromecast(){var instance=this;instance._castPlayer=new CastPlayer,document.dispatchEvent(new CustomEvent("chromecastloaded",{detail:{player:instance}})),events.on(instance._castPlayer,"connect",function(e){currentResolve?sendConnectionResult(!0):playbackManager.setActivePlayer(PlayerName,instance.getCurrentTargetInfo()),console.log("cc: connect"),instance.lastPlayerData=null}),events.on(instance._castPlayer,"playbackstart",function(e,data){console.log("cc: playbackstart"),instance._castPlayer.initializeCastPlayer();var state=instance.getPlayerStateInternal(data);events.trigger(instance,"playbackstart",[state])}),events.on(instance._castPlayer,"playbackstop",function(e,data){console.log("cc: playbackstop");var state=instance.getPlayerStateInternal(data);events.trigger(instance,"playbackstop",[state]),instance.lastPlayerData={}}),events.on(instance._castPlayer,"playbackprogress",function(e,data){var state=instance.getPlayerStateInternal(data);events.trigger(instance,"timeupdate",[state])}),bindEventForRelay(instance,"timeupdate"),bindEventForRelay(instance,"pause"),bindEventForRelay(instance,"unpause"),bindEventForRelay(instance,"volumechange"),bindEventForRelay(instance,"repeatmodechange"),events.on(instance._castPlayer,"playstatechange",function(e,data){var state=instance.getPlayerStateInternal(data);events.trigger(instance,"pause",[state])})}function ChromecastPlayer(){this.name=PlayerName,this.type="mediaplayer",this.id="chromecast",this.isLocalPlayer=!1,this.lastPlayerData={},castSenderApiLoader.load().then(initializeChromecast.bind(this))}var currentResolve,currentReject,PlayerName="Chromecast",DEVICE_STATE={IDLE:0,ACTIVE:1,WARNING:2,ERROR:3},PLAYER_STATE={IDLE:"IDLE",LOADING:"LOADING",LOADED:"LOADED",PLAYING:"PLAYING",PAUSED:"PAUSED",STOPPED:"STOPPED",SEEKING:"SEEKING",ERROR:"ERROR"},CastPlayer=function(){this.deviceState=DEVICE_STATE.IDLE,this.currentMediaSession=null,this.session=null,this.castPlayerState=PLAYER_STATE.IDLE,this.hasReceivers=!1,this.errorHandler=this.onError.bind(this),this.mediaStatusUpdateHandler=this.onMediaStatusUpdate.bind(this),this.initializeCastPlayer()};return CastPlayer.prototype.initializeCastPlayer=function(){var chrome=window.chrome;if(chrome){if(!chrome.cast||!chrome.cast.isAvailable)return void setTimeout(this.initializeCastPlayer.bind(this),1e3);var sessionRequest=new chrome.cast.SessionRequest("2D4B1DA3"),apiConfig=new chrome.cast.ApiConfig(sessionRequest,this.sessionListener.bind(this),this.receiverListener.bind(this),"origin_scoped");console.log("chromecast.initialize"),chrome.cast.initialize(apiConfig,this.onInitSuccess.bind(this),this.errorHandler)}},CastPlayer.prototype.onInitSuccess=function(){this.isInitialized=!0,console.log("chromecast init success")},CastPlayer.prototype.onError=function(){console.log("chromecast error")},CastPlayer.prototype.sessionListener=function(e){this.session=e,this.session&&(this.session.media[0]&&this.onMediaDiscovered("activeSession",this.session.media[0]),this.onSessionConnected(e))},CastPlayer.prototype.messageListener=function(namespace,message){if("string"==typeof message&&(message=JSON.parse(message)),"playbackerror"===message.type){var errorCode=message.data;setTimeout(function(){alertText(globalize.translate("MessagePlaybackError"+errorCode),globalize.translate("HeaderPlaybackError"))},300)}else"connectionerror"===message.type?setTimeout(function(){alertText(globalize.translate("MessageChromecastConnectionError"),globalize.translate("HeaderError"))},300):message.type&&events.trigger(this,message.type,[message.data])},CastPlayer.prototype.receiverListener=function(e){this.hasReceivers="available"===e},CastPlayer.prototype.sessionUpdateListener=function(isAlive){isAlive||(this.session=null,this.deviceState=DEVICE_STATE.IDLE,this.castPlayerState=PLAYER_STATE.IDLE,this.currentMediaSession=null,sendConnectionResult(!1))},CastPlayer.prototype.launchApp=function(){chrome.cast.requestSession(this.onRequestSessionSuccess.bind(this),this.onLaunchError.bind(this))},CastPlayer.prototype.onRequestSessionSuccess=function(e){this.onSessionConnected(e)},CastPlayer.prototype.onSessionConnected=function(session){this.session=session,this.deviceState=DEVICE_STATE.ACTIVE,this.session.addMessageListener("urn:x-cast:com.connectsdk",this.messageListener.bind(this)),this.session.addMediaListener(this.sessionMediaListener.bind(this)),this.session.addUpdateListener(this.sessionUpdateListener.bind(this)),events.trigger(this,"connect"),this.sendMessage({options:{},command:"Identify"})},CastPlayer.prototype.sessionMediaListener=function(e){this.currentMediaSession=e,this.currentMediaSession.addUpdateListener(this.mediaStatusUpdateHandler)},CastPlayer.prototype.onLaunchError=function(){this.deviceState=DEVICE_STATE.ERROR,sendConnectionResult(!1)},CastPlayer.prototype.stopApp=function(){this.session&&this.session.stop(this.onStopAppSuccess.bind(this,"Session stopped"),this.errorHandler)},CastPlayer.prototype.onStopAppSuccess=function(message){this.deviceState=DEVICE_STATE.IDLE,this.castPlayerState=PLAYER_STATE.IDLE,this.currentMediaSession=null},CastPlayer.prototype.loadMedia=function(options,command){return this.session?(options.items=options.items.map(function(i){return{Id:i.Id,ServerId:i.ServerId,Name:i.Name,Type:i.Type,MediaType:i.MediaType,IsFolder:i.IsFolder}}),this.sendMessage({options:options,command:command})):Promise.reject()},CastPlayer.prototype.sendMessage=function(message){var player=this,receiverName=null,session=player.session;session&&session.receiver&&session.receiver.friendlyName&&(receiverName=session.receiver.friendlyName);var apiClient;apiClient=message.options&&message.options.ServerId?connectionManager.getApiClient(message.options.ServerId):message.options&&message.options.items&&message.options.items.length?connectionManager.getApiClient(message.options.items[0].ServerId):connectionManager.currentApiClient(),message=Object.assign(message,{userId:apiClient.getCurrentUserId(),deviceId:apiClient.deviceId(),accessToken:apiClient.accessToken(),serverAddress:apiClient.serverAddress(),serverId:apiClient.serverId(),serverVersion:apiClient.serverVersion(),receiverName:receiverName});var bitrateSetting=appSettings.maxChromecastBitrate();return bitrateSetting&&(message.maxBitrate=bitrateSetting),message.options&&message.options.items&&(message.subtitleAppearance=userSettings.getSubtitleAppearanceSettings(),message.subtitleBurnIn=appSettings.get("subtitleburnin")||""),new Promise(function(resolve,reject){require(["chromecastHelper"],function(chromecastHelper){chromecastHelper.getServerAddress(apiClient).then(function(serverAddress){message.serverAddress=serverAddress,player.sendMessageInternal(message).then(resolve,reject)},reject)})})},CastPlayer.prototype.sendMessageInternal=function(message){return message=JSON.stringify(message),this.session.sendMessage("urn:x-cast:com.connectsdk",message,this.onPlayCommandSuccess.bind(this),this.errorHandler),Promise.resolve()},CastPlayer.prototype.onPlayCommandSuccess=function(){},CastPlayer.prototype.onMediaDiscovered=function(how,mediaSession){this.currentMediaSession=mediaSession,"loadMedia"===how&&(this.castPlayerState=PLAYER_STATE.PLAYING),"activeSession"===how&&(this.castPlayerState=mediaSession.playerState),this.currentMediaSession.addUpdateListener(this.mediaStatusUpdateHandler)},CastPlayer.prototype.onMediaStatusUpdate=function(e){!1===e&&(this.castPlayerState=PLAYER_STATE.IDLE)},CastPlayer.prototype.setReceiverVolume=function(mute,vol){this.currentMediaSession&&(mute?this.session.setReceiverMuted(!0,this.mediaCommandSuccessCallback.bind(this),this.errorHandler):this.session.setReceiverVolumeLevel(vol||1,this.mediaCommandSuccessCallback.bind(this),this.errorHandler))},CastPlayer.prototype.mute=function(){this.setReceiverVolume(!0)},CastPlayer.prototype.mediaCommandSuccessCallback=function(info,e){},ChromecastPlayer.prototype.tryPair=function(target){var castPlayer=this._castPlayer;return castPlayer.deviceState!==DEVICE_STATE.ACTIVE&&castPlayer.isInitialized?new Promise(function(resolve,reject){currentResolve=resolve,currentReject=reject,castPlayer.launchApp()}):(currentResolve=null,currentReject=null,Promise.reject())},ChromecastPlayer.prototype.getTargets=function(){var targets=[];return this._castPlayer&&this._castPlayer.hasReceivers&&targets.push(this.getCurrentTargetInfo()),Promise.resolve(targets)},ChromecastPlayer.prototype.getCurrentTargetInfo=function(){var appName=null,castPlayer=this._castPlayer;return castPlayer.session&&castPlayer.session.receiver&&castPlayer.session.receiver.friendlyName&&(appName=castPlayer.session.receiver.friendlyName),{name:PlayerName,id:PlayerName,playerName:PlayerName,playableMediaTypes:["Audio","Video"],isLocalPlayer:!1,appName:PlayerName,deviceName:appName,supportedCommands:["VolumeUp","VolumeDown","Mute","Unmute","ToggleMute","SetVolume","SetAudioStreamIndex","SetSubtitleStreamIndex","DisplayContent","SetRepeatMode","EndSession","PlayMediaSource","PlayTrailers"]}},ChromecastPlayer.prototype.getPlayerStateInternal=function(data){var triggerStateChange=!1;return data&&!this.lastPlayerData&&(triggerStateChange=!0),data=data||this.lastPlayerData,this.lastPlayerData=data,normalizeImages(data),triggerStateChange&&events.trigger(this,"statechange",[data]),data},ChromecastPlayer.prototype.playWithCommand=function(options,command){if(!options.items){var apiClient=connectionManager.getApiClient(options.serverId),instance=this;return apiClient.getItem(apiClient.getCurrentUserId(),options.ids[0]).then(function(item){return options.items=[item],instance.playWithCommand(options,command)})}return this._castPlayer.loadMedia(options,command)},ChromecastPlayer.prototype.seek=function(position){position=parseInt(position),position/=1e7,this._castPlayer.sendMessage({options:{position:position},command:"Seek"})},ChromecastPlayer.prototype.setAudioStreamIndex=function(index){this._castPlayer.sendMessage({options:{index:index},command:"SetAudioStreamIndex"})},ChromecastPlayer.prototype.setSubtitleStreamIndex=function(index){this._castPlayer.sendMessage({options:{index:index},command:"SetSubtitleStreamIndex"})},ChromecastPlayer.prototype.setMaxStreamingBitrate=function(options){this._castPlayer.sendMessage({options:options,command:"SetMaxStreamingBitrate"})},ChromecastPlayer.prototype.isFullscreen=function(){var state=this.lastPlayerData||{};return state=state.PlayState||{},state.IsFullscreen},ChromecastPlayer.prototype.nextTrack=function(){this._castPlayer.sendMessage({options:{},command:"NextTrack"})},ChromecastPlayer.prototype.previousTrack=function(){this._castPlayer.sendMessage({options:{},command:"PreviousTrack"})},ChromecastPlayer.prototype.volumeDown=function(){this._castPlayer.sendMessage({options:{},command:"VolumeDown"})},ChromecastPlayer.prototype.endSession=function(){var instance=this;this.stop().then(function(){setTimeout(function(){instance._castPlayer.stopApp()},1e3)})},ChromecastPlayer.prototype.volumeUp=function(){this._castPlayer.sendMessage({options:{},command:"VolumeUp"})},ChromecastPlayer.prototype.setVolume=function(vol){vol=Math.min(vol,100),vol=Math.max(vol,0),this._castPlayer.sendMessage({options:{volume:vol},command:"SetVolume"})},ChromecastPlayer.prototype.unpause=function(){this._castPlayer.sendMessage({options:{},command:"Unpause"})},ChromecastPlayer.prototype.playPause=function(){this._castPlayer.sendMessage({options:{},command:"PlayPause"})},ChromecastPlayer.prototype.pause=function(){this._castPlayer.sendMessage({options:{},command:"Pause"})},ChromecastPlayer.prototype.stop=function(){return this._castPlayer.sendMessage({options:{},command:"Stop"})},ChromecastPlayer.prototype.displayContent=function(options){this._castPlayer.sendMessage({options:options,command:"DisplayContent"})},ChromecastPlayer.prototype.setMute=function(isMuted){var castPlayer=this._castPlayer;isMuted?castPlayer.sendMessage({options:{},command:"Mute"}):castPlayer.sendMessage({options:{},command:"Unmute"})},ChromecastPlayer.prototype.getRepeatMode=function(){var state=this.lastPlayerData||{};return state=state.PlayState||{},state.RepeatMode},ChromecastPlayer.prototype.playTrailers=function(item){this._castPlayer.sendMessage({options:{ItemId:item.Id,ServerId:item.ServerId},command:"PlayTrailers"})},ChromecastPlayer.prototype.setRepeatMode=function(mode){this._castPlayer.sendMessage({options:{RepeatMode:mode},command:"SetRepeatMode"})},ChromecastPlayer.prototype.toggleMute=function(){this._castPlayer.sendMessage({options:{},command:"ToggleMute"})},ChromecastPlayer.prototype.audioTracks=function(){var state=this.lastPlayerData||{};return state=state.NowPlayingItem||{},(state.MediaStreams||[]).filter(function(s){return"Audio"===s.Type})},ChromecastPlayer.prototype.getAudioStreamIndex=function(){var state=this.lastPlayerData||{};return state=state.PlayState||{},state.AudioStreamIndex},ChromecastPlayer.prototype.subtitleTracks=function(){var state=this.lastPlayerData||{};return state=state.NowPlayingItem||{},(state.MediaStreams||[]).filter(function(s){return"Subtitle"===s.Type})},ChromecastPlayer.prototype.getSubtitleStreamIndex=function(){var state=this.lastPlayerData||{};return state=state.PlayState||{},state.SubtitleStreamIndex},ChromecastPlayer.prototype.getMaxStreamingBitrate=function(){var state=this.lastPlayerData||{};return state=state.PlayState||{},state.MaxStreamingBitrate},ChromecastPlayer.prototype.getVolume=function(){var state=this.lastPlayerData||{};return state=state.PlayState||{},null==state.VolumeLevel?100:state.VolumeLevel},ChromecastPlayer.prototype.isPlaying=function(){return null!=(this.lastPlayerData||{}).NowPlayingItem},ChromecastPlayer.prototype.isPlayingVideo=function(){var state=this.lastPlayerData||{};return state=state.NowPlayingItem||{},"Video"===state.MediaType},ChromecastPlayer.prototype.isPlayingAudio=function(){var state=this.lastPlayerData||{};return state=state.NowPlayingItem||{},"Audio"===state.MediaType},ChromecastPlayer.prototype.currentTime=function(val){if(null!=val)return this.seek(val);var state=this.lastPlayerData||{};return state=state.PlayState||{},state.PositionTicks},ChromecastPlayer.prototype.duration=function(){var state=this.lastPlayerData||{};return state=state.NowPlayingItem||{},state.RunTimeTicks},ChromecastPlayer.prototype.getBufferedRanges=function(){var state=this.lastPlayerData||{};return state=state.PlayState||{},state.BufferedRanges||[]},ChromecastPlayer.prototype.paused=function(){var state=this.lastPlayerData||{};return state=state.PlayState||{},state.IsPaused},ChromecastPlayer.prototype.isMuted=function(){var state=this.lastPlayerData||{};return state=state.PlayState||{},state.IsMuted},ChromecastPlayer.prototype.shuffle=function(item){var apiClient=connectionManager.getApiClient(item.ServerId),userId=apiClient.getCurrentUserId(),instance=this;apiClient.getItem(userId,item.Id).then(function(item){instance.playWithCommand({items:[item]},"Shuffle")})},ChromecastPlayer.prototype.instantMix=function(item){var apiClient=connectionManager.getApiClient(item.ServerId),userId=apiClient.getCurrentUserId(),instance=this;apiClient.getItem(userId,item.Id).then(function(item){instance.playWithCommand({items:[item]},"InstantMix")})},ChromecastPlayer.prototype.canPlayMediaType=function(mediaType){return"audio"===(mediaType=(mediaType||"").toLowerCase())||"video"===mediaType},ChromecastPlayer.prototype.canQueueMediaType=function(mediaType){return this.canPlayMediaType(mediaType)},ChromecastPlayer.prototype.queue=function(options){this.playWithCommand(options,"PlayLast")},ChromecastPlayer.prototype.queueNext=function(options){this.playWithCommand(options,"PlayNext")},ChromecastPlayer.prototype.play=function(options){if(options.items)return this.playWithCommand(options,"PlayNow");if(!options.serverId)throw new Error("serverId required!");var instance=this;return getItemsForPlayback(connectionManager.getApiClient(options.serverId),{Ids:options.ids.join(",")}).then(function(result){return options.items=result.Items,instance.playWithCommand(options,"PlayNow")})},ChromecastPlayer.prototype.toggleFullscreen=function(){},ChromecastPlayer.prototype.beginPlayerUpdates=function(){},ChromecastPlayer.prototype.endPlayerUpdates=function(){},ChromecastPlayer.prototype.getPlaylist=function(){return Promise.resolve([])},ChromecastPlayer.prototype.getCurrentPlaylistItemId=function(){},ChromecastPlayer.prototype.setCurrentPlaylistItem=function(playlistItemId){return Promise.resolve()},ChromecastPlayer.prototype.removeFromPlaylist=function(playlistItemIds){return Promise.resolve()},ChromecastPlayer.prototype.getPlayerState=function(){return this.getPlayerStateInternal()||{}},ChromecastPlayer}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/collectioneditor/collectioneditor.js b/dashboard-ui/bower_components/emby-webcomponents/collectioneditor/collectioneditor.js index 6deb1800fa..1d626c301e 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/collectioneditor/collectioneditor.js +++ b/dashboard-ui/bower_components/emby-webcomponents/collectioneditor/collectioneditor.js @@ -1 +1 @@ -define(["dialogHelper","loading","apphost","layoutManager","connectionManager","appRouter","globalize","emby-checkbox","emby-input","paper-icon-button-light","emby-select","material-icons","css!./../formdialog","emby-button","emby-linkbutton","flexStyles"],function(dialogHelper,loading,appHost,layoutManager,connectionManager,appRouter,globalize){"use strict";function parentWithClass(elem,className){for(;!elem.classList||!elem.classList.contains(className);)if(elem=elem.parentNode,!elem)return null;return elem}function onSubmit(e){loading.show();var panel=parentWithClass(this,"dialog"),collectionId=panel.querySelector("#selectCollectionToAddTo").value,apiClient=connectionManager.getApiClient(currentServerId);return collectionId?addToCollection(apiClient,panel,collectionId):createCollection(apiClient,panel),e.preventDefault(),!1}function createCollection(apiClient,dlg){var url=apiClient.getUrl("Collections",{Name:dlg.querySelector("#txtNewCollectionName").value,IsLocked:!dlg.querySelector("#chkEnableInternetMetadata").checked,Ids:dlg.querySelector(".fldSelectedItemIds").value||""});apiClient.ajax({type:"POST",url:url,dataType:"json"}).then(function(result){loading.hide();var id=result.Id;dlg.submitted=!0,dialogHelper.close(dlg),redirectToCollection(apiClient,id)})}function redirectToCollection(apiClient,id){appRouter.showItem(id,apiClient.serverId())}function addToCollection(apiClient,dlg,id){var url=apiClient.getUrl("Collections/"+id+"/Items",{Ids:dlg.querySelector(".fldSelectedItemIds").value||""});apiClient.ajax({type:"POST",url:url}).then(function(){loading.hide(),dlg.submitted=!0,dialogHelper.close(dlg),require(["toast"],function(toast){toast(globalize.translate("sharedcomponents#MessageItemsAdded"))})})}function triggerChange(select){select.dispatchEvent(new CustomEvent("change",{}))}function populateCollections(panel){loading.show();var select=panel.querySelector("#selectCollectionToAddTo");panel.querySelector(".newCollectionInfo").classList.add("hide");var options={Recursive:!0,IncludeItemTypes:"BoxSet",SortBy:"SortName",EnableTotalRecordCount:!1},apiClient=connectionManager.getApiClient(currentServerId);apiClient.getItems(apiClient.getCurrentUserId(),options).then(function(result){var html="";html+='",html+=result.Items.map(function(i){return'"}),select.innerHTML=html,select.value="",triggerChange(select),loading.hide()})}function getEditorHtml(){var html="";return html+='
',html+='
',html+='
',html+="
",html+=globalize.translate("sharedcomponents#NewCollectionHelp"),html+="
",html+='
',html+="
",html+="
",html+='
',html+='',html+="
",html+="
",html+='
',html+='
',html+='',html+='
'+globalize.translate("sharedcomponents#NewCollectionNameExample")+"
",html+="
",html+='",html+="
",html+='
',html+='",html+="
",html+='',html+="
",html+="
",html+="
"}function initEditor(content,items){if(content.querySelector("#selectCollectionToAddTo").addEventListener("change",function(){this.value?(content.querySelector(".newCollectionInfo").classList.add("hide"),content.querySelector("#txtNewCollectionName").removeAttribute("required")):(content.querySelector(".newCollectionInfo").classList.remove("hide"),content.querySelector("#txtNewCollectionName").setAttribute("required","required"))}),content.querySelector("form").addEventListener("submit",onSubmit),content.querySelector(".fldSelectedItemIds",content).value=items.join(","),items.length)content.querySelector(".fldSelectCollection").classList.remove("hide"),populateCollections(content);else{content.querySelector(".fldSelectCollection").classList.add("hide");var selectCollectionToAddTo=content.querySelector("#selectCollectionToAddTo");selectCollectionToAddTo.innerHTML="",selectCollectionToAddTo.value="",triggerChange(selectCollectionToAddTo)}}function centerFocus(elem,horiz,on){require(["scrollHelper"],function(scrollHelper){var fn=on?"on":"off";scrollHelper.centerFocus[fn](elem,horiz)})}function CollectionEditor(){}var currentServerId;return CollectionEditor.prototype.show=function(options){var items=options.items||{};currentServerId=options.serverId;var dialogOptions={removeOnClose:!0,scrollY:!1};layoutManager.tv?dialogOptions.size="fullscreen":dialogOptions.size="small";var dlg=dialogHelper.createDialog(dialogOptions);dlg.classList.add("formDialog");var html="",title=items.length?globalize.translate("sharedcomponents#HeaderAddToCollection"):globalize.translate("sharedcomponents#NewCollection");return html+='
',html+='',html+='

',html+=title,html+="

",appHost.supports("externallinks")&&(html+=''+globalize.translate("sharedcomponents#Help")+""),html+="
",html+=getEditorHtml(),dlg.innerHTML=html,initEditor(dlg,items),dlg.querySelector(".btnCancel").addEventListener("click",function(){dialogHelper.close(dlg)}),layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!0),dialogHelper.open(dlg).then(function(){return layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!1),dlg.submitted?Promise.resolve():Promise.reject()})},CollectionEditor}); \ No newline at end of file +define(["dialogHelper","loading","apphost","layoutManager","connectionManager","appRouter","globalize","emby-checkbox","emby-input","paper-icon-button-light","emby-select","material-icons","css!./../formdialog","emby-button","emby-linkbutton","flexStyles"],function(dialogHelper,loading,appHost,layoutManager,connectionManager,appRouter,globalize){"use strict";function parentWithClass(elem,className){for(;!elem.classList||!elem.classList.contains(className);)if(!(elem=elem.parentNode))return null;return elem}function onSubmit(e){loading.show();var panel=parentWithClass(this,"dialog"),collectionId=panel.querySelector("#selectCollectionToAddTo").value,apiClient=connectionManager.getApiClient(currentServerId);return collectionId?addToCollection(apiClient,panel,collectionId):createCollection(apiClient,panel),e.preventDefault(),!1}function createCollection(apiClient,dlg){var url=apiClient.getUrl("Collections",{Name:dlg.querySelector("#txtNewCollectionName").value,IsLocked:!dlg.querySelector("#chkEnableInternetMetadata").checked,Ids:dlg.querySelector(".fldSelectedItemIds").value||""});apiClient.ajax({type:"POST",url:url,dataType:"json"}).then(function(result){loading.hide();var id=result.Id;dlg.submitted=!0,dialogHelper.close(dlg),redirectToCollection(apiClient,id)})}function redirectToCollection(apiClient,id){appRouter.showItem(id,apiClient.serverId())}function addToCollection(apiClient,dlg,id){var url=apiClient.getUrl("Collections/"+id+"/Items",{Ids:dlg.querySelector(".fldSelectedItemIds").value||""});apiClient.ajax({type:"POST",url:url}).then(function(){loading.hide(),dlg.submitted=!0,dialogHelper.close(dlg),require(["toast"],function(toast){toast(globalize.translate("sharedcomponents#MessageItemsAdded"))})})}function triggerChange(select){select.dispatchEvent(new CustomEvent("change",{}))}function populateCollections(panel){loading.show();var select=panel.querySelector("#selectCollectionToAddTo");panel.querySelector(".newCollectionInfo").classList.add("hide");var options={Recursive:!0,IncludeItemTypes:"BoxSet",SortBy:"SortName",EnableTotalRecordCount:!1},apiClient=connectionManager.getApiClient(currentServerId);apiClient.getItems(apiClient.getCurrentUserId(),options).then(function(result){var html="";html+='",html+=result.Items.map(function(i){return'"}),select.innerHTML=html,select.value="",triggerChange(select),loading.hide()})}function getEditorHtml(){var html="";return html+='
',html+='
',html+='
',html+="
",html+=globalize.translate("sharedcomponents#NewCollectionHelp"),html+="
",html+='
',html+="
",html+="
",html+='
',html+='',html+="
",html+="
",html+='
',html+='
',html+='',html+='
'+globalize.translate("sharedcomponents#NewCollectionNameExample")+"
",html+="
",html+='",html+="
",html+='
',html+='",html+="
",html+='',html+="
",html+="
",html+="
"}function initEditor(content,items){if(content.querySelector("#selectCollectionToAddTo").addEventListener("change",function(){this.value?(content.querySelector(".newCollectionInfo").classList.add("hide"),content.querySelector("#txtNewCollectionName").removeAttribute("required")):(content.querySelector(".newCollectionInfo").classList.remove("hide"),content.querySelector("#txtNewCollectionName").setAttribute("required","required"))}),content.querySelector("form").addEventListener("submit",onSubmit),content.querySelector(".fldSelectedItemIds",content).value=items.join(","),items.length)content.querySelector(".fldSelectCollection").classList.remove("hide"),populateCollections(content);else{content.querySelector(".fldSelectCollection").classList.add("hide");var selectCollectionToAddTo=content.querySelector("#selectCollectionToAddTo");selectCollectionToAddTo.innerHTML="",selectCollectionToAddTo.value="",triggerChange(selectCollectionToAddTo)}}function centerFocus(elem,horiz,on){require(["scrollHelper"],function(scrollHelper){var fn=on?"on":"off";scrollHelper.centerFocus[fn](elem,horiz)})}function CollectionEditor(){}var currentServerId;return CollectionEditor.prototype.show=function(options){var items=options.items||{};currentServerId=options.serverId;var dialogOptions={removeOnClose:!0,scrollY:!1};layoutManager.tv?dialogOptions.size="fullscreen":dialogOptions.size="small";var dlg=dialogHelper.createDialog(dialogOptions);dlg.classList.add("formDialog");var html="",title=items.length?globalize.translate("sharedcomponents#HeaderAddToCollection"):globalize.translate("sharedcomponents#NewCollection");return html+='
',html+='',html+='

',html+=title,html+="

",appHost.supports("externallinks")&&(html+=''+globalize.translate("sharedcomponents#Help")+""),html+="
",html+=getEditorHtml(),dlg.innerHTML=html,initEditor(dlg,items),dlg.querySelector(".btnCancel").addEventListener("click",function(){dialogHelper.close(dlg)}),layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!0),dialogHelper.open(dlg).then(function(){return layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!1),dlg.submitted?Promise.resolve():Promise.reject()})},CollectionEditor}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/confirm/nativeconfirm.js b/dashboard-ui/bower_components/emby-webcomponents/confirm/nativeconfirm.js index f906682c1f..a816c416a3 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/confirm/nativeconfirm.js +++ b/dashboard-ui/bower_components/emby-webcomponents/confirm/nativeconfirm.js @@ -1 +1 @@ -define([],function(){"use strict";function replaceAll(str,find,replace){return str.split(find).join(replace)}return function(options){"string"==typeof options&&(options={title:"",text:options});var text=replaceAll(options.text||"","
","\n"),result=confirm(text);return result?Promise.resolve():Promise.reject()}}); \ No newline at end of file +define([],function(){"use strict";function replaceAll(str,find,replace){return str.split(find).join(replace)}return function(options){"string"==typeof options&&(options={title:"",text:options});var text=replaceAll(options.text||"","
","\n");return confirm(text)?Promise.resolve():Promise.reject()}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/datetime.js b/dashboard-ui/bower_components/emby-webcomponents/datetime.js index ec7a048eba..516ff794e8 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/datetime.js +++ b/dashboard-ui/bower_components/emby-webcomponents/datetime.js @@ -1 +1 @@ -define(["globalize"],function(globalize){"use strict";function parseISO8601Date(s,toLocal){var re=/(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(\.\d+)?(Z|([+-])(\d{2}):(\d{2}))?/,d=s.match(re);if(!d)throw"Couldn't parse ISO 8601 date string '"+s+"'";var a=[1,2,3,4,5,6,10,11];for(var i in a)d[a[i]]=parseInt(d[a[i]],10);d[7]=parseFloat(d[7]);var ms=Date.UTC(d[1],d[2]-1,d[3],d[4],d[5],d[6]);if(d[7]>0&&(ms+=Math.round(1e3*d[7])),"Z"!==d[8]&&d[10]){var offset=60*d[10]*60*1e3;d[11]&&(offset+=60*d[11]*1e3),"-"===d[9]?ms-=offset:ms+=offset}else toLocal===!1&&(ms+=6e4*(new Date).getTimezoneOffset());return new Date(ms)}function getDisplayRunningTime(ticks){var ticksPerHour=36e9,ticksPerMinute=6e8,ticksPerSecond=1e7,parts=[],hours=ticks/ticksPerHour;hours=Math.floor(hours),hours&&parts.push(hours),ticks-=hours*ticksPerHour;var minutes=ticks/ticksPerMinute;minutes=Math.floor(minutes),ticks-=minutes*ticksPerMinute,minutes<10&&hours&&(minutes="0"+minutes),parts.push(minutes);var seconds=ticks/ticksPerSecond;return seconds=Math.floor(seconds),seconds<10&&(seconds="0"+seconds),parts.push(seconds),parts.join(":")}function getOptionList(options){var list=[];for(var i in options)list.push({name:i,value:options[i]});return list}function toLocaleString(date,options){if(!date)throw new Error("date cannot be null");if(options=options||{},toLocaleTimeStringSupportsLocales){var currentLocale=globalize.getCurrentDateTimeLocale();if(currentLocale)return date.toLocaleString(currentLocale,options)}return date.toLocaleString()}function toLocaleDateString(date,options){if(!date)throw new Error("date cannot be null");if(options=options||{},toLocaleTimeStringSupportsLocales){var currentLocale=globalize.getCurrentDateTimeLocale();if(currentLocale)return date.toLocaleDateString(currentLocale,options)}var optionList=getOptionList(options);if(1===optionList.length&&"weekday"===optionList[0].name){var weekday=[];return weekday[0]="Sun",weekday[1]="Mon",weekday[2]="Tue",weekday[3]="Wed",weekday[4]="Thu",weekday[5]="Fri",weekday[6]="Sat",weekday[date.getDay()]}return date.toLocaleDateString()}function toLocaleTimeString(date,options){if(!date)throw new Error("date cannot be null");if(options=options||{},toLocaleTimeStringSupportsLocales){var currentLocale=globalize.getCurrentDateTimeLocale();if(currentLocale)return date.toLocaleTimeString(currentLocale,options)}return date.toLocaleTimeString()}function getDisplayTime(date){if(!date)throw new Error("date cannot be null");if("string"===(typeof date).toString().toLowerCase())try{date=parseISO8601Date(date,!0)}catch(err){return date}if(toLocaleTimeStringSupportsLocales)return toLocaleTimeString(date,{hour:"numeric",minute:"2-digit"});var time=toLocaleTimeString(date),timeLower=time.toLowerCase();if(timeLower.indexOf("am")!==-1||timeLower.indexOf("pm")!==-1){time=timeLower;var hour=date.getHours()%12,suffix=date.getHours()>11?"pm":"am";hour||(hour=12);var minutes=date.getMinutes();minutes<10&&(minutes="0"+minutes),minutes=":"+minutes,time=hour+minutes+suffix}else{var timeParts=time.split(":");timeParts.length>2&&(timeParts.length=2,time=timeParts.join(":"))}return time}function isRelativeDay(date,offsetInDays){if(!date)throw new Error("date cannot be null");var yesterday=new Date,day=yesterday.getDate()+offsetInDays;return yesterday.setDate(day),date.getFullYear()===yesterday.getFullYear()&&date.getMonth()===yesterday.getMonth()&&date.getDate()===day}var toLocaleTimeStringSupportsLocales=function(){try{(new Date).toLocaleTimeString("i")}catch(e){return"RangeError"===e.name}return!1}();return{parseISO8601Date:parseISO8601Date,getDisplayRunningTime:getDisplayRunningTime,toLocaleDateString:toLocaleDateString,toLocaleString:toLocaleString,getDisplayTime:getDisplayTime,isRelativeDay:isRelativeDay,toLocaleTimeString:toLocaleTimeString,supportsLocalization:function(){return toLocaleTimeStringSupportsLocales}}}); \ No newline at end of file +define(["globalize"],function(globalize){"use strict";function parseISO8601Date(s,toLocal){var re=/(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(\.\d+)?(Z|([+-])(\d{2}):(\d{2}))?/,d=s.match(re);if(!d)throw"Couldn't parse ISO 8601 date string '"+s+"'";var a=[1,2,3,4,5,6,10,11];for(var i in a)d[a[i]]=parseInt(d[a[i]],10);d[7]=parseFloat(d[7]);var ms=Date.UTC(d[1],d[2]-1,d[3],d[4],d[5],d[6]);if(d[7]>0&&(ms+=Math.round(1e3*d[7])),"Z"!==d[8]&&d[10]){var offset=60*d[10]*60*1e3;d[11]&&(offset+=60*d[11]*1e3),"-"===d[9]?ms-=offset:ms+=offset}else!1===toLocal&&(ms+=6e4*(new Date).getTimezoneOffset());return new Date(ms)}function getDisplayRunningTime(ticks){var parts=[],hours=ticks/36e9;hours=Math.floor(hours),hours&&parts.push(hours),ticks-=36e9*hours;var minutes=ticks/6e8;minutes=Math.floor(minutes),ticks-=6e8*minutes,minutes<10&&hours&&(minutes="0"+minutes),parts.push(minutes);var seconds=ticks/1e7;return seconds=Math.floor(seconds),seconds<10&&(seconds="0"+seconds),parts.push(seconds),parts.join(":")}function getOptionList(options){var list=[];for(var i in options)list.push({name:i,value:options[i]});return list}function toLocaleString(date,options){if(!date)throw new Error("date cannot be null");if(options=options||{},toLocaleTimeStringSupportsLocales){var currentLocale=globalize.getCurrentDateTimeLocale();if(currentLocale)return date.toLocaleString(currentLocale,options)}return date.toLocaleString()}function toLocaleDateString(date,options){if(!date)throw new Error("date cannot be null");if(options=options||{},toLocaleTimeStringSupportsLocales){var currentLocale=globalize.getCurrentDateTimeLocale();if(currentLocale)return date.toLocaleDateString(currentLocale,options)}var optionList=getOptionList(options);if(1===optionList.length&&"weekday"===optionList[0].name){var weekday=[];return weekday[0]="Sun",weekday[1]="Mon",weekday[2]="Tue",weekday[3]="Wed",weekday[4]="Thu",weekday[5]="Fri",weekday[6]="Sat",weekday[date.getDay()]}return date.toLocaleDateString()}function toLocaleTimeString(date,options){if(!date)throw new Error("date cannot be null");if(options=options||{},toLocaleTimeStringSupportsLocales){var currentLocale=globalize.getCurrentDateTimeLocale();if(currentLocale)return date.toLocaleTimeString(currentLocale,options)}return date.toLocaleTimeString()}function getDisplayTime(date){if(!date)throw new Error("date cannot be null");if("string"===(typeof date).toString().toLowerCase())try{date=parseISO8601Date(date,!0)}catch(err){return date}if(toLocaleTimeStringSupportsLocales)return toLocaleTimeString(date,{hour:"numeric",minute:"2-digit"});var time=toLocaleTimeString(date),timeLower=time.toLowerCase();if(-1!==timeLower.indexOf("am")||-1!==timeLower.indexOf("pm")){time=timeLower;var hour=date.getHours()%12,suffix=date.getHours()>11?"pm":"am";hour||(hour=12);var minutes=date.getMinutes();minutes<10&&(minutes="0"+minutes),minutes=":"+minutes,time=hour+minutes+suffix}else{var timeParts=time.split(":");timeParts.length>2&&(timeParts.length=2,time=timeParts.join(":"))}return time}function isRelativeDay(date,offsetInDays){if(!date)throw new Error("date cannot be null");var yesterday=new Date,day=yesterday.getDate()+offsetInDays;return yesterday.setDate(day),date.getFullYear()===yesterday.getFullYear()&&date.getMonth()===yesterday.getMonth()&&date.getDate()===day}var toLocaleTimeStringSupportsLocales=function(){try{(new Date).toLocaleTimeString("i")}catch(e){return"RangeError"===e.name}return!1}();return{parseISO8601Date:parseISO8601Date,getDisplayRunningTime:getDisplayRunningTime,toLocaleDateString:toLocaleDateString,toLocaleString:toLocaleString,getDisplayTime:getDisplayTime,isRelativeDay:isRelativeDay,toLocaleTimeString:toLocaleTimeString,supportsLocalization:function(){return toLocaleTimeStringSupportsLocales}}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/dialog/dialog.js b/dashboard-ui/bower_components/emby-webcomponents/dialog/dialog.js index 13a8e6421d..382e7e013e 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/dialog/dialog.js +++ b/dashboard-ui/bower_components/emby-webcomponents/dialog/dialog.js @@ -1 +1 @@ -define(["dialogHelper","dom","layoutManager","scrollHelper","globalize","require","material-icons","emby-button","paper-icon-button-light","emby-input","formDialogStyle","flexStyles"],function(dialogHelper,dom,layoutManager,scrollHelper,globalize,require){"use strict";function showDialog(options,template){function onButtonClick(){dialogResult=this.getAttribute("data-id"),dialogHelper.close(dlg)}var dialogOptions={removeOnClose:!0,scrollY:!1},enableTvLayout=layoutManager.tv;enableTvLayout&&(dialogOptions.size="fullscreen");var dlg=dialogHelper.createDialog(dialogOptions);dlg.classList.add("formDialog"),dlg.innerHTML=globalize.translateHtml(template,"sharedcomponents"),dlg.classList.add("align-items-center"),dlg.classList.add("justify-content-center");var formDialogContent=dlg.querySelector(".formDialogContent");formDialogContent.classList.add("no-grow"),enableTvLayout?(formDialogContent.style["max-width"]="50%",formDialogContent.style["max-height"]="60%",scrollHelper.centerFocus.on(formDialogContent,!1)):(formDialogContent.style.maxWidth=Math.min(150*options.buttons.length+200,dom.getWindowSize().innerWidth-50)+"px",dlg.classList.add("dialog-fullscreen-lowres")),options.title?dlg.querySelector(".formDialogHeaderTitle").innerHTML=options.title||"":dlg.querySelector(".formDialogHeaderTitle").classList.add("hide"),dlg.querySelector(".text").innerHTML=options.html||options.text||"";var i,length,html="";for(i=0,length=options.buttons.length;i"+item.name+""}dlg.querySelector(".formDialogFooter").innerHTML=html;var dialogResult,buttons=dlg.querySelectorAll(".btnOption");for(i=0,length=buttons.length;i"+item.name+"",item.description&&(html+='
'+item.description+"
")}dlg.querySelector(".formDialogFooter").innerHTML=html,hasDescriptions&&dlg.querySelector(".formDialogFooter").classList.add("formDialogFooter-vertical");var dialogResult,buttons=dlg.querySelectorAll(".btnOption");for(i=0,length=buttons.length;i'+t.name+""}).join("")}function loadScreensavers(context,userSettings){var selectScreensaver=context.querySelector(".selectScreensaver"),options=pluginManager.ofType("screensaver").map(function(plugin){return{name:plugin.name,value:plugin.id}});options.unshift({name:globalize.translate("sharedcomponents#None"),value:"none"}),selectScreensaver.innerHTML=options.map(function(o){return'"}).join(""),selectScreensaver.value=userSettings.screensaver(),selectScreensaver.value||(selectScreensaver.value="none")}function loadSoundEffects(context,userSettings){var selectSoundEffects=context.querySelector(".selectSoundEffects"),options=pluginManager.ofType("soundeffects").map(function(plugin){return{name:plugin.name,value:plugin.id}});options.unshift({name:globalize.translate("sharedcomponents#None"),value:"none"}),selectSoundEffects.innerHTML=options.map(function(o){return'"}).join(""),selectSoundEffects.value=userSettings.soundEffects(),selectSoundEffects.value||(selectSoundEffects.value="none")}function loadSkins(context,userSettings){var selectSkin=context.querySelector(".selectSkin"),options=pluginManager.ofType("skin").map(function(plugin){return{name:plugin.name,value:plugin.id}});selectSkin.innerHTML=options.map(function(o){return'"}).join(""),selectSkin.value=userSettings.skin(),!selectSkin.value&&options.length&&(selectSkin.value=options[0].value),options.length>1&&appHost.supports("skins")?context.querySelector(".selectSkinContainer").classList.remove("hide"):context.querySelector(".selectSkinContainer").classList.add("hide")}function showOrHideMissingEpisodesField(context,user,apiClient){return browser.tizen||browser.web0s?void context.querySelector(".fldDisplayMissingEpisodes").classList.add("hide"):void context.querySelector(".fldDisplayMissingEpisodes").classList.remove("hide")}function loadForm(context,user,userSettings,apiClient){apiClient.getCurrentUserId(),user.Id;user.Policy.IsAdministrator?context.querySelector(".selectDashboardThemeContainer").classList.remove("hide"):context.querySelector(".selectDashboardThemeContainer").classList.add("hide"),appHost.supports("displaylanguage")?context.querySelector(".languageSection").classList.remove("hide"):context.querySelector(".languageSection").classList.add("hide"),appHost.supports("displaymode")?context.querySelector(".fldDisplayMode").classList.remove("hide"):context.querySelector(".fldDisplayMode").classList.add("hide"),appHost.supports("displaymode")||layoutManager.tv?context.querySelector(".selectTVHomeScreenContainer").classList.remove("hide"):context.querySelector(".selectTVHomeScreenContainer").classList.add("hide"),appHost.supports("externallinks")?context.querySelector(".learnHowToContributeContainer").classList.remove("hide"):context.querySelector(".learnHowToContributeContainer").classList.add("hide"),appHost.supports("runatstartup")?context.querySelector(".fldAutorun").classList.remove("hide"):context.querySelector(".fldAutorun").classList.add("hide"),appHost.supports("soundeffects")?context.querySelector(".fldSoundEffects").classList.remove("hide"):context.querySelector(".fldSoundEffects").classList.add("hide"),appHost.supports("screensaver")?context.querySelector(".selectScreensaverContainer").classList.remove("hide"):context.querySelector(".selectScreensaverContainer").classList.add("hide"),datetime.supportsLocalization()?context.querySelector(".fldDateTimeLocale").classList.remove("hide"):context.querySelector(".fldDateTimeLocale").classList.add("hide"),browser.tizen||browser.web0s?(context.querySelector(".fldSeasonalThemes").classList.add("hide"),context.querySelector(".fldBackdrops").classList.add("hide"),context.querySelector(".fldThemeSong").classList.add("hide"),context.querySelector(".fldThemeVideo").classList.add("hide")):(context.querySelector(".fldSeasonalThemes").classList.remove("hide"),context.querySelector(".fldBackdrops").classList.remove("hide"),context.querySelector(".fldThemeSong").classList.remove("hide"),context.querySelector(".fldThemeVideo").classList.remove("hide")),context.querySelector(".chkRunAtStartup").checked=appSettings.runAtStartup();var selectTheme=context.querySelector("#selectTheme"),selectDashboardTheme=context.querySelector("#selectDashboardTheme");fillThemes(selectTheme),fillThemes(selectDashboardTheme,!0),loadScreensavers(context,userSettings),loadSoundEffects(context,userSettings),loadSkins(context,userSettings),context.querySelector(".chkDisplayMissingEpisodes").checked=user.Configuration.DisplayMissingEpisodes||!1,context.querySelector("#chkThemeSong").checked=userSettings.enableThemeSongs(),context.querySelector("#chkThemeVideo").checked=userSettings.enableThemeVideos(),context.querySelector("#chkBackdrops").checked=userSettings.enableBackdrops(),context.querySelector("#chkSeasonalThemes").checked=userSettings.enableSeasonalThemes(),context.querySelector(".selectTVHomeScreen").value=userSettings.get("tvhome")||"",context.querySelector("#selectLanguage").value=userSettings.language()||"",context.querySelector(".selectDateTimeLocale").value=userSettings.dateTimeLocale()||"",selectDashboardTheme.value=userSettings.dashboardTheme()||"",selectTheme.value=userSettings.theme()||"",context.querySelector(".selectLayout").value=layoutManager.getSavedLayout()||"",showOrHideMissingEpisodesField(context,user,apiClient),loading.hide()}function saveUser(context,user,userSettingsInstance,apiClient){return appSettings.runAtStartup(context.querySelector(".chkRunAtStartup").checked),user.Configuration.DisplayMissingEpisodes=context.querySelector(".chkDisplayMissingEpisodes").checked,appHost.supports("displaylanguage")&&userSettingsInstance.language(context.querySelector("#selectLanguage").value),userSettingsInstance.dateTimeLocale(context.querySelector(".selectDateTimeLocale").value),userSettingsInstance.enableThemeSongs(context.querySelector("#chkThemeSong").checked),userSettingsInstance.enableThemeVideos(context.querySelector("#chkThemeVideo").checked),userSettingsInstance.dashboardTheme(context.querySelector("#selectDashboardTheme").value),userSettingsInstance.theme(context.querySelector("#selectTheme").value),userSettingsInstance.soundEffects(context.querySelector(".selectSoundEffects").value),userSettingsInstance.screensaver(context.querySelector(".selectScreensaver").value),userSettingsInstance.set("tvhome",context.querySelector(".selectTVHomeScreen").value),userSettingsInstance.skin(context.querySelector(".selectSkin").value),userSettingsInstance.enableBackdrops(context.querySelector("#chkBackdrops").checked),userSettingsInstance.enableSeasonalThemes(context.querySelector("#chkSeasonalThemes").checked),user.Id===apiClient.getCurrentUserId()&&skinManager.setTheme(userSettingsInstance.theme()),layoutManager.setLayout(context.querySelector(".selectLayout").value),apiClient.updateUserConfiguration(user.Id,user.Configuration)}function save(instance,context,userId,userSettings,apiClient,enableSaveConfirmation){loading.show(),apiClient.getUser(userId).then(function(user){saveUser(context,user,userSettings,apiClient).then(function(){loading.hide(),enableSaveConfirmation&&require(["toast"],function(toast){toast(globalize.translate("sharedcomponents#SettingsSaved"))}),events.trigger(instance,"saved")},function(){loading.hide()})})}function onSubmit(e){var self=this,apiClient=connectionManager.getApiClient(self.options.serverId),userId=self.options.userId,userSettings=self.options.userSettings;return userSettings.setUserInfo(userId,apiClient).then(function(){var enableSaveConfirmation=self.options.enableSaveConfirmation;save(self,self.options.element,userId,userSettings,apiClient,enableSaveConfirmation)}),e&&e.preventDefault(),!1}function embed(options,self){require(["text!./displaysettings.template.html"],function(template){options.element.innerHTML=globalize.translateDocument(template,"sharedcomponents"),options.element.querySelector("form").addEventListener("submit",onSubmit.bind(self)),options.enableSaveButton&&options.element.querySelector(".btnSave").classList.remove("hide"),self.loadData(options.autoFocus)})}function DisplaySettings(options){this.options=options,embed(options,this)}return DisplaySettings.prototype.loadData=function(autoFocus){var self=this,context=self.options.element;loading.show();var userId=self.options.userId,apiClient=connectionManager.getApiClient(self.options.serverId),userSettings=self.options.userSettings;return apiClient.getUser(userId).then(function(user){return userSettings.setUserInfo(userId,apiClient).then(function(){self.dataLoaded=!0,loadForm(context,user,userSettings,apiClient),autoFocus&&focusManager.autoFocus(context)})})},DisplaySettings.prototype.submit=function(){onSubmit.call(this)},DisplaySettings.prototype.destroy=function(){this.options=null},DisplaySettings}); \ No newline at end of file +define(["require","browser","layoutManager","appSettings","pluginManager","apphost","focusManager","datetime","globalize","loading","connectionManager","skinManager","dom","events","emby-select","emby-checkbox","emby-linkbutton"],function(require,browser,layoutManager,appSettings,pluginManager,appHost,focusManager,datetime,globalize,loading,connectionManager,skinManager,dom,events){"use strict";function fillThemes(select,isDashboard){select.innerHTML=skinManager.getThemes().map(function(t){var value=t.id;return t.isDefault&&!isDashboard?value="":t.isDefaultServerDashboard&&isDashboard&&(value=""),'"}).join("")}function loadScreensavers(context,userSettings){var selectScreensaver=context.querySelector(".selectScreensaver"),options=pluginManager.ofType("screensaver").map(function(plugin){return{name:plugin.name,value:plugin.id}});options.unshift({name:globalize.translate("sharedcomponents#None"),value:"none"}),selectScreensaver.innerHTML=options.map(function(o){return'"}).join(""),selectScreensaver.value=userSettings.screensaver(),selectScreensaver.value||(selectScreensaver.value="none")}function loadSoundEffects(context,userSettings){var selectSoundEffects=context.querySelector(".selectSoundEffects"),options=pluginManager.ofType("soundeffects").map(function(plugin){return{name:plugin.name,value:plugin.id}});options.unshift({name:globalize.translate("sharedcomponents#None"),value:"none"}),selectSoundEffects.innerHTML=options.map(function(o){return'"}).join(""),selectSoundEffects.value=userSettings.soundEffects(),selectSoundEffects.value||(selectSoundEffects.value="none")}function loadSkins(context,userSettings){var selectSkin=context.querySelector(".selectSkin"),options=pluginManager.ofType("skin").map(function(plugin){return{name:plugin.name,value:plugin.id}});selectSkin.innerHTML=options.map(function(o){return'"}).join(""),selectSkin.value=userSettings.skin(),!selectSkin.value&&options.length&&(selectSkin.value=options[0].value),options.length>1&&appHost.supports("skins")?context.querySelector(".selectSkinContainer").classList.remove("hide"):context.querySelector(".selectSkinContainer").classList.add("hide")}function showOrHideMissingEpisodesField(context,user,apiClient){if(browser.tizen||browser.web0s)return void context.querySelector(".fldDisplayMissingEpisodes").classList.add("hide");context.querySelector(".fldDisplayMissingEpisodes").classList.remove("hide")}function loadForm(context,user,userSettings,apiClient){apiClient.getCurrentUserId(),user.Id;user.Policy.IsAdministrator?context.querySelector(".selectDashboardThemeContainer").classList.remove("hide"):context.querySelector(".selectDashboardThemeContainer").classList.add("hide"),appHost.supports("displaylanguage")?context.querySelector(".languageSection").classList.remove("hide"):context.querySelector(".languageSection").classList.add("hide"),appHost.supports("displaymode")?context.querySelector(".fldDisplayMode").classList.remove("hide"):context.querySelector(".fldDisplayMode").classList.add("hide"),appHost.supports("externallinks")?context.querySelector(".learnHowToContributeContainer").classList.remove("hide"):context.querySelector(".learnHowToContributeContainer").classList.add("hide"),appHost.supports("runatstartup")?context.querySelector(".fldAutorun").classList.remove("hide"):context.querySelector(".fldAutorun").classList.add("hide"),appHost.supports("soundeffects")?context.querySelector(".fldSoundEffects").classList.remove("hide"):context.querySelector(".fldSoundEffects").classList.add("hide"),appHost.supports("screensaver")?context.querySelector(".selectScreensaverContainer").classList.remove("hide"):context.querySelector(".selectScreensaverContainer").classList.add("hide"),datetime.supportsLocalization()?context.querySelector(".fldDateTimeLocale").classList.remove("hide"):context.querySelector(".fldDateTimeLocale").classList.add("hide"),browser.tizen||browser.web0s?(context.querySelector(".fldSeasonalThemes").classList.add("hide"),context.querySelector(".fldBackdrops").classList.add("hide"),context.querySelector(".fldThemeSong").classList.add("hide"),context.querySelector(".fldThemeVideo").classList.add("hide")):(context.querySelector(".fldSeasonalThemes").classList.remove("hide"),context.querySelector(".fldBackdrops").classList.remove("hide"),context.querySelector(".fldThemeSong").classList.remove("hide"),context.querySelector(".fldThemeVideo").classList.remove("hide")),context.querySelector(".chkRunAtStartup").checked=appSettings.runAtStartup();var selectTheme=context.querySelector("#selectTheme"),selectDashboardTheme=context.querySelector("#selectDashboardTheme");fillThemes(selectTheme),fillThemes(selectDashboardTheme,!0),loadScreensavers(context,userSettings),loadSoundEffects(context,userSettings),loadSkins(context,userSettings),context.querySelector(".chkDisplayMissingEpisodes").checked=user.Configuration.DisplayMissingEpisodes||!1,context.querySelector("#chkThemeSong").checked=userSettings.enableThemeSongs(),context.querySelector("#chkThemeVideo").checked=userSettings.enableThemeVideos(),context.querySelector("#chkBackdrops").checked=userSettings.enableBackdrops(),context.querySelector("#chkSeasonalThemes").checked=userSettings.enableSeasonalThemes(),context.querySelector("#selectLanguage").value=userSettings.language()||"",context.querySelector(".selectDateTimeLocale").value=userSettings.dateTimeLocale()||"",selectDashboardTheme.value=userSettings.dashboardTheme()||"",selectTheme.value=userSettings.theme()||"",context.querySelector(".selectLayout").value=layoutManager.getSavedLayout()||"",showOrHideMissingEpisodesField(context,user,apiClient),loading.hide()}function saveUser(context,user,userSettingsInstance,apiClient){return appSettings.runAtStartup(context.querySelector(".chkRunAtStartup").checked),user.Configuration.DisplayMissingEpisodes=context.querySelector(".chkDisplayMissingEpisodes").checked,appHost.supports("displaylanguage")&&userSettingsInstance.language(context.querySelector("#selectLanguage").value),userSettingsInstance.dateTimeLocale(context.querySelector(".selectDateTimeLocale").value),userSettingsInstance.enableThemeSongs(context.querySelector("#chkThemeSong").checked),userSettingsInstance.enableThemeVideos(context.querySelector("#chkThemeVideo").checked),userSettingsInstance.dashboardTheme(context.querySelector("#selectDashboardTheme").value),userSettingsInstance.theme(context.querySelector("#selectTheme").value),userSettingsInstance.soundEffects(context.querySelector(".selectSoundEffects").value),userSettingsInstance.screensaver(context.querySelector(".selectScreensaver").value),userSettingsInstance.skin(context.querySelector(".selectSkin").value),userSettingsInstance.enableBackdrops(context.querySelector("#chkBackdrops").checked),userSettingsInstance.enableSeasonalThemes(context.querySelector("#chkSeasonalThemes").checked),user.Id===apiClient.getCurrentUserId()&&skinManager.setTheme(userSettingsInstance.theme()),layoutManager.setLayout(context.querySelector(".selectLayout").value),apiClient.updateUserConfiguration(user.Id,user.Configuration)}function save(instance,context,userId,userSettings,apiClient,enableSaveConfirmation){loading.show(),apiClient.getUser(userId).then(function(user){saveUser(context,user,userSettings,apiClient).then(function(){loading.hide(),enableSaveConfirmation&&require(["toast"],function(toast){toast(globalize.translate("sharedcomponents#SettingsSaved"))}),events.trigger(instance,"saved")},function(){loading.hide()})})}function onSubmit(e){var self=this,apiClient=connectionManager.getApiClient(self.options.serverId),userId=self.options.userId,userSettings=self.options.userSettings;return userSettings.setUserInfo(userId,apiClient).then(function(){var enableSaveConfirmation=self.options.enableSaveConfirmation;save(self,self.options.element,userId,userSettings,apiClient,enableSaveConfirmation)}),e&&e.preventDefault(),!1}function embed(options,self){require(["text!./displaysettings.template.html"],function(template){options.element.innerHTML=globalize.translateDocument(template,"sharedcomponents"),options.element.querySelector("form").addEventListener("submit",onSubmit.bind(self)),options.enableSaveButton&&options.element.querySelector(".btnSave").classList.remove("hide"),self.loadData(options.autoFocus)})}function DisplaySettings(options){this.options=options,embed(options,this)}return DisplaySettings.prototype.loadData=function(autoFocus){var self=this,context=self.options.element;loading.show();var userId=self.options.userId,apiClient=connectionManager.getApiClient(self.options.serverId),userSettings=self.options.userSettings;return apiClient.getUser(userId).then(function(user){return userSettings.setUserInfo(userId,apiClient).then(function(){self.dataLoaded=!0,loadForm(context,user,userSettings,apiClient),autoFocus&&focusManager.autoFocus(context)})})},DisplaySettings.prototype.submit=function(){onSubmit.call(this)},DisplaySettings.prototype.destroy=function(){this.options=null},DisplaySettings}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/displaysettings/displaysettings.template.html b/dashboard-ui/bower_components/emby-webcomponents/displaysettings/displaysettings.template.html index 3690e3d9cc..01bd14221f 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/displaysettings/displaysettings.template.html +++ b/dashboard-ui/bower_components/emby-webcomponents/displaysettings/displaysettings.template.html @@ -125,14 +125,6 @@
-
- -
Changes take effect after signing out or restarting the app.
-
-
${FeatureRequiresEmbyPremiere}
diff --git a/dashboard-ui/bower_components/emby-webcomponents/dom.js b/dashboard-ui/bower_components/emby-webcomponents/dom.js index 553975c2e9..2ddf5f0779 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/dom.js +++ b/dashboard-ui/bower_components/emby-webcomponents/dom.js @@ -1 +1 @@ -define([],function(){"use strict";function parentWithAttribute(elem,name,value){for(;value?elem.getAttribute(name)!==value:!elem.getAttribute(name);)if(elem=elem.parentNode,!elem||!elem.getAttribute)return null;return elem}function parentWithTag(elem,tagNames){for(Array.isArray(tagNames)||(tagNames=[tagNames]);tagNames.indexOf(elem.tagName||"")===-1;)if(elem=elem.parentNode,!elem)return null;return elem}function containsAnyClass(classList,classNames){for(var i=0,length=classNames.length;ii{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-box-align:center;-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-small{padding:.75em;font-size:92%}.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;-webkit-border-radius:50%;border-radius:50%;-webkit-tap-highlight-color:transparent;-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.66956521739130434em;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}.btnFilterWithBubble{position:relative}.filterButtonBubble{color:#fff;position:absolute;top:0;right:0;width:1.6em;height:1.6em;z-index:100000000;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;font-size:82%;-webkit-border-radius:100em;border-radius:100em;-webkit-box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2);box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2);background:#03A9F4;font-weight:700} \ No newline at end of file +.emby-button,.fab{-webkit-box-sizing:border-box;-webkit-box-align:center}.button-flat,.button-link{background:0 0}.emby-button,.paper-icon-button-light{text-align:center;font-family:inherit;color:inherit;outline:0!important;-webkit-tap-highlight-color:transparent;position:relative}.emby-button{display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;-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;cursor:pointer;z-index:0;padding:.86em 1em;border:0;vertical-align:middle;-webkit-border-radius:.2em;border-radius:.2em;font-weight:600;text-decoration:none;line-height:1.35}.emby-button::-moz-focus-inner{border:0}.button-flat:hover{opacity:.5}.button-link{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}.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}.emby-button.block{display:block;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;margin:.25em 0;width:100%}.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;cursor:pointer;z-index:0;min-width:initial;min-height:initial;width:auto;height:auto;padding:.556em;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{font-size:1.66956521739130434em;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}.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}.btnFilterWithBubble{position:relative}.filterButtonBubble{color:#fff;position:absolute;top:0;right:0;width:1.6em;height:1.6em;z-index:100000000;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;font-size:82%;-webkit-border-radius:100em;border-radius:100em;-webkit-box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2);box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2);background:#03A9F4;font-weight:700} \ 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 5ddc1e9438..ad11a39c7d 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 openPremiumInfo(){require(["registrationServices"],function(registrationServices){registrationServices.showPremiereInfo()})}function onAnchorClick(e){var href=this.getAttribute("href")||"";"#"!==href?this.getAttribute("target")?href.indexOf("emby.media/premiere")===-1||appHost.supports("externalpremium")?appHost.supports("targetblank")||(e.preventDefault(),shell.openUrl(href)):(e.preventDefault(),openPremiumInfo()):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 +define(["browser","dom","layoutManager","shell","appRouter","apphost","css!./emby-button","registerElement"],function(browser,dom,layoutManager,shell,appRouter,appHost){"use strict";function openPremiumInfo(){require(["registrationServices"],function(registrationServices){registrationServices.showPremiereInfo()})}function onAnchorClick(e){var href=this.getAttribute("href")||"";"#"!==href?this.getAttribute("target")?-1===href.indexOf("emby.media/premiere")||appHost.supports("externalpremium")?appHost.supports("targetblank")||(e.preventDefault(),shell.openUrl(href)):(e.preventDefault(),openPremiumInfo()):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&&("false"!==this.getAttribute("data-focusscale")&&this.classList.add("emby-button-focusscale"),this.classList.add("emby-button-tv")))},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/emby-button/paper-icon-button-light.js b/dashboard-ui/bower_components/emby-webcomponents/emby-button/paper-icon-button-light.js index 70d0b1f992..6596df93f4 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/emby-button/paper-icon-button-light.js +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-button/paper-icon-button-light.js @@ -1 +1 @@ -define(["browser","dom","layoutManager","css!./emby-button","registerElement"],function(browser,dom,layoutManager){"use strict";function enableAnimation(){return!browser.tv}function onTransitionEnd(){var div=this,parentNode=div.parentNode;if(parentNode)try{parentNode.removeChild(div)}catch(err){}}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"),btn.appendChild(div),div.addEventListener(dom.whichAnimationEvent(),onTransitionEnd,!1),div.addEventListener(dom.whichAnimationCancelEvent(),onTransitionEnd,!1),setTimeout(onTransitionEnd.bind(div),200)}function animateButton(e,btn){requestAnimationFrame(function(){animateButtonInternal(e,btn)})}function onKeyDown(e){13===e.keyCode&&animateButton(e,this)}function onClick(e){animateButton(e,this)}var EmbyButtonPrototype=Object.create(HTMLButtonElement.prototype);EmbyButtonPrototype.createdCallback=function(){this.classList.contains("paper-icon-button-light")||(this.classList.add("paper-icon-button-light"),layoutManager.tv&&this.classList.add("icon-button-focusscale"),enableAnimation()&&"false"!==this.getAttribute("data-ripple")&&(dom.addEventListener(this,"keydown",onKeyDown,{passive:!0}),dom.addEventListener(this,"click",onClick,{passive:!0})))},document.registerElement("paper-icon-button-light",{prototype:EmbyButtonPrototype,extends:"button"})}); \ No newline at end of file +define(["layoutManager","css!./emby-button","registerElement"],function(layoutManager){"use strict";var EmbyButtonPrototype=Object.create(HTMLButtonElement.prototype);EmbyButtonPrototype.createdCallback=function(){this.classList.add("paper-icon-button-light"),layoutManager.tv&&this.classList.add("icon-button-focusscale")},document.registerElement("paper-icon-button-light",{prototype:EmbyButtonPrototype,extends:"button"})}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-checkbox/emby-checkbox.css b/dashboard-ui/bower_components/emby-webcomponents/emby-checkbox/emby-checkbox.css index 3ccaaa0221..7f5cb478f6 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/emby-checkbox/emby-checkbox.css +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-checkbox/emby-checkbox.css @@ -1 +1 @@ -.emby-checkbox-label{position:relative;z-index:1;vertical-align:middle;display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;margin:0;padding:0 0 0 2.4em;-webkit-box-align:center;-webkit-align-items:center;align-items:center;height:2.35em}.checkboxContainer,.checkboxListContainer{margin-bottom:1.8em}.checkboxFieldDescription{padding-left:2.4em}.checkboxContainer{display:-webkit-box;display:-webkit-flex;display:flex}.checkboxContainer-withDescription{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column}.emby-checkbox{position:absolute;width:1px;height:1px;margin:0;padding:0;opacity:0;-ms-appearance:none;-moz-appearance:none;-webkit-appearance:none;appearance:none;border:none}.checkboxOutline{position:absolute;top:3px;left:0;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;width:1.83em;height:1.83em;margin:0;cursor:pointer;overflow:hidden;border:2px solid currentcolor;-webkit-border-radius:2px;border-radius:2px;z-index:2}.emby-checkbox-focushelper{position:absolute;top:-.915em;left:-.915em;width:3.66em;height:3.66em;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;margin:3px 0 0;-webkit-border-radius:50%;border-radius:50%;background-color:transparent}.checkboxOutlineTick{position:absolute;top:0;left:0;height:100%;width:100%;background:0 0;-webkit-transition-duration:.28s;-o-transition-duration:.28s;transition-duration:.28s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);-o-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-property:background;-o-transition-property:background;transition-property:background}.emby-checkbox:checked+span+span+.checkboxOutline>.checkboxOutlineTick{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICB2aWV3Qm94PSIwIDAgMSAxIgogICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0Ij4KICA8cGF0aAogICAgIGQ9Ik0gMC4wNDAzODA1OSwwLjYyNjc3NjcgMC4xNDY0NDY2MSwwLjUyMDcxMDY4IDAuNDI5Mjg5MzIsMC44MDM1NTMzOSAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IE0gMC4yMTcxNTcyOSwwLjgwMzU1MzM5IDAuODUzNTUzMzksMC4xNjcxNTcyOSAwLjk1OTYxOTQxLDAuMjczMjIzMyAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IgogICAgIGlkPSJyZWN0Mzc4MCIKICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPgo8L3N2Zz4K)}.emby-checkbox:checked[disabled]+span+span+.checkboxOutline>.checkboxOutlineTick{background-color:rgba(0,0,0,.26);background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICB2aWV3Qm94PSIwIDAgMSAxIgogICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0Ij4KICA8cGF0aAogICAgIGQ9Ik0gMC4wNDAzODA1OSwwLjYyNjc3NjcgMC4xNDY0NDY2MSwwLjUyMDcxMDY4IDAuNDI5Mjg5MzIsMC44MDM1NTMzOSAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IE0gMC4yMTcxNTcyOSwwLjgwMzU1MzM5IDAuODUzNTUzMzksMC4xNjcxNTcyOSAwLjk1OTYxOTQxLDAuMjczMjIzMyAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IgogICAgIGlkPSJyZWN0Mzc4MCIKICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPgo8L3N2Zz4K)}.checkboxLabel{position:relative;cursor:pointer;margin:0}.checkboxList>.emby-checkbox-label{display:-webkit-box;display:-webkit-flex;display:flex;margin:.5em 0}.checkboxList-verticalwrap{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap}.checkboxList-verticalwrap>.emby-checkbox-label{display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;margin:.3em 0;width:12em}.checkboxList-paperList{padding:1em!important;margin:.75em 0!important}.checkboxListLabel{margin-bottom:.25em}@-webkit-keyframes repaintChrome{from,to{padding:0}} \ No newline at end of file +.emby-checkbox-label{position:relative;z-index:1;vertical-align:middle;display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;margin:0;padding:0 0 0 2.4em;-webkit-box-align:center;-webkit-align-items:center;align-items:center;height:2.35em;cursor:pointer}.checkboxContainer,.checkboxListContainer{margin-bottom:1.8em}.checkboxFieldDescription{padding-left:2.4em}.checkboxContainer{display:-webkit-box;display:-webkit-flex;display:flex}.checkboxContainer-withDescription{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column}.emby-checkbox{position:absolute;width:1px;height:1px;margin:0;padding:0;opacity:0;-ms-appearance:none;-moz-appearance:none;-webkit-appearance:none;appearance:none;border:none}.checkboxOutline{position:absolute;top:3px;left:0;-webkit-box-sizing:border-box;box-sizing:border-box;width:1.83em;height:1.83em;margin:0;overflow:hidden;border:2px solid currentcolor;-webkit-border-radius:.14em;border-radius:.14em;z-index:2;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.emby-checkbox-focushelper{position:absolute;top:-.915em;left:-.915em;width:3.66em;height:3.66em;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;margin:3px 0 0;-webkit-border-radius:50%;border-radius:50%;background-color:transparent}.checkboxIcon{font-size:1.6em;color:#fff}.checkboxIcon-checked{display:none}.emby-checkbox:checked+span+span+.checkboxOutline>.checkboxIcon-checked{display:-webkit-box!important;display:-webkit-flex!important;display:flex!important}.emby-checkbox:checked+span+span+.checkboxOutline>.checkboxIcon-unchecked{display:none!important}.emby-checkbox:checked[disabled]+span+span+.checkboxOutline>.checkboxIcon{background-color:rgba(0,0,0,.26)}.checkboxLabel{position:relative;margin:0}.checkboxList>.emby-checkbox-label{display:-webkit-box;display:-webkit-flex;display:flex;margin:.5em 0}.checkboxList-verticalwrap{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap}.checkboxList-verticalwrap>.emby-checkbox-label{display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;margin:.3em 0;width:12em}.checkboxList-paperList{padding:1em!important}.checkboxListLabel{margin-bottom:.25em}@-webkit-keyframes repaintChrome{from,to{padding:0}} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-checkbox/emby-checkbox.js b/dashboard-ui/bower_components/emby-webcomponents/emby-checkbox/emby-checkbox.js index ff09b30fd8..81a5286ed3 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/emby-checkbox/emby-checkbox.js +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-checkbox/emby-checkbox.js @@ -1 +1 @@ -define(["browser","dom","css!./emby-checkbox","registerElement"],function(browser,dom){"use strict";function onKeyDown(e){if(13===e.keyCode)return e.preventDefault(),this.checked=!this.checked,this.dispatchEvent(new CustomEvent("change",{bubbles:!0})),!1}function forceRefresh(loading){var elem=this.parentNode;elem.style.webkitAnimationName="repaintChrome",elem.style.webkitAnimationDelay=loading===!0?"500ms":"",elem.style.webkitAnimationDuration="10ms",elem.style.webkitAnimationIterationCount="1",setTimeout(function(){elem.style.webkitAnimationName=""},loading===!0?520:20)}var EmbyCheckboxPrototype=Object.create(HTMLInputElement.prototype),enableRefreshHack=!!(browser.tizen||browser.orsay||browser.operaTv||browser.web0s);EmbyCheckboxPrototype.attachedCallback=function(){if("true"!==this.getAttribute("data-embycheckbox")){this.setAttribute("data-embycheckbox","true"),this.classList.add("emby-checkbox");var labelElement=this.parentNode;labelElement.classList.add("emby-checkbox-label");var labelTextElement=labelElement.querySelector("span"),outlineClass="checkboxOutline",customClass=this.getAttribute("data-outlineclass");customClass&&(outlineClass+=" "+customClass),labelElement.insertAdjacentHTML("beforeend",''),labelTextElement.classList.add("checkboxLabel"),this.addEventListener("keydown",onKeyDown),enableRefreshHack&&(forceRefresh.call(this,!0),dom.addEventListener(this,"click",forceRefresh,{passive:!0}),dom.addEventListener(this,"blur",forceRefresh,{passive:!0}),dom.addEventListener(this,"focus",forceRefresh,{passive:!0}),dom.addEventListener(this,"change",forceRefresh,{passive:!0}))}},EmbyCheckboxPrototype.detachedCallback=function(){this.removeEventListener("keydown",onKeyDown),dom.removeEventListener(this,"click",forceRefresh,{passive:!0}),dom.removeEventListener(this,"blur",forceRefresh,{passive:!0}),dom.removeEventListener(this,"focus",forceRefresh,{passive:!0}),dom.removeEventListener(this,"change",forceRefresh,{passive:!0})},document.registerElement("emby-checkbox",{prototype:EmbyCheckboxPrototype,extends:"input"})}); \ No newline at end of file +define(["browser","dom","css!./emby-checkbox","registerElement"],function(browser,dom){"use strict";function onKeyDown(e){if(13===e.keyCode)return e.preventDefault(),this.checked=!this.checked,this.dispatchEvent(new CustomEvent("change",{bubbles:!0})),!1}function forceRefresh(loading){var elem=this.parentNode;elem.style.webkitAnimationName="repaintChrome",elem.style.webkitAnimationDelay=!0===loading?"500ms":"",elem.style.webkitAnimationDuration="10ms",elem.style.webkitAnimationIterationCount="1",setTimeout(function(){elem.style.webkitAnimationName=""},!0===loading?520:20)}var EmbyCheckboxPrototype=Object.create(HTMLInputElement.prototype),enableRefreshHack=!!(browser.tizen||browser.orsay||browser.operaTv||browser.web0s);EmbyCheckboxPrototype.attachedCallback=function(){if("true"!==this.getAttribute("data-embycheckbox")){this.setAttribute("data-embycheckbox","true"),this.classList.add("emby-checkbox");var labelElement=this.parentNode;labelElement.classList.add("emby-checkbox-label");var labelTextElement=labelElement.querySelector("span"),outlineClass="checkboxOutline",customClass=this.getAttribute("data-outlineclass");customClass&&(outlineClass+=" "+customClass);var checkedIcon=this.getAttribute("data-checkedicon")||"",uncheckedIcon=this.getAttribute("data-uncheckedicon")||"",checkHtml=''+checkedIcon+"",uncheckedHtml=''+uncheckedIcon+"";labelElement.insertAdjacentHTML("beforeend",''+checkHtml+uncheckedHtml+""),labelTextElement.classList.add("checkboxLabel"),this.addEventListener("keydown",onKeyDown),enableRefreshHack&&(forceRefresh.call(this,!0),dom.addEventListener(this,"click",forceRefresh,{passive:!0}),dom.addEventListener(this,"blur",forceRefresh,{passive:!0}),dom.addEventListener(this,"focus",forceRefresh,{passive:!0}),dom.addEventListener(this,"change",forceRefresh,{passive:!0}))}},EmbyCheckboxPrototype.detachedCallback=function(){this.removeEventListener("keydown",onKeyDown),dom.removeEventListener(this,"click",forceRefresh,{passive:!0}),dom.removeEventListener(this,"blur",forceRefresh,{passive:!0}),dom.removeEventListener(this,"focus",forceRefresh,{passive:!0}),dom.removeEventListener(this,"change",forceRefresh,{passive:!0})},document.registerElement("emby-checkbox",{prototype:EmbyCheckboxPrototype,extends:"input"})}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-collapse/emby-collapse.css b/dashboard-ui/bower_components/emby-webcomponents/emby-collapse/emby-collapse.css index 9026be9900..0c52278b7b 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/emby-collapse/emby-collapse.css +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-collapse/emby-collapse.css @@ -1 +1 @@ -.emby-collapse{margin:.5em 0}.collapseContent{border-width:0;padding:1.25em;height:0;-webkit-transition-property:height;-o-transition-property:height;transition-property:height;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s;overflow:hidden}.emby-collapsible-button{margin:0;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;width:100%;text-align:left;text-transform:none;border-width:0 0 1px;border-style:solid;padding-left:.1em;background:0 0;-webkit-box-shadow:none;box-shadow:none}.emby-collapse-expandIcon{-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transition:-webkit-transform 180ms ease-out;-o-transition:transform 180ms ease-out;transition:transform 180ms ease-out;position:absolute;right:.5em;font-size:1.5em}.emby-collapse-expandIconExpanded{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.emby-collapsible-title{margin:0;padding:0} \ No newline at end of file +.emby-collapse{margin:.5em 0}.collapseContent{border-width:0;padding:1.25em;height:0;-webkit-transition-property:height;-o-transition-property:height;transition-property:height;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s;overflow:hidden}.emby-collapsible-button{margin:0;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;width:100%;text-align:left;text-transform:none;border-width:0 0 .1em;border-style:solid;padding-left:.1em;background:0 0;-webkit-box-shadow:none;box-shadow:none}.emby-collapse-expandIcon{-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transition:-webkit-transform 180ms ease-out;-o-transition:transform 180ms ease-out;transition:transform 180ms ease-out;position:absolute;right:.5em;font-size:1.5em}.emby-collapse-expandIconExpanded{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.emby-collapsible-title{margin:0;padding:0} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-collapse/emby-collapse.js b/dashboard-ui/bower_components/emby-webcomponents/emby-collapse/emby-collapse.js index 39fed5e1e9..913f1d0797 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/emby-collapse/emby-collapse.js +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-collapse/emby-collapse.js @@ -1 +1 @@ -define(["browser","css!./emby-collapse","registerElement","emby-button"],function(browser){"use strict";function slideDownToShow(button,elem){elem.classList.remove("hide"),elem.classList.add("expanded"),elem.style.height="auto";var height=elem.offsetHeight+"px";elem.style.height="0";elem.offsetHeight;elem.style.height=height,setTimeout(function(){elem.classList.contains("expanded")?elem.classList.remove("hide"):elem.classList.add("hide"),elem.style.height="auto"},300);var icon=button.querySelector("i");icon.classList.add("emby-collapse-expandIconExpanded")}function slideUpToHide(button,elem){elem.style.height=elem.offsetHeight+"px";elem.offsetHeight;elem.classList.remove("expanded"),elem.style.height="0",setTimeout(function(){elem.classList.contains("expanded")?elem.classList.remove("hide"):elem.classList.add("hide")},300);var icon=button.querySelector("i");icon.classList.remove("emby-collapse-expandIconExpanded")}function onButtonClick(e){var button=this,collapseContent=button.parentNode.querySelector(".collapseContent");collapseContent.expanded?(collapseContent.expanded=!1,slideUpToHide(button,collapseContent)):(collapseContent.expanded=!0,slideDownToShow(button,collapseContent))}var EmbyButtonPrototype=Object.create(HTMLDivElement.prototype);EmbyButtonPrototype.attachedCallback=function(){if(!this.classList.contains("emby-collapse")){this.classList.add("emby-collapse");var collapseContent=this.querySelector(".collapseContent");collapseContent&&collapseContent.classList.add("hide");var title=this.getAttribute("title"),html='';this.insertAdjacentHTML("afterbegin",html);var button=this.querySelector(".emby-collapsible-button");button.addEventListener("click",onButtonClick),"true"===this.getAttribute("data-expanded")&&onButtonClick.call(button)}},document.registerElement("emby-collapse",{prototype:EmbyButtonPrototype,extends:"div"})}); \ No newline at end of file +define(["browser","css!./emby-collapse","registerElement","emby-button"],function(browser){"use strict";function slideDownToShow(button,elem){elem.classList.remove("hide"),elem.classList.add("expanded"),elem.style.height="auto";var height=elem.offsetHeight+"px";elem.style.height="0";elem.offsetHeight;elem.style.height=height,setTimeout(function(){elem.classList.contains("expanded")?elem.classList.remove("hide"):elem.classList.add("hide"),elem.style.height="auto"},300),button.querySelector("i").classList.add("emby-collapse-expandIconExpanded")}function slideUpToHide(button,elem){elem.style.height=elem.offsetHeight+"px";elem.offsetHeight;elem.classList.remove("expanded"),elem.style.height="0",setTimeout(function(){elem.classList.contains("expanded")?elem.classList.remove("hide"):elem.classList.add("hide")},300),button.querySelector("i").classList.remove("emby-collapse-expandIconExpanded")}function onButtonClick(e){var button=this,collapseContent=button.parentNode.querySelector(".collapseContent");collapseContent.expanded?(collapseContent.expanded=!1,slideUpToHide(button,collapseContent)):(collapseContent.expanded=!0,slideDownToShow(button,collapseContent))}var EmbyButtonPrototype=Object.create(HTMLDivElement.prototype);EmbyButtonPrototype.attachedCallback=function(){if(!this.classList.contains("emby-collapse")){this.classList.add("emby-collapse");var collapseContent=this.querySelector(".collapseContent");collapseContent&&collapseContent.classList.add("hide");var title=this.getAttribute("title"),html='';this.insertAdjacentHTML("afterbegin",html);var button=this.querySelector(".emby-collapsible-button");button.addEventListener("click",onButtonClick),"true"===this.getAttribute("data-expanded")&&onButtonClick.call(button)}},document.registerElement("emby-collapse",{prototype:EmbyButtonPrototype,extends:"div"})}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-connect/connecthelper.js b/dashboard-ui/bower_components/emby-webcomponents/emby-connect/connecthelper.js index cdf9edc8fc..2105bddcf4 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/emby-connect/connecthelper.js +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-connect/connecthelper.js @@ -1 +1 @@ -define(["globalize","apphost","loading","alert","emby-linkbutton"],function(globalize,appHost,loading,alert){"use strict";function resolvePromise(){return Promise.resolve()}function rejectPromise(){return Promise.reject()}function showNewUserInviteMessage(result){if(!result.IsNewUserInvitation&&!result.IsPending)return Promise.resolve();var message=result.IsNewUserInvitation?globalize.translate("sharedcomponents#MessageInvitationSentToNewUser",result.GuestDisplayName):globalize.translate("sharedcomponents#MessageInvitationSentToUser",result.GuestDisplayName);return alert({text:message,title:globalize.translate("sharedcomponents#HeaderInvitationSent")}).then(resolvePromise,resolvePromise)}function inviteGuest(options){var apiClient=options.apiClient;return loading.show(),apiClient.ajax({type:"POST",url:apiClient.getUrl("Connect/Invite"),dataType:"json",data:options.guestOptions||{}}).then(function(result){return loading.hide(),showNewUserInviteMessage(result)},function(response){loading.hide();var statusCode=response?response.status:0;return 502===statusCode?showConnectServerUnreachableErrorMessage().then(rejectPromise,rejectPromise):404===statusCode?alert({text:globalize.translate("sharedcomponents#GuestUserNotFound")}).then(rejectPromise,rejectPromise):(statusCode||0)>=500?alert({text:globalize.translate("sharedcomponents#ErrorReachingEmbyConnect")}).then(rejectPromise,rejectPromise):showGuestGeneralErrorMessage().then(rejectPromise,rejectPromise)})}function showGuestGeneralErrorMessage(){var html;appHost.supports("externallinks")&&(html=globalize.translate("sharedcomponents#ErrorAddingGuestAccount1",'https://emby.media/connect'),html+="

"+globalize.translate("sharedcomponents#ErrorAddingGuestAccount2","apps@emby.media"));var text=globalize.translate("sharedcomponents#ErrorAddingGuestAccount1","https://emby.media/connect");return text+="\n\n"+globalize.translate("sharedcomponents#ErrorAddingGuestAccount2","apps@emby.media"),alert({text:text,html:html})}function showConnectServerUnreachableErrorMessage(){var text=globalize.translate("sharedcomponents#ErrorConnectServerUnreachable","https://connect.emby.media");return alert({text:text})}function showLinkUserErrorMessage(username,statusCode){var html,text;return 502===statusCode?showConnectServerUnreachableErrorMessage():(username?(appHost.supports("externallinks")&&(html=globalize.translate("sharedcomponents#ErrorAddingEmbyConnectAccount1",'https://emby.media/connect'),html+="

"+globalize.translate("sharedcomponents#ErrorAddingEmbyConnectAccount2","apps@emby.media")),text=globalize.translate("sharedcomponents#ErrorAddingEmbyConnectAccount1","https://emby.media/connect"),text+="\n\n"+globalize.translate("sharedcomponents#ErrorAddingEmbyConnectAccount2","apps@emby.media")):html=text=globalize.translate("sharedcomponents#DefaultErrorMessage"),alert({text:text,html:html}))}function updateUserLink(apiClient,user,newConnectUsername){var currentConnectUsername=user.ConnectUserName||"",enteredConnectUsername=newConnectUsername,linkUrl=apiClient.getUrl("Users/"+user.Id+"/Connect/Link");return currentConnectUsername&&!enteredConnectUsername?apiClient.ajax({type:"DELETE",url:linkUrl}).then(function(){return alert({text:globalize.translate("sharedcomponents#MessageEmbyAccontRemoved"),title:globalize.translate("sharedcomponents#HeaderEmbyAccountRemoved")}).catch(resolvePromise)},function(response){var statusCode=response?response.status:0;return 502===statusCode?showConnectServerUnreachableErrorMessage().then(rejectPromise):alert({text:globalize.translate("sharedcomponents#ErrorRemovingEmbyConnectAccount")}).then(rejectPromise)}):currentConnectUsername!==enteredConnectUsername?apiClient.ajax({type:"POST",url:linkUrl,data:{ConnectUsername:enteredConnectUsername},dataType:"json"}).then(function(result){var msgKey=result.IsPending?"sharedcomponents#MessagePendingEmbyAccountAdded":"sharedcomponents#MessageEmbyAccountAdded";return alert({text:globalize.translate(msgKey),title:globalize.translate("sharedcomponents#HeaderEmbyAccountAdded")}).catch(resolvePromise)},function(response){var statusCode=response?response.status:0;return 502===statusCode?showConnectServerUnreachableErrorMessage().then(rejectPromise):showLinkUserErrorMessage(".",statusCode).then(rejectPromise)}):Promise.reject()}return{inviteGuest:inviteGuest,updateUserLink:updateUserLink,showLinkUserErrorMessage:showLinkUserErrorMessage,showConnectServerUnreachableErrorMessage:showConnectServerUnreachableErrorMessage}}); \ No newline at end of file +define(["globalize","apphost","loading","alert","emby-linkbutton"],function(globalize,appHost,loading,alert){"use strict";function resolvePromise(){return Promise.resolve()}function rejectPromise(){return Promise.reject()}function showNewUserInviteMessage(result){if(!result.IsNewUserInvitation&&!result.IsPending)return Promise.resolve();var message=result.IsNewUserInvitation?globalize.translate("sharedcomponents#MessageInvitationSentToNewUser",result.GuestDisplayName):globalize.translate("sharedcomponents#MessageInvitationSentToUser",result.GuestDisplayName);return alert({text:message,title:globalize.translate("sharedcomponents#HeaderInvitationSent")}).then(resolvePromise,resolvePromise)}function inviteGuest(options){var apiClient=options.apiClient;return loading.show(),apiClient.ajax({type:"POST",url:apiClient.getUrl("Connect/Invite"),dataType:"json",data:options.guestOptions||{}}).then(function(result){return loading.hide(),showNewUserInviteMessage(result)},function(response){loading.hide();var statusCode=response?response.status:0;return 502===statusCode?showConnectServerUnreachableErrorMessage().then(rejectPromise,rejectPromise):404===statusCode?alert({text:globalize.translate("sharedcomponents#GuestUserNotFound")}).then(rejectPromise,rejectPromise):(statusCode||0)>=500?alert({text:globalize.translate("sharedcomponents#ErrorReachingEmbyConnect")}).then(rejectPromise,rejectPromise):showGuestGeneralErrorMessage().then(rejectPromise,rejectPromise)})}function showGuestGeneralErrorMessage(){var html;appHost.supports("externallinks")&&(html=globalize.translate("sharedcomponents#ErrorAddingGuestAccount1",'https://emby.media/connect'),html+="

"+globalize.translate("sharedcomponents#ErrorAddingGuestAccount2","apps@emby.media"));var text=globalize.translate("sharedcomponents#ErrorAddingGuestAccount1","https://emby.media/connect");return text+="\n\n"+globalize.translate("sharedcomponents#ErrorAddingGuestAccount2","apps@emby.media"),alert({text:text,html:html})}function showConnectServerUnreachableErrorMessage(){var text=globalize.translate("sharedcomponents#ErrorConnectServerUnreachable","https://connect.emby.media");return alert({text:text})}function showLinkUserErrorMessage(username,statusCode){var html,text;return 502===statusCode?showConnectServerUnreachableErrorMessage():(username?(appHost.supports("externallinks")&&(html=globalize.translate("sharedcomponents#ErrorAddingEmbyConnectAccount1",'https://emby.media/connect'),html+="

"+globalize.translate("sharedcomponents#ErrorAddingEmbyConnectAccount2","apps@emby.media")),text=globalize.translate("sharedcomponents#ErrorAddingEmbyConnectAccount1","https://emby.media/connect"),text+="\n\n"+globalize.translate("sharedcomponents#ErrorAddingEmbyConnectAccount2","apps@emby.media")):html=text=globalize.translate("sharedcomponents#DefaultErrorMessage"),alert({text:text,html:html}))}function updateUserLink(apiClient,user,newConnectUsername){var currentConnectUsername=user.ConnectUserName||"",enteredConnectUsername=newConnectUsername,linkUrl=apiClient.getUrl("Users/"+user.Id+"/Connect/Link");return currentConnectUsername&&!enteredConnectUsername?apiClient.ajax({type:"DELETE",url:linkUrl}).then(function(){return alert({text:globalize.translate("sharedcomponents#MessageEmbyAccontRemoved"),title:globalize.translate("sharedcomponents#HeaderEmbyAccountRemoved")}).catch(resolvePromise)},function(response){return 502===(response?response.status:0)?showConnectServerUnreachableErrorMessage().then(rejectPromise):alert({text:globalize.translate("sharedcomponents#ErrorRemovingEmbyConnectAccount")}).then(rejectPromise)}):currentConnectUsername!==enteredConnectUsername?apiClient.ajax({type:"POST",url:linkUrl,data:{ConnectUsername:enteredConnectUsername},dataType:"json"}).then(function(result){var msgKey=result.IsPending?"sharedcomponents#MessagePendingEmbyAccountAdded":"sharedcomponents#MessageEmbyAccountAdded";return alert({text:globalize.translate(msgKey),title:globalize.translate("sharedcomponents#HeaderEmbyAccountAdded")}).catch(resolvePromise)},function(response){var statusCode=response?response.status:0;return 502===statusCode?showConnectServerUnreachableErrorMessage().then(rejectPromise):showLinkUserErrorMessage(".",statusCode).then(rejectPromise)}):Promise.reject()}return{inviteGuest:inviteGuest,updateUserLink:updateUserLink,showLinkUserErrorMessage:showLinkUserErrorMessage,showConnectServerUnreachableErrorMessage:showConnectServerUnreachableErrorMessage}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-input/emby-input.js b/dashboard-ui/bower_components/emby-webcomponents/emby-input/emby-input.js index fa5eaa7504..ea0fba310a 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/emby-input/emby-input.js +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-input/emby-input.js @@ -1 +1 @@ -define(["layoutManager","browser","dom","css!./emby-input","registerElement"],function(layoutManager,browser,dom){"use strict";function onChange(){var label=this.labelElement;if(this.value)label.classList.remove("inputLabel-float");else{var instanceSupportsFloat=supportsFloatingLabel&&"date"!==this.type&&"time"!==this.type;instanceSupportsFloat&&label.classList.add("inputLabel-float")}}var EmbyInputPrototype=Object.create(HTMLInputElement.prototype),inputId=0,supportsFloatingLabel=!1;if(Object.getOwnPropertyDescriptor&&Object.defineProperty){var descriptor=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,"value");if(descriptor&&descriptor.configurable){var baseSetMethod=descriptor.set;descriptor.set=function(value){baseSetMethod.call(this,value),this.dispatchEvent(new CustomEvent("valueset",{bubbles:!1,cancelable:!1}))},Object.defineProperty(HTMLInputElement.prototype,"value",descriptor),supportsFloatingLabel=!0}}EmbyInputPrototype.createdCallback=function(){if(this.id||(this.id="embyinput"+inputId,inputId++),!this.classList.contains("emby-input")){this.classList.add("emby-input");var parentNode=this.parentNode,document=this.ownerDocument,label=document.createElement("label");label.innerHTML=this.getAttribute("label")||"",label.classList.add("inputLabel"),label.classList.add("inputLabelUnfocused"),label.htmlFor=this.id,parentNode.insertBefore(label,this),this.labelElement=label,dom.addEventListener(this,"focus",function(){onChange.call(this),document.attachIME&&document.attachIME(this),label.classList.add("inputLabelFocused"),label.classList.remove("inputLabelUnfocused")},{passive:!0}),dom.addEventListener(this,"blur",function(){onChange.call(this),label.classList.remove("inputLabelFocused"),label.classList.add("inputLabelUnfocused")},{passive:!0}),dom.addEventListener(this,"change",onChange,{passive:!0}),dom.addEventListener(this,"input",onChange,{passive:!0}),dom.addEventListener(this,"valueset",onChange,{passive:!0})}},EmbyInputPrototype.attachedCallback=function(){this.labelElement.htmlFor=this.id,onChange.call(this)},EmbyInputPrototype.label=function(text){this.labelElement.innerHTML=text},document.registerElement("emby-input",{prototype:EmbyInputPrototype,extends:"input"})}); \ No newline at end of file +define(["layoutManager","browser","dom","css!./emby-input","registerElement"],function(layoutManager,browser,dom){"use strict";function onChange(){var label=this.labelElement;if(this.value)label.classList.remove("inputLabel-float");else{supportsFloatingLabel&&"date"!==this.type&&"time"!==this.type&&label.classList.add("inputLabel-float")}}var EmbyInputPrototype=Object.create(HTMLInputElement.prototype),inputId=0,supportsFloatingLabel=!1;if(Object.getOwnPropertyDescriptor&&Object.defineProperty){var descriptor=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,"value");if(descriptor&&descriptor.configurable){var baseSetMethod=descriptor.set;descriptor.set=function(value){baseSetMethod.call(this,value),this.dispatchEvent(new CustomEvent("valueset",{bubbles:!1,cancelable:!1}))},Object.defineProperty(HTMLInputElement.prototype,"value",descriptor),supportsFloatingLabel=!0}}EmbyInputPrototype.createdCallback=function(){if(this.id||(this.id="embyinput"+inputId,inputId++),!this.classList.contains("emby-input")){this.classList.add("emby-input");var parentNode=this.parentNode,document=this.ownerDocument,label=document.createElement("label");label.innerHTML=this.getAttribute("label")||"",label.classList.add("inputLabel"),label.classList.add("inputLabelUnfocused"),label.htmlFor=this.id,parentNode.insertBefore(label,this),this.labelElement=label,dom.addEventListener(this,"focus",function(){onChange.call(this),document.attachIME&&document.attachIME(this),label.classList.add("inputLabelFocused"),label.classList.remove("inputLabelUnfocused")},{passive:!0}),dom.addEventListener(this,"blur",function(){onChange.call(this),label.classList.remove("inputLabelFocused"),label.classList.add("inputLabelUnfocused")},{passive:!0}),dom.addEventListener(this,"change",onChange,{passive:!0}),dom.addEventListener(this,"input",onChange,{passive:!0}),dom.addEventListener(this,"valueset",onChange,{passive:!0}),browser.orsay&&this===document.activeElement&&document.attachIME&&document.attachIME(this)}},EmbyInputPrototype.attachedCallback=function(){this.labelElement.htmlFor=this.id,onChange.call(this)},EmbyInputPrototype.label=function(text){this.labelElement.innerHTML=text},document.registerElement("emby-input",{prototype:EmbyInputPrototype,extends:"input"})}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-itemscontainer/emby-itemscontainer.js b/dashboard-ui/bower_components/emby-webcomponents/emby-itemscontainer/emby-itemscontainer.js index e207d0abb3..d70bc69e96 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/emby-itemscontainer/emby-itemscontainer.js +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-itemscontainer/emby-itemscontainer.js @@ -1 +1 @@ -define(["itemShortcuts","connectionManager","playbackManager","imageLoader","layoutManager","browser","dom","loading","focusManager","serverNotifications","events","registerElement"],function(itemShortcuts,connectionManager,playbackManager,imageLoader,layoutManager,browser,dom,loading,focusManager,serverNotifications,events){"use strict";function onClick(e){var itemsContainer=this,multiSelect=(e.target,itemsContainer.multiSelect);multiSelect&&multiSelect.onContainerClick.call(itemsContainer,e)===!1||itemShortcuts.onClick.call(itemsContainer,e)}function disableEvent(e){return e.preventDefault(),e.stopPropagation(),!1}function onContextMenu(e){var itemsContainer=this,target=e.target,card=dom.parentWithAttribute(target,"data-id");if(card&&card.getAttribute("data-serverid"))return itemShortcuts.showContextMenu(card,{positionTo:target,itemsContainer:itemsContainer}),e.preventDefault(),e.stopPropagation(),!1}function getShortcutOptions(){return{click:!1}}function onDrop(evt,itemsContainer){var el=evt.item,newIndex=evt.newIndex,itemId=el.getAttribute("data-playlistitemid"),playlistId=el.getAttribute("data-playlistid");if(!playlistId){var oldIndex=evt.oldIndex;return void el.dispatchEvent(new CustomEvent("itemdrop",{detail:{oldIndex:oldIndex,newIndex:newIndex,playlistItemId:itemId},bubbles:!0,cancelable:!1}))}var serverId=el.getAttribute("data-serverid"),apiClient=connectionManager.getApiClient(serverId);newIndex=Math.max(0,newIndex-1),loading.show(),apiClient.ajax({url:apiClient.getUrl("Playlists/"+playlistId+"/Items/"+itemId+"/Move/"+newIndex),type:"POST"}).then(function(){loading.hide()},function(){loading.hide(),itemsContainer.refreshItems()})}function onUserDataChanged(e,apiClient,userData){var itemsContainer=this;require(["cardBuilder"],function(cardBuilder){cardBuilder.onUserDataChanged(userData,itemsContainer)});var eventsToMonitor=getEventsToMonitor(itemsContainer);eventsToMonitor.indexOf("markfavorite")!==-1?itemsContainer.notifyRefreshNeeded():eventsToMonitor.indexOf("markplayed")!==-1&&itemsContainer.notifyRefreshNeeded()}function getEventsToMonitor(itemsContainer){var monitor=itemsContainer.getAttribute("data-monitor");return monitor?monitor.split(","):[]}function onTimerCreated(e,apiClient,data){var itemsContainer=this;if(getEventsToMonitor(itemsContainer).indexOf("timers")!==-1)return void itemsContainer.notifyRefreshNeeded();var programId=data.ProgramId,newTimerId=data.Id;require(["cardBuilder"],function(cardBuilder){cardBuilder.onTimerCreated(programId,newTimerId,itemsContainer)})}function onSeriesTimerCreated(e,apiClient,data){var itemsContainer=this;if(getEventsToMonitor(itemsContainer).indexOf("seriestimers")!==-1)return void itemsContainer.notifyRefreshNeeded()}function onTimerCancelled(e,apiClient,data){var itemsContainer=this;if(getEventsToMonitor(itemsContainer).indexOf("timers")!==-1)return void itemsContainer.notifyRefreshNeeded();var id=data.Id;require(["cardBuilder"],function(cardBuilder){cardBuilder.onTimerCancelled(id,itemsContainer)})}function onSeriesTimerCancelled(e,apiClient,data){var itemsContainer=this;if(getEventsToMonitor(itemsContainer).indexOf("seriestimers")!==-1)return void itemsContainer.notifyRefreshNeeded();var id=data.Id;require(["cardBuilder"],function(cardBuilder){cardBuilder.onSeriesTimerCancelled(id,itemsContainer)})}function onLibraryChanged(e,apiClient,data){var itemsContainer=this,eventsToMonitor=getEventsToMonitor(itemsContainer);if(eventsToMonitor.indexOf("seriestimers")===-1&&eventsToMonitor.indexOf("timers")===-1){var itemsAdded=data.ItemsAdded||[],itemsRemoved=data.ItemsRemoved||[];if(itemsAdded.length||itemsRemoved.length){var parentId=itemsContainer.getAttribute("data-parentid");if(parentId){var foldersAddedTo=data.FoldersAddedTo||[],foldersRemovedFrom=data.FoldersRemovedFrom||[],collectionFolders=data.CollectionFolders||[];if(foldersAddedTo.indexOf(parentId)===-1&&foldersRemovedFrom.indexOf(parentId)===-1&&collectionFolders.indexOf(parentId)===-1)return}itemsContainer.notifyRefreshNeeded()}}}function onPlaybackStopped(e,stopInfo){var itemsContainer=this,state=stopInfo.state,eventsToMonitor=getEventsToMonitor(itemsContainer);if(state.NowPlayingItem&&"Video"===state.NowPlayingItem.MediaType){if(eventsToMonitor.indexOf("videoplayback")!==-1)return void itemsContainer.notifyRefreshNeeded(!0)}else if(state.NowPlayingItem&&"Audio"===state.NowPlayingItem.MediaType&&eventsToMonitor.indexOf("audioplayback")!==-1)return void itemsContainer.notifyRefreshNeeded(!0)}function addNotificationEvent(instance,name,handler,owner){var localHandler=handler.bind(instance);owner=owner||serverNotifications,events.on(owner,name,localHandler),instance["event_"+name]=localHandler}function removeNotificationEvent(instance,name,owner){var handler=instance["event_"+name];handler&&(owner=owner||serverNotifications,events.off(owner,name,handler),instance["event_"+name]=null)}function clearRefreshInterval(itemsContainer,isPausing){itemsContainer.refreshInterval&&(clearInterval(itemsContainer.refreshInterval),itemsContainer.refreshInterval=null,isPausing||(itemsContainer.refreshIntervalEndTime=null))}function resetRefreshInterval(itemsContainer,intervalMs){clearRefreshInterval(itemsContainer),intervalMs||(intervalMs=parseInt(itemsContainer.getAttribute("data-refreshinterval")||"0")),intervalMs&&(itemsContainer.refreshInterval=setInterval(itemsContainer.notifyRefreshNeeded.bind(itemsContainer),intervalMs),itemsContainer.refreshIntervalEndTime=(new Date).getTime()+intervalMs)}function onDataFetched(result){var items=result.Items||result,parentContainer=this.parentContainer;parentContainer&&(items.length?parentContainer.classList.remove("hide"):parentContainer.classList.add("hide"));var focusId,hasActiveElement,activeElement=document.activeElement;this.contains(activeElement)&&(hasActiveElement=!0,focusId=activeElement.getAttribute("data-id")),this.innerHTML=this.getItemsHtml(items),imageLoader.lazyChildren(this),loading.hide(),hasActiveElement&&setFocus(this,focusId),resetRefreshInterval(this),this.afterRefresh&&this.afterRefresh(result)}function setFocus(itemsContainer,focusId){if(focusId){var newElement=itemsContainer.querySelector('[data-id="'+focusId+'"]');if(newElement)try{return void focusManager.focus(newElement)}catch(err){}}focusManager.autoFocus(itemsContainer)}var ItemsContainerProtoType=Object.create(HTMLDivElement.prototype);ItemsContainerProtoType.enableHoverMenu=function(enabled){var current=this.hoverMenu;if(!enabled)return void(current&&(current.destroy(),this.hoverMenu=null));if(!current){var self=this;require(["itemHoverMenu"],function(ItemHoverMenu){self.hoverMenu=new ItemHoverMenu(self)})}},ItemsContainerProtoType.enableMultiSelect=function(enabled){var current=this.multiSelect;if(!enabled)return void(current&&(current.destroy(),this.multiSelect=null));if(!current){var self=this;require(["multiSelect"],function(MultiSelect){self.multiSelect=new MultiSelect({container:self,bindOnClick:!1})})}},ItemsContainerProtoType.enableDragReordering=function(enabled){var current=this.sortable;if(!enabled)return void(current&&(current.destroy(),this.sortable=null));if(!current){var self=this;require(["sortable"],function(Sortable){self.sortable=new Sortable(self,{draggable:".listItem",handle:".listViewDragHandle",onEnd:function(evt){return onDrop(evt,self)}})})}},ItemsContainerProtoType.createdCallback=function(){this.classList.add("itemsContainer")},ItemsContainerProtoType.attachedCallback=function(){this.addEventListener("click",onClick),browser.touch?this.addEventListener("contextmenu",disableEvent):"false"!==this.getAttribute("data-contextmenu")&&this.addEventListener("contextmenu",onContextMenu),layoutManager.desktop&&"false"!==this.getAttribute("data-hovermenu")&&this.enableHoverMenu(!0),(layoutManager.desktop||layoutManager.mobile)&&"false"!==this.getAttribute("data-multiselect")&&this.enableMultiSelect(!0),layoutManager.tv&&this.classList.add("itemsContainer-tv"),itemShortcuts.on(this,getShortcutOptions()),addNotificationEvent(this,"UserDataChanged",onUserDataChanged),addNotificationEvent(this,"TimerCreated",onTimerCreated),addNotificationEvent(this,"SeriesTimerCreated",onSeriesTimerCreated),addNotificationEvent(this,"TimerCancelled",onTimerCancelled),addNotificationEvent(this,"SeriesTimerCancelled",onSeriesTimerCancelled),addNotificationEvent(this,"LibraryChanged",onLibraryChanged),addNotificationEvent(this,"playbackstop",onPlaybackStopped,playbackManager),"true"===this.getAttribute("data-dragreorder")&&this.enableDragReordering(!0)},ItemsContainerProtoType.detachedCallback=function(){clearRefreshInterval(this),this.enableHoverMenu(!1),this.enableMultiSelect(!1),this.enableDragReordering(!1),this.removeEventListener("click",onClick),this.removeEventListener("contextmenu",onContextMenu),this.removeEventListener("contextmenu",disableEvent),itemShortcuts.off(this,getShortcutOptions()),removeNotificationEvent(this,"UserDataChanged"),removeNotificationEvent(this,"TimerCreated"),removeNotificationEvent(this,"SeriesTimerCreated"),removeNotificationEvent(this,"TimerCancelled"),removeNotificationEvent(this,"SeriesTimerCancelled"),removeNotificationEvent(this,"LibraryChanged"),removeNotificationEvent(this,"playbackstop",playbackManager)},ItemsContainerProtoType.pause=function(){clearRefreshInterval(this,!0),this.paused=!0},ItemsContainerProtoType.resume=function(options){this.paused=!1;var refreshIntervalEndTime=this.refreshIntervalEndTime;if(refreshIntervalEndTime){var remainingMs=refreshIntervalEndTime-(new Date).getTime();remainingMs>0&&!this.needsRefresh?resetRefreshInterval(this,remainingMs):(this.needsRefresh=!0,this.refreshIntervalEndTime=null)}return this.needsRefresh||options&&options.refresh?this.refreshItems():Promise.resolve()},ItemsContainerProtoType.refreshItems=function(){return this.fetchData?this.paused?(this.needsRefresh=!0,Promise.resolve()):(this.needsRefresh=!1,loading.show(),this.fetchData().then(onDataFetched.bind(this))):Promise.resolve()},ItemsContainerProtoType.notifyRefreshNeeded=function(isInForeground){if(this.paused)return void(this.needsRefresh=!0);var timeout=this.refreshTimeout;timeout&&clearTimeout(timeout),isInForeground===!0?this.refreshItems():this.refreshTimeout=setTimeout(this.refreshItems.bind(this),1e4)},document.registerElement("emby-itemscontainer",{prototype:ItemsContainerProtoType,extends:"div"})}); \ No newline at end of file +define(["itemShortcuts","inputManager","connectionManager","playbackManager","imageLoader","layoutManager","browser","dom","loading","focusManager","serverNotifications","events","registerElement"],function(itemShortcuts,inputManager,connectionManager,playbackManager,imageLoader,layoutManager,browser,dom,loading,focusManager,serverNotifications,events){"use strict";function onClick(e){var itemsContainer=this,multiSelect=(e.target,itemsContainer.multiSelect);multiSelect&&!1===multiSelect.onContainerClick.call(itemsContainer,e)||itemShortcuts.onClick.call(itemsContainer,e)}function disableEvent(e){return e.preventDefault(),e.stopPropagation(),!1}function onContextMenu(e){var target=e.target,card=dom.parentWithAttribute(target,"data-id");if(card&&card.getAttribute("data-serverid"))return inputManager.trigger("menu",{sourceElement:card}),e.preventDefault(),e.stopPropagation(),!1}function getShortcutOptions(){return{click:!1}}function onDrop(evt,itemsContainer){var el=evt.item,newIndex=evt.newIndex,itemId=el.getAttribute("data-playlistitemid"),playlistId=el.getAttribute("data-playlistid");if(!playlistId){var oldIndex=evt.oldIndex;return void el.dispatchEvent(new CustomEvent("itemdrop",{detail:{oldIndex:oldIndex,newIndex:newIndex,playlistItemId:itemId},bubbles:!0,cancelable:!1}))}var serverId=el.getAttribute("data-serverid"),apiClient=connectionManager.getApiClient(serverId);loading.show(),apiClient.ajax({url:apiClient.getUrl("Playlists/"+playlistId+"/Items/"+itemId+"/Move/"+newIndex),type:"POST"}).then(function(){loading.hide()},function(){loading.hide(),itemsContainer.refreshItems()})}function onUserDataChanged(e,apiClient,userData){var itemsContainer=this;require(["cardBuilder"],function(cardBuilder){cardBuilder.onUserDataChanged(userData,itemsContainer)});var eventsToMonitor=getEventsToMonitor(itemsContainer);-1!==eventsToMonitor.indexOf("markfavorite")?itemsContainer.notifyRefreshNeeded():-1!==eventsToMonitor.indexOf("markplayed")&&itemsContainer.notifyRefreshNeeded()}function getEventsToMonitor(itemsContainer){var monitor=itemsContainer.getAttribute("data-monitor");return monitor?monitor.split(","):[]}function onTimerCreated(e,apiClient,data){var itemsContainer=this;if(-1!==getEventsToMonitor(itemsContainer).indexOf("timers"))return void itemsContainer.notifyRefreshNeeded();var programId=data.ProgramId,newTimerId=data.Id;require(["cardBuilder"],function(cardBuilder){cardBuilder.onTimerCreated(programId,newTimerId,itemsContainer)})}function onSeriesTimerCreated(e,apiClient,data){var itemsContainer=this;if(-1!==getEventsToMonitor(itemsContainer).indexOf("seriestimers"))return void itemsContainer.notifyRefreshNeeded()}function onTimerCancelled(e,apiClient,data){var itemsContainer=this;if(-1!==getEventsToMonitor(itemsContainer).indexOf("timers"))return void itemsContainer.notifyRefreshNeeded();var id=data.Id;require(["cardBuilder"],function(cardBuilder){cardBuilder.onTimerCancelled(id,itemsContainer)})}function onSeriesTimerCancelled(e,apiClient,data){var itemsContainer=this;if(-1!==getEventsToMonitor(itemsContainer).indexOf("seriestimers"))return void itemsContainer.notifyRefreshNeeded();var id=data.Id;require(["cardBuilder"],function(cardBuilder){cardBuilder.onSeriesTimerCancelled(id,itemsContainer)})}function onLibraryChanged(e,apiClient,data){var itemsContainer=this,eventsToMonitor=getEventsToMonitor(itemsContainer);if(-1===eventsToMonitor.indexOf("seriestimers")&&-1===eventsToMonitor.indexOf("timers")){var itemsAdded=data.ItemsAdded||[],itemsRemoved=data.ItemsRemoved||[];if(itemsAdded.length||itemsRemoved.length){var parentId=itemsContainer.getAttribute("data-parentid");if(parentId){var foldersAddedTo=data.FoldersAddedTo||[],foldersRemovedFrom=data.FoldersRemovedFrom||[],collectionFolders=data.CollectionFolders||[];if(-1===foldersAddedTo.indexOf(parentId)&&-1===foldersRemovedFrom.indexOf(parentId)&&-1===collectionFolders.indexOf(parentId))return}itemsContainer.notifyRefreshNeeded()}}}function onPlaybackStopped(e,stopInfo){var itemsContainer=this,state=stopInfo.state,eventsToMonitor=getEventsToMonitor(itemsContainer);if(state.NowPlayingItem&&"Video"===state.NowPlayingItem.MediaType){if(-1!==eventsToMonitor.indexOf("videoplayback"))return void itemsContainer.notifyRefreshNeeded(!0)}else if(state.NowPlayingItem&&"Audio"===state.NowPlayingItem.MediaType&&-1!==eventsToMonitor.indexOf("audioplayback"))return void itemsContainer.notifyRefreshNeeded(!0)}function addNotificationEvent(instance,name,handler,owner){var localHandler=handler.bind(instance);owner=owner||serverNotifications,events.on(owner,name,localHandler),instance["event_"+name]=localHandler}function removeNotificationEvent(instance,name,owner){var handler=instance["event_"+name];handler&&(owner=owner||serverNotifications,events.off(owner,name,handler),instance["event_"+name]=null)}function clearRefreshInterval(itemsContainer,isPausing){itemsContainer.refreshInterval&&(clearInterval(itemsContainer.refreshInterval),itemsContainer.refreshInterval=null,isPausing||(itemsContainer.refreshIntervalEndTime=null))}function resetRefreshInterval(itemsContainer,intervalMs){clearRefreshInterval(itemsContainer),intervalMs||(intervalMs=parseInt(itemsContainer.getAttribute("data-refreshinterval")||"0")),intervalMs&&(itemsContainer.refreshInterval=setInterval(itemsContainer.notifyRefreshNeeded.bind(itemsContainer),intervalMs),itemsContainer.refreshIntervalEndTime=(new Date).getTime()+intervalMs)}function onDataFetched(result){var items=result.Items||result,parentContainer=this.parentContainer;parentContainer&&(items.length?parentContainer.classList.remove("hide"):parentContainer.classList.add("hide"));var focusId,hasActiveElement,activeElement=document.activeElement;this.contains(activeElement)&&(hasActiveElement=!0,focusId=activeElement.getAttribute("data-id")),this.innerHTML=this.getItemsHtml(items),imageLoader.lazyChildren(this),hasActiveElement&&setFocus(this,focusId),resetRefreshInterval(this),this.afterRefresh&&this.afterRefresh(result)}function setFocus(itemsContainer,focusId){if(focusId){var newElement=itemsContainer.querySelector('[data-id="'+focusId+'"]');if(newElement)try{return void focusManager.focus(newElement)}catch(err){}}focusManager.autoFocus(itemsContainer)}var ItemsContainerProtoType=Object.create(HTMLDivElement.prototype);ItemsContainerProtoType.enableMultiSelect=function(enabled){var current=this.multiSelect;if(!enabled)return void(current&&(current.destroy(),this.multiSelect=null));if(!current){var self=this;require(["multiSelect"],function(MultiSelect){self.multiSelect=new MultiSelect({container:self,bindOnClick:!1})})}},ItemsContainerProtoType.enableDragReordering=function(enabled){var current=this.sortable;if(!enabled)return void(current&&(current.destroy(),this.sortable=null));if(!current){var self=this;require(["sortable"],function(Sortable){self.sortable=new Sortable(self,{draggable:".listItem",handle:".listViewDragHandle",onEnd:function(evt){return onDrop(evt,self)}})})}},ItemsContainerProtoType.createdCallback=function(){this.classList.add("itemsContainer")},ItemsContainerProtoType.attachedCallback=function(){this.addEventListener("click",onClick),browser.touch?this.addEventListener("contextmenu",disableEvent):"false"!==this.getAttribute("data-contextmenu")&&this.addEventListener("contextmenu",onContextMenu),(layoutManager.desktop||layoutManager.mobile)&&"false"!==this.getAttribute("data-multiselect")&&this.enableMultiSelect(!0),layoutManager.tv&&this.classList.add("itemsContainer-tv"),itemShortcuts.on(this,getShortcutOptions()),addNotificationEvent(this,"UserDataChanged",onUserDataChanged),addNotificationEvent(this,"TimerCreated",onTimerCreated),addNotificationEvent(this,"SeriesTimerCreated",onSeriesTimerCreated),addNotificationEvent(this,"TimerCancelled",onTimerCancelled),addNotificationEvent(this,"SeriesTimerCancelled",onSeriesTimerCancelled),addNotificationEvent(this,"LibraryChanged",onLibraryChanged),addNotificationEvent(this,"playbackstop",onPlaybackStopped,playbackManager),"true"===this.getAttribute("data-dragreorder")&&this.enableDragReordering(!0)},ItemsContainerProtoType.detachedCallback=function(){clearRefreshInterval(this),this.enableMultiSelect(!1),this.enableDragReordering(!1),this.removeEventListener("click",onClick),this.removeEventListener("contextmenu",onContextMenu),this.removeEventListener("contextmenu",disableEvent),itemShortcuts.off(this,getShortcutOptions()),removeNotificationEvent(this,"UserDataChanged"),removeNotificationEvent(this,"TimerCreated"),removeNotificationEvent(this,"SeriesTimerCreated"),removeNotificationEvent(this,"TimerCancelled"),removeNotificationEvent(this,"SeriesTimerCancelled"),removeNotificationEvent(this,"LibraryChanged"),removeNotificationEvent(this,"playbackstop",playbackManager),this.fetchData=null,this.getItemsHtml=null,this.parentContainer=null},ItemsContainerProtoType.pause=function(){clearRefreshInterval(this,!0),this.paused=!0},ItemsContainerProtoType.resume=function(options){this.paused=!1;var refreshIntervalEndTime=this.refreshIntervalEndTime;if(refreshIntervalEndTime){var remainingMs=refreshIntervalEndTime-(new Date).getTime();remainingMs>0&&!this.needsRefresh?resetRefreshInterval(this,remainingMs):(this.needsRefresh=!0,this.refreshIntervalEndTime=null)}return this.needsRefresh||options&&options.refresh?this.refreshItems():Promise.resolve()},ItemsContainerProtoType.refreshItems=function(){return this.fetchData?this.paused?(this.needsRefresh=!0,Promise.resolve()):(this.needsRefresh=!1,this.fetchData().then(onDataFetched.bind(this))):Promise.resolve()},ItemsContainerProtoType.notifyRefreshNeeded=function(isInForeground){if(this.paused)return void(this.needsRefresh=!0);var timeout=this.refreshTimeout;timeout&&clearTimeout(timeout),!0===isInForeground?this.refreshItems():this.refreshTimeout=setTimeout(this.refreshItems.bind(this),1e4)},document.registerElement("emby-itemscontainer",{prototype:ItemsContainerProtoType,extends:"div"})}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-progressring/emby-progressring.js b/dashboard-ui/bower_components/emby-webcomponents/emby-progressring/emby-progressring.js index 75f995c9d2..1db2139085 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/emby-progressring/emby-progressring.js +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-progressring/emby-progressring.js @@ -1 +1 @@ -define(["require","css!./emby-progressring","registerElement"],function(require){"use strict";var EmbyProgressRing=Object.create(HTMLDivElement.prototype);return EmbyProgressRing.createdCallback=function(){this.classList.add("progressring");var instance=this;require(["text!./emby-progressring.template.html"],function(template){instance.innerHTML=template,instance.setProgress(parseFloat(instance.getAttribute("data-progress")||"0"))})},EmbyProgressRing.setProgress=function(progress){progress=Math.floor(progress);var angle;progress<25?(angle=-90+progress/100*360,this.querySelector(".animate-0-25-b").style.transform="rotate("+angle+"deg)",this.querySelector(".animate-25-50-b").style.transform="rotate(-90deg)",this.querySelector(".animate-50-75-b").style.transform="rotate(-90deg)",this.querySelector(".animate-75-100-b").style.transform="rotate(-90deg)"):progress>=25&&progress<50?(angle=-90+(progress-25)/100*360,this.querySelector(".animate-0-25-b").style.transform="none",this.querySelector(".animate-25-50-b").style.transform="rotate("+angle+"deg)",this.querySelector(".animate-50-75-b").style.transform="rotate(-90deg)",this.querySelector(".animate-75-100-b").style.transform="rotate(-90deg)"):progress>=50&&progress<75?(angle=-90+(progress-50)/100*360,this.querySelector(".animate-0-25-b").style.transform="none",this.querySelector(".animate-25-50-b").style.transform="none",this.querySelector(".animate-50-75-b").style.transform="rotate("+angle+"deg)",this.querySelector(".animate-75-100-b").style.transform="rotate(-90deg)"):progress>=75&&progress<=100&&(angle=-90+(progress-75)/100*360,this.querySelector(".animate-0-25-b").style.transform="none",this.querySelector(".animate-25-50-b").style.transform="none",this.querySelector(".animate-50-75-b").style.transform="none",this.querySelector(".animate-75-100-b").style.transform="rotate("+angle+"deg)"),this.querySelector(".progressring-text").innerHTML=progress+"%"},EmbyProgressRing.attachedCallback=function(){},EmbyProgressRing.detachedCallback=function(){var observer=this.observer;observer&&(observer.disconnect(),this.observer=null)},document.registerElement("emby-progressring",{prototype:EmbyProgressRing,extends:"div"}),EmbyProgressRing}); \ No newline at end of file +define(["require","css!./emby-progressring","registerElement"],function(require){"use strict";var EmbyProgressRing=Object.create(HTMLDivElement.prototype);return EmbyProgressRing.createdCallback=function(){this.classList.add("progressring");var instance=this;require(["text!./emby-progressring.template.html"],function(template){instance.innerHTML=template,instance.setProgress(parseFloat(instance.getAttribute("data-progress")||"0"))})},EmbyProgressRing.setProgress=function(progress){progress=Math.floor(progress);var angle;progress<25?(angle=progress/100*360-90,this.querySelector(".animate-0-25-b").style.transform="rotate("+angle+"deg)",this.querySelector(".animate-25-50-b").style.transform="rotate(-90deg)",this.querySelector(".animate-50-75-b").style.transform="rotate(-90deg)",this.querySelector(".animate-75-100-b").style.transform="rotate(-90deg)"):progress>=25&&progress<50?(angle=(progress-25)/100*360-90,this.querySelector(".animate-0-25-b").style.transform="none",this.querySelector(".animate-25-50-b").style.transform="rotate("+angle+"deg)",this.querySelector(".animate-50-75-b").style.transform="rotate(-90deg)",this.querySelector(".animate-75-100-b").style.transform="rotate(-90deg)"):progress>=50&&progress<75?(angle=(progress-50)/100*360-90,this.querySelector(".animate-0-25-b").style.transform="none",this.querySelector(".animate-25-50-b").style.transform="none",this.querySelector(".animate-50-75-b").style.transform="rotate("+angle+"deg)",this.querySelector(".animate-75-100-b").style.transform="rotate(-90deg)"):progress>=75&&progress<=100&&(angle=(progress-75)/100*360-90,this.querySelector(".animate-0-25-b").style.transform="none",this.querySelector(".animate-25-50-b").style.transform="none",this.querySelector(".animate-50-75-b").style.transform="none",this.querySelector(".animate-75-100-b").style.transform="rotate("+angle+"deg)"),this.querySelector(".progressring-text").innerHTML=progress+"%"},EmbyProgressRing.attachedCallback=function(){},EmbyProgressRing.detachedCallback=function(){var observer=this.observer;observer&&(observer.disconnect(),this.observer=null)},document.registerElement("emby-progressring",{prototype:EmbyProgressRing,extends:"div"}),EmbyProgressRing}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-scrollbuttons/emby-scrollbuttons.js b/dashboard-ui/bower_components/emby-webcomponents/emby-scrollbuttons/emby-scrollbuttons.js index f961238f92..2fabc5df06 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/emby-scrollbuttons/emby-scrollbuttons.js +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-scrollbuttons/emby-scrollbuttons.js @@ -1 +1 @@ -define(["layoutManager","dom","css!./emby-scrollbuttons","registerElement","paper-icon-button-light"],function(layoutManager,dom){"use strict";function getScrollButtonContainerHtml(direction){var html="",hide="left"===direction?" hide":"";html+='
';var icon="left"===direction?"":"";return html+='",html+="
"}function getScrollPosition(parent){return parent.getScrollPosition?parent.getScrollPosition():0}function getScrollWidth(parent){return parent.getScrollSize?parent.getScrollSize():0}function onScrolledToPosition(scrollButtons,pos,scrollWidth){pos>0?scrollButtons.scrollButtonsLeft.classList.remove("hide"):scrollButtons.scrollButtonsLeft.classList.add("hide"),scrollWidth>0&&(pos+=scrollButtons.offsetWidth,pos>=scrollWidth?scrollButtons.scrollButtonsRight.classList.add("hide"):scrollButtons.scrollButtonsRight.classList.remove("hide"))}function onScroll(e){var scrollButtons=this,scroller=this.scroller,pos=getScrollPosition(scroller),scrollWidth=getScrollWidth(scroller);onScrolledToPosition(scrollButtons,pos,scrollWidth)}function getStyleValue(style,name){var value=style.getPropertyValue(name);return value&&(value=value.replace("px",""))?(value=parseInt(value),isNaN(value)?0:value):0}function getScrollSize(elem){var scrollSize=elem.offsetWidth,style=window.getComputedStyle(elem,null),paddingLeft=getStyleValue(style,"padding-left");paddingLeft&&(scrollSize-=paddingLeft);var paddingRight=getStyleValue(style,"padding-right");paddingRight&&(scrollSize-=paddingRight);var slider=elem.getScrollSlider();return style=window.getComputedStyle(slider,null),paddingLeft=getStyleValue(style,"padding-left"),paddingLeft&&(scrollSize-=paddingLeft),paddingRight=getStyleValue(style,"padding-right"),paddingRight&&(scrollSize-=paddingRight),scrollSize}function onScrollButtonClick(e){var newPos,parent=dom.parentWithAttribute(this,"is","emby-scroller"),direction=this.getAttribute("data-direction"),scrollSize=getScrollSize(parent),pos=getScrollPosition(parent);newPos="left"===direction?Math.max(0,pos-scrollSize):pos+scrollSize,parent.scrollToPosition(newPos,!1)}var EmbyScrollButtonsPrototype=Object.create(HTMLDivElement.prototype);EmbyScrollButtonsPrototype.createdCallback=function(){},EmbyScrollButtonsPrototype.attachedCallback=function(){var parent=dom.parentWithAttribute(this,"is","emby-scroller");this.scroller=parent,parent.classList.add("emby-scrollbuttons-scroller"),this.innerHTML=getScrollButtonContainerHtml("left")+getScrollButtonContainerHtml("right");var scrollHandler=onScroll.bind(this);this.scrollHandler=scrollHandler;var buttons=this.querySelectorAll(".emby-scrollbuttons-scrollbutton");buttons[0].addEventListener("click",onScrollButtonClick),buttons[1].addEventListener("click",onScrollButtonClick),buttons=this.querySelectorAll(".scrollbuttoncontainer"),this.scrollButtonsLeft=buttons[0],this.scrollButtonsRight=buttons[1],parent.addScrollEventListener(scrollHandler,{capture:!1,passive:!0})},EmbyScrollButtonsPrototype.detachedCallback=function(){var parent=this.scroller;this.scroller=null;var scrollHandler=this.scrollHandler;parent&&scrollHandler&&parent.removeScrollEventListener(scrollHandler,{capture:!1,passive:!0}),this.scrollHandler=null,this.scrollButtonsLeft=null,this.scrollButtonsRight=null},document.registerElement("emby-scrollbuttons",{prototype:EmbyScrollButtonsPrototype,extends:"div"})}); \ No newline at end of file +define(["layoutManager","dom","css!./emby-scrollbuttons","registerElement","paper-icon-button-light"],function(layoutManager,dom){"use strict";function getScrollButtonContainerHtml(direction){var html="";html+='
';var icon="left"===direction?"":"";return html+='",html+="
"}function getScrollPosition(parent){return parent.getScrollPosition?parent.getScrollPosition():0}function getScrollWidth(parent){return parent.getScrollSize?parent.getScrollSize():0}function onScrolledToPosition(scrollButtons,pos,scrollWidth){pos>0?scrollButtons.scrollButtonsLeft.classList.remove("hide"):scrollButtons.scrollButtonsLeft.classList.add("hide"),scrollWidth>0&&(pos+=scrollButtons.offsetWidth,pos>=scrollWidth?scrollButtons.scrollButtonsRight.classList.add("hide"):scrollButtons.scrollButtonsRight.classList.remove("hide"))}function onScroll(e){var scrollButtons=this,scroller=this.scroller;onScrolledToPosition(scrollButtons,getScrollPosition(scroller),getScrollWidth(scroller))}function getStyleValue(style,name){var value=style.getPropertyValue(name);return value&&(value=value.replace("px",""))?(value=parseInt(value),isNaN(value)?0:value):0}function getScrollSize(elem){var scrollSize=elem.offsetWidth,style=window.getComputedStyle(elem,null),paddingLeft=getStyleValue(style,"padding-left");paddingLeft&&(scrollSize-=paddingLeft);var paddingRight=getStyleValue(style,"padding-right");paddingRight&&(scrollSize-=paddingRight);var slider=elem.getScrollSlider();return style=window.getComputedStyle(slider,null),paddingLeft=getStyleValue(style,"padding-left"),paddingLeft&&(scrollSize-=paddingLeft),paddingRight=getStyleValue(style,"padding-right"),paddingRight&&(scrollSize-=paddingRight),scrollSize}function onScrollButtonClick(e){var newPos,parent=dom.parentWithAttribute(this,"is","emby-scroller"),direction=this.getAttribute("data-direction"),scrollSize=getScrollSize(parent),pos=getScrollPosition(parent);newPos="left"===direction?Math.max(0,pos-scrollSize):pos+scrollSize,parent.scrollToPosition(newPos,!1)}var EmbyScrollButtonsPrototype=Object.create(HTMLDivElement.prototype);EmbyScrollButtonsPrototype.createdCallback=function(){},EmbyScrollButtonsPrototype.attachedCallback=function(){var parent=dom.parentWithAttribute(this,"is","emby-scroller");this.scroller=parent,parent.classList.add("emby-scrollbuttons-scroller"),this.innerHTML=getScrollButtonContainerHtml("left")+getScrollButtonContainerHtml("right");var scrollHandler=onScroll.bind(this);this.scrollHandler=scrollHandler;var buttons=this.querySelectorAll(".emby-scrollbuttons-scrollbutton");buttons[0].addEventListener("click",onScrollButtonClick),buttons[1].addEventListener("click",onScrollButtonClick),buttons=this.querySelectorAll(".scrollbuttoncontainer"),this.scrollButtonsLeft=buttons[0],this.scrollButtonsRight=buttons[1],parent.addScrollEventListener(scrollHandler,{capture:!1,passive:!0})},EmbyScrollButtonsPrototype.detachedCallback=function(){var parent=this.scroller;this.scroller=null;var scrollHandler=this.scrollHandler;parent&&scrollHandler&&parent.removeScrollEventListener(scrollHandler,{capture:!1,passive:!0}),this.scrollHandler=null,this.scrollButtonsLeft=null,this.scrollButtonsRight=null},document.registerElement("emby-scrollbuttons",{prototype:EmbyScrollButtonsPrototype,extends:"div"})}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-scroller/emby-scroller.js b/dashboard-ui/bower_components/emby-webcomponents/emby-scroller/emby-scroller.js index c981532062..e965c0bd99 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/emby-scroller/emby-scroller.js +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-scroller/emby-scroller.js @@ -1 +1 @@ -define(["scroller","dom","layoutManager","inputManager","focusManager","browser","registerElement"],function(scroller,dom,layoutManager,inputManager,focusManager,browser){"use strict";function initCenterFocus(elem,scrollerInstance){dom.addEventListener(elem,"focus",function(e){var focused=focusManager.focusableParent(e.target);focused&&scrollerInstance.toCenter(focused)},{capture:!0,passive:!0})}function onInputCommand(e){var cmd=e.detail.command;"home"===cmd?(focusManager.focusFirst(this,"."+this.getAttribute("data-navcommands")),e.preventDefault(),e.stopPropagation()):"end"===cmd?(focusManager.focusLast(this,"."+this.getAttribute("data-navcommands")),e.preventDefault(),e.stopPropagation()):"pageup"===cmd?(focusManager.moveFocus(e.target,this,"."+this.getAttribute("data-navcommands"),-12),e.preventDefault(),e.stopPropagation()):"pagedown"===cmd&&(focusManager.moveFocus(e.target,this,"."+this.getAttribute("data-navcommands"),12),e.preventDefault(),e.stopPropagation())}function initHeadroom(elem){require(["headroom"],function(Headroom){var headroom=new Headroom([],{scroller:elem});headroom.init(),headroom.add(document.querySelector(".skinHeader")),elem.headroom=headroom})}function loadScrollButtons(scroller){require(["emby-scrollbuttons"],function(){scroller.insertAdjacentHTML("beforeend",'
')})}var ScrollerProtoType=Object.create(HTMLDivElement.prototype);ScrollerProtoType.createdCallback=function(){this.classList.add("emby-scroller")},ScrollerProtoType.scrollToBeginning=function(){this.scroller&&this.scroller.slideTo(0,!0)},ScrollerProtoType.toStart=function(elem,immediate){this.scroller&&this.scroller.toStart(elem,immediate)},ScrollerProtoType.toCenter=function(elem,immediate){this.scroller&&this.scroller.toCenter(elem,immediate)},ScrollerProtoType.scrollToPosition=function(pos,immediate){this.scroller&&this.scroller.slideTo(pos,immediate)},ScrollerProtoType.getScrollPosition=function(){if(this.scroller)return this.scroller.getScrollPosition()},ScrollerProtoType.getScrollSize=function(){if(this.scroller)return this.scroller.getScrollSize()},ScrollerProtoType.getScrollEventName=function(){if(this.scroller)return this.scroller.getScrollEventName()},ScrollerProtoType.getScrollSlider=function(){if(this.scroller)return this.scroller.getScrollSlider()},ScrollerProtoType.addScrollEventListener=function(fn,options){this.scroller&&dom.addEventListener(this.scroller.getScrollFrame(),this.scroller.getScrollEventName(),fn,options)},ScrollerProtoType.removeScrollEventListener=function(fn,options){this.scroller&&dom.removeEventListener(this.scroller.getScrollFrame(),this.scroller.getScrollEventName(),fn,options)},ScrollerProtoType.attachedCallback=function(){this.getAttribute("data-navcommands")&&inputManager.on(this,onInputCommand);var horizontal="false"!==this.getAttribute("data-horizontal"),slider=this.querySelector(".scrollSlider");horizontal&&(slider.style["white-space"]="nowrap");var bindHeader="true"===this.getAttribute("data-bindheader"),scrollFrame=this,enableScrollButtons=layoutManager.desktop&&horizontal&&"false"!==this.getAttribute("data-scrollbuttons"),options={horizontal:horizontal,mouseDragging:1,mouseWheel:"false"!==this.getAttribute("data-mousewheel"),touchDragging:1,slidee:slider,scrollBy:200,speed:horizontal?270:240,elasticBounds:1,dragHandle:1,scrollWidth:"auto"===this.getAttribute("data-scrollsize")?null:5e6,autoImmediate:!0,skipSlideToWhenVisible:"true"===this.getAttribute("data-skipfocuswhenvisible"),dispatchScrollEvent:enableScrollButtons||bindHeader||"true"===this.getAttribute("data-scrollevent"),hideScrollbar:enableScrollButtons||"true"===this.getAttribute("data-hidescrollbar"),allowNativeSmoothScroll:"true"===this.getAttribute("data-allownativesmoothscroll")&&!enableScrollButtons,allowNativeScroll:!enableScrollButtons,forceHideScrollbars:enableScrollButtons,requireAnimation:enableScrollButtons&&browser.edge};this.scroller=new scroller(scrollFrame,options),this.scroller.init(),layoutManager.tv&&this.getAttribute("data-centerfocus")&&initCenterFocus(this,this.scroller),bindHeader&&initHeadroom(this),enableScrollButtons&&loadScrollButtons(this)},ScrollerProtoType.pause=function(){var headroom=this.headroom;headroom&&headroom.pause()},ScrollerProtoType.resume=function(){var headroom=this.headroom;headroom&&headroom.resume()},ScrollerProtoType.detachedCallback=function(){this.getAttribute("data-navcommands")&&inputManager.off(this,onInputCommand);var headroom=this.headroom;headroom&&(headroom.destroy(),this.headroom=null);var scrollerInstance=this.scroller;scrollerInstance&&(scrollerInstance.destroy(),this.scroller=null)},document.registerElement("emby-scroller",{prototype:ScrollerProtoType,extends:"div"})}); \ No newline at end of file +define(["scroller","dom","layoutManager","inputManager","focusManager","browser","registerElement"],function(scroller,dom,layoutManager,inputManager,focusManager,browser){"use strict";function initCenterFocus(elem,scrollerInstance){dom.addEventListener(elem,"focus",function(e){var focused=focusManager.focusableParent(e.target);focused&&scrollerInstance.toCenter(focused)},{capture:!0,passive:!0})}function onInputCommand(e){var cmd=e.detail.command;"end"===cmd?(focusManager.focusLast(this,"."+this.getAttribute("data-navcommands")),e.preventDefault(),e.stopPropagation()):"pageup"===cmd?(focusManager.moveFocus(e.target,this,"."+this.getAttribute("data-navcommands"),-12),e.preventDefault(),e.stopPropagation()):"pagedown"===cmd&&(focusManager.moveFocus(e.target,this,"."+this.getAttribute("data-navcommands"),12),e.preventDefault(),e.stopPropagation())}function initHeadroom(elem){require(["headroom"],function(Headroom){var headroom=new Headroom([],{scroller:elem});headroom.init(),headroom.add(document.querySelector(".skinHeader")),elem.headroom=headroom})}function loadScrollButtons(scroller){require(["emby-scrollbuttons"],function(){scroller.insertAdjacentHTML("beforeend",'
')})}var ScrollerProtoType=Object.create(HTMLDivElement.prototype);ScrollerProtoType.createdCallback=function(){this.classList.add("emby-scroller")},ScrollerProtoType.scrollToBeginning=function(){this.scroller&&this.scroller.slideTo(0,!0)},ScrollerProtoType.toStart=function(elem,immediate){this.scroller&&this.scroller.toStart(elem,immediate)},ScrollerProtoType.toCenter=function(elem,immediate){this.scroller&&this.scroller.toCenter(elem,immediate)},ScrollerProtoType.scrollToPosition=function(pos,immediate){this.scroller&&this.scroller.slideTo(pos,immediate)},ScrollerProtoType.getScrollPosition=function(){if(this.scroller)return this.scroller.getScrollPosition()},ScrollerProtoType.getScrollSize=function(){if(this.scroller)return this.scroller.getScrollSize()},ScrollerProtoType.getScrollEventName=function(){if(this.scroller)return this.scroller.getScrollEventName()},ScrollerProtoType.getScrollSlider=function(){if(this.scroller)return this.scroller.getScrollSlider()},ScrollerProtoType.addScrollEventListener=function(fn,options){this.scroller&&dom.addEventListener(this.scroller.getScrollFrame(),this.scroller.getScrollEventName(),fn,options)},ScrollerProtoType.removeScrollEventListener=function(fn,options){this.scroller&&dom.removeEventListener(this.scroller.getScrollFrame(),this.scroller.getScrollEventName(),fn,options)},ScrollerProtoType.attachedCallback=function(){this.getAttribute("data-navcommands")&&inputManager.on(this,onInputCommand);var horizontal="false"!==this.getAttribute("data-horizontal"),slider=this.querySelector(".scrollSlider");horizontal&&(slider.style["white-space"]="nowrap");var bindHeader="true"===this.getAttribute("data-bindheader"),scrollFrame=this,enableScrollButtons=layoutManager.desktop&&horizontal&&"false"!==this.getAttribute("data-scrollbuttons"),options={horizontal:horizontal,mouseDragging:1,mouseWheel:"false"!==this.getAttribute("data-mousewheel"),touchDragging:1,slidee:slider,scrollBy:200,speed:horizontal?270:240,elasticBounds:1,dragHandle:1,scrollWidth:"auto"===this.getAttribute("data-scrollsize")?null:5e6,autoImmediate:!0,skipSlideToWhenVisible:"true"===this.getAttribute("data-skipfocuswhenvisible"),dispatchScrollEvent:enableScrollButtons||bindHeader||"true"===this.getAttribute("data-scrollevent"),hideScrollbar:enableScrollButtons||"true"===this.getAttribute("data-hidescrollbar"),allowNativeSmoothScroll:"true"===this.getAttribute("data-allownativesmoothscroll")&&!enableScrollButtons,allowNativeScroll:!enableScrollButtons,forceHideScrollbars:enableScrollButtons,requireAnimation:enableScrollButtons&&browser.edge};this.scroller=new scroller(scrollFrame,options),this.scroller.init(),layoutManager.tv&&this.getAttribute("data-centerfocus")&&initCenterFocus(this,this.scroller),bindHeader&&initHeadroom(this),enableScrollButtons&&loadScrollButtons(this)},ScrollerProtoType.pause=function(){var headroom=this.headroom;headroom&&headroom.pause()},ScrollerProtoType.resume=function(){var headroom=this.headroom;headroom&&headroom.resume()},ScrollerProtoType.detachedCallback=function(){this.getAttribute("data-navcommands")&&inputManager.off(this,onInputCommand);var headroom=this.headroom;headroom&&(headroom.destroy(),this.headroom=null);var scrollerInstance=this.scroller;scrollerInstance&&(scrollerInstance.destroy(),this.scroller=null)},document.registerElement("emby-scroller",{prototype:ScrollerProtoType,extends:"div"})}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-select/emby-select.css b/dashboard-ui/bower_components/emby-webcomponents/emby-select/emby-select.css index 5ff84beafd..292a41b8f7 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/emby-select/emby-select.css +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-select/emby-select.css @@ -1 +1 @@ -.emby-select{display:block;margin:0;margin-bottom:0!important;font-size:110%;font-family:inherit;font-weight:inherit;padding:.5em 1.9em .5em .5em;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0!important;-webkit-tap-highlight-color:transparent;width:100%}.emby-select[disabled]{background:0 0!important;border-color:transparent!important;color:inherit!important;-webkit-appearance:none;-moz-appearance:none;appearance:none}.selectContainer-inline>.emby-select{padding:.3em 1.9em .3em .5em;font-size:inherit}.selectContainer-inline>.emby-select[disabled]{padding:.4em 0}.emby-select::-moz-focus-inner{border:0}.emby-select-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-select-focusscale:focus{-webkit-transform:scale(1.08);transform:scale(1.08);z-index:1}.emby-select+.fieldDescription{margin-top:.25em}.selectContainer{margin-bottom:1.8em;position:relative}.selectContainer-inline{display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;margin-bottom:0;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.selectLabel{display:block;margin-bottom:.25em}.selectContainer-inline>.selectLabel{margin-bottom:0;margin-right:.5em;-webkit-flex-shrink:0;flex-shrink:0}.emby-select-withcolor{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-border-radius:.2em;border-radius:.2em}.selectArrowContainer{position:absolute;right:.3em;top:.27em;color:inherit;pointer-events:none}.selectContainer-inline>.selectArrowContainer{top:initial;bottom:.24em;font-size:90%}.emby-select[disabled]+.selectArrowContainer{display:none}.selectArrow{margin-top:.35em;font-size:1.7em}.emby-select-iconbutton{-webkit-align-self:flex-end;align-self:flex-end} \ No newline at end of file +.emby-select{display:block;margin:0;margin-bottom:0!important;font-size:110%;font-family:inherit;font-weight:inherit;padding:.5em 1.9em .5em .5em;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0!important;-webkit-tap-highlight-color:transparent;width:100%}.emby-select[disabled]{background:0 0!important;border-color:transparent!important;color:inherit!important;-webkit-appearance:none;-moz-appearance:none;appearance:none}.selectContainer-inline>.emby-select{padding:.3em 1.9em .3em .5em;font-size:inherit}.selectContainer-inline>.emby-select[disabled]{padding-left:0;padding-right:0}.emby-select::-moz-focus-inner{border:0}.emby-select-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-select-focusscale:focus{-webkit-transform:scale(1.04);transform:scale(1.04);z-index:1}.emby-select+.fieldDescription{margin-top:.25em}.selectContainer{margin-bottom:1.8em;position:relative}.selectContainer-inline{display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;margin-bottom:0;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.selectLabel{display:block;margin-bottom:.25em}.selectContainer-inline>.selectLabel{margin-bottom:0;margin-right:.5em;-webkit-flex-shrink:0;flex-shrink:0}.emby-select-withcolor{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-border-radius:.2em;border-radius:.2em}.selectArrowContainer{position:absolute;right:.3em;top:.2em;color:inherit;pointer-events:none}.selectContainer-inline>.selectArrowContainer{top:initial;bottom:.24em;font-size:90%}.emby-select[disabled]+.selectArrowContainer{display:none}.selectArrow{margin-top:.35em;font-size:1.7em}.emby-select-iconbutton{-webkit-align-self:flex-end;align-self:flex-end} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-select/emby-select.js b/dashboard-ui/bower_components/emby-webcomponents/emby-select/emby-select.js index ddc9317232..1da83c4f91 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/emby-select/emby-select.js +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-select/emby-select.js @@ -1 +1 @@ -define(["layoutManager","browser","actionsheet","css!./emby-select","registerElement"],function(layoutManager,browser,actionsheet){"use strict";function enableNativeMenu(){return!(!browser.edgeUwp&&!browser.xboxOne)||!browser.tizen&&!browser.orsay&&(!!browser.tv||!layoutManager.tv)}function triggerChange(select){var evt=document.createEvent("HTMLEvents");evt.initEvent("change",!1,!0),select.dispatchEvent(evt)}function setValue(select,value){select.value=value}function showActionSheet(select){var labelElem=getLabel(select),title=labelElem?labelElem.textContent||labelElem.innerText:null;actionsheet.show({items:select.options,positionTo:select,title:title}).then(function(value){setValue(select,value),triggerChange(select)})}function getLabel(select){for(var elem=select.previousSibling;elem&&"LABEL"!==elem.tagName;)elem=elem.previousSibling;return elem}function onFocus(e){var label=getLabel(this);label&&label.classList.add("selectLabelFocused")}function onBlur(e){var label=getLabel(this);label&&label.classList.remove("selectLabelFocused")}function onMouseDown(e){e.button||enableNativeMenu()||(e.preventDefault(),showActionSheet(this))}function onKeyDown(e){switch(e.keyCode){case 13:return void(enableNativeMenu()||(e.preventDefault(),showActionSheet(this)));case 37:case 38:case 39:case 40:return void(layoutManager.tv&&e.preventDefault())}}var EmbySelectPrototype=Object.create(HTMLSelectElement.prototype),inputId=0;EmbySelectPrototype.createdCallback=function(){this.id||(this.id="embyselect"+inputId,inputId++),browser.firefox||(this.classList.add("emby-select-withcolor"),layoutManager.tv&&this.classList.add("emby-select-tv-withcolor")),layoutManager.tv&&this.classList.add("emby-select-focusscale"),this.addEventListener("mousedown",onMouseDown),this.addEventListener("keydown",onKeyDown),this.addEventListener("focus",onFocus),this.addEventListener("blur",onBlur)},EmbySelectPrototype.attachedCallback=function(){if(!this.classList.contains("emby-select")){this.classList.add("emby-select");var label=this.ownerDocument.createElement("label");label.innerHTML=this.getAttribute("label")||"",label.classList.add("selectLabel"),label.htmlFor=this.id,this.parentNode.insertBefore(label,this),this.classList.contains("emby-select-withcolor")&&this.parentNode.insertAdjacentHTML("beforeend",'
0
')}},EmbySelectPrototype.setLabel=function(text){var label=this.parentNode.querySelector("label");label.innerHTML=text},document.registerElement("emby-select",{prototype:EmbySelectPrototype,extends:"select"})}); \ No newline at end of file +define(["layoutManager","browser","actionsheet","css!./emby-select","registerElement"],function(layoutManager,browser,actionsheet){"use strict";function enableNativeMenu(){return!(!browser.edgeUwp&&!browser.xboxOne)||!(browser.tizen||browser.orsay||browser.web0s)&&(!!browser.tv||!layoutManager.tv)}function triggerChange(select){var evt=document.createEvent("HTMLEvents");evt.initEvent("change",!1,!0),select.dispatchEvent(evt)}function setValue(select,value){select.value=value}function showActionSheet(select){var labelElem=getLabel(select),title=labelElem?labelElem.textContent||labelElem.innerText:null;actionsheet.show({items:select.options,positionTo:select,title:title}).then(function(value){setValue(select,value),triggerChange(select)})}function getLabel(select){for(var elem=select.previousSibling;elem&&"LABEL"!==elem.tagName;)elem=elem.previousSibling;return elem}function onFocus(e){var label=getLabel(this);label&&label.classList.add("selectLabelFocused")}function onBlur(e){var label=getLabel(this);label&&label.classList.remove("selectLabelFocused")}function onMouseDown(e){e.button||enableNativeMenu()||(e.preventDefault(),showActionSheet(this))}function onKeyDown(e){switch(e.keyCode){case 13:return void(enableNativeMenu()||(e.preventDefault(),showActionSheet(this)));case 37:case 38:case 39:case 40:return void(layoutManager.tv&&e.preventDefault())}}var EmbySelectPrototype=Object.create(HTMLSelectElement.prototype),inputId=0;EmbySelectPrototype.createdCallback=function(){this.id||(this.id="embyselect"+inputId,inputId++),browser.firefox||(this.classList.add("emby-select-withcolor"),layoutManager.tv&&this.classList.add("emby-select-tv-withcolor")),layoutManager.tv&&this.classList.add("emby-select-focusscale"),this.addEventListener("mousedown",onMouseDown),this.addEventListener("keydown",onKeyDown),this.addEventListener("focus",onFocus),this.addEventListener("blur",onBlur)},EmbySelectPrototype.attachedCallback=function(){if(!this.classList.contains("emby-select")){this.classList.add("emby-select");var label=this.ownerDocument.createElement("label");label.innerHTML=this.getAttribute("label")||"",label.classList.add("selectLabel"),label.htmlFor=this.id,this.parentNode.insertBefore(label,this),this.classList.contains("emby-select-withcolor")&&this.parentNode.insertAdjacentHTML("beforeend",'
0
')}},EmbySelectPrototype.setLabel=function(text){this.parentNode.querySelector("label").innerHTML=text},document.registerElement("emby-select",{prototype:EmbySelectPrototype,extends:"select"})}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-slider/emby-slider.css b/dashboard-ui/bower_components/emby-webcomponents/emby-slider/emby-slider.css index 6b39ddeff9..896129e200 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/emby-slider/emby-slider.css +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-slider/emby-slider.css @@ -1 +1 @@ -_:-ms-input-placeholder{-ms-appearance:none;height:32px;margin:0}.mdl-slider{width:100%;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;height:.2em;background:0 0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:0;padding:1em 0;color:#52B54B;-webkit-align-self:center;align-self:center;z-index:1;cursor:pointer;margin:0;-webkit-tap-highlight-color:transparent;display:block}.mdl-slider::-moz-focus-outer{border:0}.mdl-slider::-ms-tooltip{display:none}.mdl-slider::-webkit-slider-runnable-track{background:0 0}.mdl-slider::-moz-range-track{background:#444;border:none}.mdl-slider::-moz-range-progress{background:#52B54B}.mdl-slider::-ms-track{background:0 0;color:transparent;height:.2em;width:100%;border:none}.mdl-slider::-ms-fill-lower{display:none}.mdl-slider::-ms-fill-upper{display:none}.mdl-slider::-webkit-slider-thumb{-webkit-appearance:none;width:1.8em;height:1.8em;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-border-radius:50%;border-radius:50%;background:#52B54B;border:none;-webkit-transition:-webkit-transform .3s cubic-bezier(.4,0,.2,1),border .18s cubic-bezier(.4,0,.2,1),-webkit-box-shadow .18s cubic-bezier(.4,0,.2,1),background .28s cubic-bezier(.4,0,.2,1);transition:transform .3s cubic-bezier(.4,0,.2,1),border .18s cubic-bezier(.4,0,.2,1),box-shadow .18s cubic-bezier(.4,0,.2,1),background .28s cubic-bezier(.4,0,.2,1)}.mdl-slider-hoverthumb::-webkit-slider-thumb{margin-left:-.12em;-webkit-transform:scale(.7,.7);transform:scale(.7,.7)}.mdl-slider:hover::-webkit-slider-thumb{-webkit-transform:none;transform:none}.slider-no-webkit-thumb::-webkit-slider-thumb{opacity:0!important}.mdl-slider::-moz-range-thumb{-moz-appearance:none;width:1.8em;height:1.8em;box-sizing:border-box;border-radius:50%;background:#52B54B;border:none}.mdl-slider:focus::-webkit-slider-thumb{-webkit-box-shadow:0 0 0 10px rgba(82,181,75,.26);box-shadow:0 0 0 10px rgba(82,181,75,.26)}.mdl-slider:focus::-moz-range-thumb{box-shadow:0 0 0 10px rgba(82,181,75,.26)}.mdl-slider::-ms-thumb{-webkit-appearance:none;width:1.8em;height:1.8em;box-sizing:border-box;border-radius:50%;background:#52B54B;border:none;transition:transform .3s cubic-bezier(.4,0,.2,1),border .18s cubic-bezier(.4,0,.2,1),box-shadow .18s cubic-bezier(.4,0,.2,1),background .28s cubic-bezier(.4,0,.2,1)}.mdl-slider-hoverthumb::-ms-thumb{margin-left:-.4em;transform:scale(.5,.5)}.mdl-slider:hover::-ms-thumb{transform:none}.mdl-slider[disabled]::-webkit-slider-thumb{display:none}.mdl-slider[disabled]::-moz-range-thumb{display:none}.mdl-slider[disabled]::-ms-thumb{display:none}.mdl-slider-ie-container{height:18px;overflow:visible;border:none;margin:none;padding:none}.mdl-slider-container{height:18px;position:relative;background:0 0;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;flex-direction:row}.mdl-slider-background-flex{background:#333;position:absolute;height:.2em;margin-top:-.1em;width:100%;top:50%;left:0;display:-webkit-box;display:-webkit-flex;display:flex;overflow:hidden;border:0;padding:0}.mdl-slider-background-flex-inner{position:relative;width:100%}.mdl-slider-background-lower{position:absolute;left:0;width:0;top:0;bottom:0;background-color:#52B54B}.mdl-slider-background-lower-clear{background-color:transparent}.mdl-slider-background-lower-withtransform{width:100%;-webkit-transform-origin:left center;transform-origin:left center;-webkit-transform:scaleX(0);transform:scaleX(0)}.mdl-slider-background-upper{background:#666;background:rgba(255,255,255,.4);position:absolute;left:0;width:0;top:0;bottom:0}.sliderBubble{position:absolute;top:0;left:0;-webkit-transform:translate3d(-48%,-120%,0);transform:translate3d(-48%,-120%,0);background:#282828;color:#fff;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.sliderBubbleText{margin:0;padding:.5em .75em} \ No newline at end of file +_:-ms-input-placeholder{-ms-appearance:none;height:2.223em;margin:0}.mdl-slider{width:100%;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;height:.2em;background:0 0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:0;padding:1em 0;color:#52B54B;-webkit-align-self:center;align-self:center;z-index:1;cursor:pointer;margin:0;-webkit-tap-highlight-color:transparent;display:block}.mdl-slider::-moz-focus-outer{border:0}.mdl-slider::-ms-tooltip{display:none}.mdl-slider::-webkit-slider-runnable-track{background:0 0}.mdl-slider::-moz-range-track{background:#444;border:none}.mdl-slider::-moz-range-progress{background:#52B54B}.mdl-slider::-ms-track{background:0 0;color:transparent;height:.2em;width:100%;border:none}.mdl-slider::-ms-fill-lower{display:none}.mdl-slider::-ms-fill-upper{display:none}.mdl-slider::-webkit-slider-thumb{-webkit-appearance:none;width:1.8em;height:1.8em;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-border-radius:50%;border-radius:50%;background:#52B54B;border:none;-webkit-transition:-webkit-transform .3s cubic-bezier(.4,0,.2,1),border .18s cubic-bezier(.4,0,.2,1),-webkit-box-shadow .18s cubic-bezier(.4,0,.2,1),background .28s cubic-bezier(.4,0,.2,1);transition:transform .3s cubic-bezier(.4,0,.2,1),border .18s cubic-bezier(.4,0,.2,1),box-shadow .18s cubic-bezier(.4,0,.2,1),background .28s cubic-bezier(.4,0,.2,1)}.mdl-slider-hoverthumb::-webkit-slider-thumb{margin-left:-.12em;-webkit-transform:scale(.7,.7);transform:scale(.7,.7)}.mdl-slider:hover::-webkit-slider-thumb{-webkit-transform:none;transform:none}.slider-no-webkit-thumb::-webkit-slider-thumb{opacity:0!important}.mdl-slider::-moz-range-thumb{-moz-appearance:none;width:1.8em;height:1.8em;box-sizing:border-box;border-radius:50%;background:#52B54B;border:none}.mdl-slider::-ms-thumb{-webkit-appearance:none;width:1.8em;height:1.8em;box-sizing:border-box;border-radius:50%;background:#52B54B;border:none;transition:transform .3s cubic-bezier(.4,0,.2,1),border .18s cubic-bezier(.4,0,.2,1),box-shadow .18s cubic-bezier(.4,0,.2,1),background .28s cubic-bezier(.4,0,.2,1)}.mdl-slider-hoverthumb::-ms-thumb{margin-left:-.4em;transform:scale(.5,.5)}.mdl-slider:hover::-ms-thumb{transform:none}.mdl-slider[disabled]::-webkit-slider-thumb{display:none}.mdl-slider[disabled]::-moz-range-thumb{display:none}.mdl-slider[disabled]::-ms-thumb{display:none}.mdl-slider-ie-container{height:1.25em;overflow:visible;border:none;margin:0;padding:0}.mdl-slider-container{height:1.25em;position:relative;background:0 0;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;flex-direction:row}.mdl-slider-background-flex{background:#333;position:absolute;height:.2em;margin-top:-.1em;width:100%;top:50%;left:0;display:-webkit-box;display:-webkit-flex;display:flex;overflow:hidden;border:0;padding:0}.mdl-slider-background-flex-inner{position:relative;width:100%}.mdl-slider-background-lower{position:absolute;left:0;width:0;top:0;bottom:0;background-color:#52B54B}.mdl-slider-background-lower-clear{background-color:transparent}.mdl-slider-background-lower-withtransform{width:100%;-webkit-transform-origin:left center;transform-origin:left center;-webkit-transform:scaleX(0);transform:scaleX(0)}.mdl-slider-background-upper{background:#666;background:rgba(255,255,255,.4);position:absolute;left:0;width:0;top:0;bottom:0}.sliderBubble{position:absolute;top:0;left:0;-webkit-transform:translate3d(-48%,-120%,0);transform:translate3d(-48%,-120%,0);background:#282828;color:#fff;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.sliderBubbleText{margin:0;padding:.5em .75em} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-tabs/emby-tabs.js b/dashboard-ui/bower_components/emby-webcomponents/emby-tabs/emby-tabs.js index f7f38a7d58..bbaca2277e 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/emby-tabs/emby-tabs.js +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-tabs/emby-tabs.js @@ -1 +1 @@ -define(["dom","scroller","browser","layoutManager","focusManager","registerElement","css!./emby-tabs","scrollStyles"],function(dom,scroller,browser,layoutManager,focusManager){"use strict";function setActiveTabButton(tabs,newButton,oldButton,animate){newButton.classList.add(activeButtonClass)}function getFocusCallback(tabs,e){return function(){onClick.call(tabs,e)}}function onFocus(e){layoutManager.tv&&(this.focusTimeout&&clearTimeout(this.focusTimeout),this.focusTimeout=setTimeout(getFocusCallback(this,e),700))}function getTabPanel(tabs,index){return null}function removeActivePanelClass(tabs,index){var tabPanel=getTabPanel(tabs,index);tabPanel&&tabPanel.classList.remove("is-active")}function fadeInRight(elem){var pct=browser.mobile?"4%":"0.5%",keyframes=[{opacity:"0",transform:"translate3d("+pct+", 0, 0)",offset:0},{opacity:"1",transform:"none",offset:1}];elem.animate(keyframes,{duration:160,iterations:1,easing:"ease-out"})}function triggerBeforeTabChange(tabs,index,previousIndex){tabs.dispatchEvent(new CustomEvent("beforetabchange",{detail:{selectedTabIndex:index,previousIndex:previousIndex}})),null!=previousIndex&&previousIndex!==index&&removeActivePanelClass(tabs,previousIndex);var newPanel=getTabPanel(tabs,index);newPanel&&(newPanel.animate&&fadeInRight(newPanel),newPanel.classList.add("is-active"))}function onClick(e){this.focusTimeout&&clearTimeout(this.focusTimeout);var tabs=this,current=tabs.querySelector("."+activeButtonClass),tabButton=dom.parentWithClass(e.target,buttonClass);if(tabButton&&tabButton!==current){current&¤t.classList.remove(activeButtonClass);var previousIndex=current?parseInt(current.getAttribute("data-index")):null;setActiveTabButton(tabs,tabButton,current,!0);var index=parseInt(tabButton.getAttribute("data-index"));triggerBeforeTabChange(tabs,index,previousIndex),setTimeout(function(){tabs.selectedTabIndex=index,tabs.dispatchEvent(new CustomEvent("tabchange",{detail:{selectedTabIndex:index,previousIndex:previousIndex}}))},120),tabs.scroller&&tabs.scroller.toCenter(tabButton,!1)}}function initScroller(tabs){if(!tabs.scroller){var contentScrollSlider=tabs.querySelector(".emby-tabs-slider");contentScrollSlider?(tabs.scroller=new scroller(tabs,{horizontal:1,itemNav:0,mouseDragging:1,touchDragging:1,slidee:contentScrollSlider,smart:!0,releaseSwing:!0,scrollBy:200,speed:120,elasticBounds:1,dragHandle:1,dynamicHandle:1,clickBar:1,hiddenScroll:!0,requireAnimation:!browser.safari,allowNativeSmoothScroll:!0}),tabs.scroller.init()):(tabs.classList.add("scrollX"),tabs.classList.add("hiddenScrollX"),tabs.classList.add("smoothScrollX"))}}function getSelectedTabButton(elem){return elem.querySelector("."+activeButtonClass)}function getSibling(elem,method){for(var sibling=elem[method];sibling;){if(sibling.classList.contains(buttonClass)&&!sibling.classList.contains("hide"))return sibling;sibling=sibling[method]}return null}var EmbyTabs=Object.create(HTMLDivElement.prototype),buttonClass="emby-tab-button",activeButtonClass=buttonClass+"-active";EmbyTabs.createdCallback=function(){this.classList.contains("emby-tabs")||(this.classList.add("emby-tabs"),this.classList.add("focusable"),dom.addEventListener(this,"click",onClick,{passive:!0}),dom.addEventListener(this,"focus",onFocus,{passive:!0,capture:!0}))},EmbyTabs.focus=function(){var selected=this.querySelector("."+activeButtonClass);selected?focusManager.focus(selected):focusManager.autoFocus(this)},EmbyTabs.refresh=function(){this.scroller&&this.scroller.reload()},EmbyTabs.attachedCallback=function(){initScroller(this);var current=this.querySelector("."+activeButtonClass),currentIndex=current?parseInt(current.getAttribute("data-index")):parseInt(this.getAttribute("data-index")||"0");if(currentIndex!==-1){this.selectedTabIndex=currentIndex;var tabButtons=this.querySelectorAll("."+buttonClass),newTabButton=tabButtons[currentIndex];newTabButton&&setActiveTabButton(this,newTabButton,current,!1)}this.readyFired||(this.readyFired=!0,this.dispatchEvent(new CustomEvent("ready",{})))},EmbyTabs.detachedCallback=function(){this.scroller&&(this.scroller.destroy(),this.scroller=null),dom.removeEventListener(this,"click",onClick,{passive:!0}),dom.removeEventListener(this,"focus",onFocus,{passive:!0,capture:!0})},EmbyTabs.selectedIndex=function(selected,triggerEvent){var tabs=this;if(null==selected)return tabs.selectedTabIndex||0;var current=tabs.selectedIndex();tabs.selectedTabIndex=selected;var tabButtons=tabs.querySelectorAll("."+buttonClass);if(current===selected||triggerEvent===!1){triggerBeforeTabChange(tabs,selected,current),tabs.dispatchEvent(new CustomEvent("tabchange",{detail:{selectedTabIndex:selected}}));var currentTabButton=tabButtons[current];setActiveTabButton(tabs,tabButtons[selected],currentTabButton,!1),current!==selected&¤tTabButton&¤tTabButton.classList.remove(activeButtonClass)}else onClick.call(tabs,{target:tabButtons[selected]})},EmbyTabs.selectNext=function(){var current=getSelectedTabButton(this),sibling=getSibling(current,"nextSibling");sibling&&onClick.call(this,{target:sibling})},EmbyTabs.selectPrevious=function(){var current=getSelectedTabButton(this),sibling=getSibling(current,"previousSibling");sibling&&onClick.call(this,{target:sibling})},EmbyTabs.triggerBeforeTabChange=function(selected){var tabs=this;triggerBeforeTabChange(tabs,tabs.selectedIndex())},EmbyTabs.triggerTabChange=function(selected){var tabs=this;tabs.dispatchEvent(new CustomEvent("tabchange",{detail:{selectedTabIndex:tabs.selectedIndex()}}))},EmbyTabs.setTabEnabled=function(index,enabled){var btn=this.querySelector('.emby-tab-button[data-index="'+index+'"]');enabled?btn.classList.remove("hide"):btn.classList.remove("add")},document.registerElement("emby-tabs",{prototype:EmbyTabs,extends:"div"})}); \ No newline at end of file +define(["dom","scroller","browser","layoutManager","focusManager","registerElement","css!./emby-tabs","scrollStyles"],function(dom,scroller,browser,layoutManager,focusManager){"use strict";function setActiveTabButton(tabs,newButton,oldButton,animate){newButton.classList.add(activeButtonClass)}function getFocusCallback(tabs,e){return function(){onClick.call(tabs,e)}}function onFocus(e){layoutManager.tv&&(this.focusTimeout&&clearTimeout(this.focusTimeout),this.focusTimeout=setTimeout(getFocusCallback(this,e),700))}function getTabPanel(tabs,index){return null}function removeActivePanelClass(tabs,index){var tabPanel=getTabPanel(tabs,index);tabPanel&&tabPanel.classList.remove("is-active")}function fadeInRight(elem){var pct=browser.mobile?"4%":"0.5%",keyframes=[{opacity:"0",transform:"translate3d("+pct+", 0, 0)",offset:0},{opacity:"1",transform:"none",offset:1}];elem.animate(keyframes,{duration:160,iterations:1,easing:"ease-out"})}function triggerBeforeTabChange(tabs,index,previousIndex){tabs.dispatchEvent(new CustomEvent("beforetabchange",{detail:{selectedTabIndex:index,previousIndex:previousIndex}})),null!=previousIndex&&previousIndex!==index&&removeActivePanelClass(tabs,previousIndex);var newPanel=getTabPanel(tabs,index);newPanel&&(newPanel.animate&&fadeInRight(newPanel),newPanel.classList.add("is-active"))}function onClick(e){this.focusTimeout&&clearTimeout(this.focusTimeout);var tabs=this,current=tabs.querySelector("."+activeButtonClass),tabButton=dom.parentWithClass(e.target,buttonClass);if(tabButton&&tabButton!==current){current&¤t.classList.remove(activeButtonClass);var previousIndex=current?parseInt(current.getAttribute("data-index")):null;setActiveTabButton(tabs,tabButton,current,!0);var index=parseInt(tabButton.getAttribute("data-index"));triggerBeforeTabChange(tabs,index,previousIndex),setTimeout(function(){tabs.selectedTabIndex=index,tabs.dispatchEvent(new CustomEvent("tabchange",{detail:{selectedTabIndex:index,previousIndex:previousIndex}}))},120),tabs.scroller&&tabs.scroller.toCenter(tabButton,!1)}}function initScroller(tabs){if(!tabs.scroller){var contentScrollSlider=tabs.querySelector(".emby-tabs-slider");contentScrollSlider?(tabs.scroller=new scroller(tabs,{horizontal:1,itemNav:0,mouseDragging:1,touchDragging:1,slidee:contentScrollSlider,smart:!0,releaseSwing:!0,scrollBy:200,speed:120,elasticBounds:1,dragHandle:1,dynamicHandle:1,clickBar:1,hiddenScroll:!0,requireAnimation:!browser.safari,allowNativeSmoothScroll:!0}),tabs.scroller.init()):(tabs.classList.add("scrollX"),tabs.classList.add("hiddenScrollX"),tabs.classList.add("smoothScrollX"))}}function getSelectedTabButton(elem){return elem.querySelector("."+activeButtonClass)}function getSibling(elem,method){for(var sibling=elem[method];sibling;){if(sibling.classList.contains(buttonClass)&&!sibling.classList.contains("hide"))return sibling;sibling=sibling[method]}return null}var EmbyTabs=Object.create(HTMLDivElement.prototype),buttonClass="emby-tab-button",activeButtonClass=buttonClass+"-active";EmbyTabs.createdCallback=function(){this.classList.contains("emby-tabs")||(this.classList.add("emby-tabs"),this.classList.add("focusable"),dom.addEventListener(this,"click",onClick,{passive:!0}),dom.addEventListener(this,"focus",onFocus,{passive:!0,capture:!0}))},EmbyTabs.focus=function(){var selected=this.querySelector("."+activeButtonClass);selected?focusManager.focus(selected):focusManager.autoFocus(this)},EmbyTabs.refresh=function(){this.scroller&&this.scroller.reload()},EmbyTabs.attachedCallback=function(){initScroller(this);var current=this.querySelector("."+activeButtonClass),currentIndex=current?parseInt(current.getAttribute("data-index")):parseInt(this.getAttribute("data-index")||"0");if(-1!==currentIndex){this.selectedTabIndex=currentIndex;var tabButtons=this.querySelectorAll("."+buttonClass),newTabButton=tabButtons[currentIndex];newTabButton&&setActiveTabButton(this,newTabButton,current,!1)}this.readyFired||(this.readyFired=!0,this.dispatchEvent(new CustomEvent("ready",{})))},EmbyTabs.detachedCallback=function(){this.scroller&&(this.scroller.destroy(),this.scroller=null),dom.removeEventListener(this,"click",onClick,{passive:!0}),dom.removeEventListener(this,"focus",onFocus,{passive:!0,capture:!0})},EmbyTabs.selectedIndex=function(selected,triggerEvent){var tabs=this;if(null==selected)return tabs.selectedTabIndex||0;var current=tabs.selectedIndex();tabs.selectedTabIndex=selected;var tabButtons=tabs.querySelectorAll("."+buttonClass);if(current===selected||!1===triggerEvent){triggerBeforeTabChange(tabs,selected,current),tabs.dispatchEvent(new CustomEvent("tabchange",{detail:{selectedTabIndex:selected}}));var currentTabButton=tabButtons[current];setActiveTabButton(tabs,tabButtons[selected],currentTabButton,!1),current!==selected&¤tTabButton&¤tTabButton.classList.remove(activeButtonClass)}else onClick.call(tabs,{target:tabButtons[selected]})},EmbyTabs.selectNext=function(){var current=getSelectedTabButton(this),sibling=getSibling(current,"nextSibling");sibling&&onClick.call(this,{target:sibling})},EmbyTabs.selectPrevious=function(){var current=getSelectedTabButton(this),sibling=getSibling(current,"previousSibling");sibling&&onClick.call(this,{target:sibling})},EmbyTabs.triggerBeforeTabChange=function(selected){var tabs=this;triggerBeforeTabChange(tabs,tabs.selectedIndex())},EmbyTabs.triggerTabChange=function(selected){var tabs=this;tabs.dispatchEvent(new CustomEvent("tabchange",{detail:{selectedTabIndex:tabs.selectedIndex()}}))},EmbyTabs.setTabEnabled=function(index,enabled){var btn=this.querySelector('.emby-tab-button[data-index="'+index+'"]');enabled?btn.classList.remove("hide"):btn.classList.remove("add")},document.registerElement("emby-tabs",{prototype:EmbyTabs,extends:"div"})}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-textarea/emby-textarea.js b/dashboard-ui/bower_components/emby-webcomponents/emby-textarea/emby-textarea.js index 5c705318d2..70108e0143 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/emby-textarea/emby-textarea.js +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-textarea/emby-textarea.js @@ -1 +1 @@ -define(["layoutManager","browser","css!./emby-textarea","registerElement","emby-input"],function(layoutManager,browser){"use strict";function autoGrow(textarea,maxLines){function reset(){textarea.rows=1,offset=self.getOffset(textarea),self.rows=textarea.rows||1,self.lineHeight=textarea.scrollHeight/self.rows-offset/self.rows,self.maxAllowedHeight=self.lineHeight*maxLines-offset}function autogrowFn(){if((!self.lineHeight||self.lineHeight<=0)&&reset(),self.lineHeight<=0)return textarea.style.overflowY="scroll",textarea.style.height="auto",void(textarea.rows=3);var newHeight=0,hasGrown=!1;textarea.scrollHeight-offset>self.maxAllowedHeight?(textarea.style.overflowY="scroll",newHeight=self.maxAllowedHeight):(textarea.style.overflowY="hidden",textarea.style.height="auto",newHeight=textarea.scrollHeight,hasGrown=!0),textarea.style.height=newHeight+"px"}var self=this;void 0===maxLines&&(maxLines=999),self.getOffset=function(textarea){for(var style=window.getComputedStyle(textarea,null),props=["paddingTop","paddingBottom"],offset=0,i=0;iself.maxAllowedHeight?(textarea.style.overflowY="scroll",newHeight=self.maxAllowedHeight):(textarea.style.overflowY="hidden",textarea.style.height="auto",newHeight=textarea.scrollHeight),textarea.style.height=newHeight+"px"}var self=this;void 0===maxLines&&(maxLines=999),self.getOffset=function(textarea){for(var style=window.getComputedStyle(textarea,null),props=["paddingTop","paddingBottom"],offset=0,i=0;i.mdl-switch__track{background:rgba(82,181,75,.5)}.mdl-switch__input[disabled]+.mdl-switch__label+.mdl-switch__trackContainer>.mdl-switch__track{background:rgba(0,0,0,.12);cursor:auto}.mdl-switch__thumb{background:#999;position:absolute;left:0;top:-.25em;height:1.44em;width:1.44em;-webkit-border-radius:50%;border-radius:50%;cursor:pointer;-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12);-webkit-transition-duration:.28s;-o-transition-duration:.28s;transition-duration:.28s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);-o-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-property:left;-o-transition-property:left;transition-property:left;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.mdl-switch__input:checked+.mdl-switch__label+.mdl-switch__trackContainer>.mdl-switch__thumb{background:#52b54b;left:1.466em;-webkit-box-shadow:0 3px .28em 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.2),0 1px .56em 0 rgba(0,0,0,.12);box-shadow:0 3px .28em 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.2),0 1px .56em 0 rgba(0,0,0,.12)}.mdl-switch__input[disabled]+.mdl-switch__label+.mdl-switch__trackContainer>.mdl-switch__thumb{background:#bdbdbd;cursor:auto}.mdl-switch__focus-helper{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;width:.6em;height:.6em;-webkit-border-radius:50%;border-radius:50%;background-color:transparent}.mdl-switch__input:focus+.mdl-switch__label+.mdl-switch__trackContainer .mdl-switch__focus-helper{-webkit-box-shadow:0 0 0 1.39em rgba(0,0,0,.05);box-shadow:0 0 0 1.39em rgba(0,0,0,.05)}.mdl-switch__input:checked:focus+.mdl-switch__label+.mdl-switch__trackContainer .mdl-switch__focus-helper{-webkit-box-shadow:0 0 0 1.39em rgba(82,181,75,.26);box-shadow:0 0 0 1.39em rgba(82,181,75,.26);background-color:rgba(82,181,75,.26)}.mdl-switch__label{cursor:pointer;margin:0 0 0 .7em;display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.mdl-switch__input[disabled] .mdl-switch__label{color:#bdbdbd;cursor:auto} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-toggle/emby-toggle.js b/dashboard-ui/bower_components/emby-webcomponents/emby-toggle/emby-toggle.js new file mode 100644 index 0000000000..3dc060fd84 --- /dev/null +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-toggle/emby-toggle.js @@ -0,0 +1 @@ +define(["css!./emby-toggle","registerElement"],function(){"use strict";function onKeyDown(e){if(13===e.keyCode)return e.preventDefault(),this.checked=!this.checked,this.dispatchEvent(new CustomEvent("change",{bubbles:!0})),!1}var EmbyTogglePrototype=Object.create(HTMLInputElement.prototype);EmbyTogglePrototype.attachedCallback=function(){if("true"!==this.getAttribute("data-embytoggle")){this.setAttribute("data-embytoggle","true"),this.classList.add("mdl-switch__input");var labelElement=this.parentNode;labelElement.classList.add("mdl-switch"),labelElement.classList.add("mdl-js-switch");var labelTextElement=labelElement.querySelector("span");labelElement.insertAdjacentHTML("beforeend",'
'),labelTextElement.classList.add("toggleButtonLabel"),labelTextElement.classList.add("mdl-switch__label"),this.addEventListener("keydown",onKeyDown)}},document.registerElement("emby-toggle",{prototype:EmbyTogglePrototype,extends:"input"})}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/filtermenu/filtermenu.js b/dashboard-ui/bower_components/emby-webcomponents/filtermenu/filtermenu.js index 7a7dc7b4d0..87818d167d 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/filtermenu/filtermenu.js +++ b/dashboard-ui/bower_components/emby-webcomponents/filtermenu/filtermenu.js @@ -1 +1 @@ -define(["require","dom","focusManager","dialogHelper","loading","apphost","inputManager","layoutManager","connectionManager","appRouter","globalize","userSettings","emby-checkbox","emby-input","paper-icon-button-light","emby-select","material-icons","css!./../formdialog","emby-button","emby-linkbutton","flexStyles"],function(require,dom,focusManager,dialogHelper,loading,appHost,inputManager,layoutManager,connectionManager,appRouter,globalize,userSettings){"use strict";function onSubmit(e){return e.preventDefault(),!1}function renderOptions(context,selector,cssClass,items,isCheckedFn){var elem=context.querySelector(selector);items.length?elem.classList.remove("hide"):elem.classList.add("hide");var html="";html+=items.map(function(filter){var itemHtml="",checkedHtml=isCheckedFn(filter)?" checked":"";return itemHtml+=""}).join(""),elem.querySelector(".filterOptions").innerHTML=html}function renderDynamicFilters(context,result,options){renderOptions(context,".genreFilters","chkGenreFilter",result.Genres,function(i){var delimeter="|";return(delimeter+(options.settings.GenreIds||"")+delimeter).indexOf(delimeter+i.Id+delimeter)!==-1})}function loadDynamicFilters(context,options){var apiClient=connectionManager.getApiClient(options.serverId),filterMenuOptions=Object.assign(options.filterMenuOptions,{UserId:apiClient.getCurrentUserId(),ParentId:options.parentId,IncludeItemTypes:options.itemTypes.join(",")});apiClient.getJSON(apiClient.getUrl("Items/Filters2",filterMenuOptions)).then(function(result){renderDynamicFilters(context,result,options)},function(){})}function initEditor(context,settings){context.querySelector("form").addEventListener("submit",onSubmit);var i,length,elems=context.querySelectorAll(".simpleFilter");for(i=0,length=elems.length;i',itemHtml+=""+filter.Name+"",itemHtml+=""}).join(""),elem.querySelector(".filterOptions").innerHTML=html}function renderDynamicFilters(context,result,options){renderOptions(context,".genreFilters","chkGenreFilter",result.Genres,function(i){var delimeter=-1===(options.settings.GenreIds||"").indexOf("|")?",":"|";return-1!==(delimeter+(options.settings.GenreIds||"")+delimeter).indexOf(delimeter+i.Id+delimeter)})}function loadDynamicFilters(context,options){var apiClient=connectionManager.getApiClient(options.serverId),filterMenuOptions=Object.assign(options.filterMenuOptions,{UserId:apiClient.getCurrentUserId(),ParentId:options.parentId,IncludeItemTypes:options.itemTypes.join(",")});apiClient.getFilters(filterMenuOptions).then(function(result){renderDynamicFilters(context,result,options)},function(){})}function initEditor(context,settings){context.querySelector("form").addEventListener("submit",onSubmit);var i,length,elems=context.querySelectorAll(".simpleFilter");for(i=0,length=elems.length;iHD + + -
diff --git a/dashboard-ui/bower_components/emby-webcomponents/flexstyles.css b/dashboard-ui/bower_components/emby-webcomponents/flexstyles.css index 82216e2c15..b0328b227d 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/flexstyles.css +++ b/dashboard-ui/bower_components/emby-webcomponents/flexstyles.css @@ -1 +1 @@ -.flex{display:-webkit-box;display:-webkit-flex;display:flex}.inline-flex{display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex}.flex-direction-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column}.flex-direction-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;flex-direction:row}.flex-grow{-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1}.flex-shrink-zero{-webkit-flex-shrink:0;flex-shrink:0}.align-items-center{-webkit-box-align:center;-webkit-align-items:center;align-items:center}.align-items-flex-start{-webkit-box-align:start;-webkit-align-items:flex-start;align-items:flex-start}.justify-content-center{-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.justify-content-flex-end{-webkit-box-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.flex-wrap-wrap{-webkit-flex-wrap:wrap;flex-wrap:wrap} \ No newline at end of file +.flex{display:-webkit-box;display:-webkit-flex;display:flex}.inline-flex{display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex}.flex-direction-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column}.flex-direction-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;flex-direction:row}.flex-grow{-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1}.flex-shrink-zero{-webkit-flex-shrink:0;flex-shrink:0}.align-items-center{-webkit-box-align:center;-webkit-align-items:center;align-items:center}.align-items-flex-start{-webkit-box-align:start;-webkit-align-items:flex-start;align-items:flex-start}.justify-content-center{-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.justify-content-flex-end{-webkit-box-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.flex-wrap-wrap{-webkit-flex-wrap:wrap;flex-wrap:wrap}.align-self-flex-end{-webkit-align-self:flex-end;align-self:flex-end} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/flvjs/flv.min.js b/dashboard-ui/bower_components/emby-webcomponents/flvjs/flv.min.js index 94f1ddc0f2..4a3efed93f 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/flvjs/flv.min.js +++ b/dashboard-ui/bower_components/emby-webcomponents/flvjs/flv.min.js @@ -1,7 +1,7 @@ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.flvjs=e()}}(function(){var e;return function e(t,n,i){function r(a,o){if(!n[a]){if(!t[a]){var u="function"==typeof require&&require;if(!o&&u)return u(a,!0);if(s)return s(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var d=n[a]={exports:{}};t[a][0].call(d.exports,function(e){var n=t[a][1][e];return r(n||e)},d,d.exports,e,t,n,i)}return n[a].exports}for(var s="function"==typeof require&&require,a=0;a0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},i.prototype.on=i.prototype.addListener,i.prototype.once=function(e,t){function n(){this.removeListener(e,n),i||(i=!0,t.apply(this,arguments))}if(!r(t))throw TypeError("listener must be a function");var i=!1;return n.listener=t,this.on(e,n),this},i.prototype.removeListener=function(e,t){var n,i,s,o;if(!r(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(n=this._events[e],s=n.length,i=-1,n===t||r(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(a(n)){for(o=s;o-- >0;)if(n[o]===t||n[o].listener&&n[o].listener===t){i=o;break}if(i<0)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(i,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},i.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(n=this._events[e],r(n))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},i.prototype.listeners=function(e){return this._events&&this._events[e]?r(this._events[e])?[this._events[e]]:this._events[e].slice():[]},i.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(r(t))return 1;if(t)return t.length}return 0},i.listenerCount=function(e,t){return e.listenerCount(t)}},{}],3:[function(e,t,n){function i(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function s(e){if(h===setTimeout)return setTimeout(e,0);if((h===i||!h)&&setTimeout)return h=setTimeout,setTimeout(e,0);try{return h(e,0)}catch(t){try{return h.call(null,e,0)}catch(t){return h.call(this,e,0)}}}function a(e){if(f===clearTimeout)return clearTimeout(e);if((f===r||!f)&&clearTimeout)return f=clearTimeout,clearTimeout(e);try{return f(e)}catch(t){try{return f.call(null,e)}catch(t){return f.call(this,e)}}}function o(){p&&_&&(p=!1,_.length?m=_.concat(m):v=-1,m.length&&u())}function u(){if(!p){var e=s(o);p=!0;for(var t=m.length;t;){for(_=m,m=[];++v1)for(var n=1;n=e[r]&&t0&&e[0].originalDts=t[r].dts&&et[i].lastSample.originalDts&&e=t[i].lastSample.originalDts&&(i===t.length-1||i0&&(r=this._searchNearestSegmentBefore(n.originalBeginDts)+1),this._lastAppendLocation=r,this._list.splice(r,0,n)}},{key:"getLastSegmentBefore",value:function(e){var t=this._searchNearestSegmentBefore(e);return t>=0?this._list[t]:null}},{key:"getLastSampleBefore",value:function(e){var t=this.getLastSegmentBefore(e);return null!=t?t.lastSample:null}},{key:"getLastSyncPointBefore",value:function(e){for(var t=this._searchNearestSegmentBefore(e),n=this._list[t].syncPoints;0===n.length&&t>0;)t--,n=this._list[t].syncPoints;return n.length>0?n[n.length-1]:null}},{key:"type",get:function(){return this._type}},{key:"length",get:function(){return this._list.length}}]),e}()},{}],9:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n0&&(i+=";codecs="+n.codec);var r=!1;if(l.default.v(this.TAG,"Received Initialization Segment, mimeType: "+i),this._lastInitSegments[n.type]=n,i!==this._mimeTypes[n.type]){if(this._mimeTypes[n.type])l.default.v(this.TAG,"Notice: "+n.type+" mimeType changed, origin: "+this._mimeTypes[n.type]+", target: "+i);else{r=!0;try{var s=this._sourceBuffers[n.type]=this._mediaSource.addSourceBuffer(i);s.addEventListener("error",this.e.onSourceBufferError),s.addEventListener("updateend",this.e.onSourceBufferUpdateEnd)}catch(e){return l.default.e(this.TAG,e.message),void this._emitter.emit(c.default.ERROR,{code:e.code,msg:e.message})}}this._mimeTypes[n.type]=i}t||this._pendingSegments[n.type].push(n),r||this._sourceBuffers[n.type]&&!this._sourceBuffers[n.type].updating&&this._doAppendSegments(),h.default.safari&&"audio/mpeg"===n.container&&n.mediaDuration>0&&(this._requireSetMediaDuration=!0,this._pendingMediaDuration=n.mediaDuration/1e3,this._updateMediaSourceDuration())}},{key:"appendMediaSegment",value:function(e){var t=e;this._pendingSegments[t.type].push(t),this._config.autoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanupSourceBuffer();var n=this._sourceBuffers[t.type];!n||n.updating||this._hasPendingRemoveRanges()||this._doAppendSegments()}},{key:"seek",value:function(e){for(var t in this._sourceBuffers)if(this._sourceBuffers[t]){var n=this._sourceBuffers[t];if("open"===this._mediaSource.readyState)try{n.abort()}catch(e){l.default.e(this.TAG,e.message)}this._idrList.clear();var i=this._pendingSegments[t];if(i.splice(0,i.length),"closed"!==this._mediaSource.readyState){for(var r=0;r=1&&e-i.start(0)>=this._config.autoCleanupMaxBackwardDuration)return!0}}return!1}},{key:"_doCleanupSourceBuffer",value:function(){var e=this._mediaElement.currentTime;for(var t in this._sourceBuffers){var n=this._sourceBuffers[t];if(n){for(var i=n.buffered,r=!1,s=0;s=this._config.autoCleanupMaxBackwardDuration){r=!0;var u=e-this._config.autoCleanupMinBackwardDuration;this._pendingRemoveRanges[t].push({start:a,end:u})}}else o0&&(isNaN(t)||n>t)&&(l.default.v(this.TAG,"Update MediaSource duration from "+t+" to "+n),this._mediaSource.duration=n),this._requireSetMediaDuration=!1,this._pendingMediaDuration=0}}},{key:"_doRemoveRanges",value:function(){for(var e in this._pendingRemoveRanges)if(this._sourceBuffers[e]&&!this._sourceBuffers[e].updating)for(var t=this._sourceBuffers[e],n=this._pendingRemoveRanges[e];n.length&&!t.updating;){var i=n.shift();t.remove(i.start,i.end)}}},{key:"_doAppendSegments",value:function(){var e=this._pendingSegments;for(var t in e)if(this._sourceBuffers[t]&&!this._sourceBuffers[t].updating&&e[t].length>0){var n=e[t].shift();if(n.timestampOffset){var i=this._sourceBuffers[t].timestampOffset,r=n.timestampOffset/1e3,s=Math.abs(i-r);s>.1&&(l.default.v(this.TAG,"Update MPEG audio timestampOffset from "+i+" to "+r),this._sourceBuffers[t].timestampOffset=r),delete n.timestampOffset}if(!n.data||0===n.data.byteLength)continue;try{this._sourceBuffers[t].appendBuffer(n.data),this._isBufferFull=!1,"video"===t&&n.hasOwnProperty("info")&&this._idrList.appendArray(n.info.syncPoints)}catch(e){this._pendingSegments[t].unshift(n),22===e.code?(this._isBufferFull||this._emitter.emit(c.default.BUFFER_FULL),this._isBufferFull=!0):(l.default.e(this.TAG,e.message),this._emitter.emit(c.default.ERROR,{code:e.code,msg:e.message}))}}}},{key:"_onSourceOpen",value:function(){if(l.default.v(this.TAG,"MediaSource onSourceOpen"),this._mediaSource.removeEventListener("sourceopen",this.e.onSourceOpen),this._pendingSourceBufferInit.length>0)for(var e=this._pendingSourceBufferInit;e.length;){var t=e.shift();this.appendInitSegment(t,!0)}this._hasPendingSegments()&&this._doAppendSegments(),this._emitter.emit(c.default.SOURCE_OPEN)}},{key:"_onSourceEnded",value:function(){l.default.v(this.TAG,"MediaSource onSourceEnded")}},{key:"_onSourceClose",value:function(){l.default.v(this.TAG,"MediaSource onSourceClose"),this._mediaSource&&null!=this.e&&(this._mediaSource.removeEventListener("sourceopen",this.e.onSourceOpen),this._mediaSource.removeEventListener("sourceended",this.e.onSourceEnded),this._mediaSource.removeEventListener("sourceclose",this.e.onSourceClose))}},{key:"_hasPendingSegments",value:function(){var e=this._pendingSegments;return e.video.length>0||e.audio.length>0}},{key:"_hasPendingRemoveRanges",value:function(){var e=this._pendingRemoveRanges;return e.video.length>0||e.audio.length>0}},{key:"_onSourceBufferUpdateEnd",value:function(){this._requireSetMediaDuration?this._updateMediaSourceDuration():this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this._hasPendingEos&&this.endOfStream(),this._emitter.emit(c.default.UPDATE_END)}},{key:"_onSourceBufferError",value:function(e){l.default.e(this.TAG,"SourceBuffer Error: "+e)}}]),e}();n.default=p},{"../utils/browser.js":39,"../utils/exception.js":40,"../utils/logger.js":41,"./media-segment-info.js":8,"./mse-events.js":10,events:2}],10:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i={ERROR:"error",SOURCE_OPEN:"source_open",UPDATE_END:"update_end",BUFFER_FULL:"buffer_full"};n.default=i},{}],11:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n0)this._demuxer.bindDataSource(this._ioctl),this._demuxer.timestampBase=this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase,r=this._demuxer.parseChunks(e,t);else if((i=m.default.probe(e)).match){this._demuxer=new m.default(i,this._config),this._remuxer||(this._remuxer=new v.default(this._config));var s=this._mediaDataSource;void 0==s.duration||isNaN(s.duration)||(this._demuxer.overridedDuration=s.duration),"boolean"==typeof s.hasAudio&&(this._demuxer.overridedHasAudio=s.hasAudio),"boolean"==typeof s.hasVideo&&(this._demuxer.overridedHasVideo=s.hasVideo),this._demuxer.timestampBase=s.segments[this._currentSegmentIndex].timestampBase,this._demuxer.onError=this._onDemuxException.bind(this),this._demuxer.onMediaInfo=this._onMediaInfo.bind(this),this._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl)),this._remuxer.onInitSegment=this._onRemuxerInitSegmentArrival.bind(this),this._remuxer.onMediaSegment=this._onRemuxerMediaSegmentArrival.bind(this),r=this._demuxer.parseChunks(e,t)}else i=null,l.default.e(this.TAG,"Non-FLV, Unsupported media type!"),Promise.resolve().then(function(){n._internalAbort()}),this._emitter.emit(k.default.DEMUX_ERROR,y.default.FORMAT_UNSUPPORTED,"Non-FLV, Unsupported media type"),r=0;return r}},{key:"_onMediaInfo",value:function(e){var t=this;null==this._mediaInfo&&(this._mediaInfo=Object.assign({},e),this._mediaInfo.keyframesIndex=null,this._mediaInfo.segments=[],this._mediaInfo.segmentCount=this._mediaDataSource.segments.length,Object.setPrototypeOf(this._mediaInfo,c.default.prototype));var n=Object.assign({},e);Object.setPrototypeOf(n,c.default.prototype),this._mediaInfo.segments[this._currentSegmentIndex]=n,this._reportSegmentMediaInfo(this._currentSegmentIndex),null!=this._pendingSeekTime&&Promise.resolve().then(function(){var e=t._pendingSeekTime;t._pendingSeekTime=null,t.seek(e)})}},{key:"_onIOSeeked",value:function(){this._remuxer.insertDiscontinuity()}},{key:"_onIOComplete",value:function(e){var t=e,n=t+1;n0&&n[0].originalDts===i&&(i=n[0].pts),this._emitter.emit(k.default.RECOMMEND_SEEKPOINT,i)}}},{key:"_enableStatisticsReporter",value:function(){null==this._statisticsReporter&&(this._statisticsReporter=self.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval))}},{key:"_disableStatisticsReporter",value:function(){this._statisticsReporter&&(self.clearInterval(this._statisticsReporter),this._statisticsReporter=null)}},{key:"_reportSegmentMediaInfo",value:function(e){var t=this._mediaInfo.segments[e],n=Object.assign({},t);n.duration=this._mediaInfo.duration,n.segmentCount=this._mediaInfo.segmentCount,delete n.segments,delete n.keyframesIndex,this._emitter.emit(k.default.MEDIA_INFO,n)}},{key:"_reportStatisticsInfo",value:function(){var e={};e.url=this._ioctl.currentURL,e.hasRedirect=this._ioctl.hasRedirect,e.hasRedirect&&(e.redirectedURL=this._ioctl.currentRedirectedURL),e.speed=this._ioctl.currentSpeed,e.loaderType=this._ioctl.loaderType,e.currentSegmentIndex=this._currentSegmentIndex,e.totalSegmentCount=this._mediaDataSource.segments.length,this._emitter.emit(k.default.STATISTICS_INFO,e)}}]),e}());n.default=L},{"../demux/demux-errors.js":16,"../demux/flv-demuxer.js":18,"../io/io-controller.js":23,"../io/loader.js":24,"../remux/mp4-remuxer.js":38,"../utils/browser.js":39,"../utils/logger.js":41,"./media-info.js":7,"./transmuxing-events.js":13,events:2}],13:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i={IO_ERROR:"io_error",DEMUX_ERROR:"demux_error",INIT_SEGMENT:"init_segment",MEDIA_SEGMENT:"media_segment",LOADING_COMPLETE:"loading_complete",RECOVERED_EARLY_EOF:"recovered_early_eof",MEDIA_INFO:"media_info",STATISTICS_INFO:"statistics_info",RECOMMEND_SEEKPOINT:"recommend_seekpoint"};n.default=i},{}],14:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var r=e("../utils/logger.js"),s=(i(r),e("../utils/logging-control.js")),a=i(s),o=e("../utils/polyfill.js"),u=i(o),l=e("./transmuxing-controller.js"),d=i(l),h=e("./transmuxing-events.js"),f=i(h),c=function(e){function t(t,n){var i={msg:f.default.INIT_SEGMENT,data:{type:t,data:n}};e.postMessage(i,[n.data])}function n(t,n){var i={msg:f.default.MEDIA_SEGMENT,data:{type:t,data:n}};e.postMessage(i,[n.data])}function i(){var t={msg:f.default.LOADING_COMPLETE};e.postMessage(t)}function r(){var t={msg:f.default.RECOVERED_EARLY_EOF};e.postMessage(t)}function s(t){var n={msg:f.default.MEDIA_INFO,data:t};e.postMessage(n)}function o(t){var n={msg:f.default.STATISTICS_INFO,data:t};e.postMessage(n)}function l(t,n){e.postMessage({msg:f.default.IO_ERROR,data:{type:t,info:n}})}function h(t,n){e.postMessage({msg:f.default.DEMUX_ERROR,data:{type:t,info:n}})}function c(t){e.postMessage({msg:f.default.RECOMMEND_SEEKPOINT,data:t})}function _(t,n){e.postMessage({msg:"logcat_callback",data:{type:t,logcat:n}})}var m=null,p=_.bind(this);u.default.install(),e.addEventListener("message",function(u){switch(u.data.cmd){case"init":m=new d.default(u.data.param[0],u.data.param[1]),m.on(f.default.IO_ERROR,l.bind(this)),m.on(f.default.DEMUX_ERROR,h.bind(this)),m.on(f.default.INIT_SEGMENT,t.bind(this)),m.on(f.default.MEDIA_SEGMENT,n.bind(this)),m.on(f.default.LOADING_COMPLETE,i.bind(this)),m.on(f.default.RECOVERED_EARLY_EOF,r.bind(this)),m.on(f.default.MEDIA_INFO,s.bind(this)),m.on(f.default.STATISTICS_INFO,o.bind(this)),m.on(f.default.RECOMMEND_SEEKPOINT,c.bind(this));break;case"destroy":m&&(m.destroy(),m=null),e.postMessage({msg:"destroyed"});break;case"start":m.start();break;case"stop":m.stop();break;case"seek":m.seek(u.data.param);break;case"pause":m.pause();break;case"resume":m.resume();break;case"logging_config":var _=u.data.param;a.default.applyConfig(_),!0===_.enableCallback?a.default.addLogListener(p):a.default.removeLogListener(p)}})};n.default=c},{"../utils/logger.js":41,"../utils/logging-control.js":42,"../utils/polyfill.js":43,"./transmuxing-controller.js":12,"./transmuxing-events.js":13}],15:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n0?(0,l.default)(new Uint8Array(e,t+2,r)):"",{data:s,size:2+r}}},{key:"parseLongString",value:function(e,t,n){if(n<4)throw new d.IllegalStateException("Data not enough when parse LongString");var i=new DataView(e,t,n),r=i.getUint32(0,!h),s=void 0;return s=r>0?(0,l.default)(new Uint8Array(e,t+4,r)):"",{data:s,size:4+r}}},{key:"parseDate",value:function(e,t,n){if(n<10)throw new d.IllegalStateException("Data size invalid when parse Date");var i=new DataView(e,t,n),r=i.getFloat64(0,!h);return r+=60*i.getInt16(8,!h)*1e3,{data:new Date(r),size:10}}},{key:"parseValue",value:function(t,n,i){if(i<1)throw new d.IllegalStateException("Data not enough when parse Value");var r=new DataView(t,n,i),s=1,a=r.getUint8(0),u=void 0,l=!1;try{switch(a){case 0:u=r.getFloat64(1,!h),s+=8;break;case 1:u=!!r.getUint8(1),s+=1;break;case 2:var f=e.parseString(t,n+1,i-1);u=f.data,s+=f.size;break;case 3:u={};var c=0;for(9==(16777215&r.getUint32(i-4,!h))&&(c=3);s32)throw new s.InvalidArgumentException("ExpGolomb: readBits() bits exceeded max 32bits!");if(e<=this._current_word_bits_left){var t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}var n=this._current_word_bits_left?this._current_word:0;n>>>=32-this._current_word_bits_left;var i=e-this._current_word_bits_left;this._fillCurrentWord();var r=Math.min(i,this._current_word_bits_left),a=this._current_word>>>32-r;return this._current_word<<=r,this._current_word_bits_left-=r,n=n<>>e))return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}},{key:"readUEG",value:function(){var e=this._skipLeadingZero();return this.readBits(e+1)-1}},{key:"readSEG",value:function(){var e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}]),e}();n.default=a},{"../utils/exception.js":40}],18:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){return e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3]}Object.defineProperty(n,"__esModule",{value:!0});var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(){function e(e,t){for(var n=0;n13))return 0;i=e.probe(t).dataOffset}if(this._firstParse){this._firstParse=!1,n+i!==this._dataOffset&&l.default.w(this.TAG,"First time parsing but chunk byteStart invalid!");0!==new DataView(t,i).getUint32(0,!r)&&l.default.w(this.TAG,"PrevTagSize0 !== 0 !!!"),i+=4}for(;it.byteLength)break;var a=s.getUint8(0),o=16777215&s.getUint32(0,!r);if(i+11+o+4>t.byteLength)break;if(8===a||9===a||18===a){var u=s.getUint8(4),d=s.getUint8(5),h=s.getUint8(6),f=s.getUint8(7),c=h|d<<8|u<<16|f<<24;0!==(16777215&s.getUint32(7,!r))&&l.default.w(this.TAG,"Meet tag which has StreamID != 0!");var _=i+11;switch(a){case 8:this._parseAudioData(t,_,o,c);break;case 9:this._parseVideoData(t,_,o,c,n+i);break;case 18:this._parseScriptData(t,_,o)}var m=s.getUint32(11+o,!r);m!==11+o&&l.default.w(this.TAG,"Invalid PrevTagSize "+m),i+=11+o+4}else l.default.w(this.TAG,"Unsupported tag type "+a+", skipped"),i+=11+o+4}return this._isInitialMetadataDispatched()&&this._dispatch&&(this._audioTrack.length||this._videoTrack.length)&&this._onDataAvailable(this._audioTrack,this._videoTrack),i}},{key:"_parseScriptData",value:function(e,t,n){var i=h.default.parseScriptData(e,t,n);if(i.hasOwnProperty("onMetaData")){if(null==i.onMetaData||"object"!==a(i.onMetaData))return void l.default.w(this.TAG,"Invalid onMetaData structure!");this._metadata&&l.default.w(this.TAG,"Found another onMetaData tag!"),this._metadata=i;var r=this._metadata.onMetaData;if("boolean"==typeof r.hasAudio&&!1===this._hasAudioFlagOverrided&&(this._hasAudio=r.hasAudio,this._mediaInfo.hasAudio=this._hasAudio),"boolean"==typeof r.hasVideo&&!1===this._hasVideoFlagOverrided&&(this._hasVideo=r.hasVideo,this._mediaInfo.hasVideo=this._hasVideo),"number"==typeof r.audiodatarate&&(this._mediaInfo.audioDataRate=r.audiodatarate),"number"==typeof r.videodatarate&&(this._mediaInfo.videoDataRate=r.videodatarate),"number"==typeof r.width&&(this._mediaInfo.width=r.width),"number"==typeof r.height&&(this._mediaInfo.height=r.height),"number"==typeof r.duration){if(!this._durationOverrided){var s=Math.floor(r.duration*this._timescale);this._duration=s,this._mediaInfo.duration=s}}else this._mediaInfo.duration=0;if("number"==typeof r.framerate){var o=Math.floor(1e3*r.framerate);if(o>0){var u=o/1e3;this._referenceFrameRate.fixed=!0,this._referenceFrameRate.fps=u,this._referenceFrameRate.fps_num=o,this._referenceFrameRate.fps_den=1e3,this._mediaInfo.fps=u}}if("object"===a(r.keyframes)){this._mediaInfo.hasKeyframesIndex=!0;var d=r.keyframes;this._mediaInfo.keyframesIndex=this._parseKeyframesIndex(d),r.keyframes=null}else this._mediaInfo.hasKeyframesIndex=!1;this._dispatch=!1,this._mediaInfo.metadata=r,l.default.v(this.TAG,"Parsed onMetaData"),this._mediaInfo.isComplete()&&this._onMediaInfo(this._mediaInfo)}}},{key:"_parseKeyframesIndex",value:function(e){for(var t=[],n=[],i=1;i>>4;if(2!==a&&10!==a)return void this._onError(m.default.CODEC_UNSUPPORTED,"Flv: Unsupported audio codec idx: "+a);var o=0,u=(12&s)>>>2;if(!(u>=0&&u<=4))return void this._onError(m.default.FORMAT_ERROR,"Flv: Invalid audio sample rate idx: "+u);o=this._flvSoundRateTable[u];var d=1&s,h=this._audioMetadata,f=this._audioTrack;if(h||(!1===this._hasAudio&&!1===this._hasAudioFlagOverrided&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),h=this._audioMetadata={},h.type="audio",h.id=f.id,h.timescale=this._timescale,h.duration=this._duration,h.audioSampleRate=o,h.channelCount=0===d?1:2),10===a){var c=this._parseAACAudioData(e,t+1,n-1);if(void 0==c)return;if(0===c.packetType){h.config&&l.default.w(this.TAG,"Found another AudioSpecificConfig!");var _=c.data;h.audioSampleRate=_.samplingRate,h.channelCount=_.channelCount,h.codec=_.codec,h.originalCodec=_.originalCodec,h.config=_.config,h.refSampleDuration=1024/h.audioSampleRate*h.timescale,l.default.v(this.TAG,"Parsed AudioSpecificConfig"),this._isInitialMetadataDispatched()?this._dispatch&&(this._audioTrack.length||this._videoTrack.length)&&this._onDataAvailable(this._audioTrack,this._videoTrack):this._audioInitialMetadataDispatched=!0,this._dispatch=!1,this._onTrackMetadata("audio",h);var p=this._mediaInfo;p.audioCodec=h.originalCodec,p.audioSampleRate=h.audioSampleRate,p.audioChannelCount=h.channelCount,p.hasVideo?null!=p.videoCodec&&(p.mimeType='video/x-flv; codecs="'+p.videoCodec+","+p.audioCodec+'"'):p.mimeType='video/x-flv; codecs="'+p.audioCodec+'"',p.isComplete()&&this._onMediaInfo(p)}else if(1===c.packetType){var v=this._timestampBase+i,g={unit:c.data,dts:v,pts:v};f.samples.push(g),f.length+=c.data.length}else l.default.e(this.TAG,"Flv: Unsupported AAC data type "+c.packetType)}else if(2===a){if(!h.codec){var y=this._parseMP3AudioData(e,t+1,n-1,!0);if(void 0==y)return;h.audioSampleRate=y.samplingRate,h.channelCount=y.channelCount,h.codec=y.codec,h.originalCodec=y.originalCodec,h.refSampleDuration=1152/h.audioSampleRate*h.timescale,l.default.v(this.TAG,"Parsed MPEG Audio Frame Header"),this._audioInitialMetadataDispatched=!0,this._onTrackMetadata("audio",h);var E=this._mediaInfo;E.audioCodec=h.codec,E.audioSampleRate=h.audioSampleRate,E.audioChannelCount=h.channelCount,E.audioDataRate=y.bitRate,E.hasVideo?null!=E.videoCodec&&(E.mimeType='video/x-flv; codecs="'+E.videoCodec+","+E.audioCodec+'"'):E.mimeType='video/x-flv; codecs="'+E.audioCodec+'"',E.isComplete()&&this._onMediaInfo(E)}var b=this._parseMP3AudioData(e,t+1,n-1,!1);if(void 0==b)return;var S=this._timestampBase+i,k={unit:b,dts:S,pts:S};f.samples.push(k),f.length+=b.length}}}},{ -key:"_parseAACAudioData",value:function(e,t,n){if(n<=1)return void l.default.w(this.TAG,"Flv: Invalid AAC packet, missing AACPacketType or/and Data!");var i={},r=new Uint8Array(e,t,n);return i.packetType=r[0],0===r[0]?i.data=this._parseAACAudioSpecificConfig(e,t+1,n-1):i.data=r.subarray(1),i}},{key:"_parseAACAudioSpecificConfig",value:function(e,t,n){var i=new Uint8Array(e,t,n),r=null,s=0,a=0,o=0,u=null;if(s=a=i[0]>>>3,(o=(7&i[0])<<1|i[1]>>>7)<0||o>=this._mpegSamplingRates.length)return void this._onError(m.default.FORMAT_ERROR,"Flv: AAC invalid sampling frequency index!");var l=this._mpegSamplingRates[o],d=(120&i[1])>>>3;if(d<0||d>=8)return void this._onError(m.default.FORMAT_ERROR,"Flv: AAC invalid channel configuration");5===s&&(u=(7&i[1])<<1|i[2]>>>7,i[2]);var h=self.navigator.userAgent.toLowerCase();return-1!==h.indexOf("firefox")?o>=6?(s=5,r=new Array(4),u=o-3):(s=2,r=new Array(2),u=o):-1!==h.indexOf("android")?(s=2,r=new Array(2),u=o):(s=5,u=o,r=new Array(4),o>=6?u=o-3:1===d&&(s=2,r=new Array(2),u=o)),r[0]=s<<3,r[0]|=(15&o)>>>1,r[1]=(15&o)<<7,r[1]|=(15&d)<<3,5===s&&(r[1]|=(15&u)>>>1,r[2]=(1&u)<<7,r[2]|=8,r[3]=0),{config:r,samplingRate:l,channelCount:d,codec:"mp4a.40."+s,originalCodec:"mp4a.40."+a}}},{key:"_parseMP3AudioData",value:function(e,t,n,i){if(n<4)return void l.default.w(this.TAG,"Flv: Invalid MP3 packet, header missing!");var r=(this._littleEndian,new Uint8Array(e,t,n)),s=null;if(i){if(255!==r[0])return;var a=r[1]>>>3&3,o=(6&r[1])>>1,u=(240&r[2])>>>4,d=(12&r[2])>>>2,h=r[3]>>>6&3,f=3!==h?2:1,c=0,_=0;switch(a){case 0:c=this._mpegAudioV25SampleRateTable[d];break;case 2:c=this._mpegAudioV20SampleRateTable[d];break;case 3:c=this._mpegAudioV10SampleRateTable[d]}switch(o){case 1:34,u>>4,o=15&s;if(7!==o)return void this._onError(m.default.CODEC_UNSUPPORTED,"Flv: Unsupported codec in video frame: "+o);this._parseAVCVideoPacket(e,t+1,n-1,i,r,a)}}},{key:"_parseAVCVideoPacket",value:function(e,t,n,i,r,s){if(n<4)return void l.default.w(this.TAG,"Flv: Invalid AVC packet, missing AVCPacketType or/and CompositionTime");var a=this._littleEndian,o=new DataView(e,t,n),u=o.getUint8(0),d=16777215&o.getUint32(0,!a);if(0===u)this._parseAVCDecoderConfigurationRecord(e,t+4,n-4);else if(1===u)this._parseAVCVideoData(e,t+4,n-4,i,r,s,d);else if(2!==u)return void this._onError(m.default.FORMAT_ERROR,"Flv: Invalid video packet type "+u)}},{key:"_parseAVCDecoderConfigurationRecord",value:function(e,t,n){if(n<7)return void l.default.w(this.TAG,"Flv: Invalid AVCDecoderConfigurationRecord, lack of data!");var i=this._videoMetadata,r=this._videoTrack,s=this._littleEndian,a=new DataView(e,t,n);i?void 0!==i.avcc&&l.default.w(this.TAG,"Found another AVCDecoderConfigurationRecord!"):(!1===this._hasVideo&&!1===this._hasVideoFlagOverrided&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),i=this._videoMetadata={},i.type="video",i.id=r.id,i.timescale=this._timescale,i.duration=this._duration);var o=a.getUint8(0),u=a.getUint8(1);a.getUint8(2),a.getUint8(3);if(1!==o||0===u)return void this._onError(m.default.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord");if(this._naluLengthSize=1+(3&a.getUint8(4)),3!==this._naluLengthSize&&4!==this._naluLengthSize)return void this._onError(m.default.FORMAT_ERROR,"Flv: Strange NaluLengthSizeMinusOne: "+(this._naluLengthSize-1));var d=31&a.getUint8(5);if(0===d)return void this._onError(m.default.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord: No SPS");d>1&&l.default.w(this.TAG,"Flv: Strange AVCDecoderConfigurationRecord: SPS Count = "+d);for(var h=6,f=0;f1&&l.default.w(this.TAG,"Flv: Strange AVCDecoderConfigurationRecord: PPS Count = "+w),h++;for(var R=0;R=n){l.default.w(this.TAG,"Malformed Nalu near timestamp "+_+", offset = "+f+", dataSize = "+n);break}var p=u.getUint32(f,!o);if(3===c&&(p>>>=8),p>n-c)return void l.default.w(this.TAG,"Malformed Nalus near timestamp "+_+", NaluSize > DataSize!");var v=31&u.getUint8(f+c);5===v&&(m=!0);var g=new Uint8Array(e,t+f,c+p),y={type:v,data:g};d.push(y),h+=g.byteLength,f+=c+p}if(d.length){var E=this._videoTrack,b={units:d,length:h,isKeyframe:m,dts:_,cts:a,pts:_+a};m&&(b.fileposition=r),E.samples.push(b),E.length+=h}}},{key:"onTrackMetadata",get:function(){return this._onTrackMetadata},set:function(e){this._onTrackMetadata=e}},{key:"onMediaInfo",get:function(){return this._onMediaInfo},set:function(e){this._onMediaInfo=e}},{key:"onError",get:function(){return this._onError},set:function(e){this._onError=e}},{key:"onDataAvailable",get:function(){return this._onDataAvailable},set:function(e){this._onDataAvailable=e}},{key:"timestampBase",get:function(){return this._timestampBase},set:function(e){this._timestampBase=e}},{key:"overridedDuration",get:function(){return this._duration},set:function(e){this._durationOverrided=!0,this._duration=e,this._mediaInfo.duration=e}},{key:"overridedHasAudio",set:function(e){this._hasAudioFlagOverrided=!0,this._hasAudio=e,this._mediaInfo.hasAudio=e}},{key:"overridedHasVideo",set:function(e){this._hasVideoFlagOverrided=!0,this._hasVideo=e,this._mediaInfo.hasVideo=e}}],[{key:"probe",value:function(e){var t=new Uint8Array(e),n={match:!1};if(70!==t[0]||76!==t[1]||86!==t[2]||1!==t[3])return n;var i=(4&t[4])>>>2!=0,r=0!=(1&t[4]),a=s(t,5);return a<9?n:{match:!0,consumed:a,dataOffset:a,hasAudioTrack:i,hasVideoTrack:r}}}]),e}();n.default=y},{"../core/media-info.js":7,"../utils/exception.js":40,"../utils/logger.js":41,"./amf-parser.js":15,"./demux-errors.js":16,"./sps-parser.js":19}],19:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n=2&&3===t[s]&&0===t[s-1]&&0===t[s-2]||(i[r]=t[s],r++);return new Uint8Array(i.buffer,0,r)}},{key:"parseSPS",value:function(t){var n=e._ebsp2rbsp(t),i=new a.default(n);i.readByte();var r=i.readByte();i.readByte();var s=i.readByte();i.readUEG();var o=e.getProfileString(r),u=e.getLevelString(s),l=1,d=420,h=[0,420,422,444],f=8;if((100===r||110===r||122===r||244===r||44===r||83===r||86===r||118===r||128===r||138===r||144===r)&&(l=i.readUEG(),3===l&&i.readBits(1),l<=3&&(d=h[l]),f=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool()))for(var c=3!==l?8:12,_=0;_0&&I<16?(w=x[I-1],R=M[I-1]):255===I&&(w=i.readByte()<<8|i.readByte(),R=i.readByte()<<8|i.readByte())}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(4),i.readBool()&&i.readBits(24)),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool()){var D=i.readBits(32),B=i.readBits(32);O=i.readBool(),T=B,C=2*D,A=T/C}}var j=1;1===w&&1===R||(j=w/R);var P=0,U=0;if(0===l)P=1,U=2-E;else{var N=3===l?1:2,F=1===l?2:1;P=N,U=F*(2-E)}var G=16*(g+1),V=16*(y+1)*(2-E);G-=(b+S)*P,V-=(k+L)*U;var z=Math.ceil(G*j);return i.destroy(),i=null,{profile_string:o,level_string:u,bit_depth:f,chroma_format:d,chroma_format_string:e.getChromaFormatString(d),frame_rate:{fixed:O,fps:A,fps_den:C,fps_num:T},sar_ratio:{width:w,height:R},codec_size:{width:G,height:V},present_size:{width:z,height:V}}}},{key:"_skipScalingList",value:function(e,t){for(var n=8,i=8,r=0,s=0;s=15048,t=!f.default.msedge||e;return self.fetch&&self.ReadableStream&&t}catch(e){return!1}}}]),l(t,[{key:"destroy",value:function(){this.isWorking()&&this.abort(),u(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"destroy",this).call(this)}},{key:"open",value:function(e,t){var n=this;this._dataSource=e,this._range=t;var i=e.url;this._config.reuseRedirectedURL&&void 0!=e.redirectedURL&&(i=e.redirectedURL);var r=this._seekHandler.getConfig(i,t),s=new self.Headers;if("object"===o(r.headers)){var a=r.headers;for(var u in a)a.hasOwnProperty(u)&&s.append(u,a[u])}var l={method:"GET",headers:s,mode:"cors",cache:"default",referrerPolicy:"no-referrer-when-downgrade"};!1===e.cors&&(l.mode="same-origin"),e.withCredentials&&(l.credentials="include"),e.referrerPolicy&&(l.referrerPolicy=e.referrerPolicy),this._status=c.LoaderStatus.kConnecting,self.fetch(r.url,l).then(function(e){if(n._requestAbort)return n._requestAbort=!1,void(n._status=c.LoaderStatus.kIdle);if(e.ok&&e.status>=200&&e.status<=299){if(e.url!==r.url&&n._onURLRedirect){var t=n._seekHandler.removeURLParameters(e.url);n._onURLRedirect(t)}var i=e.headers.get("Content-Length");return null!=i&&(n._contentLength=parseInt(i),0!==n._contentLength&&n._onContentLengthKnown&&n._onContentLengthKnown(n._contentLength)),n._pump.call(n,e.body.getReader())}if(n._status=c.LoaderStatus.kError,!n._onError)throw new _.RuntimeException("FetchStreamLoader: Http code invalid, "+e.status+" "+e.statusText);n._onError(c.LoaderErrors.HTTP_STATUS_CODE_INVALID,{code:e.status,msg:e.statusText})}).catch(function(e){if(n._status=c.LoaderStatus.kError,!n._onError)throw e;n._onError(c.LoaderErrors.EXCEPTION,{code:-1,msg:e.message})})}},{key:"abort",value:function(){this._requestAbort=!0}},{key:"_pump",value:function(e){var t=this;return e.read().then(function(n){if(n.done)t._status=c.LoaderStatus.kComplete,t._onComplete&&t._onComplete(t._range.from,t._range.from+t._receivedLength-1);else{if(!0===t._requestAbort)return t._requestAbort=!1,t._status=c.LoaderStatus.kComplete,e.cancel();t._status=c.LoaderStatus.kBuffering;var i=n.value.buffer,r=t._range.from+t._receivedLength;t._receivedLength+=i.byteLength,t._onDataArrival&&t._onDataArrival(i,r,t._receivedLength),t._pump(e)}}).catch(function(e){if(11!==e.code||!f.default.msedge){t._status=c.LoaderStatus.kError;var n=0,i=null;if(19!==e.code&&"network error"!==e.message||!(null===t._contentLength||null!==t._contentLength&&t._receivedLength0&&(this._stashInitialSize=n.stashInitialSize),this._stashUsed=0,this._stashSize=this._stashInitialSize,this._bufferSize=3145728,this._stashBuffer=new ArrayBuffer(this._bufferSize),this._stashByteStart=0,this._enableStash=!0,!1===n.enableStashBuffer&&(this._enableStash=!1),this._loader=null,this._loaderClass=null,this._seekHandler=null,this._dataSource=t,this._isWebSocketURL=/wss?:\/\/(.+?)/.test(t.url),this._refTotalLength=t.filesize?t.filesize:null,this._totalLength=this._refTotalLength,this._fullRequestFlag=!1,this._currentRange=null,this._redirectedURL=null,this._speedNormalized=0,this._speedSampler=new l.default,this._speedNormalizeList=[64,128,256,384,512,768,1024,1536,2048,3072,4096],this._isEarlyEofReconnecting=!1,this._paused=!1,this._resumeFrom=0,this._onDataArrival=null,this._onSeeked=null,this._onError=null,this._onComplete=null,this._onRedirect=null,this._onRecoveredEarlyEof=null,this._selectSeekHandler(),this._selectLoader(),this._createLoader()}return s(e,[{key:"destroy",value:function(){this._loader.isWorking()&&this._loader.abort(),this._loader.destroy(),this._loader=null,this._loaderClass=null,this._dataSource=null,this._stashBuffer=null,this._stashUsed=this._stashSize=this._bufferSize=this._stashByteStart=0,this._currentRange=null,this._speedSampler=null,this._isEarlyEofReconnecting=!1,this._onDataArrival=null,this._onSeeked=null,this._onError=null,this._onComplete=null,this._onRedirect=null,this._onRecoveredEarlyEof=null,this._extraData=null}},{key:"isWorking",value:function(){return this._loader&&this._loader.isWorking()&&!this._paused}},{key:"isPaused",value:function(){return this._paused}},{key:"_selectSeekHandler",value:function(){var e=this._config;if("range"===e.seekType)this._seekHandler=new b.default(this._config.rangeLoadZeroStart);else if("param"===e.seekType){var t=e.seekParamStart||"bstart",n=e.seekParamEnd||"bend";this._seekHandler=new k.default(t,n)}else{if("custom"!==e.seekType)throw new L.InvalidArgumentException("Invalid seekType in config: "+e.seekType);if("function"!=typeof e.customSeekHandler)throw new L.InvalidArgumentException("Custom seekType specified in config but invalid customSeekHandler!");this._seekHandler=new e.customSeekHandler}}},{key:"_selectLoader",value:function(){if(this._isWebSocketURL)this._loaderClass=y.default;else if(f.default.isSupported())this._loaderClass=f.default;else if(_.default.isSupported())this._loaderClass=_.default;else{if(!v.default.isSupported())throw new L.RuntimeException("Your browser doesn't support xhr with arraybuffer responseType!");this._loaderClass=v.default}}},{key:"_createLoader",value:function(){this._loader=new this._loaderClass(this._seekHandler,this._config),!1===this._loader.needStashBuffer&&(this._enableStash=!1),this._loader.onContentLengthKnown=this._onContentLengthKnown.bind(this),this._loader.onURLRedirect=this._onURLRedirect.bind(this),this._loader.onDataArrival=this._onLoaderChunkArrival.bind(this),this._loader.onComplete=this._onLoaderComplete.bind(this),this._loader.onError=this._onLoaderError.bind(this)}},{key:"open",value:function(e){this._currentRange={from:0,to:-1},e&&(this._currentRange.from=e),this._speedSampler.reset(),e||(this._fullRequestFlag=!0),this._loader.open(this._dataSource,Object.assign({},this._currentRange))}},{key:"abort",value:function(){this._loader.abort(),this._paused&&(this._paused=!1,this._resumeFrom=0)}},{key:"pause",value:function(){this.isWorking()&&(this._loader.abort(),0!==this._stashUsed?(this._resumeFrom=this._stashByteStart,this._currentRange.to=this._stashByteStart-1):this._resumeFrom=this._currentRange.to+1,this._stashUsed=0,this._stashByteStart=0,this._paused=!0)}},{key:"resume",value:function(){if(this._paused){this._paused=!1;var e=this._resumeFrom;this._resumeFrom=0,this._internalSeek(e,!0)}}},{key:"seek",value:function(e){this._paused=!1,this._stashUsed=0,this._stashByteStart=0,this._internalSeek(e,!0)}},{key:"_internalSeek",value:function(e,t){this._loader.isWorking()&&this._loader.abort(),this._flushStashBuffer(t),this._loader.destroy(),this._loader=null;var n={from:e,to:-1};this._currentRange={from:n.from,to:-1},this._speedSampler.reset(),this._stashSize=this._stashInitialSize,this._createLoader(),this._loader.open(this._dataSource,n),this._onSeeked&&this._onSeeked()}},{key:"updateUrl",value:function(e){if(!e||"string"!=typeof e||0===e.length)throw new L.InvalidArgumentException("Url must be a non-empty string!");this._dataSource.url=e}},{key:"_expandBuffer",value:function(e){for(var t=this._stashSize;t+10485760){var i=new Uint8Array(this._stashBuffer,0,this._stashUsed);new Uint8Array(n,0,t).set(i,0)}this._stashBuffer=n,this._bufferSize=t}}},{key:"_normalizeSpeed",value:function(e){var t=this._speedNormalizeList,n=t.length-1,i=0,r=0,s=n;if(e=t[i]&&e=512&&e<=1024?Math.floor(1.5*e):2*e)>8192&&(t=8192);var n=1024*t+1048576;this._bufferSize0){var o=this._stashBuffer.slice(0,this._stashUsed),u=this._dispatchChunks(o,this._stashByteStart);if(u0){var l=new Uint8Array(o,u);a.set(l,0),this._stashUsed=l.byteLength,this._stashByteStart+=u}}else this._stashUsed=0,this._stashByteStart+=u;this._stashUsed+e.byteLength>this._bufferSize&&(this._expandBuffer(this._stashUsed+e.byteLength),a=new Uint8Array(this._stashBuffer,0,this._bufferSize)),a.set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength}else{var d=this._dispatchChunks(e,t);if(dthis._bufferSize&&(this._expandBuffer(h),a=new Uint8Array(this._stashBuffer,0,this._bufferSize)),a.set(new Uint8Array(e,d),0),this._stashUsed+=h,this._stashByteStart=t+d}}}else if(0===this._stashUsed){var f=this._dispatchChunks(e,t);if(fthis._bufferSize&&this._expandBuffer(c);var _=new Uint8Array(this._stashBuffer,0,this._bufferSize);_.set(new Uint8Array(e,f),0),this._stashUsed+=c,this._stashByteStart=t+f}}else{this._stashUsed+e.byteLength>this._bufferSize&&this._expandBuffer(this._stashUsed+e.byteLength);var m=new Uint8Array(this._stashBuffer,0,this._bufferSize);m.set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength;var p=this._dispatchChunks(this._stashBuffer.slice(0,this._stashUsed),this._stashByteStart);if(p0){var v=new Uint8Array(this._stashBuffer,p);m.set(v,0)}this._stashUsed-=p,this._stashByteStart+=p}}}},{key:"_flushStashBuffer",value:function(e){if(this._stashUsed>0){var t=this._stashBuffer.slice(0,this._stashUsed),n=this._dispatchChunks(t,this._stashByteStart),i=t.byteLength-n;if(n0){var r=new Uint8Array(this._stashBuffer,0,this._bufferSize),s=new Uint8Array(t,n);r.set(s,0),this._stashUsed=s.byteLength,this._stashByteStart+=n}return 0}o.default.w(this.TAG,i+" bytes unconsumed data remain when flush buffer, dropped")}return this._stashUsed=0,this._stashByteStart=0,i}return 0}},{key:"_onLoaderComplete",value:function(e,t){this._flushStashBuffer(!0),this._onComplete&&this._onComplete(this._extraData)}},{key:"_onLoaderError",value:function(e,t){switch(o.default.e(this.TAG,"Loader error, code = "+t.code+", msg = "+t.msg),this._flushStashBuffer(!1),this._isEarlyEofReconnecting&&(this._isEarlyEofReconnecting=!1,e=d.LoaderErrors.UNRECOVERABLE_EARLY_EOF),e){case d.LoaderErrors.EARLY_EOF:if(!this._config.isLive&&this._totalLength){var n=this._currentRange.to+1;return void(n0)for(var s=n.split("&"),a=0;a0;o[0]!==this._startName&&o[0]!==this._endName&&(u&&(r+="&"),r+=s[a])}return 0===r.length?t:t+"?"+r}}]),e}();n.default=s},{}],26:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n=500?this.currentKBps:0}},{key:"averageKBps",get:function(){var e=(this._now()-this._firstCheckpoint)/1e3;return this._totalBytes/e/1024}}]),e}();n.default=s},{}],28:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(n,"__esModule",{value:!0});var a=function e(t,n,i){null===t&&(t=Function.prototype);var r=Object.getOwnPropertyDescriptor(t,n);if(void 0===r){var s=Object.getPrototypeOf(t);return null===s?void 0:e(s,n,i)}if("value"in r)return r.value;var a=r.get;if(void 0!==a)return a.call(i)},o=function(){function e(e,t){for(var n=0;n299)){if(this._status=h.LoaderStatus.kError,!this._onError)throw new f.RuntimeException("MozChunkedLoader: Http code invalid, "+t.status+" "+t.statusText);this._onError(h.LoaderErrors.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText})}else this._status=h.LoaderStatus.kBuffering}}},{key:"_onProgress",value:function(e){if(this._status!==h.LoaderStatus.kError){null===this._contentLength&&null!==e.total&&0!==e.total&&(this._contentLength=e.total,this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength));var t=e.target.response,n=this._range.from+this._receivedLength;this._receivedLength+=t.byteLength,this._onDataArrival&&this._onDataArrival(t,n,this._receivedLength)}}},{key:"_onLoadEnd",value:function(e){if(!0===this._requestAbort)return void(this._requestAbort=!1);this._status!==h.LoaderStatus.kError&&(this._status=h.LoaderStatus.kComplete,this._onComplete&&this._onComplete(this._range.from,this._range.from+this._receivedLength-1))}},{key:"_onXhrError",value:function(e){this._status=h.LoaderStatus.kError;var t=0,n=null;if(this._contentLength&&e.loaded=200&&t.status<=299){if(this._status=h.LoaderStatus.kBuffering,void 0!=t.responseURL){var n=this._seekHandler.removeURLParameters(t.responseURL);t.responseURL!==this._currentRequestURL&&n!==this._currentRedirectedURL&&(this._currentRedirectedURL=n,this._onURLRedirect&&this._onURLRedirect(n))}var i=t.getResponseHeader("Content-Length");if(null!=i&&null==this._contentLength){var r=parseInt(i);r>0&&(this._contentLength=r,this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength))}}else{if(this._status=h.LoaderStatus.kError,!this._onError)throw new f.RuntimeException("MSStreamLoader: Http code invalid, "+t.status+" "+t.statusText);this._onError(h.LoaderErrors.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText})}else if(3===t.readyState&&t.status>=200&&t.status<=299){this._status=h.LoaderStatus.kBuffering;var s=t.response;this._reader.readAsArrayBuffer(s)}}},{key:"_xhrOnError",value:function(e){this._status=h.LoaderStatus.kError;var t=h.LoaderErrors.EXCEPTION,n={code:-1,msg:e.constructor.name+" "+e.type};if(!this._onError)throw new f.RuntimeException(n.msg);this._onError(t,n)}},{key:"_msrOnProgress",value:function(e){var t=e.target,n=t.result;if(null==n)return void this._doReconnectIfNeeded();var i=n.slice(this._lastTimeBufferSize);this._lastTimeBufferSize=n.byteLength;var r=this._totalRange.from+this._receivedLength;this._receivedLength+=i.byteLength,this._onDataArrival&&this._onDataArrival(i,r,this._receivedLength),n.byteLength>=this._bufferLimit&&(d.default.v(this.TAG,"MSStream buffer exceeded max size near "+(r+i.byteLength)+", reconnecting..."),this._doReconnectIfNeeded())}},{key:"_doReconnectIfNeeded",value:function(){if(null==this._contentLength||this._receivedLength=this._contentLength&&(n=this._range.from+this._contentLength-1),this._currentRequestRange={from:t,to:n},this._internalOpen(this._dataSource,this._currentRequestRange)}},{key:"_internalOpen",value:function(e,t){this._lastTimeLoaded=0;var n=e.url;this._config.reuseRedirectedURL&&(void 0!=this._currentRedirectedURL?n=this._currentRedirectedURL:void 0!=e.redirectedURL&&(n=e.redirectedURL));var i=this._seekHandler.getConfig(n,t);this._currentRequestURL=i.url;var r=this._xhr=new XMLHttpRequest;if(r.open("GET",i.url,!0),r.responseType="arraybuffer",r.onreadystatechange=this._onReadyStateChange.bind(this),r.onprogress=this._onProgress.bind(this),r.onload=this._onLoad.bind(this),r.onerror=this._onXhrError.bind(this),e.withCredentials&&r.withCredentials&&(r.withCredentials=!0),"object"===o(i.headers)){var s=i.headers;for(var a in s)s.hasOwnProperty(a)&&r.setRequestHeader(a,s[a])}r.send()}},{key:"abort",value:function(){this._requestAbort=!0,this._internalAbort(),this._status=_.LoaderStatus.kComplete}},{key:"_internalAbort",value:function(){this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onload=null,this._xhr.onerror=null,this._xhr.abort(),this._xhr=null)}},{key:"_onReadyStateChange",value:function(e){var t=e.target;if(2===t.readyState){if(void 0!=t.responseURL){var n=this._seekHandler.removeURLParameters(t.responseURL);t.responseURL!==this._currentRequestURL&&n!==this._currentRedirectedURL&&(this._currentRedirectedURL=n,this._onURLRedirect&&this._onURLRedirect(n))}if(t.status>=200&&t.status<=299){if(this._waitForTotalLength)return;this._status=_.LoaderStatus.kBuffering}else{if(this._status=_.LoaderStatus.kError,!this._onError)throw new m.RuntimeException("RangeLoader: Http code invalid, "+t.status+" "+t.statusText);this._onError(_.LoaderErrors.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText})}}}},{key:"_onProgress",value:function(e){if(this._status!==_.LoaderStatus.kError){if(null===this._contentLength){var t=!1;if(this._waitForTotalLength){this._waitForTotalLength=!1,this._totalLengthReceived=!0,t=!0;var n=e.total;this._internalAbort(),null!=n&0!==n&&(this._totalLength=n)}if(-1===this._range.to?this._contentLength=this._totalLength-this._range.from:this._contentLength=this._range.to-this._range.from+1,t)return void this._openSubRange();this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength)}var i=e.loaded-this._lastTimeLoaded;this._lastTimeLoaded=e.loaded,this._speedSampler.addBytes(i)}}},{key:"_normalizeSpeed",value:function(e){var t=this._chunkSizeKBList,n=t.length-1,i=0,r=0,s=n;if(e=t[i]&&e=3&&(t=this._speedSampler.currentKBps),0!==t){var n=this._normalizeSpeed(t);this._currentSpeedNormalized!==n&&(this._currentSpeedNormalized=n,this._currentChunkSizeKB=n)}var i=e.target.response,r=this._range.from+this._receivedLength;this._receivedLength+=i.byteLength;var s=!1;null!=this._contentLength&&this._receivedLength0&&this._receivedLength0&&(this._requestSetTime=!0,this._mediaElement.currentTime=0),this._transmuxer=new p.default(this._mediaDataSource,this._config),this._transmuxer.on(g.default.INIT_SEGMENT,function(t,n){e._msectl.appendInitSegment(n)}),this._transmuxer.on(g.default.MEDIA_SEGMENT,function(t,n){if(e._msectl.appendMediaSegment(n),e._config.lazyLoad&&!e._config.isLive){var i=e._mediaElement.currentTime;n.info.endDts>=1e3*(i+e._config.lazyLoadMaxDuration)&&null==e._progressChecker&&(d.default.v(e.TAG,"Maximum buffering duration exceeded, suspend transmuxing task"),e._suspendTransmuxer())}}),this._transmuxer.on(g.default.LOADING_COMPLETE,function(){e._msectl.endOfStream(),e._emitter.emit(_.default.LOADING_COMPLETE)}),this._transmuxer.on(g.default.RECOVERED_EARLY_EOF,function(){e._emitter.emit(_.default.RECOVERED_EARLY_EOF)}),this._transmuxer.on(g.default.IO_ERROR,function(t,n){e._emitter.emit(_.default.ERROR,k.ErrorTypes.NETWORK_ERROR,t,n)}),this._transmuxer.on(g.default.DEMUX_ERROR,function(t,n){e._emitter.emit(_.default.ERROR,k.ErrorTypes.MEDIA_ERROR,t,{code:-1,msg:n})}), -this._transmuxer.on(g.default.MEDIA_INFO,function(t){e._mediaInfo=t,e._emitter.emit(_.default.MEDIA_INFO,Object.assign({},t))}),this._transmuxer.on(g.default.STATISTICS_INFO,function(t){e._statisticsInfo=e._fillStatisticsInfo(t),e._emitter.emit(_.default.STATISTICS_INFO,Object.assign({},e._statisticsInfo))}),this._transmuxer.on(g.default.RECOMMEND_SEEKPOINT,function(t){e._mediaElement&&!e._config.accurateSeek&&(e._requestSetTime=!0,e._mediaElement.currentTime=t/1e3)}),this._transmuxer.open()}}},{key:"unload",value:function(){this._mediaElement&&this._mediaElement.pause(),this._msectl&&this._msectl.seek(0),this._transmuxer&&(this._transmuxer.close(),this._transmuxer.destroy(),this._transmuxer=null)}},{key:"play",value:function(){return this._mediaElement.play()}},{key:"pause",value:function(){this._mediaElement.pause()}},{key:"_fillStatisticsInfo",value:function(e){if(e.playerType=this._type,!(this._mediaElement instanceof HTMLVideoElement))return e;var t=!0,n=0,i=0;if(this._mediaElement.getVideoPlaybackQuality){var r=this._mediaElement.getVideoPlaybackQuality();n=r.totalVideoFrames,i=r.droppedVideoFrames}else void 0!=this._mediaElement.webkitDecodedFrameCount?(n=this._mediaElement.webkitDecodedFrameCount,i=this._mediaElement.webkitDroppedFrameCount):t=!1;return t&&(e.decodedFrames=n,e.droppedFrames=i),e}},{key:"_onmseUpdateEnd",value:function(){if(this._config.lazyLoad&&!this._config.isLive){for(var e=this._mediaElement.buffered,t=this._mediaElement.currentTime,n=0,i=0;i=t+this._config.lazyLoadMaxDuration&&null==this._progressChecker&&(d.default.v(this.TAG,"Maximum buffering duration exceeded, suspend transmuxing task"),this._suspendTransmuxer())}}},{key:"_onmseBufferFull",value:function(){d.default.v(this.TAG,"MSE SourceBuffer is full, suspend transmuxing task"),null==this._progressChecker&&this._suspendTransmuxer()}},{key:"_suspendTransmuxer",value:function(){this._transmuxer&&(this._transmuxer.pause(),null==this._progressChecker&&(this._progressChecker=window.setInterval(this._checkProgressAndResume.bind(this),1e3)))}},{key:"_checkProgressAndResume",value:function(){for(var e=this._mediaElement.currentTime,t=this._mediaElement.buffered,n=!1,i=0;i=r&&e=s-this._config.lazyLoadRecoverDuration&&(n=!0);break}}n&&(window.clearInterval(this._progressChecker),this._progressChecker=null,n&&(d.default.v(this.TAG,"Continue loading from paused position"),this._transmuxer.resume()))}},{key:"_isTimepointBuffered",value:function(e){for(var t=this._mediaElement.buffered,n=0;n=i&&e0){var r=this._mediaElement.buffered.start(0);(r<1&&e0&&t.currentTime0){var i=n.start(0);if(i<1&&t0&&(this._mediaElement.currentTime=0),this._mediaElement.preload="auto",this._mediaElement.load(),this._statisticsReporter=window.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval)}},{key:"unload",value:function(){this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src")),null!=this._statisticsReporter&&(window.clearInterval(this._statisticsReporter),this._statisticsReporter=null)}},{key:"play",value:function(){return this._mediaElement.play()}},{key:"pause",value:function(){this._mediaElement.pause()}},{key:"_onvLoadedMetadata",value:function(e){null!=this._pendingSeekTime&&(this._mediaElement.currentTime=this._pendingSeekTime,this._pendingSeekTime=null),this._emitter.emit(d.default.MEDIA_INFO,this.mediaInfo)}},{key:"_reportStatisticsInfo",value:function(){this._emitter.emit(d.default.STATISTICS_INFO,this.statisticsInfo)}},{key:"type",get:function(){return this._type}},{key:"buffered",get:function(){return this._mediaElement.buffered}},{key:"duration",get:function(){return this._mediaElement.duration}},{key:"volume",get:function(){return this._mediaElement.volume},set:function(e){this._mediaElement.volume=e}},{key:"muted",get:function(){return this._mediaElement.muted},set:function(e){this._mediaElement.muted=e}},{key:"currentTime",get:function(){return this._mediaElement?this._mediaElement.currentTime:0},set:function(e){this._mediaElement?this._mediaElement.currentTime=e:this._pendingSeekTime=e}},{key:"mediaInfo",get:function(){var e=this._mediaElement instanceof HTMLAudioElement?"audio/":"video/",t={mimeType:e+this._mediaDataSource.type};return this._mediaElement&&(t.duration=Math.floor(1e3*this._mediaElement.duration),this._mediaElement instanceof HTMLVideoElement&&(t.width=this._mediaElement.videoWidth,t.height=this._mediaElement.videoHeight)),t}},{key:"statisticsInfo",get:function(){var e={playerType:this._type,url:this._mediaDataSource.url};if(!(this._mediaElement instanceof HTMLVideoElement))return e;var t=!0,n=0,i=0;if(this._mediaElement.getVideoPlaybackQuality){var r=this._mediaElement.getVideoPlaybackQuality();n=r.totalVideoFrames,i=r.droppedVideoFrames}else void 0!=this._mediaElement.webkitDecodedFrameCount?(n=this._mediaElement.webkitDecodedFrameCount,i=this._mediaElement.webkitDroppedFrameCount):t=!1;return t&&(e.decodedFrames=n,e.droppedFrames=i),e}}]),e}();n.default=c},{"../config.js":5,"../utils/exception.js":40,"./player-events.js":35,events:2}],34:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ErrorDetails=n.ErrorTypes=void 0;var i=e("../io/loader.js"),r=e("../demux/demux-errors.js"),s=function(e){return e&&e.__esModule?e:{default:e}}(r);n.ErrorTypes={NETWORK_ERROR:"NetworkError",MEDIA_ERROR:"MediaError",OTHER_ERROR:"OtherError"},n.ErrorDetails={NETWORK_EXCEPTION:i.LoaderErrors.EXCEPTION,NETWORK_STATUS_CODE_INVALID:i.LoaderErrors.HTTP_STATUS_CODE_INVALID,NETWORK_TIMEOUT:i.LoaderErrors.CONNECTING_TIMEOUT,NETWORK_UNRECOVERABLE_EARLY_EOF:i.LoaderErrors.UNRECOVERABLE_EARLY_EOF,MEDIA_MSE_ERROR:"MediaMSEError",MEDIA_FORMAT_ERROR:s.default.FORMAT_ERROR,MEDIA_FORMAT_UNSUPPORTED:s.default.FORMAT_UNSUPPORTED,MEDIA_CODEC_UNSUPPORTED:s.default.CODEC_UNSUPPORTED}},{"../demux/demux-errors.js":16,"../io/loader.js":24}],35:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i={ERROR:"error",LOADING_COMPLETE:"loading_complete",RECOVERED_EARLY_EOF:"recovered_early_eof",MEDIA_INFO:"media_info",STATISTICS_INFO:"statistics_info"};n.default=i},{}],36:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n>>24&255,n[1]=t>>>16&255,n[2]=t>>>8&255,n[3]=255&t,n.set(e,4);for(var a=8,o=0;o>>24&255,t>>>16&255,t>>>8&255,255&t,n>>>24&255,n>>>16&255,n>>>8&255,255&n,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}},{key:"trak",value:function(t){return e.box(e.types.trak,e.tkhd(t),e.mdia(t))}},{key:"tkhd",value:function(t){var n=t.id,i=t.duration,r=t.presentWidth,s=t.presentHeight;return e.box(e.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,r>>>8&255,255&r,0,0,s>>>8&255,255&s,0,0]))}},{key:"mdia",value:function(t){return e.box(e.types.mdia,e.mdhd(t),e.hdlr(t),e.minf(t))}},{key:"mdhd",value:function(t){var n=t.timescale,i=t.duration;return e.box(e.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n,i>>>24&255,i>>>16&255,i>>>8&255,255&i,85,196,0,0]))}},{key:"hdlr",value:function(t){var n=null;return n="audio"===t.type?e.constants.HDLR_AUDIO:e.constants.HDLR_VIDEO,e.box(e.types.hdlr,n)}},{key:"minf",value:function(t){var n=null;return n="audio"===t.type?e.box(e.types.smhd,e.constants.SMHD):e.box(e.types.vmhd,e.constants.VMHD),e.box(e.types.minf,n,e.dinf(),e.stbl(t))}},{key:"dinf",value:function(){return e.box(e.types.dinf,e.box(e.types.dref,e.constants.DREF))}},{key:"stbl",value:function(t){return e.box(e.types.stbl,e.stsd(t),e.box(e.types.stts,e.constants.STTS),e.box(e.types.stsc,e.constants.STSC),e.box(e.types.stsz,e.constants.STSZ),e.box(e.types.stco,e.constants.STCO))}},{key:"stsd",value:function(t){return"audio"===t.type?"mp3"===t.codec?e.box(e.types.stsd,e.constants.STSD_PREFIX,e.mp3(t)):e.box(e.types.stsd,e.constants.STSD_PREFIX,e.mp4a(t)):e.box(e.types.stsd,e.constants.STSD_PREFIX,e.avc1(t))}},{key:"mp3",value:function(t){var n=t.channelCount,i=t.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,n,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return e.box(e.types[".mp3"],r)}},{key:"mp4a",value:function(t){var n=t.channelCount,i=t.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,n,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return e.box(e.types.mp4a,r,e.esds(t))}},{key:"esds",value:function(t){var n=t.config||[],i=n.length,r=new Uint8Array([0,0,0,0,3,23+i,0,1,0,4,15+i,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([i]).concat(n).concat([6,1,2]));return e.box(e.types.esds,r)}},{key:"avc1",value:function(t){var n=t.avcc,i=t.codecWidth,r=t.codecHeight,s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,r>>>8&255,255&r,0,72,0,0,0,72,0,0,0,0,0,0,0,1,10,120,113,113,47,102,108,118,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return e.box(e.types.avc1,s,e.box(e.types.avcC,n))}},{key:"mvex",value:function(t){return e.box(e.types.mvex,e.trex(t))}},{key:"trex",value:function(t){var n=t.id,i=new Uint8Array([0,0,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return e.box(e.types.trex,i)}},{key:"moof",value:function(t,n){return e.box(e.types.moof,e.mfhd(t.sequenceNumber),e.traf(t,n))}},{key:"mfhd",value:function(t){var n=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t]);return e.box(e.types.mfhd,n)}},{key:"traf",value:function(t,n){var i=t.id,r=e.box(e.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),s=e.box(e.types.tfdt,new Uint8Array([0,0,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n])),a=e.sdtp(t),o=e.trun(t,a.byteLength+16+16+8+16+8+8);return e.box(e.types.traf,r,s,o,a)}},{key:"sdtp",value:function(t){for(var n=t.samples||[],i=n.length,r=new Uint8Array(4+i),s=0;s>>24&255,r>>>16&255,r>>>8&255,255&r,n>>>24&255,n>>>16&255,n>>>8&255,255&n],0);for(var o=0;o>>24&255,u>>>16&255,u>>>8&255,255&u,l>>>24&255,l>>>16&255,l>>>8&255,255&l,d.isLeading<<2|d.dependsOn,d.isDependedOn<<6|d.hasRedundancy<<4|d.isNonSync,0,0,h>>>24&255,h>>>16&255,h>>>8&255,255&h],12+16*o)}return e.box(e.types.trun,a)}},{key:"mdat",value:function(t){return e.box(e.types.mdat,t)}}]),e}();s.init(),n.default=s},{}],38:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n=1?A[A.length-1].duration:Math.floor(a);var D=!1,B=null;if(M>1.5*a&&"mp3"!==this._audioMeta.codec&&this._fillAudioTimestampGap&&!c.default.safari){D=!0;var j=Math.abs(M-a),P=Math.ceil(j/a),U=x+a;o.default.w(this.TAG,"Large audio timestamp gap detected, may cause AV sync to drift. Silent frames will be generated to avoid unsync.\ndts: "+(x+M)+" ms, expected: "+(x+Math.round(a))+" ms, delta: "+Math.round(j)+" ms, generate: "+P+" frames");var N=h.default.getSilentFrame(this._audioMeta.originalCodec,this._audioMeta.channelCount);null==N&&(o.default.w(this.TAG,"Unable to generate silent frame for "+this._audioMeta.originalCodec+" with "+this._audioMeta.channelCount+" channels, repeat last frame"),N=C),B=[];for(var F=0;F0){var V=B[B.length-1];V.duration=G-V.dts}var z={dts:G,pts:G,cts:0,unit:N,size:N.byteLength,duration:0,originalDts:I,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}};B.push(z),v+=C.byteLength,U+=a}var H=B[B.length-1];H.duration=x+M-H.dts,M=Math.round(a)}A.push({dts:x,pts:x,cts:0,unit:T.unit,size:T.unit.byteLength,duration:M,originalDts:I,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}}),D&&A.push.apply(A,B)}u?p=new Uint8Array(v):(p=new Uint8Array(v),p[0]=v>>>24&255,p[1]=v>>>16&255,p[2]=v>>>8&255,p[3]=255&v,p.set(l.default.types.mdat,4));for(var K=0;K>>24&255,h[1]=d>>>16&255,h[2]=d>>>8&255,h[3]=255&d,h.set(l.default.types.mdat,4);var f=n[0].dts-this._dtsBase;if(this._videoNextDts)i=f-this._videoNextDts;else if(this._videoSegmentInfoList.isEmpty())i=0;else{var c=this._videoSegmentInfoList.getLastSampleBefore(f);if(null!=c){var m=f-(c.originalDts+c.duration);m<=3&&(m=0);var p=c.dts+c.duration+m;i=f-p}else i=0}for(var v=new _.MediaSegmentInfo,g=[],y=0;y=1?g[g.length-1].duration:Math.floor(this._videoMeta.refSampleDuration);if(S){var A=new _.SampleInfo(k,w,R,E.dts,!0);A.fileposition=E.fileposition,v.appendSyncPoint(A)}g.push({dts:k,pts:w,cts:L,units:E.units,size:E.length,isKeyframe:S,duration:R,originalDts:b,flags:{isLeading:0,dependsOn:S?2:1,isDependedOn:S?1:0,hasRedundancy:0,isNonSync:S?0:1}})}for(var O=0;O=0&&/(rv)(?::| )([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(firefox)[ \/]([\w.]+)/.exec(e)||[],n=/(ipad)/.exec(e)||/(ipod)/.exec(e)||/(windows phone)/.exec(e)||/(iphone)/.exec(e)||/(kindle)/.exec(e)||/(android)/.exec(e)||/(windows)/.exec(e)||/(mac)/.exec(e)||/(linux)/.exec(e)||/(cros)/.exec(e)||[],r={browser:t[5]||t[3]||t[1]||"",version:t[2]||t[4]||"0",majorVersion:t[4]||t[2]||"0",platform:n[0]||""},s={};if(r.browser){s[r.browser]=!0;var a=r.majorVersion.split(".");s.version={major:parseInt(r.majorVersion,10),string:r.version},a.length>1&&(s.version.minor=parseInt(a[1],10)),a.length>2&&(s.version.build=parseInt(a[2],10))}r.platform&&(s[r.platform]=!0), -(s.chrome||s.opr||s.safari)&&(s.webkit=!0),(s.rv||s.iemobile)&&(s.rv&&delete s.rv,r.browser="msie",s.msie=!0),s.edge&&(delete s.edge,r.browser="msedge",s.msedge=!0),s.opr&&(r.browser="opera",s.opera=!0),s.safari&&s.android&&(r.browser="android",s.android=!0),s.name=r.browser,s.platform=r.platform;for(var o in i)i.hasOwnProperty(o)&&delete i[o];Object.assign(i,s)}(),n.default=i},{}],40:[function(e,t,n){"use strict";function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n "+n;e.ENABLE_CALLBACK&&e.emitter.emit("log","error",i),e.ENABLE_ERROR&&(console.error?console.error(i):console.warn?console.warn(i):console.log(i))}},{key:"i",value:function(t,n){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var i="["+t+"] > "+n;e.ENABLE_CALLBACK&&e.emitter.emit("log","info",i),e.ENABLE_INFO&&(console.info?console.info(i):console.log(i))}},{key:"w",value:function(t,n){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var i="["+t+"] > "+n;e.ENABLE_CALLBACK&&e.emitter.emit("log","warn",i),e.ENABLE_WARN&&(console.warn?console.warn(i):console.log(i))}},{key:"d",value:function(t,n){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var i="["+t+"] > "+n;e.ENABLE_CALLBACK&&e.emitter.emit("log","debug",i),e.ENABLE_DEBUG&&(console.debug?console.debug(i):console.log(i))}},{key:"v",value:function(t,n){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var i="["+t+"] > "+n;e.ENABLE_CALLBACK&&e.emitter.emit("log","verbose",i),e.ENABLE_VERBOSE&&console.log(i)}}]),e}();o.GLOBAL_TAG="flv.js",o.FORCE_GLOBAL_TAG=!1,o.ENABLE_ERROR=!0,o.ENABLE_INFO=!0,o.ENABLE_WARN=!0,o.ENABLE_DEBUG=!0,o.ENABLE_VERBOSE=!0,o.ENABLE_CALLBACK=!1,o.emitter=new a.default,n.default=o},{events:2}],42:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n0){var n=e.getConfig();t.emit("change",n)}}},{key:"registerListener",value:function(t){e.emitter.addListener("change",t)}},{key:"removeListener",value:function(t){e.emitter.removeListener("change",t)}},{key:"addLogListener",value:function(t){l.default.emitter.addListener("log",t),l.default.emitter.listenerCount("log")>0&&(l.default.ENABLE_CALLBACK=!0,e._notifyChange())}},{key:"removeLogListener",value:function(t){l.default.emitter.removeListener("log",t),0===l.default.emitter.listenerCount("log")&&(l.default.ENABLE_CALLBACK=!1,e._notifyChange())}},{key:"forceGlobalTag",get:function(){return l.default.FORCE_GLOBAL_TAG},set:function(t){l.default.FORCE_GLOBAL_TAG=t,e._notifyChange()}},{key:"globalTag",get:function(){return l.default.GLOBAL_TAG},set:function(t){l.default.GLOBAL_TAG=t,e._notifyChange()}},{key:"enableAll",get:function(){return l.default.ENABLE_VERBOSE&&l.default.ENABLE_DEBUG&&l.default.ENABLE_INFO&&l.default.ENABLE_WARN&&l.default.ENABLE_ERROR},set:function(t){l.default.ENABLE_VERBOSE=t,l.default.ENABLE_DEBUG=t,l.default.ENABLE_INFO=t,l.default.ENABLE_WARN=t,l.default.ENABLE_ERROR=t,e._notifyChange()}},{key:"enableDebug",get:function(){return l.default.ENABLE_DEBUG},set:function(t){l.default.ENABLE_DEBUG=t,e._notifyChange()}},{key:"enableVerbose",get:function(){return l.default.ENABLE_VERBOSE},set:function(t){l.default.ENABLE_VERBOSE=t,e._notifyChange()}},{key:"enableInfo",get:function(){return l.default.ENABLE_INFO},set:function(t){l.default.ENABLE_INFO=t,e._notifyChange()}},{key:"enableWarn",get:function(){return l.default.ENABLE_WARN},set:function(t){l.default.ENABLE_WARN=t,e._notifyChange()}},{key:"enableError",get:function(){return l.default.ENABLE_ERROR},set:function(t){l.default.ENABLE_ERROR=t,e._notifyChange()}}]),e}();d.emitter=new o.default,n.default=d},{"./logger.js":41,events:2}],43:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n=128){t.push(String.fromCharCode(65535&a)),r+=2;continue}}}else if(n[r]<240){if(i(n,r,2)){var o=(15&n[r])<<12|(63&n[r+1])<<6|63&n[r+2];if(o>=2048&&55296!=(63488&o)){t.push(String.fromCharCode(65535&o)),r+=3;continue}}}else if(n[r]<248&&i(n,r,3)){var u=(7&n[r])<<18|(63&n[r+1])<<12|(63&n[r+2])<<6|63&n[r+3];if(u>65536&&u<1114112){u-=65536,t.push(String.fromCharCode(u>>>10|55296)),t.push(String.fromCharCode(1023&u|56320)),r+=4;continue}}t.push(String.fromCharCode(65533)),++r}return t.join("")}Object.defineProperty(n,"__esModule",{value:!0}),n.default=r},{}]},{},[21])(21)}); +!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.flvjs=e()}}(function(){var e;return function e(t,n,i){function r(a,o){if(!n[a]){if(!t[a]){var u="function"==typeof require&&require;if(!o&&u)return u(a,!0);if(s)return s(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var d=n[a]={exports:{}};t[a][0].call(d.exports,function(e){var n=t[a][1][e];return r(n||e)},d,d.exports,e,t,n,i)}return n[a].exports}for(var s="function"==typeof require&&require,a=0;a0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},i.prototype.on=i.prototype.addListener,i.prototype.once=function(e,t){function n(){this.removeListener(e,n),i||(i=!0,t.apply(this,arguments))}if(!r(t))throw TypeError("listener must be a function");var i=!1;return n.listener=t,this.on(e,n),this},i.prototype.removeListener=function(e,t){var n,i,s,o;if(!r(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(n=this._events[e],s=n.length,i=-1,n===t||r(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(a(n)){for(o=s;o-- >0;)if(n[o]===t||n[o].listener&&n[o].listener===t){i=o;break}if(i<0)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(i,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},i.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(n=this._events[e],r(n))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},i.prototype.listeners=function(e){return this._events&&this._events[e]?r(this._events[e])?[this._events[e]]:this._events[e].slice():[]},i.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(r(t))return 1;if(t)return t.length}return 0},i.listenerCount=function(e,t){return e.listenerCount(t)}},{}],3:[function(e,t,n){function i(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function s(e){if(h===setTimeout)return setTimeout(e,0);if((h===i||!h)&&setTimeout)return h=setTimeout,setTimeout(e,0);try{return h(e,0)}catch(t){try{return h.call(null,e,0)}catch(t){return h.call(this,e,0)}}}function a(e){if(f===clearTimeout)return clearTimeout(e);if((f===r||!f)&&clearTimeout)return f=clearTimeout,clearTimeout(e);try{return f(e)}catch(t){try{return f.call(null,e)}catch(t){return f.call(this,e)}}}function o(){p&&_&&(p=!1,_.length?m=_.concat(m):v=-1,m.length&&u())}function u(){if(!p){var e=s(o);p=!0;for(var t=m.length;t;){for(_=m,m=[];++v1)for(var n=1;n=e[r]&&t0&&e[0].originalDts=t[r].dts&&et[i].lastSample.originalDts&&e=t[i].lastSample.originalDts&&(i===t.length-1||i0&&(r=this._searchNearestSegmentBefore(n.originalBeginDts)+1),this._lastAppendLocation=r,this._list.splice(r,0,n)}},{key:"getLastSegmentBefore",value:function(e){var t=this._searchNearestSegmentBefore(e);return t>=0?this._list[t]:null}},{key:"getLastSampleBefore",value:function(e){var t=this.getLastSegmentBefore(e);return null!=t?t.lastSample:null}},{key:"getLastSyncPointBefore",value:function(e){for(var t=this._searchNearestSegmentBefore(e),n=this._list[t].syncPoints;0===n.length&&t>0;)t--,n=this._list[t].syncPoints;return n.length>0?n[n.length-1]:null}},{key:"type",get:function(){return this._type}},{key:"length",get:function(){return this._list.length}}]),e}()},{}],9:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n0&&(i+=";codecs="+n.codec);var r=!1;if(l.default.v(this.TAG,"Received Initialization Segment, mimeType: "+i),this._lastInitSegments[n.type]=n,i!==this._mimeTypes[n.type]){if(this._mimeTypes[n.type])l.default.v(this.TAG,"Notice: "+n.type+" mimeType changed, origin: "+this._mimeTypes[n.type]+", target: "+i);else{r=!0;try{var s=this._sourceBuffers[n.type]=this._mediaSource.addSourceBuffer(i);s.addEventListener("error",this.e.onSourceBufferError),s.addEventListener("updateend",this.e.onSourceBufferUpdateEnd)}catch(e){return l.default.e(this.TAG,e.message),void this._emitter.emit(c.default.ERROR,{code:e.code,msg:e.message})}}this._mimeTypes[n.type]=i}t||this._pendingSegments[n.type].push(n),r||this._sourceBuffers[n.type]&&!this._sourceBuffers[n.type].updating&&this._doAppendSegments(),h.default.safari&&"audio/mpeg"===n.container&&n.mediaDuration>0&&(this._requireSetMediaDuration=!0,this._pendingMediaDuration=n.mediaDuration/1e3,this._updateMediaSourceDuration())}},{key:"appendMediaSegment",value:function(e){var t=e;this._pendingSegments[t.type].push(t),this._config.autoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanupSourceBuffer();var n=this._sourceBuffers[t.type];!n||n.updating||this._hasPendingRemoveRanges()||this._doAppendSegments()}},{key:"seek",value:function(e){for(var t in this._sourceBuffers)if(this._sourceBuffers[t]){var n=this._sourceBuffers[t];if("open"===this._mediaSource.readyState)try{n.abort()}catch(e){l.default.e(this.TAG,e.message)}this._idrList.clear();var i=this._pendingSegments[t];if(i.splice(0,i.length),"closed"!==this._mediaSource.readyState){for(var r=0;r=1&&e-i.start(0)>=this._config.autoCleanupMaxBackwardDuration)return!0}}return!1}},{key:"_doCleanupSourceBuffer",value:function(){var e=this._mediaElement.currentTime;for(var t in this._sourceBuffers){var n=this._sourceBuffers[t];if(n){for(var i=n.buffered,r=!1,s=0;s=this._config.autoCleanupMaxBackwardDuration){r=!0;var u=e-this._config.autoCleanupMinBackwardDuration;this._pendingRemoveRanges[t].push({start:a,end:u})}}else o0&&(isNaN(t)||n>t)&&(l.default.v(this.TAG,"Update MediaSource duration from "+t+" to "+n),this._mediaSource.duration=n),this._requireSetMediaDuration=!1,this._pendingMediaDuration=0}}},{key:"_doRemoveRanges",value:function(){for(var e in this._pendingRemoveRanges)if(this._sourceBuffers[e]&&!this._sourceBuffers[e].updating)for(var t=this._sourceBuffers[e],n=this._pendingRemoveRanges[e];n.length&&!t.updating;){var i=n.shift();t.remove(i.start,i.end)}}},{key:"_doAppendSegments",value:function(){var e=this._pendingSegments;for(var t in e)if(this._sourceBuffers[t]&&!this._sourceBuffers[t].updating&&e[t].length>0){var n=e[t].shift();if(n.timestampOffset){var i=this._sourceBuffers[t].timestampOffset,r=n.timestampOffset/1e3,s=Math.abs(i-r);s>.1&&(l.default.v(this.TAG,"Update MPEG audio timestampOffset from "+i+" to "+r),this._sourceBuffers[t].timestampOffset=r),delete n.timestampOffset}if(!n.data||0===n.data.byteLength)continue;try{this._sourceBuffers[t].appendBuffer(n.data),this._isBufferFull=!1,"video"===t&&n.hasOwnProperty("info")&&this._idrList.appendArray(n.info.syncPoints)}catch(e){this._pendingSegments[t].unshift(n),22===e.code?(this._isBufferFull||this._emitter.emit(c.default.BUFFER_FULL),this._isBufferFull=!0):(l.default.e(this.TAG,e.message),this._emitter.emit(c.default.ERROR,{code:e.code,msg:e.message}))}}}},{key:"_onSourceOpen",value:function(){if(l.default.v(this.TAG,"MediaSource onSourceOpen"),this._mediaSource.removeEventListener("sourceopen",this.e.onSourceOpen),this._pendingSourceBufferInit.length>0)for(var e=this._pendingSourceBufferInit;e.length;){var t=e.shift();this.appendInitSegment(t,!0)}this._hasPendingSegments()&&this._doAppendSegments(),this._emitter.emit(c.default.SOURCE_OPEN)}},{key:"_onSourceEnded",value:function(){l.default.v(this.TAG,"MediaSource onSourceEnded")}},{key:"_onSourceClose",value:function(){l.default.v(this.TAG,"MediaSource onSourceClose"),this._mediaSource&&null!=this.e&&(this._mediaSource.removeEventListener("sourceopen",this.e.onSourceOpen),this._mediaSource.removeEventListener("sourceended",this.e.onSourceEnded),this._mediaSource.removeEventListener("sourceclose",this.e.onSourceClose))}},{key:"_hasPendingSegments",value:function(){var e=this._pendingSegments;return e.video.length>0||e.audio.length>0}},{key:"_hasPendingRemoveRanges",value:function(){var e=this._pendingRemoveRanges;return e.video.length>0||e.audio.length>0}},{key:"_onSourceBufferUpdateEnd",value:function(){this._requireSetMediaDuration?this._updateMediaSourceDuration():this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this._hasPendingEos&&this.endOfStream(),this._emitter.emit(c.default.UPDATE_END)}},{key:"_onSourceBufferError",value:function(e){l.default.e(this.TAG,"SourceBuffer Error: "+e)}}]),e}();n.default=p},{"../utils/browser.js":39,"../utils/exception.js":40,"../utils/logger.js":41,"./media-segment-info.js":8,"./mse-events.js":10,events:2}],10:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i={ERROR:"error",SOURCE_OPEN:"source_open",UPDATE_END:"update_end",BUFFER_FULL:"buffer_full"};n.default=i},{}],11:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n0)this._demuxer.bindDataSource(this._ioctl),this._demuxer.timestampBase=this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase,r=this._demuxer.parseChunks(e,t);else if((i=m.default.probe(e)).match){this._demuxer=new m.default(i,this._config),this._remuxer||(this._remuxer=new v.default(this._config));var s=this._mediaDataSource;void 0==s.duration||isNaN(s.duration)||(this._demuxer.overridedDuration=s.duration),"boolean"==typeof s.hasAudio&&(this._demuxer.overridedHasAudio=s.hasAudio),"boolean"==typeof s.hasVideo&&(this._demuxer.overridedHasVideo=s.hasVideo),this._demuxer.timestampBase=s.segments[this._currentSegmentIndex].timestampBase,this._demuxer.onError=this._onDemuxException.bind(this),this._demuxer.onMediaInfo=this._onMediaInfo.bind(this),this._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl)),this._remuxer.onInitSegment=this._onRemuxerInitSegmentArrival.bind(this),this._remuxer.onMediaSegment=this._onRemuxerMediaSegmentArrival.bind(this),r=this._demuxer.parseChunks(e,t)}else i=null,l.default.e(this.TAG,"Non-FLV, Unsupported media type!"),Promise.resolve().then(function(){n._internalAbort()}),this._emitter.emit(k.default.DEMUX_ERROR,y.default.FORMAT_UNSUPPORTED,"Non-FLV, Unsupported media type"),r=0;return r}},{key:"_onMediaInfo",value:function(e){var t=this;null==this._mediaInfo&&(this._mediaInfo=Object.assign({},e),this._mediaInfo.keyframesIndex=null,this._mediaInfo.segments=[],this._mediaInfo.segmentCount=this._mediaDataSource.segments.length,Object.setPrototypeOf(this._mediaInfo,c.default.prototype));var n=Object.assign({},e);Object.setPrototypeOf(n,c.default.prototype),this._mediaInfo.segments[this._currentSegmentIndex]=n,this._reportSegmentMediaInfo(this._currentSegmentIndex),null!=this._pendingSeekTime&&Promise.resolve().then(function(){var e=t._pendingSeekTime;t._pendingSeekTime=null,t.seek(e)})}},{key:"_onIOSeeked",value:function(){this._remuxer.insertDiscontinuity()}},{key:"_onIOComplete",value:function(e){var t=e,n=t+1;n0&&n[0].originalDts===i&&(i=n[0].pts),this._emitter.emit(k.default.RECOMMEND_SEEKPOINT,i)}}},{key:"_enableStatisticsReporter",value:function(){null==this._statisticsReporter&&(this._statisticsReporter=self.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval))}},{key:"_disableStatisticsReporter",value:function(){this._statisticsReporter&&(self.clearInterval(this._statisticsReporter),this._statisticsReporter=null)}},{key:"_reportSegmentMediaInfo",value:function(e){var t=this._mediaInfo.segments[e],n=Object.assign({},t);n.duration=this._mediaInfo.duration,n.segmentCount=this._mediaInfo.segmentCount,delete n.segments,delete n.keyframesIndex,this._emitter.emit(k.default.MEDIA_INFO,n)}},{key:"_reportStatisticsInfo",value:function(){var e={};e.url=this._ioctl.currentURL,e.hasRedirect=this._ioctl.hasRedirect,e.hasRedirect&&(e.redirectedURL=this._ioctl.currentRedirectedURL),e.speed=this._ioctl.currentSpeed,e.loaderType=this._ioctl.loaderType,e.currentSegmentIndex=this._currentSegmentIndex,e.totalSegmentCount=this._mediaDataSource.segments.length,this._emitter.emit(k.default.STATISTICS_INFO,e)}}]),e}());n.default=L},{"../demux/demux-errors.js":16,"../demux/flv-demuxer.js":18,"../io/io-controller.js":23,"../io/loader.js":24,"../remux/mp4-remuxer.js":38,"../utils/browser.js":39,"../utils/logger.js":41,"./media-info.js":7,"./transmuxing-events.js":13,events:2}],13:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i={IO_ERROR:"io_error",DEMUX_ERROR:"demux_error",INIT_SEGMENT:"init_segment",MEDIA_SEGMENT:"media_segment",LOADING_COMPLETE:"loading_complete",RECOVERED_EARLY_EOF:"recovered_early_eof",MEDIA_INFO:"media_info",STATISTICS_INFO:"statistics_info",RECOMMEND_SEEKPOINT:"recommend_seekpoint"};n.default=i},{}],14:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var r=e("../utils/logger.js"),s=(i(r),e("../utils/logging-control.js")),a=i(s),o=e("../utils/polyfill.js"),u=i(o),l=e("./transmuxing-controller.js"),d=i(l),h=e("./transmuxing-events.js"),f=i(h),c=function(e){function t(t,n){var i={msg:f.default.INIT_SEGMENT,data:{type:t,data:n}};e.postMessage(i,[n.data])}function n(t,n){var i={msg:f.default.MEDIA_SEGMENT,data:{type:t,data:n}};e.postMessage(i,[n.data])}function i(){var t={msg:f.default.LOADING_COMPLETE};e.postMessage(t)}function r(){var t={msg:f.default.RECOVERED_EARLY_EOF};e.postMessage(t)}function s(t){var n={msg:f.default.MEDIA_INFO,data:t};e.postMessage(n)}function o(t){var n={msg:f.default.STATISTICS_INFO,data:t};e.postMessage(n)}function l(t,n){e.postMessage({msg:f.default.IO_ERROR,data:{type:t,info:n}})}function h(t,n){e.postMessage({msg:f.default.DEMUX_ERROR,data:{type:t,info:n}})}function c(t){e.postMessage({msg:f.default.RECOMMEND_SEEKPOINT,data:t})}function _(t,n){e.postMessage({msg:"logcat_callback",data:{type:t,logcat:n}})}var m=null,p=_.bind(this);u.default.install(),e.addEventListener("message",function(u){switch(u.data.cmd){case"init":m=new d.default(u.data.param[0],u.data.param[1]),m.on(f.default.IO_ERROR,l.bind(this)),m.on(f.default.DEMUX_ERROR,h.bind(this)),m.on(f.default.INIT_SEGMENT,t.bind(this)),m.on(f.default.MEDIA_SEGMENT,n.bind(this)),m.on(f.default.LOADING_COMPLETE,i.bind(this)),m.on(f.default.RECOVERED_EARLY_EOF,r.bind(this)),m.on(f.default.MEDIA_INFO,s.bind(this)),m.on(f.default.STATISTICS_INFO,o.bind(this)),m.on(f.default.RECOMMEND_SEEKPOINT,c.bind(this));break;case"destroy":m&&(m.destroy(),m=null),e.postMessage({msg:"destroyed"});break;case"start":m.start();break;case"stop":m.stop();break;case"seek":m.seek(u.data.param);break;case"pause":m.pause();break;case"resume":m.resume();break;case"logging_config":var _=u.data.param;a.default.applyConfig(_),!0===_.enableCallback?a.default.addLogListener(p):a.default.removeLogListener(p)}})};n.default=c},{"../utils/logger.js":41,"../utils/logging-control.js":42,"../utils/polyfill.js":43,"./transmuxing-controller.js":12,"./transmuxing-events.js":13}],15:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n0?(0,l.default)(new Uint8Array(e,t+2,r)):"",{data:s,size:2+r}}},{key:"parseLongString",value:function(e,t,n){if(n<4)throw new d.IllegalStateException("Data not enough when parse LongString");var i=new DataView(e,t,n),r=i.getUint32(0,!h),s=void 0;return s=r>0?(0,l.default)(new Uint8Array(e,t+4,r)):"",{data:s,size:4+r}}},{key:"parseDate",value:function(e,t,n){if(n<10)throw new d.IllegalStateException("Data size invalid when parse Date");var i=new DataView(e,t,n),r=i.getFloat64(0,!h);return r+=60*i.getInt16(8,!h)*1e3,{data:new Date(r),size:10}}},{key:"parseValue",value:function(t,n,i){if(i<1)throw new d.IllegalStateException("Data not enough when parse Value");var r=new DataView(t,n,i),s=1,a=r.getUint8(0),u=void 0,l=!1;try{switch(a){case 0:u=r.getFloat64(1,!h),s+=8;break;case 1:u=!!r.getUint8(1),s+=1;break;case 2:var f=e.parseString(t,n+1,i-1);u=f.data,s+=f.size;break;case 3:u={};var c=0;for(9==(16777215&r.getUint32(i-4,!h))&&(c=3);s32)throw new s.InvalidArgumentException("ExpGolomb: readBits() bits exceeded max 32bits!");if(e<=this._current_word_bits_left){var t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}var n=this._current_word_bits_left?this._current_word:0;n>>>=32-this._current_word_bits_left;var i=e-this._current_word_bits_left;this._fillCurrentWord();var r=Math.min(i,this._current_word_bits_left),a=this._current_word>>>32-r;return this._current_word<<=r,this._current_word_bits_left-=r,n=n<>>e))return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}},{key:"readUEG",value:function(){var e=this._skipLeadingZero();return this.readBits(e+1)-1}},{key:"readSEG",value:function(){var e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}]),e}();n.default=a},{"../utils/exception.js":40}],18:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){return e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3]}Object.defineProperty(n,"__esModule",{value:!0});var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(){function e(e,t){for(var n=0;n13))return 0;i=e.probe(t).dataOffset}if(this._firstParse){this._firstParse=!1,n+i!==this._dataOffset&&l.default.w(this.TAG,"First time parsing but chunk byteStart invalid!");0!==new DataView(t,i).getUint32(0,!r)&&l.default.w(this.TAG,"PrevTagSize0 !== 0 !!!"),i+=4}for(;it.byteLength)break;var a=s.getUint8(0),o=16777215&s.getUint32(0,!r);if(i+11+o+4>t.byteLength)break;if(8===a||9===a||18===a){var u=s.getUint8(4),d=s.getUint8(5),h=s.getUint8(6),f=s.getUint8(7),c=h|d<<8|u<<16|f<<24;0!==(16777215&s.getUint32(7,!r))&&l.default.w(this.TAG,"Meet tag which has StreamID != 0!");var _=i+11;switch(a){case 8:this._parseAudioData(t,_,o,c);break;case 9:this._parseVideoData(t,_,o,c,n+i);break;case 18:this._parseScriptData(t,_,o)}var m=s.getUint32(11+o,!r);m!==11+o&&l.default.w(this.TAG,"Invalid PrevTagSize "+m),i+=11+o+4}else l.default.w(this.TAG,"Unsupported tag type "+a+", skipped"),i+=11+o+4}return this._isInitialMetadataDispatched()&&this._dispatch&&(this._audioTrack.length||this._videoTrack.length)&&this._onDataAvailable(this._audioTrack,this._videoTrack),i}},{key:"_parseScriptData",value:function(e,t,n){var i=h.default.parseScriptData(e,t,n);if(i.hasOwnProperty("onMetaData")){if(null==i.onMetaData||"object"!==a(i.onMetaData))return void l.default.w(this.TAG,"Invalid onMetaData structure!");this._metadata&&l.default.w(this.TAG,"Found another onMetaData tag!"),this._metadata=i;var r=this._metadata.onMetaData;if("boolean"==typeof r.hasAudio&&!1===this._hasAudioFlagOverrided&&(this._hasAudio=r.hasAudio,this._mediaInfo.hasAudio=this._hasAudio),"boolean"==typeof r.hasVideo&&!1===this._hasVideoFlagOverrided&&(this._hasVideo=r.hasVideo,this._mediaInfo.hasVideo=this._hasVideo),"number"==typeof r.audiodatarate&&(this._mediaInfo.audioDataRate=r.audiodatarate),"number"==typeof r.videodatarate&&(this._mediaInfo.videoDataRate=r.videodatarate),"number"==typeof r.width&&(this._mediaInfo.width=r.width),"number"==typeof r.height&&(this._mediaInfo.height=r.height),"number"==typeof r.duration){if(!this._durationOverrided){var s=Math.floor(r.duration*this._timescale);this._duration=s,this._mediaInfo.duration=s}}else this._mediaInfo.duration=0;if("number"==typeof r.framerate){var o=Math.floor(1e3*r.framerate);if(o>0){var u=o/1e3;this._referenceFrameRate.fixed=!0,this._referenceFrameRate.fps=u,this._referenceFrameRate.fps_num=o,this._referenceFrameRate.fps_den=1e3,this._mediaInfo.fps=u}}if("object"===a(r.keyframes)){this._mediaInfo.hasKeyframesIndex=!0;var d=r.keyframes;this._mediaInfo.keyframesIndex=this._parseKeyframesIndex(d),r.keyframes=null}else this._mediaInfo.hasKeyframesIndex=!1;this._dispatch=!1,this._mediaInfo.metadata=r,l.default.v(this.TAG,"Parsed onMetaData"),this._mediaInfo.isComplete()&&this._onMediaInfo(this._mediaInfo)}}},{key:"_parseKeyframesIndex",value:function(e){for(var t=[],n=[],i=1;i>>4;if(2!==a&&10!==a)return void this._onError(m.default.CODEC_UNSUPPORTED,"Flv: Unsupported audio codec idx: "+a);var o=0,u=(12&s)>>>2;if(!(u>=0&&u<=4))return void this._onError(m.default.FORMAT_ERROR,"Flv: Invalid audio sample rate idx: "+u);o=this._flvSoundRateTable[u];var d=1&s,h=this._audioMetadata,f=this._audioTrack;if(h||(!1===this._hasAudio&&!1===this._hasAudioFlagOverrided&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),h=this._audioMetadata={},h.type="audio",h.id=f.id,h.timescale=this._timescale,h.duration=this._duration,h.audioSampleRate=o,h.channelCount=0===d?1:2),10===a){var c=this._parseAACAudioData(e,t+1,n-1);if(void 0==c)return;if(0===c.packetType){h.config&&l.default.w(this.TAG,"Found another AudioSpecificConfig!");var _=c.data;h.audioSampleRate=_.samplingRate,h.channelCount=_.channelCount,h.codec=_.codec,h.originalCodec=_.originalCodec,h.config=_.config,h.refSampleDuration=1024/h.audioSampleRate*h.timescale,l.default.v(this.TAG,"Parsed AudioSpecificConfig"),this._isInitialMetadataDispatched()?this._dispatch&&(this._audioTrack.length||this._videoTrack.length)&&this._onDataAvailable(this._audioTrack,this._videoTrack):this._audioInitialMetadataDispatched=!0,this._dispatch=!1,this._onTrackMetadata("audio",h);var p=this._mediaInfo;p.audioCodec=h.originalCodec,p.audioSampleRate=h.audioSampleRate,p.audioChannelCount=h.channelCount,p.hasVideo?null!=p.videoCodec&&(p.mimeType='video/x-flv; codecs="'+p.videoCodec+","+p.audioCodec+'"'):p.mimeType='video/x-flv; codecs="'+p.audioCodec+'"',p.isComplete()&&this._onMediaInfo(p)}else if(1===c.packetType){var v=this._timestampBase+i,g={unit:c.data,length:c.data.byteLength,dts:v,pts:v};f.samples.push(g),f.length+=c.data.length}else l.default.e(this.TAG,"Flv: Unsupported AAC data type "+c.packetType)}else if(2===a){if(!h.codec){var y=this._parseMP3AudioData(e,t+1,n-1,!0);if(void 0==y)return;h.audioSampleRate=y.samplingRate,h.channelCount=y.channelCount,h.codec=y.codec,h.originalCodec=y.originalCodec,h.refSampleDuration=1152/h.audioSampleRate*h.timescale,l.default.v(this.TAG,"Parsed MPEG Audio Frame Header"),this._audioInitialMetadataDispatched=!0,this._onTrackMetadata("audio",h);var E=this._mediaInfo;E.audioCodec=h.codec,E.audioSampleRate=h.audioSampleRate,E.audioChannelCount=h.channelCount,E.audioDataRate=y.bitRate,E.hasVideo?null!=E.videoCodec&&(E.mimeType='video/x-flv; codecs="'+E.videoCodec+","+E.audioCodec+'"'):E.mimeType='video/x-flv; codecs="'+E.audioCodec+'"',E.isComplete()&&this._onMediaInfo(E)}var b=this._parseMP3AudioData(e,t+1,n-1,!1);if(void 0==b)return +;var S=this._timestampBase+i,k={unit:b,length:b.byteLength,dts:S,pts:S};f.samples.push(k),f.length+=b.length}}}},{key:"_parseAACAudioData",value:function(e,t,n){if(n<=1)return void l.default.w(this.TAG,"Flv: Invalid AAC packet, missing AACPacketType or/and Data!");var i={},r=new Uint8Array(e,t,n);return i.packetType=r[0],0===r[0]?i.data=this._parseAACAudioSpecificConfig(e,t+1,n-1):i.data=r.subarray(1),i}},{key:"_parseAACAudioSpecificConfig",value:function(e,t,n){var i=new Uint8Array(e,t,n),r=null,s=0,a=0,o=0,u=null;if(s=a=i[0]>>>3,(o=(7&i[0])<<1|i[1]>>>7)<0||o>=this._mpegSamplingRates.length)return void this._onError(m.default.FORMAT_ERROR,"Flv: AAC invalid sampling frequency index!");var l=this._mpegSamplingRates[o],d=(120&i[1])>>>3;if(d<0||d>=8)return void this._onError(m.default.FORMAT_ERROR,"Flv: AAC invalid channel configuration");5===s&&(u=(7&i[1])<<1|i[2]>>>7,i[2]);var h=self.navigator.userAgent.toLowerCase();return-1!==h.indexOf("firefox")?o>=6?(s=5,r=new Array(4),u=o-3):(s=2,r=new Array(2),u=o):-1!==h.indexOf("android")?(s=2,r=new Array(2),u=o):(s=5,u=o,r=new Array(4),o>=6?u=o-3:1===d&&(s=2,r=new Array(2),u=o)),r[0]=s<<3,r[0]|=(15&o)>>>1,r[1]=(15&o)<<7,r[1]|=(15&d)<<3,5===s&&(r[1]|=(15&u)>>>1,r[2]=(1&u)<<7,r[2]|=8,r[3]=0),{config:r,samplingRate:l,channelCount:d,codec:"mp4a.40."+s,originalCodec:"mp4a.40."+a}}},{key:"_parseMP3AudioData",value:function(e,t,n,i){if(n<4)return void l.default.w(this.TAG,"Flv: Invalid MP3 packet, header missing!");var r=(this._littleEndian,new Uint8Array(e,t,n)),s=null;if(i){if(255!==r[0])return;var a=r[1]>>>3&3,o=(6&r[1])>>1,u=(240&r[2])>>>4,d=(12&r[2])>>>2,h=r[3]>>>6&3,f=3!==h?2:1,c=0,_=0;switch(a){case 0:c=this._mpegAudioV25SampleRateTable[d];break;case 2:c=this._mpegAudioV20SampleRateTable[d];break;case 3:c=this._mpegAudioV10SampleRateTable[d]}switch(o){case 1:34,u>>4,o=15&s;if(7!==o)return void this._onError(m.default.CODEC_UNSUPPORTED,"Flv: Unsupported codec in video frame: "+o);this._parseAVCVideoPacket(e,t+1,n-1,i,r,a)}}},{key:"_parseAVCVideoPacket",value:function(e,t,n,i,r,s){if(n<4)return void l.default.w(this.TAG,"Flv: Invalid AVC packet, missing AVCPacketType or/and CompositionTime");var a=this._littleEndian,o=new DataView(e,t,n),u=o.getUint8(0),d=16777215&o.getUint32(0,!a),h=d<<8>>8;if(0===u)this._parseAVCDecoderConfigurationRecord(e,t+4,n-4);else if(1===u)this._parseAVCVideoData(e,t+4,n-4,i,r,s,h);else if(2!==u)return void this._onError(m.default.FORMAT_ERROR,"Flv: Invalid video packet type "+u)}},{key:"_parseAVCDecoderConfigurationRecord",value:function(e,t,n){if(n<7)return void l.default.w(this.TAG,"Flv: Invalid AVCDecoderConfigurationRecord, lack of data!");var i=this._videoMetadata,r=this._videoTrack,s=this._littleEndian,a=new DataView(e,t,n);i?void 0!==i.avcc&&l.default.w(this.TAG,"Found another AVCDecoderConfigurationRecord!"):(!1===this._hasVideo&&!1===this._hasVideoFlagOverrided&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),i=this._videoMetadata={},i.type="video",i.id=r.id,i.timescale=this._timescale,i.duration=this._duration);var o=a.getUint8(0),u=a.getUint8(1);a.getUint8(2),a.getUint8(3);if(1!==o||0===u)return void this._onError(m.default.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord");if(this._naluLengthSize=1+(3&a.getUint8(4)),3!==this._naluLengthSize&&4!==this._naluLengthSize)return void this._onError(m.default.FORMAT_ERROR,"Flv: Strange NaluLengthSizeMinusOne: "+(this._naluLengthSize-1));var d=31&a.getUint8(5);if(0===d)return void this._onError(m.default.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord: No SPS");d>1&&l.default.w(this.TAG,"Flv: Strange AVCDecoderConfigurationRecord: SPS Count = "+d);for(var h=6,f=0;f1&&l.default.w(this.TAG,"Flv: Strange AVCDecoderConfigurationRecord: PPS Count = "+w),h++;for(var R=0;R=n){l.default.w(this.TAG,"Malformed Nalu near timestamp "+_+", offset = "+f+", dataSize = "+n);break}var p=u.getUint32(f,!o);if(3===c&&(p>>>=8),p>n-c)return void l.default.w(this.TAG,"Malformed Nalus near timestamp "+_+", NaluSize > DataSize!");var v=31&u.getUint8(f+c);5===v&&(m=!0);var g=new Uint8Array(e,t+f,c+p),y={type:v,data:g};d.push(y),h+=g.byteLength,f+=c+p}if(d.length){var E=this._videoTrack,b={units:d,length:h,isKeyframe:m,dts:_,cts:a,pts:_+a};m&&(b.fileposition=r),E.samples.push(b),E.length+=h}}},{key:"onTrackMetadata",get:function(){return this._onTrackMetadata},set:function(e){this._onTrackMetadata=e}},{key:"onMediaInfo",get:function(){return this._onMediaInfo},set:function(e){this._onMediaInfo=e}},{key:"onError",get:function(){return this._onError},set:function(e){this._onError=e}},{key:"onDataAvailable",get:function(){return this._onDataAvailable},set:function(e){this._onDataAvailable=e}},{key:"timestampBase",get:function(){return this._timestampBase},set:function(e){this._timestampBase=e}},{key:"overridedDuration",get:function(){return this._duration},set:function(e){this._durationOverrided=!0,this._duration=e,this._mediaInfo.duration=e}},{key:"overridedHasAudio",set:function(e){this._hasAudioFlagOverrided=!0,this._hasAudio=e,this._mediaInfo.hasAudio=e}},{key:"overridedHasVideo",set:function(e){this._hasVideoFlagOverrided=!0,this._hasVideo=e,this._mediaInfo.hasVideo=e}}],[{key:"probe",value:function(e){var t=new Uint8Array(e),n={match:!1};if(70!==t[0]||76!==t[1]||86!==t[2]||1!==t[3])return n;var i=(4&t[4])>>>2!=0,r=0!=(1&t[4]),a=s(t,5);return a<9?n:{match:!0,consumed:a,dataOffset:a,hasAudioTrack:i,hasVideoTrack:r}}}]),e}();n.default=y},{"../core/media-info.js":7,"../utils/exception.js":40,"../utils/logger.js":41,"./amf-parser.js":15,"./demux-errors.js":16,"./sps-parser.js":19}],19:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n=2&&3===t[s]&&0===t[s-1]&&0===t[s-2]||(i[r]=t[s],r++);return new Uint8Array(i.buffer,0,r)}},{key:"parseSPS",value:function(t){var n=e._ebsp2rbsp(t),i=new a.default(n);i.readByte();var r=i.readByte();i.readByte();var s=i.readByte();i.readUEG();var o=e.getProfileString(r),u=e.getLevelString(s),l=1,d=420,h=[0,420,422,444],f=8;if((100===r||110===r||122===r||244===r||44===r||83===r||86===r||118===r||128===r||138===r||144===r)&&(l=i.readUEG(),3===l&&i.readBits(1),l<=3&&(d=h[l]),f=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool()))for(var c=3!==l?8:12,_=0;_0&&x<16?(R=M[x-1],A=D[x-1]):255===x&&(R=i.readByte()<<8|i.readByte(),A=i.readByte()<<8|i.readByte())}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(4),i.readBool()&&i.readBits(24)),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool()){var B=i.readBits(32),j=i.readBits(32);T=i.readBool(),C=j,I=2*B,O=C/I}}var P=1;1===R&&1===A||(P=R/A);var U=0,N=0;if(0===l)U=1,N=2-b;else{var F=3===l?1:2,G=1===l?2:1;U=F,N=G*(2-b)}var V=16*(y+1),z=16*(E+1)*(2-b);V-=(S+k)*U,z-=(L+w)*N;var H=Math.ceil(V*P);return i.destroy(),i=null,{profile_string:o,level_string:u,bit_depth:f,ref_frames:g,chroma_format:d,chroma_format_string:e.getChromaFormatString(d),frame_rate:{fixed:T,fps:O,fps_den:I,fps_num:C},sar_ratio:{width:R,height:A},codec_size:{width:V,height:z},present_size:{width:H,height:z}}}},{key:"_skipScalingList",value:function(e,t){for(var n=8,i=8,r=0,s=0;s=15048,t=!f.default.msedge||e;return self.fetch&&self.ReadableStream&&t}catch(e){return!1}}}]),l(t,[{key:"destroy",value:function(){this.isWorking()&&this.abort(),u(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"destroy",this).call(this)}},{key:"open",value:function(e,t){var n=this;this._dataSource=e,this._range=t;var i=e.url;this._config.reuseRedirectedURL&&void 0!=e.redirectedURL&&(i=e.redirectedURL);var r=this._seekHandler.getConfig(i,t),s=new self.Headers;if("object"===o(r.headers)){var a=r.headers;for(var u in a)a.hasOwnProperty(u)&&s.append(u,a[u])}var l={method:"GET",headers:s,mode:"cors",cache:"default",referrerPolicy:"no-referrer-when-downgrade"};!1===e.cors&&(l.mode="same-origin"),e.withCredentials&&(l.credentials="include"),e.referrerPolicy&&(l.referrerPolicy=e.referrerPolicy),this._status=c.LoaderStatus.kConnecting,self.fetch(r.url,l).then(function(e){if(n._requestAbort)return n._requestAbort=!1,void(n._status=c.LoaderStatus.kIdle);if(e.ok&&e.status>=200&&e.status<=299){if(e.url!==r.url&&n._onURLRedirect){var t=n._seekHandler.removeURLParameters(e.url);n._onURLRedirect(t)}var i=e.headers.get("Content-Length");return null!=i&&(n._contentLength=parseInt(i),0!==n._contentLength&&n._onContentLengthKnown&&n._onContentLengthKnown(n._contentLength)),n._pump.call(n,e.body.getReader())}if(n._status=c.LoaderStatus.kError,!n._onError)throw new _.RuntimeException("FetchStreamLoader: Http code invalid, "+e.status+" "+e.statusText);n._onError(c.LoaderErrors.HTTP_STATUS_CODE_INVALID,{code:e.status,msg:e.statusText})}).catch(function(e){if(n._status=c.LoaderStatus.kError,!n._onError)throw e;n._onError(c.LoaderErrors.EXCEPTION,{code:-1,msg:e.message})})}},{key:"abort",value:function(){this._requestAbort=!0}},{key:"_pump",value:function(e){var t=this;return e.read().then(function(n){if(n.done)if(null!==t._contentLength&&t._receivedLength0&&(this._stashInitialSize=n.stashInitialSize),this._stashUsed=0,this._stashSize=this._stashInitialSize,this._bufferSize=3145728,this._stashBuffer=new ArrayBuffer(this._bufferSize),this._stashByteStart=0,this._enableStash=!0,!1===n.enableStashBuffer&&(this._enableStash=!1),this._loader=null,this._loaderClass=null,this._seekHandler=null,this._dataSource=t,this._isWebSocketURL=/wss?:\/\/(.+?)/.test(t.url),this._refTotalLength=t.filesize?t.filesize:null,this._totalLength=this._refTotalLength,this._fullRequestFlag=!1,this._currentRange=null,this._redirectedURL=null,this._speedNormalized=0,this._speedSampler=new l.default,this._speedNormalizeList=[64,128,256,384,512,768,1024,1536,2048,3072,4096],this._isEarlyEofReconnecting=!1,this._paused=!1,this._resumeFrom=0,this._onDataArrival=null,this._onSeeked=null,this._onError=null,this._onComplete=null,this._onRedirect=null,this._onRecoveredEarlyEof=null,this._selectSeekHandler(),this._selectLoader(),this._createLoader()}return s(e,[{key:"destroy",value:function(){this._loader.isWorking()&&this._loader.abort(),this._loader.destroy(),this._loader=null,this._loaderClass=null,this._dataSource=null,this._stashBuffer=null,this._stashUsed=this._stashSize=this._bufferSize=this._stashByteStart=0,this._currentRange=null,this._speedSampler=null,this._isEarlyEofReconnecting=!1,this._onDataArrival=null,this._onSeeked=null,this._onError=null,this._onComplete=null,this._onRedirect=null,this._onRecoveredEarlyEof=null,this._extraData=null}},{key:"isWorking",value:function(){return this._loader&&this._loader.isWorking()&&!this._paused}},{key:"isPaused",value:function(){return this._paused}},{key:"_selectSeekHandler",value:function(){var e=this._config;if("range"===e.seekType)this._seekHandler=new b.default(this._config.rangeLoadZeroStart);else if("param"===e.seekType){var t=e.seekParamStart||"bstart",n=e.seekParamEnd||"bend";this._seekHandler=new k.default(t,n)}else{if("custom"!==e.seekType)throw new L.InvalidArgumentException("Invalid seekType in config: "+e.seekType);if("function"!=typeof e.customSeekHandler)throw new L.InvalidArgumentException("Custom seekType specified in config but invalid customSeekHandler!");this._seekHandler=new e.customSeekHandler}}},{key:"_selectLoader",value:function(){if(this._isWebSocketURL)this._loaderClass=y.default;else if(f.default.isSupported())this._loaderClass=f.default;else if(_.default.isSupported())this._loaderClass=_.default;else{if(!v.default.isSupported())throw new L.RuntimeException("Your browser doesn't support xhr with arraybuffer responseType!");this._loaderClass=v.default}}},{key:"_createLoader",value:function(){this._loader=new this._loaderClass(this._seekHandler,this._config),!1===this._loader.needStashBuffer&&(this._enableStash=!1),this._loader.onContentLengthKnown=this._onContentLengthKnown.bind(this),this._loader.onURLRedirect=this._onURLRedirect.bind(this),this._loader.onDataArrival=this._onLoaderChunkArrival.bind(this),this._loader.onComplete=this._onLoaderComplete.bind(this),this._loader.onError=this._onLoaderError.bind(this)}},{key:"open",value:function(e){this._currentRange={from:0,to:-1},e&&(this._currentRange.from=e),this._speedSampler.reset(),e||(this._fullRequestFlag=!0),this._loader.open(this._dataSource,Object.assign({},this._currentRange))}},{key:"abort",value:function(){this._loader.abort(),this._paused&&(this._paused=!1,this._resumeFrom=0)}},{key:"pause",value:function(){this.isWorking()&&(this._loader.abort(),0!==this._stashUsed?(this._resumeFrom=this._stashByteStart,this._currentRange.to=this._stashByteStart-1):this._resumeFrom=this._currentRange.to+1,this._stashUsed=0,this._stashByteStart=0,this._paused=!0)}},{key:"resume",value:function(){if(this._paused){this._paused=!1;var e=this._resumeFrom;this._resumeFrom=0,this._internalSeek(e,!0)}}},{key:"seek",value:function(e){this._paused=!1,this._stashUsed=0,this._stashByteStart=0,this._internalSeek(e,!0)}},{key:"_internalSeek",value:function(e,t){this._loader.isWorking()&&this._loader.abort(),this._flushStashBuffer(t),this._loader.destroy(),this._loader=null;var n={from:e,to:-1};this._currentRange={from:n.from,to:-1},this._speedSampler.reset(),this._stashSize=this._stashInitialSize,this._createLoader(),this._loader.open(this._dataSource,n),this._onSeeked&&this._onSeeked()}},{key:"updateUrl",value:function(e){if(!e||"string"!=typeof e||0===e.length)throw new L.InvalidArgumentException("Url must be a non-empty string!");this._dataSource.url=e}},{key:"_expandBuffer",value:function(e){for(var t=this._stashSize;t+10485760){var i=new Uint8Array(this._stashBuffer,0,this._stashUsed);new Uint8Array(n,0,t).set(i,0)}this._stashBuffer=n,this._bufferSize=t}}},{key:"_normalizeSpeed",value:function(e){var t=this._speedNormalizeList,n=t.length-1,i=0,r=0,s=n;if(e=t[i]&&e=512&&e<=1024?Math.floor(1.5*e):2*e)>8192&&(t=8192);var n=1024*t+1048576;this._bufferSize0){var o=this._stashBuffer.slice(0,this._stashUsed),u=this._dispatchChunks(o,this._stashByteStart);if(u0){var l=new Uint8Array(o,u);a.set(l,0),this._stashUsed=l.byteLength,this._stashByteStart+=u}}else this._stashUsed=0,this._stashByteStart+=u;this._stashUsed+e.byteLength>this._bufferSize&&(this._expandBuffer(this._stashUsed+e.byteLength),a=new Uint8Array(this._stashBuffer,0,this._bufferSize)),a.set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength}else{var d=this._dispatchChunks(e,t);if(dthis._bufferSize&&(this._expandBuffer(h),a=new Uint8Array(this._stashBuffer,0,this._bufferSize)),a.set(new Uint8Array(e,d),0),this._stashUsed+=h,this._stashByteStart=t+d}}}else if(0===this._stashUsed){var f=this._dispatchChunks(e,t);if(fthis._bufferSize&&this._expandBuffer(c);var _=new Uint8Array(this._stashBuffer,0,this._bufferSize);_.set(new Uint8Array(e,f),0),this._stashUsed+=c,this._stashByteStart=t+f}}else{this._stashUsed+e.byteLength>this._bufferSize&&this._expandBuffer(this._stashUsed+e.byteLength);var m=new Uint8Array(this._stashBuffer,0,this._bufferSize);m.set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength;var p=this._dispatchChunks(this._stashBuffer.slice(0,this._stashUsed),this._stashByteStart);if(p0){var v=new Uint8Array(this._stashBuffer,p);m.set(v,0)}this._stashUsed-=p,this._stashByteStart+=p}}}},{key:"_flushStashBuffer",value:function(e){if(this._stashUsed>0){var t=this._stashBuffer.slice(0,this._stashUsed),n=this._dispatchChunks(t,this._stashByteStart),i=t.byteLength-n;if(n0){var r=new Uint8Array(this._stashBuffer,0,this._bufferSize),s=new Uint8Array(t,n);r.set(s,0),this._stashUsed=s.byteLength,this._stashByteStart+=n}return 0}o.default.w(this.TAG,i+" bytes unconsumed data remain when flush buffer, dropped")}return this._stashUsed=0,this._stashByteStart=0,i}return 0}},{key:"_onLoaderComplete",value:function(e,t){this._flushStashBuffer(!0),this._onComplete&&this._onComplete(this._extraData)}},{key:"_onLoaderError",value:function(e,t){switch(o.default.e(this.TAG,"Loader error, code = "+t.code+", msg = "+t.msg),this._flushStashBuffer(!1),this._isEarlyEofReconnecting&&(this._isEarlyEofReconnecting=!1,e=d.LoaderErrors.UNRECOVERABLE_EARLY_EOF),e){case d.LoaderErrors.EARLY_EOF:if(!this._config.isLive&&this._totalLength){var n=this._currentRange.to+1;return void(n0)for(var s=n.split("&"),a=0;a0;o[0]!==this._startName&&o[0]!==this._endName&&(u&&(r+="&"),r+=s[a])}return 0===r.length?t:t+"?"+r}}]),e}();n.default=s},{}],26:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n=500?this.currentKBps:0}},{key:"averageKBps",get:function(){var e=(this._now()-this._firstCheckpoint)/1e3;return this._totalBytes/e/1024}}]),e}();n.default=s},{}],28:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(n,"__esModule",{value:!0});var a=function e(t,n,i){null===t&&(t=Function.prototype);var r=Object.getOwnPropertyDescriptor(t,n);if(void 0===r){var s=Object.getPrototypeOf(t);return null===s?void 0:e(s,n,i)}if("value"in r)return r.value;var a=r.get;if(void 0!==a)return a.call(i)},o=function(){function e(e,t){for(var n=0;n299)){if(this._status=h.LoaderStatus.kError,!this._onError)throw new f.RuntimeException("MozChunkedLoader: Http code invalid, "+t.status+" "+t.statusText);this._onError(h.LoaderErrors.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText})}else this._status=h.LoaderStatus.kBuffering}}},{key:"_onProgress",value:function(e){if(this._status!==h.LoaderStatus.kError){null===this._contentLength&&null!==e.total&&0!==e.total&&(this._contentLength=e.total,this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength));var t=e.target.response,n=this._range.from+this._receivedLength;this._receivedLength+=t.byteLength,this._onDataArrival&&this._onDataArrival(t,n,this._receivedLength)}}},{key:"_onLoadEnd",value:function(e){if(!0===this._requestAbort)return void(this._requestAbort=!1);this._status!==h.LoaderStatus.kError&&(this._status=h.LoaderStatus.kComplete,this._onComplete&&this._onComplete(this._range.from,this._range.from+this._receivedLength-1))}},{key:"_onXhrError",value:function(e){this._status=h.LoaderStatus.kError;var t=0,n=null;if(this._contentLength&&e.loaded=200&&t.status<=299){if(this._status=h.LoaderStatus.kBuffering,void 0!=t.responseURL){var n=this._seekHandler.removeURLParameters(t.responseURL);t.responseURL!==this._currentRequestURL&&n!==this._currentRedirectedURL&&(this._currentRedirectedURL=n,this._onURLRedirect&&this._onURLRedirect(n))}var i=t.getResponseHeader("Content-Length");if(null!=i&&null==this._contentLength){var r=parseInt(i);r>0&&(this._contentLength=r,this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength))}}else{if(this._status=h.LoaderStatus.kError,!this._onError)throw new f.RuntimeException("MSStreamLoader: Http code invalid, "+t.status+" "+t.statusText);this._onError(h.LoaderErrors.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText})}else if(3===t.readyState&&t.status>=200&&t.status<=299){this._status=h.LoaderStatus.kBuffering;var s=t.response;this._reader.readAsArrayBuffer(s)}}},{key:"_xhrOnError",value:function(e){this._status=h.LoaderStatus.kError;var t=h.LoaderErrors.EXCEPTION,n={code:-1,msg:e.constructor.name+" "+e.type};if(!this._onError)throw new f.RuntimeException(n.msg);this._onError(t,n)}},{key:"_msrOnProgress",value:function(e){var t=e.target,n=t.result;if(null==n)return void this._doReconnectIfNeeded();var i=n.slice(this._lastTimeBufferSize);this._lastTimeBufferSize=n.byteLength;var r=this._totalRange.from+this._receivedLength;this._receivedLength+=i.byteLength,this._onDataArrival&&this._onDataArrival(i,r,this._receivedLength),n.byteLength>=this._bufferLimit&&(d.default.v(this.TAG,"MSStream buffer exceeded max size near "+(r+i.byteLength)+", reconnecting..."),this._doReconnectIfNeeded())}},{key:"_doReconnectIfNeeded",value:function(){if(null==this._contentLength||this._receivedLength=this._contentLength&&(n=this._range.from+this._contentLength-1),this._currentRequestRange={from:t,to:n},this._internalOpen(this._dataSource,this._currentRequestRange)}},{key:"_internalOpen",value:function(e,t){this._lastTimeLoaded=0;var n=e.url;this._config.reuseRedirectedURL&&(void 0!=this._currentRedirectedURL?n=this._currentRedirectedURL:void 0!=e.redirectedURL&&(n=e.redirectedURL));var i=this._seekHandler.getConfig(n,t);this._currentRequestURL=i.url;var r=this._xhr=new XMLHttpRequest;if(r.open("GET",i.url,!0),r.responseType="arraybuffer",r.onreadystatechange=this._onReadyStateChange.bind(this),r.onprogress=this._onProgress.bind(this),r.onload=this._onLoad.bind(this),r.onerror=this._onXhrError.bind(this),e.withCredentials&&(r.withCredentials=!0),"object"===o(i.headers)){var s=i.headers;for(var a in s)s.hasOwnProperty(a)&&r.setRequestHeader(a,s[a])}r.send()}},{key:"abort",value:function(){this._requestAbort=!0,this._internalAbort(),this._status=_.LoaderStatus.kComplete}},{key:"_internalAbort",value:function(){this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onload=null,this._xhr.onerror=null,this._xhr.abort(),this._xhr=null)}},{key:"_onReadyStateChange",value:function(e){var t=e.target;if(2===t.readyState){if(void 0!=t.responseURL){var n=this._seekHandler.removeURLParameters(t.responseURL);t.responseURL!==this._currentRequestURL&&n!==this._currentRedirectedURL&&(this._currentRedirectedURL=n,this._onURLRedirect&&this._onURLRedirect(n))}if(t.status>=200&&t.status<=299){if(this._waitForTotalLength)return;this._status=_.LoaderStatus.kBuffering}else{if(this._status=_.LoaderStatus.kError,!this._onError)throw new m.RuntimeException("RangeLoader: Http code invalid, "+t.status+" "+t.statusText);this._onError(_.LoaderErrors.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText})}}}},{key:"_onProgress",value:function(e){if(this._status!==_.LoaderStatus.kError){if(null===this._contentLength){var t=!1;if(this._waitForTotalLength){this._waitForTotalLength=!1,this._totalLengthReceived=!0,t=!0;var n=e.total;this._internalAbort(),null!=n&0!==n&&(this._totalLength=n)}if(-1===this._range.to?this._contentLength=this._totalLength-this._range.from:this._contentLength=this._range.to-this._range.from+1,t)return void this._openSubRange();this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength)}var i=e.loaded-this._lastTimeLoaded;this._lastTimeLoaded=e.loaded,this._speedSampler.addBytes(i)}}},{key:"_normalizeSpeed",value:function(e){var t=this._chunkSizeKBList,n=t.length-1,i=0,r=0,s=n;if(e=t[i]&&e=3&&(t=this._speedSampler.currentKBps),0!==t){var n=this._normalizeSpeed(t);this._currentSpeedNormalized!==n&&(this._currentSpeedNormalized=n,this._currentChunkSizeKB=n)}var i=e.target.response,r=this._range.from+this._receivedLength;this._receivedLength+=i.byteLength;var s=!1;null!=this._contentLength&&this._receivedLength0&&this._receivedLength0&&(this._requestSetTime=!0,this._mediaElement.currentTime=0),this._transmuxer=new p.default(this._mediaDataSource,this._config),this._transmuxer.on(g.default.INIT_SEGMENT,function(t,n){e._msectl.appendInitSegment(n)}),this._transmuxer.on(g.default.MEDIA_SEGMENT,function(t,n){if(e._msectl.appendMediaSegment(n),e._config.lazyLoad&&!e._config.isLive){var i=e._mediaElement.currentTime;n.info.endDts>=1e3*(i+e._config.lazyLoadMaxDuration)&&null==e._progressChecker&&(d.default.v(e.TAG,"Maximum buffering duration exceeded, suspend transmuxing task"),e._suspendTransmuxer())}}),this._transmuxer.on(g.default.LOADING_COMPLETE,function(){e._msectl.endOfStream(),e._emitter.emit(_.default.LOADING_COMPLETE)}), +this._transmuxer.on(g.default.RECOVERED_EARLY_EOF,function(){e._emitter.emit(_.default.RECOVERED_EARLY_EOF)}),this._transmuxer.on(g.default.IO_ERROR,function(t,n){e._emitter.emit(_.default.ERROR,k.ErrorTypes.NETWORK_ERROR,t,n)}),this._transmuxer.on(g.default.DEMUX_ERROR,function(t,n){e._emitter.emit(_.default.ERROR,k.ErrorTypes.MEDIA_ERROR,t,{code:-1,msg:n})}),this._transmuxer.on(g.default.MEDIA_INFO,function(t){e._mediaInfo=t,e._emitter.emit(_.default.MEDIA_INFO,Object.assign({},t))}),this._transmuxer.on(g.default.STATISTICS_INFO,function(t){e._statisticsInfo=e._fillStatisticsInfo(t),e._emitter.emit(_.default.STATISTICS_INFO,Object.assign({},e._statisticsInfo))}),this._transmuxer.on(g.default.RECOMMEND_SEEKPOINT,function(t){e._mediaElement&&!e._config.accurateSeek&&(e._requestSetTime=!0,e._mediaElement.currentTime=t/1e3)}),this._transmuxer.open()}}},{key:"unload",value:function(){this._mediaElement&&this._mediaElement.pause(),this._msectl&&this._msectl.seek(0),this._transmuxer&&(this._transmuxer.close(),this._transmuxer.destroy(),this._transmuxer=null)}},{key:"play",value:function(){return this._mediaElement.play()}},{key:"pause",value:function(){this._mediaElement.pause()}},{key:"_fillStatisticsInfo",value:function(e){if(e.playerType=this._type,!(this._mediaElement instanceof HTMLVideoElement))return e;var t=!0,n=0,i=0;if(this._mediaElement.getVideoPlaybackQuality){var r=this._mediaElement.getVideoPlaybackQuality();n=r.totalVideoFrames,i=r.droppedVideoFrames}else void 0!=this._mediaElement.webkitDecodedFrameCount?(n=this._mediaElement.webkitDecodedFrameCount,i=this._mediaElement.webkitDroppedFrameCount):t=!1;return t&&(e.decodedFrames=n,e.droppedFrames=i),e}},{key:"_onmseUpdateEnd",value:function(){if(this._config.lazyLoad&&!this._config.isLive){for(var e=this._mediaElement.buffered,t=this._mediaElement.currentTime,n=0,i=0;i=t+this._config.lazyLoadMaxDuration&&null==this._progressChecker&&(d.default.v(this.TAG,"Maximum buffering duration exceeded, suspend transmuxing task"),this._suspendTransmuxer())}}},{key:"_onmseBufferFull",value:function(){d.default.v(this.TAG,"MSE SourceBuffer is full, suspend transmuxing task"),null==this._progressChecker&&this._suspendTransmuxer()}},{key:"_suspendTransmuxer",value:function(){this._transmuxer&&(this._transmuxer.pause(),null==this._progressChecker&&(this._progressChecker=window.setInterval(this._checkProgressAndResume.bind(this),1e3)))}},{key:"_checkProgressAndResume",value:function(){for(var e=this._mediaElement.currentTime,t=this._mediaElement.buffered,n=!1,i=0;i=r&&e=s-this._config.lazyLoadRecoverDuration&&(n=!0);break}}n&&(window.clearInterval(this._progressChecker),this._progressChecker=null,n&&(d.default.v(this.TAG,"Continue loading from paused position"),this._transmuxer.resume()))}},{key:"_isTimepointBuffered",value:function(e){for(var t=this._mediaElement.buffered,n=0;n=i&&e0){var r=this._mediaElement.buffered.start(0);(r<1&&e0&&t.currentTime0){var i=n.start(0);if(i<1&&t0&&(this._mediaElement.currentTime=0),this._mediaElement.preload="auto",this._mediaElement.load(),this._statisticsReporter=window.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval)}},{key:"unload",value:function(){this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src")),null!=this._statisticsReporter&&(window.clearInterval(this._statisticsReporter),this._statisticsReporter=null)}},{key:"play",value:function(){return this._mediaElement.play()}},{key:"pause",value:function(){this._mediaElement.pause()}},{key:"_onvLoadedMetadata",value:function(e){null!=this._pendingSeekTime&&(this._mediaElement.currentTime=this._pendingSeekTime,this._pendingSeekTime=null),this._emitter.emit(d.default.MEDIA_INFO,this.mediaInfo)}},{key:"_reportStatisticsInfo",value:function(){this._emitter.emit(d.default.STATISTICS_INFO,this.statisticsInfo)}},{key:"type",get:function(){return this._type}},{key:"buffered",get:function(){return this._mediaElement.buffered}},{key:"duration",get:function(){return this._mediaElement.duration}},{key:"volume",get:function(){return this._mediaElement.volume},set:function(e){this._mediaElement.volume=e}},{key:"muted",get:function(){return this._mediaElement.muted},set:function(e){this._mediaElement.muted=e}},{key:"currentTime",get:function(){return this._mediaElement?this._mediaElement.currentTime:0},set:function(e){this._mediaElement?this._mediaElement.currentTime=e:this._pendingSeekTime=e}},{key:"mediaInfo",get:function(){var e=this._mediaElement instanceof HTMLAudioElement?"audio/":"video/",t={mimeType:e+this._mediaDataSource.type};return this._mediaElement&&(t.duration=Math.floor(1e3*this._mediaElement.duration),this._mediaElement instanceof HTMLVideoElement&&(t.width=this._mediaElement.videoWidth,t.height=this._mediaElement.videoHeight)),t}},{key:"statisticsInfo",get:function(){var e={playerType:this._type,url:this._mediaDataSource.url};if(!(this._mediaElement instanceof HTMLVideoElement))return e;var t=!0,n=0,i=0;if(this._mediaElement.getVideoPlaybackQuality){var r=this._mediaElement.getVideoPlaybackQuality();n=r.totalVideoFrames,i=r.droppedVideoFrames}else void 0!=this._mediaElement.webkitDecodedFrameCount?(n=this._mediaElement.webkitDecodedFrameCount,i=this._mediaElement.webkitDroppedFrameCount):t=!1;return t&&(e.decodedFrames=n,e.droppedFrames=i),e}}]),e}();n.default=c},{"../config.js":5,"../utils/exception.js":40,"./player-events.js":35,events:2}],34:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ErrorDetails=n.ErrorTypes=void 0;var i=e("../io/loader.js"),r=e("../demux/demux-errors.js"),s=function(e){return e&&e.__esModule?e:{default:e}}(r);n.ErrorTypes={NETWORK_ERROR:"NetworkError",MEDIA_ERROR:"MediaError",OTHER_ERROR:"OtherError"},n.ErrorDetails={NETWORK_EXCEPTION:i.LoaderErrors.EXCEPTION,NETWORK_STATUS_CODE_INVALID:i.LoaderErrors.HTTP_STATUS_CODE_INVALID,NETWORK_TIMEOUT:i.LoaderErrors.CONNECTING_TIMEOUT,NETWORK_UNRECOVERABLE_EARLY_EOF:i.LoaderErrors.UNRECOVERABLE_EARLY_EOF,MEDIA_MSE_ERROR:"MediaMSEError",MEDIA_FORMAT_ERROR:s.default.FORMAT_ERROR,MEDIA_FORMAT_UNSUPPORTED:s.default.FORMAT_UNSUPPORTED,MEDIA_CODEC_UNSUPPORTED:s.default.CODEC_UNSUPPORTED}},{"../demux/demux-errors.js":16,"../io/loader.js":24}],35:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i={ERROR:"error",LOADING_COMPLETE:"loading_complete",RECOVERED_EARLY_EOF:"recovered_early_eof",MEDIA_INFO:"media_info",STATISTICS_INFO:"statistics_info"};n.default=i},{}],36:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n>>24&255,n[1]=t>>>16&255,n[2]=t>>>8&255,n[3]=255&t,n.set(e,4);for(var a=8,o=0;o>>24&255,t>>>16&255,t>>>8&255,255&t,n>>>24&255,n>>>16&255,n>>>8&255,255&n,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}},{key:"trak",value:function(t){return e.box(e.types.trak,e.tkhd(t),e.mdia(t))}},{key:"tkhd",value:function(t){var n=t.id,i=t.duration,r=t.presentWidth,s=t.presentHeight;return e.box(e.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,r>>>8&255,255&r,0,0,s>>>8&255,255&s,0,0]))}},{key:"mdia",value:function(t){return e.box(e.types.mdia,e.mdhd(t),e.hdlr(t),e.minf(t))}},{key:"mdhd",value:function(t){var n=t.timescale,i=t.duration;return e.box(e.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n,i>>>24&255,i>>>16&255,i>>>8&255,255&i,85,196,0,0]))}},{key:"hdlr",value:function(t){var n=null;return n="audio"===t.type?e.constants.HDLR_AUDIO:e.constants.HDLR_VIDEO,e.box(e.types.hdlr,n)}},{key:"minf",value:function(t){var n=null;return n="audio"===t.type?e.box(e.types.smhd,e.constants.SMHD):e.box(e.types.vmhd,e.constants.VMHD),e.box(e.types.minf,n,e.dinf(),e.stbl(t))}},{key:"dinf",value:function(){return e.box(e.types.dinf,e.box(e.types.dref,e.constants.DREF))}},{key:"stbl",value:function(t){return e.box(e.types.stbl,e.stsd(t),e.box(e.types.stts,e.constants.STTS),e.box(e.types.stsc,e.constants.STSC),e.box(e.types.stsz,e.constants.STSZ),e.box(e.types.stco,e.constants.STCO))}},{key:"stsd",value:function(t){return"audio"===t.type?"mp3"===t.codec?e.box(e.types.stsd,e.constants.STSD_PREFIX,e.mp3(t)):e.box(e.types.stsd,e.constants.STSD_PREFIX,e.mp4a(t)):e.box(e.types.stsd,e.constants.STSD_PREFIX,e.avc1(t))}},{key:"mp3",value:function(t){var n=t.channelCount,i=t.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,n,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return e.box(e.types[".mp3"],r)}},{key:"mp4a",value:function(t){var n=t.channelCount,i=t.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,n,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return e.box(e.types.mp4a,r,e.esds(t))}},{key:"esds",value:function(t){var n=t.config||[],i=n.length,r=new Uint8Array([0,0,0,0,3,23+i,0,1,0,4,15+i,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([i]).concat(n).concat([6,1,2]));return e.box(e.types.esds,r)}},{key:"avc1",value:function(t){var n=t.avcc,i=t.codecWidth,r=t.codecHeight,s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,r>>>8&255,255&r,0,72,0,0,0,72,0,0,0,0,0,0,0,1,10,120,113,113,47,102,108,118,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return e.box(e.types.avc1,s,e.box(e.types.avcC,n))}},{key:"mvex",value:function(t){return e.box(e.types.mvex,e.trex(t))}},{key:"trex",value:function(t){var n=t.id,i=new Uint8Array([0,0,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return e.box(e.types.trex,i)}},{key:"moof",value:function(t,n){return e.box(e.types.moof,e.mfhd(t.sequenceNumber),e.traf(t,n))}},{key:"mfhd",value:function(t){var n=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t]);return e.box(e.types.mfhd,n)}},{key:"traf",value:function(t,n){var i=t.id,r=e.box(e.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),s=e.box(e.types.tfdt,new Uint8Array([0,0,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n])),a=e.sdtp(t),o=e.trun(t,a.byteLength+16+16+8+16+8+8);return e.box(e.types.traf,r,s,o,a)}},{key:"sdtp",value:function(t){for(var n=t.samples||[],i=n.length,r=new Uint8Array(4+i),s=0;s>>24&255,r>>>16&255,r>>>8&255,255&r,n>>>24&255,n>>>16&255,n>>>8&255,255&n],0);for(var o=0;o>>24&255,u>>>16&255,u>>>8&255,255&u,l>>>24&255,l>>>16&255,l>>>8&255,255&l,d.isLeading<<2|d.dependsOn,d.isDependedOn<<6|d.hasRedundancy<<4|d.isNonSync,0,0,h>>>24&255,h>>>16&255,h>>>8&255,255&h],12+16*o)}return e.box(e.types.trun,a)}},{key:"mdat",value:function(t){return e.box(e.types.mdat,t)}}]),e}();s.init(),n.default=s},{}],38:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n1&&(y=i.pop(),g-=y.length),null!=this._audioStashedLastSample){var E=this._audioStashedLastSample;this._audioStashedLastSample=null,i.unshift(E),g+=E.length}null!=y&&(this._audioStashedLastSample=y);var b=i[0].dts-this._dtsBase;if(this._audioNextDts)r=b-this._audioNextDts;else if(this._audioSegmentInfoList.isEmpty())r=0,this._fillSilentAfterSeek&&!this._videoSegmentInfoList.isEmpty()&&"mp3"!==this._audioMeta.originalCodec&&(m=!0);else{var S=this._audioSegmentInfoList.getLastSampleBefore(b);if(null!=S){var k=b-(S.originalDts+S.duration);k<=3&&(k=0);var L=S.dts+S.duration+k;r=b-L}else r=0}if(m){var w=b-r,R=this._videoSegmentInfoList.getLastSegmentBefore(b);if(null!=R&&R.beginDts=1?C[C.length-1].duration:Math.floor(u);var U=!1,N=null;if(j>1.5*u&&"mp3"!==this._audioMeta.codec&&this._fillAudioTimestampGap&&!c.default.safari){U=!0;var F=Math.abs(j-u),G=Math.ceil(F/u),V=B+u;o.default.w(this.TAG,"Large audio timestamp gap detected, may cause AV sync to drift. Silent frames will be generated to avoid unsync.\ndts: "+(B+j)+" ms, expected: "+(B+Math.round(u))+" ms, delta: "+Math.round(F)+" ms, generate: "+G+" frames");var z=h.default.getSilentFrame(this._audioMeta.originalCodec,this._audioMeta.channelCount);null==z&&(o.default.w(this.TAG,"Unable to generate silent frame for "+this._audioMeta.originalCodec+" with "+this._audioMeta.channelCount+" channels, repeat last frame"),z=M),N=[];for(var H=0;H0){var q=N[N.length-1];q.duration=K-q.dts}var W={dts:K,pts:K,cts:0,unit:z,size:z.byteLength,duration:0,originalDts:D,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}};N.push(W),g+=M.byteLength,V+=u}var X=N[N.length-1];X.duration=B+j-X.dts,j=Math.round(u)}C.push({dts:B,pts:B,cts:0,unit:x.unit,size:x.unit.byteLength,duration:j,originalDts:D,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}}),U&&C.push.apply(C,N)}d?v=new Uint8Array(g):(v=new Uint8Array(g),v[0]=g>>>24&255,v[1]=g>>>16&255,v[2]=g>>>8&255,v[3]=255&g,v.set(l.default.types.mdat,4));for(var Y=0;Y1&&(c=i.pop(),f-=c.length),null!=this._videoStashedLastSample){var m=this._videoStashedLastSample;this._videoStashedLastSample=null,i.unshift(m),f+=m.length}null!=c&&(this._videoStashedLastSample=c);var p=i[0].dts-this._dtsBase;if(this._videoNextDts)r=p-this._videoNextDts;else if(this._videoSegmentInfoList.isEmpty())r=0;else{var v=this._videoSegmentInfoList.getLastSampleBefore(p);if(null!=v){var g=p-(v.originalDts+v.duration);g<=3&&(g=0);var y=v.dts+v.duration+g;r=p-y}else r=0}for(var E=new _.MediaSegmentInfo,b=[],S=0;S=1?b[b.length-1].duration:Math.floor(this._videoMeta.refSampleDuration);if(w){var I=new _.SampleInfo(R,O,T,k.dts,!0);I.fileposition=k.fileposition,E.appendSyncPoint(I)}b.push({dts:R,pts:O,cts:A,units:k.units,size:k.length,isKeyframe:w,duration:T,originalDts:L,flags:{isLeading:0,dependsOn:w?2:1,isDependedOn:w?1:0,hasRedundancy:0,isNonSync:w?0:1}})}h=new Uint8Array(f),h[0]=f>>>24&255,h[1]=f>>>16&255,h[2]=f>>>8&255,h[3]=255&f,h.set(l.default.types.mdat,4);for(var x=0;x=0&&/(rv)(?::| )([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(firefox)[ \/]([\w.]+)/.exec(e)||[],n=/(ipad)/.exec(e)||/(ipod)/.exec(e)||/(windows phone)/.exec(e)||/(iphone)/.exec(e)||/(kindle)/.exec(e)||/(android)/.exec(e)||/(windows)/.exec(e)||/(mac)/.exec(e)||/(linux)/.exec(e)||/(cros)/.exec(e)||[],r={browser:t[5]||t[3]||t[1]||"",version:t[2]||t[4]||"0",majorVersion:t[4]||t[2]||"0",platform:n[0]||""},s={};if(r.browser){s[r.browser]=!0;var a=r.majorVersion.split(".");s.version={major:parseInt(r.majorVersion,10),string:r.version},a.length>1&&(s.version.minor=parseInt(a[1],10)),a.length>2&&(s.version.build=parseInt(a[2],10))}r.platform&&(s[r.platform]=!0),(s.chrome||s.opr||s.safari)&&(s.webkit=!0),(s.rv||s.iemobile)&&(s.rv&&delete s.rv,r.browser="msie",s.msie=!0),s.edge&&(delete s.edge,r.browser="msedge",s.msedge=!0),s.opr&&(r.browser="opera",s.opera=!0),s.safari&&s.android&&(r.browser="android",s.android=!0),s.name=r.browser,s.platform=r.platform;for(var o in i)i.hasOwnProperty(o)&&delete i[o];Object.assign(i,s)}(),n.default=i},{}],40:[function(e,t,n){"use strict";function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n "+n;e.ENABLE_CALLBACK&&e.emitter.emit("log","error",i),e.ENABLE_ERROR&&(console.error?console.error(i):console.warn?console.warn(i):console.log(i))}},{key:"i",value:function(t,n){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var i="["+t+"] > "+n;e.ENABLE_CALLBACK&&e.emitter.emit("log","info",i),e.ENABLE_INFO&&(console.info?console.info(i):console.log(i))}},{key:"w",value:function(t,n){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var i="["+t+"] > "+n;e.ENABLE_CALLBACK&&e.emitter.emit("log","warn",i),e.ENABLE_WARN&&(console.warn?console.warn(i):console.log(i))}},{key:"d",value:function(t,n){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var i="["+t+"] > "+n;e.ENABLE_CALLBACK&&e.emitter.emit("log","debug",i),e.ENABLE_DEBUG&&(console.debug?console.debug(i):console.log(i))}},{key:"v",value:function(t,n){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var i="["+t+"] > "+n;e.ENABLE_CALLBACK&&e.emitter.emit("log","verbose",i),e.ENABLE_VERBOSE&&console.log(i)}}]),e}();o.GLOBAL_TAG="flv.js",o.FORCE_GLOBAL_TAG=!1,o.ENABLE_ERROR=!0,o.ENABLE_INFO=!0,o.ENABLE_WARN=!0,o.ENABLE_DEBUG=!0,o.ENABLE_VERBOSE=!0,o.ENABLE_CALLBACK=!1,o.emitter=new a.default,n.default=o},{events:2}],42:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n0){var n=e.getConfig();t.emit("change",n)}}},{key:"registerListener",value:function(t){e.emitter.addListener("change",t)}},{key:"removeListener",value:function(t){e.emitter.removeListener("change",t)}},{key:"addLogListener",value:function(t){l.default.emitter.addListener("log",t),l.default.emitter.listenerCount("log")>0&&(l.default.ENABLE_CALLBACK=!0,e._notifyChange())}},{key:"removeLogListener",value:function(t){l.default.emitter.removeListener("log",t),0===l.default.emitter.listenerCount("log")&&(l.default.ENABLE_CALLBACK=!1,e._notifyChange())}},{key:"forceGlobalTag",get:function(){return l.default.FORCE_GLOBAL_TAG},set:function(t){l.default.FORCE_GLOBAL_TAG=t,e._notifyChange()}},{key:"globalTag",get:function(){return l.default.GLOBAL_TAG},set:function(t){l.default.GLOBAL_TAG=t,e._notifyChange()}},{key:"enableAll",get:function(){return l.default.ENABLE_VERBOSE&&l.default.ENABLE_DEBUG&&l.default.ENABLE_INFO&&l.default.ENABLE_WARN&&l.default.ENABLE_ERROR},set:function(t){l.default.ENABLE_VERBOSE=t,l.default.ENABLE_DEBUG=t,l.default.ENABLE_INFO=t,l.default.ENABLE_WARN=t,l.default.ENABLE_ERROR=t,e._notifyChange()}},{key:"enableDebug",get:function(){return l.default.ENABLE_DEBUG},set:function(t){l.default.ENABLE_DEBUG=t,e._notifyChange()}},{key:"enableVerbose",get:function(){return l.default.ENABLE_VERBOSE},set:function(t){l.default.ENABLE_VERBOSE=t,e._notifyChange()}},{key:"enableInfo",get:function(){return l.default.ENABLE_INFO},set:function(t){l.default.ENABLE_INFO=t,e._notifyChange()}},{key:"enableWarn",get:function(){return l.default.ENABLE_WARN},set:function(t){l.default.ENABLE_WARN=t,e._notifyChange()}},{key:"enableError",get:function(){return l.default.ENABLE_ERROR},set:function(t){l.default.ENABLE_ERROR=t,e._notifyChange()}}]),e}();d.emitter=new o.default,n.default=d},{"./logger.js":41,events:2}],43:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n=128){t.push(String.fromCharCode(65535&a)),r+=2;continue}}}else if(n[r]<240){if(i(n,r,2)){var o=(15&n[r])<<12|(63&n[r+1])<<6|63&n[r+2];if(o>=2048&&55296!=(63488&o)){t.push(String.fromCharCode(65535&o)),r+=3;continue}}}else if(n[r]<248&&i(n,r,3)){var u=(7&n[r])<<18|(63&n[r+1])<<12|(63&n[r+2])<<6|63&n[r+3];if(u>65536&&u<1114112){u-=65536,t.push(String.fromCharCode(u>>>10|55296)),t.push(String.fromCharCode(1023&u|56320)),r+=4;continue}}t.push(String.fromCharCode(65533)),++r}return t.join("")}Object.defineProperty(n,"__esModule",{value:!0}),n.default=r},{}]},{},[21])(21)}); //# sourceMappingURL=flv.min.js.map diff --git a/dashboard-ui/bower_components/emby-webcomponents/focusmanager.js b/dashboard-ui/bower_components/emby-webcomponents/focusmanager.js index fa12366347..5b56f684d7 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/focusmanager.js +++ b/dashboard-ui/bower_components/emby-webcomponents/focusmanager.js @@ -1 +1 @@ -define(["dom"],function(dom){"use strict";function pushScope(elem){scopes.push(elem)}function popScope(elem){scopes.length&&(scopes.length-=1)}function autoFocus(view,defaultToFirst,findAutoFocusElement){var element;return findAutoFocusElement!==!1&&(element=view.querySelector("*[autofocus]"))?(focus(element),element):defaultToFirst!==!1&&(element=getFocusableElements(view,1,"noautofocus")[0])?(focus(element),element):null}function focus(element){try{element.focus()}catch(err){console.log("Error in focusManager.autoFocus: "+err)}}function isFocusable(elem){return focusableTagNames.indexOf(elem.tagName)!==-1||!(!elem.classList||!elem.classList.contains("focusable"))}function focusableParent(elem){for(;!isFocusable(elem);)if(elem=elem.parentNode,!elem)return null;return elem}function isCurrentlyFocusableInternal(elem){return null!==elem.offsetParent}function isCurrentlyFocusable(elem){if(elem.disabled)return!1;if("-1"===elem.getAttribute("tabindex"))return!1;if("INPUT"===elem.tagName){var type=elem.type;if("range"===type)return!1;if("file"===type)return!1}return isCurrentlyFocusableInternal(elem)}function getDefaultScope(){return scopes[0]||document.body}function getFocusableElements(parent,limit,excludeClass){for(var elems=(parent||getDefaultScope()).querySelectorAll(focusableQuery),focusableElements=[],i=0,length=elems.length;i=limit))break}return focusableElements}function isFocusContainer(elem,direction){if(focusableContainerTagNames.indexOf(elem.tagName)!==-1)return!0;var classList=elem.classList;if(classList.contains("focuscontainer"))return!0;if(0===direction){if(classList.contains("focuscontainer-x"))return!0;if(classList.contains("focuscontainer-left"))return!0}else if(1===direction){if(classList.contains("focuscontainer-x"))return!0;if(classList.contains("focuscontainer-right"))return!0}else if(2===direction){if(classList.contains("focuscontainer-y"))return!0}else if(3===direction){if(classList.contains("focuscontainer-y"))return!0;if(classList.contains("focuscontainer-down"))return!0}return!1}function getFocusContainer(elem,direction){for(;!isFocusContainer(elem,direction);)if(elem=elem.parentNode,!elem)return getDefaultScope();return elem}function getOffset(elem){var box;if(box=elem.getBoundingClientRect?elem.getBoundingClientRect():{top:0,left:0,width:0,height:0},null===box.right){var newBox={top:box.top,left:box.left,width:box.width,height:box.height};box=newBox,box.right=box.left+box.width,box.bottom=box.top+box.height}return box}function nav(activeElement,direction,container){if(activeElement=activeElement||document.activeElement,activeElement&&(activeElement=focusableParent(activeElement)),container=container||(activeElement?getFocusContainer(activeElement,direction):getDefaultScope()),!activeElement)return void autoFocus(container,!0,!1);for(var nearestElement,focusableContainer=dom.parentWithClass(activeElement,"focusable"),rect=getOffset(activeElement),point1x=parseFloat(rect.left)||0,point1y=parseFloat(rect.top)||0,point2x=parseFloat(point1x+rect.width-1)||point1x,point2y=parseFloat(point1y+rect.height-1)||point1y,sourceMidX=(Math.min,Math.max,rect.left+rect.width/2),sourceMidY=rect.top+rect.height/2,focusable=container.querySelectorAll(focusableQuery),maxDistance=1/0,minDistance=maxDistance,i=0,length=focusable.length;i=rect.left)continue;if(elementRect.right===rect.right)continue;break;case 1:if(elementRect.right<=rect.right)continue;if(elementRect.left===rect.left)continue;break;case 2:if(elementRect.top>=rect.top)continue;if(elementRect.bottom>=rect.bottom)continue;break;case 3:if(elementRect.bottom<=rect.bottom)continue;if(elementRect.top<=rect.top)continue}var distX,distY,x=elementRect.left,y=elementRect.top,x2=x+elementRect.width-1,y2=y+elementRect.height-1,intersectX=intersects(point1x,point2x,x,x2),intersectY=intersects(point1y,point2y,y,y2),midX=elementRect.left+elementRect.width/2,midY=elementRect.top+elementRect.height/2;switch(direction){case 0:distX=Math.abs(point1x-Math.min(point1x,x2)),distY=intersectY?0:Math.abs(sourceMidY-midY);break;case 1:distX=Math.abs(point2x-Math.max(point2x,x)),distY=intersectY?0:Math.abs(sourceMidY-midY);break;case 2:distY=Math.abs(point1y-Math.min(point1y,y2)),distX=intersectX?0:Math.abs(sourceMidX-midX);break;case 3:distY=Math.abs(point2y-Math.max(point2y,y)),distX=intersectX?0:Math.abs(sourceMidX-midX)}var dist=Math.sqrt(distX*distX+distY*distY);dist=a1&&b1<=a2||b2>=a1&&b2<=a2}function intersects(a1,a2,b1,b2){return intersectsInternal(a1,a2,b1,b2)||intersectsInternal(b1,b2,a1,a2)}function sendText(text){var elem=document.activeElement;elem.value=text}function focusFirst(container,focusableSelector){for(var elems=container.querySelectorAll(focusableSelector),i=0,length=elems.length;i=limit)))break}return focusableElements}function isFocusContainer(elem,direction){if(-1!==focusableContainerTagNames.indexOf(elem.tagName))return!0;var classList=elem.classList;if(classList.contains("focuscontainer"))return!0;if(0===direction){if(classList.contains("focuscontainer-x"))return!0;if(classList.contains("focuscontainer-left"))return!0}else if(1===direction){if(classList.contains("focuscontainer-x"))return!0;if(classList.contains("focuscontainer-right"))return!0}else if(2===direction){if(classList.contains("focuscontainer-y"))return!0}else if(3===direction){if(classList.contains("focuscontainer-y"))return!0;if(classList.contains("focuscontainer-down"))return!0}return!1}function getFocusContainer(elem,direction){for(;!isFocusContainer(elem,direction);)if(!(elem=elem.parentNode))return getDefaultScope();return elem}function getOffset(elem){var box;if(box=elem.getBoundingClientRect?elem.getBoundingClientRect():{top:0,left:0,width:0,height:0},null===box.right){box={top:box.top,left:box.left,width:box.width,height:box.height},box.right=box.left+box.width,box.bottom=box.top+box.height}return box}function nav(activeElement,direction,container,focusableElements){if(activeElement=activeElement||document.activeElement,activeElement&&(activeElement=focusableParent(activeElement)),container=container||(activeElement?getFocusContainer(activeElement,direction):getDefaultScope()),!activeElement)return void autoFocus(container,!0,!1);for(var nearestElement,focusableContainer=dom.parentWithClass(activeElement,"focusable"),rect=getOffset(activeElement),point1x=parseFloat(rect.left)||0,point1y=parseFloat(rect.top)||0,point2x=parseFloat(point1x+rect.width-1)||point1x,point2y=parseFloat(point1y+rect.height-1)||point1y,sourceMidX=(Math.min,Math.max,rect.left+rect.width/2),sourceMidY=rect.top+rect.height/2,focusable=focusableElements||container.querySelectorAll(focusableQuery),minDistance=1/0,i=0,length=focusable.length;i=rect.left)continue;if(elementRect.right===rect.right)continue;break;case 1:if(elementRect.right<=rect.right)continue;if(elementRect.left===rect.left)continue;break;case 2:if(elementRect.top>=rect.top)continue;if(elementRect.bottom>=rect.bottom)continue;break;case 3:if(elementRect.bottom<=rect.bottom)continue;if(elementRect.top<=rect.top)continue}var distX,distY,x=elementRect.left,y=elementRect.top,x2=x+elementRect.width-1,y2=y+elementRect.height-1,intersectX=intersects(point1x,point2x,x,x2),intersectY=intersects(point1y,point2y,y,y2),midX=elementRect.left+elementRect.width/2,midY=elementRect.top+elementRect.height/2;switch(direction){case 0:distX=Math.abs(point1x-Math.min(point1x,x2)),distY=intersectY?0:Math.abs(sourceMidY-midY);break;case 1:distX=Math.abs(point2x-Math.max(point2x,x)),distY=intersectY?0:Math.abs(sourceMidY-midY);break;case 2:distY=Math.abs(point1y-Math.min(point1y,y2)),distX=intersectX?0:Math.abs(sourceMidX-midX);break;case 3:distY=Math.abs(point2y-Math.max(point2y,y)),distX=intersectX?0:Math.abs(sourceMidX-midX)}var dist=Math.sqrt(distX*distX+distY*distY);dist=a1&&b1<=a2||b2>=a1&&b2<=a2}function intersects(a1,a2,b1,b2){return intersectsInternal(a1,a2,b1,b2)||intersectsInternal(b1,b2,a1,a2)}function sendText(text){document.activeElement.value=text}function focusFirst(container,focusableSelector){for(var elems=container.querySelectorAll(focusableSelector),i=0,length=elems.length;i1&&(module=parts[0],key=parts[1]),translateKeyFromModule(key,module)}function translateKeyFromModule(key,module){var dictionary=getDictionary(module);return dictionary?dictionary[key]||key:key}function replaceAll(str,find,replace){return str.split(find).join(replace)}function translate(key){for(var val=translateKey(key),i=1;i1&&(module=parts[0],key=parts[1]),translateKeyFromModule(key,module)}function translateKeyFromModule(key,module){var dictionary=getDictionary(module);return dictionary?dictionary[key]||key:key}function replaceAll(str,find,replace){return str.split(find).join(replace)}function translate(key){for(var val=translateKey(key),i=1;i=4&&categories.push("series"),categories.push("all"),options.categories=categories}function loadCategories(context,options){for(var selectedCategories=options.categories||[],chkCategorys=context.querySelectorAll(".chkCategory"),i=0,length=chkCategorys.length;i=4&&categories.push("series"),categories.push("all"),options.categories=categories}function loadCategories(context,options){for(var selectedCategories=options.categories||[],chkCategorys=context.querySelectorAll(".chkCategory"),i=0,length=chkCategorys.length;i0&&pctOfWidth<=100?(guideProgramName.style.transform="translateX("+pctOfWidth+"%)",caret.classList.remove("hide")):(guideProgramName.style.transform="none",caret.classList.add("hide")))}function updateProgramCellsOnScroll(programGrid,programCells){isUpdatingProgramCellScroll||(isUpdatingProgramCellScroll=!0,requestAnimationFrame(function(){for(var scrollLeft=programGrid.scrollLeft,scrollPct=scrollLeft?scrollLeft/programGrid.scrollWidth*100:0,i=0,length=programCells.length;i=startDate&&now=0?date.setHours(date.getHours(),cellCurationMinutes,0,0):date.setHours(date.getHours(),0,0,0),date}function showLoading(){loading.show()}function hideLoading(){loading.hide()}function startCurrentTimeUpdateInterval(){clearCurrentTimeUpdateInterval(),currentTimeUpdateInterval=setInterval(updateCurrentTimeIndicator,6e4),updateCurrentTimeIndicator()}function clearCurrentTimeUpdateInterval(){var interval=currentTimeUpdateInterval;interval&&clearInterval(interval),currentTimeUpdateInterval=null,currentTimeIndicatorBar=null,currentTimeIndicatorArrow=null}function updateCurrentTimeIndicator(){if(currentTimeIndicatorBar||(currentTimeIndicatorBar=options.element.querySelector(".guide-currentTimeIndicatorBar")),currentTimeIndicatorArrow||(currentTimeIndicatorArrow=options.element.querySelector(".guide-currentTimeIndicatorArrowContainer")),currentDate){var dateDifference=(new Date).getTime()-currentDate.getTime(),pct=dateDifference>0?dateDifference/totalRendererdMs:0;pct=Math.min(pct,1),pct<=0||pct>=1?(currentTimeIndicatorBar.classList.add("hide"),currentTimeIndicatorArrow.classList.add("hide")):(currentTimeIndicatorBar.classList.remove("hide"),currentTimeIndicatorArrow.classList.remove("hide"),currentTimeIndicatorBar.style.transform="scaleX("+pct+")",currentTimeIndicatorArrow.style.left=100*pct+"%")}}function reloadGuide(context,newStartDate,scrollToTimeMs,focusToTimeMs,startTimeOfDayMs,focusProgramOnRender){var apiClient=connectionManager.getApiClient(options.serverId),channelQuery={StartIndex:0,EnableFavoriteSorting:"false"!==userSettings.get("livetv-favoritechannelsattop")};channelQuery.UserId=apiClient.getCurrentUserId();var channelLimit=500;currentChannelLimit=channelLimit,showLoading(),channelQuery.StartIndex=currentStartIndex,channelQuery.Limit=channelLimit,channelQuery.AddCurrentProgram=!1,channelQuery.EnableUserData=!1,channelQuery.EnableImageTypes="Primary";var categories=self.categoryOptions.categories||[],displayMovieContent=!categories.length||categories.indexOf("movies")!==-1,displaySportsContent=!categories.length||categories.indexOf("sports")!==-1,displayNewsContent=!categories.length||categories.indexOf("news")!==-1,displayKidsContent=!categories.length||categories.indexOf("kids")!==-1,displaySeriesContent=!categories.length||categories.indexOf("series")!==-1;displayMovieContent&&displaySportsContent&&displayNewsContent&&displayKidsContent?(channelQuery.IsMovie=null,channelQuery.IsSports=null,channelQuery.IsKids=null,channelQuery.IsNews=null,channelQuery.IsSeries=null):(displayNewsContent&&(channelQuery.IsNews=!0),displaySportsContent&&(channelQuery.IsSports=!0),displayKidsContent&&(channelQuery.IsKids=!0),displayMovieContent&&(channelQuery.IsMovie=!0),displaySeriesContent&&(channelQuery.IsSeries=!0)),"DatePlayed"===userSettings.get("livetv-channelorder")?(channelQuery.SortBy="DatePlayed",channelQuery.SortOrder="Descending"):(channelQuery.SortBy=null,channelQuery.SortOrder=null);var date=newStartDate;date=new Date(date.getTime()+1e3);var nextDay=new Date(date.getTime()+msPerDay-2e3);apiClient.getLiveTvChannels(channelQuery).then(function(channelsResult){var btnPreviousPage=context.querySelector(".btnPreviousPage"),btnNextPage=context.querySelector(".btnNextPage");channelsResult.TotalRecordCount>channelLimit?(context.querySelector(".guideOptions").classList.remove("hide"),btnPreviousPage.classList.remove("hide"),btnNextPage.classList.remove("hide"),channelQuery.StartIndex?context.querySelector(".btnPreviousPage").disabled=!1:context.querySelector(".btnPreviousPage").disabled=!0,channelQuery.StartIndex+channelLimit",startDate.setTime(startDate.getTime()+cellDurationMs);return html+='
',html+="
",html+='
',html+='
',html+="
"}function parseDates(program){if(!program.StartDateLocal)try{program.StartDateLocal=datetime.parseISO8601Date(program.StartDate,{toLocal:!0})}catch(err){}if(!program.EndDateLocal)try{program.EndDateLocal=datetime.parseISO8601Date(program.EndDate,{toLocal:!0})}catch(err){}return null}function getTimerIndicator(item){var status;if("SeriesTimer"===item.Type)return'';if(item.TimerId||item.SeriesTimerId)status=item.Status||"Cancelled";else{if("Timer"!==item.Type)return"";status=item.Status}return item.SeriesTimerId?"Cancelled"!==status?'':'':''}function getChannelProgramsHtml(context,date,channel,programs,options,listInfo){var html="",startMs=date.getTime(),endMs=startMs+msPerDay-1,outerCssClass=layoutManager.tv?"channelPrograms channelPrograms-tv":"channelPrograms";html+='
';for(var programsFound,clickAction=layoutManager.tv?"link":"programdialog",categories=self.categoryOptions.categories||[],displayMovieContent=!categories.length||categories.indexOf("movies")!==-1,displaySportsContent=!categories.length||categories.indexOf("sports")!==-1,displayNewsContent=!categories.length||categories.indexOf("news")!==-1,displayKidsContent=!categories.length||categories.indexOf("kids")!==-1,displaySeriesContent=!categories.length||categories.indexOf("series")!==-1,enableColorCodedBackgrounds="true"===userSettings.get("guide-colorcodedbackgrounds"),i=listInfo.startIndex,length=programs.length;iendMs)break;items[program.Id]=program;var renderStartMs=Math.max(program.StartDateLocal.getTime(),startMs),startPercent=(program.StartDateLocal.getTime()-startMs)/msPerDay;startPercent*=100,startPercent=Math.max(startPercent,0);var renderEndMs=Math.min(program.EndDateLocal.getTime(),endMs),endPercent=(renderEndMs-renderStartMs)/msPerDay;endPercent*=100;var cssClass="programCell itemAction",accentCssClass=null,displayInnerContent=!0;program.IsKids?(cssClass+=" childProgramInfo",displayInnerContent=displayKidsContent,accentCssClass="kids"):program.IsSports?(cssClass+=" sportsProgramInfo",displayInnerContent=displaySportsContent,accentCssClass="sports"):program.IsNews?(cssClass+=" newsProgramInfo",displayInnerContent=displayNewsContent,accentCssClass="news"):program.IsMovie?(cssClass+=" movieProgramInfo",displayInnerContent=displayMovieContent,accentCssClass="movie"):program.IsSeries?(cssClass+=" plainProgramInfo",displayInnerContent=displaySeriesContent):(cssClass+=" plainProgramInfo",displayInnerContent=displayMovieContent&&displayNewsContent&&displaySportsContent&&displayKidsContent&&displaySeriesContent),displayInnerContent&&enableColorCodedBackgrounds&&accentCssClass&&(cssClass+=" programCell-"+accentCssClass);var timerAttributes="";program.TimerId&&(timerAttributes+=' data-timerid="'+program.TimerId+'"'),program.SeriesTimerId&&(timerAttributes+=' data-seriestimerid="'+program.SeriesTimerId+'"');var isAttribute=endPercent>=2?' is="emby-programcell"':"";if(html+="',displayInnerContent){var guideProgramNameClass="guideProgramName";html+='
',html+='
',html+='
'+program.Name;var indicatorHtml=null;program.IsLive&&options.showLiveIndicator?indicatorHtml=''+globalize.translate("sharedcomponents#Live")+"":program.IsPremiere&&options.showPremiereIndicator?indicatorHtml=''+globalize.translate("sharedcomponents#Premiere")+"":program.IsSeries&&!program.IsRepeat&&options.showNewIndicator?indicatorHtml=''+globalize.translate("sharedcomponents#AttributeNew")+"":program.IsSeries&&program.IsRepeat&&options.showRepeatIndicator&&(indicatorHtml=''+globalize.translate("sharedcomponents#Repeat")+""),html+=indicatorHtml||"",program.EpisodeTitle&&options.showEpisodeTitle&&(html+='
',program.EpisodeTitle&&options.showEpisodeTitle&&(html+=''+program.EpisodeTitle+""),html+="
"),html+="
",program.IsHD&&options.showHdIcon&&(html+=layoutManager.tv?'
HD
':'
HD
'),html+=getTimerIndicator(program),html+="
"}html+=""}}else if(programsFound)break}return html+="
"}function renderChannelHeaders(context,channels,apiClient){for(var html="",i=0,length=channels.length;i',hasChannelImage){var url=apiClient.getScaledImageUrl(channel.Id,{maxHeight:220,tag:channel.ImageTags.Primary,type:"Primary"});html+='
'}channel.ChannelNumber&&(html+='

'+channel.ChannelNumber+"

"),!hasChannelImage&&channel.Name&&(html+='
'+channel.Name+"
"),html+=""}var channelList=context.querySelector(".channelsContainer");channelList.innerHTML=html,imageLoader.lazyChildren(channelList)}function renderPrograms(context,date,channels,programs){for(var allowIndicators=dom.getWindowSize().innerWidth>=600,options={showHdIcon:allowIndicators&&"true"===userSettings.get("guide-indicator-hd"),showLiveIndicator:allowIndicators&&"false"!==userSettings.get("guide-indicator-live"),showPremiereIndicator:allowIndicators&&"false"!==userSettings.get("guide-indicator-premiere"),showNewIndicator:allowIndicators&&"true"===userSettings.get("guide-indicator-new"),showRepeatIndicator:allowIndicators&&"true"===userSettings.get("guide-indicator-repeat"),showEpisodeTitle:!layoutManager.tv},listInfo={startIndex:0},html=[],i=0,length=channels.length;i=pct||left+width>=pct)break;programCell=programCell.nextSibling}programCell?focusManager.focus(programCell):focusManager.autoFocus(autoFocusParent,!0)}}function nativeScrollTo(container,pos,horizontal){container.scrollTo?horizontal?container.scrollTo(pos,0):container.scrollTo(0,pos):horizontal?container.scrollLeft=Math.round(pos):container.scrollTop=Math.round(pos)}function onProgramGridScroll(context,elem,timeslotHeaders){(new Date).getTime()-lastHeaderScroll>=1e3&&(lastGridScroll=(new Date).getTime(),nativeScrollTo(timeslotHeaders,elem.scrollLeft,!0)),updateProgramCellsOnScroll(elem,programCells)}function onTimeslotHeadersScroll(context,elem){(new Date).getTime()-lastGridScroll>=1e3&&(lastHeaderScroll=(new Date).getTime(),nativeScrollTo(programGrid,elem.scrollLeft,!0))}function changeDate(page,date,scrollToTimeMs,focusToTimeMs,startTimeOfDayMs,focusProgramOnRender){clearCurrentTimeUpdateInterval();var newStartDate=normalizeDateToTimeslot(date);currentDate=newStartDate,reloadGuide(page,newStartDate,scrollToTimeMs,focusToTimeMs,startTimeOfDayMs,focusProgramOnRender)}function getDateTabText(date,isActive,tabIndex){var cssClass=isActive?"emby-tab-button guide-date-tab-button emby-tab-button-active":"emby-tab-button guide-date-tab-button",html='"}function setDateRange(page,guideInfo){var today=new Date,nowHours=today.getHours();today.setHours(nowHours,0,0,0);var start=datetime.parseISO8601Date(guideInfo.StartDate,{toLocal:!0}),end=datetime.parseISO8601Date(guideInfo.EndDate,{toLocal:!0});start.setHours(nowHours,0,0,0),end.setHours(0,0,0,0),start.getTime()>=end.getTime()&&end.setDate(start.getDate()+1),start=new Date(Math.max(today,start));var dateTabsHtml="",tabIndex=0,date=new Date;currentDate&&date.setTime(currentDate.getTime()),date.setHours(nowHours,0,0,0);var startTimeOfDayMs=60*start.getHours()*60*1e3;for(startTimeOfDayMs+=60*start.getMinutes()*1e3;start<=end;){var isActive=date.getDate()===start.getDate()&&date.getMonth()===start.getMonth()&&date.getFullYear()===start.getFullYear();dateTabsHtml+=getDateTabText(start,isActive,tabIndex),start.setDate(start.getDate()+1),start.setHours(0,0,0,0),tabIndex++}page.querySelector(".emby-tabs-slider").innerHTML=dateTabsHtml,page.querySelector(".guideDateTabs").refresh();var newDate=new Date,newDateHours=newDate.getHours(),scrollToTimeMs=60*newDateHours*60*1e3,minutes=newDate.getMinutes();minutes>=30&&(scrollToTimeMs+=18e5);var focusToTimeMs=60*(60*newDateHours+minutes)*1e3;changeDate(page,date,scrollToTimeMs,focusToTimeMs,startTimeOfDayMs,layoutManager.tv)}function reloadPage(page){showLoading();var apiClient=connectionManager.getApiClient(options.serverId);apiClient.getLiveTvGuideInfo().then(function(guideInfo){setDateRange(page,guideInfo)})}function getChildren(element){var nativeResult=element.children;if(nativeResult)return nativeResult;for(var node,i=0,nodes=element.childNodes,children=[];null!=(node=nodes[i++]);)1===node.nodeType&&children.push(node);return children}function isFirstChild(element){var children=getChildren(element.parentNode);return element===children[0]}function isLastChild(element){var children=getChildren(element.parentNode);return children.length>0&&element===children[children.length-1]}function onInputCommand(e){var container,target=e.target,programCell=dom.parentWithClass(target,"programCell"),scrollX=!1;switch(e.detail.command){case"up":container=programCell?programGrid:null,container&&isFirstChild(dom.parentWithClass(programCell,"channelPrograms"))&&(container=null),lastFocusDirection=e.detail.command,focusManager.moveUp(target,{container:container});break;case"down":container=programCell?programGrid:null,container&&isLastChild(dom.parentWithClass(programCell,"channelPrograms"))&&(container=null),lastFocusDirection=e.detail.command,focusManager.moveDown(target,{container:container});break;case"left":container=programCell?dom.parentWithClass(programCell,"channelPrograms"):null,container&&isFirstChild(programCell)&&(container=null),lastFocusDirection=e.detail.command,focusManager.moveLeft(target,{container:container}),scrollX=!0;break;case"right":container=programCell?dom.parentWithClass(programCell,"channelPrograms"):null,lastFocusDirection=e.detail.command,focusManager.moveRight(target,{container:container}),scrollX=!0;break;default:return}e.preventDefault(),e.stopPropagation()}function onScrollerFocus(e){var target=e.target,programCell=dom.parentWithClass(target,"programCell");if(programCell){var focused=target,id=focused.getAttribute("data-id"),item=items[id];item&&events.trigger(self,"focus",[{item:item}])}if("left"===lastFocusDirection||"right"===lastFocusDirection)programCell&&scrollHelper.toStart(programGrid,programCell,!0,!0);else if("up"===lastFocusDirection||"down"===lastFocusDirection){var verticalScroller=dom.parentWithClass(target,"guideVerticalScroller");if(verticalScroller){var focusedElement=programCell||dom.parentWithTag(target,"BUTTON");verticalScroller.toCenter(focusedElement,!0)}}}function setScrollEvents(view,enabled){if(layoutManager.tv){var guideVerticalScroller=view.querySelector(".guideVerticalScroller");enabled?inputManager.on(guideVerticalScroller,onInputCommand):inputManager.off(guideVerticalScroller,onInputCommand)}}function onTimerCreated(e,apiClient,data){for(var programId=data.ProgramId,newTimerId=data.Id,cells=options.element.querySelectorAll('.programCell[data-id="'+programId+'"]'),i=0,length=cells.length;i'),newTimerId&&cell.setAttribute("data-timerid",newTimerId)}}function onSeriesTimerCreated(e,apiClient,data){}function onTimerCancelled(e,apiClient,data){for(var id=data.Id,cells=options.element.querySelectorAll('.programCell[data-timerid="'+id+'"]'),i=0,length=cells.length;i0&&pctOfWidth<=100?(guideProgramName.style.transform="translateX("+pctOfWidth+"%)",caret.classList.remove("hide")):(guideProgramName.style.transform="none",caret.classList.add("hide")))}function updateProgramCellsOnScroll(programGrid,programCells){isUpdatingProgramCellScroll||(isUpdatingProgramCellScroll=!0,requestAnimationFrame(function(){for(var scrollLeft=programGrid.scrollLeft,scrollPct=scrollLeft?scrollLeft/programGrid.scrollWidth*100:0,i=0,length=programCells.length;i=startDate&&now=0?date.setHours(date.getHours(),cellCurationMinutes,0,0):date.setHours(date.getHours(),0,0,0),date}function showLoading(){loading.show()}function hideLoading(){loading.hide()}function reloadGuide(context,newStartDate,scrollToTimeMs,focusToTimeMs,startTimeOfDayMs,focusProgramOnRender){var apiClient=connectionManager.getApiClient(options.serverId),channelQuery={StartIndex:0,EnableFavoriteSorting:"false"!==userSettings.get("livetv-favoritechannelsattop")};channelQuery.UserId=apiClient.getCurrentUserId();currentChannelLimit=500,showLoading(),channelQuery.StartIndex=currentStartIndex,channelQuery.Limit=500,channelQuery.AddCurrentProgram=!1,channelQuery.EnableUserData=!1,channelQuery.EnableImageTypes="Primary";var categories=self.categoryOptions.categories||[],displayMovieContent=!categories.length||-1!==categories.indexOf("movies"),displaySportsContent=!categories.length||-1!==categories.indexOf("sports"),displayNewsContent=!categories.length||-1!==categories.indexOf("news"),displayKidsContent=!categories.length||-1!==categories.indexOf("kids"),displaySeriesContent=!categories.length||-1!==categories.indexOf("series");displayMovieContent&&displaySportsContent&&displayNewsContent&&displayKidsContent?(channelQuery.IsMovie=null,channelQuery.IsSports=null,channelQuery.IsKids=null,channelQuery.IsNews=null,channelQuery.IsSeries=null):(displayNewsContent&&(channelQuery.IsNews=!0),displaySportsContent&&(channelQuery.IsSports=!0),displayKidsContent&&(channelQuery.IsKids=!0),displayMovieContent&&(channelQuery.IsMovie=!0),displaySeriesContent&&(channelQuery.IsSeries=!0)),"DatePlayed"===userSettings.get("livetv-channelorder")?(channelQuery.SortBy="DatePlayed",channelQuery.SortOrder="Descending"):(channelQuery.SortBy=null,channelQuery.SortOrder=null);var date=newStartDate;date=new Date(date.getTime()+1e3);var nextDay=new Date(date.getTime()+msPerDay-2e3),allowIndicators=dom.getWindowSize().innerWidth>=600,renderOptions={showHdIcon:allowIndicators&&"true"===userSettings.get("guide-indicator-hd"),showLiveIndicator:allowIndicators&&"false"!==userSettings.get("guide-indicator-live"),showPremiereIndicator:allowIndicators&&"false"!==userSettings.get("guide-indicator-premiere"),showNewIndicator:allowIndicators&&"false"!==userSettings.get("guide-indicator-new"),showRepeatIndicator:allowIndicators&&"true"===userSettings.get("guide-indicator-repeat"),showEpisodeTitle:!layoutManager.tv};apiClient.getLiveTvChannels(channelQuery).then(function(channelsResult){var btnPreviousPage=context.querySelector(".btnPreviousPage"),btnNextPage=context.querySelector(".btnNextPage");channelsResult.TotalRecordCount>500?(context.querySelector(".guideOptions").classList.remove("hide"),btnPreviousPage.classList.remove("hide"),btnNextPage.classList.remove("hide"),channelQuery.StartIndex?context.querySelector(".btnPreviousPage").disabled=!1:context.querySelector(".btnPreviousPage").disabled=!0,channelQuery.StartIndex+500",startDate.setTime(startDate.getTime()+cellDurationMs);return html}function parseDates(program){if(!program.StartDateLocal)try{program.StartDateLocal=datetime.parseISO8601Date(program.StartDate,{toLocal:!0})}catch(err){}if(!program.EndDateLocal)try{program.EndDateLocal=datetime.parseISO8601Date(program.EndDate,{toLocal:!0})}catch(err){}return null}function getTimerIndicator(item){var status;if("SeriesTimer"===item.Type)return'';if(item.TimerId||item.SeriesTimerId)status=item.Status||"Cancelled";else{if("Timer"!==item.Type)return"";status=item.Status}return item.SeriesTimerId?"Cancelled"!==status?'':'':''}function getChannelProgramsHtml(context,date,channel,programs,options,listInfo){var html="",startMs=date.getTime(),endMs=startMs+msPerDay-1;html+='
';for(var programsFound,clickAction=layoutManager.tv?"link":"programdialog",categories=self.categoryOptions.categories||[],displayMovieContent=!categories.length||-1!==categories.indexOf("movies"),displaySportsContent=!categories.length||-1!==categories.indexOf("sports"),displayNewsContent=!categories.length||-1!==categories.indexOf("news"),displayKidsContent=!categories.length||-1!==categories.indexOf("kids"),displaySeriesContent=!categories.length||-1!==categories.indexOf("series"),enableColorCodedBackgrounds="true"===userSettings.get("guide-colorcodedbackgrounds"),now=(new Date).getTime(),i=listInfo.startIndex,length=programs.length;iendMs)break;items[program.Id]=program;var renderStartMs=Math.max(startDateLocalMs,startMs),startPercent=(startDateLocalMs-startMs)/msPerDay;startPercent*=100,startPercent=Math.max(startPercent,0);var renderEndMs=Math.min(endDateLocalMs,endMs),endPercent=(renderEndMs-renderStartMs)/msPerDay;endPercent*=100;var cssClass="programCell itemAction",accentCssClass=null,displayInnerContent=!0;program.IsKids?(displayInnerContent=displayKidsContent,accentCssClass="kids"):program.IsSports?(displayInnerContent=displaySportsContent,accentCssClass="sports"):program.IsNews?(displayInnerContent=displayNewsContent,accentCssClass="news"):program.IsMovie?(displayInnerContent=displayMovieContent,accentCssClass="movie"):displayInnerContent=program.IsSeries?displaySeriesContent:displayMovieContent&&displayNewsContent&&displaySportsContent&&displayKidsContent&&displaySeriesContent,displayInnerContent&&enableColorCodedBackgrounds&&accentCssClass&&(cssClass+=" programCell-"+accentCssClass),now>=startDateLocalMs&&now=2?' is="emby-programcell"':"")+' data-action="'+clickAction+'"'+timerAttributes+' data-channelid="'+program.ChannelId+'" data-id="'+program.Id+'" data-serverid="'+program.ServerId+'" data-startdate="'+program.StartDate+'" data-enddate="'+program.EndDate+'" data-type="'+program.Type+'" class="'+cssClass+'" style="left:'+startPercent+"%;width:"+endPercent+'%;">',displayInnerContent){html+='
',html+='
',html+='
'+program.Name;var indicatorHtml=null;program.IsLive&&options.showLiveIndicator?indicatorHtml=''+globalize.translate("sharedcomponents#Live")+"":program.IsPremiere&&options.showPremiereIndicator?indicatorHtml=''+globalize.translate("sharedcomponents#Premiere")+"":program.IsSeries&&!program.IsRepeat&&options.showNewIndicator?indicatorHtml=''+globalize.translate("sharedcomponents#AttributeNew")+"":program.IsSeries&&program.IsRepeat&&options.showRepeatIndicator&&(indicatorHtml=''+globalize.translate("sharedcomponents#Repeat")+""),html+=indicatorHtml||"",program.EpisodeTitle&&options.showEpisodeTitle&&(html+='
',program.EpisodeTitle&&options.showEpisodeTitle&&(html+=''+program.EpisodeTitle+""),html+="
"),html+="
",program.IsHD&&options.showHdIcon&&(layoutManager.tv?html+='
HD
':html+='
HD
'),html+=getTimerIndicator(program),html+="
"}html+=""}}else if(programsFound)break}return html+="
"}function renderChannelHeaders(context,channels,apiClient){for(var html="",i=0,length=channels.length;i',hasChannelImage){html+='
'}channel.ChannelNumber&&(html+='

'+channel.ChannelNumber+"

"),!hasChannelImage&&channel.Name&&(html+='
'+channel.Name+"
"),html+=""}var channelList=context.querySelector(".channelsContainer");channelList.innerHTML=html,imageLoader.lazyChildren(channelList)}function renderPrograms(context,date,channels,programs,options){for(var listInfo={startIndex:0},html=[],i=0,length=channels.length;i=pct||left+width>=pct)break;programCell=programCell.nextSibling}programCell?focusManager.focus(programCell):focusManager.autoFocus(autoFocusParent,!0)}}function nativeScrollTo(container,pos,horizontal){container.scrollTo?horizontal?container.scrollTo(pos,0):container.scrollTo(0,pos):horizontal?container.scrollLeft=Math.round(pos):container.scrollTop=Math.round(pos)}function onProgramGridScroll(context,elem,timeslotHeaders){if((new Date).getTime()-lastHeaderScroll>=1e3){lastGridScroll=(new Date).getTime();var scrollLeft=elem.scrollLeft;scrollXPct=100*scrollLeft/elem.scrollWidth,nativeScrollTo(timeslotHeaders,scrollLeft,!0)}updateProgramCellsOnScroll(elem,programCells)}function onTimeslotHeadersScroll(context,elem){(new Date).getTime()-lastGridScroll>=1e3&&(lastHeaderScroll=(new Date).getTime(),nativeScrollTo(programGrid,elem.scrollLeft,!0))}function changeDate(page,date,scrollToTimeMs,focusToTimeMs,startTimeOfDayMs,focusProgramOnRender){var newStartDate=normalizeDateToTimeslot(date);currentDate=newStartDate,reloadGuide(page,newStartDate,scrollToTimeMs,focusToTimeMs,startTimeOfDayMs,focusProgramOnRender)}function getDateTabText(date,isActive,tabIndex){var cssClass=isActive?"emby-tab-button guide-date-tab-button emby-tab-button-active":"emby-tab-button guide-date-tab-button",html='"}function setDateRange(page,guideInfo){var today=new Date,nowHours=today.getHours();today.setHours(nowHours,0,0,0);var start=datetime.parseISO8601Date(guideInfo.StartDate,{toLocal:!0}),end=datetime.parseISO8601Date(guideInfo.EndDate,{toLocal:!0});start.setHours(nowHours,0,0,0),end.setHours(0,0,0,0),start.getTime()>=end.getTime()&&end.setDate(start.getDate()+1),start=new Date(Math.max(today,start));var dateTabsHtml="",tabIndex=0,date=new Date;currentDate&&date.setTime(currentDate.getTime()),date.setHours(nowHours,0,0,0);var startTimeOfDayMs=60*start.getHours()*60*1e3;for(startTimeOfDayMs+=60*start.getMinutes()*1e3;start<=end;){dateTabsHtml+=getDateTabText(start,date.getDate()===start.getDate()&&date.getMonth()===start.getMonth()&&date.getFullYear()===start.getFullYear(),tabIndex),start.setDate(start.getDate()+1),start.setHours(0,0,0,0),tabIndex++}page.querySelector(".emby-tabs-slider").innerHTML=dateTabsHtml,page.querySelector(".guideDateTabs").refresh();var newDate=new Date,newDateHours=newDate.getHours(),scrollToTimeMs=60*newDateHours*60*1e3,minutes=newDate.getMinutes();minutes>=30&&(scrollToTimeMs+=18e5),changeDate(page,date,scrollToTimeMs,60*(60*newDateHours+minutes)*1e3,startTimeOfDayMs,layoutManager.tv)}function reloadPage(page){showLoading(),connectionManager.getApiClient(options.serverId).getLiveTvGuideInfo().then(function(guideInfo){setDateRange(page,guideInfo)})}function getChannelProgramsFocusableElements(container){for(var elements=container.querySelectorAll(".programCell"),list=[],currentScrollXPct=scrollXPct+1,i=0,length=elements.length;i=currentScrollXPct&&list.push(elem)}return list}function onInputCommand(e){var container,channelPrograms,focusableElements,newRow,target=e.target,programCell=dom.parentWithClass(target,"programCell");switch(e.detail.command){case"up":programCell?(container=programGrid,channelPrograms=dom.parentWithClass(programCell,"channelPrograms"),newRow=channelPrograms.previousSibling,newRow?(focusableElements=getChannelProgramsFocusableElements(newRow),focusableElements.length?container=newRow:focusableElements=null):container=null):container=null,lastFocusDirection=e.detail.command,focusManager.moveUp(target,{container:container,focusableElements:focusableElements});break;case"down":programCell?(container=programGrid,channelPrograms=dom.parentWithClass(programCell,"channelPrograms"),newRow=channelPrograms.nextSibling,newRow?(focusableElements=getChannelProgramsFocusableElements(newRow),focusableElements.length?container=newRow:focusableElements=null):container=null):container=null,lastFocusDirection=e.detail.command,focusManager.moveDown(target,{container:container,focusableElements:focusableElements});break;case"left":container=programCell?dom.parentWithClass(programCell,"channelPrograms"):null,container&&!programCell.previousSibling&&(container=null),lastFocusDirection=e.detail.command,focusManager.moveLeft(target,{container:container}),!0;break;case"right":container=programCell?dom.parentWithClass(programCell,"channelPrograms"):null,lastFocusDirection=e.detail.command,focusManager.moveRight(target,{container:container}),!0;break;default:return}e.preventDefault(),e.stopPropagation()}function onScrollerFocus(e){var target=e.target,programCell=dom.parentWithClass(target,"programCell");if(programCell){var focused=target,id=focused.getAttribute("data-id"),item=items[id];item&&events.trigger(self,"focus",[{item:item}])}if("left"===lastFocusDirection)programCell&&scrollHelper.toStart(programGrid,programCell,!0,!0);else if("right"===lastFocusDirection)programCell&&scrollHelper.toCenter(programGrid,programCell,!0,!0);else if("up"===lastFocusDirection||"down"===lastFocusDirection){var verticalScroller=dom.parentWithClass(target,"guideVerticalScroller");if(verticalScroller){var focusedElement=programCell||dom.parentWithTag(target,"BUTTON");verticalScroller.toCenter(focusedElement,!0)}}}function setScrollEvents(view,enabled){if(layoutManager.tv){var guideVerticalScroller=view.querySelector(".guideVerticalScroller");enabled?inputManager.on(guideVerticalScroller,onInputCommand):inputManager.off(guideVerticalScroller,onInputCommand)}}function onTimerCreated(e,apiClient,data){for(var programId=data.ProgramId,newTimerId=data.Id,cells=options.element.querySelectorAll('.programCell[data-id="'+programId+'"]'),i=0,length=cells.length;i'),newTimerId&&cell.setAttribute("data-timerid",newTimerId)}}function onSeriesTimerCreated(e,apiClient,data){}function onTimerCancelled(e,apiClient,data){for(var id=data.Id,cells=options.element.querySelectorAll('.programCell[data-timerid="'+id+'"]'),i=0,length=cells.length;ithis.lastKnownScrollY,pastOffset=currentScrollY>=this.offset;return scrollingDown&&pastOffset},shouldPin:function(currentScrollY){var scrollingUp=currentScrollY=14;currentScrollY&&isTv?this.unpin():toleranceExceeded&&this.clear()}this.lastKnownScrollY=currentScrollY}}},Headroom.options={offset:0,scroller:window,initialClass:"headroom",unPinnedClass:"headroom--unpinned",pinnedClass:"headroom--pinned"},Headroom}); \ No newline at end of file +define(["dom","layoutManager","browser","css!./headroom"],function(dom,layoutManager,browser){"use strict";function Debouncer(callback){this.callback=callback,this.ticking=!1}function onHeadroomClearedExternally(){this.state=null}function Headroom(elems,options){options=Object.assign(Headroom.options,options||{}),this.lastKnownScrollY=0,this.elems=elems,this.scroller=options.scroller,this.debouncer=onScroll.bind(this),this.offset=options.offset,this.initialised=!1,this.initialClass=options.initialClass,this.unPinnedClass=options.unPinnedClass,this.pinnedClass=options.pinnedClass,this.state="clear"}function onScroll(){this.paused||requestAnimationFrame(this.rafCallback||(this.rafCallback=this.update.bind(this)))}var requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame;return Debouncer.prototype={constructor:Debouncer,update:function(){this.callback&&this.callback(),this.ticking=!1},handleEvent:function(){this.ticking||(requestAnimationFrame(this.rafCallback||(this.rafCallback=this.update.bind(this))),this.ticking=!0)}},Headroom.prototype={constructor:Headroom,init:function(){if(browser.supportsCssAnimation()){for(var i=0,length=this.elems.length;ithis.lastKnownScrollY,pastOffset=currentScrollY>=this.offset;return scrollingDown&&pastOffset},shouldPin:function(currentScrollY){var scrollingUp=currentScrollY=14;currentScrollY&&isTv?this.unpin():toleranceExceeded&&this.clear()}this.lastKnownScrollY=currentScrollY}}},Headroom.options={offset:0,scroller:window,initialClass:"headroom",unPinnedClass:"headroom--unpinned",pinnedClass:"headroom--pinned"},Headroom}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/homescreensettings/homescreensettings.js b/dashboard-ui/bower_components/emby-webcomponents/homescreensettings/homescreensettings.js index 65a32cf9a5..5bee250528 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/homescreensettings/homescreensettings.js +++ b/dashboard-ui/bower_components/emby-webcomponents/homescreensettings/homescreensettings.js @@ -1 +1 @@ -define(["require","globalize","loading","connectionManager","homeSections","dom","events","listViewStyle","emby-select","emby-checkbox"],function(require,globalize,loading,connectionManager,homeSections,dom,events){"use strict";function renderLatestItems(context,user,result){var folderHtml="";folderHtml+='
';var excludeViewTypes=["playlists","livetv","boxsets","channels"],excludeItemTypes=["Channel"];folderHtml+=result.Items.map(function(i){if(excludeViewTypes.indexOf(i.CollectionType||[])!==-1)return"";if(excludeItemTypes.indexOf(i.Type)!==-1)return"";var currentHtml="",id="chkIncludeInLatest"+i.Id,isChecked=user.Configuration.LatestItemsExcludes.indexOf(i.Id)===-1,checkedHtml=isChecked?' checked="checked"':"";return currentHtml+=""}).join(""),folderHtml+="
",context.querySelector(".latestItemsList").innerHTML=folderHtml}function renderViews(page,user,result){var folderHtml="";folderHtml+='
',folderHtml+=result.map(function(i){var currentHtml="",id="chkGroupFolder"+i.Id,isChecked=user.Configuration.GroupedFolders.indexOf(i.Id)!==-1,checkedHtml=isChecked?' checked="checked"':"";return currentHtml+=""}).join(""),folderHtml+="
",page.querySelector(".folderGroupList").innerHTML=folderHtml}function getLandingScreenOptions(type){var list=[];return"movies"===type?(list.push({name:globalize.translate("sharedcomponents#Movies"),value:"movies",isDefault:!0}),list.push({name:globalize.translate("sharedcomponents#Suggestions"),value:"suggestions"}),list.push({name:globalize.translate("sharedcomponents#Favorites"),value:"favorites"}),list.push({name:globalize.translate("sharedcomponents#Collections"),value:"collections"})):"tvshows"===type?(list.push({name:globalize.translate("sharedcomponents#Shows"),value:"shows",isDefault:!0}),list.push({name:globalize.translate("sharedcomponents#Suggestions"),value:"suggestions"}),list.push({name:globalize.translate("sharedcomponents#Latest"),value:"latest"}),list.push({name:globalize.translate("sharedcomponents#Favorites"),value:"favorites"})):"music"===type&&(list.push({name:globalize.translate("sharedcomponents#Suggestions"),value:"suggestions"}),list.push({name:globalize.translate("sharedcomponents#Albums"),value:"albums"}),list.push({name:globalize.translate("sharedcomponents#HeaderAlbumArtists"),value:"albumartists"}),list.push({name:globalize.translate("sharedcomponents#Artists"),value:"artists"}),list.push({name:globalize.translate("sharedcomponents#Playlists"),value:"playlists"}),list.push({name:globalize.translate("sharedcomponents#Genres"),value:"genres"})),list}function getLandingScreenOptionsHtml(type,userValue){return getLandingScreenOptions(type).map(function(o){var selected=userValue===o.value||o.isDefault&&!userValue,selectedHtml=selected?" selected":"",optionValue=o.isDefault?"":o.value;return'"}).join("")}function renderLandingScreens(context,user,userSettings,result){for(var html="",i=0,length=result.Items.length;i',html+='",html+=""}}context.querySelector(".landingScreens").innerHTML=html,html?context.querySelector(".landingScreensSection").classList.remove("hide"):context.querySelector(".landingScreensSection").classList.add("hide")}function renderViewOrder(context,user,result){var html="",index=0;html+=result.Items.map(function(view){var currentHtml="";return currentHtml+='
',currentHtml+='',currentHtml+='
',currentHtml+="
",currentHtml+=view.Name,currentHtml+="
",currentHtml+="
",currentHtml+='',currentHtml+='',currentHtml+="
",index++,currentHtml}).join(""),context.querySelector(".viewOrderList").innerHTML=html}function updateHomeSectionValues(context,userSettings){for(var i=1;i<=7;i++){var select=context.querySelector("#selectHomeSection"+i),defaultValue=homeSections.getDefaultSection(i-1),option=select.querySelector("option[value="+defaultValue+"]")||select.querySelector('option[value=""]'),userValue=userSettings.get("homesection"+(i-1));option.value="",userValue!==defaultValue&&userValue?select.value=userValue:select.value=""}}function loadForm(context,user,userSettings,apiClient){context.querySelector(".chkHidePlayedFromLatest").checked=user.Configuration.HidePlayedInLatest||!1,updateHomeSectionValues(context,userSettings);var promise1=apiClient.getUserViews({},user.Id),promise2=apiClient.getJSON(apiClient.getUrl("Users/"+user.Id+"/GroupingOptions"));Promise.all([promise1,promise2]).then(function(responses){renderViews(context,user,responses[1]),renderLatestItems(context,user,responses[0]),renderViewOrder(context,user,responses[0]),renderLandingScreens(context,user,userSettings,responses[0]),loading.hide()})}function onSectionOrderListClick(e){var target=dom.parentWithClass(e.target,"btnViewItemMove");if(target){var viewItem=dom.parentWithClass(target,"viewItem");if(viewItem){dom.parentWithClass(viewItem,"paperList");if(target.classList.contains("btnViewItemDown")){var next=viewItem.nextSibling;next&&(viewItem.parentNode.removeChild(viewItem),next.parentNode.insertBefore(viewItem,next.nextSibling))}else{var prev=viewItem.previousSibling;prev&&(viewItem.parentNode.removeChild(viewItem),prev.parentNode.insertBefore(viewItem,prev))}}}}function getCheckboxItems(selector,context,isChecked){for(var inputs=context.querySelectorAll(selector),list=[],i=0,length=inputs.length;i",currentHtml+=""+i.Name+"",currentHtml+=""}).join(""),folderHtml+="",page.querySelector(".folderGroupList").innerHTML=folderHtml}function getLandingScreenOptions(type){var list=[];return"movies"===type?(list.push({name:globalize.translate("sharedcomponents#Movies"),value:"movies",isDefault:!0}),list.push({name:globalize.translate("sharedcomponents#Suggestions"),value:"suggestions"}),list.push({name:globalize.translate("sharedcomponents#Favorites"),value:"favorites"}),list.push({name:globalize.translate("sharedcomponents#Collections"),value:"collections"})):"tvshows"===type?(list.push({name:globalize.translate("sharedcomponents#Shows"),value:"shows",isDefault:!0}),list.push({name:globalize.translate("sharedcomponents#Suggestions"),value:"suggestions"}),list.push({name:globalize.translate("sharedcomponents#Latest"),value:"latest"}),list.push({name:globalize.translate("sharedcomponents#Favorites"),value:"favorites"})):"music"===type?(list.push({name:globalize.translate("sharedcomponents#Suggestions"),value:"suggestions",isDefault:!0}),list.push({name:globalize.translate("sharedcomponents#Albums"),value:"albums"}),list.push({name:globalize.translate("sharedcomponents#HeaderAlbumArtists"),value:"albumartists"}),list.push({name:globalize.translate("sharedcomponents#Artists"),value:"artists"}),list.push({name:globalize.translate("sharedcomponents#Playlists"),value:"playlists"}),list.push({name:globalize.translate("sharedcomponents#Genres"),value:"genres"})):"livetv"===type&&(list.push({name:globalize.translate("sharedcomponents#Suggestions"),value:"suggestions",isDefault:!0}),list.push({name:globalize.translate("sharedcomponents#Guide"),value:"guide"})),list}function getLandingScreenOptionsHtml(type,userValue){return getLandingScreenOptions(type).map(function(o){var selected=userValue===o.value||o.isDefault&&!userValue,selectedHtml=selected?" selected":"";return'"}).join("")}function renderViewOrder(context,user,result){var html="",index=0;html+=result.Items.map(function(view){var currentHtml="";return currentHtml+='
',currentHtml+='',currentHtml+='
',currentHtml+="
",currentHtml+=view.Name,currentHtml+="
",currentHtml+="
",currentHtml+='',currentHtml+='',currentHtml+="
",index++,currentHtml}).join(""),context.querySelector(".viewOrderList").innerHTML=html}function updateHomeSectionValues(context,userSettings){for(var i=1;i<=7;i++){var select=context.querySelector("#selectHomeSection"+i),defaultValue=homeSections.getDefaultSection(i-1),option=select.querySelector("option[value="+defaultValue+"]")||select.querySelector('option[value=""]'),userValue=userSettings.get("homesection"+(i-1));option.value="",select.value=userValue!==defaultValue&&userValue?userValue:""}context.querySelector(".selectTVHomeScreen").value=userSettings.get("tvhome")||""}function getPerLibrarySettingsHtml(item,user,userSettings,apiClient){var isChecked,html="";if("Channel"!==item.Type&&"boxsets"!==item.CollectionType&&"playlists"!==item.CollectionType||(isChecked=-1===(user.Configuration.MyMediaExcludes||[]).indexOf(item.Id),html+="
",html+="",html+="
"),-1===["playlists","livetv","boxsets","channels"].indexOf(item.CollectionType||"")&&(isChecked=-1===user.Configuration.LatestItemsExcludes.indexOf(item.Id),html+='"),html&&(html='
'+html+"
"),"movies"===item.CollectionType||"tvshows"===item.CollectionType||"music"===item.CollectionType||"livetv"===item.CollectionType){var idForLanding="livetv"===item.CollectionType?item.CollectionType:item.Id;html+='
',html+='",html+="
"}if(html){var prefix="";prefix+='
',prefix+='

',prefix+=item.Name,prefix+="

",html=prefix+html,html+="
"}return html}function renderPerLibrarySettings(context,user,userViews,userSettings,apiClient){for(var elem=context.querySelector(".perLibrarySettings"),html="",i=0,length=userViews.length;i +
+ +
Changes take effect after signing out or restarting the app.
+
+
${HideWatchedContentFromLatestMedia} @@ -141,17 +130,6 @@
-
- -

- ${HeaderLandingScreens} -

-

${LandingScreensHelp}

-
- -
-
-

${HeaderLibraryFolders} diff --git a/dashboard-ui/bower_components/emby-webcomponents/homesections/homesections.css b/dashboard-ui/bower_components/emby-webcomponents/homesections/homesections.css index 7e148bb2b2..f8c9067d94 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/homesections/homesections.css +++ b/dashboard-ui/bower_components/emby-webcomponents/homesections/homesections.css @@ -1 +1 @@ -@media all and (orientation:portrait) and (min-width:540px) and (max-width:1000px){.overflowHomeLibraryCard{width:30vw!important}} \ No newline at end of file +.homeLibraryButton{min-width:18%;margin:.5em!important}@media all and (max-width:50em){.homeLibraryButton{width:46%!important}} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/homesections/homesections.js b/dashboard-ui/bower_components/emby-webcomponents/homesections/homesections.js index 502e385d44..d10f038f24 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/homesections/homesections.js +++ b/dashboard-ui/bower_components/emby-webcomponents/homesections/homesections.js @@ -1 +1 @@ -define(["cardBuilder","registrationServices","appSettings","dom","apphost","layoutManager","imageLoader","globalize","itemShortcuts","itemHelper","appRouter","emby-button","paper-icon-button-light","emby-itemscontainer","emby-scroller","emby-linkbutton","css!./homesections"],function(cardBuilder,registrationServices,appSettings,dom,appHost,layoutManager,imageLoader,globalize,itemShortcuts,itemHelper,appRouter){"use strict";function getDefaultSection(index){switch(index){case 0:return"smalllibrarytiles";case 1:return"resume";case 2:return"resumeaudio";case 3:return"livetv";case 4:return"nextup";case 5:return"latestmedia";case 6:return"none";default:return""}}function getAllSectionsToShow(userSettings,sectionCount){for(var sections=[],i=0,length=sectionCount;i

';elem.innerHTML=html,elem.classList.add("homeSectionsContainer");var promises=[],sections=getAllSectionsToShow(userSettings,sectionCount);for(i=0,length=sections.length;i",layoutManager.tv||(html+=''),html+="",html+='
';for(var i=0,length=items.length;i'+icon+""+item.Name+""}return html+="
",html+=""}function loadlibraryButtons(elem,apiClient,user,userSettings,userViews){return Promise.all([getAppInfo(apiClient),getDownloadsSectionHtml(apiClient,user,userSettings)]).then(function(responses){var infoHtml=responses[0],downloadsHtml=responses[1];elem.classList.remove("verticalSection");var html=getLibraryButtonsHtml(userViews);elem.innerHTML=html+downloadsHtml+infoHtml,bindHomeScreenSettingsIcon(elem,apiClient,user.Id,userSettings),infoHtml&&bindAppInfoEvents(elem),imageLoader.lazyChildren(elem)})}function bindAppInfoEvents(elem){elem.querySelector(".appInfoSection").addEventListener("click",function(e){dom.parentWithClass(e.target,"card")&®istrationServices.showPremiereInfo()})}function getRandomInt(min,max){return Math.floor(Math.random()*(max-min+1))+min}function getAppInfo(apiClient){var frequency=1728e5,cacheKey="lastappinfopresent5",lastDatePresented=parseInt(appSettings.get(cacheKey)||"0");return lastDatePresented?(new Date).getTime()-lastDatePresented
';return html+='
',html+='
',html+="
",html+="
"}function getTheaterInfo(){var html="";html+='
',html+='
',html+='

Discover Emby Theater

',html+='',html+="
";var nameText="Emby Theater";return html+='
',html+='

A beautiful app for your TV and large screen tablet. '+nameText+" runs on Windows, Xbox One, Raspberry Pi, Samsung Smart TVs, Sony PS4, Web Browsers, and more.

",html+='
',html+=getCard("https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater1.png"),html+=getCard("https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater2.png"),html+=getCard("https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater3.png"),html+="
",html+="
",html+="
"}function getPremiereInfo(){var html="";return html+='
',html+='
',html+='

Discover Emby Premiere

',html+='',html+="
",html+='
',html+='

Enjoy Emby DVR, get free access to Emby apps, and more.

',html+='
',html+=getCard("https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater1.png"),html+=getCard("https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater2.png"),html+=getCard("https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater3.png"),html+="
",html+="
",html+="
"}function renderLatestSection(elem,apiClient,user,parent){var limit=16;enableScrollX()?"music"===parent.CollectionType&&(limit=30):limit="tvshows"===parent.CollectionType?5:"music"===parent.CollectionType?9:8;var options={Limit:limit,Fields:"PrimaryImageAspectRatio,BasicSyncInfo",ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Thumb",ParentId:parent.Id};return apiClient.getJSON(apiClient.getUrl("Users/"+user.Id+"/Items/Latest",options)).then(function(items){var html="";if(items.length){html+='
',layoutManager.tv?html+='

'+globalize.translate("sharedcomponents#LatestFromLibrary",parent.Name)+"

":(html+='',html+='

',html+=globalize.translate("sharedcomponents#LatestFromLibrary",parent.Name),html+="

",html+='',html+="
"),html+="
",html+=enableScrollX()?'
':'
';var viewType=parent.CollectionType,shape="movies"===viewType?getPortraitShape():"music"===viewType?getSquareShape():getThumbShape(),cardLayout=!1;html+=cardBuilder.getCardsHtml({items:items,shape:shape,preferThumb:"movies"!==viewType&&"music"!==viewType?"auto":null,showUnplayedIndicator:!1,showChildCountIndicator:!0,context:"home",overlayText:!1,centerText:!cardLayout,overlayPlayButton:"photos"!==viewType,allowBottomPadding:!enableScrollX()&&!cardLayout,cardLayout:cardLayout,showTitle:"photos"!==viewType,showYear:"movies"===viewType||"tvshows"===viewType||!viewType,showParentTitle:"music"===viewType||"tvshows"===viewType||!viewType||cardLayout&&"tvshows"===viewType,lines:2}),enableScrollX()&&(html+="
"),html+="
"}elem.innerHTML=html,imageLoader.lazyChildren(elem)})}function loadRecentlyAdded(elem,apiClient,user,userViews){elem.classList.remove("verticalSection");for(var excludeViewTypes=["playlists","livetv","boxsets","channels"],excludeItemTypes=["Channel"],i=0,length=userViews.length;i=2400?10:screenWidth>=1600?10:screenWidth>=1440?8:screenWidth>=800?7:6,Fields:"PrimaryImageAspectRatio,BasicSyncInfo",Filters:"IsUnplayed",UserId:userId,EnableTotalRecordCount:!1};return apiClient.getJSON(apiClient.getUrl("Channels/Items/Latest",options)).then(function(result){var html="";result.Items.length&&(html+='

'+globalize.translate("sharedcomponents#HeaderLatestChannelMedia")+"

",html+=enableScrollX()?'
':'
',html+=cardBuilder.getCardsHtml({items:result.Items,shape:"auto",showTitle:!0,centerText:!0,lazy:!0,showDetailsMenu:!0,overlayPlayButton:!0}),enableScrollX()&&(html+="
")),elem.innerHTML=html,imageLoader.lazyChildren(elem)})}function getRequirePromise(deps){return new Promise(function(resolve,reject){require(deps,resolve)})}function showHomeScreenSettings(elem,options){return getRequirePromise(["homescreenSettingsDialog"]).then(function(homescreenSettingsDialog){return homescreenSettingsDialog.show(options).then(function(){dom.parentWithClass(elem,"homeSectionsContainer").dispatchEvent(new CustomEvent("settingschange",{cancelable:!1}))})})}function bindHomeScreenSettingsIcon(elem,apiClient,userId,userSettings){var btnHomeScreenSettings=elem.querySelector(".btnHomeScreenSettings");btnHomeScreenSettings&&btnHomeScreenSettings.addEventListener("click",function(){showHomeScreenSettings(elem,{serverId:apiClient.serverId(),userId:userId,userSettings:userSettings})})}function getDownloadsSectionHtml(apiClient,user,userSettings){if(!appHost.supports("sync")||!user.Policy.EnableContentDownloading)return Promise.resolve("");var promise=apiClient.getLatestOfflineItems?apiClient.getLatestOfflineItems({Limit:20,Filters:"IsNotFolder"}):Promise.resolve([]);return promise.then(function(items){var html="";html+='
',html+='
',layoutManager.tv?html+='

'+globalize.translate("sharedcomponents#HeaderMyDownloads")+"

":(html+='',html+='

',html+=globalize.translate("sharedcomponents#HeaderMyDownloads"),html+="

",html+='',html+="
",html+=''),html+="
",html+='
';var cardLayout=!1;return html+=cardBuilder.getCardsHtml({items:items,preferThumb:"auto",shape:"autooverflow",overlayText:!1,showTitle:!0,showParentTitle:!0,lazy:!0,showDetailsMenu:!0,overlayPlayButton:!0,context:"home",centerText:!cardLayout,allowBottomPadding:!1,cardLayout:cardLayout,showYear:!0,lines:2}),html+="
",html+="
"})}function loadLibraryTiles(elem,apiClient,user,userSettings,shape,userViews,allSections){elem.classList.remove("verticalSection");var html="",scrollX=!layoutManager.desktop;return userViews.length&&(html+='
',html+='
',html+='

'+globalize.translate("sharedcomponents#HeaderMyMedia")+"

",layoutManager.tv||(html+=''),html+="
",html+=scrollX?'
':'
',html+=cardBuilder.getCardsHtml({items:userViews,shape:scrollX?"overflowBackdrop":shape,showTitle:!0,centerText:!0,overlayText:!1,lazy:!0,transition:!1,allowBottomPadding:!scrollX,cardClass:scrollX?"overflowHomeLibraryCard":null}),scrollX&&(html+="
"),html+="
",html+="
"),Promise.all([getAppInfo(apiClient),getDownloadsSectionHtml(apiClient,user,userSettings)]).then(function(responses){var infoHtml=responses[0],downloadsHtml=responses[1];elem.innerHTML=html+downloadsHtml+infoHtml,bindHomeScreenSettingsIcon(elem,apiClient,user.Id,userSettings),infoHtml&&bindAppInfoEvents(elem),imageLoader.lazyChildren(elem)})}function loadResumeVideo(elem,apiClient,userId){var limit,screenWidth=dom.getWindowSize().innerWidth;enableScrollX()?limit=12:(limit=screenWidth>=1920?8:screenWidth>=1600?8:screenWidth>=1200?9:6,limit=Math.min(limit,5));var options={Limit:limit,Recursive:!0,Fields:"PrimaryImageAspectRatio,BasicSyncInfo",ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Thumb",EnableTotalRecordCount:!1,MediaTypes:"Video"};return apiClient.getResumableItems(userId,options).then(function(result){var html="";if(result.Items.length){html+='

'+globalize.translate("sharedcomponents#HeaderContinueWatching")+"

",html+=enableScrollX()?'
':'
';var cardLayout=!1;html+=cardBuilder.getCardsHtml({items:result.Items,preferThumb:!0,shape:getThumbShape(),overlayText:!1,showTitle:!0,showParentTitle:!0,lazy:!0,showDetailsMenu:!0,overlayPlayButton:!0,context:"home",centerText:!cardLayout,allowBottomPadding:!1,cardLayout:cardLayout,showYear:!0,lines:2}),enableScrollX()&&(html+="
"),html+="
"}elem.innerHTML=html,imageLoader.lazyChildren(elem)},function(){return Promise.resolve()})}function loadResumeAudio(elem,apiClient,userId){var limit,screenWidth=dom.getWindowSize().innerWidth;enableScrollX()?limit=12:(limit=screenWidth>=1920?8:screenWidth>=1600?8:screenWidth>=1200?9:6,limit=Math.min(limit,5));var options={Limit:limit,Recursive:!0,Fields:"PrimaryImageAspectRatio,BasicSyncInfo",ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Thumb",EnableTotalRecordCount:!1,MediaTypes:"Audio"};return apiClient.getResumableItems(userId,options).then(function(result){var html="";if(result.Items.length){html+='

'+globalize.translate("sharedcomponents#HeaderContinueListening")+"

",html+=enableScrollX()?'
':'
';var cardLayout=!1;html+=cardBuilder.getCardsHtml({items:result.Items,preferThumb:!0,shape:getThumbShape(),overlayText:!1,showTitle:!0,showParentTitle:!0,lazy:!0,showDetailsMenu:!0,overlayPlayButton:!0,context:"home",centerText:!cardLayout,allowBottomPadding:!1,cardLayout:cardLayout,showYear:!0,lines:2}),enableScrollX()&&(html+="
"),html+="
",elem.classList.remove("hide")}else elem.classList.add("hide");elem.innerHTML=html,imageLoader.lazyChildren(elem)},function(){return Promise.resolve()})}function loadActiveRecordings(elem,apiClient,userId){apiClient.getLiveTvRecordings({UserId:userId,IsInProgress:!0,Fields:"CanDelete,PrimaryImageAspectRatio,BasicSyncInfo",EnableTotalRecordCount:!1,EnableImageTypes:"Primary,Thumb,Backdrop"}).then(function(result){var html="";if(result.Items.length){html+='

'+globalize.translate("sharedcomponents#HeaderActiveRecordings")+"

",html+=enableScrollX()?'
':'
';var cardLayout=!1;html+=cardBuilder.getCardsHtml({items:result.Items,lazy:!0,allowBottomPadding:!enableScrollX(),shape:enableScrollX()?"autooverflow":"auto",defaultShape:getThumbShape(),showTitle:!1,showParentTitleOrTitle:!0,showAirTime:!0,showAirEndTime:!0,showChannelName:!0,cardLayout:cardLayout,preferThumb:"auto",coverImage:!0,overlayText:!1,centerText:!cardLayout,overlayMoreButton:!0,action:"none",centerPlayButton:!0}),enableScrollX()&&(html+="
"),html+="
"}elem.innerHTML=html,imageLoader.lazyChildren(elem)})}function bindUnlockClick(elem){var btnUnlock=elem.querySelector(".btnUnlock");btnUnlock&&btnUnlock.addEventListener("click",function(e){registrationServices.validateFeature("livetv",{viewOnly:!0}).then(function(){dom.parentWithClass(elem,"homeSectionsContainer").dispatchEvent(new CustomEvent("settingschange",{cancelable:!1}))})})}function loadOnNow(elem,apiClient,user){if(!user.Policy.EnableLiveTvAccess)return Promise.resolve("");elem.classList.remove("verticalSection");var promises=[];promises.push(registrationServices.validateFeature("livetv",{viewOnly:!0,showDialog:!1}).then(function(){return!0},function(){return!1}));user.Id;return promises.push(apiClient.getLiveTvRecommendedPrograms({userId:apiClient.getCurrentUserId(),IsAiring:!0,limit:enableScrollX()?24:8,ImageTypeLimit:1,EnableImageTypes:"Primary,Thumb,Backdrop",EnableTotalRecordCount:!1,Fields:"ChannelInfo,PrimaryImageAspectRatio"})),Promise.all(promises).then(function(responses){var registered=responses[0],result=responses[1],html="";result.Items.length&®istered?(html+='
',html+='
',html+='

'+globalize.translate("sharedcomponents#LiveTV")+"

",html+="
",enableScrollX()?(html+='",html+="
",html+='
',html+='
',layoutManager.tv?html+='

'+globalize.translate("sharedcomponents#HeaderOnNow")+"

":(html+='',html+='

',html+=globalize.translate("sharedcomponents#HeaderOnNow"),html+="

",html+='',html+="
"),html+="
",html+=enableScrollX()?'
':'
',html+=cardBuilder.getCardsHtml({items:result.Items,preferThumb:"auto",inheritThumb:!1,shape:enableScrollX()?"autooverflow":"auto",showParentTitleOrTitle:!0,showTitle:!0,centerText:!0,coverImage:!0,overlayText:!1,allowBottomPadding:!enableScrollX(),showAirTime:!0,showChannelName:!1,showAirDateTime:!1,showAirEndTime:!0,defaultShape:getThumbShape(),lines:3,overlayPlayButton:!0}),enableScrollX()&&(html+="
"),html+="
",html+="
"):result.Items.length&&!registered&&(html+='
',html+='

'+globalize.translate("sharedcomponents#LiveTvRequiresUnlock")+"

",html+='",html+="
"),elem.innerHTML=html,imageLoader.lazyChildren(elem),bindUnlockClick(elem)})}function loadNextUp(elem,apiClient,userId){var query={Limit:enableScrollX()?24:15,Fields:"PrimaryImageAspectRatio,SeriesInfo,DateCreated,BasicSyncInfo",UserId:userId,ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Banner,Thumb",EnableTotalRecordCount:!1};apiClient.getNextUpEpisodes(query).then(function(result){var html="";if(result.Items.length){html+='
',layoutManager.tv?html+='

'+globalize.translate("sharedcomponents#HeaderNextUp")+"

":(html+='',html+='

',html+=globalize.translate("sharedcomponents#HeaderNextUp"),html+="

",html+='',html+="
"),html+="
",html+=enableScrollX()?'
':'
';var cardLayout=!1;html+=cardBuilder.getCardsHtml({items:result.Items,preferThumb:!0,shape:getThumbShape(),overlayText:!1,showTitle:!0,showParentTitle:!0,lazy:!0,overlayPlayButton:!0,context:"home",centerText:!cardLayout,allowBottomPadding:!enableScrollX(),cardLayout:cardLayout}),enableScrollX()&&(html+="
"),html+="
"}elem.innerHTML=html,imageLoader.lazyChildren(elem)})}function loadLatestChannelItems(elem,apiClient,userId,options){return options=Object.assign(options||{},{UserId:userId,SupportsLatestItems:!0,EnableTotalRecordCount:!1}),apiClient.getJSON(apiClient.getUrl("Channels",options)).then(function(result){var channels=result.Items,channelsHtml=channels.map(function(c){return'
'}).join("");elem.innerHTML=channelsHtml;for(var i=0,length=channels.length;i=1600?10:screenWidth>=1440?5:6,Fields:"PrimaryImageAspectRatio,BasicSyncInfo",Filters:"IsUnplayed",UserId:apiClient.getCurrentUserId(),ChannelIds:channel.Id,EnableTotalRecordCount:!1};apiClient.getJSON(apiClient.getUrl("Channels/Items/Latest",options)).then(function(result){var html="";if(result.Items.length){html+='
',html+='
';var text=globalize.translate("sharedcomponents#HeaderLatestFrom").replace("{0}",channel.Name);html+='

'+text+"

",layoutManager.tv||(html+=''+globalize.translate("sharedcomponents#More")+""),html+="
",html+=enableScrollX()?'
':'
',html+=cardBuilder.getCardsHtml({items:result.Items,shape:enableScrollX()?"autooverflow":"auto",showTitle:!0,centerText:!0,lazy:!0,showDetailsMenu:!0,overlayPlayButton:!0,allowBottomPadding:!enableScrollX()}),enableScrollX()&&(html+="
"),html+="
",html+="
"}var elem=page.querySelector("#channel"+channel.Id);elem.innerHTML=html,imageLoader.lazyChildren(elem)})}function loadLatestLiveTvRecordings(elem,apiClient,userId){return apiClient.getLiveTvRecordings({userId:userId,Limit:enableScrollX()?12:5,Fields:"PrimaryImageAspectRatio,BasicSyncInfo",EnableTotalRecordCount:!1,IsLibraryItem:!1}).then(function(result){var html="";result.Items.length&&(html+='
',html+='

'+globalize.translate("sharedcomponents#HeaderLatestRecordings")+"

",!layoutManager.tv,html+="
"),html+=enableScrollX()?'
':'
',html+=cardBuilder.getCardsHtml({items:result.Items,shape:enableScrollX()?"autooverflow":"auto",showTitle:!0,showParentTitle:!0,coverImage:!0,lazy:!0,showDetailsMenu:!0,centerText:!0,overlayText:!1,overlayPlayButton:!0,allowBottomPadding:!enableScrollX(),preferThumb:!0,cardLayout:!1}),enableScrollX()&&(html+="
"),html+="
",elem.innerHTML=html,imageLoader.lazyChildren(elem)})}return{loadLatestChannelMedia:loadLatestChannelMedia,loadLibraryTiles:loadLibraryTiles,loadResumeVideo:loadResumeVideo,loadResumeAudio:loadResumeAudio,loadActiveRecordings:loadActiveRecordings,loadNextUp:loadNextUp,loadLatestChannelItems:loadLatestChannelItems,loadLatestLiveTvRecordings:loadLatestLiveTvRecordings,getDefaultSection:getDefaultSection,loadSections:loadSections}}); \ No newline at end of file +define(["connectionManager","cardBuilder","registrationServices","appSettings","dom","apphost","layoutManager","imageLoader","globalize","itemShortcuts","itemHelper","appRouter","emby-button","paper-icon-button-light","emby-itemscontainer","emby-scroller","emby-linkbutton","css!./homesections"],function(connectionManager,cardBuilder,registrationServices,appSettings,dom,appHost,layoutManager,imageLoader,globalize,itemShortcuts,itemHelper,appRouter){"use strict";function getDefaultSection(index){switch(index){case 0:return"smalllibrarytiles";case 1:return"resume";case 2:return"resumeaudio";case 3:return"livetv";case 4:return"nextup";case 5:return"latestmedia";case 6:return"none";default:return""}}function getAllSectionsToShow(userSettings,sectionCount){for(var sections=[],i=0,length=sectionCount;i
';elem.innerHTML=html,elem.classList.add("homeSectionsContainer");var promises=[],sections=getAllSectionsToShow(userSettings,7);for(i=0,length=sections.length;i',html+=''+globalize.translate("sharedcomponents#HeaderCustomizeHomeScreen")+"",html+="
",elem.insertAdjacentHTML("beforeend",html),resume(elem,{refresh:!0,returnPromise:!1})})})}function destroySections(elem){var i,length,elems=elem.querySelectorAll(".itemsContainer");for(i=0,length=elems.length;i",layoutManager.tv||(html+=''),html+="
",html+='
';for(var i=0,length=items.length;i'+icon+""+item.Name+""}return html+="
",html+="
"}function loadlibraryButtons(elem,apiClient,user,userSettings,userViews){return Promise.all([getAppInfo(apiClient),getDownloadsSectionHtml(apiClient,user,userSettings)]).then(function(responses){var infoHtml=responses[0],downloadsHtml=responses[1];elem.classList.remove("verticalSection");var html=getLibraryButtonsHtml(userViews);elem.innerHTML=html+downloadsHtml+infoHtml,bindHomeScreenSettingsIcon(elem,apiClient,user.Id,userSettings),infoHtml&&bindAppInfoEvents(elem),imageLoader.lazyChildren(elem)})}function bindAppInfoEvents(elem){elem.querySelector(".appInfoSection").addEventListener("click",function(e){dom.parentWithClass(e.target,"card")&®istrationServices.showPremiereInfo()})}function getRandomInt(min,max){return Math.floor(Math.random()*(max-min+1))+min}function getAppInfo(apiClient){var cacheKey="lastappinfopresent5",lastDatePresented=parseInt(appSettings.get(cacheKey)||"0");return lastDatePresented?(new Date).getTime()-lastDatePresented<1728e5?Promise.resolve(""):registrationServices.validateFeature("dvr",{showDialog:!1,viewOnly:!0}).then(function(){return appSettings.set(cacheKey,(new Date).getTime()),""},function(){appSettings.set(cacheKey,(new Date).getTime());var infos=[getPremiereInfo];return appHost.supports("otherapppromotions")&&infos.push(getTheaterInfo),infos[getRandomInt(0,infos.length-1)]()}):(appSettings.set(cacheKey,(new Date).getTime()),Promise.resolve(""))}function getCard(img,shape){shape=shape||"backdropCard";var html='
';return html+='
',html+='
',html+="
",html+="
"}function getTheaterInfo(){var html="";html+='
',html+='
',html+='

Discover Emby Theater

',html+='',html+="
";return html+='
',html+='

A beautiful app for your TV and large screen tablet. Emby Theater runs on Windows, Xbox One, Raspberry Pi, Samsung Smart TVs, Sony PS4, Web Browsers, and more.

',html+='
',html+=getCard("https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater1.png"),html+=getCard("https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater2.png"),html+=getCard("https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater3.png"),html+="
",html+="
",html+="
"}function getPremiereInfo(){var html="";return html+='
',html+='
',html+='

Discover Emby Premiere

',html+='',html+="
",html+='
',html+='

Enjoy Emby DVR, get free access to Emby apps, and more.

',html+='
',html+=getCard("https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater1.png"),html+=getCard("https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater2.png"),html+=getCard("https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater3.png"),html+="
",html+="
",html+="
"}function getFetchLatestItemsFn(serverId,parentId,collectionType){return function(){var apiClient=connectionManager.getApiClient(serverId),limit=16;enableScrollX()?"music"===collectionType&&(limit=30):limit="tvshows"===collectionType?5:"music"===collectionType?9:8;var options={Limit:limit,Fields:"PrimaryImageAspectRatio,BasicSyncInfo",ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Thumb",ParentId:parentId};return apiClient.getLatestItems(options)}}function getLatestItemsHtmlFn(itemType,viewType){return function(items){var shape="Channel"===itemType||"movies"===viewType?getPortraitShape():"music"===viewType?getSquareShape():getThumbShape();return cardBuilder.getCardsHtml({items:items,shape:shape,preferThumb:"movies"!==viewType&&"Channel"!==itemType&&"music"!==viewType?"auto":null,showUnplayedIndicator:!1,showChildCountIndicator:!0,context:"home",overlayText:!1,centerText:!0,overlayPlayButton:"photos"!==viewType,allowBottomPadding:!enableScrollX()&&!0,cardLayout:!1,showTitle:"photos"!==viewType,showYear:"movies"===viewType||"tvshows"===viewType||!viewType,showParentTitle:"music"===viewType||"tvshows"===viewType||!viewType||!1,lines:2})}}function renderLatestSection(elem,apiClient,user,parent){var html="";html+='
',layoutManager.tv?html+='

'+globalize.translate("sharedcomponents#LatestFromLibrary",parent.Name)+"

":(html+='',html+='

',html+=globalize.translate("sharedcomponents#LatestFromLibrary",parent.Name),html+="

",html+='',html+="
"),html+="
",enableScrollX()?html+='
':html+='
',enableScrollX()&&(html+="
"),html+="
",elem.innerHTML=html;var itemsContainer=elem.querySelector(".itemsContainer");itemsContainer.fetchData=getFetchLatestItemsFn(apiClient.serverId(),parent.Id,parent.CollectionType),itemsContainer.getItemsHtml=getLatestItemsHtmlFn(parent.Type,parent.CollectionType),itemsContainer.parentContainer=elem}function loadRecentlyAdded(elem,apiClient,user,userViews){elem.classList.remove("verticalSection");for(var excludeViewTypes=["playlists","livetv","boxsets","channels"],i=0,length=userViews.length;i":(html+='',html+='

',html+=globalize.translate("sharedcomponents#HeaderMyDownloads"),html+="

",html+='',html+="
",html+=''),html+="
",html+='
',html+=cardBuilder.getCardsHtml({items:items,preferThumb:"auto",shape:"autooverflow",overlayText:!1,showTitle:!0,showParentTitle:!0,lazy:!0,showDetailsMenu:!0,overlayPlayButton:!0,context:"home",centerText:!0,allowBottomPadding:!1,cardLayout:!1,showYear:!0,lines:2}),html+="
",html+="
"}):Promise.resolve("")}function loadLibraryTiles(elem,apiClient,user,userSettings,shape,userViews,allSections){elem.classList.remove("verticalSection");var html="",scrollX=!layoutManager.desktop;return userViews.length&&(html+='
',html+='
',html+='

'+globalize.translate("sharedcomponents#HeaderMyMedia")+"

",layoutManager.tv||(html+=''),html+="
",html+=scrollX?'
':'
',html+=cardBuilder.getCardsHtml({items:userViews,shape:scrollX?"overflowSmallBackdrop":shape,showTitle:!0,centerText:!0,overlayText:!1,lazy:!0,transition:!1,allowBottomPadding:!scrollX}),scrollX&&(html+="
"),html+="
",html+="
"),Promise.all([getAppInfo(apiClient),getDownloadsSectionHtml(apiClient,user,userSettings)]).then(function(responses){var infoHtml=responses[0],downloadsHtml=responses[1];elem.innerHTML=html+downloadsHtml+infoHtml,bindHomeScreenSettingsIcon(elem,apiClient,user.Id,userSettings),infoHtml&&bindAppInfoEvents(elem),imageLoader.lazyChildren(elem)})}function getContinueWatchingFetchFn(serverId){return function(){var limit,apiClient=connectionManager.getApiClient(serverId),screenWidth=dom.getWindowSize().innerWidth;enableScrollX()?limit=12:(limit=screenWidth>=1920?8:screenWidth>=1600?8:screenWidth>=1200?9:6,limit=Math.min(limit,5));var options={Limit:limit,Recursive:!0,Fields:"PrimaryImageAspectRatio,BasicSyncInfo",ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Thumb",EnableTotalRecordCount:!1,MediaTypes:"Video"};return apiClient.getResumableItems(apiClient.getCurrentUserId(),options)}}function getContinueWatchingItemsHtml(items){return cardBuilder.getCardsHtml({items:items,preferThumb:!0,shape:getThumbShape(),overlayText:!1,showTitle:!0,showParentTitle:!0,lazy:!0,showDetailsMenu:!0,overlayPlayButton:!0,context:"home",centerText:!0,allowBottomPadding:!1,cardLayout:!1,showYear:!0,lines:2})}function loadResumeVideo(elem,apiClient,userId){var html="";html+='

'+globalize.translate("sharedcomponents#HeaderContinueWatching")+"

",enableScrollX()?html+='
':html+='
',enableScrollX()&&(html+="
"),html+="
",elem.classList.add("hide"),elem.innerHTML=html;var itemsContainer=elem.querySelector(".itemsContainer");itemsContainer.fetchData=getContinueWatchingFetchFn(apiClient.serverId()),itemsContainer.getItemsHtml=getContinueWatchingItemsHtml,itemsContainer.parentContainer=elem}function getContinueListeningFetchFn(serverId){return function(){var limit,apiClient=connectionManager.getApiClient(serverId),screenWidth=dom.getWindowSize().innerWidth;enableScrollX()?limit=12:(limit=screenWidth>=1920?8:screenWidth>=1600?8:screenWidth>=1200?9:6,limit=Math.min(limit,5));var options={Limit:limit,Recursive:!0,Fields:"PrimaryImageAspectRatio,BasicSyncInfo",ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Thumb",EnableTotalRecordCount:!1,MediaTypes:"Audio"};return apiClient.getResumableItems(apiClient.getCurrentUserId(),options)}}function getContinueListeningItemsHtml(items){return cardBuilder.getCardsHtml({items:items,preferThumb:!0,shape:getThumbShape(),overlayText:!1,showTitle:!0,showParentTitle:!0,lazy:!0,showDetailsMenu:!0,overlayPlayButton:!0,context:"home",centerText:!0,allowBottomPadding:!1,cardLayout:!1,showYear:!0,lines:2})}function loadResumeAudio(elem,apiClient,userId){var html="";html+='

'+globalize.translate("sharedcomponents#HeaderContinueWatching")+"

",enableScrollX()?html+='
':html+='
',enableScrollX()&&(html+="
"),html+="
",elem.classList.add("hide"),elem.innerHTML=html;var itemsContainer=elem.querySelector(".itemsContainer");itemsContainer.fetchData=getContinueListeningFetchFn(apiClient.serverId()),itemsContainer.getItemsHtml=getContinueListeningItemsHtml,itemsContainer.parentContainer=elem}function bindUnlockClick(elem){var btnUnlock=elem.querySelector(".btnUnlock");btnUnlock&&btnUnlock.addEventListener("click",function(e){registrationServices.validateFeature("livetv",{viewOnly:!0}).then(function(){dom.parentWithClass(elem,"homeSectionsContainer").dispatchEvent(new CustomEvent("settingschange",{cancelable:!1}))})})}function getOnNowFetchFn(serverId){return function(){var apiClient=connectionManager.getApiClient(serverId);return apiClient.getLiveTvRecommendedPrograms({userId:apiClient.getCurrentUserId(),IsAiring:!0,limit:24,ImageTypeLimit:1,EnableImageTypes:"Primary,Thumb,Backdrop",EnableTotalRecordCount:!1,Fields:"ChannelInfo,PrimaryImageAspectRatio"})}}function getOnNowItemsHtml(items){return cardBuilder.getCardsHtml({items:items,preferThumb:"auto",inheritThumb:!1,shape:enableScrollX()?"autooverflow":"auto",showParentTitleOrTitle:!0,showTitle:!0,centerText:!0,coverImage:!0,overlayText:!1,allowBottomPadding:!enableScrollX(),showAirTime:!0,showChannelName:!1,showAirDateTime:!1,showAirEndTime:!0,defaultShape:getThumbShape(),lines:3,overlayPlayButton:!0})}function loadOnNow(elem,apiClient,user){if(!user.Policy.EnableLiveTvAccess)return Promise.resolve();var promises=[];promises.push(registrationServices.validateFeature("livetv",{viewOnly:!0,showDialog:!1}).then(function(){return!0},function(){return!1}));user.Id;return promises.push(apiClient.getLiveTvRecommendedPrograms({userId:apiClient.getCurrentUserId(),IsAiring:!0,limit:1,ImageTypeLimit:1,EnableImageTypes:"Primary,Thumb,Backdrop",EnableTotalRecordCount:!1,Fields:"ChannelInfo,PrimaryImageAspectRatio"})),Promise.all(promises).then(function(responses){var registered=responses[0],result=responses[1],html="";if(result.Items.length&®istered){elem.classList.remove("padded-left"),elem.classList.remove("padded-right"),elem.classList.remove("padded-bottom"),elem.classList.remove("verticalSection"),html+='
',html+='
',html+='

'+globalize.translate("sharedcomponents#LiveTV")+"

",html+="
",enableScrollX()?(html+='",html+="
",html+='
',html+='
',layoutManager.tv?html+='

'+globalize.translate("sharedcomponents#HeaderOnNow")+"

":(html+='',html+='

',html+=globalize.translate("sharedcomponents#HeaderOnNow"),html+="

",html+='',html+="
"),html+="
",enableScrollX()?html+='
':html+='
',enableScrollX()&&(html+="
"),html+="
",html+="
",elem.innerHTML=html;var itemsContainer=elem.querySelector(".itemsContainer");itemsContainer.parentContainer=elem,itemsContainer.fetchData=getOnNowFetchFn(apiClient.serverId()),itemsContainer.getItemsHtml=getOnNowItemsHtml}else result.Items.length&&!registered&&(elem.classList.add("padded-left"),elem.classList.add("padded-right"),elem.classList.add("padded-bottom"),html+='

'+globalize.translate("sharedcomponents#LiveTvRequiresUnlock")+"

",html+='",elem.innerHTML=html);bindUnlockClick(elem)})}function getNextUpFetchFn(serverId){return function(){var apiClient=connectionManager.getApiClient(serverId);return apiClient.getNextUpEpisodes({Limit:enableScrollX()?24:15,Fields:"PrimaryImageAspectRatio,SeriesInfo,DateCreated,BasicSyncInfo",UserId:apiClient.getCurrentUserId(),ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Banner,Thumb",EnableTotalRecordCount:!1})}}function getNextUpItemsHtml(items){return cardBuilder.getCardsHtml({items:items,preferThumb:!0,shape:getThumbShape(),overlayText:!1,showTitle:!0,showParentTitle:!0,lazy:!0,overlayPlayButton:!0,context:"home",centerText:!0,allowBottomPadding:!enableScrollX(),cardLayout:!1})}function loadNextUp(elem,apiClient,userId){var html="";html+='
',layoutManager.tv?html+='

'+globalize.translate("sharedcomponents#HeaderNextUp")+"

":(html+='',html+='

',html+=globalize.translate("sharedcomponents#HeaderNextUp"),html+="

",html+='',html+="
"),html+="
",enableScrollX()?html+='
':html+='
',enableScrollX()&&(html+="
"),html+="
",elem.classList.add("hide"),elem.innerHTML=html;var itemsContainer=elem.querySelector(".itemsContainer");itemsContainer.fetchData=getNextUpFetchFn(apiClient.serverId()),itemsContainer.getItemsHtml=getNextUpItemsHtml,itemsContainer.parentContainer=elem}function getLatestRecordingsFetchFn(serverId,activeRecordingsOnly){return function(){var apiClient=connectionManager.getApiClient(serverId);return apiClient.getLiveTvRecordings({userId:apiClient.getCurrentUserId(),Limit:enableScrollX()?12:5,Fields:"PrimaryImageAspectRatio,BasicSyncInfo",EnableTotalRecordCount:!1,IsLibraryItem:!!activeRecordingsOnly&&null,IsInProgress:!!activeRecordingsOnly||null})}}function getLatestRecordingItemsHtml(activeRecordingsOnly){return function(items){return cardBuilder.getCardsHtml({items:items,shape:enableScrollX()?"autooverflow":"auto",showTitle:!0,showParentTitle:!0,coverImage:!0,lazy:!0,showDetailsMenu:!0,centerText:!0,overlayText:!1,showYear:!0,lines:2,overlayPlayButton:!activeRecordingsOnly,allowBottomPadding:!enableScrollX(),preferThumb:!0,cardLayout:!1,overlayMoreButton:activeRecordingsOnly,action:activeRecordingsOnly?"none":null,centerPlayButton:activeRecordingsOnly})}}function loadLatestLiveTvRecordings(elem,activeRecordingsOnly,apiClient,userId){var title=activeRecordingsOnly?globalize.translate("sharedcomponents#HeaderActiveRecordings"):globalize.translate("sharedcomponents#HeaderLatestRecordings"),html="";html+='
',html+='

'+title+"

",layoutManager.tv,html+="
",enableScrollX()?html+='
':html+='
',enableScrollX()&&(html+="
"),html+="
",elem.classList.add("hide"),elem.innerHTML=html;var itemsContainer=elem.querySelector(".itemsContainer");itemsContainer.fetchData=getLatestRecordingsFetchFn(apiClient.serverId(),activeRecordingsOnly),itemsContainer.getItemsHtml=getLatestRecordingItemsHtml(activeRecordingsOnly),itemsContainer.parentContainer=elem}return{loadLibraryTiles:loadLibraryTiles,getDefaultSection:getDefaultSection,loadSections:loadSections,destroySections:destroySections,pause:pause,resume:resume}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/htmlaudioplayer/plugin.js b/dashboard-ui/bower_components/emby-webcomponents/htmlaudioplayer/plugin.js index d443b8dd0f..7ba843ad92 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/htmlaudioplayer/plugin.js +++ b/dashboard-ui/bower_components/emby-webcomponents/htmlaudioplayer/plugin.js @@ -1 +1 @@ -define(["events","browser","require","apphost","appSettings","htmlMediaHelper"],function(events,browser,require,appHost,appSettings,htmlMediaHelper){"use strict";function getDefaultProfile(){return new Promise(function(resolve,reject){require(["browserdeviceprofile"],function(profileBuilder){resolve(profileBuilder({}))})})}function fade(instance,elem,startingVolume){instance._isFadingOut=!0;var newVolume=Math.max(0,startingVolume-.15);return console.log("fading volume to "+newVolume),elem.volume=newVolume,newVolume<=0?(instance._isFadingOut=!1,Promise.resolve()):new Promise(function(resolve,reject){cancelFadeTimeout(),fadeTimeout=setTimeout(function(){fade(instance,elem,newVolume).then(resolve,reject)},100)})}function cancelFadeTimeout(){var timeout=fadeTimeout;timeout&&(clearTimeout(timeout),fadeTimeout=null)}function supportsFade(){return!browser.tv}function requireHlsPlayer(callback){require(["hlsjs"],function(hls){window.Hls=hls,callback()})}function enableHlsPlayer(url,item,mediaSource,mediaType){return htmlMediaHelper.enableHlsJsPlayer(mediaSource.RunTimeTicks,mediaType)?url.indexOf(".m3u8")!==-1?Promise.resolve():new Promise(function(resolve,reject){require(["fetchHelper"],function(fetchHelper){fetchHelper.ajax({url:url,type:"HEAD"}).then(function(response){var contentType=(response.headers.get("Content-Type")||"").toLowerCase();"application/x-mpegurl"===contentType?resolve():reject()},reject)})}):Promise.reject()}function HtmlAudioPlayer(){function setCurrentSrc(elem,options){elem.removeEventListener("error",onError),unBindEvents(elem),bindEvents(elem);var val=options.url;console.log("playing url: "+val);var seconds=(options.playerStartPositionTicks||0)/1e7;seconds&&(val+="#t="+seconds),htmlMediaHelper.destroyHlsPlayer(self),self._currentPlayOptions=options;var crossOrigin=htmlMediaHelper.getCrossOriginValue(options.mediaSource);return crossOrigin&&(elem.crossOrigin=crossOrigin),enableHlsPlayer(val,options.item,options.mediaSource,"Audio").then(function(){return new Promise(function(resolve,reject){requireHlsPlayer(function(){var hls=new Hls({manifestLoadingTimeOut:2e4});hls.loadSource(val),hls.attachMedia(elem),htmlMediaHelper.bindEventsToHlsPlayer(self,hls,elem,onError,resolve,reject),self._hlsPlayer=hls,self._currentSrc=val})})},function(){return elem.autoplay=!0,htmlMediaHelper.applySrc(elem,val,options).then(function(){return self._currentSrc=val,htmlMediaHelper.playWithPromise(elem,onError)})})}function bindEvents(elem){elem.addEventListener("timeupdate",onTimeUpdate),elem.addEventListener("ended",onEnded),elem.addEventListener("volumechange",onVolumeChange),elem.addEventListener("pause",onPause),elem.addEventListener("playing",onPlaying),elem.addEventListener("play",onPlay)}function unBindEvents(elem){elem.removeEventListener("timeupdate",onTimeUpdate),elem.removeEventListener("ended",onEnded),elem.removeEventListener("volumechange",onVolumeChange),elem.removeEventListener("pause",onPause),elem.removeEventListener("playing",onPlaying),elem.removeEventListener("play",onPlay)}function createMediaElement(){var elem=self._mediaElement;return elem?elem:(elem=document.querySelector(".mediaPlayerAudio"),elem||(elem=document.createElement("audio"),elem.classList.add("mediaPlayerAudio"),elem.classList.add("hide"),document.body.appendChild(elem)),elem.volume=htmlMediaHelper.getSavedVolume(),self._mediaElement=elem,elem)}function onEnded(){htmlMediaHelper.onEndedInternal(self,this,onError)}function onTimeUpdate(){var time=this.currentTime;self._isFadingOut||(self._currentTime=time,events.trigger(self,"timeupdate"))}function onVolumeChange(){self._isFadingOut||(htmlMediaHelper.saveVolume(this.volume),events.trigger(self,"volumechange"))}function onPlaying(e){self._started||(self._started=!0,this.removeAttribute("controls"),htmlMediaHelper.seekOnPlaybackStart(self,e.target,self._currentPlayOptions.playerStartPositionTicks)),events.trigger(self,"playing")}function onPlay(e){events.trigger(self,"unpause")}function onPause(){events.trigger(self,"pause")}function onError(){var errorCode=this.error?this.error.code||0:0,errorMessage=this.error?this.error.message||"":"";console.log("Media element error: "+errorCode.toString()+" "+errorMessage);var type;switch(errorCode){case 1:return;case 2:type="network";break;case 3:if(self._hlsPlayer)return void htmlMediaHelper.handleHlsJsMediaError(self);type="mediadecodeerror";break;case 4:type="medianotsupported";break;default:return}htmlMediaHelper.onErrorInternal(self,type)}var self=this;self.name="Html Audio Player",self.type="mediaplayer",self.id="htmlaudioplayer",self.priority=1,self.play=function(options){self._started=!1,self._timeUpdated=!1,self._currentTime=null;var elem=createMediaElement(options);return setCurrentSrc(elem,options)},self.stop=function(destroyPlayer){cancelFadeTimeout();var elem=self._mediaElement,src=self._currentSrc;if(elem&&src){if(!destroyPlayer||!supportsFade())return elem.pause(),htmlMediaHelper.onEndedInternal(self,elem,onError),destroyPlayer&&self.destroy(),Promise.resolve();var originalVolume=elem.volume;return fade(self,elem,elem.volume).then(function(){elem.pause(),elem.volume=originalVolume,htmlMediaHelper.onEndedInternal(self,elem,onError),destroyPlayer&&self.destroy()})}return Promise.resolve()},self.destroy=function(){unBindEvents(self._mediaElement)}}var fadeTimeout;return HtmlAudioPlayer.prototype.currentSrc=function(){return this._currentSrc},HtmlAudioPlayer.prototype.canPlayMediaType=function(mediaType){return"audio"===(mediaType||"").toLowerCase()},HtmlAudioPlayer.prototype.getDeviceProfile=function(item){return appHost.getDeviceProfile?appHost.getDeviceProfile(item):getDefaultProfile()},HtmlAudioPlayer.prototype.currentTime=function(val){var mediaElement=this._mediaElement;if(mediaElement){if(null!=val)return void(mediaElement.currentTime=val/1e3);var currentTime=this._currentTime;return currentTime?1e3*currentTime:1e3*(mediaElement.currentTime||0)}},HtmlAudioPlayer.prototype.duration=function(val){var mediaElement=this._mediaElement;if(mediaElement){var duration=mediaElement.duration;if(htmlMediaHelper.isValidDuration(duration))return 1e3*duration}return null},HtmlAudioPlayer.prototype.seekable=function(){var mediaElement=this._mediaElement;if(mediaElement){var seekable=mediaElement.seekable;if(seekable&&seekable.length){var start=seekable.start(0),end=seekable.end(0);return htmlMediaHelper.isValidDuration(start)||(start=0),htmlMediaHelper.isValidDuration(end)||(end=0),end-start>0}return!1}},HtmlAudioPlayer.prototype.getBufferedRanges=function(){var mediaElement=this._mediaElement;return mediaElement?htmlMediaHelper.getBufferedRanges(this,mediaElement):[]},HtmlAudioPlayer.prototype.pause=function(){var mediaElement=this._mediaElement;mediaElement&&mediaElement.pause()},HtmlAudioPlayer.prototype.resume=function(){var mediaElement=this._mediaElement;mediaElement&&mediaElement.play()},HtmlAudioPlayer.prototype.unpause=function(){var mediaElement=this._mediaElement;mediaElement&&mediaElement.play()},HtmlAudioPlayer.prototype.paused=function(){var mediaElement=this._mediaElement;return!!mediaElement&&mediaElement.paused},HtmlAudioPlayer.prototype.setVolume=function(val){var mediaElement=this._mediaElement;mediaElement&&(mediaElement.volume=val/100)},HtmlAudioPlayer.prototype.getVolume=function(){var mediaElement=this._mediaElement;if(mediaElement)return 100*mediaElement.volume},HtmlAudioPlayer.prototype.volumeUp=function(){this.setVolume(Math.min(this.getVolume()+2,100))},HtmlAudioPlayer.prototype.volumeDown=function(){this.setVolume(Math.max(this.getVolume()-2,0))},HtmlAudioPlayer.prototype.setMute=function(mute){var mediaElement=this._mediaElement;mediaElement&&(mediaElement.muted=mute)},HtmlAudioPlayer.prototype.isMuted=function(){var mediaElement=this._mediaElement;return!!mediaElement&&mediaElement.muted},HtmlAudioPlayer.prototype.destroy=function(){},HtmlAudioPlayer}); \ No newline at end of file +define(["events","browser","require","apphost","appSettings","htmlMediaHelper"],function(events,browser,require,appHost,appSettings,htmlMediaHelper){"use strict";function getDefaultProfile(){return new Promise(function(resolve,reject){require(["browserdeviceprofile"],function(profileBuilder){resolve(profileBuilder({}))})})}function fade(instance,elem,startingVolume){instance._isFadingOut=!0;var newVolume=Math.max(0,startingVolume-.15);return console.log("fading volume to "+newVolume),elem.volume=newVolume,newVolume<=0?(instance._isFadingOut=!1,Promise.resolve()):new Promise(function(resolve,reject){cancelFadeTimeout(),fadeTimeout=setTimeout(function(){fade(instance,elem,newVolume).then(resolve,reject)},100)})}function cancelFadeTimeout(){var timeout=fadeTimeout;timeout&&(clearTimeout(timeout),fadeTimeout=null)}function supportsFade(){return!browser.tv}function requireHlsPlayer(callback){require(["hlsjs"],function(hls){window.Hls=hls,callback()})}function enableHlsPlayer(url,item,mediaSource,mediaType){return htmlMediaHelper.enableHlsJsPlayer(mediaSource.RunTimeTicks,mediaType)?-1!==url.indexOf(".m3u8")?Promise.resolve():new Promise(function(resolve,reject){require(["fetchHelper"],function(fetchHelper){fetchHelper.ajax({url:url,type:"HEAD"}).then(function(response){"application/x-mpegurl"===(response.headers.get("Content-Type")||"").toLowerCase()?resolve():reject()},reject)})}):Promise.reject()}function HtmlAudioPlayer(){function setCurrentSrc(elem,options){elem.removeEventListener("error",onError),unBindEvents(elem),bindEvents(elem);var val=options.url;console.log("playing url: "+val);var seconds=(options.playerStartPositionTicks||0)/1e7;seconds&&(val+="#t="+seconds),htmlMediaHelper.destroyHlsPlayer(self),self._currentPlayOptions=options;var crossOrigin=htmlMediaHelper.getCrossOriginValue(options.mediaSource);return crossOrigin&&(elem.crossOrigin=crossOrigin),enableHlsPlayer(val,options.item,options.mediaSource,"Audio").then(function(){return new Promise(function(resolve,reject){requireHlsPlayer(function(){var hls=new Hls({manifestLoadingTimeOut:2e4});hls.loadSource(val),hls.attachMedia(elem),htmlMediaHelper.bindEventsToHlsPlayer(self,hls,elem,onError,resolve,reject),self._hlsPlayer=hls,self._currentSrc=val})})},function(){return elem.autoplay=!0,htmlMediaHelper.applySrc(elem,val,options).then(function(){return self._currentSrc=val,htmlMediaHelper.playWithPromise(elem,onError)})})}function bindEvents(elem){elem.addEventListener("timeupdate",onTimeUpdate),elem.addEventListener("ended",onEnded),elem.addEventListener("volumechange",onVolumeChange),elem.addEventListener("pause",onPause),elem.addEventListener("playing",onPlaying),elem.addEventListener("play",onPlay)}function unBindEvents(elem){elem.removeEventListener("timeupdate",onTimeUpdate),elem.removeEventListener("ended",onEnded),elem.removeEventListener("volumechange",onVolumeChange),elem.removeEventListener("pause",onPause),elem.removeEventListener("playing",onPlaying),elem.removeEventListener("play",onPlay)}function createMediaElement(){var elem=self._mediaElement;return elem||(elem=document.querySelector(".mediaPlayerAudio"),elem||(elem=document.createElement("audio"),elem.classList.add("mediaPlayerAudio"),elem.classList.add("hide"),document.body.appendChild(elem)),elem.volume=htmlMediaHelper.getSavedVolume(),self._mediaElement=elem,elem)}function onEnded(){htmlMediaHelper.onEndedInternal(self,this,onError)}function onTimeUpdate(){var time=this.currentTime;self._isFadingOut||(self._currentTime=time,events.trigger(self,"timeupdate"))}function onVolumeChange(){self._isFadingOut||(htmlMediaHelper.saveVolume(this.volume),events.trigger(self,"volumechange"))}function onPlaying(e){self._started||(self._started=!0,this.removeAttribute("controls"),htmlMediaHelper.seekOnPlaybackStart(self,e.target,self._currentPlayOptions.playerStartPositionTicks)),events.trigger(self,"playing")}function onPlay(e){events.trigger(self,"unpause")}function onPause(){events.trigger(self,"pause")}function onError(){var errorCode=this.error?this.error.code||0:0,errorMessage=this.error?this.error.message||"":"";console.log("Media element error: "+errorCode.toString()+" "+errorMessage);var type;switch(errorCode){case 1:return;case 2:type="network";break;case 3:if(self._hlsPlayer)return void htmlMediaHelper.handleHlsJsMediaError(self);type="mediadecodeerror";break;case 4:type="medianotsupported";break;default:return}htmlMediaHelper.onErrorInternal(self,type)}var self=this;self.name="Html Audio Player",self.type="mediaplayer",self.id="htmlaudioplayer",self.priority=1,self.play=function(options){return self._started=!1,self._timeUpdated=!1,self._currentTime=null,setCurrentSrc(createMediaElement(),options)},self.stop=function(destroyPlayer){cancelFadeTimeout();var elem=self._mediaElement,src=self._currentSrc;if(elem&&src){if(!destroyPlayer||!supportsFade())return elem.pause(),htmlMediaHelper.onEndedInternal(self,elem,onError),destroyPlayer&&self.destroy(),Promise.resolve();var originalVolume=elem.volume;return fade(self,elem,elem.volume).then(function(){elem.pause(),elem.volume=originalVolume,htmlMediaHelper.onEndedInternal(self,elem,onError),destroyPlayer&&self.destroy()})}return Promise.resolve()},self.destroy=function(){unBindEvents(self._mediaElement)}}var fadeTimeout;return HtmlAudioPlayer.prototype.currentSrc=function(){return this._currentSrc},HtmlAudioPlayer.prototype.canPlayMediaType=function(mediaType){return"audio"===(mediaType||"").toLowerCase()},HtmlAudioPlayer.prototype.getDeviceProfile=function(item){return appHost.getDeviceProfile?appHost.getDeviceProfile(item):getDefaultProfile()},HtmlAudioPlayer.prototype.currentTime=function(val){var mediaElement=this._mediaElement;if(mediaElement){if(null!=val)return void(mediaElement.currentTime=val/1e3);var currentTime=this._currentTime;return currentTime?1e3*currentTime:1e3*(mediaElement.currentTime||0)}},HtmlAudioPlayer.prototype.duration=function(val){var mediaElement=this._mediaElement;if(mediaElement){var duration=mediaElement.duration;if(htmlMediaHelper.isValidDuration(duration))return 1e3*duration}return null},HtmlAudioPlayer.prototype.seekable=function(){var mediaElement=this._mediaElement;if(mediaElement){var seekable=mediaElement.seekable;if(seekable&&seekable.length){var start=seekable.start(0),end=seekable.end(0);return htmlMediaHelper.isValidDuration(start)||(start=0),htmlMediaHelper.isValidDuration(end)||(end=0),end-start>0}return!1}},HtmlAudioPlayer.prototype.getBufferedRanges=function(){var mediaElement=this._mediaElement;return mediaElement?htmlMediaHelper.getBufferedRanges(this,mediaElement):[]},HtmlAudioPlayer.prototype.pause=function(){var mediaElement=this._mediaElement;mediaElement&&mediaElement.pause()},HtmlAudioPlayer.prototype.resume=function(){var mediaElement=this._mediaElement;mediaElement&&mediaElement.play()},HtmlAudioPlayer.prototype.unpause=function(){var mediaElement=this._mediaElement;mediaElement&&mediaElement.play()},HtmlAudioPlayer.prototype.paused=function(){var mediaElement=this._mediaElement;return!!mediaElement&&mediaElement.paused},HtmlAudioPlayer.prototype.setVolume=function(val){var mediaElement=this._mediaElement;mediaElement&&(mediaElement.volume=val/100)},HtmlAudioPlayer.prototype.getVolume=function(){var mediaElement=this._mediaElement;if(mediaElement)return Math.min(Math.round(100*mediaElement.volume),100)},HtmlAudioPlayer.prototype.volumeUp=function(){this.setVolume(Math.min(this.getVolume()+2,100))},HtmlAudioPlayer.prototype.volumeDown=function(){this.setVolume(Math.max(this.getVolume()-2,0))},HtmlAudioPlayer.prototype.setMute=function(mute){var mediaElement=this._mediaElement;mediaElement&&(mediaElement.muted=mute)},HtmlAudioPlayer.prototype.isMuted=function(){var mediaElement=this._mediaElement;return!!mediaElement&&mediaElement.muted},HtmlAudioPlayer.prototype.destroy=function(){},HtmlAudioPlayer}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/htmlvideoplayer/htmlmediahelper.js b/dashboard-ui/bower_components/emby-webcomponents/htmlvideoplayer/htmlmediahelper.js index 2fa4c43ef1..06a04c64e3 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/htmlvideoplayer/htmlmediahelper.js +++ b/dashboard-ui/bower_components/emby-webcomponents/htmlvideoplayer/htmlmediahelper.js @@ -1 +1 @@ -define(["appSettings","browser","events"],function(appSettings,browser,events){"use strict";function getSavedVolume(){return appSettings.get("volume")||1}function saveVolume(value){value&&appSettings.set("volume",value)}function getCrossOriginValue(mediaSource){return mediaSource.IsRemote?null:"anonymous"}function canPlayNativeHls(){var media=document.createElement("video");return!(!media.canPlayType("application/x-mpegURL").replace(/no/,"")&&!media.canPlayType("application/vnd.apple.mpegURL").replace(/no/,""))}function enableHlsShakaPlayer(item,mediaSource,mediaType){if(window.MediaSource&&MediaSource.isTypeSupported){if(canPlayNativeHls()){if(browser.edge&&"Video"===mediaType)return!0;mediaSource.RunTimeTicks}return!0}return!1}function enableHlsJsPlayer(runTimeTicks,mediaType){if(null==window.MediaSource)return!1;if(browser.iOS)return!1;if(browser.tizen||browser.web0s)return!1;if(canPlayNativeHls()){if(browser.android&&"Audio"===mediaType)return!0;if(browser.edge&&"Video"===mediaType,runTimeTicks)return!1}return!0}function handleHlsJsMediaError(instance,reject){var hlsPlayer=instance._hlsPlayer;if(hlsPlayer){var now=Date.now();window.performance&&window.performance.now&&(now=performance.now()),!recoverDecodingErrorDate||now-recoverDecodingErrorDate>3e3?(recoverDecodingErrorDate=now,console.log("try to recover media Error ..."),hlsPlayer.recoverMediaError()):!recoverSwapAudioCodecDate||now-recoverSwapAudioCodecDate>3e3?(recoverSwapAudioCodecDate=now,console.log("try to swap Audio Codec and recover media Error ..."),hlsPlayer.swapAudioCodec(),hlsPlayer.recoverMediaError()):(console.error("cannot recover, last media error recovery failed ..."),reject?reject():onErrorInternal(instance,"mediadecodeerror"))}}function onErrorInternal(instance,type){instance.destroyCustomTrack&&instance.destroyCustomTrack(instance._mediaElement),events.trigger(instance,"error",[{type:type}])}function isValidDuration(duration){return!(!duration||isNaN(duration)||duration===Number.POSITIVE_INFINITY||duration===Number.NEGATIVE_INFINITY)}function setCurrentTimeIfNeeded(element,seconds){Math.abs(element.currentTime||0,seconds)<=1&&(element.currentTime=seconds)}function seekOnPlaybackStart(instance,element,ticks){var seconds=(ticks||0)/1e7;if(seconds){var delay=((instance.currentSrc()||"").toLowerCase(),browser.safari?2500:0);delay?setTimeout(function(){setCurrentTimeIfNeeded(element,seconds)},delay):setCurrentTimeIfNeeded(element,seconds)}}function applySrc(elem,src,options){return window.Windows&&options.mediaSource&&options.mediaSource.IsLocal?Windows.Storage.StorageFile.getFileFromPathAsync(options.url).then(function(file){var playlist=new Windows.Media.Playback.MediaPlaybackList,source1=Windows.Media.Core.MediaSource.createFromStorageFile(file),startTime=(options.playerStartPositionTicks||0)/1e4;return playlist.items.append(new Windows.Media.Playback.MediaPlaybackItem(source1,startTime)),elem.src=URL.createObjectURL(playlist,{oneTimeOnly:!0}),Promise.resolve()}):(elem.src=src,Promise.resolve())}function onSuccessfulPlay(elem,onErrorFn){elem.addEventListener("error",onErrorFn)}function playWithPromise(elem,onErrorFn){try{var promise=elem.play();return promise&&promise.then?promise.catch(function(e){var errorName=(e.name||"").toLowerCase();return"notallowederror"===errorName||"aborterror"===errorName?(onSuccessfulPlay(elem,onErrorFn),Promise.resolve()):Promise.reject()}):(onSuccessfulPlay(elem,onErrorFn),Promise.resolve())}catch(err){return console.log("error calling video.play: "+err),Promise.reject()}}function destroyCastPlayer(instance){var player=instance._castPlayer;if(player){try{player.unload()}catch(err){console.log(err)}instance._castPlayer=null}}function destroyShakaPlayer(instance){var player=instance._shakaPlayer;if(player){try{player.destroy()}catch(err){console.log(err)}instance._shakaPlayer=null}}function destroyHlsPlayer(instance){var player=instance._hlsPlayer;if(player){try{player.destroy()}catch(err){console.log(err)}instance._hlsPlayer=null}}function destroyFlvPlayer(instance){var player=instance._flvPlayer;if(player){try{player.unload(),player.detachMediaElement(),player.destroy()}catch(err){console.log(err)}instance._flvPlayer=null}}function bindEventsToHlsPlayer(instance,hls,elem,onErrorFn,resolve,reject){hls.on(Hls.Events.MANIFEST_PARSED,function(){playWithPromise(elem,onErrorFn).then(resolve,function(){reject&&(reject(),reject=null)})}),hls.on(Hls.Events.ERROR,function(event,data){switch(console.log("HLS Error: Type: "+data.type+" Details: "+(data.details||"")+" Fatal: "+(data.fatal||!1)),data.type){case Hls.ErrorTypes.NETWORK_ERROR:if(data.response&&data.response.code&&data.response.code>=400)return console.log("hls.js response error code: "+data.response.code),hls.destroy(),void(reject?(reject("servererror"),reject=null):onErrorInternal(instance,"servererror"))}if(data.fatal)switch(data.type){case Hls.ErrorTypes.NETWORK_ERROR:data.response&&0===data.response.code?(console.log("hls.js response error code: "+data.response.code),hls.destroy(),reject?(reject("network"),reject=null):onErrorInternal(instance,"network")):(console.log("fatal network error encountered, try to recover"),hls.startLoad());break;case Hls.ErrorTypes.MEDIA_ERROR:console.log("fatal media error encountered, try to recover");var currentReject=reject;reject=null,handleHlsJsMediaError(instance,currentReject);break;default:console.log("Cannot recover from hls error - destroy and trigger error"),hls.destroy(),reject?(reject(),reject=null):onErrorInternal(instance,"mediadecodeerror")}})}function onEndedInternal(instance,elem,onErrorFn){elem.removeEventListener("error",onErrorFn),elem.src="",elem.innerHTML="",elem.removeAttribute("src"),destroyHlsPlayer(instance),destroyFlvPlayer(instance),destroyShakaPlayer(instance),destroyCastPlayer(instance),instance.originalDocumentTitle&&(document.title=instance.originalDocumentTitle,instance.originalDocumentTitle=null);var stopInfo={src:instance._currentSrc};events.trigger(instance,"stopped",[stopInfo]),instance._currentTime=null,instance._currentSrc=null,instance._currentPlayOptions=null}function getBufferedRanges(instance,elem){var offset,ranges=[],seekable=elem.buffered||[],currentPlayOptions=instance._currentPlayOptions;currentPlayOptions&&(offset=currentPlayOptions.transcodingOffsetTicks),offset=offset||0;for(var i=0,length=seekable.length;i3e3?(recoverDecodingErrorDate=now,console.log("try to recover media Error ..."),hlsPlayer.recoverMediaError()):!recoverSwapAudioCodecDate||now-recoverSwapAudioCodecDate>3e3?(recoverSwapAudioCodecDate=now,console.log("try to swap Audio Codec and recover media Error ..."),hlsPlayer.swapAudioCodec(),hlsPlayer.recoverMediaError()):(console.error("cannot recover, last media error recovery failed ..."),reject?reject():onErrorInternal(instance,"mediadecodeerror"))}}function onErrorInternal(instance,type){instance.destroyCustomTrack&&instance.destroyCustomTrack(instance._mediaElement),events.trigger(instance,"error",[{type:type}])}function isValidDuration(duration){return!(!duration||isNaN(duration)||duration===Number.POSITIVE_INFINITY||duration===Number.NEGATIVE_INFINITY)}function setCurrentTimeIfNeeded(element,seconds,allowance){Math.abs((element.currentTime||0)-seconds)>=allowance&&(element.currentTime=seconds)}function seekOnPlaybackStart(instance,element,ticks){var seconds=(ticks||0)/1e7;if(seconds){(instance.currentSrc()||"").toLowerCase();setCurrentTimeIfNeeded(element,seconds,5),setTimeout(function(){setCurrentTimeIfNeeded(element,seconds,10)},2500)}}function applySrc(elem,src,options){return window.Windows&&options.mediaSource&&options.mediaSource.IsLocal?Windows.Storage.StorageFile.getFileFromPathAsync(options.url).then(function(file){var playlist=new Windows.Media.Playback.MediaPlaybackList,source1=Windows.Media.Core.MediaSource.createFromStorageFile(file),startTime=(options.playerStartPositionTicks||0)/1e4;return playlist.items.append(new Windows.Media.Playback.MediaPlaybackItem(source1,startTime)),elem.src=URL.createObjectURL(playlist,{oneTimeOnly:!0}),Promise.resolve()}):(elem.src=src,Promise.resolve())}function onSuccessfulPlay(elem,onErrorFn){elem.addEventListener("error",onErrorFn)}function playWithPromise(elem,onErrorFn){try{var promise=elem.play();return promise&&promise.then?promise.catch(function(e){var errorName=(e.name||"").toLowerCase();return"notallowederror"===errorName||"aborterror"===errorName?(onSuccessfulPlay(elem,onErrorFn),Promise.resolve()):Promise.reject()}):(onSuccessfulPlay(elem,onErrorFn),Promise.resolve())}catch(err){return console.log("error calling video.play: "+err),Promise.reject()}}function destroyCastPlayer(instance){var player=instance._castPlayer;if(player){try{player.unload()}catch(err){console.log(err)}instance._castPlayer=null}}function destroyShakaPlayer(instance){var player=instance._shakaPlayer;if(player){try{player.destroy()}catch(err){console.log(err)}instance._shakaPlayer=null}}function destroyHlsPlayer(instance){var player=instance._hlsPlayer;if(player){try{player.destroy()}catch(err){console.log(err)}instance._hlsPlayer=null}}function destroyFlvPlayer(instance){var player=instance._flvPlayer;if(player){try{player.unload(),player.detachMediaElement(),player.destroy()}catch(err){console.log(err)}instance._flvPlayer=null}}function bindEventsToHlsPlayer(instance,hls,elem,onErrorFn,resolve,reject){hls.on(Hls.Events.MANIFEST_PARSED,function(){playWithPromise(elem,onErrorFn).then(resolve,function(){reject&&(reject(),reject=null)})}),hls.on(Hls.Events.ERROR,function(event,data){switch(console.log("HLS Error: Type: "+data.type+" Details: "+(data.details||"")+" Fatal: "+(data.fatal||!1)),data.type){case Hls.ErrorTypes.NETWORK_ERROR:if(data.response&&data.response.code&&data.response.code>=400)return console.log("hls.js response error code: "+data.response.code),hls.destroy(),void(reject?(reject("servererror"),reject=null):onErrorInternal(instance,"servererror"))}if(data.fatal)switch(data.type){case Hls.ErrorTypes.NETWORK_ERROR:data.response&&0===data.response.code?(console.log("hls.js response error code: "+data.response.code),hls.destroy(),reject?(reject("network"),reject=null):onErrorInternal(instance,"network")):(console.log("fatal network error encountered, try to recover"),hls.startLoad());break;case Hls.ErrorTypes.MEDIA_ERROR:console.log("fatal media error encountered, try to recover");var currentReject=reject;reject=null,handleHlsJsMediaError(instance,currentReject);break;default:console.log("Cannot recover from hls error - destroy and trigger error"),hls.destroy(),reject?(reject(),reject=null):onErrorInternal(instance,"mediadecodeerror")}})}function onEndedInternal(instance,elem,onErrorFn){elem.removeEventListener("error",onErrorFn),elem.src="",elem.innerHTML="",elem.removeAttribute("src"),destroyHlsPlayer(instance),destroyFlvPlayer(instance),destroyShakaPlayer(instance),destroyCastPlayer(instance);var stopInfo={src:instance._currentSrc};events.trigger(instance,"stopped",[stopInfo]),instance._currentTime=null,instance._currentSrc=null,instance._currentPlayOptions=null}function getBufferedRanges(instance,elem){var offset,ranges=[],seekable=elem.buffered||[],currentPlayOptions=instance._currentPlayOptions;currentPlayOptions&&(offset=currentPlayOptions.transcodingOffsetTicks),offset=offset||0;for(var i=0,length=seekable.length;i"}).join("")}function getDefaultProfile(){return new Promise(function(resolve,reject){require(["browserdeviceprofile"],function(profileBuilder){resolve(profileBuilder({}))})})}function HtmlVideoPlayer(){function updateVideoUrl(streamInfo){var isHls=streamInfo.url.toLowerCase().indexOf(".m3u8")!==-1,mediaSource=streamInfo.mediaSource,item=streamInfo.item;if(mediaSource&&item&&!mediaSource.RunTimeTicks&&isHls&&"Transcode"===streamInfo.playMethod&&(browser.iOS||browser.osx)){var hlsPlaylistUrl=streamInfo.url.replace("master.m3u8","live.m3u8");return loading.show(),console.log("prefetching hls playlist: "+hlsPlaylistUrl),connectionManager.getApiClient(item.ServerId).ajax({type:"GET",url:hlsPlaylistUrl}).then(function(){return console.log("completed prefetching hls playlist: "+hlsPlaylistUrl),loading.hide(),streamInfo.url=hlsPlaylistUrl,Promise.resolve()},function(){return console.log("error prefetching hls playlist: "+hlsPlaylistUrl),loading.hide(),Promise.resolve()})}return Promise.resolve()}function setSrcWithFlvJs(instance,elem,options,url){return new Promise(function(resolve,reject){require(["flvjs"],function(flvjs){var flvPlayer=flvjs.createPlayer({type:"flv",url:url},{seekType:"range",lazyLoad:!1});flvPlayer.attachMediaElement(elem),flvPlayer.load(),flvPlayer.play().then(resolve,reject),instance._flvPlayer=flvPlayer,self._currentSrc=url})})}function setSrcWithHlsJs(instance,elem,options,url){return new Promise(function(resolve,reject){requireHlsPlayer(function(){var hls=new Hls({manifestLoadingTimeOut:2e4});hls.loadSource(url),hls.attachMedia(elem),htmlMediaHelper.bindEventsToHlsPlayer(self,hls,elem,onError,resolve,reject),self._hlsPlayer=hls,self._currentSrc=url})})}function setCurrentSrcChromecast(instance,elem,options,url){elem.autoplay=!0;var lrd=new cast.receiver.MediaManager.LoadRequestData;lrd.currentTime=(options.playerStartPositionTicks||0)/1e7,lrd.autoplay=!0,lrd.media=new cast.receiver.media.MediaInformation,lrd.media.contentId=url,lrd.media.contentType=options.mimeType,lrd.media.streamType=cast.receiver.media.StreamType.OTHER,lrd.media.customData=options,console.log("loading media url into mediaManager");try{return mediaManager.load(lrd),self._currentSrc=url,Promise.resolve()}catch(err){return console.log("mediaManager error: "+err),Promise.reject()}}function onMediaManagerLoadMedia(event){self._castPlayer&&self._castPlayer.unload(),self._castPlayer=null;var protocol,data=event.data,media=event.data.media||{},url=media.contentId,contentType=media.contentType.toLowerCase(),ext=(media.customData,"m3u8"),mediaElement=self._mediaElement,host=new cast.player.api.Host({url:url,mediaElement:mediaElement});"m3u8"===ext||"application/x-mpegurl"===contentType||"application/vnd.apple.mpegurl"===contentType?protocol=cast.player.api.CreateHlsStreamingProtocol(host):"mpd"===ext||"application/dash+xml"===contentType?protocol=cast.player.api.CreateDashStreamingProtocol(host):(url.indexOf(".ism")>-1||"application/vnd.ms-sstr+xml"===contentType)&&(protocol=cast.player.api.CreateSmoothStreamingProtocol(host)),console.log("loading playback url: "+url),console.log("contentType: "+contentType),host.onError=function(errorCode){console.log("Fatal Error - "+errorCode)},mediaElement.autoplay=!1,self._castPlayer=new cast.player.api.Player(host),self._castPlayer.load(protocol,data.currentTime||0),self._castPlayer.playWhenHaveEnoughData()}function initMediaManager(){mediaManager.defaultOnLoad=mediaManager.onLoad.bind(mediaManager),mediaManager.onLoad=onMediaManagerLoadMedia.bind(self),mediaManager.defaultOnStop=mediaManager.onStop.bind(mediaManager),mediaManager.onStop=function(event){playbackManager.stop(),mediaManager.defaultOnStop(event)}}function setCurrentSrc(elem,options){elem.removeEventListener("error",onError);var val=options.url;console.log("playing url: "+val);var seconds=(options.playerStartPositionTicks||0)/1e7;seconds&&(val+="#t="+seconds),htmlMediaHelper.destroyHlsPlayer(self),htmlMediaHelper.destroyFlvPlayer(self),htmlMediaHelper.destroyCastPlayer(self);for(var tracks=getMediaStreamTextTracks(options.mediaSource),currentTrackIndex=-1,i=0,length=tracks.length;i
',videoSubtitlesElem=subtitlesContainer.querySelector(".videoSubtitlesInner"),setSubtitleAppearance(subtitlesContainer,videoSubtitlesElem),videoElement.parentNode.appendChild(subtitlesContainer),currentTrackEvents=data.TrackEvents}})}function setSubtitleAppearance(elem,innerElem){require(["userSettings","subtitleAppearanceHelper"],function(userSettings,subtitleAppearanceHelper){subtitleAppearanceHelper.applyStyles({text:innerElem,window:elem},userSettings.getSubtitleAppearanceSettings())})}function getCueCss(appearance,selector){var html=selector+"::cue {";return html+=appearance.text.map(function(s){return s.name+":"+s.value+"!important;"}).join(""),html+="}"}function setCueAppearance(){require(["userSettings","subtitleAppearanceHelper"],function(userSettings,subtitleAppearanceHelper){var elementId=self.id+"-cuestyle",styleElem=document.querySelector("#"+elementId);styleElem||(styleElem=document.createElement("style"),styleElem.id=elementId,styleElem.type="text/css",document.getElementsByTagName("head")[0].appendChild(styleElem)),styleElem.innerHTML=getCueCss(subtitleAppearanceHelper.getStyles(userSettings.getSubtitleAppearanceSettings(),!0),".htmlvideoplayer")})}function renderTracksEvents(videoElement,track,item){if(!itemHelper.isLocalItem(item)||track.IsExternal){var format=(track.Codec||"").toLowerCase();if("ssa"===format||"ass"===format)return void renderWithLibjass(videoElement,track,item);if(requiresCustomSubtitlesElement())return void renderSubtitlesWithCustomElement(videoElement,track,item)}for(var trackElement=null,expectedId="manualTrack"+track.Index,allTracks=videoElement.textTracks,i=0;i=ticks){selectedTrackEvent=currentTrackEvent;break}}selectedTrackEvent&&selectedTrackEvent.Text?(subtitleTextElement.innerHTML=normalizeTrackEventText(selectedTrackEvent.Text),subtitleTextElement.classList.remove("hide")):subtitleTextElement.classList.add("hide")}}}function setCurrentTrackElement(streamIndex){console.log("Setting new text track index to: "+streamIndex);var mediaStreamTextTracks=getMediaStreamTextTracks(self._currentPlayOptions.mediaSource),track=streamIndex===-1?null:mediaStreamTextTracks.filter(function(t){return t.Index===streamIndex})[0];enableNativeTrackSupport(self._currentSrc,track)?(setTrackForCustomDisplay(self._mediaElement,null),streamIndex!==-1&&setCueAppearance()):(setTrackForCustomDisplay(self._mediaElement,track),streamIndex=-1,track=null);for(var expectedId="textTrack"+streamIndex,trackIndex=streamIndex!==-1&&track?mediaStreamTextTracks.indexOf(track):-1,modes=["disabled","showing","hidden"],allTracks=self._mediaElement.textTracks,i=0;i':'",dlg.innerHTML=html;var videoElement=dlg.querySelector("video");videoElement.volume=htmlMediaHelper.getSavedVolume(),videoElement.addEventListener("timeupdate",onTimeUpdate),videoElement.addEventListener("ended",onEnded),videoElement.addEventListener("volumechange",onVolumeChange),videoElement.addEventListener("pause",onPause),videoElement.addEventListener("playing",onPlaying),videoElement.addEventListener("play",onPlay),videoElement.addEventListener("click",onClick),videoElement.addEventListener("dblclick",onDblClick),document.body.insertBefore(dlg,document.body.firstChild),videoDialog=dlg,self._mediaElement=videoElement,mediaManager&&(mediaManager.embyInit||(initMediaManager(),mediaManager.embyInit=!0),mediaManager.setMediaElement(videoElement)),options.fullscreen&&browser.supportsCssAnimation()&&!browser.slow?zoomIn(dlg).then(function(){resolve(videoElement)}):resolve(videoElement)})})}browser.edgeUwp?this.name="Windows Video Player":this.name="Html Video Player",this.type="mediaplayer",this.id="htmlvideoplayer",this.priority=1;var videoDialog,subtitleTrackIndexToSetOnPlaying,currentClock,currentAssRenderer,videoSubtitlesElem,currentTrackEvents,lastCustomTrackMs=0,customTrackIndex=-1,self=this;self.currentSrc=function(){return self._currentSrc},self.play=function(options){return browser.msie&&"Transcode"===options.playMethod&&!window.MediaSource?(alert("Playback of this content is not supported in Internet Explorer. For a better experience, try a modern browser such as Microsoft Edge, Google Chrome, Firefox or Opera."),Promise.reject()):(self._started=!1,self._timeUpdated=!1,self._currentTime=null,createMediaElement(options).then(function(elem){return updateVideoUrl(options,options.mediaSource).then(function(){return setCurrentSrc(elem,options)})}))},self.setSubtitleStreamIndex=function(index){setCurrentTrackElement(index)},self.setAudioStreamIndex=function(index){var i,length,audioStreams=getMediaStreamAudioTracks(self._currentPlayOptions.mediaSource),audioTrackOffset=-1;for(i=0,length=audioStreams.length;i=100?"none":rawValue/100;elem.style["-webkit-filter"]="brightness("+cssValue+");",elem.style.filter="brightness("+cssValue+")",elem.brightnessValue=val,events.trigger(this,"brightnesschange")}},HtmlVideoPlayer.prototype.getBrightness=function(){var elem=this._mediaElement;if(elem){var val=elem.brightnessValue;return null==val?100:val}},HtmlVideoPlayer.prototype.seekable=function(){var mediaElement=this._mediaElement;if(mediaElement){var seekable=mediaElement.seekable;if(seekable&&seekable.length){var start=seekable.start(0),end=seekable.end(0);return htmlMediaHelper.isValidDuration(start)||(start=0),htmlMediaHelper.isValidDuration(end)||(end=0),end-start>0}return!1}},HtmlVideoPlayer.prototype.pause=function(){var mediaElement=this._mediaElement;mediaElement&&mediaElement.pause()},HtmlVideoPlayer.prototype.resume=function(){var mediaElement=this._mediaElement;mediaElement&&mediaElement.play()},HtmlVideoPlayer.prototype.unpause=function(){var mediaElement=this._mediaElement;mediaElement&&mediaElement.play()},HtmlVideoPlayer.prototype.paused=function(){var mediaElement=this._mediaElement;return!!mediaElement&&mediaElement.paused},HtmlVideoPlayer.prototype.setVolume=function(val){var mediaElement=this._mediaElement;mediaElement&&(mediaElement.volume=val/100)},HtmlVideoPlayer.prototype.getVolume=function(){var mediaElement=this._mediaElement;if(mediaElement)return 100*mediaElement.volume},HtmlVideoPlayer.prototype.volumeUp=function(){this.setVolume(Math.min(this.getVolume()+2,100))},HtmlVideoPlayer.prototype.volumeDown=function(){this.setVolume(Math.max(this.getVolume()-2,0))},HtmlVideoPlayer.prototype.setMute=function(mute){var mediaElement=this._mediaElement;mediaElement&&(mediaElement.muted=mute)},HtmlVideoPlayer.prototype.isMuted=function(){var mediaElement=this._mediaElement;return!!mediaElement&&mediaElement.muted},HtmlVideoPlayer.prototype.setAspectRatio=function(val){},HtmlVideoPlayer.prototype.getAspectRatio=function(){return this._currentAspectRatio},HtmlVideoPlayer.prototype.getSupportedAspectRatios=function(){return[]},HtmlVideoPlayer.prototype.togglePictureInPicture=function(){return this.setPictureInPictureEnabled(!this.isPictureInPictureEnabled())},HtmlVideoPlayer.prototype.getBufferedRanges=function(){var mediaElement=this._mediaElement;return mediaElement?htmlMediaHelper.getBufferedRanges(this,mediaElement):[]},HtmlVideoPlayer.prototype.getStats=function(){var mediaElement=this._mediaElement,playOptions=this._currentPlayOptions||[],categories=[];if(!mediaElement)return Promise.resolve({categories:categories});var mediaCategory={stats:[],type:"media"};if(categories.push(mediaCategory),playOptions.url){var link=document.createElement("a");link.setAttribute("href",playOptions.url);var protocol=(link.protocol||"").replace(":","");protocol&&mediaCategory.stats.push({label:"Protocol:",value:protocol}),link=null}this._hlsPlayer||this._shakaPlayer?mediaCategory.stats.push({label:"Stream type:",value:"HLS"}):mediaCategory.stats.push({label:"Stream type:",value:"Video"});var videoCategory={stats:[],type:"video"};categories.push(videoCategory);var rect=mediaElement.getBoundingClientRect?mediaElement.getBoundingClientRect():{},height=rect.height,width=rect.width;if(width&&height&&videoCategory.stats.push({label:"Player dimensions:",value:width+"x"+height}),height=mediaElement.videoHeight,width=mediaElement.videoWidth,width&&height&&videoCategory.stats.push({label:"Video resolution:",value:width+"x"+height}),mediaElement.getVideoPlaybackQuality){var playbackQuality=mediaElement.getVideoPlaybackQuality(),droppedVideoFrames=playbackQuality.droppedVideoFrames||0;videoCategory.stats.push({label:"Dropped frames:",value:droppedVideoFrames});var corruptedVideoFrames=playbackQuality.corruptedVideoFrames||0;videoCategory.stats.push({label:"Corrupted frames:",value:corruptedVideoFrames})}var audioCategory={stats:[],type:"audio"};categories.push(audioCategory);var sinkId=mediaElement.sinkId;return sinkId&&audioCategory.stats.push({label:"Sink Id:",value:sinkId}),Promise.resolve({categories:categories})},browser.chromecast&&(mediaManager=new cast.receiver.MediaManager(document.createElement("video"))),HtmlVideoPlayer}); \ No newline at end of file +define(["browser","require","events","apphost","loading","dom","playbackManager","appRouter","appSettings","connectionManager","htmlMediaHelper","itemHelper"],function(browser,require,events,appHost,loading,dom,playbackManager,appRouter,appSettings,connectionManager,htmlMediaHelper,itemHelper){"use strict";function tryRemoveElement(elem){var parentNode=elem.parentNode;if(parentNode)try{parentNode.removeChild(elem)}catch(err){console.log("Error removing dialog element: "+err)}}function enableNativeTrackSupport(currentSrc,track){if(track&&"Embed"===track.DeliveryMethod)return!0;if(browser.firefox&&-1!==(currentSrc||"").toLowerCase().indexOf(".m3u8"))return!1;if(browser.chromecast&&-1!==(currentSrc||"").toLowerCase().indexOf(".m3u8"))return!1;if(browser.ps4)return!1;if(browser.web0s)return!1;if(browser.edge)return!1;if(browser.iOS&&(browser.iosVersion||10)<10)return!1;if(track){var format=(track.Codec||"").toLowerCase();if("ssa"===format||"ass"===format)return!1}return!0}function requireHlsPlayer(callback){require(["hlsjs"],function(hls){window.Hls=hls,callback()})}function getMediaStreamAudioTracks(mediaSource){return mediaSource.MediaStreams.filter(function(s){return"Audio"===s.Type})}function getMediaStreamTextTracks(mediaSource){return mediaSource.MediaStreams.filter(function(s){return"Subtitle"===s.Type})}function zoomIn(elem){return new Promise(function(resolve,reject){elem.style.animation="htmlvideoplayer-zoomin 240ms ease-in normal",dom.addEventListener(elem,dom.whichAnimationEvent(),resolve,{once:!0})})}function normalizeTrackEventText(text){return text.replace(/\\N/gi,"\n")}function setTracks(elem,tracks,item,mediaSource){elem.innerHTML=getTracksHtml(tracks,item,mediaSource)}function getTextTrackUrl(track,item,format){if(itemHelper.isLocalItem(item)&&track.Path)return track.Path;var url=playbackManager.getSubtitleUrl(track,item.ServerId);return format&&(url=url.replace(".vtt",format)),url}function getTracksHtml(tracks,item,mediaSource){return tracks.map(function(t){if("External"!==t.DeliveryMethod)return"";var defaultAttribute=mediaSource.DefaultSubtitleStreamIndex===t.Index?" default":"",language=t.Language||"und",label=t.Language||"und";return'"}).join("")}function getDefaultProfile(){return new Promise(function(resolve,reject){require(["browserdeviceprofile"],function(profileBuilder){resolve(profileBuilder({}))})})}function HtmlVideoPlayer(){function updateVideoUrl(streamInfo){var isHls=-1!==streamInfo.url.toLowerCase().indexOf(".m3u8"),mediaSource=streamInfo.mediaSource,item=streamInfo.item;if(mediaSource&&item&&!mediaSource.RunTimeTicks&&isHls&&"Transcode"===streamInfo.playMethod&&(browser.iOS||browser.osx)){var hlsPlaylistUrl=streamInfo.url.replace("master.m3u8","live.m3u8");return loading.show(),console.log("prefetching hls playlist: "+hlsPlaylistUrl),connectionManager.getApiClient(item.ServerId).ajax({type:"GET",url:hlsPlaylistUrl}).then(function(){return console.log("completed prefetching hls playlist: "+hlsPlaylistUrl),loading.hide(),streamInfo.url=hlsPlaylistUrl,Promise.resolve()},function(){return console.log("error prefetching hls playlist: "+hlsPlaylistUrl),loading.hide(),Promise.resolve()})}return Promise.resolve()}function setSrcWithFlvJs(instance,elem,options,url){return new Promise(function(resolve,reject){require(["flvjs"],function(flvjs){var flvPlayer=flvjs.createPlayer({type:"flv",url:url},{seekType:"range",lazyLoad:!1});flvPlayer.attachMediaElement(elem),flvPlayer.load(),flvPlayer.play().then(resolve,reject),instance._flvPlayer=flvPlayer,self._currentSrc=url})})}function setSrcWithHlsJs(instance,elem,options,url){return new Promise(function(resolve,reject){requireHlsPlayer(function(){var hls=new Hls({manifestLoadingTimeOut:2e4});hls.loadSource(url),hls.attachMedia(elem),htmlMediaHelper.bindEventsToHlsPlayer(self,hls,elem,onError,resolve,reject),self._hlsPlayer=hls,self._currentSrc=url})})}function setCurrentSrcChromecast(instance,elem,options,url){elem.autoplay=!0;var lrd=new cast.receiver.MediaManager.LoadRequestData;lrd.currentTime=(options.playerStartPositionTicks||0)/1e7,lrd.autoplay=!0,lrd.media=new cast.receiver.media.MediaInformation,lrd.media.contentId=url,lrd.media.contentType=options.mimeType,lrd.media.streamType=cast.receiver.media.StreamType.OTHER,lrd.media.customData=options,console.log("loading media url into mediaManager");try{return mediaManager.load(lrd),self._currentSrc=url,Promise.resolve()}catch(err){return console.log("mediaManager error: "+err),Promise.reject()}}function onMediaManagerLoadMedia(event){self._castPlayer&&self._castPlayer.unload(),self._castPlayer=null;var protocol,data=event.data,media=event.data.media||{},url=media.contentId,contentType=media.contentType.toLowerCase(),mediaElement=(media.customData,self._mediaElement),host=new cast.player.api.Host({url:url,mediaElement:mediaElement});protocol=cast.player.api.CreateHlsStreamingProtocol(host),console.log("loading playback url: "+url),console.log("contentType: "+contentType),host.onError=function(errorCode){console.log("Fatal Error - "+errorCode)},mediaElement.autoplay=!1,self._castPlayer=new cast.player.api.Player(host),self._castPlayer.load(protocol,data.currentTime||0),self._castPlayer.playWhenHaveEnoughData()}function initMediaManager(){mediaManager.defaultOnLoad=mediaManager.onLoad.bind(mediaManager),mediaManager.onLoad=onMediaManagerLoadMedia.bind(self),mediaManager.defaultOnStop=mediaManager.onStop.bind(mediaManager),mediaManager.onStop=function(event){playbackManager.stop(),mediaManager.defaultOnStop(event)}}function setCurrentSrc(elem,options){elem.removeEventListener("error",onError);var val=options.url;console.log("playing url: "+val);var seconds=(options.playerStartPositionTicks||0)/1e7;seconds&&(val+="#t="+seconds),htmlMediaHelper.destroyHlsPlayer(self),htmlMediaHelper.destroyFlvPlayer(self),htmlMediaHelper.destroyCastPlayer(self);var tracks=getMediaStreamTextTracks(options.mediaSource);if(null!=(subtitleTrackIndexToSetOnPlaying=null==options.mediaSource.DefaultSubtitleStreamIndex?-1:options.mediaSource.DefaultSubtitleStreamIndex)&&subtitleTrackIndexToSetOnPlaying>=0){var initialSubtitleStream=options.mediaSource.MediaStreams[subtitleTrackIndexToSetOnPlaying];initialSubtitleStream&&"Encode"!==initialSubtitleStream.DeliveryMethod||(subtitleTrackIndexToSetOnPlaying=-1)}audioTrackIndexToSetOnPlaying="Transcode"===options.playMethod?null:options.mediaSource.DefaultAudioStreamIndex,self._currentPlayOptions=options;var crossOrigin=htmlMediaHelper.getCrossOriginValue(options.mediaSource);return crossOrigin&&(elem.crossOrigin=crossOrigin),browser.chromecast&&-1!==val.indexOf(".m3u8")&&options.mediaSource.RunTimeTicks?(setTracks(elem,tracks,options.item,options.mediaSource),setCurrentSrcChromecast(self,elem,options,val)):htmlMediaHelper.enableHlsJsPlayer(options.mediaSource.RunTimeTicks,"Video")&&-1!==val.indexOf(".m3u8")?(setTracks(elem,tracks,options.item,options.mediaSource),setSrcWithHlsJs(self,elem,options,val)):"Transcode"!==options.playMethod&&"flv"===options.mediaSource.Container?(setTracks(elem,tracks,options.item,options.mediaSource),setSrcWithFlvJs(self,elem,options,val)):(elem.autoplay=!0,htmlMediaHelper.applySrc(elem,val,options).then(function(){return setTracks(elem,tracks,options.item,options.mediaSource),self._currentSrc=val,htmlMediaHelper.playWithPromise(elem,onError)}))}function isAudioStreamSupported(stream,deviceProfile){var codec=(stream.Codec||"").toLowerCase();return!codec||(!deviceProfile||(deviceProfile.DirectPlayProfiles||[]).filter(function(p){return"Video"===p.Type&&(!p.AudioCodec||-1!==p.AudioCodec.toLowerCase().indexOf(codec))}).length>0)}function getSupportedAudioStreams(){var profile=self._lastProfile;return getMediaStreamAudioTracks(self._currentPlayOptions.mediaSource).filter(function(stream){return isAudioStreamSupported(stream,profile)})}function onEnded(){destroyCustomTrack(this),htmlMediaHelper.onEndedInternal(self,this,onError)}function onTimeUpdate(e){var time=this.currentTime;time&&!self._timeUpdated&&(self._timeUpdated=!0,ensureValidVideo(this)),self._currentTime=time;var currentPlayOptions=self._currentPlayOptions;if(currentPlayOptions){var timeMs=1e3*time;timeMs+=(currentPlayOptions.transcodingOffsetTicks||0)/1e4,updateSubtitleText(timeMs)}events.trigger(self,"timeupdate")}function onVolumeChange(){htmlMediaHelper.saveVolume(this.volume),events.trigger(self,"volumechange")}function onNavigatedToOsd(){var dlg=videoDialog;dlg&&(dlg.classList.remove("videoPlayerContainer-withBackdrop"),dlg.classList.remove("videoPlayerContainer-onTop"),onStartedAndNavigatedToOsd())}function onStartedAndNavigatedToOsd(){setCurrentTrackElement(subtitleTrackIndexToSetOnPlaying),null!=audioTrackIndexToSetOnPlaying&&self.canSetAudioStreamIndex()&&self.setAudioStreamIndex(audioTrackIndexToSetOnPlaying)}function onPlaying(e){self._started||(self._started=!0,this.removeAttribute("controls"),loading.hide(),htmlMediaHelper.seekOnPlaybackStart(self,e.target,self._currentPlayOptions.playerStartPositionTicks),self._currentPlayOptions.fullscreen?appRouter.showVideoOsd().then(onNavigatedToOsd):(appRouter.setTransparency("backdrop"),videoDialog.classList.remove("videoPlayerContainer-withBackdrop"),videoDialog.classList.remove("videoPlayerContainer-onTop"),onStartedAndNavigatedToOsd())),events.trigger(self,"playing")}function onPlay(e){events.trigger(self,"unpause")}function ensureValidVideo(elem){if(elem===self._mediaElement&&0===elem.videoWidth&&0===elem.videoHeight){var mediaSource=(self._currentPlayOptions||{}).mediaSource;if(!mediaSource||mediaSource.RunTimeTicks)return void htmlMediaHelper.onErrorInternal(self,"mediadecodeerror")}}function onClick(){events.trigger(self,"click")}function onDblClick(){events.trigger(self,"dblclick")}function onPause(){events.trigger(self,"pause")}function onError(){var errorCode=this.error?this.error.code||0:0,errorMessage=this.error?this.error.message||"":"";console.log("Media element error: "+errorCode.toString()+" "+errorMessage);var type;switch(errorCode){case 1:return;case 2:type="network";break;case 3:if(self._hlsPlayer)return void htmlMediaHelper.handleHlsJsMediaError(self);type="mediadecodeerror";break;case 4:type="medianotsupported";break;default:return}htmlMediaHelper.onErrorInternal(self,type)}function destroyCustomTrack(videoElement){if(self._resizeObserver&&(self._resizeObserver.disconnect(),self._resizeObserver=null),videoSubtitlesElem){var subtitlesContainer=videoSubtitlesElem.parentNode;subtitlesContainer&&tryRemoveElement(subtitlesContainer),videoSubtitlesElem=null}if(currentTrackEvents=null,videoElement)for(var allTracks=videoElement.textTracks||[],i=0;i
',videoSubtitlesElem=subtitlesContainer.querySelector(".videoSubtitlesInner"),setSubtitleAppearance(subtitlesContainer,videoSubtitlesElem),videoElement.parentNode.appendChild(subtitlesContainer),currentTrackEvents=data.TrackEvents}})}function setSubtitleAppearance(elem,innerElem){require(["userSettings","subtitleAppearanceHelper"],function(userSettings,subtitleAppearanceHelper){subtitleAppearanceHelper.applyStyles({text:innerElem,window:elem},userSettings.getSubtitleAppearanceSettings())})}function getCueCss(appearance,selector){var html=selector+"::cue {";return html+=appearance.text.map(function(s){return s.name+":"+s.value+"!important;"}).join(""),html+="}"}function setCueAppearance(){require(["userSettings","subtitleAppearanceHelper"],function(userSettings,subtitleAppearanceHelper){var elementId=self.id+"-cuestyle",styleElem=document.querySelector("#"+elementId);styleElem||(styleElem=document.createElement("style"),styleElem.id=elementId,styleElem.type="text/css",document.getElementsByTagName("head")[0].appendChild(styleElem)),styleElem.innerHTML=getCueCss(subtitleAppearanceHelper.getStyles(userSettings.getSubtitleAppearanceSettings(),!0),".htmlvideoplayer")})}function renderTracksEvents(videoElement,track,item){if(!itemHelper.isLocalItem(item)||track.IsExternal){var format=(track.Codec||"").toLowerCase();if("ssa"===format||"ass"===format)return void renderWithLibjass(videoElement,track,item);if(requiresCustomSubtitlesElement())return void renderSubtitlesWithCustomElement(videoElement,track,item)}for(var trackElement=null,expectedId="manualTrack"+track.Index,allTracks=videoElement.textTracks,i=0;i=ticks){selectedTrackEvent=currentTrackEvent;break}}selectedTrackEvent&&selectedTrackEvent.Text?(subtitleTextElement.innerHTML=normalizeTrackEventText(selectedTrackEvent.Text),subtitleTextElement.classList.remove("hide")):subtitleTextElement.classList.add("hide")}}}function setCurrentTrackElement(streamIndex){console.log("Setting new text track index to: "+streamIndex);var mediaStreamTextTracks=getMediaStreamTextTracks(self._currentPlayOptions.mediaSource),track=-1===streamIndex?null:mediaStreamTextTracks.filter(function(t){return t.Index===streamIndex})[0];enableNativeTrackSupport(self._currentSrc,track)?(setTrackForCustomDisplay(self._mediaElement,null),-1!==streamIndex&&setCueAppearance()):(setTrackForCustomDisplay(self._mediaElement,track),streamIndex=-1,track=null);for(var expectedId="textTrack"+streamIndex,trackIndex=-1!==streamIndex&&track?mediaStreamTextTracks.indexOf(track):-1,modes=["disabled","showing","hidden"],allTracks=self._mediaElement.textTracks,i=0;i':html+='",dlg.innerHTML=html;var videoElement=dlg.querySelector("video");videoElement.volume=htmlMediaHelper.getSavedVolume(),videoElement.addEventListener("timeupdate",onTimeUpdate),videoElement.addEventListener("ended",onEnded),videoElement.addEventListener("volumechange",onVolumeChange),videoElement.addEventListener("pause",onPause),videoElement.addEventListener("playing",onPlaying),videoElement.addEventListener("play",onPlay),videoElement.addEventListener("click",onClick),videoElement.addEventListener("dblclick",onDblClick),document.body.insertBefore(dlg,document.body.firstChild),videoDialog=dlg,self._mediaElement=videoElement,mediaManager&&(mediaManager.embyInit||(initMediaManager(),mediaManager.embyInit=!0),mediaManager.setMediaElement(videoElement)),options.fullscreen&&browser.supportsCssAnimation()&&!browser.slow?zoomIn(dlg).then(function(){resolve(videoElement)}):resolve(videoElement)})})}browser.edgeUwp?this.name="Windows Video Player":this.name="Html Video Player",this.type="mediaplayer",this.id="htmlvideoplayer",this.priority=1;var videoDialog,subtitleTrackIndexToSetOnPlaying,audioTrackIndexToSetOnPlaying,currentClock,currentAssRenderer,videoSubtitlesElem,currentTrackEvents,lastCustomTrackMs=0,customTrackIndex=-1,self=this;self.currentSrc=function(){return self._currentSrc},self.play=function(options){return browser.msie&&"Transcode"===options.playMethod&&!window.MediaSource?(alert("Playback of this content is not supported in Internet Explorer. For a better experience, try a modern browser such as Microsoft Edge, Google Chrome, Firefox or Opera."),Promise.reject()):(self._started=!1,self._timeUpdated=!1,self._currentTime=null,createMediaElement(options).then(function(elem){return updateVideoUrl(options,options.mediaSource).then(function(){return setCurrentSrc(elem,options)})}))},self.setSubtitleStreamIndex=function(index){setCurrentTrackElement(index)},self.setAudioStreamIndex=function(index){var streams=getSupportedAudioStreams();if(!(streams.length<2)){var i,length,stream,audioIndex=-1;for(i=0,length=streams.length;i=100?"none":rawValue/100;elem.style["-webkit-filter"]="brightness("+cssValue+");",elem.style.filter="brightness("+cssValue+")",elem.brightnessValue=val,events.trigger(this,"brightnesschange")}},HtmlVideoPlayer.prototype.getBrightness=function(){var elem=this._mediaElement;if(elem){var val=elem.brightnessValue;return null==val?100:val}},HtmlVideoPlayer.prototype.seekable=function(){var mediaElement=this._mediaElement;if(mediaElement){var seekable=mediaElement.seekable;if(seekable&&seekable.length){var start=seekable.start(0),end=seekable.end(0);return htmlMediaHelper.isValidDuration(start)||(start=0),htmlMediaHelper.isValidDuration(end)||(end=0),end-start>0}return!1}},HtmlVideoPlayer.prototype.pause=function(){var mediaElement=this._mediaElement;mediaElement&&mediaElement.pause()},HtmlVideoPlayer.prototype.resume=function(){var mediaElement=this._mediaElement;mediaElement&&mediaElement.play()},HtmlVideoPlayer.prototype.unpause=function(){var mediaElement=this._mediaElement;mediaElement&&mediaElement.play()},HtmlVideoPlayer.prototype.paused=function(){var mediaElement=this._mediaElement;return!!mediaElement&&mediaElement.paused},HtmlVideoPlayer.prototype.setVolume=function(val){var mediaElement=this._mediaElement;mediaElement&&(mediaElement.volume=val/100)},HtmlVideoPlayer.prototype.getVolume=function(){var mediaElement=this._mediaElement;if(mediaElement)return Math.min(Math.round(100*mediaElement.volume),100)},HtmlVideoPlayer.prototype.volumeUp=function(){this.setVolume(Math.min(this.getVolume()+2,100))},HtmlVideoPlayer.prototype.volumeDown=function(){this.setVolume(Math.max(this.getVolume()-2,0))},HtmlVideoPlayer.prototype.setMute=function(mute){var mediaElement=this._mediaElement;mediaElement&&(mediaElement.muted=mute)},HtmlVideoPlayer.prototype.isMuted=function(){var mediaElement=this._mediaElement;return!!mediaElement&&mediaElement.muted},HtmlVideoPlayer.prototype.setAspectRatio=function(val){},HtmlVideoPlayer.prototype.getAspectRatio=function(){return this._currentAspectRatio},HtmlVideoPlayer.prototype.getSupportedAspectRatios=function(){return[]},HtmlVideoPlayer.prototype.togglePictureInPicture=function(){return this.setPictureInPictureEnabled(!this.isPictureInPictureEnabled())},HtmlVideoPlayer.prototype.getBufferedRanges=function(){var mediaElement=this._mediaElement;return mediaElement?htmlMediaHelper.getBufferedRanges(this,mediaElement):[]},HtmlVideoPlayer.prototype.getStats=function(){var mediaElement=this._mediaElement,playOptions=this._currentPlayOptions||[],categories=[];if(!mediaElement)return Promise.resolve({categories:categories});var mediaCategory={stats:[],type:"media"};if(categories.push(mediaCategory),playOptions.url){var link=document.createElement("a");link.setAttribute("href",playOptions.url);var protocol=(link.protocol||"").replace(":","");protocol&&mediaCategory.stats.push({label:"Protocol:",value:protocol}),link=null}this._hlsPlayer||this._shakaPlayer?mediaCategory.stats.push({label:"Stream type:",value:"HLS"}):mediaCategory.stats.push({label:"Stream type:",value:"Video"});var videoCategory={stats:[],type:"video"};categories.push(videoCategory);var rect=mediaElement.getBoundingClientRect?mediaElement.getBoundingClientRect():{},height=rect.height,width=rect.width;if(width&&height&&!browser.tv&&videoCategory.stats.push({label:"Player dimensions:",value:width+"x"+height}),height=mediaElement.videoHeight,width=mediaElement.videoWidth,width&&height&&videoCategory.stats.push({label:"Video resolution:",value:width+"x"+height}),mediaElement.getVideoPlaybackQuality){var playbackQuality=mediaElement.getVideoPlaybackQuality(),droppedVideoFrames=playbackQuality.droppedVideoFrames||0;videoCategory.stats.push({label:"Dropped frames:",value:droppedVideoFrames});var corruptedVideoFrames=playbackQuality.corruptedVideoFrames||0;videoCategory.stats.push({label:"Corrupted frames:",value:corruptedVideoFrames})}var audioCategory={stats:[],type:"audio"};categories.push(audioCategory);var sinkId=mediaElement.sinkId;return sinkId&&audioCategory.stats.push({label:"Sink Id:",value:sinkId}),Promise.resolve({categories:categories})},browser.chromecast&&(mediaManager=new cast.receiver.MediaManager(document.createElement("video"))),HtmlVideoPlayer}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/htmlvideoplayer/style.css b/dashboard-ui/bower_components/emby-webcomponents/htmlvideoplayer/style.css index b4462b7a4d..754773861d 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/htmlvideoplayer/style.css +++ b/dashboard-ui/bower_components/emby-webcomponents/htmlvideoplayer/style.css @@ -1 +1 @@ -.videoPlayerContainer{position:fixed!important;top:0;bottom:0;left:0;right:0;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.videoPlayerContainer:not(.videoPlayerContainer-withBackdrop){background:#000!important}.videoPlayerContainer-withBackdrop{background-repeat:no-repeat;background-position:center center;-webkit-background-size:cover;background-size:cover;background-attachment:fixed;background-color:#000}.videoPlayerContainer-onTop{z-index:1000}.htmlvideoplayer{margin:0!important;padding:0!important;width:100%;height:100%}.htmlvideoplayer::cue{background-color:transparent;text-shadow:2px 2px 2px rgba(0,0,0,1);-webkit-font-smoothing:antialiased;font-family:inherit}.htmlvideoplayer-moveupsubtitles::-webkit-media-text-track-display{margin-top:-2em}.videoSubtitles{position:fixed;bottom:10%;text-align:center;left:0;right:0;color:#fff;font-size:170%}.videoSubtitlesInner{max-width:70%;background-color:rgba(0,0,0,.8);padding:.25em;margin:auto;display:inline-block}@-webkit-keyframes htmlvideoplayer-zoomin{from{-webkit-transform:scale3d(.2,.2,.2);transform:scale3d(.2,.2,.2);opacity:.6}to{-webkit-transform:none;transform:none;opacity:initial}}@keyframes htmlvideoplayer-zoomin{from{-webkit-transform:scale3d(.2,.2,.2);transform:scale3d(.2,.2,.2);opacity:.6}to{-webkit-transform:none;transform:none;opacity:initial}} \ No newline at end of file +.videoPlayerContainer{position:fixed!important;top:0;bottom:0;left:0;right:0;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.videoPlayerContainer:not(.videoPlayerContainer-withBackdrop){background:#000!important}.videoPlayerContainer-withBackdrop{background-repeat:no-repeat;background-position:center center;-webkit-background-size:cover;background-size:cover;background-attachment:fixed;background-color:#000}.videoPlayerContainer-onTop{z-index:1000}.htmlvideoplayer{margin:0!important;padding:0!important;width:100%;height:100%}.htmlvideoplayer::cue{background-color:transparent;text-shadow:.14em .14em .14em rgba(0,0,0,1);-webkit-font-smoothing:antialiased;font-family:inherit}.htmlvideoplayer-moveupsubtitles::-webkit-media-text-track-display{margin-top:-2em}.videoSubtitles{position:fixed;bottom:10%;text-align:center;left:0;right:0;color:#fff;font-size:170%}.videoSubtitlesInner{max-width:70%;background-color:rgba(0,0,0,.8);padding:.25em;margin:auto;display:inline-block}@-webkit-keyframes htmlvideoplayer-zoomin{from{-webkit-transform:scale3d(.2,.2,.2);transform:scale3d(.2,.2,.2);opacity:.6}to{-webkit-transform:none;transform:none;opacity:initial}}@keyframes htmlvideoplayer-zoomin{from{-webkit-transform:scale3d(.2,.2,.2);transform:scale3d(.2,.2,.2);opacity:.6}to{-webkit-transform:none;transform:none;opacity:initial}} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/imagedownloader/imagedownloader.js b/dashboard-ui/bower_components/emby-webcomponents/imagedownloader/imagedownloader.js index 34fedc5923..17c371cf69 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/imagedownloader/imagedownloader.js +++ b/dashboard-ui/bower_components/emby-webcomponents/imagedownloader/imagedownloader.js @@ -1 +1 @@ -define(["loading","apphost","dialogHelper","connectionManager","imageLoader","browser","layoutManager","scrollHelper","globalize","require","emby-checkbox","emby-button","paper-icon-button-light","emby-linkbutton","formDialogStyle","cardStyle"],function(loading,appHost,dialogHelper,connectionManager,imageLoader,browser,layoutManager,scrollHelper,globalize,require){"use strict";function getBaseRemoteOptions(){var options={};return options.itemId=currentItemId,options}function reloadBrowsableImages(page,apiClient){loading.show();var options=getBaseRemoteOptions();options.type=browsableImageType,options.startIndex=browsableImageStartIndex,options.limit=browsableImagePageSize,options.IncludeAllLanguages=page.querySelector("#chkAllLanguages").checked;var provider=selectedProvider||"";provider&&(options.ProviderName=provider),apiClient.getAvailableRemoteImages(options).then(function(result){renderRemoteImages(page,apiClient,result,browsableImageType,options.startIndex,options.limit),page.querySelector("#selectBrowsableImageType").value=browsableImageType;var providersHtml=result.Providers.map(function(p){return'"}),selectImageProvider=page.querySelector("#selectImageProvider");selectImageProvider.innerHTML='"+providersHtml,selectImageProvider.value=provider,loading.hide()})}function renderRemoteImages(page,apiClient,imagesResult,imageType,startIndex,limit){page.querySelector(".availableImagesPaging").innerHTML=getPagingHtml(startIndex,limit,imagesResult.TotalRecordCount);for(var html="",i=0,length=imagesResult.Images.length;ilimit;html+='
',html+='';var startAtDisplay=totalRecordCount?startIndex+1:0;return html+=startAtDisplay+"-"+recordsEnd+" of "+totalRecordCount,html+="",showControls&&(html+='
',html+='',html+='',html+="
"),html+="
"}function parentWithClass(elem,className){for(;!elem.classList||!elem.classList.contains(className);)if(elem=elem.parentNode,!elem)return null;return elem}function downloadRemoteImage(page,apiClient,url,type,provider){var options=getBaseRemoteOptions();options.Type=type,options.ImageUrl=url,options.ProviderName=provider,loading.show(),apiClient.downloadRemoteImage(options).then(function(){hasChanges=!0;var dlg=parentWithClass(page,"dialog");dialogHelper.close(dlg)})}function getDisplayUrl(url,apiClient){return apiClient.getUrl("Images/Remote",{imageUrl:url})}function getRemoteImageHtml(image,imageType,apiClient){var tagName=layoutManager.tv?"button":"div",enableFooterButtons=!layoutManager.tv,html="",cssClass="card scalableCard imageEditorCard",cardBoxCssClass="cardBox visualCardBox",shape="backdrop";return shape="Backdrop"===imageType||"Art"===imageType||"Thumb"===imageType||"Logo"===imageType?"backdrop":"Banner"===imageType?"banner":"Disc"===imageType?"square":"Episode"===currentItemType?"backdrop":"MusicAlbum"===currentItemType||"MusicArtist"===currentItemType?"square":"portrait",cssClass+=" "+shape+"Card "+shape+"Card-scalable","button"===tagName?(cssClass+=" btnImageCard",layoutManager.tv&&!browser.slow&&(cardBoxCssClass+=" cardBox-focustransform"),cardBoxCssClass+=" card-focuscontent",html+='',html+="
"),html+="
",html+="
",html+=""}function initEditor(page,apiClient){page.querySelector("#selectBrowsableImageType").addEventListener("change",function(){browsableImageType=this.value,browsableImageStartIndex=0,selectedProvider=null,reloadBrowsableImages(page,apiClient)}),page.querySelector("#selectImageProvider").addEventListener("change",function(){browsableImageStartIndex=0,selectedProvider=this.value,reloadBrowsableImages(page,apiClient)}),page.querySelector("#chkAllLanguages").addEventListener("change",function(){browsableImageStartIndex=0,reloadBrowsableImages(page,apiClient)}),page.addEventListener("click",function(e){var btnDownloadRemoteImage=parentWithClass(e.target,"btnDownloadRemoteImage");if(btnDownloadRemoteImage){var card=parentWithClass(btnDownloadRemoteImage,"card");return void downloadRemoteImage(page,apiClient,card.getAttribute("data-imageurl"),card.getAttribute("data-imagetype"),card.getAttribute("data-imageprovider"))}var btnImageCard=parentWithClass(e.target,"btnImageCard");btnImageCard&&downloadRemoteImage(page,apiClient,btnImageCard.getAttribute("data-imageurl"),btnImageCard.getAttribute("data-imagetype"),btnImageCard.getAttribute("data-imageprovider"))})}function showEditor(itemId,serverId,itemType){loading.show(),require(["text!./imagedownloader.template.html"],function(template){var apiClient=connectionManager.getApiClient(serverId);currentItemId=itemId,currentItemType=itemType;var dialogOptions={removeOnClose:!0};layoutManager.tv?dialogOptions.size="fullscreen":dialogOptions.size="fullscreen-border";var dlg=dialogHelper.createDialog(dialogOptions);dlg.innerHTML=globalize.translateDocument(template,"sharedcomponents"),layoutManager.tv&&scrollHelper.centerFocus.on(dlg,!1),dlg.addEventListener("close",onDialogClosed),dialogHelper.open(dlg);var editorContent=dlg.querySelector(".formDialogContent");initEditor(editorContent,apiClient),dlg.querySelector(".btnCancel").addEventListener("click",function(){dialogHelper.close(dlg)}),reloadBrowsableImages(editorContent,apiClient)})}function onDialogClosed(){var dlg=this;layoutManager.tv&&scrollHelper.centerFocus.off(dlg,!1),loading.hide(),hasChanges?currentResolve():currentReject()}var currentItemId,currentItemType,currentResolve,currentReject,selectedProvider,hasChanges=!1,browsableImagePageSize=browser.slow?6:30,browsableImageStartIndex=0,browsableImageType="Primary";return{show:function(itemId,serverId,itemType,imageType){return new Promise(function(resolve,reject){currentResolve=resolve,currentReject=reject,hasChanges=!1,browsableImageStartIndex=0,browsableImageType=imageType||"Primary",selectedProvider=null,showEditor(itemId,serverId,itemType)})}}}); \ No newline at end of file +define(["loading","apphost","dialogHelper","connectionManager","imageLoader","browser","layoutManager","scrollHelper","globalize","require","emby-checkbox","emby-button","paper-icon-button-light","emby-linkbutton","formDialogStyle","cardStyle"],function(loading,appHost,dialogHelper,connectionManager,imageLoader,browser,layoutManager,scrollHelper,globalize,require){"use strict";function getBaseRemoteOptions(){var options={};return options.itemId=currentItemId,options}function reloadBrowsableImages(page,apiClient){loading.show();var options=getBaseRemoteOptions();options.type=browsableImageType,options.startIndex=browsableImageStartIndex,options.limit=browsableImagePageSize,options.IncludeAllLanguages=page.querySelector("#chkAllLanguages").checked;var provider=selectedProvider||"";provider&&(options.ProviderName=provider),apiClient.getAvailableRemoteImages(options).then(function(result){renderRemoteImages(page,apiClient,result,browsableImageType,options.startIndex,options.limit),page.querySelector("#selectBrowsableImageType").value=browsableImageType;var providersHtml=result.Providers.map(function(p){return'"}),selectImageProvider=page.querySelector("#selectImageProvider");selectImageProvider.innerHTML='"+providersHtml,selectImageProvider.value=provider,loading.hide()})}function renderRemoteImages(page,apiClient,imagesResult,imageType,startIndex,limit){page.querySelector(".availableImagesPaging").innerHTML=getPagingHtml(startIndex,limit,imagesResult.TotalRecordCount);for(var html="",i=0,length=imagesResult.Images.length;ilimit;return html+='
',html+='',html+=(totalRecordCount?startIndex+1:0)+"-"+recordsEnd+" of "+totalRecordCount,html+="",showControls&&(html+='
',html+='',html+='',html+="
"),html+="
"}function parentWithClass(elem,className){for(;!elem.classList||!elem.classList.contains(className);)if(!(elem=elem.parentNode))return null;return elem}function downloadRemoteImage(page,apiClient,url,type,provider){var options=getBaseRemoteOptions();options.Type=type,options.ImageUrl=url,options.ProviderName=provider,loading.show(),apiClient.downloadRemoteImage(options).then(function(){hasChanges=!0;var dlg=parentWithClass(page,"dialog");dialogHelper.close(dlg)})}function getDisplayUrl(url,apiClient){return apiClient.getUrl("Images/Remote",{imageUrl:url})}function getRemoteImageHtml(image,imageType,apiClient){var tagName=layoutManager.tv?"button":"div",enableFooterButtons=!layoutManager.tv,html="",cssClass="card scalableCard imageEditorCard",cardBoxCssClass="cardBox visualCardBox",shape="backdrop";return shape="Backdrop"===imageType||"Art"===imageType||"Thumb"===imageType||"Logo"===imageType?"backdrop":"Banner"===imageType?"banner":"Disc"===imageType?"square":"Episode"===currentItemType?"backdrop":"MusicAlbum"===currentItemType||"MusicArtist"===currentItemType?"square":"portrait",cssClass+=" "+shape+"Card "+shape+"Card-scalable","button"===tagName?(cssClass+=" btnImageCard",layoutManager.tv&&!browser.slow&&(cardBoxCssClass+=" cardBox-focustransform"),layoutManager.tv&&(cardBoxCssClass+=" card-focuscontent cardBox-withfocuscontent"),html+='',html+="
"),html+="
",html+="
",html+=""}function initEditor(page,apiClient){page.querySelector("#selectBrowsableImageType").addEventListener("change",function(){browsableImageType=this.value,browsableImageStartIndex=0,selectedProvider=null,reloadBrowsableImages(page,apiClient)}),page.querySelector("#selectImageProvider").addEventListener("change",function(){browsableImageStartIndex=0,selectedProvider=this.value,reloadBrowsableImages(page,apiClient)}),page.querySelector("#chkAllLanguages").addEventListener("change",function(){browsableImageStartIndex=0,reloadBrowsableImages(page,apiClient)}),page.addEventListener("click",function(e){var btnDownloadRemoteImage=parentWithClass(e.target,"btnDownloadRemoteImage");if(btnDownloadRemoteImage){var card=parentWithClass(btnDownloadRemoteImage,"card");return void downloadRemoteImage(page,apiClient,card.getAttribute("data-imageurl"),card.getAttribute("data-imagetype"),card.getAttribute("data-imageprovider"))}var btnImageCard=parentWithClass(e.target,"btnImageCard");btnImageCard&&downloadRemoteImage(page,apiClient,btnImageCard.getAttribute("data-imageurl"),btnImageCard.getAttribute("data-imagetype"),btnImageCard.getAttribute("data-imageprovider"))})}function showEditor(itemId,serverId,itemType){loading.show(),require(["text!./imagedownloader.template.html"],function(template){var apiClient=connectionManager.getApiClient(serverId);currentItemId=itemId,currentItemType=itemType;var dialogOptions={removeOnClose:!0};layoutManager.tv?dialogOptions.size="fullscreen":dialogOptions.size="fullscreen-border";var dlg=dialogHelper.createDialog(dialogOptions);dlg.innerHTML=globalize.translateDocument(template,"sharedcomponents"),layoutManager.tv&&scrollHelper.centerFocus.on(dlg,!1),dlg.addEventListener("close",onDialogClosed),dialogHelper.open(dlg);var editorContent=dlg.querySelector(".formDialogContent");initEditor(editorContent,apiClient),dlg.querySelector(".btnCancel").addEventListener("click",function(){dialogHelper.close(dlg)}),reloadBrowsableImages(editorContent,apiClient)})}function onDialogClosed(){var dlg=this;layoutManager.tv&&scrollHelper.centerFocus.off(dlg,!1),loading.hide(),hasChanges?currentResolve():currentReject()}var currentItemId,currentItemType,currentResolve,currentReject,selectedProvider,hasChanges=!1,browsableImagePageSize=browser.slow?6:30,browsableImageStartIndex=0,browsableImageType="Primary";return{show:function(itemId,serverId,itemType,imageType){return new Promise(function(resolve,reject){currentResolve=resolve,currentReject=reject,hasChanges=!1,browsableImageStartIndex=0,browsableImageType=imageType||"Primary",selectedProvider=null,showEditor(itemId,serverId,itemType)})}}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/imageeditor/imageeditor.js b/dashboard-ui/bower_components/emby-webcomponents/imageeditor/imageeditor.js index 9e2640acc1..831082c8de 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/imageeditor/imageeditor.js +++ b/dashboard-ui/bower_components/emby-webcomponents/imageeditor/imageeditor.js @@ -1 +1 @@ -define(["dialogHelper","connectionManager","loading","dom","layoutManager","focusManager","globalize","scrollHelper","imageLoader","require","browser","apphost","cardStyle","formDialogStyle","emby-button","paper-icon-button-light","css!./imageeditor"],function(dialogHelper,connectionManager,loading,dom,layoutManager,focusManager,globalize,scrollHelper,imageLoader,require,browser,appHost){"use strict";function getBaseRemoteOptions(){var options={};return options.itemId=currentItem.Id,options}function reload(page,item,focusContext){loading.show();var apiClient;item?(apiClient=connectionManager.getApiClient(item.ServerId),reloadItem(page,item,apiClient,focusContext)):(apiClient=connectionManager.getApiClient(currentItem.ServerId),apiClient.getItem(apiClient.getCurrentUserId(),currentItem.Id).then(function(item){reloadItem(page,item,apiClient,focusContext)}))}function addListeners(container,className,eventName,fn){container.addEventListener(eventName,function(e){var elem=dom.parentWithClass(e.target,className);elem&&fn.call(elem,e)})}function reloadItem(page,item,apiClient,focusContext){currentItem=item,apiClient.getRemoteImageProviders(getBaseRemoteOptions()).then(function(providers){for(var btnBrowseAllImages=page.querySelectorAll(".btnBrowseAllImages"),i=0,length=btnBrowseAllImages.length;i',html+='
',html+='
',html+='
';var imageUrl=getImageUrl(currentItem,apiClient,image.ImageType,image.ImageIndex,{maxWidth:imageSize});return html+='
",html+="
",html+="
",html+='
',html+='

'+globalize.translate("sharedcomponents#"+image.ImageType)+"

",html+='
',html+=image.Width&&image.Height?image.Width+" X "+image.Height:" ",html+="
",enableFooterButtons&&(html+='
',"Backdrop"===image.ImageType||"Screenshot"===image.ImageType?(html+=index>0?'':'',html+=indexchevron_right':''):imageProviders.length&&(html+=''),html+='',html+="
"),html+="
",html+="
",html+=""}function deleteImage(context,itemId,type,index,apiClient,enableConfirmation){var afterConfirm=function(){apiClient.deleteItemImage(itemId,type,index).then(function(){hasChanges=!0,reload(context)})};return enableConfirmation?void require(["confirm"],function(confirm){confirm({text:globalize.translate("sharedcomponents#ConfirmDeleteImage"),confirmText:globalize.translate("sharedcomponents#Delete"),primary:"cancel"}).then(afterConfirm)}):void afterConfirm()}function moveImage(context,apiClient,itemId,type,index,newIndex,focusContext){apiClient.updateItemImageIndex(itemId,type,index,newIndex).then(function(){hasChanges=!0,reload(context,null,focusContext)},function(){require(["alert"],function(alert){alert(globalize.translate("sharedcomponents#DefaultErrorMessage"))})})}function renderImages(page,item,apiClient,images,imageProviders,elem){var html="",imageSize=300,windowSize=dom.getWindowSize();windowSize.innerWidth>=1280&&(imageSize=Math.round(windowSize.innerWidth/4));for(var tagName=layoutManager.tv?"button":"div",enableFooterButtons=!layoutManager.tv,i=0,length=images.length;i0&&commands.push({name:globalize.translate("sharedcomponents#MoveLeft"),id:"moveleft"}),index',html+='
',html+='
',html+='
',html+='
",html+="
",html+="
",html+='
',html+='

'+globalize.translate("sharedcomponents#"+image.ImageType)+"

",html+='
',image.Width&&image.Height?html+=image.Width+" X "+image.Height:html+=" ",html+="
",enableFooterButtons&&(html+='
',"Backdrop"===image.ImageType||"Screenshot"===image.ImageType?(html+=index>0?'':'',html+=indexchevron_right':''):imageProviders.length&&(html+=''),html+='',html+="
"),html+="
",html+="
",html+=""}function deleteImage(context,itemId,type,index,apiClient,enableConfirmation){var afterConfirm=function(){apiClient.deleteItemImage(itemId,type,index).then(function(){hasChanges=!0,reload(context)})};if(!enableConfirmation)return void afterConfirm();require(["confirm"],function(confirm){confirm({text:globalize.translate("sharedcomponents#ConfirmDeleteImage"),confirmText:globalize.translate("sharedcomponents#Delete"),primary:"cancel"}).then(afterConfirm)})}function moveImage(context,apiClient,itemId,type,index,newIndex,focusContext){apiClient.updateItemImageIndex(itemId,type,index,newIndex).then(function(){hasChanges=!0,reload(context,null,focusContext)},function(){require(["alert"],function(alert){alert(globalize.translate("sharedcomponents#DefaultErrorMessage"))})})}function renderImages(page,item,apiClient,images,imageProviders,elem){var html="",imageSize=300,windowSize=dom.getWindowSize();windowSize.innerWidth>=1280&&(imageSize=Math.round(windowSize.innerWidth/4));for(var tagName=layoutManager.tv?"button":"div",enableFooterButtons=!layoutManager.tv,i=0,length=images.length;i0&&commands.push({name:globalize.translate("sharedcomponents#MoveLeft"),id:"moveleft"}),index
'}function getAutoTimeProgressHtml(pct,options,isRecording,start,end){var containerClass="itemProgressBar";options&&options.containerClass&&(containerClass+=" "+options.containerClass);var foregroundClass="itemProgressBarForeground";return isRecording&&(foregroundClass+=" itemProgressBarForeground-recording"),'
'}function getProgressBarHtml(item,options){var pct;if(enableProgressIndicator(item)&&"Recording"!==item.Type){var userData=options?options.userData||item.UserData:item.UserData;if(userData&&(pct=userData.PlayedPercentage,pct&&pct<100))return getProgressHtml(pct,options)}if(("Program"===item.Type||"Timer"===item.Type||"Recording"===item.Type)&&item.StartDate&&item.EndDate){var startDate=0,endDate=1;try{startDate=datetime.parseISO8601Date(item.StartDate).getTime()}catch(err){}try{endDate=datetime.parseISO8601Date(item.EndDate).getTime()}catch(err){}var now=(new Date).getTime(),total=endDate-startDate;if(pct=100*((now-startDate)/total),pct>0&&pct<100){var isRecording="Timer"===item.Type||"Recording"===item.Type||item.TimerId;return getAutoTimeProgressHtml(pct,options,isRecording,startDate,endDate)}}return""}function enablePlayedIndicator(item){return itemHelper.canMarkPlayed(item)}function getPlayedIndicator(item){if(enablePlayedIndicator(item)){var userData=item.UserData||{};if(userData.UnplayedItemCount)return'
'+userData.UnplayedItemCount+"
";if(userData.PlayedPercentage&&userData.PlayedPercentage>=100||userData.Played)return'
'}return""}function getCountIndicatorHtml(count){return'
'+count+"
"}function getChildCountIndicatorHtml(item,options){var minCount=0;return options&&(minCount=options.minCount||minCount),item.ChildCount&&item.ChildCount>minCount?getCountIndicatorHtml(item.ChildCount):""}function getTimerIndicator(item){var status;if("SeriesTimer"===item.Type)return'';if(item.TimerId||item.SeriesTimerId)status=item.Status||"Cancelled";else{if("Timer"!==item.Type)return"";status=item.Status}return item.SeriesTimerId?"Cancelled"!==status?'':'':''}function getSyncIndicator(item){return 100===item.SyncPercent?'
':null!=item.SyncPercent?'
':""}function getTypeIndicator(item){return"Video"===item.Type?'
':"Folder"===item.Type||"PhotoAlbum"===item.Type?'
':"Photo"===item.Type?'
':""}function onAutoTimeProgress(){var start=parseInt(this.getAttribute("data-starttime")),end=parseInt(this.getAttribute("data-endtime")),now=(new Date).getTime(),total=end-start,pct=100*((now-start)/total);pct=Math.min(100,pct),pct=Math.max(0,pct);var itemProgressBarForeground=this.querySelector(".itemProgressBarForeground");itemProgressBarForeground.style.width=pct+"%"}var ProgressBarPrototype=Object.create(HTMLDivElement.prototype);return ProgressBarPrototype.attachedCallback=function(){this.timeInterval&&clearInterval(this.timeInterval),"time"===this.getAttribute("data-automode")&&(this.timeInterval=setInterval(onAutoTimeProgress.bind(this),6e4))},ProgressBarPrototype.detachedCallback=function(){this.timeInterval&&(clearInterval(this.timeInterval),this.timeInterval=null)},document.registerElement("emby-progressbar",{prototype:ProgressBarPrototype,extends:"div"}),{getProgressBarHtml:getProgressBarHtml,getPlayedIndicatorHtml:getPlayedIndicator,getChildCountIndicatorHtml:getChildCountIndicatorHtml,enableProgressIndicator:enableProgressIndicator,getTimerIndicator:getTimerIndicator,enablePlayedIndicator:enablePlayedIndicator,getSyncIndicator:getSyncIndicator,getTypeIndicator:getTypeIndicator}}); \ No newline at end of file +define(["datetime","itemHelper","css!./indicators.css","material-icons"],function(datetime,itemHelper){"use strict";function enableProgressIndicator(item){return"Video"===item.MediaType&&"TvChannel"!==item.Type||("AudioBook"===item.Type||"AudioPodcast"===item.Type)}function getProgressHtml(pct,options){var containerClass="itemProgressBar";return options&&options.containerClass&&(containerClass+=" "+options.containerClass),'
'}function getAutoTimeProgressHtml(pct,options,isRecording,start,end){var containerClass="itemProgressBar";options&&options.containerClass&&(containerClass+=" "+options.containerClass);var foregroundClass="itemProgressBarForeground";return isRecording&&(foregroundClass+=" itemProgressBarForeground-recording"),'
'}function getProgressBarHtml(item,options){var pct;if(enableProgressIndicator(item)&&"Recording"!==item.Type){var userData=options?options.userData||item.UserData:item.UserData;if(userData&&(pct=userData.PlayedPercentage)&&pct<100)return getProgressHtml(pct,options)}if(("Program"===item.Type||"Timer"===item.Type||"Recording"===item.Type)&&item.StartDate&&item.EndDate){var startDate=0,endDate=1;try{startDate=datetime.parseISO8601Date(item.StartDate).getTime()}catch(err){}try{endDate=datetime.parseISO8601Date(item.EndDate).getTime()}catch(err){}if((pct=((new Date).getTime()-startDate)/(endDate-startDate)*100)>0&&pct<100){return getAutoTimeProgressHtml(pct,options,"Timer"===item.Type||"Recording"===item.Type||item.TimerId,startDate,endDate)}}return""}function enablePlayedIndicator(item){return itemHelper.canMarkPlayed(item)}function getPlayedIndicator(item){if(enablePlayedIndicator(item)){var userData=item.UserData||{};if(userData.UnplayedItemCount)return'
'+userData.UnplayedItemCount+"
";if(userData.PlayedPercentage&&userData.PlayedPercentage>=100||userData.Played)return'
'}return""}function getCountIndicatorHtml(count){return'
'+count+"
"}function getChildCountIndicatorHtml(item,options){var minCount=0;return options&&(minCount=options.minCount||minCount),item.ChildCount&&item.ChildCount>minCount?getCountIndicatorHtml(item.ChildCount):""}function getTimerIndicator(item){var status;if("SeriesTimer"===item.Type)return'';if(item.TimerId||item.SeriesTimerId)status=item.Status||"Cancelled";else{if("Timer"!==item.Type)return"";status=item.Status}return item.SeriesTimerId?"Cancelled"!==status?'':'':''}function getSyncIndicator(item){return 100===item.SyncPercent?'
':null!=item.SyncPercent?'
':""}function getTypeIndicator(item){return"Video"===item.Type?'
':"Folder"===item.Type||"PhotoAlbum"===item.Type?'
':"Photo"===item.Type?'
':""}function getMissingIndicator(item){if("Episode"===item.Type&&"Virtual"===item.LocationType){if(item.PremiereDate)try{if(datetime.parseISO8601Date(item.PremiereDate).getTime()>(new Date).getTime())return'
Unaired
'}catch(err){}return'
Missing
'}return""}function onAutoTimeProgress(){var start=parseInt(this.getAttribute("data-starttime")),end=parseInt(this.getAttribute("data-endtime")),now=(new Date).getTime(),total=end-start,pct=(now-start)/total*100;pct=Math.min(100,pct),pct=Math.max(0,pct),this.querySelector(".itemProgressBarForeground").style.width=pct+"%"}var ProgressBarPrototype=Object.create(HTMLDivElement.prototype);return ProgressBarPrototype.attachedCallback=function(){this.timeInterval&&clearInterval(this.timeInterval),"time"===this.getAttribute("data-automode")&&(this.timeInterval=setInterval(onAutoTimeProgress.bind(this),6e4))},ProgressBarPrototype.detachedCallback=function(){this.timeInterval&&(clearInterval(this.timeInterval),this.timeInterval=null)},document.registerElement("emby-progressbar",{prototype:ProgressBarPrototype,extends:"div"}),{getProgressBarHtml:getProgressBarHtml,getPlayedIndicatorHtml:getPlayedIndicator,getChildCountIndicatorHtml:getChildCountIndicatorHtml,enableProgressIndicator:enableProgressIndicator,getTimerIndicator:getTimerIndicator,enablePlayedIndicator:enablePlayedIndicator,getSyncIndicator:getSyncIndicator,getTypeIndicator:getTypeIndicator,getMissingIndicator:getMissingIndicator}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/input/api.js b/dashboard-ui/bower_components/emby-webcomponents/input/api.js index 1f5e3781a1..c57e5a771b 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/input/api.js +++ b/dashboard-ui/bower_components/emby-webcomponents/input/api.js @@ -1 +1 @@ -define(["connectionManager","playbackManager","events","inputManager","focusManager","appRouter"],function(connectionManager,playbackManager,events,inputManager,focusManager,appRouter){"use strict";function notifyApp(){inputManager.notify()}function displayMessage(cmd){var args=cmd.Arguments;args.TimeoutMs?require(["toast"],function(toast){toast({title:args.Header,text:args.Text})}):require(["alert"],function(alert){alert({title:args.Header,text:args.Text})})}function displayContent(cmd,apiClient){playbackManager.isPlayingLocally(["Video","Book","Game"])||appRouter.showItem(cmd.Arguments.ItemId,apiClient.serverId())}function processGeneralCommand(cmd,apiClient){switch(cmd.Name){case"Select":return void inputManager.trigger("select");case"Back":return void inputManager.trigger("back");case"MoveUp":return void inputManager.trigger("up");case"MoveDown":return void inputManager.trigger("down");case"MoveLeft":return void inputManager.trigger("left");case"MoveRight":return void inputManager.trigger("right");case"PageUp":return void inputManager.trigger("pageup");case"PageDown":return void inputManager.trigger("pagedown");case"SetRepeatMode":playbackManager.setRepeatMode(cmd.Arguments.RepeatMode);break;case"VolumeUp":return void inputManager.trigger("volumeup");case"VolumeDown":return void inputManager.trigger("volumedown");case"ChannelUp":return void inputManager.trigger("channelup");case"ChannelDown":return void inputManager.trigger("channeldown");case"Mute":return void inputManager.trigger("mute");case"Unmute":return void inputManager.trigger("unmute");case"ToggleMute":return void inputManager.trigger("togglemute");case"SetVolume":notifyApp(),playbackManager.setVolume(cmd.Arguments.Volume);break;case"SetAudioStreamIndex":notifyApp(),playbackManager.setAudioStreamIndex(parseInt(cmd.Arguments.Index));break;case"SetSubtitleStreamIndex":notifyApp(),playbackManager.setSubtitleStreamIndex(parseInt(cmd.Arguments.Index));break;case"ToggleFullscreen":return void inputManager.trigger("togglefullscreen");case"GoHome":return void inputManager.trigger("home");case"GoToSettings":return void inputManager.trigger("settings");case"DisplayContent":displayContent(cmd,apiClient);break;case"GoToSearch":return void inputManager.trigger("search");case"DisplayMessage":displayMessage(cmd);break;case"ToggleOsd":break;case"ToggleContextMenu":break;case"TakeScreenShot":break;case"SendKey":break;case"SendString":focusManager.sendText(cmd.Arguments.String);break;default:console.log("processGeneralCommand does not recognize: "+cmd.Name)}notifyApp()}function onWebSocketMessageReceived(e,msg){var apiClient=this;if("Play"===msg.MessageType){notifyApp();var serverId=apiClient.serverInfo().Id;"PlayNext"===msg.Data.PlayCommand?playbackManager.queueNext({ids:msg.Data.ItemIds,serverId:serverId}):"PlayLast"===msg.Data.PlayCommand?playbackManager.queue({ids:msg.Data.ItemIds,serverId:serverId}):playbackManager.play({ids:msg.Data.ItemIds,startPositionTicks:msg.Data.StartPositionTicks,mediaSourceId:msg.Data.MediaSourceId,audioStreamIndex:msg.Data.AudioStreamIndex,subtitleStreamIndex:msg.Data.SubtitleStreamIndex,startIndex:msg.Data.StartIndex,serverId:serverId})}else if("Playstate"===msg.MessageType)"Stop"===msg.Data.Command?inputManager.trigger("stop"):"Pause"===msg.Data.Command?inputManager.trigger("pause"):"Unpause"===msg.Data.Command?inputManager.trigger("play"):"PlayPause"===msg.Data.Command?inputManager.trigger("playpause"):"Seek"===msg.Data.Command?playbackManager.seek(msg.Data.SeekPositionTicks):"NextTrack"===msg.Data.Command?inputManager.trigger("next"):"PreviousTrack"===msg.Data.Command?inputManager.trigger("previous"):notifyApp();else if("GeneralCommand"===msg.MessageType){var cmd=msg.Data;processGeneralCommand(cmd,apiClient)}else if("UserDataChanged"===msg.MessageType){if(msg.Data.UserId===apiClient.getCurrentUserId())for(var i=0,length=msg.Data.UserDataList.length;i=200}function resetThrottle(key){times[key]=(new Date).getTime()}function allowInput(){return!(!isElectron&&document.hidden)&&"Minimized"!==appHost.getWindowState()}function raiseEvent(name,key,keyCode){if(allowInput()){var event=document.createEvent("Event");event.initEvent(name,!0,!0),event.key=key,event.keyCode=keyCode,(document.activeElement||document.body).dispatchEvent(event)}}function clickElement(elem){allowInput()&&elem.click()}function raiseKeyEvent(oldPressedState,newPressedState,key,keyCode,enableRepeatKeyDown,clickonKeyUp){if(newPressedState===!0){var fire=!1;oldPressedState===!1?(fire=!0,resetThrottle(key)):enableRepeatKeyDown&&(fire=throttle(key)),fire&&keyCode&&raiseEvent("keydown",key,keyCode)}else newPressedState===!1&&oldPressedState===!0&&(resetThrottle(key),keyCode&&raiseEvent("keyup",key,keyCode),clickonKeyUp&&clickElement(document.activeElement||window))}function runInputLoop(){var gamepads;navigator.getGamepads?gamepads=navigator.getGamepads():navigator.webkitGetGamepads&&(gamepads=navigator.webkitGetGamepads()),gamepads=gamepads||[];var i,j,len;for(i=0,len=gamepads.length;i_THUMB_STICK_THRESHOLD?_ButtonPressedState.setleftThumbstickRight(!0):leftStickX<-_THUMB_STICK_THRESHOLD?_ButtonPressedState.setleftThumbstickLeft(!0):leftStickY<-_THUMB_STICK_THRESHOLD?_ButtonPressedState.setleftThumbstickUp(!0):leftStickY>_THUMB_STICK_THRESHOLD?_ButtonPressedState.setleftThumbstickDown(!0):(_ButtonPressedState.setleftThumbstickLeft(!1),_ButtonPressedState.setleftThumbstickRight(!1),_ButtonPressedState.setleftThumbstickUp(!1),_ButtonPressedState.setleftThumbstickDown(!1));var buttons=gamepad.buttons;for(j=0,len=buttons.length;j=200}function resetThrottle(key){times[key]=(new Date).getTime()}function allowInput(){return!(!isElectron&&document.hidden)&&"Minimized"!==appHost.getWindowState()}function raiseEvent(name,key,keyCode){if(allowInput()){var event=document.createEvent("Event");event.initEvent(name,!0,!0),event.key=key,event.keyCode=keyCode,(document.activeElement||document.body).dispatchEvent(event)}}function clickElement(elem){allowInput()&&elem.click()}function raiseKeyEvent(oldPressedState,newPressedState,key,keyCode,enableRepeatKeyDown,clickonKeyUp){if(!0===newPressedState){var fire=!1;!1===oldPressedState?(fire=!0,resetThrottle(key)):enableRepeatKeyDown&&(fire=throttle(key)),fire&&keyCode&&raiseEvent("keydown",key,keyCode)}else!1===newPressedState&&!0===oldPressedState&&(resetThrottle(key),keyCode&&raiseEvent("keyup",key,keyCode),clickonKeyUp&&clickElement(document.activeElement||window))}function runInputLoop(){var gamepads;navigator.getGamepads?gamepads=navigator.getGamepads():navigator.webkitGetGamepads&&(gamepads=navigator.webkitGetGamepads()),gamepads=gamepads||[];var i,j,len;for(i=0,len=gamepads.length;i_THUMB_STICK_THRESHOLD?_ButtonPressedState.setleftThumbstickRight(!0):leftStickX<-_THUMB_STICK_THRESHOLD?_ButtonPressedState.setleftThumbstickLeft(!0):leftStickY<-_THUMB_STICK_THRESHOLD?_ButtonPressedState.setleftThumbstickUp(!0):leftStickY>_THUMB_STICK_THRESHOLD?_ButtonPressedState.setleftThumbstickDown(!0):(_ButtonPressedState.setleftThumbstickLeft(!1),_ButtonPressedState.setleftThumbstickRight(!1),_ButtonPressedState.setleftThumbstickUp(!1),_ButtonPressedState.setleftThumbstickDown(!1));var buttons=gamepad.buttons;for(j=0,len=buttons.length;j=5e3&&(isMouseIdle=!0,document.body.classList.add("mouseIdle"),events.trigger(self,"mouseidle"))}function startMouseInterval(){mouseInterval||(mouseInterval=setInterval(onMouseInterval,5e3))}function stopMouseInterval(){var interval=mouseInterval;interval&&(clearInterval(interval),mouseInterval=null),document.body.classList.remove("mouseIdle")}function initMouse(){stopMouseInterval(),dom.removeEventListener(document,window.PointerEvent?"pointermove":"mousemove",onPointerMove,{passive:!0}),layoutManager.mobile||(startMouseInterval(),dom.addEventListener(document,window.PointerEvent?"pointermove":"mousemove",onPointerMove,{passive:!0})),dom.removeEventListener(document,window.PointerEvent?"pointerenter":"mouseenter",onPointerEnter,{capture:!0,passive:!0}),enableFocusWithMouse()&&dom.addEventListener(document,window.PointerEvent?"pointerenter":"mouseenter",onPointerEnter,{capture:!0,passive:!0})}var isMouseIdle,lastPointerMoveData,mouseInterval,self={},lastMouseInputTime=(new Date).getTime();return initMouse(),events.on(layoutManager,"modechange",initMouse),self}); \ No newline at end of file +define(["inputManager","focusManager","browser","layoutManager","events","dom"],function(inputmanager,focusManager,browser,layoutManager,events,dom){"use strict";function mouseIdleTime(){return(new Date).getTime()-lastMouseInputTime}function notifyApp(){inputmanager.notifyMouseMove()}function removeIdleClasses(){var classList=document.body.classList;classList.remove("mouseIdle"),classList.remove("mouseIdle-tv")}function addIdleClasses(){var classList=document.body.classList;classList.add("mouseIdle"),layoutManager.tv&&classList.add("mouseIdle-tv")}function onPointerMove(e){var eventX=e.screenX,eventY=e.screenY;if(void 0!==eventX||void 0!==eventY){var obj=lastPointerMoveData;if(!obj)return void(lastPointerMoveData={x:eventX,y:eventY});Math.abs(eventX-obj.x)<10&&Math.abs(eventY-obj.y)<10||(obj.x=eventX,obj.y=eventY,lastMouseInputTime=(new Date).getTime(),notifyApp(),isMouseIdle&&(isMouseIdle=!1,removeIdleClasses(),events.trigger(self,"mouseactive")))}}function onPointerEnter(e){if("mouse"===(e.pointerType||(layoutManager.mobile?"touch":"mouse"))&&!isMouseIdle){var parent=focusManager.focusableParent(e.target);parent&&focusManager.focus(parent)}}function enableFocusWithMouse(){return!!layoutManager.tv&&(!browser.web0s&&!!browser.tv)}function onMouseInterval(){!isMouseIdle&&mouseIdleTime()>=5e3&&(isMouseIdle=!0,addIdleClasses(),events.trigger(self,"mouseidle"))}function startMouseInterval(){mouseInterval||(mouseInterval=setInterval(onMouseInterval,5e3))}function stopMouseInterval(){var interval=mouseInterval;interval&&(clearInterval(interval),mouseInterval=null),removeIdleClasses()}function initMouse(){stopMouseInterval(),dom.removeEventListener(document,window.PointerEvent?"pointermove":"mousemove",onPointerMove,{passive:!0}),layoutManager.mobile||(startMouseInterval(),dom.addEventListener(document,window.PointerEvent?"pointermove":"mousemove",onPointerMove,{passive:!0})),dom.removeEventListener(document,window.PointerEvent?"pointerenter":"mouseenter",onPointerEnter,{capture:!0,passive:!0}),enableFocusWithMouse()&&dom.addEventListener(document,window.PointerEvent?"pointerenter":"mouseenter",onPointerEnter,{capture:!0,passive:!0})}var isMouseIdle,lastPointerMoveData,mouseInterval,self={},lastMouseInputTime=(new Date).getTime();return initMouse(),events.on(layoutManager,"modechange",initMouse),self}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/inputmanager.js b/dashboard-ui/bower_components/emby-webcomponents/inputmanager.js index b4f5e3b0ae..bd9b8062e0 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/inputmanager.js +++ b/dashboard-ui/bower_components/emby-webcomponents/inputmanager.js @@ -1 +1 @@ -define(["playbackManager","focusManager","appRouter","dom"],function(playbackManager,focusManager,appRouter,dom){"use strict";function notify(){lastInputTime=(new Date).getTime(),handleCommand("unknown")}function notifyMouseMove(){lastInputTime=(new Date).getTime()}function idleTime(){return(new Date).getTime()-lastInputTime}function select(sourceElement){sourceElement.click()}function on(scope,fn){eventListenerCount++,dom.addEventListener(scope,"command",fn,{})}function off(scope,fn){eventListenerCount&&eventListenerCount--,dom.removeEventListener(scope,"command",fn,{})}function checkCommandTime(command){var last=commandTimes[command]||0,now=(new Date).getTime();return!(now-last<1e3)&&(commandTimes[command]=now,!0)}function handleCommand(name,options){lastInputTime=(new Date).getTime();var sourceElement=options?options.sourceElement:null;if(sourceElement&&(sourceElement=focusManager.focusableParent(sourceElement)),sourceElement=sourceElement||document.activeElement||window,eventListenerCount){var customEvent=new CustomEvent("command",{detail:{command:name},bubbles:!0,cancelable:!0}),eventResult=sourceElement.dispatchEvent(customEvent);if(!eventResult)return}switch(name){case"up":focusManager.moveUp(sourceElement);break;case"down":focusManager.moveDown(sourceElement);break;case"left":focusManager.moveLeft(sourceElement);break;case"right":focusManager.moveRight(sourceElement);break;case"home":appRouter.goHome();break;case"settings":appRouter.showSettings();break;case"back":appRouter.back();break;case"forward":break;case"select":select(sourceElement);break;case"pageup":break;case"pagedown":break;case"end":break;case"menu":case"info":break;case"next":playbackManager.nextChapter();break;case"previous":playbackManager.previousChapter();break;case"guide":appRouter.showGuide();break;case"recordedtv":appRouter.showRecordedTV();break;case"record":break;case"livetv":appRouter.showLiveTV();break;case"mute":playbackManager.setMute(!0);break;case"unmute":playbackManager.setMute(!1);break;case"togglemute":playbackManager.toggleMute();break;case"channelup":playbackManager.nextTrack();break;case"channeldown":playbackManager.previousTrack();break;case"volumedown":playbackManager.volumeDown();break;case"volumeup":playbackManager.volumeUp();break;case"play":playbackManager.unpause();break;case"pause":playbackManager.pause();break;case"playpause":playbackManager.playPause();break;case"stop":checkCommandTime("stop")&&playbackManager.stop();break;case"changezoom":playbackManager.toggleAspectRatio();break;case"changeaudiotrack":playbackManager.changeAudioStream();break;case"changesubtitletrack":playbackManager.changeSubtitleStream();break;case"search":appRouter.showSearch();break;case"favorites":appRouter.showFavorites();break;case"fastforward":playbackManager.fastForward();break;case"rewind":playbackManager.rewind();break;case"togglefullscreen":playbackManager.toggleFullscreen();break;case"disabledisplaymirror":playbackManager.enableDisplayMirroring(!1);break;case"enabledisplaymirror":playbackManager.enableDisplayMirroring(!0);break;case"toggledisplaymirror":playbackManager.toggleDisplayMirroring();break;case"togglestats":break;case"movies":appRouter.goHome();break;case"music":appRouter.goHome();break;case"tv":appRouter.goHome();break;case"nowplaying":appRouter.showNowPlaying();break;case"save":break;case"screensaver":break;case"refresh":break;case"changebrightness":break;case"red":break;case"green":break;case"yellow":break;case"blue":break;case"grey":break;case"brown":}}var lastInputTime=(new Date).getTime(),eventListenerCount=0,commandTimes={};return dom.addEventListener(document,"click",notify,{passive:!0}),{trigger:handleCommand,handle:handleCommand,notify:notify,notifyMouseMove:notifyMouseMove,idleTime:idleTime,on:on,off:off}}); \ No newline at end of file +define(["playbackManager","focusManager","appRouter","dom"],function(playbackManager,focusManager,appRouter,dom){"use strict";function notify(){lastInputTime=(new Date).getTime(),handleCommand("unknown")}function notifyMouseMove(){lastInputTime=(new Date).getTime()}function idleTime(){return(new Date).getTime()-lastInputTime}function select(sourceElement){sourceElement.click()}function on(scope,fn){eventListenerCount++,dom.addEventListener(scope,"command",fn,{})}function off(scope,fn){eventListenerCount&&eventListenerCount--,dom.removeEventListener(scope,"command",fn,{})}function checkCommandTime(command){var last=commandTimes[command]||0,now=(new Date).getTime();return!(now-last<1e3)&&(commandTimes[command]=now,!0)}function handleCommand(name,options){lastInputTime=(new Date).getTime();var sourceElement=options?options.sourceElement:null;if(sourceElement&&(sourceElement=focusManager.focusableParent(sourceElement)),sourceElement=sourceElement||document.activeElement||window,eventListenerCount){var customEvent=new CustomEvent("command",{detail:{command:name},bubbles:!0,cancelable:!0});if(!sourceElement.dispatchEvent(customEvent))return}switch(name){case"up":focusManager.moveUp(sourceElement);break;case"down":focusManager.moveDown(sourceElement);break;case"left":focusManager.moveLeft(sourceElement);break;case"right":focusManager.moveRight(sourceElement);break;case"home":appRouter.goHome();break;case"settings":appRouter.showSettings();break;case"back":appRouter.back();break;case"forward":break;case"select":select(sourceElement);break;case"pageup":case"pagedown":case"end":break;case"menu":case"info":break;case"nextchapter":playbackManager.nextChapter();break;case"next":case"nexttrack":playbackManager.nextTrack();break;case"previous":case"previoustrack":playbackManager.previousTrack();break;case"previouschapter":playbackManager.previousChapter();break;case"guide":appRouter.showGuide();break;case"recordedtv":appRouter.showRecordedTV();break;case"record":break;case"livetv":appRouter.showLiveTV();break;case"mute":playbackManager.setMute(!0);break;case"unmute":playbackManager.setMute(!1);break;case"togglemute":playbackManager.toggleMute();break;case"channelup":playbackManager.channelUp();break;case"channeldown":playbackManager.channelDown();break;case"volumedown":playbackManager.volumeDown();break;case"volumeup":playbackManager.volumeUp();break;case"play":playbackManager.unpause();break;case"pause":playbackManager.pause();break;case"playpause":playbackManager.playPause();break;case"stop":checkCommandTime("stop")&&playbackManager.stop();break;case"changezoom":playbackManager.toggleAspectRatio();break;case"changeaudiotrack":playbackManager.changeAudioStream();break;case"changesubtitletrack":playbackManager.changeSubtitleStream();break;case"search":appRouter.showSearch();break;case"favorites":appRouter.showFavorites();break;case"fastforward":playbackManager.fastForward();break;case"rewind":playbackManager.rewind();break;case"togglefullscreen":playbackManager.toggleFullscreen();break;case"disabledisplaymirror":playbackManager.enableDisplayMirroring(!1);break;case"enabledisplaymirror":playbackManager.enableDisplayMirroring(!0);break;case"toggledisplaymirror":playbackManager.toggleDisplayMirroring();break;case"togglestats":break;case"movies":case"music":case"tv":appRouter.goHome();break;case"nowplaying":appRouter.showNowPlaying();break;case"save":case"screensaver":case"refresh":case"changebrightness":case"red":case"green":case"yellow":case"blue":case"grey":case"brown":break;case"repeatnone":playbackManager.setRepeatMode("RepeatNone");break;case"repeatall":playbackManager.setRepeatMode("RepeatAll");break;case"repeatone":playbackManager.setRepeatMode("RepeatOne")}}var lastInputTime=(new Date).getTime(),eventListenerCount=0,commandTimes={};return dom.addEventListener(document,"click",notify,{passive:!0}),{trigger:handleCommand,handle:handleCommand,notify:notify,notifyMouseMove:notifyMouseMove,idleTime:idleTime,on:on,off:off}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/itemcontextmenu.js b/dashboard-ui/bower_components/emby-webcomponents/itemcontextmenu.js index 982a2bb71c..04d17bfbcb 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/itemcontextmenu.js +++ b/dashboard-ui/bower_components/emby-webcomponents/itemcontextmenu.js @@ -1 +1 @@ -define(["apphost","globalize","connectionManager","itemHelper","appRouter","playbackManager","loading","appSettings","browser"],function(appHost,globalize,connectionManager,itemHelper,appRouter,playbackManager,loading,appSettings,browser){"use strict";function getCommands(options){var item=options.item,canPlay=playbackManager.canPlay(item),commands=[];if(browser.operaTv||browser.web0s)return commands;var user=options.user;canPlay&&"Photo"!==item.MediaType&&(options.play!==!1&&commands.push({name:globalize.translate("sharedcomponents#Play"),id:"resume"}),options.playAllFromHere&&"Program"!==item.Type&&"TvChannel"!==item.Type&&commands.push({name:globalize.translate("sharedcomponents#PlayAllFromHere"),id:"playallfromhere"})),playbackManager.canQueue(item)&&(options.queue!==!1&&commands.push({name:globalize.translate("sharedcomponents#AddToPlayQueue"),id:"queue"}),options.queue!==!1&&commands.push({name:globalize.translate("sharedcomponents#PlayNext"),id:"queuenext"})),(item.IsFolder||"MusicArtist"===item.Type||"MusicGenre"===item.Type)&&options.shuffle!==!1&&commands.push({name:globalize.translate("sharedcomponents#Shuffle"),id:"shuffle"}),"Audio"!==item.MediaType&&"MusicAlbum"!==item.Type&&"MusicArtist"!==item.Type&&"MusicGenre"!==item.Type&&"music"!==item.CollectionType||options.instantMix!==!1&&commands.push({name:globalize.translate("sharedcomponents#InstantMix"),id:"instantmix"}),commands.length&&commands.push({divider:!0}),itemHelper.supportsAddingToCollection(item)&&commands.push({name:globalize.translate("sharedcomponents#AddToCollection"),id:"addtocollection"}),itemHelper.supportsAddingToPlaylist(item)&&commands.push({name:globalize.translate("sharedcomponents#AddToPlaylist"),id:"addtoplaylist"}),"Timer"===item.Type&&user.Policy.EnableLiveTvManagement&&options.cancelTimer!==!1&&commands.push({name:globalize.translate("sharedcomponents#CancelRecording"),id:"canceltimer"}),"Recording"===item.Type&&"InProgress"===item.Status&&user.Policy.EnableLiveTvManagement&&options.cancelTimer!==!1&&commands.push({name:globalize.translate("sharedcomponents#CancelRecording"),id:"canceltimer"}),"SeriesTimer"===item.Type&&user.Policy.EnableLiveTvManagement&&options.cancelTimer!==!1&&commands.push({name:globalize.translate("sharedcomponents#CancelSeries"),id:"cancelseriestimer"}),item.CanDelete&&options.deleteItem!==!1&&("Playlist"===item.Type||"BoxSet"===item.Type?commands.push({name:globalize.translate("sharedcomponents#Delete"),id:"delete"}):commands.push({name:globalize.translate("sharedcomponents#DeleteMedia"),id:"delete"})),item.CanDownload&&appHost.supports("filedownload")&&commands.push({name:globalize.translate("sharedcomponents#Download"),id:"download"}),appHost.supports("sync")&&options.syncLocal!==!1&&itemHelper.canSync(user,item)&&commands.push({name:globalize.translate("sharedcomponents#Download"),id:"synclocal"});var canEdit=itemHelper.canEdit(user,item);if(canEdit&&options.edit!==!1&&"SeriesTimer"!==item.Type){var text="Timer"===item.Type||"SeriesTimer"===item.Type?globalize.translate("sharedcomponents#Edit"):globalize.translate("sharedcomponents#EditInfo");commands.push({name:text,id:"edit"})}return itemHelper.canEditImages(user,item)&&options.editImages!==!1&&commands.push({name:globalize.translate("sharedcomponents#EditImages"),id:"editimages"}),canEdit&&("Video"!==item.MediaType||"TvChannel"===item.Type||"Program"===item.Type||"Virtual"===item.LocationType||"Recording"===item.Type&&"Completed"!==item.Status||options.editSubtitles!==!1&&commands.push({name:globalize.translate("sharedcomponents#EditSubtitles"),id:"editsubtitles"})),options.identify!==!1&&itemHelper.canIdentify(user,item)&&commands.push({name:globalize.translate("sharedcomponents#Identify"),id:"identify"}),"Program"===item.Type&&options.record!==!1&&item.TimerId&&commands.push({name:Globalize.translate("sharedcomponents#ManageRecording"),id:"record"}),"Program"===item.Type&&options.record!==!1&&(item.TimerId||commands.push({name:Globalize.translate("sharedcomponents#Record"),id:"record"})),itemHelper.canRefreshMetadata(item,user)&&commands.push({name:globalize.translate("sharedcomponents#RefreshMetadata"),id:"refresh"}),item.PlaylistItemId&&options.playlistId&&commands.push({name:globalize.translate("sharedcomponents#RemoveFromPlaylist"),id:"removefromplaylist"}),options.collectionId&&commands.push({name:globalize.translate("sharedcomponents#RemoveFromCollection"),id:"removefromcollection"}),options.share===!0&&itemHelper.canShare(item,user)&&commands.push({name:globalize.translate("sharedcomponents#Share"),id:"share"}),options.sync!==!1&&itemHelper.canSync(user,item)&&commands.push({name:globalize.translate("sharedcomponents#Sync"),id:"sync"}),options.openAlbum!==!1&&item.AlbumId&&"Photo"!==item.MediaType&&commands.push({name:Globalize.translate("sharedcomponents#ViewAlbum"),id:"album"}),options.openArtist!==!1&&item.ArtistItems&&item.ArtistItems.length&&commands.push({name:Globalize.translate("sharedcomponents#ViewArtist"),id:"artist"}),commands}function getResolveFunction(resolve,id,changed,deleted){return function(){resolve({command:id,updated:changed,deleted:deleted})}}function executeCommand(item,id,options){var itemId=item.Id,serverId=item.ServerId,apiClient=connectionManager.getApiClient(serverId);return new Promise(function(resolve,reject){switch(id){case"addtocollection":require(["collectionEditor"],function(collectionEditor){(new collectionEditor).show({items:[itemId],serverId:serverId}).then(getResolveFunction(resolve,id,!0),getResolveFunction(resolve,id))});break;case"addtoplaylist":require(["playlistEditor"],function(playlistEditor){(new playlistEditor).show({items:[itemId],serverId:serverId}).then(getResolveFunction(resolve,id,!0),getResolveFunction(resolve,id))});break;case"download":require(["fileDownloader"],function(fileDownloader){var downloadHref=apiClient.getItemDownloadUrl(itemId);fileDownloader.download([{url:downloadHref,itemId:itemId,serverId:serverId}]),getResolveFunction(getResolveFunction(resolve,id),id)()});break;case"editsubtitles":require(["subtitleEditor"],function(subtitleEditor){subtitleEditor.show(itemId,serverId).then(getResolveFunction(resolve,id,!0),getResolveFunction(resolve,id))});break;case"edit":editItem(apiClient,item).then(getResolveFunction(resolve,id,!0),getResolveFunction(resolve,id));break;case"editimages":require(["imageEditor"],function(imageEditor){imageEditor.show({itemId:itemId,serverId:serverId}).then(getResolveFunction(resolve,id,!0),getResolveFunction(resolve,id))});break;case"identify":require(["itemIdentifier"],function(itemIdentifier){itemIdentifier.show(itemId,serverId).then(getResolveFunction(resolve,id,!0),getResolveFunction(resolve,id))});break;case"refresh":refresh(apiClient,itemId),getResolveFunction(resolve,id)();break;case"open":appRouter.showItem(item),getResolveFunction(resolve,id)();break;case"play":play(item,!1),getResolveFunction(resolve,id)();break;case"resume":play(item,!0),getResolveFunction(resolve,id)();break;case"queue":play(item,!1,!0),getResolveFunction(resolve,id)();break;case"queuenext":play(item,!1,!0,!0),getResolveFunction(resolve,id)();break;case"record":require(["recordingCreator"],function(recordingCreator){recordingCreator.show(itemId,serverId).then(getResolveFunction(resolve,id,!0),getResolveFunction(resolve,id))});break;case"shuffle":playbackManager.shuffle(item),getResolveFunction(resolve,id)();break;case"instantmix":playbackManager.instantMix(item),getResolveFunction(resolve,id)();break;case"delete":deleteItem(apiClient,item).then(getResolveFunction(resolve,id,!0,!0),getResolveFunction(resolve,id));break;case"share":require(["sharingmanager"],function(sharingManager){sharingManager.showMenu({serverId:serverId,itemId:itemId}).then(getResolveFunction(resolve,id))});break;case"album":appRouter.showItem(item.AlbumId,item.ServerId),getResolveFunction(resolve,id)();break;case"artist":appRouter.showItem(item.ArtistItems[0].Id,item.ServerId),getResolveFunction(resolve,id)();break;case"playallfromhere":getResolveFunction(resolve,id)();break;case"queueallfromhere":getResolveFunction(resolve,id)();break;case"sync":require(["syncDialog"],function(syncDialog){syncDialog.showMenu({items:[item],serverId:serverId})}),getResolveFunction(resolve,id)();break;case"synclocal":require(["syncDialog"],function(syncDialog){syncDialog.showMenu({items:[item],isLocalSync:!0,serverId:serverId})}),getResolveFunction(resolve,id)();break;case"removefromplaylist":apiClient.ajax({url:apiClient.getUrl("Playlists/"+options.playlistId+"/Items",{EntryIds:[item.PlaylistItemId].join(",")}),type:"DELETE"}).then(function(){getResolveFunction(resolve,id,!0)()});break;case"removefromcollection":apiClient.ajax({type:"DELETE",url:apiClient.getUrl("Collections/"+options.collectionId+"/Items",{Ids:[item.Id].join(",")})}).then(function(){getResolveFunction(resolve,id,!0)()});break;case"canceltimer":deleteTimer(apiClient,item,resolve,id);break;case"cancelseriestimer":deleteSeriesTimer(apiClient,item,resolve,id);break;default:reject()}})}function deleteTimer(apiClient,item,resolve,command){require(["recordingHelper"],function(recordingHelper){var timerId=item.TimerId||item.Id;recordingHelper.cancelTimerWithConfirmation(timerId,item.ServerId).then(function(){getResolveFunction(resolve,command,!0)()})})}function deleteSeriesTimer(apiClient,item,resolve,command){require(["recordingHelper"],function(recordingHelper){recordingHelper.cancelSeriesTimerWithConfirmation(item.Id,item.ServerId).then(function(){getResolveFunction(resolve,command,!0)()})})}function play(item,resume,queue,queueNext){var method=queue?queueNext?"queueNext":"queue":"play",startPosition=0;resume&&item.UserData&&item.UserData.PlaybackPositionTicks&&(startPosition=item.UserData.PlaybackPositionTicks),"Program"===item.Type?playbackManager[method]({ids:[item.ChannelId],startPositionTicks:startPosition,serverId:item.ServerId}):playbackManager[method]({items:[item],startPositionTicks:startPosition})}function editItem(apiClient,item){return new Promise(function(resolve,reject){var serverId=apiClient.serverInfo().Id;"Timer"===item.Type?require(["recordingEditor"],function(recordingEditor){recordingEditor.show(item.Id,serverId).then(resolve,reject)}):"SeriesTimer"===item.Type?require(["seriesRecordingEditor"],function(recordingEditor){recordingEditor.show(item.Id,serverId).then(resolve,reject)}):require(["metadataEditor"],function(metadataEditor){metadataEditor.show(item.Id,serverId).then(resolve,reject)})})}function deleteItem(apiClient,item){return new Promise(function(resolve,reject){require(["deleteHelper"],function(deleteHelper){deleteHelper.deleteItem({item:item,navigate:!1}).then(function(){resolve(!0)},reject)})})}function refresh(apiClient,itemId){require(["refreshDialog"],function(refreshDialog){new refreshDialog({itemIds:[itemId],serverId:apiClient.serverInfo().Id}).show()})}function show(options){var commands=getCommands(options);return commands.length?new Promise(function(resolve,reject){require(["actionsheet"],function(actionSheet){actionSheet.show({items:commands,positionTo:options.positionTo}).then(function(id){executeCommand(options.item,id,options).then(resolve)},reject)})}):Promise.reject()}return{getCommands:getCommands,show:show}}); \ No newline at end of file +define(["apphost","globalize","connectionManager","itemHelper","appRouter","playbackManager","loading","appSettings","browser","actionsheet"],function(appHost,globalize,connectionManager,itemHelper,appRouter,playbackManager,loading,appSettings,browser,actionsheet){"use strict";function getCommands(options){var item=options.item,canPlay=playbackManager.canPlay(item),commands=[],user=options.user,restrictOptions=(browser.operaTv||browser.web0s)&&!user.Policy.IsAdministrator;canPlay&&"Photo"!==item.MediaType&&(!1!==options.play&&commands.push({name:globalize.translate("sharedcomponents#Play"),id:"resume"}),options.playAllFromHere&&"Program"!==item.Type&&"TvChannel"!==item.Type&&commands.push({name:globalize.translate("sharedcomponents#PlayAllFromHere"),id:"playallfromhere"})),playbackManager.canQueue(item)&&(!1!==options.queue&&commands.push({name:globalize.translate("sharedcomponents#AddToPlayQueue"),id:"queue"}),!1!==options.queue&&commands.push({name:globalize.translate("sharedcomponents#PlayNext"),id:"queuenext"})),(item.IsFolder||"MusicArtist"===item.Type||"MusicGenre"===item.Type)&&"livetv"!==item.CollectionType&&!1!==options.shuffle&&commands.push({name:globalize.translate("sharedcomponents#Shuffle"),id:"shuffle"}),"Audio"!==item.MediaType&&"MusicAlbum"!==item.Type&&"MusicArtist"!==item.Type&&"MusicGenre"!==item.Type||!1===options.instantMix||itemHelper.isLocalItem(item)||commands.push({name:globalize.translate("sharedcomponents#InstantMix"),id:"instantmix"}),commands.length&&commands.push({divider:!0}),restrictOptions||(itemHelper.supportsAddingToCollection(item)&&commands.push({name:globalize.translate("sharedcomponents#AddToCollection"),id:"addtocollection"}),itemHelper.supportsAddingToPlaylist(item)&&commands.push({name:globalize.translate("sharedcomponents#AddToPlaylist"),id:"addtoplaylist"})),"Timer"===item.Type&&user.Policy.EnableLiveTvManagement&&!1!==options.cancelTimer&&commands.push({name:globalize.translate("sharedcomponents#CancelRecording"),id:"canceltimer"}),"Recording"===item.Type&&"InProgress"===item.Status&&user.Policy.EnableLiveTvManagement&&!1!==options.cancelTimer&&commands.push({name:globalize.translate("sharedcomponents#CancelRecording"),id:"canceltimer"}),"SeriesTimer"===item.Type&&user.Policy.EnableLiveTvManagement&&!1!==options.cancelTimer&&commands.push({name:globalize.translate("sharedcomponents#CancelSeries"),id:"cancelseriestimer"}),itemHelper.canConvert(item,user,connectionManager.getApiClient(item))&&commands.push({name:globalize.translate("sharedcomponents#Convert"),id:"convert"}),item.CanDelete&&!1!==options.deleteItem&&("Playlist"===item.Type||"BoxSet"===item.Type?commands.push({name:globalize.translate("sharedcomponents#Delete"),id:"delete"}):commands.push({name:globalize.translate("sharedcomponents#DeleteMedia"),id:"delete"})),item.CanDownload&&appHost.supports("filedownload")&&commands.push({name:globalize.translate("sharedcomponents#Download"),id:"download"}),appHost.supports("sync")&&!1!==options.syncLocal&&itemHelper.canSync(user,item)&&commands.push({name:globalize.translate("sharedcomponents#Download"),id:"synclocal"});var canEdit=itemHelper.canEdit(user,item);if(canEdit&&!1!==options.edit&&"SeriesTimer"!==item.Type){var text="Timer"===item.Type||"SeriesTimer"===item.Type?globalize.translate("sharedcomponents#Edit"):globalize.translate("sharedcomponents#EditMetadata");commands.push({name:text,id:"edit"})}return itemHelper.canEditImages(user,item)&&!1!==options.editImages&&commands.push({name:globalize.translate("sharedcomponents#EditImages"),id:"editimages"}),canEdit&&("Video"!==item.MediaType||"TvChannel"===item.Type||"Program"===item.Type||"Virtual"===item.LocationType||"Recording"===item.Type&&"Completed"!==item.Status||!1!==options.editSubtitles&&commands.push({name:globalize.translate("sharedcomponents#EditSubtitles"),id:"editsubtitles"})),!1!==options.identify&&itemHelper.canIdentify(user,item)&&commands.push({name:globalize.translate("sharedcomponents#Identify"),id:"identify"}),"Program"===item.Type&&!1!==options.record&&item.TimerId&&commands.push({name:Globalize.translate("sharedcomponents#ManageRecording"),id:"record"}),"Program"===item.Type&&!1!==options.record&&(item.TimerId||commands.push({name:Globalize.translate("sharedcomponents#Record"),id:"record"})),itemHelper.canRefreshMetadata(item,user)&&commands.push({name:globalize.translate("sharedcomponents#RefreshMetadata"),id:"refresh"}),item.PlaylistItemId&&options.playlistId&&commands.push({name:globalize.translate("sharedcomponents#RemoveFromPlaylist"),id:"removefromplaylist"}),options.collectionId&&commands.push({name:globalize.translate("sharedcomponents#RemoveFromCollection"),id:"removefromcollection"}),restrictOptions||!0===options.share&&itemHelper.canShare(item,user)&&commands.push({name:globalize.translate("sharedcomponents#Share"),id:"share"}),!1!==options.sync&&itemHelper.canSync(user,item)&&commands.push({name:globalize.translate("sharedcomponents#Sync"),id:"sync"}),!1!==options.openAlbum&&item.AlbumId&&"Photo"!==item.MediaType&&commands.push({name:Globalize.translate("sharedcomponents#ViewAlbum"),id:"album"}),!1!==options.openArtist&&item.ArtistItems&&item.ArtistItems.length&&commands.push({name:Globalize.translate("sharedcomponents#ViewArtist"),id:"artist"}),commands}function getResolveFunction(resolve,id,changed,deleted){return function(){resolve({command:id,updated:changed,deleted:deleted})}}function executeCommand(item,id,options){var itemId=item.Id,serverId=item.ServerId,apiClient=connectionManager.getApiClient(serverId);return new Promise(function(resolve,reject){switch(id){case"addtocollection":require(["collectionEditor"],function(collectionEditor){(new collectionEditor).show({items:[itemId],serverId:serverId}).then(getResolveFunction(resolve,id,!0),getResolveFunction(resolve,id))});break;case"addtoplaylist":require(["playlistEditor"],function(playlistEditor){(new playlistEditor).show({items:[itemId],serverId:serverId}).then(getResolveFunction(resolve,id,!0),getResolveFunction(resolve,id))});break;case"download":require(["fileDownloader"],function(fileDownloader){var downloadHref=apiClient.getItemDownloadUrl(itemId);fileDownloader.download([{url:downloadHref,itemId:itemId,serverId:serverId}]),getResolveFunction(getResolveFunction(resolve,id),id)()});break;case"editsubtitles":require(["subtitleEditor"],function(subtitleEditor){subtitleEditor.show(itemId,serverId).then(getResolveFunction(resolve,id,!0),getResolveFunction(resolve,id))});break;case"edit":editItem(apiClient,item).then(getResolveFunction(resolve,id,!0),getResolveFunction(resolve,id));break;case"editimages":require(["imageEditor"],function(imageEditor){imageEditor.show({itemId:itemId,serverId:serverId}).then(getResolveFunction(resolve,id,!0),getResolveFunction(resolve,id))});break;case"identify":require(["itemIdentifier"],function(itemIdentifier){itemIdentifier.show(itemId,serverId).then(getResolveFunction(resolve,id,!0),getResolveFunction(resolve,id))});break;case"refresh":refresh(apiClient,item),getResolveFunction(resolve,id)();break;case"open":appRouter.showItem(item),getResolveFunction(resolve,id)();break;case"play":play(item,!1),getResolveFunction(resolve,id)();break;case"resume":play(item,!0),getResolveFunction(resolve,id)();break;case"queue":play(item,!1,!0),getResolveFunction(resolve,id)();break;case"queuenext":play(item,!1,!0,!0),getResolveFunction(resolve,id)();break;case"record":require(["recordingCreator"],function(recordingCreator){recordingCreator.show(itemId,serverId).then(getResolveFunction(resolve,id,!0),getResolveFunction(resolve,id))});break;case"shuffle":playbackManager.shuffle(item),getResolveFunction(resolve,id)();break;case"instantmix":playbackManager.instantMix(item),getResolveFunction(resolve,id)();break;case"delete":deleteItem(apiClient,item).then(getResolveFunction(resolve,id,!0,!0),getResolveFunction(resolve,id));break;case"share":navigator.share({title:item.Name,text:item.Overview,url:"https://emby.media"});break;case"album":appRouter.showItem(item.AlbumId,item.ServerId),getResolveFunction(resolve,id)();break;case"artist":appRouter.showItem(item.ArtistItems[0].Id,item.ServerId),getResolveFunction(resolve,id)();break;case"playallfromhere":case"queueallfromhere":getResolveFunction(resolve,id)();break;case"convert":require(["syncDialog"],function(syncDialog){syncDialog.showMenu({items:[item],serverId:serverId,mode:"convert"})}),getResolveFunction(resolve,id)();break;case"sync":require(["syncDialog"],function(syncDialog){syncDialog.showMenu({items:[item],serverId:serverId,mode:"sync"})}),getResolveFunction(resolve,id)();break;case"synclocal":require(["syncDialog"],function(syncDialog){syncDialog.showMenu({items:[item],serverId:serverId,mode:"download"})}),getResolveFunction(resolve,id)();break;case"removefromplaylist":apiClient.ajax({url:apiClient.getUrl("Playlists/"+options.playlistId+"/Items",{EntryIds:[item.PlaylistItemId].join(",")}),type:"DELETE"}).then(function(){getResolveFunction(resolve,id,!0)()});break;case"removefromcollection":apiClient.ajax({type:"DELETE",url:apiClient.getUrl("Collections/"+options.collectionId+"/Items",{Ids:[item.Id].join(",")})}).then(function(){getResolveFunction(resolve,id,!0)()});break;case"canceltimer":deleteTimer(apiClient,item,resolve,id);break;case"cancelseriestimer":deleteSeriesTimer(apiClient,item,resolve,id);break;default:reject()}})}function deleteTimer(apiClient,item,resolve,command){require(["recordingHelper"],function(recordingHelper){var timerId=item.TimerId||item.Id;recordingHelper.cancelTimerWithConfirmation(timerId,item.ServerId).then(function(){getResolveFunction(resolve,command,!0)()})})}function deleteSeriesTimer(apiClient,item,resolve,command){require(["recordingHelper"],function(recordingHelper){recordingHelper.cancelSeriesTimerWithConfirmation(item.Id,item.ServerId).then(function(){getResolveFunction(resolve,command,!0)()})})}function play(item,resume,queue,queueNext){var method=queue?queueNext?"queueNext":"queue":"play",startPosition=0;resume&&item.UserData&&item.UserData.PlaybackPositionTicks&&(startPosition=item.UserData.PlaybackPositionTicks),"Program"===item.Type?playbackManager[method]({ids:[item.ChannelId],startPositionTicks:startPosition,serverId:item.ServerId}):playbackManager[method]({items:[item],startPositionTicks:startPosition})}function editItem(apiClient,item){return new Promise(function(resolve,reject){var serverId=apiClient.serverInfo().Id;"Timer"===item.Type?require(["recordingEditor"],function(recordingEditor){recordingEditor.show(item.Id,serverId).then(resolve,reject)}):"SeriesTimer"===item.Type?require(["seriesRecordingEditor"],function(recordingEditor){recordingEditor.show(item.Id,serverId).then(resolve,reject)}):require(["metadataEditor"],function(metadataEditor){metadataEditor.show(item.Id,serverId).then(resolve,reject)})})}function deleteItem(apiClient,item){return new Promise(function(resolve,reject){require(["deleteHelper"],function(deleteHelper){deleteHelper.deleteItem({item:item,navigate:!1}).then(function(){resolve(!0)},reject)})})}function refresh(apiClient,item){require(["refreshDialog"],function(refreshDialog){new refreshDialog({itemIds:[item.Id],serverId:apiClient.serverInfo().Id,mode:"CollectionFolder"===item.Type?"scan":null}).show()})}function show(options){var commands=getCommands(options);return commands.length?actionsheet.show({items:commands,positionTo:options.positionTo,resolveOnClick:["share"]}).then(function(id){return executeCommand(options.item,id,options)}):Promise.reject()}return{getCommands:getCommands,show:show}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/itemhelper.js b/dashboard-ui/bower_components/emby-webcomponents/itemhelper.js index eb89dd16b1..92bfb9d570 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/itemhelper.js +++ b/dashboard-ui/bower_components/emby-webcomponents/itemhelper.js @@ -1 +1 @@ -define(["apphost","globalize"],function(appHost,globalize){"use strict";function getDisplayName(item,options){if(!item)throw new Error("null item passed into getDisplayName");options=options||{},"Timer"===item.Type&&(item=item.ProgramInfo||item);var name=("Program"!==item.Type&&"Recording"!==item.Type||!item.IsSeries&&!item.EpisodeTitle?item.Name:item.EpisodeTitle)||"";if("TvChannel"===item.Type)return item.ChannelNumber?item.ChannelNumber+" "+name:name;if("Episode"===item.Type&&0===item.ParentIndexNumber)name=globalize.translate("sharedcomponents#ValueSpecialEpisodeName",name);else if(("Episode"===item.Type||"Program"===item.Type)&&null!=item.IndexNumber&&null!=item.ParentIndexNumber&&options.includeIndexNumber!==!1){var displayIndexNumber=item.IndexNumber,number=displayIndexNumber,nameSeparator=" - ";options.includeParentInfo!==!1?number="S"+item.ParentIndexNumber+":E"+number:nameSeparator=". ",item.IndexNumberEnd&&(displayIndexNumber=item.IndexNumberEnd,number+="-"+displayIndexNumber),number&&(name=name?number+nameSeparator+name:number)}return name}function supportsAddingToCollection(item){var invalidTypes=["Person","Genre","MusicGenre","Studio","GameGenre","BoxSet","Playlist","UserView","CollectionFolder","Audio","Program","Timer","SeriesTimer"];return("Recording"!==item.Type||"Completed"===item.Status)&&(!item.CollectionType&&invalidTypes.indexOf(item.Type)===-1&&"Photo"!==item.MediaType&&!isLocalItem(item))}function supportsAddingToPlaylist(item){return"Program"!==item.Type&&("TvChannel"!==item.Type&&("Timer"!==item.Type&&("SeriesTimer"!==item.Type&&("Photo"!==item.MediaType&&(("Recording"!==item.Type||"Completed"===item.Status)&&(!isLocalItem(item)&&(item.MediaType||item.IsFolder||"Genre"===item.Type||"MusicGenre"===item.Type||"MusicArtist"===item.Type)))))))}function canEdit(user,item){var itemType=item.Type;return"UserRootFolder"!==itemType&&"UserView"!==itemType&&("Program"!==itemType&&(("Recording"!==item.Type||"Completed"===item.Status)&&(!isLocalItem(item)&&user.Policy.IsAdministrator)))}function isLocalItem(item){return!(!item||!item.Id||0!==item.Id.indexOf("local"))}return{getDisplayName:getDisplayName,supportsAddingToCollection:supportsAddingToCollection,supportsAddingToPlaylist:supportsAddingToPlaylist,isLocalItem:isLocalItem,canIdentify:function(user,item){var itemType=item.Type;return!("Movie"!==itemType&&"Trailer"!==itemType&&"Series"!==itemType&&"Game"!==itemType&&"BoxSet"!==itemType&&"Person"!==itemType&&"Book"!==itemType&&"MusicAlbum"!==itemType&&"MusicArtist"!==itemType||!user.Policy.IsAdministrator||isLocalItem(item))},canEdit:canEdit,canEditImages:function(user,item){var itemType=item.Type;return"Photo"!==item.MediaType&&("UserView"===itemType?!!user.Policy.IsAdministrator:("Recording"!==item.Type||"Completed"===item.Status)&&("Timer"!==itemType&&"SeriesTimer"!==itemType&&canEdit(user,item)&&!isLocalItem(item)))},canSync:function(user,item){return!(user&&!user.Policy.EnableContentDownloading)&&(!isLocalItem(item)&&item.SupportsSync)},canShare:function(item,user){return"Program"!==item.Type&&("TvChannel"!==item.Type&&("Timer"!==item.Type&&("SeriesTimer"!==item.Type&&(("Recording"!==item.Type||"Completed"===item.Status)&&(!isLocalItem(item)&&(user.Policy.EnablePublicSharing&&appHost.supports("sharing")))))))},enableDateAddedDisplay:function(item){return!item.IsFolder&&item.MediaType&&"Program"!==item.Type&&"TvChannel"!==item.Type&&"Trailer"!==item.Type},canMarkPlayed:function(item){if("Program"===item.Type)return!1;if("Video"===item.MediaType){if("TvChannel"!==item.Type)return!0}else if("Audio"===item.MediaType){if("AudioPodcast"===item.Type)return!0;if("AudioBook"===item.Type)return!0}return"Series"===item.Type||"Season"===item.Type||"BoxSet"===item.Type||"Game"===item.MediaType||"Book"===item.MediaType||"Recording"===item.MediaType},canRate:function(item){return"Program"!==item.Type&&"Timer"!==item.Type&&"SeriesTimer"!==item.Type},canRefreshMetadata:function(item,user){return!(!user.Policy.IsAdministrator||"Timer"===item.Type||"SeriesTimer"===item.Type||"Program"===item.Type||"TvChannel"===item.Type||"Recording"===item.Type&&"Completed"!==item.Status||isLocalItem(item))},supportsMediaSourceSelection:function(item){return"Video"===item.MediaType&&("TvChannel"!==item.Type&&(!(!item.MediaSources||1===item.MediaSources.length&&"Placeholder"===item.MediaSources[0].Type)&&(!item.SourceType||"Library"===item.SourceType)))}}}); \ No newline at end of file +define(["apphost","globalize"],function(appHost,globalize){"use strict";function getDisplayName(item,options){if(!item)throw new Error("null item passed into getDisplayName");options=options||{},"Timer"===item.Type&&(item=item.ProgramInfo||item);var name=("Program"!==item.Type&&"Recording"!==item.Type||!item.IsSeries&&!item.EpisodeTitle?item.Name:item.EpisodeTitle)||"";if("TvChannel"===item.Type)return item.ChannelNumber?item.ChannelNumber+" "+name:name;if("Episode"===item.Type&&0===item.ParentIndexNumber)name=globalize.translate("sharedcomponents#ValueSpecialEpisodeName",name);else if(("Episode"===item.Type||"Program"===item.Type)&&null!=item.IndexNumber&&null!=item.ParentIndexNumber&&!1!==options.includeIndexNumber){var displayIndexNumber=item.IndexNumber,number=displayIndexNumber,nameSeparator=" - ";!1!==options.includeParentInfo?number="S"+item.ParentIndexNumber+":E"+number:nameSeparator=". ",item.IndexNumberEnd&&(displayIndexNumber=item.IndexNumberEnd,number+="-"+displayIndexNumber),number&&(name=name?number+nameSeparator+name:number)}return name}function supportsAddingToCollection(item){var invalidTypes=["Genre","MusicGenre","Studio","GameGenre","UserView","CollectionFolder","Audio","Program","Timer","SeriesTimer"];return("Recording"!==item.Type||"Completed"===item.Status)&&(!item.CollectionType&&-1===invalidTypes.indexOf(item.Type)&&"Photo"!==item.MediaType&&!isLocalItem(item))}function supportsAddingToPlaylist(item){return"Program"!==item.Type&&("TvChannel"!==item.Type&&("Timer"!==item.Type&&("SeriesTimer"!==item.Type&&("Photo"!==item.MediaType&&(("Recording"!==item.Type||"Completed"===item.Status)&&(!isLocalItem(item)&&("livetv"!==item.CollectionType&&(item.MediaType||item.IsFolder||"Genre"===item.Type||"MusicGenre"===item.Type||"MusicArtist"===item.Type))))))))}function canEdit(user,item){var itemType=item.Type;return"UserRootFolder"!==itemType&&"UserView"!==itemType&&("Program"!==itemType&&("Timer"!==itemType&&("SeriesTimer"!==itemType&&(("Recording"!==item.Type||"Completed"===item.Status)&&(!isLocalItem(item)&&user.Policy.IsAdministrator)))))}function isLocalItem(item){return!(!item||!item.Id||0!==item.Id.indexOf("local"))}return{getDisplayName:getDisplayName,supportsAddingToCollection:supportsAddingToCollection,supportsAddingToPlaylist:supportsAddingToPlaylist,isLocalItem:isLocalItem,canIdentify:function(user,item){var itemType=item.Type;return!("Movie"!==itemType&&"Trailer"!==itemType&&"Series"!==itemType&&"Game"!==itemType&&"BoxSet"!==itemType&&"Person"!==itemType&&"Book"!==itemType&&"MusicAlbum"!==itemType&&"MusicArtist"!==itemType&&"MusicVideo"!==itemType||!user.Policy.IsAdministrator||isLocalItem(item))},canEdit:canEdit,canEditImages:function(user,item){var itemType=item.Type;return"Photo"!==item.MediaType&&("UserView"===itemType?!!user.Policy.IsAdministrator:("Recording"!==item.Type||"Completed"===item.Status)&&("Timer"!==itemType&&"SeriesTimer"!==itemType&&canEdit(user,item)&&!isLocalItem(item)))},canSync:function(user,item){return!(user&&!user.Policy.EnableContentDownloading)&&(!isLocalItem(item)&&item.SupportsSync)},canShare:function(item,user){return"Program"!==item.Type&&("TvChannel"!==item.Type&&("Timer"!==item.Type&&("SeriesTimer"!==item.Type&&(("Recording"!==item.Type||"Completed"===item.Status)&&(!isLocalItem(item)&&(user.Policy.EnablePublicSharing&&appHost.supports("sharing")))))))},enableDateAddedDisplay:function(item){return!item.IsFolder&&item.MediaType&&"Program"!==item.Type&&"TvChannel"!==item.Type&&"Trailer"!==item.Type},canMarkPlayed:function(item){if("Program"===item.Type)return!1;if("Video"===item.MediaType){if("TvChannel"!==item.Type)return!0}else if("Audio"===item.MediaType){if("AudioPodcast"===item.Type)return!0;if("AudioBook"===item.Type)return!0}return"Series"===item.Type||"Season"===item.Type||"BoxSet"===item.Type||"Game"===item.MediaType||"Book"===item.MediaType||"Recording"===item.MediaType},canRate:function(item){return"Program"!==item.Type&&"Timer"!==item.Type&&"SeriesTimer"!==item.Type&&"CollectionFolder"!==item.Type&&"UserView"!==item.Type&&"Channel"!==item.Type&&"Season"!==item.Type&&"Studio"!==item.Type&&!!item.UserData},canConvert:function(item,user){if(!user.Policy.EnableMediaConversion)return!1;if(isLocalItem(item))return!1;var mediaType=item.MediaType;if("Book"===mediaType||"Photo"===mediaType||"Game"===mediaType||"Audio"===mediaType)return!1;if("livetv"===item.CollectionType)return!1;var type=item.Type;return"Channel"!==type&&"Person"!==type&&"Year"!==type&&"Program"!==type&&"Timer"!==type&&"SeriesTimer"!==type&&(!("Virtual"===item.LocationType&&!item.IsFolder)&&!item.IsPlaceHolder)},canRefreshMetadata:function(item,user){if(user.Policy.IsAdministrator){if("livetv"===item.CollectionType)return!1;if("Timer"!==item.Type&&"SeriesTimer"!==item.Type&&"Program"!==item.Type&&"TvChannel"!==item.Type&&("Recording"!==item.Type||"Completed"===item.Status)&&!isLocalItem(item))return!0}return!1},supportsMediaSourceSelection:function(item){return"Video"===item.MediaType&&("TvChannel"!==item.Type&&(!(!item.MediaSources||1===item.MediaSources.length&&"Placeholder"===item.MediaSources[0].Type)&&(!1!==item.EnableMediaSourceDisplay&&(null!=item.EnableMediaSourceDisplay||!item.SourceType||"Library"===item.SourceType))))}}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/itemhovermenu/itemhovermenu.css b/dashboard-ui/bower_components/emby-webcomponents/itemhovermenu/itemhovermenu.css deleted file mode 100644 index 3ce6e583d1..0000000000 --- a/dashboard-ui/bower_components/emby-webcomponents/itemhovermenu/itemhovermenu.css +++ /dev/null @@ -1 +0,0 @@ -.cardOverlayTarget{position:absolute;right:0;left:0;bottom:0;top:0;background-color:rgba(0,0,0,.85);z-index:1;line-height:initial;font-size:initial;-webkit-transition:-webkit-transform .2s ease-out;-o-transition:transform .2s ease-out;transition:transform .2s ease-out;-webkit-transform:translateY(100%);transform:translateY(100%)}.cardOverlayTarget-open{-webkit-transform:none;transform:none}.cardOverlayInner{padding:.5em;color:#fff;text-align:left;font-size:90%}.cardOverlayMediaInfo{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-flex-wrap:wrap;flex-wrap:wrap;margin:1em 0;color:#ddd}.cardOverlayButtons{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-flex-wrap:wrap;flex-wrap:wrap}.cardOverlayFab{margin-right:.25em!important;background:#404040;color:#fff}.withHoverMenu{overflow:hidden} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/itemhovermenu/itemhovermenu.js b/dashboard-ui/bower_components/emby-webcomponents/itemhovermenu/itemhovermenu.js deleted file mode 100644 index 3fc3db063b..0000000000 --- a/dashboard-ui/bower_components/emby-webcomponents/itemhovermenu/itemhovermenu.js +++ /dev/null @@ -1 +0,0 @@ -define(["layoutManager","connectionManager","itemHelper","mediaInfo","playbackManager","globalize","dom","apphost","css!./itemhovermenu","emby-button","emby-playstatebutton","emby-ratingbutton"],function(layoutManager,connectionManager,itemHelper,mediaInfo,playbackManager,globalize,dom,appHost){"use strict";function onPointerLeave(e){var pointerType=e.pointerType||(layoutManager.mobile?"touch":"mouse");if("mouse"===pointerType){var elem=e.target;showOverlayTimeout&&(clearTimeout(showOverlayTimeout),showOverlayTimeout=null),elem=elem.classList.contains("cardOverlayTarget")?elem:elem.querySelector(".cardOverlayTarget"),elem&&slideDownToHide(elem)}}function onSlideTransitionComplete(){this.classList.add("hide")}function slideDownToHide(elem){elem.classList.contains("hide")||(dom.addEventListener(elem,dom.whichTransitionEvent(),onSlideTransitionComplete,{once:!0}),elem.classList.remove("cardOverlayTarget-open"))}function slideUpToShow(elem){dom.removeEventListener(elem,dom.whichTransitionEvent(),onSlideTransitionComplete,{once:!0}),elem.classList.remove("hide"),void elem.offsetWidth,elem.classList.add("cardOverlayTarget-open")}function getOverlayHtml(apiClient,item,card){var html="";html+='
';var className=card.className.toLowerCase(),isMiniItem=className.indexOf("mini")!==-1,isSmallItem=isMiniItem||className.indexOf("small")!==-1,isPortrait=className.indexOf("portrait")!==-1,parentName=isSmallItem||isMiniItem||isPortrait?null:item.SeriesName,name=item.EpisodeTitle?item.Name:itemHelper.getDisplayName(item);html+="
";var imgUrl,logoHeight=26;parentName&&item.ParentLogoItemId?(imgUrl=apiClient.getScaledImageUrl(item.ParentLogoItemId,{maxHeight:logoHeight,type:"logo",tag:item.ParentLogoImageTag}),html+=''):item.ImageTags.Logo?(imgUrl=apiClient.getScaledImageUrl(item.Id,{maxHeight:logoHeight,type:"logo",tag:item.ImageTags.Logo}),html+=''):html+=parentName||name,html+="
",parentName?(html+="

",html+=name,html+="

"):isSmallItem||isMiniItem||(html+='
',html+=mediaInfo.getPrimaryMediaInfoHtml(item,{endsAt:!1}),html+="
"),html+='
',playbackManager.canPlay(item)&&(html+=''),item.LocalTrailerCount&&(html+='');var moreIcon="dots-horiz"===appHost.moreIcon?"":"";html+='";var userData=item.UserData||{};if(itemHelper.canMarkPlayed(item)&&(html+=''),itemHelper.canRate(item)){var likes=null==userData.Likes?"":userData.Likes;html+=''}return html+="
",html+="
"}function onCardOverlayButtonsClick(e){var button=dom.parentWithClass(e.target,"btnUserData");button&&e.stopPropagation()}function onShowTimerExpired(elem){var innerElem=elem.querySelector(".cardOverlayTarget");if(!innerElem){innerElem=document.createElement("div"),innerElem.classList.add("hide"),innerElem.classList.add("cardOverlayTarget"),innerElem.classList.add("itemAction"),innerElem.setAttribute("data-action","link");var appendTo=elem.querySelector("div.cardContent")||elem.querySelector(".cardScalable")||elem.querySelector(".cardBox");appendTo||(appendTo=elem),appendTo.classList.add("withHoverMenu"),appendTo.appendChild(innerElem)}var dataElement=dom.parentWithAttribute(elem,"data-id");if(dataElement){var id=dataElement.getAttribute("data-id"),type=dataElement.getAttribute("data-type");if("Timer"!==type&&"SeriesTimer"!==type&&"Program"!==type){var serverId=dataElement.getAttribute("data-serverid"),apiClient=connectionManager.getApiClient(serverId);apiClient.getItem(apiClient.getCurrentUserId(),id).then(function(item){innerElem.innerHTML=getOverlayHtml(apiClient,item,dataElement),innerElem.querySelector(".cardOverlayButtons").addEventListener("click",onCardOverlayButtonsClick)}),slideUpToShow(innerElem)}}}function onPointerEnter(e){var pointerType=e.pointerType||(layoutManager.mobile?"touch":"mouse");if("mouse"===pointerType){var elem=e.target,card=dom.parentWithClass(elem,"cardBox");if(!card)return;if(preventHover===!0)return void(preventHover=!1);showOverlayTimeout&&(clearTimeout(showOverlayTimeout),showOverlayTimeout=null),showOverlayTimeout=setTimeout(function(){onShowTimerExpired(card)},1600)}}function preventTouchHover(){preventHover=!0}function ItemHoverMenu(parentElement){this.parent=parentElement,dom.addEventListener(this.parent,window.PointerEvent?"pointerenter":"mouseenter",onPointerEnter,{passive:!0,capture:!0}),dom.addEventListener(this.parent,window.PointerEvent?"pointerleave":"mouseleave",onPointerLeave,{passive:!0,capture:!0}),window.PointerEvent||dom.addEventListener(this.parent,"touchstart",preventTouchHover,{passive:!0})}var showOverlayTimeout,preventHover=!1;return ItemHoverMenu.prototype={constructor:ItemHoverMenu,destroy:function(){dom.removeEventListener(this.parent,window.PointerEvent?"pointerenter":"mouseenter",onPointerEnter,{passive:!0,capture:!0}),dom.removeEventListener(this.parent,window.PointerEvent?"pointerleave":"mouseleave",onPointerLeave,{passive:!0,capture:!0}),dom.removeEventListener(this.parent,"touchstart",preventTouchHover,{passive:!0})}},ItemHoverMenu}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/itemidentifier/itemidentifier.js b/dashboard-ui/bower_components/emby-webcomponents/itemidentifier/itemidentifier.js index 1716db4e06..fefded7f81 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/itemidentifier/itemidentifier.js +++ b/dashboard-ui/bower_components/emby-webcomponents/itemidentifier/itemidentifier.js @@ -1 +1 @@ -define(["dialogHelper","loading","cardBuilder","connectionManager","require","globalize","scrollHelper","layoutManager","focusManager","browser","emby-input","emby-checkbox","paper-icon-button-light","css!./../formdialog","material-icons","cardStyle"],function(dialogHelper,loading,cardBuilder,connectionManager,require,globalize,scrollHelper,layoutManager,focusManager,browser){"use strict";function getApiClient(){return connectionManager.getApiClient(currentServerId)}function searchForIdentificationResults(page){var i,length,value,lookupInfo={ProviderIds:{}},identifyField=page.querySelectorAll(".identifyField");for(i=0,length=identifyField.length;i");if(identifyResult.ImageUrl){var displayUrl=getSearchImageDisplayUrl(identifyResult.ImageUrl,identifyResult.SearchProviderName);resultHtml='
'+resultHtml+"
"}page.querySelector(".selectedSearchResult").innerHTML=resultHtml,focusManager.focus(identifyOptionsForm.querySelector(".btnSubmit"))}function getSearchResultHtml(result,index){var padderClass,html="",cssClass="card scalableCard",cardBoxCssClass="cardBox";if("Episode"===currentItemType?(cssClass+=" backdropCard backdropCard-scalable",padderClass="cardPadder-backdrop"):"MusicAlbum"===currentItemType||"MusicArtist"===currentItemType?(cssClass+=" squareCard squareCard-scalable",padderClass="cardPadder-square"):(cssClass+=" portraitCard portraitCard-scalable",padderClass="cardPadder-portrait"),layoutManager.tv&&!browser.slow&&(cardBoxCssClass+=" cardBox-focustransform"),cardBoxCssClass+=" card-focuscontent cardBox-bottompadded",html+='"}function getSearchImageDisplayUrl(url,provider){var apiClient=getApiClient();return apiClient.getUrl("Items/RemoteSearch/Image",{imageUrl:url,ProviderName:provider})}function submitIdentficationResult(page){loading.show();var options={ReplaceAllImages:page.querySelector("#chkIdentifyReplaceImages").checked},apiClient=getApiClient();apiClient.ajax({type:"POST",url:apiClient.getUrl("Items/RemoteSearch/Apply/"+currentItem.Id,options),data:JSON.stringify(currentSearchResult),contentType:"application/json"}).then(function(){hasChanges=!0,loading.hide(),dialogHelper.close(page)},function(){loading.hide(),dialogHelper.close(page)})}function showIdentificationForm(page,item){var apiClient=getApiClient();apiClient.getJSON(apiClient.getUrl("Items/"+item.Id+"/ExternalIdInfos")).then(function(idList){for(var html="",providerIds=item.ProviderIds||{},i=0,length=idList.length;i';var idLabel=globalize.translate("sharedcomponents#LabelDynamicExternalId").replace("{0}",idInfo.Name);providerIds[idInfo.Key]||"";html+='',html+="
"}page.querySelector("#txtLookupName").value="","Person"===item.Type||"BoxSet"===item.Type?(page.querySelector(".fldLookupYear").classList.add("hide"),page.querySelector("#txtLookupYear").value=""):(page.querySelector(".fldLookupYear").classList.remove("hide"),page.querySelector("#txtLookupYear").value=""),page.querySelector(".identifyProviderIds").innerHTML=html,page.querySelector(".formDialogHeaderTitle").innerHTML=globalize.translate("sharedcomponents#Identify")})}function showEditor(itemId){loading.show(),require(["text!./itemidentifier.template.html"],function(template){var apiClient=getApiClient();apiClient.getItem(apiClient.getCurrentUserId(),itemId).then(function(item){currentItem=item,currentItemType=currentItem.Type;var dialogOptions={size:"fullscreen-border",removeOnClose:!0,scrollY:!1};layoutManager.tv&&(dialogOptions.size="fullscreen");var dlg=dialogHelper.createDialog(dialogOptions);dlg.classList.add("formDialog"),dlg.classList.add("recordingDialog");var html="";html+=globalize.translateDocument(template,"sharedcomponents"),dlg.innerHTML=html,dlg.addEventListener("close",onDialogClosed),layoutManager.tv&&scrollHelper.centerFocus.on(dlg.querySelector(".formDialogContent"),!1),dialogHelper.open(dlg),dlg.querySelector(".popupIdentifyForm").addEventListener("submit",function(e){return e.preventDefault(),searchForIdentificationResults(dlg),!1}),dlg.querySelector(".identifyOptionsForm").addEventListener("submit",function(e){return e.preventDefault(),submitIdentficationResult(dlg),!1}),dlg.querySelector(".btnCancel").addEventListener("click",function(e){dialogHelper.close(dlg)}),dlg.classList.add("identifyDialog"),showIdentificationForm(dlg,item),loading.hide()})})}function onDialogClosed(){loading.hide(),hasChanges?currentResolve():currentReject()}function showEditorFindNew(itemName,itemYear,itemType,resolveFunc){currentItem=null,currentItemType=itemType,require(["text!./itemidentifier.template.html"],function(template){var dialogOptions={size:"fullscreen-border",removeOnClose:!0,scrollY:!1};layoutManager.tv&&(dialogOptions.size="fullscreen");var dlg=dialogHelper.createDialog(dialogOptions);dlg.classList.add("formDialog"),dlg.classList.add("recordingDialog");var html="";html+=globalize.translateDocument(template,"sharedcomponents"),dlg.innerHTML=html,layoutManager.tv&&scrollHelper.centerFocus.on(dlg.querySelector(".formDialogContent"),!1),dialogHelper.open(dlg),dlg.querySelector(".btnCancel").addEventListener("click",function(e){dialogHelper.close(dlg)}),dlg.querySelector(".popupIdentifyForm").addEventListener("submit",function(e){return e.preventDefault(),searchForIdentificationResults(dlg),!1}),dlg.addEventListener("close",function(){loading.hide();var foundItem=hasChanges?currentSearchResult:null;resolveFunc(foundItem)}),dlg.classList.add("identifyDialog"),showIdentificationFormFindNew(dlg,itemName,itemYear,itemType)})}function showIdentificationFormFindNew(dlg,itemName,itemYear,itemType){dlg.querySelector("#txtLookupName").value=itemName,"Person"===itemType||"BoxSet"===itemType?(dlg.querySelector(".fldLookupYear").classList.add("hide"),dlg.querySelector("#txtLookupYear").value=""):(dlg.querySelector(".fldLookupYear").classList.remove("hide"),dlg.querySelector("#txtLookupYear").value=itemYear),dlg.querySelector(".formDialogHeaderTitle").innerHTML=globalize.translate("sharedcomponents#Search")}var currentItem,currentItemType,currentServerId,currentResolve,currentReject,currentSearchResult,hasChanges=!1;return{show:function(itemId,serverId){return new Promise(function(resolve,reject){currentResolve=resolve,currentReject=reject,currentServerId=serverId,hasChanges=!1,showEditor(itemId)})},showFindNew:function(itemName,itemYear,itemType,serverId){return new Promise(function(resolve,reject){currentServerId=serverId,hasChanges=!1,showEditorFindNew(itemName,itemYear,itemType,resolve)})}}}); \ No newline at end of file +define(["dialogHelper","loading","connectionManager","require","globalize","scrollHelper","layoutManager","focusManager","browser","emby-input","emby-checkbox","paper-icon-button-light","css!./../formdialog","material-icons","cardStyle"],function(dialogHelper,loading,connectionManager,require,globalize,scrollHelper,layoutManager,focusManager,browser){"use strict";function getApiClient(){return connectionManager.getApiClient(currentServerId)}function searchForIdentificationResults(page){var i,length,value,lookupInfo={ProviderIds:{}},identifyField=page.querySelectorAll(".identifyField");for(i=0,length=identifyField.length;i");if(identifyResult.ImageUrl){resultHtml='
'+resultHtml+"
"}page.querySelector(".selectedSearchResult").innerHTML=resultHtml,focusManager.focus(identifyOptionsForm.querySelector(".btnSubmit"))}function getSearchResultHtml(result,index){var padderClass,html="",cssClass="card scalableCard",cardBoxCssClass="cardBox";if("Episode"===currentItemType?(cssClass+=" backdropCard backdropCard-scalable",padderClass="cardPadder-backdrop"):"MusicAlbum"===currentItemType||"MusicArtist"===currentItemType?(cssClass+=" squareCard squareCard-scalable",padderClass="cardPadder-square"):(cssClass+=" portraitCard portraitCard-scalable",padderClass="cardPadder-portrait"),layoutManager.tv&&!browser.slow&&(cardBoxCssClass+=" cardBox-focustransform"),cardBoxCssClass+=" cardBox-bottompadded",layoutManager.tv&&(cardBoxCssClass+=" card-focuscontent cardBox-withfocuscontent"),html+='"}function getSearchImageDisplayUrl(url,provider){return getApiClient().getUrl("Items/RemoteSearch/Image",{imageUrl:url,ProviderName:provider})}function submitIdentficationResult(page){loading.show();var options={ReplaceAllImages:page.querySelector("#chkIdentifyReplaceImages").checked},apiClient=getApiClient();apiClient.ajax({type:"POST",url:apiClient.getUrl("Items/RemoteSearch/Apply/"+currentItem.Id,options),data:JSON.stringify(currentSearchResult),contentType:"application/json"}).then(function(){hasChanges=!0,loading.hide(),dialogHelper.close(page)},function(){loading.hide(),dialogHelper.close(page)})}function showIdentificationForm(page,item){var apiClient=getApiClient();apiClient.getJSON(apiClient.getUrl("Items/"+item.Id+"/ExternalIdInfos")).then(function(idList){for(var html="",providerIds=item.ProviderIds||{},i=0,length=idList.length;i';var idLabel=globalize.translate("sharedcomponents#LabelDynamicExternalId").replace("{0}",idInfo.Name);idInfo.Key;html+='',html+="
"}page.querySelector("#txtLookupName").value="","Person"===item.Type||"BoxSet"===item.Type?(page.querySelector(".fldLookupYear").classList.add("hide"),page.querySelector("#txtLookupYear").value=""):(page.querySelector(".fldLookupYear").classList.remove("hide"),page.querySelector("#txtLookupYear").value=""),page.querySelector(".identifyProviderIds").innerHTML=html,page.querySelector(".formDialogHeaderTitle").innerHTML=globalize.translate("sharedcomponents#Identify")})}function showEditor(itemId){loading.show(),require(["text!./itemidentifier.template.html"],function(template){var apiClient=getApiClient();apiClient.getItem(apiClient.getCurrentUserId(),itemId).then(function(item){currentItem=item,currentItemType=currentItem.Type;var dialogOptions={size:"fullscreen-border",removeOnClose:!0,scrollY:!1};layoutManager.tv&&(dialogOptions.size="fullscreen");var dlg=dialogHelper.createDialog(dialogOptions);dlg.classList.add("formDialog"),dlg.classList.add("recordingDialog");var html="";html+=globalize.translateDocument(template,"sharedcomponents"),dlg.innerHTML=html,dlg.addEventListener("close",onDialogClosed),layoutManager.tv&&scrollHelper.centerFocus.on(dlg.querySelector(".formDialogContent"),!1),dialogHelper.open(dlg),dlg.querySelector(".popupIdentifyForm").addEventListener("submit",function(e){return e.preventDefault(),searchForIdentificationResults(dlg),!1}),dlg.querySelector(".identifyOptionsForm").addEventListener("submit",function(e){return e.preventDefault(),submitIdentficationResult(dlg),!1}),dlg.querySelector(".btnCancel").addEventListener("click",function(e){dialogHelper.close(dlg)}),dlg.classList.add("identifyDialog"),showIdentificationForm(dlg,item),loading.hide()})})}function onDialogClosed(){loading.hide(),hasChanges?currentResolve():currentReject()}function showEditorFindNew(itemName,itemYear,itemType,resolveFunc){currentItem=null,currentItemType=itemType,require(["text!./itemidentifier.template.html"],function(template){var dialogOptions={size:"fullscreen-border",removeOnClose:!0,scrollY:!1};layoutManager.tv&&(dialogOptions.size="fullscreen");var dlg=dialogHelper.createDialog(dialogOptions);dlg.classList.add("formDialog"),dlg.classList.add("recordingDialog");var html="";html+=globalize.translateDocument(template,"sharedcomponents"),dlg.innerHTML=html,layoutManager.tv&&scrollHelper.centerFocus.on(dlg.querySelector(".formDialogContent"),!1),dialogHelper.open(dlg),dlg.querySelector(".btnCancel").addEventListener("click",function(e){dialogHelper.close(dlg)}),dlg.querySelector(".popupIdentifyForm").addEventListener("submit",function(e){return e.preventDefault(),searchForIdentificationResults(dlg),!1}),dlg.addEventListener("close",function(){loading.hide(),resolveFunc(hasChanges?currentSearchResult:null)}),dlg.classList.add("identifyDialog"),showIdentificationFormFindNew(dlg,itemName,itemYear,itemType)})}function showIdentificationFormFindNew(dlg,itemName,itemYear,itemType){dlg.querySelector("#txtLookupName").value=itemName,"Person"===itemType||"BoxSet"===itemType?(dlg.querySelector(".fldLookupYear").classList.add("hide"),dlg.querySelector("#txtLookupYear").value=""):(dlg.querySelector(".fldLookupYear").classList.remove("hide"),dlg.querySelector("#txtLookupYear").value=itemYear),dlg.querySelector(".formDialogHeaderTitle").innerHTML=globalize.translate("sharedcomponents#Search")}var currentItem,currentItemType,currentServerId,currentResolve,currentReject,currentSearchResult,hasChanges=!1;return{show:function(itemId,serverId){return new Promise(function(resolve,reject){currentResolve=resolve,currentReject=reject,currentServerId=serverId,hasChanges=!1,showEditor(itemId)})},showFindNew:function(itemName,itemYear,itemType,serverId){return new Promise(function(resolve,reject){currentServerId=serverId,hasChanges=!1,showEditorFindNew(itemName,itemYear,itemType,resolve)})}}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/itemsrefresher.js b/dashboard-ui/bower_components/emby-webcomponents/itemsrefresher.js new file mode 100644 index 0000000000..39eb3cca77 --- /dev/null +++ b/dashboard-ui/bower_components/emby-webcomponents/itemsrefresher.js @@ -0,0 +1 @@ +define(["playbackManager","serverNotifications","events"],function(playbackManager,serverNotifications,events){"use strict";function onUserDataChanged(e,apiClient,userData){var instance=this,eventsToMonitor=getEventsToMonitor(instance);-1!==eventsToMonitor.indexOf("markfavorite")?instance.notifyRefreshNeeded():-1!==eventsToMonitor.indexOf("markplayed")&&instance.notifyRefreshNeeded()}function getEventsToMonitor(instance){var options=instance.options,monitor=options?options.monitorEvents:null;return monitor?monitor.split(","):[]}function onTimerCreated(e,apiClient,data){var instance=this;if(-1!==getEventsToMonitor(instance).indexOf("timers"))return void instance.notifyRefreshNeeded()}function onSeriesTimerCreated(e,apiClient,data){var instance=this;if(-1!==getEventsToMonitor(instance).indexOf("seriestimers"))return void instance.notifyRefreshNeeded()}function onTimerCancelled(e,apiClient,data){var instance=this;if(-1!==getEventsToMonitor(instance).indexOf("timers"))return void instance.notifyRefreshNeeded()}function onSeriesTimerCancelled(e,apiClient,data){var instance=this;if(-1!==getEventsToMonitor(instance).indexOf("seriestimers"))return void instance.notifyRefreshNeeded()}function onLibraryChanged(e,apiClient,data){var instance=this,eventsToMonitor=getEventsToMonitor(instance);if(-1===eventsToMonitor.indexOf("seriestimers")&&-1===eventsToMonitor.indexOf("timers")){var itemsAdded=data.ItemsAdded||[],itemsRemoved=data.ItemsRemoved||[];if(itemsAdded.length||itemsRemoved.length){var options=instance.options||{},parentId=options.parentId;if(parentId){var foldersAddedTo=data.FoldersAddedTo||[],foldersRemovedFrom=data.FoldersRemovedFrom||[],collectionFolders=data.CollectionFolders||[];if(-1===foldersAddedTo.indexOf(parentId)&&-1===foldersRemovedFrom.indexOf(parentId)&&-1===collectionFolders.indexOf(parentId))return}instance.notifyRefreshNeeded()}}}function onPlaybackStopped(e,stopInfo){var instance=this,state=stopInfo.state,eventsToMonitor=getEventsToMonitor(instance);if(state.NowPlayingItem&&"Video"===state.NowPlayingItem.MediaType){if(-1!==eventsToMonitor.indexOf("videoplayback"))return void instance.notifyRefreshNeeded(!0)}else if(state.NowPlayingItem&&"Audio"===state.NowPlayingItem.MediaType&&-1!==eventsToMonitor.indexOf("audioplayback"))return void instance.notifyRefreshNeeded(!0)}function addNotificationEvent(instance,name,handler,owner){var localHandler=handler.bind(instance);owner=owner||serverNotifications,events.on(owner,name,localHandler),instance["event_"+name]=localHandler}function removeNotificationEvent(instance,name,owner){var handler=instance["event_"+name];handler&&(owner=owner||serverNotifications,events.off(owner,name,handler),instance["event_"+name]=null)}function ItemsRefresher(options){this.options=options||{},addNotificationEvent(this,"UserDataChanged",onUserDataChanged),addNotificationEvent(this,"TimerCreated",onTimerCreated),addNotificationEvent(this,"SeriesTimerCreated",onSeriesTimerCreated),addNotificationEvent(this,"TimerCancelled",onTimerCancelled),addNotificationEvent(this,"SeriesTimerCancelled",onSeriesTimerCancelled),addNotificationEvent(this,"LibraryChanged",onLibraryChanged),addNotificationEvent(this,"playbackstop",onPlaybackStopped,playbackManager)}function clearRefreshInterval(instance,isPausing){instance.refreshInterval&&(clearInterval(instance.refreshInterval),instance.refreshInterval=null,isPausing||(instance.refreshIntervalEndTime=null))}function resetRefreshInterval(instance,intervalMs){if(clearRefreshInterval(instance),!intervalMs){var options=instance.options;options&&(intervalMs=options.refreshIntervalMs)}intervalMs&&(instance.refreshInterval=setInterval(instance.notifyRefreshNeeded.bind(instance),intervalMs),instance.refreshIntervalEndTime=(new Date).getTime()+intervalMs)}function onDataFetched(result){resetRefreshInterval(this),this.afterRefresh&&this.afterRefresh(result)}return ItemsRefresher.prototype.pause=function(){clearRefreshInterval(this,!0),this.paused=!0},ItemsRefresher.prototype.resume=function(options){this.paused=!1;var refreshIntervalEndTime=this.refreshIntervalEndTime;if(refreshIntervalEndTime){var remainingMs=refreshIntervalEndTime-(new Date).getTime();remainingMs>0&&!this.needsRefresh?resetRefreshInterval(this,remainingMs):(this.needsRefresh=!0,this.refreshIntervalEndTime=null)}return this.needsRefresh||options&&options.refresh?this.refreshItems():Promise.resolve()},ItemsRefresher.prototype.refreshItems=function(){return this.fetchData?this.paused?(this.needsRefresh=!0,Promise.resolve()):(this.needsRefresh=!1,this.fetchData().then(onDataFetched.bind(this))):Promise.resolve()},ItemsRefresher.prototype.notifyRefreshNeeded=function(isInForeground){if(this.paused)return void(this.needsRefresh=!0);var timeout=this.refreshTimeout;timeout&&clearTimeout(timeout),!0===isInForeground?this.refreshItems():this.refreshTimeout=setTimeout(this.refreshItems.bind(this),1e4)},ItemsRefresher.prototype.destroy=function(){clearRefreshInterval(this),removeNotificationEvent(this,"UserDataChanged"),removeNotificationEvent(this,"TimerCreated"),removeNotificationEvent(this,"SeriesTimerCreated"),removeNotificationEvent(this,"TimerCancelled"),removeNotificationEvent(this,"SeriesTimerCancelled"),removeNotificationEvent(this,"LibraryChanged"),removeNotificationEvent(this,"playbackstop",playbackManager),this.fetchData=null,this.options=null},ItemsRefresher}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/layoutmanager.js b/dashboard-ui/bower_components/emby-webcomponents/layoutmanager.js index 228dcfc2f1..b7576ab69a 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/layoutmanager.js +++ b/dashboard-ui/bower_components/emby-webcomponents/layoutmanager.js @@ -1 +1 @@ -define(["browser","appSettings","events"],function(browser,appSettings,events){"use strict";function setLayout(instance,layout,selectedLayout){layout===selectedLayout?(instance[layout]=!0,document.documentElement.classList.add("layout-"+layout)):(instance[layout]=!1,document.documentElement.classList.remove("layout-"+layout))}function LayoutManager(){}return LayoutManager.prototype.setLayout=function(layout,save){layout&&"auto"!==layout?(setLayout(this,"mobile",layout),setLayout(this,"tv",layout),setLayout(this,"desktop",layout),save!==!1&&appSettings.set("layout",layout)):(this.autoLayout(),save!==!1&&appSettings.set("layout","")),events.trigger(this,"modechange")},LayoutManager.prototype.getSavedLayout=function(layout){return appSettings.get("layout")},LayoutManager.prototype.autoLayout=function(){browser.mobile?this.setLayout("mobile",!1):browser.tv||browser.xboxOne?this.setLayout("tv",!1):this.setLayout(this.defaultLayout||"tv",!1)},LayoutManager.prototype.init=function(){var saved=this.getSavedLayout();saved?this.setLayout(saved,!1):this.autoLayout()},new LayoutManager}); \ No newline at end of file +define(["browser","appSettings","events"],function(browser,appSettings,events){"use strict";function setLayout(instance,layout,selectedLayout){layout===selectedLayout?(instance[layout]=!0,document.documentElement.classList.add("layout-"+layout)):(instance[layout]=!1,document.documentElement.classList.remove("layout-"+layout))}function LayoutManager(){}return LayoutManager.prototype.setLayout=function(layout,save){layout&&"auto"!==layout?(setLayout(this,"mobile",layout),setLayout(this,"tv",layout),setLayout(this,"desktop",layout),!1!==save&&appSettings.set("layout",layout)):(this.autoLayout(),!1!==save&&appSettings.set("layout","")),events.trigger(this,"modechange")},LayoutManager.prototype.getSavedLayout=function(layout){return appSettings.get("layout")},LayoutManager.prototype.autoLayout=function(){browser.mobile?this.setLayout("mobile",!1):browser.tv||browser.xboxOne?this.setLayout("tv",!1):this.setLayout(this.defaultLayout||"tv",!1)},LayoutManager.prototype.init=function(){var saved=this.getSavedLayout();saved?this.setLayout(saved,!1):this.autoLayout()},new LayoutManager}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/lazyloader/lazyedgehack.css b/dashboard-ui/bower_components/emby-webcomponents/lazyloader/lazyedgehack.css index 7fee17c0a6..66f4ad575d 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/lazyloader/lazyedgehack.css +++ b/dashboard-ui/bower_components/emby-webcomponents/lazyloader/lazyedgehack.css @@ -1 +1 @@ -.lazy{min-width:1px;min-height:1px} \ No newline at end of file +.lazy{min-width:.1em;min-height:.1em} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/lazyloader/lazyloader-intersectionobserver.js b/dashboard-ui/bower_components/emby-webcomponents/lazyloader/lazyloader-intersectionobserver.js index c77d548205..f31fe3d2a8 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/lazyloader/lazyloader-intersectionobserver.js +++ b/dashboard-ui/bower_components/emby-webcomponents/lazyloader/lazyloader-intersectionobserver.js @@ -1 +1 @@ -define(["require","browser"],function(require,browser){"use strict";function LazyLoader(options){this.options=options}function unveilElements(elements,root,callback){if(elements.length){var lazyLoader=new LazyLoader({callback:callback});lazyLoader.addElements(elements)}}return browser.edge&&require(["css!./lazyedgehack"]),LazyLoader.prototype.createObserver=function(){var observerOptions={},options=this.options,loadedCount=0,callback=options.callback,observerId="obs"+(new Date).getTime(),self=this,observer=new IntersectionObserver(function(entries){for(var j=0,length2=entries.length;j0){var target=entry.target;observer.unobserve(target),target[observerId]||(target[observerId]=1,callback(target),loadedCount++,loadedCount>=self.elementCount&&self.destroyObserver())}}},observerOptions);this.observer=observer},LazyLoader.prototype.addElements=function(elements){var observer=this.observer;observer||(this.createObserver(),observer=this.observer),this.elementCount=(this.elementCount||0)+elements.length;for(var i=0,length=elements.length;i0){var target=entry.target;observer.unobserve(target),target[observerId]||(target[observerId]=1,callback(target),++loadedCount>=self.elementCount&&self.destroyObserver())}}},observerOptions);this.observer=observer},LazyLoader.prototype.addElements=function(elements){var observer=this.observer;observer||(this.createObserver(),observer=this.observer),this.elementCount=(this.elementCount||0)+elements.length;for(var i=0,length=elements.length;i=elements.length&&(dom.removeEventListener(document,"focus",unveil,{capture:!0,passive:!0}),dom.removeEventListener(document,"scroll",unveil,{capture:!0,passive:!0}),dom.removeEventListener(document,wheelEvent,unveil,{capture:!0,passive:!0}),dom.removeEventListener(window,"resize",unveil,{capture:!0,passive:!0}))}function unveil(){cancelAll(cancellationTokens);var index=cancellationTokens.length;cancellationTokens.length++,setTimeout(function(){unveilInternal(index)},1)}var unveiledElements=[],cancellationTokens=[],loadedCount=0;dom.addEventListener(document,"focus",unveil,{capture:!0,passive:!0}),dom.addEventListener(document,"scroll",unveil,{capture:!0,passive:!0}),dom.addEventListener(document,wheelEvent,unveil,{capture:!0,passive:!0}),dom.addEventListener(window,"resize",unveil,{capture:!0,passive:!0}),unveil()}function LazyLoader(options){this.options=options}function unveilElements(elements,root,callback){if(elements.length){var lazyLoader=new LazyLoader({callback:callback});lazyLoader.addElements(elements)}}var thresholdX,thresholdY;window.requestIdleCallback||function(fn){fn()};dom.addEventListener(window,"orientationchange",resetThresholds,{passive:!0}),dom.addEventListener(window,"resize",resetThresholds,{passive:!0}),resetThresholds();var wheelEvent=document.implementation.hasFeature("Event.wheel","3.0")?"wheel":"mousewheel";return LazyLoader.prototype.createObserver=function(){unveilElementsInternal(this,this.options.callback),this.observer=1},LazyLoader.prototype.addElements=function(elements){this.elements=this.elements||[];for(var i=0,length=elements.length;i=elements.length&&(dom.removeEventListener(document,"focus",unveil,{capture:!0,passive:!0}),dom.removeEventListener(document,"scroll",unveil,{capture:!0,passive:!0}),dom.removeEventListener(document,wheelEvent,unveil,{capture:!0,passive:!0}),dom.removeEventListener(window,"resize",unveil,{capture:!0,passive:!0}))}function unveil(){cancelAll(cancellationTokens);var index=cancellationTokens.length;cancellationTokens.length++,setTimeout(function(){unveilInternal(index)},1)}var unveiledElements=[],cancellationTokens=[],loadedCount=0;dom.addEventListener(document,"focus",unveil,{capture:!0,passive:!0}),dom.addEventListener(document,"scroll",unveil,{capture:!0,passive:!0}),dom.addEventListener(document,wheelEvent,unveil,{capture:!0,passive:!0}),dom.addEventListener(window,"resize",unveil,{capture:!0,passive:!0}),unveil()}function LazyLoader(options){this.options=options}function unveilElements(elements,root,callback){if(elements.length){new LazyLoader({callback:callback}).addElements(elements)}}var thresholdX,thresholdY;window.requestIdleCallback;browser.iOS?(dom.addEventListener(window,"orientationchange",resetThresholdsOnTimer,{passive:!0}),dom.addEventListener(window,"resize",resetThresholdsOnTimer,{passive:!0})):(dom.addEventListener(window,"orientationchange",resetThresholds,{passive:!0}),dom.addEventListener(window,"resize",resetThresholds,{passive:!0})),resetThresholds();var wheelEvent=document.implementation.hasFeature("Event.wheel","3.0")?"wheel":"mousewheel";return LazyLoader.prototype.createObserver=function(){unveilElementsInternal(this,this.options.callback),this.observer=1},LazyLoader.prototype.addElements=function(elements){this.elements=this.elements||[];for(var i=0,length=elements.length;i90?"#":name.toUpperCase()):0===sortBy.indexOf("officialrating")?item.OfficialRating||globalize.translate("sharedcomponents#Unrated"):0===sortBy.indexOf("communityrating")?null==item.CommunityRating?globalize.translate("sharedcomponents#Unrated"):Math.floor(item.CommunityRating):0===sortBy.indexOf("criticrating")?null==item.CriticRating?globalize.translate("sharedcomponents#Unrated"):Math.floor(item.CriticRating):0===sortBy.indexOf("albumartist")&&item.AlbumArtist?(name=item.AlbumArtist[0].toUpperCase(),code=name.charCodeAt(0),code<65||code>90?"#":name.toUpperCase()):""}function getImageUrl(item,width){var apiClient=connectionManager.getApiClient(item.ServerId),options={width:width,type:"Primary"};return item.ImageTags&&item.ImageTags.Primary?(options.tag=item.ImageTags.Primary,apiClient.getScaledImageUrl(item.Id,options)):item.AlbumId&&item.AlbumPrimaryImageTag?(options.tag=item.AlbumPrimaryImageTag,apiClient.getScaledImageUrl(item.AlbumId,options)):item.SeriesId&&item.SeriesPrimaryImageTag?(options.tag=item.SeriesPrimaryImageTag,apiClient.getScaledImageUrl(item.SeriesId,options)):item.ParentPrimaryImageTag?(options.tag=item.ParentPrimaryImageTag,apiClient.getScaledImageUrl(item.ParentPrimaryImageItemId,options)):null}function getChannelImageUrl(item,width){var apiClient=connectionManager.getApiClient(item.ServerId),options={width:width,type:"Primary"};return item.ChannelId&&item.ChannelPrimaryImageTag?(options.tag=item.ChannelPrimaryImageTag,apiClient.getScaledImageUrl(item.ChannelId,options)):null}function getTextLinesHtml(textlines,isLargeStyle){for(var html="",largeTitleTagName=layoutManager.tv?"h2":"div",i=0,length=textlines.length;i':'
':'
',html+=textlines[i]||" ",html+=0===i&&isLargeStyle?"":"
")}return html}function getRightButtonsHtml(options){for(var html="",i=0,length=options.rightButtons.length;i'+button.icon+""}return html}function getListViewHtml(options){for(var items=options.items,groupTitle="",action=options.action||"link",isLargeStyle="large"===options.imageSize,enableOverview=options.enableOverview,clickEntireItem=!!layoutManager.tv,outerTagName=clickEntireItem?"button":"div",enableSideMediaInfo=null==options.enableSideMediaInfo||options.enableSideMediaInfo,outerHtml="",enableContentWrapper=options.enableOverview&&!layoutManager.tv,containerAlbumArtists=options.containerAlbumArtists||[],i=0,length=items.length;i"),html+=0===i?'

':'

',html+=itemGroupTitle,html+="

",html+="
",groupTitle=itemGroupTitle)}var cssClass="listItem";options.highlight!==!1&&(cssClass+=" listItem-shaded"),clickEntireItem&&(cssClass+=" itemAction listItem-button"),layoutManager.tv&&(cssClass+=" listItem-focusscale");var downloadWidth=80;isLargeStyle&&(cssClass+=" listItem-largeImage",downloadWidth=500);var playlistItemId=item.PlaylistItemId?' data-playlistitemid="'+item.PlaylistItemId+'"':"",positionTicksData=item.UserData&&item.UserData.PlaybackPositionTicks?' data-positionticks="'+item.UserData.PlaybackPositionTicks+'"':"",collectionIdData=options.collectionId?' data-collectionid="'+options.collectionId+'"':"",playlistIdData=options.playlistId?' data-playlistid="'+options.playlistId+'"':"",mediaTypeData=item.MediaType?' data-mediatype="'+item.MediaType+'"':"",collectionTypeData=item.CollectionType?' data-collectiontype="'+item.CollectionType+'"':"",channelIdData=item.ChannelId?' data-channelid="'+item.ChannelId+'"':"";if(enableContentWrapper&&(cssClass+=" listItem-withContentWrapper"),html+="<"+outerTagName+' class="'+cssClass+'"'+playlistItemId+' data-action="'+action+'" data-isfolder="'+item.IsFolder+'" data-id="'+item.Id+'" data-serverid="'+item.ServerId+'" data-type="'+item.Type+'"'+mediaTypeData+collectionTypeData+channelIdData+positionTicksData+collectionIdData+playlistIdData+">",enableContentWrapper&&(html+='
'),!clickEntireItem&&options.dragHandle&&(html+=''),options.image!==!1){var imgUrl="channel"===options.imageSource?getChannelImageUrl(item,downloadWidth):getImageUrl(item,downloadWidth);console.log(imgUrl);var imageClass=isLargeStyle?"listItemImage listItemImage-large":"listItemImage";isLargeStyle&&layoutManager.tv&&(imageClass+=" listItemImage-large-tv");var playOnImageClick=options.imagePlayButton&&!layoutManager.tv;clickEntireItem||(imageClass+=" itemAction");var imageAction=playOnImageClick?"resume":action;html+=imgUrl?'
':'
';var indicatorsHtml="";indicatorsHtml+=indicators.getPlayedIndicatorHtml(item),indicatorsHtml&&(html+='
'+indicatorsHtml+"
"),playOnImageClick&&(html+='');var progressHtml=indicators.getProgressBarHtml(item,{containerClass:"listItemProgressBar"});progressHtml&&(html+=progressHtml),html+="
"}var textlines=[];options.showProgramDateTime&&textlines.push(datetime.toLocaleString(datetime.parseISO8601Date(item.StartDate),{weekday:"long",month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})),options.showProgramTime&&textlines.push(datetime.getDisplayTime(datetime.parseISO8601Date(item.StartDate))),options.showChannel&&item.ChannelName&&textlines.push(item.ChannelName);var parentTitle=null;options.showParentTitle&&("Episode"===item.Type?parentTitle=item.SeriesName:(item.IsSeries||item.EpisodeTitle&&item.Name)&&(parentTitle=item.Name));var displayName=itemHelper.getDisplayName(item,{includeParentInfo:options.includeParentInfoInTitle});if(options.showIndexNumber&&null!=item.IndexNumber&&(displayName=item.IndexNumber+". "+displayName),options.showParentTitle&&options.parentTitleWithTitle?(displayName&&(parentTitle&&(parentTitle+=" - "),parentTitle=(parentTitle||"")+displayName),textlines.push(parentTitle||"")):options.showParentTitle&&textlines.push(parentTitle||""),displayName&&!options.parentTitleWithTitle&&textlines.push(displayName),item.IsFolder)options.artist!==!1&&item.AlbumArtist&&"MusicAlbum"===item.Type&&textlines.push(item.AlbumArtist);else{var showArtist=options.artist===!0;showArtist||options.artist===!1||(showArtist=containerAlbumArtists.length>1||(item.Artists||[])[0]!==containerAlbumArtists[0]),showArtist&&item.ArtistItems&&"MusicAlbum"!==item.Type&&textlines.push(item.ArtistItems.map(function(a){return a.Name}).join(", "))}"Game"===item.Type&&textlines.push(item.GameSystem),"TvChannel"===item.Type&&item.CurrentProgram&&textlines.push(itemHelper.getDisplayName(item.CurrentProgram)),cssClass="listItemBody",clickEntireItem||(cssClass+=" itemAction"),options.image===!1&&(cssClass+=" itemAction listItemBody-noleftpadding"),html+='
';var moreIcon="dots-horiz"===appHost.moreIcon?"":"";if(html+=getTextLinesHtml(textlines,isLargeStyle),options.mediaInfo!==!1&&!enableSideMediaInfo){var mediaInfoClass="secondary listItemMediaInfo listItemBodyText";html+='
'+mediaInfo.getPrimaryMediaInfoHtml(item,{episodeTitle:!1,originalAirDate:!1,subtitles:!1})+"
"}if(enableOverview&&item.Overview&&(html+='
',html+=item.Overview,html+="
"),html+="
",options.mediaInfo!==!1&&enableSideMediaInfo&&(html+='
'+mediaInfo.getPrimaryMediaInfoHtml(item,{year:!1,container:!1,episodeTitle:!1,criticRating:!1,endsAt:!1})+"
"),options.recordButton||"Timer"!==item.Type&&"Program"!==item.Type||(html+=indicators.getTimerIndicator(item).replace("indicatorIcon","indicatorIcon listItemAside")),!clickEntireItem&&(options.addToListButton&&(html+=''),options.moreButton!==!1&&(html+='"),options.infoButton&&(html+=''),options.rightButtons&&(html+=getRightButtonsHtml(options)),options.enableUserDataButtons!==!1)){html+='';var userData=item.UserData||{},likes=null==userData.Likes?"":userData.Likes;itemHelper.canMarkPlayed(item)&&(html+=''),itemHelper.canRate(item)&&(html+=''),html+=""}enableContentWrapper&&(html+="
",enableOverview&&item.Overview&&(html+='
',html+=item.Overview,html+="
")),html+="",outerHtml+=html}return outerHtml}return{getListViewHtml:getListViewHtml}}); \ No newline at end of file +define(["itemHelper","mediaInfo","indicators","connectionManager","layoutManager","globalize","datetime","apphost","css!./listview","emby-ratingbutton","emby-playstatebutton"],function(itemHelper,mediaInfo,indicators,connectionManager,layoutManager,globalize,datetime,appHost){"use strict";function getIndex(item,options){if("disc"===options.index)return null==item.ParentIndexNumber?"":globalize.translate("sharedcomponents#ValueDiscNumber",item.ParentIndexNumber);var code,name,sortBy=(options.sortBy||"").toLowerCase();return 0===sortBy.indexOf("sortname")?"Episode"===item.Type?"":(name=(item.SortName||item.Name||"?")[0].toUpperCase(),code=name.charCodeAt(0),code<65||code>90?"#":name.toUpperCase()):0===sortBy.indexOf("officialrating")?item.OfficialRating||globalize.translate("sharedcomponents#Unrated"):0===sortBy.indexOf("communityrating")?null==item.CommunityRating?globalize.translate("sharedcomponents#Unrated"):Math.floor(item.CommunityRating):0===sortBy.indexOf("criticrating")?null==item.CriticRating?globalize.translate("sharedcomponents#Unrated"):Math.floor(item.CriticRating):0===sortBy.indexOf("albumartist")&&item.AlbumArtist?(name=item.AlbumArtist[0].toUpperCase(),code=name.charCodeAt(0),code<65||code>90?"#":name.toUpperCase()):""}function getImageUrl(item,width){var apiClient=connectionManager.getApiClient(item.ServerId),options={width:width,type:"Primary"};return item.ImageTags&&item.ImageTags.Primary?(options.tag=item.ImageTags.Primary,apiClient.getScaledImageUrl(item.Id,options)):item.AlbumId&&item.AlbumPrimaryImageTag?(options.tag=item.AlbumPrimaryImageTag,apiClient.getScaledImageUrl(item.AlbumId,options)):item.SeriesId&&item.SeriesPrimaryImageTag?(options.tag=item.SeriesPrimaryImageTag,apiClient.getScaledImageUrl(item.SeriesId,options)):item.ParentPrimaryImageTag?(options.tag=item.ParentPrimaryImageTag,apiClient.getScaledImageUrl(item.ParentPrimaryImageItemId,options)):null}function getChannelImageUrl(item,width){var apiClient=connectionManager.getApiClient(item.ServerId),options={width:width,type:"Primary"};return item.ChannelId&&item.ChannelPrimaryImageTag?(options.tag=item.ChannelPrimaryImageTag,apiClient.getScaledImageUrl(item.ChannelId,options)):null}function getTextLinesHtml(textlines,isLargeStyle){for(var html="",largeTitleTagName=layoutManager.tv?"h2":"div",i=0,length=textlines.length;i':'
':'
',html+=textlines[i]||" ",html+=0===i&&isLargeStyle?"":"
")}return html}function getRightButtonsHtml(options){for(var html="",i=0,length=options.rightButtons.length;i'+button.icon+""}return html}function getId(item){return item.Id}function getListViewHtml(options){for(var items=options.items,groupTitle="",action=options.action||"link",isLargeStyle="large"===options.imageSize,enableOverview=options.enableOverview,clickEntireItem=!!layoutManager.tv,outerTagName=clickEntireItem?"button":"div",enableSideMediaInfo=null==options.enableSideMediaInfo||options.enableSideMediaInfo,outerHtml="",enableContentWrapper=options.enableOverview&&!layoutManager.tv,containerAlbumArtistIds=(options.containerAlbumArtists||[]).map(getId),i=0,length=items.length;i"),html+=0===i?'

':'

',html+=itemGroupTitle,html+="

",html+="
",groupTitle=itemGroupTitle)}var cssClass="listItem";(options.border||!1!==options.highlight&&!layoutManager.tv)&&(cssClass+=" listItem-border"),clickEntireItem&&(cssClass+=" itemAction listItem-button"),layoutManager.tv&&(cssClass+=" listItem-focusscale");var downloadWidth=80;isLargeStyle&&(cssClass+=" listItem-largeImage",downloadWidth=500);var playlistItemId=item.PlaylistItemId?' data-playlistitemid="'+item.PlaylistItemId+'"':"",positionTicksData=item.UserData&&item.UserData.PlaybackPositionTicks?' data-positionticks="'+item.UserData.PlaybackPositionTicks+'"':"",collectionIdData=options.collectionId?' data-collectionid="'+options.collectionId+'"':"",playlistIdData=options.playlistId?' data-playlistid="'+options.playlistId+'"':"",mediaTypeData=item.MediaType?' data-mediatype="'+item.MediaType+'"':"",collectionTypeData=item.CollectionType?' data-collectiontype="'+item.CollectionType+'"':"",channelIdData=item.ChannelId?' data-channelid="'+item.ChannelId+'"':"";if(enableContentWrapper&&(cssClass+=" listItem-withContentWrapper"),html+="<"+outerTagName+' class="'+cssClass+'"'+playlistItemId+' data-action="'+action+'" data-isfolder="'+item.IsFolder+'" data-id="'+item.Id+'" data-serverid="'+item.ServerId+'" data-type="'+item.Type+'"'+mediaTypeData+collectionTypeData+channelIdData+positionTicksData+collectionIdData+playlistIdData+">",enableContentWrapper&&(html+='
'),!clickEntireItem&&options.dragHandle&&(html+=''),!1!==options.image){var imgUrl="channel"===options.imageSource?getChannelImageUrl(item,downloadWidth):getImageUrl(item,downloadWidth);console.log(imgUrl);var imageClass=isLargeStyle?"listItemImage listItemImage-large":"listItemImage";isLargeStyle&&layoutManager.tv&&(imageClass+=" listItemImage-large-tv");var playOnImageClick=options.imagePlayButton&&!layoutManager.tv;clickEntireItem||(imageClass+=" itemAction");var imageAction=playOnImageClick?"resume":action;html+=imgUrl?'
':'
';var indicatorsHtml="";indicatorsHtml+=indicators.getPlayedIndicatorHtml(item),indicatorsHtml&&(html+='
'+indicatorsHtml+"
"),playOnImageClick&&(html+='');var progressHtml=indicators.getProgressBarHtml(item,{containerClass:"listItemProgressBar"});progressHtml&&(html+=progressHtml),html+="
"}options.showIndexNumberLeft&&(html+='
',html+=item.IndexNumber||" ",html+="
");var textlines=[];options.showProgramDateTime&&textlines.push(datetime.toLocaleString(datetime.parseISO8601Date(item.StartDate),{weekday:"long",month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})),options.showProgramTime&&textlines.push(datetime.getDisplayTime(datetime.parseISO8601Date(item.StartDate))),options.showChannel&&item.ChannelName&&textlines.push(item.ChannelName);var parentTitle=null;options.showParentTitle&&("Episode"===item.Type?parentTitle=item.SeriesName:(item.IsSeries||item.EpisodeTitle&&item.Name)&&(parentTitle=item.Name));var displayName=itemHelper.getDisplayName(item,{includeParentInfo:options.includeParentInfoInTitle});if(options.showIndexNumber&&null!=item.IndexNumber&&(displayName=item.IndexNumber+". "+displayName),options.showParentTitle&&options.parentTitleWithTitle?(displayName&&(parentTitle&&(parentTitle+=" - "),parentTitle=(parentTitle||"")+displayName),textlines.push(parentTitle||"")):options.showParentTitle&&textlines.push(parentTitle||""),displayName&&!options.parentTitleWithTitle&&textlines.push(displayName),item.IsFolder)!1!==options.artist&&item.AlbumArtist&&"MusicAlbum"===item.Type&&textlines.push(item.AlbumArtist);else{var showArtist=!0===options.artist,artistItems=item.ArtistItems;showArtist||!1===options.artist||(artistItems&&artistItems.length?(artistItems.length>1||-1===containerAlbumArtistIds.indexOf(artistItems[0].Id))&&(showArtist=!0):showArtist=!0),showArtist&&artistItems&&"MusicAlbum"!==item.Type&&textlines.push(artistItems.map(function(a){return a.Name}).join(", "))}"Game"===item.Type&&textlines.push(item.GameSystem),"TvChannel"===item.Type&&item.CurrentProgram&&textlines.push(itemHelper.getDisplayName(item.CurrentProgram)),cssClass="listItemBody",clickEntireItem||(cssClass+=" itemAction"),!1===options.image&&(cssClass+=" listItemBody-noleftpadding"),html+='
';if(html+=getTextLinesHtml(textlines,isLargeStyle),!1!==options.mediaInfo&&!enableSideMediaInfo){html+='
'+mediaInfo.getPrimaryMediaInfoHtml(item,{episodeTitle:!1,originalAirDate:!1,subtitles:!1})+"
"}if(enableOverview&&item.Overview&&(html+='
',html+=item.Overview,html+="
"),html+="
",!1!==options.mediaInfo&&enableSideMediaInfo&&(html+='
'+mediaInfo.getPrimaryMediaInfoHtml(item,{year:!1,container:!1,episodeTitle:!1,criticRating:!1,endsAt:!1})+"
"),options.recordButton||"Timer"!==item.Type&&"Program"!==item.Type||(html+=indicators.getTimerIndicator(item).replace("indicatorIcon","indicatorIcon listItemAside")),!clickEntireItem&&(options.addToListButton&&(html+=''),!1!==options.moreButton&&(html+=''),options.infoButton&&(html+=''),options.rightButtons&&(html+=getRightButtonsHtml(options)),!1!==options.enableUserDataButtons)){html+='';var userData=item.UserData||{},likes=null==userData.Likes?"":userData.Likes;itemHelper.canMarkPlayed(item)&&(html+=''),itemHelper.canRate(item)&&(html+=''),html+=""}enableContentWrapper&&(html+="
",enableOverview&&item.Overview&&(html+='
',html+=item.Overview,html+="
")),html+="",outerHtml+=html}return outerHtml}return{getListViewHtml:getListViewHtml}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/loading/loading-lite.css b/dashboard-ui/bower_components/emby-webcomponents/loading/loading-lite.css index 8fcf15b3c3..e07798c39f 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/loading/loading-lite.css +++ b/dashboard-ui/bower_components/emby-webcomponents/loading/loading-lite.css @@ -1 +1 @@ -.mdl-spinner{position:relative;width:28px;height:28px;display:none}.mdlSpinnerActive{display:inline-block;-webkit-animation:mdl-spinner__container-rotate 1.568s linear infinite;animation:mdl-spinner__container-rotate 1.568s linear infinite}@-webkit-keyframes mdl-spinner__container-rotate{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes mdl-spinner__container-rotate{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.mdl-spinner__layer{position:absolute;width:100%;height:100%;opacity:0}.mdl-spinner__layer-1{border-color:#42a5f5}.mdl-spinner__layer-1-active{-webkit-animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdl-spinner__layer-1-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdl-spinner__layer-1-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.mdl-spinner__layer-2{border-color:#f44336}.mdl-spinner__layer-2-active{-webkit-animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdl-spinner__layer-2-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdl-spinner__layer-2-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.mdl-spinner__layer-3{border-color:#fdd835}.mdl-spinner__layer-3-active{-webkit-animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdl-spinner__layer-3-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdl-spinner__layer-3-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.mdl-spinner__layer-4{border-color:#4caf50}.mdl-spinner__layer-4-active{-webkit-animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdl-spinner__layer-4-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdl-spinner__layer-4-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}@-webkit-keyframes mdl-spinner__fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg);transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg);transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg);transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg);transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg);transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg);transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg);transform:rotate(1080deg)}}@keyframes mdl-spinner__fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg);transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg);transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg);transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg);transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg);transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg);transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg);transform:rotate(1080deg)}}@-webkit-keyframes mdl-spinner__layer-1-fade-in-out{100%,25%,90%,from{opacity:.99}26%,89%{opacity:0}}@keyframes mdl-spinner__layer-1-fade-in-out{100%,25%,90%,from{opacity:.99}26%,89%{opacity:0}}@-webkit-keyframes mdl-spinner__layer-2-fade-in-out{15%,51%,from{opacity:0}25%,50%{opacity:.99}}@keyframes mdl-spinner__layer-2-fade-in-out{15%,51%,from{opacity:0}25%,50%{opacity:.99}}@-webkit-keyframes mdl-spinner__layer-3-fade-in-out{40%,76%,from{opacity:0}50%,75%{opacity:.99}}@keyframes mdl-spinner__layer-3-fade-in-out{40%,76%,from{opacity:0}50%,75%{opacity:.99}}@-webkit-keyframes mdl-spinner__layer-4-fade-in-out{100%,65%,from{opacity:0}75%,90%{opacity:.99}}@keyframes mdl-spinner__layer-4-fade-in-out{100%,65%,from{opacity:0}75%,90%{opacity:.99}}.mdl-spinner__circle-clipper{display:inline-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inherit}.mdl-spinner__circle-clipper .mdl-spinner__circle{width:200%}.mdl-spinner__circle{-webkit-box-sizing:border-box;box-sizing:border-box;height:100%;border-width:3px;border-style:solid;border-color:inherit;border-bottom-color:transparent!important;-webkit-border-radius:50%;border-radius:50%;-webkit-animation:none;animation:none;position:absolute;top:0;right:0;bottom:0;left:0}.mdl-spinner__circleLeft{border-right-color:transparent!important;-webkit-transform:rotate(129deg);transform:rotate(129deg)}.mdl-spinner__circleLeft-active{-webkit-animation:mdl-spinner__left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdl-spinner__left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}.mdl-spinner__circleRight{left:-100%;border-left-color:transparent!important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg)}.mdl-spinner__circleRight-active{-webkit-animation:mdl-spinner__right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdl-spinner__right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}@-webkit-keyframes mdl-spinner__left-spin{from,to{-webkit-transform:rotate(130deg);transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}}@keyframes mdl-spinner__left-spin{from,to{-webkit-transform:rotate(130deg);transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}}@-webkit-keyframes mdl-spinner__right-spin{from,to{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}}@keyframes mdl-spinner__right-spin{from,to{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}}.docspinner{margin-top:-5vh;margin-left:-5vh;width:10vh;height:10vh;position:fixed;top:50%;left:50%;z-index:9999999;contain:layout style size} \ No newline at end of file +.mdl-spinner{position:relative;width:1.95em;height:1.95em;display:none}.mdlSpinnerActive{display:inline-block;-webkit-animation:mdl-spinner__container-rotate 1.568s linear infinite;animation:mdl-spinner__container-rotate 1.568s linear infinite}@-webkit-keyframes mdl-spinner__container-rotate{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes mdl-spinner__container-rotate{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.mdl-spinner__layer{position:absolute;width:100%;height:100%;opacity:0}.mdl-spinner__layer-1{border-color:#42a5f5}.mdl-spinner__layer-1-active{-webkit-animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdl-spinner__layer-1-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdl-spinner__layer-1-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.mdl-spinner__layer-2{border-color:#f44336}.mdl-spinner__layer-2-active{-webkit-animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdl-spinner__layer-2-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdl-spinner__layer-2-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.mdl-spinner__layer-3{border-color:#fdd835}.mdl-spinner__layer-3-active{-webkit-animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdl-spinner__layer-3-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdl-spinner__layer-3-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.mdl-spinner__layer-4{border-color:#4caf50}.mdl-spinner__layer-4-active{-webkit-animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdl-spinner__layer-4-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdl-spinner__layer-4-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}@-webkit-keyframes mdl-spinner__fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg);transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg);transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg);transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg);transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg);transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg);transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg);transform:rotate(1080deg)}}@keyframes mdl-spinner__fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg);transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg);transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg);transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg);transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg);transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg);transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg);transform:rotate(1080deg)}}@-webkit-keyframes mdl-spinner__layer-1-fade-in-out{100%,25%,90%,from{opacity:.99}26%,89%{opacity:0}}@keyframes mdl-spinner__layer-1-fade-in-out{100%,25%,90%,from{opacity:.99}26%,89%{opacity:0}}@-webkit-keyframes mdl-spinner__layer-2-fade-in-out{15%,51%,from{opacity:0}25%,50%{opacity:.99}}@keyframes mdl-spinner__layer-2-fade-in-out{15%,51%,from{opacity:0}25%,50%{opacity:.99}}@-webkit-keyframes mdl-spinner__layer-3-fade-in-out{40%,76%,from{opacity:0}50%,75%{opacity:.99}}@keyframes mdl-spinner__layer-3-fade-in-out{40%,76%,from{opacity:0}50%,75%{opacity:.99}}@-webkit-keyframes mdl-spinner__layer-4-fade-in-out{100%,65%,from{opacity:0}75%,90%{opacity:.99}}@keyframes mdl-spinner__layer-4-fade-in-out{100%,65%,from{opacity:0}75%,90%{opacity:.99}}.mdl-spinner__circle-clipper{display:inline-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inherit}.mdl-spinner__circle-clipper .mdl-spinner__circle{width:200%}.mdl-spinner__circle{-webkit-box-sizing:border-box;box-sizing:border-box;height:100%;border-width:.21em;border-style:solid;border-color:inherit;border-bottom-color:transparent!important;-webkit-border-radius:50%;border-radius:50%;-webkit-animation:none;animation:none;position:absolute;top:0;right:0;bottom:0;left:0}.mdl-spinner__circleLeft{border-right-color:transparent!important;-webkit-transform:rotate(129deg);transform:rotate(129deg)}.mdl-spinner__circleLeft-active{-webkit-animation:mdl-spinner__left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdl-spinner__left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}.mdl-spinner__circleRight{left:-100%;border-left-color:transparent!important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg)}.mdl-spinner__circleRight-active{-webkit-animation:mdl-spinner__right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdl-spinner__right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}@-webkit-keyframes mdl-spinner__left-spin{from,to{-webkit-transform:rotate(130deg);transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}}@keyframes mdl-spinner__left-spin{from,to{-webkit-transform:rotate(130deg);transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}}@-webkit-keyframes mdl-spinner__right-spin{from,to{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}}@keyframes mdl-spinner__right-spin{from,to{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}}.docspinner{margin-top:-5vh;margin-left:-5vh;width:10vh;height:10vh;position:fixed;top:50%;left:50%;z-index:9999999;contain:layout style size} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/loadingdialog/loadingdialog.js b/dashboard-ui/bower_components/emby-webcomponents/loadingdialog/loadingdialog.js new file mode 100644 index 0000000000..f2f01fe2fc --- /dev/null +++ b/dashboard-ui/bower_components/emby-webcomponents/loadingdialog/loadingdialog.js @@ -0,0 +1 @@ +define(["loading","events","dialogHelper","dom","layoutManager","scrollHelper","globalize","require","material-icons","emby-button","paper-icon-button-light","emby-input","formDialogStyle","flexStyles"],function(loading,events,dialogHelper,dom,layoutManager,scrollHelper,globalize,require){"use strict";function showDialog(instance,options,template){var dialogOptions={removeOnClose:!0,scrollY:!1},enableTvLayout=layoutManager.tv;enableTvLayout&&(dialogOptions.size="fullscreen");var dlg=dialogHelper.createDialog(dialogOptions);dlg.classList.add("formDialog"),dlg.innerHTML=globalize.translateHtml(template,"sharedcomponents"),dlg.classList.add("align-items-center"),dlg.classList.add("justify-items-center");var formDialogContent=dlg.querySelector(".formDialogContent");return formDialogContent.style["flex-grow"]="initial",formDialogContent.style["max-width"]="50%",formDialogContent.style["max-height"]="60%",enableTvLayout?(scrollHelper.centerFocus.on(formDialogContent,!1),dlg.querySelector(".formDialogHeader").style.marginTop="15%"):dlg.classList.add("dialog-fullscreen-lowres"),dlg.querySelector(".formDialogHeaderTitle").innerHTML=options.title,dlg.querySelector(".text").innerHTML=options.text,instance.dlg=dlg,dialogHelper.open(dlg).then(function(){enableTvLayout&&scrollHelper.centerFocus.off(dlg.querySelector(".formDialogContent"),!1),loading.hide()})}function LoadingDialog(options){this.options=options}return LoadingDialog.prototype.show=function(){var instance=this;return loading.show(),new Promise(function(resolve,reject){require(["text!./../dialog/dialog.template.html"],function(template){showDialog(instance,instance.options,template),resolve()})})},LoadingDialog.prototype.setTitle=function(title){},LoadingDialog.prototype.setText=function(text){},LoadingDialog.prototype.hide=function(){this.dlg&&(dialogHelper.close(this.dlg),this.dlg=null)},LoadingDialog.prototype.destroy=function(){this.dlg=null,this.options=null},LoadingDialog}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/maintabsmanager.js b/dashboard-ui/bower_components/emby-webcomponents/maintabsmanager.js index 5ad19669fb..b5049b5c72 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/maintabsmanager.js +++ b/dashboard-ui/bower_components/emby-webcomponents/maintabsmanager.js @@ -1 +1 @@ -define(["dom","browser","events","emby-tabs","emby-button","emby-linkbutton"],function(dom,browser,events){"use strict";function enableTabsInFooter(){return!1}function ensureElements(enableInFooter){enableInFooter&&(footerTabsContainer||(footerTabsContainer=document.createElement("div"),footerTabsContainer.classList.add("footerTabs"),footerTabsContainer.classList.add("sectionTabs"),footerTabsContainer.classList.add("hide"))),headerTabsContainer||(headerTabsContainer=queryScope.querySelector(".headerTabs"))}function onViewTabsReady(){this.selectedIndex(this.readySelectedIndex),this.readySelectedIndex=null}function allowSwipe(target){function allowSwipeOn(elem){if(dom.parentWithTag(elem,"input"))return!1;var classList=elem.classList;return!classList||!classList.contains("scrollX")&&!classList.contains("animatedScrollX")}for(var parent=target;null!=parent;){if(!allowSwipeOn(parent))return!1;parent=parent.parentNode}return!0}function configureSwipeTabs(view,tabsElem,getTabContainersFn){if(browser.touch){var onSwipeLeft=(getTabContainersFn().length,function(e,target){allowSwipe(target)&&view.contains(target)&&tabsElem.selectNext()}),onSwipeRight=function(e,target){allowSwipe(target)&&view.contains(target)&&tabsElem.selectPrevious()};require(["touchHelper"],function(TouchHelper){var touchHelper=new TouchHelper(view.parentNode.parentNode);events.on(touchHelper,"swipeleft",onSwipeLeft),events.on(touchHelper,"swiperight",onSwipeRight),view.addEventListener("viewdestroy",function(){touchHelper.destroy()})})}}function setTabs(view,selectedIndex,getTabsFn,getTabContainersFn,onBeforeTabChange,onTabChange,setSelectedIndex){var enableInFooter=enableTabsInFooter();if(!view)return tabOwnerView&&(headerTabsContainer||(headerTabsContainer=queryScope.querySelector(".headerTabs")),ensureElements(enableInFooter),document.body.classList.remove("withSectionTabs"),headerTabsContainer.innerHTML="",headerTabsContainer.classList.add("hide"),footerTabsContainer&&(footerTabsContainer.innerHTML="",footerTabsContainer.classList.add("hide")),tabOwnerView=null),{tabsContainer:headerTabsContainer,replaced:!1};ensureElements(enableInFooter);var tabsContainerElem=enableInFooter?footerTabsContainer:headerTabsContainer;if(tabOwnerView||tabsContainerElem.classList.remove("hide"),tabOwnerView!==view){var index=0,indexAttribute=null==selectedIndex?"":' data-index="'+selectedIndex+'"',tabsHtml='
'+getTabsFn().map(function(t){var tabClass="emby-tab-button";t.enabled===!1&&(tabClass+=" hide");var tabHtml;return t.cssClass&&(tabClass+=" "+t.cssClass),tabHtml=t.href?'
'+t.name+"
":'",index++,tabHtml}).join("")+"
";return tabsContainerElem.innerHTML=tabsHtml,document.body.classList.add("withSectionTabs"),tabOwnerView=view,tabsElem=tabsContainerElem.querySelector('[is="emby-tabs"]'),configureSwipeTabs(view,tabsElem,getTabContainersFn),tabsElem.addEventListener("beforetabchange",function(e){var tabContainers=getTabContainersFn();if(null!=e.detail.previousIndex){var previousPanel=tabContainers[e.detail.previousIndex];previousPanel&&previousPanel.classList.remove("is-active")}var newPanel=tabContainers[e.detail.selectedTabIndex];newPanel&&newPanel.classList.add("is-active")}),onBeforeTabChange&&tabsElem.addEventListener("beforetabchange",onBeforeTabChange),onTabChange&&tabsElem.addEventListener("tabchange",onTabChange),setSelectedIndex!==!1&&(tabsElem.selectedIndex?tabsElem.selectedIndex(selectedIndex):(tabsElem.readySelectedIndex=selectedIndex,tabsElem.addEventListener("ready",onViewTabsReady))),{tabsContainer:tabsContainerElem,tabs:tabsContainerElem.querySelector('[is="emby-tabs"]'),replaced:!0}}return tabsElem||(tabsElem=tabsContainerElem.querySelector('[is="emby-tabs"]')),tabsElem.selectedIndex(selectedIndex),tabOwnerView=view,{tabsContainer:tabsContainerElem,tabs:tabsElem,replaced:!1}}function selectedTabIndex(index){var tabsContainerElem=headerTabsContainer;tabsElem||(tabsElem=tabsContainerElem.querySelector('[is="emby-tabs"]')),null!=index?tabsElem.selectedIndex(index):tabsElem.triggerTabChange()}function getTabsElement(){return document.querySelector(".tabs-viewmenubar")}var tabOwnerView,footerTabsContainer,headerTabsContainer,tabsElem,queryScope=document.querySelector(".skinHeader");return{setTabs:setTabs,getTabsElement:getTabsElement,selectedTabIndex:selectedTabIndex}}); \ No newline at end of file +define(["dom","browser","events","emby-tabs","emby-button","emby-linkbutton"],function(dom,browser,events){"use strict";function enableTabsInFooter(){return!1}function ensureElements(enableInFooter){enableInFooter&&(footerTabsContainer||(footerTabsContainer=document.createElement("div"),footerTabsContainer.classList.add("footerTabs"),footerTabsContainer.classList.add("sectionTabs"),footerTabsContainer.classList.add("hide"))),headerTabsContainer||(headerTabsContainer=queryScope.querySelector(".headerTabs"))}function onViewTabsReady(){this.selectedIndex(this.readySelectedIndex),this.readySelectedIndex=null}function allowSwipe(target){for(var parent=target;null!=parent;){if(!function(elem){if(dom.parentWithTag(elem,"input"))return!1;var classList=elem.classList;return!classList||!classList.contains("scrollX")&&!classList.contains("animatedScrollX")}(parent))return!1;parent=parent.parentNode}return!0}function configureSwipeTabs(view,tabsElem,getTabContainersFn){if(browser.touch){var onSwipeLeft=(getTabContainersFn().length,function(e,target){allowSwipe(target)&&view.contains(target)&&tabsElem.selectNext()}),onSwipeRight=function(e,target){allowSwipe(target)&&view.contains(target)&&tabsElem.selectPrevious()};require(["touchHelper"],function(TouchHelper){var touchHelper=new TouchHelper(view.parentNode.parentNode);events.on(touchHelper,"swipeleft",onSwipeLeft),events.on(touchHelper,"swiperight",onSwipeRight),view.addEventListener("viewdestroy",function(){touchHelper.destroy()})})}}function setTabs(view,selectedIndex,getTabsFn,getTabContainersFn,onBeforeTabChange,onTabChange,setSelectedIndex){var enableInFooter=enableTabsInFooter();if(!view)return tabOwnerView&&(headerTabsContainer||(headerTabsContainer=queryScope.querySelector(".headerTabs")),ensureElements(enableInFooter),document.body.classList.remove("withSectionTabs"),headerTabsContainer.innerHTML="",headerTabsContainer.classList.add("hide"),footerTabsContainer&&(footerTabsContainer.innerHTML="",footerTabsContainer.classList.add("hide")),tabOwnerView=null),{tabsContainer:headerTabsContainer,replaced:!1};ensureElements(enableInFooter);var tabsContainerElem=enableInFooter?footerTabsContainer:headerTabsContainer;if(tabOwnerView||tabsContainerElem.classList.remove("hide"),tabOwnerView!==view){var index=0,indexAttribute=null==selectedIndex?"":' data-index="'+selectedIndex+'"',tabsHtml='
'+getTabsFn().map(function(t){var tabClass="emby-tab-button";!1===t.enabled&&(tabClass+=" hide");var tabHtml;return t.cssClass&&(tabClass+=" "+t.cssClass),tabHtml=t.href?'
'+t.name+"
":'",index++,tabHtml}).join("")+"
";return tabsContainerElem.innerHTML=tabsHtml,document.body.classList.add("withSectionTabs"),tabOwnerView=view,tabsElem=tabsContainerElem.querySelector('[is="emby-tabs"]'),configureSwipeTabs(view,tabsElem,getTabContainersFn),tabsElem.addEventListener("beforetabchange",function(e){var tabContainers=getTabContainersFn();if(null!=e.detail.previousIndex){var previousPanel=tabContainers[e.detail.previousIndex];previousPanel&&previousPanel.classList.remove("is-active")}var newPanel=tabContainers[e.detail.selectedTabIndex];newPanel&&newPanel.classList.add("is-active")}),onBeforeTabChange&&tabsElem.addEventListener("beforetabchange",onBeforeTabChange),onTabChange&&tabsElem.addEventListener("tabchange",onTabChange),!1!==setSelectedIndex&&(tabsElem.selectedIndex?tabsElem.selectedIndex(selectedIndex):(tabsElem.readySelectedIndex=selectedIndex,tabsElem.addEventListener("ready",onViewTabsReady))),{tabsContainer:tabsContainerElem,tabs:tabsContainerElem.querySelector('[is="emby-tabs"]'),replaced:!0}}return tabsElem||(tabsElem=tabsContainerElem.querySelector('[is="emby-tabs"]')),tabsElem.selectedIndex(selectedIndex),tabOwnerView=view,{tabsContainer:tabsContainerElem,tabs:tabsElem,replaced:!1}}function selectedTabIndex(index){var tabsContainerElem=headerTabsContainer;tabsElem||(tabsElem=tabsContainerElem.querySelector('[is="emby-tabs"]')),null!=index?tabsElem.selectedIndex(index):tabsElem.triggerTabChange()}function getTabsElement(){return document.querySelector(".tabs-viewmenubar")}var tabOwnerView,footerTabsContainer,headerTabsContainer,tabsElem,queryScope=document.querySelector(".skinHeader");return{setTabs:setTabs,getTabsElement:getTabsElement,selectedTabIndex:selectedTabIndex}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/mediainfo/mediainfo.js b/dashboard-ui/bower_components/emby-webcomponents/mediainfo/mediainfo.js index f7e79940bd..550a347347 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/mediainfo/mediainfo.js +++ b/dashboard-ui/bower_components/emby-webcomponents/mediainfo/mediainfo.js @@ -1 +1 @@ -define(["datetime","globalize","appRouter","itemHelper","material-icons","css!./mediainfo.css","programStyles","emby-linkbutton"],function(datetime,globalize,appRouter,itemHelper){"use strict";function getTimerIndicator(item){var status;if("SeriesTimer"===item.Type)return'';if(item.TimerId||item.SeriesTimerId)status=item.Status||"Cancelled";else{if("Timer"!==item.Type)return"";status=item.Status}return item.SeriesTimerId?"Cancelled"!==status?'':'':''}function getProgramInfoHtml(item,options){var text,date,html="",miscInfo=[];if(item.StartDate&&options.programTime!==!1)try{text="",date=datetime.parseISO8601Date(item.StartDate),options.startDate!==!1&&(text+=datetime.toLocaleDateString(date,{weekday:"short",month:"short",day:"numeric"})),text+=" "+datetime.getDisplayTime(date),item.EndDate&&(date=datetime.parseISO8601Date(item.EndDate),text+=" - "+datetime.getDisplayTime(date)),miscInfo.push(text)}catch(e){console.log("Error parsing date: "+item.StartDate)}if(item.ChannelNumber&&miscInfo.push("CH "+item.ChannelNumber),item.ChannelName&&(options.interactive&&item.ChannelId?miscInfo.push({html:''+item.ChannelName+""}):miscInfo.push(item.ChannelName)),options.timerIndicator!==!1){var timerHtml=getTimerIndicator(item);timerHtml&&miscInfo.push({html:timerHtml})}return html+=miscInfo.map(function(m){return getMediaInfoItem(m)}).join("")}function getMediaInfoHtml(item,options){var html="",miscInfo=[];options=options||{};var text,date,minutes,count,showFolderRuntime="MusicAlbum"===item.Type||"MusicArtist"===item.MediaType||"Playlist"===item.MediaType||"MusicGenre"===item.MediaType;if(showFolderRuntime?(count=item.SongCount||item.ChildCount,count&&miscInfo.push(globalize.translate("sharedcomponents#TrackCount",count)),item.RunTimeTicks&&miscInfo.push(datetime.getDisplayRunningTime(item.RunTimeTicks))):"PhotoAlbum"!==item.Type&&"BoxSet"!==item.Type||(count=item.ChildCount,count&&miscInfo.push(globalize.translate("sharedcomponents#ItemCount",count))),("Episode"===item.Type||"Photo"===item.MediaType)&&options.originalAirDate!==!1&&item.PremiereDate)try{date=datetime.parseISO8601Date(item.PremiereDate),text=datetime.toLocaleDateString(date),miscInfo.push(text)}catch(e){console.log("Error parsing date: "+item.PremiereDate)}if("SeriesTimer"===item.Type&&(item.RecordAnyTime?miscInfo.push(globalize.translate("sharedcomponents#Anytime")):miscInfo.push(datetime.getDisplayTime(item.StartDate)),item.RecordAnyChannel?miscInfo.push(globalize.translate("sharedcomponents#AllChannels")):miscInfo.push(item.ChannelName||globalize.translate("sharedcomponents#OneChannel"))),item.StartDate&&"Program"!==item.Type&&"SeriesTimer"!==item.Type)try{date=datetime.parseISO8601Date(item.StartDate),text=datetime.toLocaleDateString(date),miscInfo.push(text),"Recording"!==item.Type&&(text=datetime.getDisplayTime(date),miscInfo.push(text))}catch(e){console.log("Error parsing date: "+item.StartDate)}if(options.year!==!1&&item.ProductionYear&&"Series"===item.Type)if("Continuing"===item.Status)miscInfo.push(globalize.translate("sharedcomponents#SeriesYearToPresent",item.ProductionYear));else if(item.ProductionYear){if(text=item.ProductionYear,item.EndDate)try{var endYear=datetime.parseISO8601Date(item.EndDate).getFullYear();endYear!==item.ProductionYear&&(text+="-"+datetime.parseISO8601Date(item.EndDate).getFullYear())}catch(e){console.log("Error parsing date: "+item.EndDate)}miscInfo.push(text)}if("Program"===item.Type)if(options.programIndicator!==!1&&(item.IsLive?miscInfo.push({html:'
'+globalize.translate("sharedcomponents#Live")+"
"}):item.IsPremiere?miscInfo.push({html:'
'+globalize.translate("sharedcomponents#Premiere")+"
"}):item.IsSeries&&!item.IsRepeat?miscInfo.push({html:'
'+globalize.translate("sharedcomponents#AttributeNew")+"
"}):item.IsSeries&&item.IsRepeat&&miscInfo.push({html:'
'+globalize.translate("sharedcomponents#Repeat")+"
"})),(item.IsSeries||item.EpisodeTitle)&&options.episodeTitle!==!1)text=itemHelper.getDisplayName(item,{includeIndexNumber:options.episodeTitleIndexNumber}),text&&miscInfo.push(text);else if(item.IsMovie&&item.ProductionYear&&options.originalAirDate!==!1)miscInfo.push(item.ProductionYear);else if(item.PremiereDate&&options.originalAirDate!==!1)try{date=datetime.parseISO8601Date(item.PremiereDate),text=globalize.translate("sharedcomponents#OriginalAirDateValue",datetime.toLocaleDateString(date)),miscInfo.push(text)}catch(e){console.log("Error parsing date: "+item.PremiereDate)}else item.ProductionYear&&miscInfo.push(item.ProductionYear);if(options.year!==!1&&"Series"!==item.Type&&"Episode"!==item.Type&&"Person"!==item.Type&&"Photo"!==item.MediaType&&"Program"!==item.Type&&"Season"!==item.Type)if(item.ProductionYear)miscInfo.push(item.ProductionYear);else if(item.PremiereDate)try{text=datetime.parseISO8601Date(item.PremiereDate).getFullYear(),miscInfo.push(text)}catch(e){console.log("Error parsing date: "+item.PremiereDate)}if(item.RunTimeTicks&&"Series"!==item.Type&&"Program"!==item.Type&&!showFolderRuntime&&options.runtime!==!1&&("Audio"===item.Type?miscInfo.push(datetime.getDisplayRunningTime(item.RunTimeTicks)):(minutes=item.RunTimeTicks/6e8,minutes=minutes||1,miscInfo.push(Math.round(minutes)+" mins"))),item.OfficialRating&&"Season"!==item.Type&&"Episode"!==item.Type&&miscInfo.push({text:item.OfficialRating,cssClass:"mediaInfoOfficialRating"}),item.Video3DFormat&&miscInfo.push("3D"),"Photo"===item.MediaType&&item.Width&&item.Height&&miscInfo.push(item.Width+"x"+item.Height),options.container!==!1&&"Audio"===item.Type&&item.Container&&miscInfo.push(item.Container),html+=miscInfo.map(function(m){return getMediaInfoItem(m)}).join(""),html+=getStarIconsHtml(item),item.HasSubtitles&&options.subtitles!==!1&&(html+='
CC
'),item.CriticRating&&options.criticRating!==!1&&(html+=item.CriticRating>=60?'
'+item.CriticRating+"
":'
'+item.CriticRating+"
"),options.endsAt!==!1){var endsAt=getEndsAt(item);endsAt&&(html+=getMediaInfoItem(endsAt,"endsAt"))}return html}function getEndsAt(item){if("Video"===item.MediaType&&item.RunTimeTicks&&!item.StartDate){var endDate=(new Date).getTime()+item.RunTimeTicks/1e4;endDate=new Date(endDate);var displayTime=datetime.getDisplayTime(endDate);return globalize.translate("sharedcomponents#EndsAtValue",displayTime)}return null}function getEndsAtFromPosition(runtimeTicks,positionTicks,includeText){var endDate=(new Date).getTime()+(runtimeTicks-(positionTicks||0))/1e4;endDate=new Date(endDate);var displayTime=datetime.getDisplayTime(endDate);return includeText===!1?displayTime:globalize.translate("sharedcomponents#EndsAtValue",displayTime)}function getMediaInfoItem(m,cssClass){cssClass=cssClass?cssClass+" mediaInfoItem":"mediaInfoItem";var mediaInfoText=m;if("string"!=typeof m&&"number"!=typeof m){if(m.html)return m.html;mediaInfoText=m.text,cssClass+=" "+m.cssClass}return'
'+mediaInfoText+"
"}function getStarIconsHtml(item){var html="",rating=item.CommunityRating;return rating&&(html+='
',html+='',html+=rating,html+="
"),html}function dynamicEndTime(elem,item){var interval=setInterval(function(){return document.body.contains(elem)?void(elem.innerHTML=getEndsAt(item)):void clearInterval(interval)},6e4)}function fillPrimaryMediaInfo(elem,item,options){var html=getPrimaryMediaInfoHtml(item,options);elem.innerHTML=html,afterFill(elem,item,options)}function fillSecondaryMediaInfo(elem,item,options){var html=getSecondaryMediaInfoHtml(item,options);elem.innerHTML=html,afterFill(elem,item,options)}function afterFill(elem,item,options){if(options.endsAt!==!1){var endsAtElem=elem.querySelector(".endsAt");endsAtElem&&dynamicEndTime(endsAtElem,item)}var lnkChannel=elem.querySelector(".lnkChannel");lnkChannel&&lnkChannel.addEventListener("click",onChannelLinkClick)}function onChannelLinkClick(e){var channelId=this.getAttribute("data-id"),serverId=this.getAttribute("data-serverid");return appRouter.showItem(channelId,serverId),e.preventDefault(),!1}function getPrimaryMediaInfoHtml(item,options){return options=options||{},null==options.interactive&&(options.interactive=!1),getMediaInfoHtml(item,options)}function getSecondaryMediaInfoHtml(item,options){return options=options||{},null==options.interactive&&(options.interactive=!1),"Program"===item.Type?getProgramInfoHtml(item,options):""}function getResolutionText(i){if(i.Width){if(i.Width>=3800)return"4K";if(i.Width>=2500)return i.IsInterlaced?"1440i":"1440P";if(i.Width>=1900)return i.IsInterlaced?"1080i":"1080P";if(i.Width>=1260)return i.IsInterlaced?"720i":"720P";if(i.Width>=700)return i.IsInterlaced?"480i":"480P"}return null}function getAudioStreamForDisplay(item){if(!item.MediaSources)return null;var mediaSource=item.MediaSources[0];return mediaSource?(mediaSource.MediaStreams||[]).filter(function(i){return"Audio"===i.Type&&(i.Index===mediaSource.DefaultAudioStreamIndex||null==mediaSource.DefaultAudioStreamIndex)})[0]:null}function getMediaInfoStats(item,options){options=options||{};var list=[],mediaSource=(item.MediaSources||[])[0]||{},videoStream=(mediaSource.MediaStreams||[]).filter(function(i){return"Video"===i.Type})[0]||{},audioStream=getAudioStreamForDisplay(item)||{};"Dvd"===item.VideoType&&list.push({type:"mediainfo",text:"Dvd"}),"BluRay"===item.VideoType&&list.push({type:"mediainfo",text:"BluRay"});var resolutionText=getResolutionText(videoStream);resolutionText&&list.push({type:"mediainfo",text:resolutionText}),videoStream.Codec&&list.push({type:"mediainfo",text:videoStream.Codec});var channelText,channels=audioStream.Channels;8===channels?channelText="7.1":7===channels?channelText="6.1":6===channels?channelText="5.1":2===channels&&(channelText="2.0"),channelText&&list.push({type:"mediainfo",text:channelText});var audioCodec=(audioStream.Codec||"").toLowerCase();if("dca"!==audioCodec&&"dts"!==audioCodec||!audioStream.Profile?audioStream.Codec&&list.push({type:"mediainfo",text:audioStream.Codec}):list.push({type:"mediainfo",text:audioStream.Profile}),item.DateCreated&&itemHelper.enableDateAddedDisplay(item)){var dateCreated=datetime.parseISO8601Date(item.DateCreated);list.push({type:"added",text:globalize.translate("sharedcomponents#AddedOnValue",datetime.toLocaleDateString(dateCreated)+" "+datetime.getDisplayTime(dateCreated))})}return list}return{getMediaInfoHtml:getPrimaryMediaInfoHtml,fill:fillPrimaryMediaInfo,getEndsAt:getEndsAt,getEndsAtFromPosition:getEndsAtFromPosition,getPrimaryMediaInfoHtml:getPrimaryMediaInfoHtml,getSecondaryMediaInfoHtml:getSecondaryMediaInfoHtml,fillPrimaryMediaInfo:fillPrimaryMediaInfo,fillSecondaryMediaInfo:fillSecondaryMediaInfo,getMediaInfoStats:getMediaInfoStats,getResolutionText:getResolutionText}}); \ No newline at end of file +define(["datetime","globalize","appRouter","itemHelper","indicators","material-icons","css!./mediainfo.css","programStyles","emby-linkbutton"],function(datetime,globalize,appRouter,itemHelper,indicators){"use strict";function getTimerIndicator(item){var status;if("SeriesTimer"===item.Type)return'';if(item.TimerId||item.SeriesTimerId)status=item.Status||"Cancelled";else{if("Timer"!==item.Type)return"";status=item.Status}return item.SeriesTimerId?"Cancelled"!==status?'':'':''}function getProgramInfoHtml(item,options){var text,date,html="",miscInfo=[];if(item.StartDate&&!1!==options.programTime)try{text="",date=datetime.parseISO8601Date(item.StartDate),!1!==options.startDate&&(text+=datetime.toLocaleDateString(date,{weekday:"short",month:"short",day:"numeric"})),text+=" "+datetime.getDisplayTime(date),item.EndDate&&(date=datetime.parseISO8601Date(item.EndDate),text+=" - "+datetime.getDisplayTime(date)),miscInfo.push(text)}catch(e){console.log("Error parsing date: "+item.StartDate)}if(item.ChannelNumber&&miscInfo.push("CH "+item.ChannelNumber),item.ChannelName&&(options.interactive&&item.ChannelId?miscInfo.push({html:''+item.ChannelName+""}):miscInfo.push(item.ChannelName)),!1!==options.timerIndicator){var timerHtml=getTimerIndicator(item);timerHtml&&miscInfo.push({html:timerHtml})}return html+=miscInfo.map(function(m){return getMediaInfoItem(m)}).join("")}function getMediaInfoHtml(item,options){var html="",miscInfo=[];options=options||{};var text,date,minutes,count,showFolderRuntime="MusicAlbum"===item.Type||"MusicArtist"===item.MediaType||"Playlist"===item.MediaType||"MusicGenre"===item.MediaType;if(showFolderRuntime?(count=item.SongCount||item.ChildCount,count&&miscInfo.push(globalize.translate("sharedcomponents#TrackCount",count)),item.RunTimeTicks&&miscInfo.push(datetime.getDisplayRunningTime(item.RunTimeTicks))):"PhotoAlbum"!==item.Type&&"BoxSet"!==item.Type||(count=item.ChildCount)&&miscInfo.push(globalize.translate("sharedcomponents#ItemCount",count)),("Episode"===item.Type||"Photo"===item.MediaType)&&!1!==options.originalAirDate&&item.PremiereDate)try{date=datetime.parseISO8601Date(item.PremiereDate),text=datetime.toLocaleDateString(date),miscInfo.push(text)}catch(e){console.log("Error parsing date: "+item.PremiereDate)}if("SeriesTimer"===item.Type&&(item.RecordAnyTime?miscInfo.push(globalize.translate("sharedcomponents#Anytime")):miscInfo.push(datetime.getDisplayTime(item.StartDate)),item.RecordAnyChannel?miscInfo.push(globalize.translate("sharedcomponents#AllChannels")):miscInfo.push(item.ChannelName||globalize.translate("sharedcomponents#OneChannel"))),item.StartDate&&"Program"!==item.Type&&"SeriesTimer"!==item.Type)try{date=datetime.parseISO8601Date(item.StartDate),text=datetime.toLocaleDateString(date),miscInfo.push(text),"Recording"!==item.Type&&(text=datetime.getDisplayTime(date),miscInfo.push(text))}catch(e){console.log("Error parsing date: "+item.StartDate)}if(!1!==options.year&&item.ProductionYear&&"Series"===item.Type)if("Continuing"===item.Status)miscInfo.push(globalize.translate("sharedcomponents#SeriesYearToPresent",item.ProductionYear));else if(item.ProductionYear){if(text=item.ProductionYear,item.EndDate)try{var endYear=datetime.parseISO8601Date(item.EndDate).getFullYear();endYear!==item.ProductionYear&&(text+="-"+datetime.parseISO8601Date(item.EndDate).getFullYear())}catch(e){console.log("Error parsing date: "+item.EndDate)}miscInfo.push(text)}if("Program"===item.Type)if(!1!==options.programIndicator&&(item.IsLive?miscInfo.push({html:'
'+globalize.translate("sharedcomponents#Live")+"
"}):item.IsPremiere?miscInfo.push({html:'
'+globalize.translate("sharedcomponents#Premiere")+"
"}):item.IsSeries&&!item.IsRepeat?miscInfo.push({html:'
'+globalize.translate("sharedcomponents#AttributeNew")+"
"}):item.IsSeries&&item.IsRepeat&&miscInfo.push({html:'
'+globalize.translate("sharedcomponents#Repeat")+"
"})),(item.IsSeries||item.EpisodeTitle)&&!1!==options.episodeTitle)(text=itemHelper.getDisplayName(item,{includeIndexNumber:options.episodeTitleIndexNumber}))&&miscInfo.push(text);else if(item.IsMovie&&item.ProductionYear&&!1!==options.originalAirDate)miscInfo.push(item.ProductionYear);else if(item.PremiereDate&&!1!==options.originalAirDate)try{date=datetime.parseISO8601Date(item.PremiereDate),text=globalize.translate("sharedcomponents#OriginalAirDateValue",datetime.toLocaleDateString(date)),miscInfo.push(text)}catch(e){console.log("Error parsing date: "+item.PremiereDate)}else item.ProductionYear&&miscInfo.push(item.ProductionYear);if(!1!==options.year&&"Series"!==item.Type&&"Episode"!==item.Type&&"Person"!==item.Type&&"Photo"!==item.MediaType&&"Program"!==item.Type&&"Season"!==item.Type)if(item.ProductionYear)miscInfo.push(item.ProductionYear);else if(item.PremiereDate)try{text=datetime.parseISO8601Date(item.PremiereDate).getFullYear(),miscInfo.push(text)}catch(e){console.log("Error parsing date: "+item.PremiereDate)}if(item.RunTimeTicks&&"Series"!==item.Type&&"Program"!==item.Type&&!showFolderRuntime&&!1!==options.runtime&&("Audio"===item.Type?miscInfo.push(datetime.getDisplayRunningTime(item.RunTimeTicks)):(minutes=item.RunTimeTicks/6e8,minutes=minutes||1,miscInfo.push(Math.round(minutes)+" mins"))),item.OfficialRating&&"Season"!==item.Type&&"Episode"!==item.Type&&miscInfo.push({text:item.OfficialRating,cssClass:"mediaInfoOfficialRating"}),item.Video3DFormat&&miscInfo.push("3D"),"Photo"===item.MediaType&&item.Width&&item.Height&&miscInfo.push(item.Width+"x"+item.Height),!1!==options.container&&"Audio"===item.Type&&item.Container&&miscInfo.push(item.Container),html+=miscInfo.map(function(m){return getMediaInfoItem(m)}).join(""),html+=getStarIconsHtml(item),item.HasSubtitles&&!1!==options.subtitles&&(html+='
CC
'),item.CriticRating&&!1!==options.criticRating&&(item.CriticRating>=60?html+='
'+item.CriticRating+"
":html+='
'+item.CriticRating+"
"),!1!==options.endsAt){var endsAt=getEndsAt(item);endsAt&&(html+=getMediaInfoItem(endsAt,"endsAt"))}return html+=indicators.getMissingIndicator(item)}function getEndsAt(item){if("Video"===item.MediaType&&item.RunTimeTicks&&!item.StartDate){var endDate=(new Date).getTime()+item.RunTimeTicks/1e4;endDate=new Date(endDate);var displayTime=datetime.getDisplayTime(endDate);return globalize.translate("sharedcomponents#EndsAtValue",displayTime)}return null}function getEndsAtFromPosition(runtimeTicks,positionTicks,includeText){var endDate=(new Date).getTime()+(runtimeTicks-(positionTicks||0))/1e4;endDate=new Date(endDate);var displayTime=datetime.getDisplayTime(endDate);return!1===includeText?displayTime:globalize.translate("sharedcomponents#EndsAtValue",displayTime)}function getMediaInfoItem(m,cssClass){cssClass=cssClass?cssClass+" mediaInfoItem":"mediaInfoItem";var mediaInfoText=m;if("string"!=typeof m&&"number"!=typeof m){if(m.html)return m.html;mediaInfoText=m.text,cssClass+=" "+m.cssClass}return'
'+mediaInfoText+"
"}function getStarIconsHtml(item){var html="",rating=item.CommunityRating;return rating&&(html+='
',html+='',html+=rating,html+="
"),html}function dynamicEndTime(elem,item){var interval=setInterval(function(){if(!document.body.contains(elem))return void clearInterval(interval);elem.innerHTML=getEndsAt(item)},6e4)}function fillPrimaryMediaInfo(elem,item,options){var html=getPrimaryMediaInfoHtml(item,options);elem.innerHTML=html,afterFill(elem,item,options)}function fillSecondaryMediaInfo(elem,item,options){var html=getSecondaryMediaInfoHtml(item,options);elem.innerHTML=html,afterFill(elem,item,options)}function afterFill(elem,item,options){if(!1!==options.endsAt){var endsAtElem=elem.querySelector(".endsAt");endsAtElem&&dynamicEndTime(endsAtElem,item)}var lnkChannel=elem.querySelector(".lnkChannel");lnkChannel&&lnkChannel.addEventListener("click",onChannelLinkClick)}function onChannelLinkClick(e){var channelId=this.getAttribute("data-id"),serverId=this.getAttribute("data-serverid");return appRouter.showItem(channelId,serverId),e.preventDefault(),!1}function getPrimaryMediaInfoHtml(item,options){return options=options||{},null==options.interactive&&(options.interactive=!1),getMediaInfoHtml(item,options)}function getSecondaryMediaInfoHtml(item,options){return options=options||{},null==options.interactive&&(options.interactive=!1),"Program"===item.Type?getProgramInfoHtml(item,options):""}function getResolutionText(i){var width=i.Width,height=i.Height;if(width&&height){if(width>=3800||height>=2e3)return"4K";if(width>=2500||height>=1400)return i.IsInterlaced?"1440i":"1440P";if(width>=1800||height>=1e3)return i.IsInterlaced?"1080i":"1080P";if(width>=1200||height>=700)return i.IsInterlaced?"720i":"720P";if(width>=700||height>=400)return i.IsInterlaced?"480i":"480P"}return null}function getAudioStreamForDisplay(item){if(!item.MediaSources)return null;var mediaSource=item.MediaSources[0];return mediaSource?(mediaSource.MediaStreams||[]).filter(function(i){return"Audio"===i.Type&&(i.Index===mediaSource.DefaultAudioStreamIndex||null==mediaSource.DefaultAudioStreamIndex)})[0]:null}function getMediaInfoStats(item,options){options=options||{};var list=[],mediaSource=(item.MediaSources||[])[0]||{},videoStream=(mediaSource.MediaStreams||[]).filter(function(i){return"Video"===i.Type})[0]||{},audioStream=getAudioStreamForDisplay(item)||{};"Dvd"===item.VideoType&&list.push({type:"mediainfo",text:"Dvd"}),"BluRay"===item.VideoType&&list.push({type:"mediainfo",text:"BluRay"});var resolutionText=getResolutionText(videoStream);resolutionText&&list.push({type:"mediainfo",text:resolutionText}),videoStream.Codec&&list.push({type:"mediainfo",text:videoStream.Codec});var channelText,channels=audioStream.Channels;8===channels?channelText="7.1":7===channels?channelText="6.1":6===channels?channelText="5.1":2===channels&&(channelText="2.0"),channelText&&list.push({type:"mediainfo",text:channelText});var audioCodec=(audioStream.Codec||"").toLowerCase();if("dca"!==audioCodec&&"dts"!==audioCodec||!audioStream.Profile?audioStream.Codec&&list.push({type:"mediainfo",text:audioStream.Codec}):list.push({type:"mediainfo",text:audioStream.Profile}),item.DateCreated&&itemHelper.enableDateAddedDisplay(item)){var dateCreated=datetime.parseISO8601Date(item.DateCreated);list.push({type:"added",text:globalize.translate("sharedcomponents#AddedOnValue",datetime.toLocaleDateString(dateCreated)+" "+datetime.getDisplayTime(dateCreated))})}return list}return{getMediaInfoHtml:getPrimaryMediaInfoHtml,fill:fillPrimaryMediaInfo,getEndsAt:getEndsAt,getEndsAtFromPosition:getEndsAtFromPosition,getPrimaryMediaInfoHtml:getPrimaryMediaInfoHtml,getSecondaryMediaInfoHtml:getSecondaryMediaInfoHtml,fillPrimaryMediaInfo:fillPrimaryMediaInfo,fillSecondaryMediaInfo:fillSecondaryMediaInfo,getMediaInfoStats:getMediaInfoStats,getResolutionText:getResolutionText}}); \ 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 9dca69f67c..3a9a948931 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 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))})}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),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","flexStyles"],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 getDateValue(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)){val+="T"+parts[1]}}return val}function onSubmit(e){loading.show();var form=this,item={Id:currentItem.Id,Name:form.querySelector("#txtName").value,OriginalTitle:form.querySelector("#txtOriginalName").value,ForcedSortName:form.querySelector("#txtSortName").value,CommunityRating:form.querySelector("#txtCommunityRating").value,CriticRating:form.querySelector("#txtCriticRating").value,IndexNumber:form.querySelector("#txtIndexNumber").value||null,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:getListValues(form.querySelector("#listGenres")),Tags:getListValues(form.querySelector("#listTags")),Studios:getListValues(form.querySelector("#listStudios")).map(function(element){return{Name:element}}),PremiereDate:getDateValue(form,"#txtPremiereDate","PremiereDate"),DateCreated:getDateValue(form,"#txtDateAdded","DateCreated"),EndDate:getDateValue(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;return item.Taglines=tagline?[tagline]:[],submitUpdatedItem(form,item),e.preventDefault(),e.stopPropagation(),!1}function getListValues(list){return Array.prototype.map.call(list.querySelectorAll(".textValue"),function(el){return el.textContent})}function addElementToList(source,sortCallback){require(["prompt"],function(prompt){prompt({label:"Value:"}).then(function(text){var list=dom.parentWithClass(source,"editableListviewContainer").querySelector(".paperList"),items=getListValues(list);items.push(text),populateListView(list,items,sortCallback)})})}function removeElementFromList(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){-1===index&¤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 onEditorClick(e){var btnRemoveFromEditorList=dom.parentWithClass(e.target,"btnRemoveFromEditorList");if(btnRemoveFromEditorList)return void removeElementFromList(btnRemoveFromEditorList);var btnAddTextItem=dom.parentWithClass(e.target,"btnAddTextItem");btnAddTextItem&&addElementToList(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))})}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+="
"}context.querySelector(".externalIds",context).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&&!1!==item.EnableMediaSourceDisplay?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&&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||"Book"===item.Type?hideElement("#peopleCollapsible",context):showElement("#peopleCollapsible",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("#studiosCollapsible",context),"TvChannel"===item.Type?showElement("#fldOfficialRating",context):hideElement("#fldOfficialRating",context),hideElement("#fldCustomRating",context)):(showElement("#fldCommunityRating",context),showElement("#genresCollapsible",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),"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),hideElement(".seriesDisplayOrderDescription",context),context.querySelector("#selectDisplayOrder").innerHTML='"):"Series"===item.Type?(showElement("#fldDisplayOrder",context),showElement(".seriesDisplayOrderDescription",context),context.querySelector("#selectDisplayOrder").innerHTML=''):(context.querySelector("#selectDisplayOrder").innerHTML="",hideElement("#fldDisplayOrder",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=-1!==(item.AirDays||[]).indexOf(el.getAttribute("data-day"))}),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),fillMetadataSettings(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("#txtCriticRating").value=item.CriticRating||"",context.querySelector("#txtIndexNumber").value=null==item.IndexNumber?"":item.IndexNumber,context.querySelector("#txtParentIndexNumber").value=null==item.ParentIndexNumber?"":item.ParentIndexNumber,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(";"),item.Type,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||[],void 0===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 html="",elem=context.querySelector("#peopleList"),i=0,length=people.length;i',html+='person',html+='
',html+='",html+="
",html+='',html+="
"}elem.innerHTML=html}function getLockedFieldsHtml(fields,currentFields){for(var html="",i=0;i",html+=""+name+"",html+=""}return html}function fillMetadataSettings(context,item,lockedFields){var container=context.querySelector(".providerSettingsContainer");lockedFields=lockedFields||[];var lockedFieldsList=[{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?lockedFieldsList.push({name:globalize.translate("sharedcomponents#BirthLocation"),value:"ProductionLocations"}):lockedFieldsList.push({name:globalize.translate("sharedcomponents#ProductionLocations"),value:"ProductionLocations"}),"Series"===item.Type&&lockedFieldsList.push({name:globalize.translate("Runtime"),value:"Runtime"}),lockedFieldsList.push({name:globalize.translate("sharedcomponents#Studios"),value:"Studios"}),lockedFieldsList.push({name:globalize.translate("sharedcomponents#Tags"),value:"Tags"});var html="";html+="

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

",html+="

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

",html+=getLockedFieldsHtml(lockedFieldsList,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),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 1e32a9eb9b..ed1bb2100e 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/metadataeditor/metadataeditor.template.html +++ b/dashboard-ui/bower_components/emby-webcomponents/metadataeditor/metadataeditor.template.html @@ -3,13 +3,13 @@

${Edit}

-
+
@@ -24,7 +24,11 @@
- +
+
+ +
+
@@ -65,9 +69,6 @@
-
- -
@@ -147,21 +148,12 @@
-
-
-

- ${HeaderAlternateEpisodeNumbers} -

-
- -
-
- -
-
- +
+ +
${SeriesDisplayOrderHelp}
+
@@ -187,22 +179,12 @@
-
-

- ${HeaderDisplaySettings} -

-
- -
-
-

${Genres}

-
@@ -210,9 +192,8 @@

${People}

-
@@ -221,9 +202,8 @@

${Studios}

-
@@ -231,9 +211,8 @@

${Tags}

-
diff --git a/dashboard-ui/bower_components/emby-webcomponents/multidownload.js b/dashboard-ui/bower_components/emby-webcomponents/multidownload.js index 49f10cfaab..f47128cdd2 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/multidownload.js +++ b/dashboard-ui/bower_components/emby-webcomponents/multidownload.js @@ -1 +1 @@ -define(["browser"],function(browser){"use strict";function fallback(urls){var i=0;!function createIframe(){var frame=document.createElement("iframe");frame.style.display="none",frame.src=urls[i++],document.documentElement.appendChild(frame);var interval=setInterval(function(){"complete"!==frame.contentWindow.document.readyState&&"interactive"!==frame.contentWindow.document.readyState||(clearInterval(interval),setTimeout(function(){frame.parentNode.removeChild(frame)},1e3),i";var chkItemSelect=itemSelectionPanel.querySelector(".chkItemSelect");chkItemSelect.addEventListener("change",onSelectionChange)}}function showSelectionCommands(){var selectionCommandsPanel=currentSelectionCommandsPanel;if(!selectionCommandsPanel){selectionCommandsPanel=document.createElement("div"),selectionCommandsPanel.classList.add("selectionCommandsPanel"),document.body.appendChild(selectionCommandsPanel),currentSelectionCommandsPanel=selectionCommandsPanel;var html="";html+='',html+='

';var moreIcon="dots-horiz"===appHost.moreIcon?"":"";html+='",selectionCommandsPanel.innerHTML=html,selectionCommandsPanel.querySelector(".btnCloseSelectionPanel").addEventListener("click",hideSelections);var btnSelectionPanelOptions=selectionCommandsPanel.querySelector(".btnSelectionPanelOptions");btnSelectionPanelOptions.addEventListener("click",showMenuForSelectedItems)}}function alertText(options){return new Promise(function(resolve,reject){require(["alert"],function(alert){alert(options).then(resolve,resolve)})})}function deleteItems(apiClient,itemIds){return new Promise(function(resolve,reject){var msg=globalize.translate("sharedcomponents#ConfirmDeleteItem"),title=globalize.translate("sharedcomponents#HeaderDeleteItem");itemIds.length>1&&(msg=globalize.translate("sharedcomponents#ConfirmDeleteItems"),title=globalize.translate("sharedcomponents#HeaderDeleteItems")),require(["confirm"],function(confirm){confirm(msg,title).then(function(){var promises=itemIds.map(function(itemId){apiClient.deleteItem(itemId)});Promise.all(promises).then(resolve,function(){alertText(globalize.translate("sharedcomponents#ErrorDeletingItem")).then(reject,reject)})},reject)})})}function showMenuForSelectedItems(e){var apiClient=connectionManager.currentApiClient();apiClient.getCurrentUser().then(function(user){var menuItems=[];menuItems.push({name:globalize.translate("sharedcomponents#AddToCollection"),id:"addtocollection",ironIcon:"add"}),menuItems.push({name:globalize.translate("sharedcomponents#AddToPlaylist"),id:"playlist",ironIcon:"playlist-add"}),user.Policy.EnableContentDeletion&&menuItems.push({name:globalize.translate("sharedcomponents#Delete"),id:"delete",ironIcon:"delete"}),user.Policy.EnableContentDownloading&&appHost.supports("filedownload"),user.Policy.EnableContentDownloading&&appHost.supports("sync")&&menuItems.push({name:globalize.translate("sharedcomponents#Download"),id:"synclocal"}),menuItems.push({name:globalize.translate("sharedcomponents#GroupVersions"),id:"groupvideos",ironIcon:"call-merge"}),menuItems.push({name:globalize.translate("sharedcomponents#MarkPlayed"),id:"markplayed"}),menuItems.push({name:globalize.translate("sharedcomponents#MarkUnplayed"),id:"markunplayed"}),menuItems.push({name:globalize.translate("sharedcomponents#RefreshMetadata"),id:"refresh"}),user.Policy.EnableContentDownloading&&menuItems.push({name:globalize.translate("sharedcomponents#Sync"),id:"sync"}),require(["actionsheet"],function(actionsheet){actionsheet.show({items:menuItems,positionTo:e.target,callback:function(id){var items=selectedItems.slice(0),serverId=apiClient.serverInfo().Id;switch(id){case"addtocollection":require(["collectionEditor"],function(collectionEditor){(new collectionEditor).show({items:items,serverId:serverId})}),hideSelections(),dispatchNeedsRefresh();break;case"playlist":require(["playlistEditor"],function(playlistEditor){(new playlistEditor).show({items:items,serverId:serverId})}),hideSelections(),dispatchNeedsRefresh();break;case"delete":deleteItems(apiClient,items).then(dispatchNeedsRefresh),hideSelections(),dispatchNeedsRefresh();break;case"groupvideos":combineVersions(apiClient,items);break;case"markplayed":items.forEach(function(itemId){apiClient.markPlayed(apiClient.getCurrentUserId(),itemId)}),hideSelections(),dispatchNeedsRefresh();break;case"markunplayed":items.forEach(function(itemId){apiClient.markUnplayed(apiClient.getCurrentUserId(),itemId)}),hideSelections(),dispatchNeedsRefresh();break;case"refresh":require(["refreshDialog"],function(refreshDialog){new refreshDialog({itemIds:items,serverId:serverId}).show()}),hideSelections(),dispatchNeedsRefresh();break;case"sync":require(["syncDialog"],function(syncDialog){syncDialog.showMenu({items:items.map(function(i){return{Id:i}}),serverId:serverId})}),hideSelections(),dispatchNeedsRefresh();break;case"synclocal":require(["syncDialog"],function(syncDialog){syncDialog.showMenu({items:items.map(function(i){return{Id:i}}),isLocalSync:!0,serverId:serverId})}),hideSelections(),dispatchNeedsRefresh()}}})})})}function dispatchNeedsRefresh(){var elems=[];[].forEach.call(selectedElements,function(i){var container=dom.parentWithAttribute(i,"is","emby-itemscontainer");container&&elems.indexOf(container)===-1&&elems.push(container)});for(var i=0,length=elems.length;i=5||deltaY>=5)&&onMouseOut(e)}}function onTouchEnd(e){onMouseOut(e)}function onMouseDown(e){touchStartTimeout&&(clearTimeout(touchStartTimeout),touchStartTimeout=null),touchTarget=e.target,touchStartTimeout=setTimeout(onTouchStartTimerFired,550)}function onMouseOut(e){touchStartTimeout&&(clearTimeout(touchStartTimeout),touchStartTimeout=null),touchTarget=null}function onTouchStartTimerFired(){if(touchTarget){var card=dom.parentWithClass(touchTarget,"card");touchTarget=null,card&&showSelections(card)}}function initTapHold(element){browser.touch&&!browser.safari?element.addEventListener("contextmenu",onTapHold):(dom.addEventListener(element,"touchstart",onTouchStart,{passive:!0}),dom.addEventListener(element,"touchmove",onTouchMove,{passive:!0}),dom.addEventListener(element,"touchend",onTouchEnd,{passive:!0}),dom.addEventListener(element,"touchcancel",onTouchEnd,{passive:!0}),dom.addEventListener(element,"mousedown",onMouseDown,{passive:!0}),dom.addEventListener(element,"mouseleave",onMouseOut,{passive:!0}),dom.addEventListener(element,"mouseup",onMouseOut,{passive:!0}))}var touchTarget,touchStartTimeout,touchStartX,touchStartY,self=this,container=options.container;initTapHold(container),options.bindOnClick!==!1&&container.addEventListener("click",onContainerClick),self.onContainerClick=onContainerClick,self.destroy=function(){container.removeEventListener("click",onContainerClick),container.removeEventListener("contextmenu",onTapHold);var element=container;dom.removeEventListener(element,"touchstart",onTouchStart,{passive:!0}),dom.removeEventListener(element,"touchmove",onTouchMove,{passive:!0}),dom.removeEventListener(element,"touchend",onTouchEnd,{passive:!0}),dom.removeEventListener(element,"mousedown",onMouseDown,{passive:!0}),dom.removeEventListener(element,"mouseleave",onMouseOut,{passive:!0}),dom.removeEventListener(element,"mouseup",onMouseOut,{passive:!0})}}}); \ No newline at end of file +define(["browser","appStorage","apphost","loading","connectionManager","globalize","appRouter","dom","css!./multiselect"],function(browser,appStorage,appHost,loading,connectionManager,globalize,appRouter,dom){"use strict";function hideSelections(){var selectionCommandsPanel=currentSelectionCommandsPanel;if(selectionCommandsPanel){selectionCommandsPanel.parentNode.removeChild(selectionCommandsPanel),currentSelectionCommandsPanel=null,selectedItems=[],selectedElements=[];for(var elems=document.querySelectorAll(".itemSelectionPanel"),i=0,length=elems.length;i";itemSelectionPanel.querySelector(".chkItemSelect").addEventListener("change",onSelectionChange)}}function showSelectionCommands(){var selectionCommandsPanel=currentSelectionCommandsPanel;if(!selectionCommandsPanel){selectionCommandsPanel=document.createElement("div"),selectionCommandsPanel.classList.add("selectionCommandsPanel"),document.body.appendChild(selectionCommandsPanel),currentSelectionCommandsPanel=selectionCommandsPanel;var html="";html+='',html+='

';html+='',selectionCommandsPanel.innerHTML=html,selectionCommandsPanel.querySelector(".btnCloseSelectionPanel").addEventListener("click",hideSelections);var btnSelectionPanelOptions=selectionCommandsPanel.querySelector(".btnSelectionPanelOptions");dom.addEventListener(btnSelectionPanelOptions,"click",showMenuForSelectedItems,{passive:!0})}}function alertText(options){return new Promise(function(resolve,reject){require(["alert"],function(alert){alert(options).then(resolve,resolve)})})}function deleteItems(apiClient,itemIds){return new Promise(function(resolve,reject){var msg=globalize.translate("sharedcomponents#ConfirmDeleteItem"),title=globalize.translate("sharedcomponents#HeaderDeleteItem");itemIds.length>1&&(msg=globalize.translate("sharedcomponents#ConfirmDeleteItems"),title=globalize.translate("sharedcomponents#HeaderDeleteItems")),require(["confirm"],function(confirm){confirm(msg,title).then(function(){var promises=itemIds.map(function(itemId){apiClient.deleteItem(itemId)});Promise.all(promises).then(resolve,function(){alertText(globalize.translate("sharedcomponents#ErrorDeletingItem")).then(reject,reject)})},reject)})})}function showMenuForSelectedItems(e){var apiClient=connectionManager.currentApiClient();apiClient.getCurrentUser().then(function(user){var menuItems=[];menuItems.push({name:globalize.translate("sharedcomponents#AddToCollection"),id:"addtocollection",ironIcon:"add"}),menuItems.push({name:globalize.translate("sharedcomponents#AddToPlaylist"),id:"playlist",ironIcon:"playlist-add"}),user.Policy.EnableContentDeletion&&menuItems.push({name:globalize.translate("sharedcomponents#Delete"),id:"delete",ironIcon:"delete"}),user.Policy.EnableContentDownloading&&appHost.supports("filedownload"),user.Policy.EnableContentDownloading&&appHost.supports("sync")&&menuItems.push({name:globalize.translate("sharedcomponents#Download"),id:"synclocal"}),menuItems.push({name:globalize.translate("sharedcomponents#GroupVersions"),id:"groupvideos",ironIcon:"call-merge"}),menuItems.push({name:globalize.translate("sharedcomponents#MarkPlayed"),id:"markplayed"}),menuItems.push({name:globalize.translate("sharedcomponents#MarkUnplayed"),id:"markunplayed"}),menuItems.push({name:globalize.translate("sharedcomponents#RefreshMetadata"),id:"refresh"}),user.Policy.EnableContentDownloading&&menuItems.push({name:globalize.translate("sharedcomponents#Sync"),id:"sync"}),require(["actionsheet"],function(actionsheet){actionsheet.show({items:menuItems,positionTo:e.target,callback:function(id){var items=selectedItems.slice(0),serverId=apiClient.serverInfo().Id;switch(id){case"addtocollection":require(["collectionEditor"],function(collectionEditor){(new collectionEditor).show({items:items,serverId:serverId})}),hideSelections(),dispatchNeedsRefresh();break;case"playlist":require(["playlistEditor"],function(playlistEditor){(new playlistEditor).show({items:items,serverId:serverId})}),hideSelections(),dispatchNeedsRefresh();break;case"delete":deleteItems(apiClient,items).then(dispatchNeedsRefresh),hideSelections(),dispatchNeedsRefresh();break;case"groupvideos":combineVersions(apiClient,items);break;case"markplayed":items.forEach(function(itemId){apiClient.markPlayed(apiClient.getCurrentUserId(),itemId)}),hideSelections(),dispatchNeedsRefresh();break;case"markunplayed":items.forEach(function(itemId){apiClient.markUnplayed(apiClient.getCurrentUserId(),itemId)}),hideSelections(),dispatchNeedsRefresh();break;case"refresh":require(["refreshDialog"],function(refreshDialog){new refreshDialog({itemIds:items,serverId:serverId}).show()}),hideSelections(),dispatchNeedsRefresh();break;case"sync":require(["syncDialog"],function(syncDialog){syncDialog.showMenu({items:items.map(function(i){return{Id:i}}),serverId:serverId})}),hideSelections(),dispatchNeedsRefresh();break;case"synclocal":require(["syncDialog"],function(syncDialog){syncDialog.showMenu({items:items.map(function(i){return{Id:i}}),isLocalSync:!0,serverId:serverId})}),hideSelections(),dispatchNeedsRefresh()}}})})})}function dispatchNeedsRefresh(){var elems=[];[].forEach.call(selectedElements,function(i){var container=dom.parentWithAttribute(i,"is","emby-itemscontainer");container&&-1===elems.indexOf(container)&&elems.push(container)});for(var i=0,length=elems.length;i=5||deltaY>=5)&&onMouseOut(e)}}function onTouchEnd(e){onMouseOut(e)}function onMouseDown(e){touchStartTimeout&&(clearTimeout(touchStartTimeout),touchStartTimeout=null),touchTarget=e.target,touchStartTimeout=setTimeout(onTouchStartTimerFired,550)}function onMouseOut(e){touchStartTimeout&&(clearTimeout(touchStartTimeout),touchStartTimeout=null),touchTarget=null}function onTouchStartTimerFired(){if(touchTarget){var card=dom.parentWithClass(touchTarget,"card");touchTarget=null,card&&showSelections(card)}}var touchTarget,touchStartTimeout,touchStartX,touchStartY,self=this,container=options.container;!function(element){browser.touch&&!browser.safari?element.addEventListener("contextmenu",onTapHold):(dom.addEventListener(element,"touchstart",onTouchStart,{passive:!0}),dom.addEventListener(element,"touchmove",onTouchMove,{passive:!0}),dom.addEventListener(element,"touchend",onTouchEnd,{passive:!0}),dom.addEventListener(element,"touchcancel",onTouchEnd,{passive:!0}),dom.addEventListener(element,"mousedown",onMouseDown,{passive:!0}),dom.addEventListener(element,"mouseleave",onMouseOut,{passive:!0}),dom.addEventListener(element,"mouseup",onMouseOut,{passive:!0}))}(container),!1!==options.bindOnClick&&container.addEventListener("click",onContainerClick),self.onContainerClick=onContainerClick,self.destroy=function(){container.removeEventListener("click",onContainerClick),container.removeEventListener("contextmenu",onTapHold);var element=container;dom.removeEventListener(element,"touchstart",onTouchStart,{passive:!0}),dom.removeEventListener(element,"touchmove",onTouchMove,{passive:!0}),dom.removeEventListener(element,"touchend",onTouchEnd,{passive:!0}),dom.removeEventListener(element,"mousedown",onMouseDown,{passive:!0}),dom.removeEventListener(element,"mouseleave",onMouseOut,{passive:!0}),dom.removeEventListener(element,"mouseup",onMouseOut,{passive:!0})}}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/native-promise-only/lib/npo.src.js b/dashboard-ui/bower_components/emby-webcomponents/native-promise-only/lib/npo.src.js index 9378074fbc..a0c48d0ece 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/native-promise-only/lib/npo.src.js +++ b/dashboard-ui/bower_components/emby-webcomponents/native-promise-only/lib/npo.src.js @@ -1 +1 @@ -!function(name,context,definition){context[name]=definition(),"undefined"!=typeof module&&module.exports?module.exports=context[name]:"function"==typeof define&&define.amd&&define(function(){return context[name]})}("Promise","undefined"!=typeof global?global:this,function(){"use strict";function schedule(fn,self){scheduling_queue.add(fn,self),cycle||(cycle=timer(scheduling_queue.drain))}function isThenable(o){var _then,o_type=typeof o;return null==o||"object"!=o_type&&"function"!=o_type||(_then=o.then),"function"==typeof _then&&_then}function notify(){for(var i=0;i0&&schedule(notify,self))}catch(err){reject.call(new MakeDefWrapper(self),err)}}}function reject(msg){var self=this;self.triggered||(self.triggered=!0,self.def&&(self=self.def),self.msg=msg,self.state=2,self.chain.length>0&&schedule(notify,self))}function iteratePromises(Constructor,arr,resolver,rejecter){for(var idx=0;idx0&&schedule(notify,self))}catch(err){reject.call(new MakeDefWrapper(self),err)}}}function reject(msg){var self=this;self.triggered||(self.triggered=!0,self.def&&(self=self.def),self.msg=msg,self.state=2,self.chain.length>0&&schedule(notify,self))}function iteratePromises(Constructor,arr,resolver,rejecter){for(var idx=0;idx12&&(newItems.length=12),apiClient.getItems(apiClient.getCurrentUserId(),{Recursive:!0,Limit:3,Filters:"IsNotFolder",SortBy:"DateCreated",SortOrder:"Descending",Ids:newItems.join(","),MediaTypes:"Audio,Video",EnableTotalRecordCount:!1}).then(function(result){for(var items=result.Items,i=0,length=items.length;i';return html+=text,html+=""}function seriesImageUrl(item,options){if(!item)throw new Error("item cannot be null!");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){if(!item)throw new Error("item cannot be null!");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)):item.AlbumId&&item.AlbumPrimaryImageTag?(options.tag=item.AlbumPrimaryImageTag,connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.AlbumId,options)):null}function updateNowPlayingInfo(state){var nowPlayingItem=state.NowPlayingItem,textLines=nowPlayingItem?nowPlayingHelper.getNowPlayingNames(nowPlayingItem):[];textLines.length>1&&(textLines[1].secondary=!0);var serverId=nowPlayingItem?nowPlayingItem.ServerId:null;nowPlayingTextElement.innerHTML=textLines.map(function(nowPlayingName){var cssClass=nowPlayingName.secondary?' class="nowPlayingBarSecondaryText"':"";return nowPlayingName.item?""+getTextActionButton(nowPlayingName.item,nowPlayingName.text,serverId)+"":""+nowPlayingName.text+""}).join("");var imgHeight=70,url=nowPlayingItem?seriesImageUrl(nowPlayingItem,{height:imgHeight})||imageUrl(nowPlayingItem,{height:imgHeight}):null,isRefreshing=!1;if(url!==currentImgUrl&&(currentImgUrl=url,isRefreshing=!0,imageLoader.lazyImage(nowPlayingImageElement,url)),nowPlayingItem.Id){if(isRefreshing){var apiClient=connectionManager.getApiClient(nowPlayingItem.ServerId);apiClient.getItem(apiClient.getCurrentUserId(),nowPlayingItem.Id).then(function(item){var userData=item.UserData||{},likes=null==userData.Likes?"":userData.Likes;nowPlayingUserData.innerHTML=''})}}else nowPlayingUserData.innerHTML=""}function onPlaybackStart(e,state){var player=this;onStateChanged.call(player,e,state)}function onRepeatModeChange(e){if(isEnabled){var player=this;updateRepeatModeDisplay(playbackManager.getRepeatMode(player))}}function showNowPlayingBar(){return isVisibilityAllowed?void getNowPlayingBar().then(slideUp):void hideNowPlayingBar()}function hideNowPlayingBar(){isEnabled=!1;var elem=document.getElementsByClassName("nowPlayingBar")[0];elem&&slideDown(elem)}function onPlaybackStopped(e,state){var player=this;player.isLocalPlayer?"Audio"!==state.NextMediaType&&hideNowPlayingBar():state.NextMediaType||hideNowPlayingBar()}function onPlayPauseStateChanged(e){if(isEnabled){var player=this;updatePlayPauseState(player.paused())}}function onStateChanged(event,state){var player=this;return!state.NowPlayingItem||layoutManager.tv?void hideNowPlayingBar():player.isLocalPlayer&&state.NowPlayingItem&&"Video"===state.NowPlayingItem.MediaType?void hideNowPlayingBar():(isEnabled=!0,nowPlayingBarElement?void updatePlayerStateInternal(event,state,player):void getNowPlayingBar().then(function(){updatePlayerStateInternal(event,state,player)}))}function onTimeUpdate(e){if(isEnabled){var now=(new Date).getTime();if(!(now-lastUpdateTime<700)){lastUpdateTime=now;var player=this;currentRuntimeTicks=playbackManager.duration(player),updateTimeDisplay(playbackManager.currentTime(player),currentRuntimeTicks,playbackManager.getBufferedRanges(player))}}}function releaseCurrentPlayer(){var player=currentPlayer;player&&(events.off(player,"playbackstart",onPlaybackStart),events.off(player,"statechange",onPlaybackStart),events.off(player,"repeatmodechange",onRepeatModeChange),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),currentPlayer=null,hideNowPlayingBar())}function onVolumeChanged(e){if(isEnabled){var player=this;updatePlayerVolumeState(player.isMuted(),player.getVolume())}}function refreshFromPlayer(player){var state=playbackManager.getPlayerState(player);onStateChanged.call(player,{type:"init"},state)}function bindToPlayer(player){player!==currentPlayer&&(releaseCurrentPlayer(),currentPlayer=player,player&&(refreshFromPlayer(player),events.on(player,"playbackstart",onPlaybackStart),events.on(player,"statechange",onPlaybackStart),events.on(player,"repeatmodechange",onRepeatModeChange),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)))}var currentPlayer,currentTimeElement,nowPlayingImageElement,nowPlayingTextElement,nowPlayingUserData,muteButton,volumeSlider,volumeSliderContainer,playPauseButtons,positionSlider,toggleRepeatButton,toggleRepeatButtonIcon,isEnabled,nowPlayingBarElement,currentImgUrl,currentPlayerSupportedCommands=[],lastUpdateTime=0,lastPlayerState={},currentRuntimeTicks=0,isVisibilityAllowed=!0;events.on(playbackManager,"playerchange",function(){bindToPlayer(playbackManager.getCurrentPlayer())}),bindToPlayer(playbackManager.getCurrentPlayer()),document.addEventListener("viewbeforeshow",function(e){e.detail.options.enableMediaControl?isVisibilityAllowed||(isVisibilityAllowed=!0,currentPlayer?refreshFromPlayer(currentPlayer):hideNowPlayingBar()):isVisibilityAllowed&&(isVisibilityAllowed=!1,hideNowPlayingBar())})}); \ No newline at end of file +define(["require","datetime","itemHelper","events","browser","imageLoader","layoutManager","playbackManager","nowPlayingHelper","apphost","dom","connectionManager","paper-icon-button-light","emby-ratingbutton"],function(require,datetime,itemHelper,events,browser,imageLoader,layoutManager,playbackManager,nowPlayingHelper,appHost,dom,connectionManager){"use strict";function getNowPlayingBarHtml(){var html="";return html+='
',html+='
',html+='
',html+='',html+="
",html+='
',html+='
',html+='
',html+="
",html+='
',html+='',html+='',html+='',html+='',html+='
',html+="
",html+='
',html+='',html+='
',html+='',html+="
",html+='',html+='
',html+="
",html+='',html+='',html+="
",html+="
",html+="
"}function onSlideDownComplete(){this.classList.add("hide")}function slideDown(elem){elem.offsetWidth,elem.classList.add("nowPlayingBar-hidden"),dom.addEventListener(elem,dom.whichTransitionEvent(),onSlideDownComplete,{once:!0})}function slideUp(elem){dom.removeEventListener(elem,dom.whichTransitionEvent(),onSlideDownComplete,{once:!0}),elem.classList.remove("hide"),elem.offsetWidth,elem.classList.remove("nowPlayingBar-hidden")}function onPlayPauseClick(){playbackManager.playPause(currentPlayer)}function bindEvents(elem){currentTimeElement=elem.querySelector(".nowPlayingBarCurrentTime"),nowPlayingImageElement=elem.querySelector(".nowPlayingImage"),nowPlayingTextElement=elem.querySelector(".nowPlayingBarText"),nowPlayingUserData=elem.querySelector(".nowPlayingBarUserDataButtons"),muteButton=elem.querySelector(".muteButton"),muteButton.addEventListener("click",function(){currentPlayer&&playbackManager.toggleMute(currentPlayer)}),elem.querySelector(".stopButton").addEventListener("click",function(){currentPlayer&&playbackManager.stop(currentPlayer)});var i,length;for(playPauseButtons=elem.querySelectorAll(".playPauseButton"),i=0,length=playPauseButtons.length;i';return html+=text,html+=""}function seriesImageUrl(item,options){if(!item)throw new Error("item cannot be null!");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){if(!item)throw new Error("item cannot be null!");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)):item.AlbumId&&item.AlbumPrimaryImageTag?(options.tag=item.AlbumPrimaryImageTag,connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.AlbumId,options)):null}function updateNowPlayingInfo(state){var nowPlayingItem=state.NowPlayingItem,textLines=nowPlayingItem?nowPlayingHelper.getNowPlayingNames(nowPlayingItem):[];textLines.length>1&&(textLines[1].secondary=!0);var serverId=nowPlayingItem?nowPlayingItem.ServerId:null;nowPlayingTextElement.innerHTML=textLines.map(function(nowPlayingName){var cssClass=nowPlayingName.secondary?' class="nowPlayingBarSecondaryText"':"";return nowPlayingName.item?""+getTextActionButton(nowPlayingName.item,nowPlayingName.text,serverId)+"":""+nowPlayingName.text+""}).join("");var url=nowPlayingItem?seriesImageUrl(nowPlayingItem,{height:70})||imageUrl(nowPlayingItem,{height:70}):null,isRefreshing=!1;if(url!==currentImgUrl&&(currentImgUrl=url,isRefreshing=!0,url?imageLoader.lazyImage(nowPlayingImageElement,url):nowPlayingImageElement.style.backgroundImage=""),nowPlayingItem.Id){if(isRefreshing){var apiClient=connectionManager.getApiClient(nowPlayingItem.ServerId);apiClient.getItem(apiClient.getCurrentUserId(),nowPlayingItem.Id).then(function(item){var userData=item.UserData||{},likes=null==userData.Likes?"":userData.Likes;nowPlayingUserData.innerHTML=''})}}else nowPlayingUserData.innerHTML=""}function onPlaybackStart(e,state){var player=this;onStateChanged.call(player,e,state)}function onRepeatModeChange(e){if(isEnabled){var player=this;updateRepeatModeDisplay(playbackManager.getRepeatMode(player))}}function showNowPlayingBar(){if(!isVisibilityAllowed)return void hideNowPlayingBar();getNowPlayingBar().then(slideUp)}function hideNowPlayingBar(){isEnabled=!1;var elem=document.getElementsByClassName("nowPlayingBar")[0];elem&&slideDown(elem)}function onPlaybackStopped(e,state){this.isLocalPlayer?"Audio"!==state.NextMediaType&&hideNowPlayingBar():state.NextMediaType||hideNowPlayingBar()}function onPlayPauseStateChanged(e){if(isEnabled){updatePlayPauseState(this.paused())}}function onStateChanged(event,state){var player=this;return!state.NowPlayingItem||layoutManager.tv?void hideNowPlayingBar():player.isLocalPlayer&&state.NowPlayingItem&&"Video"===state.NowPlayingItem.MediaType?void hideNowPlayingBar():(isEnabled=!0,nowPlayingBarElement?void updatePlayerStateInternal(event,state,player):void getNowPlayingBar().then(function(){updatePlayerStateInternal(event,state,player)}))}function onTimeUpdate(e){if(isEnabled){var now=(new Date).getTime();if(!(now-lastUpdateTime<700)){lastUpdateTime=now;var player=this;currentRuntimeTicks=playbackManager.duration(player),updateTimeDisplay(playbackManager.currentTime(player),currentRuntimeTicks,playbackManager.getBufferedRanges(player))}}}function releaseCurrentPlayer(){var player=currentPlayer;player&&(events.off(player,"playbackstart",onPlaybackStart),events.off(player,"statechange",onPlaybackStart),events.off(player,"repeatmodechange",onRepeatModeChange),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),currentPlayer=null,hideNowPlayingBar())}function onVolumeChanged(e){if(isEnabled){var player=this;updatePlayerVolumeState(player.isMuted(),player.getVolume())}}function refreshFromPlayer(player){var state=playbackManager.getPlayerState(player);onStateChanged.call(player,{type:"init"},state)}function bindToPlayer(player){player!==currentPlayer&&(releaseCurrentPlayer(),currentPlayer=player,player&&(refreshFromPlayer(player),events.on(player,"playbackstart",onPlaybackStart),events.on(player,"statechange",onPlaybackStart),events.on(player,"repeatmodechange",onRepeatModeChange),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)))}var currentPlayer,currentTimeElement,nowPlayingImageElement,nowPlayingTextElement,nowPlayingUserData,muteButton,volumeSlider,volumeSliderContainer,playPauseButtons,positionSlider,toggleRepeatButton,toggleRepeatButtonIcon,isEnabled,nowPlayingBarElement,currentImgUrl,currentPlayerSupportedCommands=[],lastUpdateTime=0,lastPlayerState={},currentRuntimeTicks=0,isVisibilityAllowed=!0;events.on(playbackManager,"playerchange",function(){bindToPlayer(playbackManager.getCurrentPlayer())}),bindToPlayer(playbackManager.getCurrentPlayer()),document.addEventListener("viewbeforeshow",function(e){e.detail.options.enableMediaControl?isVisibilityAllowed||(isVisibilityAllowed=!0,currentPlayer?refreshFromPlayer(currentPlayer):hideNowPlayingBar()):isVisibilityAllowed&&(isVisibilityAllowed=!1,hideNowPlayingBar())})}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/packagemanager.js b/dashboard-ui/bower_components/emby-webcomponents/packagemanager.js index 18bc41b82a..9da2a3cddc 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/packagemanager.js +++ b/dashboard-ui/bower_components/emby-webcomponents/packagemanager.js @@ -1 +1 @@ -define(["appSettings","pluginManager"],function(appSettings,pluginManager){"use strict";function addPackage(packageManager,pkg){packageManager.packagesList=packageManager.packagesList.filter(function(p){return p.name!==pkg.name}),packageManager.packagesList.push(pkg)}function removeUrl(url){var manifestUrls=JSON.parse(appSettings.get(settingsKey)||"[]");manifestUrls=manifestUrls.filter(function(i){return i!==url}),appSettings.set(settingsKey,JSON.stringify(manifestUrls))}function loadPackage(packageManager,url,throwError){return new Promise(function(resolve,reject){var xhr=new XMLHttpRequest,originalUrl=url;url+=url.indexOf("?")===-1?"?":"&",url+="t="+(new Date).getTime(),xhr.open("GET",url,!0);var onError=function(){throwError===!0?reject():(removeUrl(originalUrl),resolve())};xhr.onload=function(e){if(this.status<400){var pkg=JSON.parse(this.response);pkg.url=originalUrl,addPackage(packageManager,pkg);var plugins=pkg.plugins||[];pkg.plugin&&plugins.push(pkg.plugin);var promises=plugins.map(function(pluginUrl){return pluginManager.loadPlugin(packageManager.mapPath(pkg,pluginUrl))});Promise.all(promises).then(resolve,resolve)}else onError()},xhr.onerror=onError,xhr.send()})}function PackageManager(){this.packagesList=[]}var settingsKey="installedpackages1";return PackageManager.prototype.init=function(){var manifestUrls=JSON.parse(appSettings.get(settingsKey)||"[]"),instance=this;return Promise.all(manifestUrls.map(function(u){return loadPackage(instance,u)})).then(function(){return Promise.resolve()},function(){return Promise.resolve()})},PackageManager.prototype.packages=function(){return this.packagesList.slice(0)},PackageManager.prototype.install=function(url){return loadPackage(this,url,!0).then(function(pkg){var manifestUrls=JSON.parse(appSettings.get(settingsKey)||"[]");return manifestUrls.indexOf(url)===-1&&(manifestUrls.push(url),appSettings.set(settingsKey,JSON.stringify(manifestUrls))),pkg})},PackageManager.prototype.uninstall=function(name){var pkg=this.packagesList.filter(function(p){return p.name===name})[0];return pkg&&(this.packagesList=this.packagesList.filter(function(p){return p.name!==name}),removeUrl(pkg.url)),Promise.resolve()},PackageManager.prototype.mapPath=function(pkg,pluginUrl){var urlLower=pluginUrl.toLowerCase();if(0===urlLower.indexOf("http:")||0===urlLower.indexOf("https:")||0===urlLower.indexOf("file:"))return pluginUrl;var packageUrl=pkg.url;return packageUrl=packageUrl.substring(0,packageUrl.lastIndexOf("/")),packageUrl+="/",packageUrl+=pluginUrl},new PackageManager}); \ No newline at end of file +define(["appSettings","pluginManager"],function(appSettings,pluginManager){"use strict";function addPackage(packageManager,pkg){packageManager.packagesList=packageManager.packagesList.filter(function(p){return p.name!==pkg.name}),packageManager.packagesList.push(pkg)}function removeUrl(url){var manifestUrls=JSON.parse(appSettings.get(settingsKey)||"[]");manifestUrls=manifestUrls.filter(function(i){return i!==url}),appSettings.set(settingsKey,JSON.stringify(manifestUrls))}function loadPackage(packageManager,url,throwError){return new Promise(function(resolve,reject){var xhr=new XMLHttpRequest,originalUrl=url;url+=-1===url.indexOf("?")?"?":"&",url+="t="+(new Date).getTime(),xhr.open("GET",url,!0);var onError=function(){!0===throwError?reject():(removeUrl(originalUrl),resolve())};xhr.onload=function(e){if(this.status<400){var pkg=JSON.parse(this.response);pkg.url=originalUrl,addPackage(packageManager,pkg);var plugins=pkg.plugins||[];pkg.plugin&&plugins.push(pkg.plugin);var promises=plugins.map(function(pluginUrl){return pluginManager.loadPlugin(packageManager.mapPath(pkg,pluginUrl))});Promise.all(promises).then(resolve,resolve)}else onError()},xhr.onerror=onError,xhr.send()})}function PackageManager(){this.packagesList=[]}var settingsKey="installedpackages1";return PackageManager.prototype.init=function(){var manifestUrls=JSON.parse(appSettings.get(settingsKey)||"[]"),instance=this;return Promise.all(manifestUrls.map(function(u){return loadPackage(instance,u)})).then(function(){return Promise.resolve()},function(){return Promise.resolve()})},PackageManager.prototype.packages=function(){return this.packagesList.slice(0)},PackageManager.prototype.install=function(url){return loadPackage(this,url,!0).then(function(pkg){var manifestUrls=JSON.parse(appSettings.get(settingsKey)||"[]");return-1===manifestUrls.indexOf(url)&&(manifestUrls.push(url),appSettings.set(settingsKey,JSON.stringify(manifestUrls))),pkg})},PackageManager.prototype.uninstall=function(name){var pkg=this.packagesList.filter(function(p){return p.name===name})[0];return pkg&&(this.packagesList=this.packagesList.filter(function(p){return p.name!==name}),removeUrl(pkg.url)),Promise.resolve()},PackageManager.prototype.mapPath=function(pkg,pluginUrl){var urlLower=pluginUrl.toLowerCase();if(0===urlLower.indexOf("http:")||0===urlLower.indexOf("https:")||0===urlLower.indexOf("file:"))return pluginUrl;var packageUrl=pkg.url;return packageUrl=packageUrl.substring(0,packageUrl.lastIndexOf("/")),packageUrl+="/",packageUrl+=pluginUrl},new PackageManager}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/pagejs/page.js b/dashboard-ui/bower_components/emby-webcomponents/pagejs/page.js index 44b123dada..79eff40df6 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/pagejs/page.js +++ b/dashboard-ui/bower_components/emby-webcomponents/pagejs/page.js @@ -1 +1 @@ -define([],function(){"use strict";function page(path,fn){if("function"==typeof path)return page("*",path);if("function"==typeof fn)for(var route=new Route(path),i=1;i0){if(enableHistory)history.back();else if(backStack.length>2){backStack.length--;var previousState=backStack[backStack.length-1];page.show(previousState.path,previousState.state,!0,!1,!0)}page.len--}else path?setTimeout(function(){page.show(path,state)}):setTimeout(function(){page.show(base,state)})},page.enableNativeHistory=function(){return enableHistory},page.canGoBack=function(){return enableHistory?history.length>1:(page.len||0)>0},page.redirect=function(from,to){"string"==typeof from&&"string"==typeof to&&page(from,function(e){setTimeout(function(){page.replace(to)},0)}),"string"==typeof from&&"undefined"==typeof to&&setTimeout(function(){page.replace(from)},0)},page.replace=function(path,state,init,dispatch,isBack){var ctx=new Context(path,state);return ctx.isBack=isBack,page.current=ctx.path,ctx.init=init,ctx.save(),!1!==dispatch&&page.dispatch(ctx),ctx},page.dispatch=function(ctx){function nextExit(){var fn=page.exits[j++];return fn?void fn(prev,nextExit):nextEnter()}function nextEnter(){var fn=page.callbacks[i++];return ctx.path!==page.current?void(ctx.handled=!1):fn?void fn(ctx,nextEnter):unhandled(ctx)}var prev=prevContext,i=0,j=0;prevPageContext=prevContext,prevContext=ctx,prev?nextExit():nextEnter()},page.exit=function(path,fn){if("function"==typeof path)return page.exit("*",path);for(var route=new Route(path),i=1;i=href.indexOf("#!")&&(url+=location.search)}else url=location.pathname+location.search+location.hash;page.replace(url,null,!0,dispatch)}},page.stop=function(){running&&(page.current="",page.len=0,running=!1,document.removeEventListener(clickEvent,onclick,!1),window.removeEventListener("popstate",onpopstate,!1))},page.show=function(path,state,dispatch,push,isBack){var ctx=new Context(path,state);return ctx.isBack=isBack,page.current=ctx.path,!1!==dispatch&&page.dispatch(ctx),!1!==ctx.handled&&!1!==push&&ctx.pushState(),ctx},page.restorePreviousState=function(){prevContext=prevPageContext,page.show(prevContext.pathname,prevContext.state,!1,!0,!1)},page.back=function(path,state){if(enableHistory)return void history.back();if(page.len>0){if(enableHistory)history.back();else if(backStack.length>2){backStack.length--;var previousState=backStack[backStack.length-1];page.show(previousState.path,previousState.state,!0,!1,!0)}page.len--}else path?setTimeout(function(){page.show(path,state)}):setTimeout(function(){page.show(base,state)})},page.enableNativeHistory=function(){return enableHistory},page.canGoBack=function(){return enableHistory?history.length>1:(page.len||0)>0},page.redirect=function(from,to){"string"==typeof from&&"string"==typeof to&&page(from,function(e){setTimeout(function(){page.replace(to)},0)}),"string"==typeof from&&void 0===to&&setTimeout(function(){page.replace(from)},0)},page.replace=function(path,state,init,dispatch,isBack){var ctx=new Context(path,state);return ctx.isBack=isBack,page.current=ctx.path,ctx.init=init,ctx.save(),!1!==dispatch&&page.dispatch(ctx),ctx},page.dispatch=function(ctx){function nextExit(){var fn=page.exits[j++];if(!fn)return nextEnter();fn(prev,nextExit)}function nextEnter(){var fn=page.callbacks[i++];return ctx.path!==page.current?void(ctx.handled=!1):fn?void fn(ctx,nextEnter):unhandled(ctx)}var prev=prevContext,i=0,j=0;prevPageContext=prevContext,prevContext=ctx,prev?nextExit():nextEnter()},page.exit=function(path,fn){if("function"==typeof path)return page.exit("*",path);for(var route=new Route(path),i=1;i=80?iconElement.innerHTML="":brightness>=20?iconElement.innerHTML="":iconElement.innerHTML=""),progressElement&&(progressElement.style.width=(brightness||0)+"%")}function releaseCurrentPlayer(){var player=currentPlayer;player&&(events.off(player,"brightnesschange",onBrightnessChanged),events.off(player,"playbackstop",hideOsd),currentPlayer=null)}function onBrightnessChanged(e){var player=this;ensureOsdElement(),updateElementsFromPlayer(playbackManager.getBrightness(player)),showOsd()}function bindToPlayer(player){player!==currentPlayer&&(releaseCurrentPlayer(),currentPlayer=player,player&&(hideOsd(),events.on(player,"brightnesschange",onBrightnessChanged),events.on(player,"playbackstop",hideOsd)))}var currentPlayer,osdElement,iconElement,progressElement,enableAnimation,hideTimeout;events.on(playbackManager,"playerchange",function(){bindToPlayer(playbackManager.getCurrentPlayer())}),bindToPlayer(playbackManager.getCurrentPlayer())}); \ No newline at end of file +define(["events","playbackManager","dom","browser","css!./iconosd","material-icons"],function(events,playbackManager,dom,browser){"use strict";function getOsdElementHtml(){var html="";return html+='',html+='
'}function ensureOsdElement(){var elem=osdElement;elem||(enableAnimation=browser.supportsCssAnimation(),elem=document.createElement("div"),elem.classList.add("hide"),elem.classList.add("iconOsd"),elem.classList.add("iconOsd-hidden"),elem.classList.add("brightnessOsd"),elem.innerHTML=getOsdElementHtml(),iconElement=elem.querySelector("i"),progressElement=elem.querySelector(".iconOsdProgressInner"),document.body.appendChild(elem),osdElement=elem)}function onHideComplete(){this.classList.add("hide")}function showOsd(){clearHideTimeout();var elem=osdElement;dom.removeEventListener(elem,dom.whichTransitionEvent(),onHideComplete,{once:!0}),elem.classList.remove("hide"),elem.offsetWidth,requestAnimationFrame(function(){elem.classList.remove("iconOsd-hidden"),hideTimeout=setTimeout(hideOsd,3e3)})}function clearHideTimeout(){hideTimeout&&(clearTimeout(hideTimeout),hideTimeout=null)}function hideOsd(){clearHideTimeout();var elem=osdElement;elem&&(enableAnimation?(elem.offsetWidth,requestAnimationFrame(function(){elem.classList.add("iconOsd-hidden"),dom.addEventListener(elem,dom.whichTransitionEvent(),onHideComplete,{once:!0})})):onHideComplete.call(elem))}function updateElementsFromPlayer(brightness){iconElement&&(iconElement.innerHTML=brightness>=80?"":brightness>=20?"":""),progressElement&&(progressElement.style.width=(brightness||0)+"%")}function releaseCurrentPlayer(){var player=currentPlayer;player&&(events.off(player,"brightnesschange",onBrightnessChanged),events.off(player,"playbackstop",hideOsd),currentPlayer=null)}function onBrightnessChanged(e){var player=this;ensureOsdElement(),updateElementsFromPlayer(playbackManager.getBrightness(player)),showOsd()}function bindToPlayer(player){player!==currentPlayer&&(releaseCurrentPlayer(),currentPlayer=player,player&&(hideOsd(),events.on(player,"brightnesschange",onBrightnessChanged),events.on(player,"playbackstop",hideOsd)))}var currentPlayer,osdElement,iconElement,progressElement,enableAnimation,hideTimeout;events.on(playbackManager,"playerchange",function(){bindToPlayer(playbackManager.getCurrentPlayer())}),bindToPlayer(playbackManager.getCurrentPlayer())}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/playback/experimentalwarnings.js b/dashboard-ui/bower_components/emby-webcomponents/playback/experimentalwarnings.js index 5d1c1238e6..4d0f61ad75 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/playback/experimentalwarnings.js +++ b/dashboard-ui/bower_components/emby-webcomponents/playback/experimentalwarnings.js @@ -1 +1 @@ -define(["connectionManager","globalize","userSettings","apphost"],function(connectionManager,globalize,userSettings,appHost){"use strict";function showMessage(text,userSettingsKey,appHostFeature){return userSettingsKey+=(new Date).getMonth(),appHost.supports(appHostFeature)?Promise.resolve():"1"===userSettings.get(userSettingsKey,!1)?Promise.resolve():new Promise(function(resolve,reject){userSettings.set(userSettingsKey,"1",!1),require(["alert"],function(alert){return alert(text).then(resolve,resolve)})})}function showBlurayMessage(){var message="Playback of Bluray folders in this app is experimental. Some titles may not work at all. For a better experience, consider converting to mkv video files, or use an Emby app with native Bluray folder support.";return showMessage(message,"blurayexpirementalinfo","nativeblurayplayback")}function showDvdMessage(){var message="Playback of Dvd folders in this app is experimental. Some titles may not work at all. For a better experience, consider converting to mkv video files, or use an Emby app with native Dvd folder support.";return showMessage(message,"dvdexpirementalinfo","nativedvdplayback")}function showIsoMessage(){var message="Playback of ISO files in this app is experimental. Some titles may not work at all. For a better experience, consider converting to mkv video files, or use an Emby app with native ISO support.";return showMessage(message,"isoexpirementalinfo","nativeisoplayback")}function ExpirementalPlaybackWarnings(){this.name="Experimental playback warnings",this.type="preplayintercept",this.id="expirementalplaybackwarnings"}return ExpirementalPlaybackWarnings.prototype.intercept=function(options){var item=options.item;return item?"Iso"===item.VideoType?showIsoMessage():"BluRay"===item.VideoType?showBlurayMessage():"Dvd"===item.VideoType?showDvdMessage():Promise.resolve():Promise.resolve()},ExpirementalPlaybackWarnings}); \ No newline at end of file +define(["connectionManager","globalize","userSettings","apphost"],function(connectionManager,globalize,userSettings,appHost){"use strict";function getWeek(date){var d=new Date(Date.UTC(date.getFullYear(),date.getMonth(),date.getDate())),dayNum=d.getUTCDay()||7;d.setUTCDate(d.getUTCDate()+4-dayNum);var yearStart=new Date(Date.UTC(d.getUTCFullYear(),0,1));return Math.ceil(((d-yearStart)/864e5+1)/7)}function showMessage(text,userSettingsKey,appHostFeature){if(appHost.supports(appHostFeature))return Promise.resolve();var now=new Date;return userSettingsKey+=now.getFullYear()+"-w"+getWeek(now),"1"===userSettings.get(userSettingsKey,!1)?Promise.resolve():new Promise(function(resolve,reject){userSettings.set(userSettingsKey,"1",!1),require(["alert"],function(alert){return alert(text).then(resolve,resolve)})})}function showBlurayMessage(){return showMessage("Playback of Bluray folders in this app is experimental. Some titles may not work at all. For a better experience, consider converting to mkv video files, or use an Emby app with native Bluray folder support.","blurayexpirementalinfo","nativeblurayplayback")}function showDvdMessage(){return showMessage("Playback of Dvd folders in this app is experimental. Some titles may not work at all. For a better experience, consider converting to mkv video files, or use an Emby app with native Dvd folder support.","dvdexpirementalinfo","nativedvdplayback")}function showIsoMessage(){return showMessage("Playback of ISO files in this app is experimental. Some titles may not work at all. For a better experience, consider converting to mkv video files, or use an Emby app with native ISO support.","isoexpirementalinfo","nativeisoplayback")}function ExpirementalPlaybackWarnings(){this.name="Experimental playback warnings",this.type="preplayintercept",this.id="expirementalplaybackwarnings"}return ExpirementalPlaybackWarnings.prototype.intercept=function(options){var item=options.item;return item?"Iso"===item.VideoType?showIsoMessage():"BluRay"===item.VideoType?showBlurayMessage():"Dvd"===item.VideoType?showDvdMessage():Promise.resolve():Promise.resolve()},ExpirementalPlaybackWarnings}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/playback/mediasession.js b/dashboard-ui/bower_components/emby-webcomponents/playback/mediasession.js index b7aaac61cd..e5df702922 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/playback/mediasession.js +++ b/dashboard-ui/bower_components/emby-webcomponents/playback/mediasession.js @@ -1 +1 @@ -define(["playbackManager","nowPlayingHelper","events","connectionManager"],function(playbackManager,nowPlayingHelper,events,connectionManager){"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.Id,options)):item.AlbumId&&item.AlbumPrimaryImageTag?(options.tag=item.AlbumPrimaryImageTag,connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.AlbumId,options)):null}function pushImageUrl(item,height,list){var imageOptions={height:height},url=seriesImageUrl(item,imageOptions)||imageUrl(item,imageOptions);url&&list.push({src:url,sizes:height+"x"+height})}function getImageUrls(item){var list=[];return pushImageUrl(item,96,list),pushImageUrl(item,128,list),pushImageUrl(item,192,list),pushImageUrl(item,256,list),pushImageUrl(item,384,list),pushImageUrl(item,512,list),list}function updatePlayerState(player,state,eventName){var item=state.NowPlayingItem;if(!item)return void hideMediaControls();var playState=state.PlayState||{},parts=nowPlayingHelper.getNowPlayingNames(item),artist=1===parts.length?"":parts[0].text,title=parts[parts.length-1].text,isVideo="Video"===item.MediaType;if(isVideo&&parts.length>1){var temp=artist;artist=title,title=temp}var albumArtist;item.AlbumArtists&&item.AlbumArtists[0]&&(albumArtist=item.AlbumArtists[0].Name);var album=item.Album||"",itemId=item.Id,duration=parseInt(item.RunTimeTicks?item.RunTimeTicks/1e4:0),currentTime=parseInt(playState.PositionTicks?playState.PositionTicks/1e4:0),isPaused=playState.IsPaused||!1;playState.CanSeek||!1;navigator.mediaSession.metadata=new MediaMetadata({title:title,artist:artist,album:album,artwork:getImageUrls(item),albumArtist:albumArtist,currentTime:currentTime,duration:duration,paused:isPaused,itemId:itemId,mediaType:item.MediaType})}function onGeneralEvent(e){var player=this,state=playbackManager.getPlayerState(player);updatePlayerState(player,state,e.type)}function onStateChanged(e,state){var player=this;updatePlayerState(player,state,"statechange")}function onPlaybackStart(e,state){console.log("nowplaying event: "+e.type);var player=this;updatePlayerState(player,state,e.type)}function onPlaybackStopped(e,state){console.log("nowplaying event: "+e.type);hideMediaControls()}function releaseCurrentPlayer(){currentPlayer&&(events.off(currentPlayer,"playbackstart",onPlaybackStart),events.off(currentPlayer,"playbackstop",onPlaybackStopped),events.off(currentPlayer,"unpause",onGeneralEvent),events.off(currentPlayer,"pause",onGeneralEvent),events.off(currentPlayer,"statechange",onStateChanged),events.off(currentPlayer,"timeupdate",onGeneralEvent),currentPlayer=null,hideMediaControls())}function hideMediaControls(){navigator.mediaSession.metadata=null}function bindToPlayer(player){if(releaseCurrentPlayer(),player){currentPlayer=player,console.log("binding remotecontrols to "+player.name);var state=playbackManager.getPlayerState(player);updatePlayerState(player,state,"init"),events.on(currentPlayer,"playbackstart",onPlaybackStart),events.on(currentPlayer,"playbackstop",onPlaybackStopped),events.on(currentPlayer,"unpause",onGeneralEvent),events.on(currentPlayer,"pause",onGeneralEvent),events.on(currentPlayer,"statechange",onStateChanged),events.on(currentPlayer,"timeupdate",onGeneralEvent)}}function execute(name){playbackManager[name](currentPlayer)}var currentPlayer;console.log("binding remotecontrols to playbackManager"),navigator.mediaSession.setActionHandler("previoustrack",function(){execute("previousChapter")}),navigator.mediaSession.setActionHandler("nexttrack",function(){execute("nextChapter")}),navigator.mediaSession.setActionHandler("play",function(){execute("unpause")}),navigator.mediaSession.setActionHandler("pause",function(){execute("pause")}),navigator.mediaSession.setActionHandler("seekbackward",function(){execute("rewind")}),navigator.mediaSession.setActionHandler("seekforward",function(){execute("fastForward")}),events.on(playbackManager,"playerchange",function(){bindToPlayer(playbackManager.getCurrentPlayer())}),bindToPlayer(playbackManager.getCurrentPlayer())}); \ No newline at end of file +define(["playbackManager","nowPlayingHelper","events","connectionManager"],function(playbackManager,nowPlayingHelper,events,connectionManager){"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.Id,options)):item.AlbumId&&item.AlbumPrimaryImageTag?(options.tag=item.AlbumPrimaryImageTag,connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.AlbumId,options)):null}function pushImageUrl(item,height,list){var imageOptions={height:height},url=seriesImageUrl(item,imageOptions)||imageUrl(item,imageOptions);url&&list.push({src:url,sizes:height+"x"+height})}function getImageUrls(item){var list=[];return pushImageUrl(item,96,list),pushImageUrl(item,128,list),pushImageUrl(item,192,list),pushImageUrl(item,256,list),pushImageUrl(item,384,list),pushImageUrl(item,512,list),list}function updatePlayerState(player,state,eventName){var item=state.NowPlayingItem;if(!item)return void hideMediaControls();var playState=state.PlayState||{},parts=nowPlayingHelper.getNowPlayingNames(item),artist=1===parts.length?"":parts[0].text,title=parts[parts.length-1].text;if("Video"===item.MediaType&&parts.length>1){var temp=artist;artist=title,title=temp}var albumArtist;item.AlbumArtists&&item.AlbumArtists[0]&&(albumArtist=item.AlbumArtists[0].Name);var album=item.Album||"",itemId=item.Id,duration=parseInt(item.RunTimeTicks?item.RunTimeTicks/1e4:0),currentTime=parseInt(playState.PositionTicks?playState.PositionTicks/1e4:0),isPaused=playState.IsPaused||!1;navigator.mediaSession.metadata=new MediaMetadata({title:title,artist:artist,album:album,artwork:getImageUrls(item),albumArtist:albumArtist,currentTime:currentTime,duration:duration,paused:isPaused,itemId:itemId,mediaType:item.MediaType})}function onGeneralEvent(e){var player=this;updatePlayerState(player,playbackManager.getPlayerState(player),e.type)}function onStateChanged(e,state){updatePlayerState(this,state,"statechange")}function onPlaybackStart(e,state){updatePlayerState(this,state,e.type)}function onPlaybackStopped(e,state){hideMediaControls()}function releaseCurrentPlayer(){currentPlayer&&(events.off(currentPlayer,"playbackstart",onPlaybackStart),events.off(currentPlayer,"playbackstop",onPlaybackStopped),events.off(currentPlayer,"unpause",onGeneralEvent),events.off(currentPlayer,"pause",onGeneralEvent),events.off(currentPlayer,"statechange",onStateChanged),events.off(currentPlayer,"timeupdate",onGeneralEvent),currentPlayer=null,hideMediaControls())}function hideMediaControls(){navigator.mediaSession.metadata=null}function bindToPlayer(player){if(releaseCurrentPlayer(),player){currentPlayer=player;updatePlayerState(player,playbackManager.getPlayerState(player),"init"),events.on(currentPlayer,"playbackstart",onPlaybackStart),events.on(currentPlayer,"playbackstop",onPlaybackStopped),events.on(currentPlayer,"unpause",onGeneralEvent),events.on(currentPlayer,"pause",onGeneralEvent),events.on(currentPlayer,"statechange",onStateChanged),events.on(currentPlayer,"timeupdate",onGeneralEvent)}}function execute(name){playbackManager[name](currentPlayer)}var currentPlayer;navigator.mediaSession.setActionHandler("previoustrack",function(){execute("previousTrack")}),navigator.mediaSession.setActionHandler("nexttrack",function(){execute("nextTrack")}),navigator.mediaSession.setActionHandler("play",function(){execute("unpause")}),navigator.mediaSession.setActionHandler("pause",function(){execute("pause")}),navigator.mediaSession.setActionHandler("seekbackward",function(){execute("rewind")}),navigator.mediaSession.setActionHandler("seekforward",function(){execute("fastForward")}),events.on(playbackManager,"playerchange",function(){bindToPlayer(playbackManager.getCurrentPlayer())}),bindToPlayer(playbackManager.getCurrentPlayer())}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/playback/nowplayinghelper.js b/dashboard-ui/bower_components/emby-webcomponents/playback/nowplayinghelper.js index d4bbf0b1b7..56781729c1 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/playback/nowplayinghelper.js +++ b/dashboard-ui/bower_components/emby-webcomponents/playback/nowplayinghelper.js @@ -1 +1 @@ -define([],function(){"use strict";function getNowPlayingNames(nowPlayingItem,includeNonNameInfo){var topItem=nowPlayingItem,bottomItem=null,topText=nowPlayingItem.Name;nowPlayingItem.AlbumId&&"Audio"===nowPlayingItem.MediaType&&(topItem={Id:nowPlayingItem.AlbumId,Name:nowPlayingItem.Album,Type:"MusicAlbum",IsFolder:!0}),"Video"===nowPlayingItem.MediaType&&(null!=nowPlayingItem.IndexNumber&&(topText=nowPlayingItem.IndexNumber+" - "+topText),null!=nowPlayingItem.ParentIndexNumber&&(topText=nowPlayingItem.ParentIndexNumber+"."+topText));var bottomText="";nowPlayingItem.ArtistItems&&nowPlayingItem.ArtistItems.length?(bottomItem={Id:nowPlayingItem.ArtistItems[0].Id,Name:nowPlayingItem.ArtistItems[0].Name,Type:"MusicArtist",IsFolder:!0},bottomText=nowPlayingItem.ArtistItems.map(function(a){return a.Name}).join(", ")):nowPlayingItem.Artists&&nowPlayingItem.Artists.length?bottomText=nowPlayingItem.Artists.join(", "):nowPlayingItem.SeriesName||nowPlayingItem.Album?(bottomText=topText,topText=nowPlayingItem.SeriesName||nowPlayingItem.Album,bottomItem=topItem,topItem=nowPlayingItem.SeriesId?{Id:nowPlayingItem.SeriesId,Name:nowPlayingItem.SeriesName,Type:"Series",IsFolder:!0}:null):nowPlayingItem.ProductionYear&&includeNonNameInfo!==!1&&(bottomText=nowPlayingItem.ProductionYear);var list=[];return list.push({text:topText,item:topItem}),bottomText&&list.push({text:bottomText,item:bottomItem}),list}return{getNowPlayingNames:getNowPlayingNames}}); \ No newline at end of file +define([],function(){"use strict";function getNowPlayingNames(nowPlayingItem,includeNonNameInfo){var topItem=nowPlayingItem,bottomItem=null,topText=nowPlayingItem.Name;nowPlayingItem.AlbumId&&"Audio"===nowPlayingItem.MediaType&&(topItem={Id:nowPlayingItem.AlbumId,Name:nowPlayingItem.Album,Type:"MusicAlbum",IsFolder:!0}),"Video"===nowPlayingItem.MediaType&&(null!=nowPlayingItem.IndexNumber&&(topText=nowPlayingItem.IndexNumber+" - "+topText),null!=nowPlayingItem.ParentIndexNumber&&(topText=nowPlayingItem.ParentIndexNumber+"."+topText));var bottomText="";nowPlayingItem.ArtistItems&&nowPlayingItem.ArtistItems.length?(bottomItem={Id:nowPlayingItem.ArtistItems[0].Id,Name:nowPlayingItem.ArtistItems[0].Name,Type:"MusicArtist",IsFolder:!0},bottomText=nowPlayingItem.ArtistItems.map(function(a){return a.Name}).join(", ")):nowPlayingItem.Artists&&nowPlayingItem.Artists.length?bottomText=nowPlayingItem.Artists.join(", "):nowPlayingItem.SeriesName||nowPlayingItem.Album?(bottomText=topText,topText=nowPlayingItem.SeriesName||nowPlayingItem.Album,bottomItem=topItem,topItem=nowPlayingItem.SeriesId?{Id:nowPlayingItem.SeriesId,Name:nowPlayingItem.SeriesName,Type:"Series",IsFolder:!0}:null):nowPlayingItem.ProductionYear&&!1!==includeNonNameInfo&&(bottomText=nowPlayingItem.ProductionYear);var list=[];return list.push({text:topText,item:topItem}),bottomText&&list.push({text:bottomText,item:bottomItem}),list}return{getNowPlayingNames:getNowPlayingNames}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/playback/playbackmanager.js b/dashboard-ui/bower_components/emby-webcomponents/playback/playbackmanager.js index 7b77669488..47731ed941 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.startIndex||options.fullscreen===!1||!enableIntros(firstItem)||!userSettings.enableCinemaMode()?Promise.resolve({Items:[]}):apiClient.getIntros(firstItem.Id)}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("remoteaudio")})}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,mediaSourceId,audioStreamIndex,subtitleStreamIndex,startIndex){return setStreamUrls(items,deviceProfile,maxBitrate,apiClient,startPositionTicks).then(function(){return loading.hide(),player.play({items:items,startPositionTicks:startPositionTicks||0,mediaSourceId:mediaSourceId,audioStreamIndex:audioStreamIndex,subtitleStreamIndex:subtitleStreamIndex,startIndex:startIndex})})}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),mediaSourceId=playOptions.mediaSourceId,audioStreamIndex=playOptions.audioStreamIndex,subtitleStreamIndex=playOptions.subtitleStreamIndex;return player&&!enableLocalPlaylistManagement(player)?sendPlaybackListToPlayer(player,playOptions.items,deviceProfile,maxBitrate,apiClient,startPosition,mediaSourceId,audioStreamIndex,subtitleStreamIndex,playOptions.startIndex):(playOptions.items=null,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(err){onPlaybackStartedFn(),onPlaybackStarted(player,playOptions,streamInfo,mediaSource),setTimeout(function(){onPlaybackError.call(player,err,{type:"mediadecodeerror",streamInfo:streamInfo})},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,item,mediaSource){if(player=player||self._currentPlayer,!player)throw new Error("player cannot be null");if(!enableLocalPlaylistManagement(player)&&player.getPlayerState)return player.getPlayerState();item=item||self.currentItem(player),mediaSource=mediaSource||self.currentMediaSource(player);var 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){return getPlaybackMediaSource(player,apiClient,deviceProfile,maxBitrate,item,startPosition,options.mediaSourceId,options.audioStreamIndex,options.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 newItemPlayOptions=newItem.playOptions||{};newItemPlayOptions.startPositionTicks=0,playInternal(newItem,newItemPlayOptions,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||{isLocalPlayer:!0},player.isLocalPlayer){var list=["GoHome","GoToSettings","VolumeUp","VolumeDown","Mute","Unmute","ToggleMute","SetVolume","SetAudioStreamIndex","SetSubtitleStreamIndex","SetMaxStreamingBitrate","DisplayContent","GoToSearch","DisplayMessage","SetRepeatMode","PlayMediaSource"];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(playbackManagerInstance,state,player,reportPlaylist,serverId,method,progressEventName){if(serverId){var info=Object.assign({},state.PlayState);info.ItemId=state.NowPlayingItem.Id,progressEventName&&(info.EventName=progressEventName),reportPlaylist&&addPlaylistToPlaybackReport(playbackManagerInstance,info,player,serverId);connectionManager.getApiClient(serverId)[method](info)}}function getPlaylistSync(playbackManagerInstance,player){return player=player||playbackManagerInstance._currentPlayer,player&&!enableLocalPlaylistManagement(player)?player.getPlaylistSync():playbackManagerInstance._playQueueManager.getPlaylist()}function addPlaylistToPlaybackReport(playbackManagerInstance,info,player,serverId){info.NowPlayingQueue=getPlaylistSync(playbackManagerInstance,player).map(function(i){var itemInfo={Id:i.Id,PlaylistItemId:i.PlaylistItemId};return i.ServerId!==serverId&&(itemInfo.ServerId=i.ServerId),itemInfo})}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||300,query.Fields="Chapters",query.ExcludeLocationTypes="Virtual",query.EnableTotalRecordCount=!1,query.CollapseBoxSetItems=!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-1===filters.indexOf("IsNotFolder")&&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,forceLocalPlayer){if(!forceLocalPlayer){var player=instance._currentPlayer;if(player&&!isAutomaticPlayer(player))return[player]}return 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.startIndex||!1===options.fullscreen||!enableIntros(firstItem)||!userSettings.enableCinemaMode()?Promise.resolve({Items:[]}):apiClient.getIntros(firstItem.Id).then(function(result){return result},function(err){return Promise.resolve({Items:[]})})}function getAudioMaxValues(deviceProfile){var maxAudioSampleRate=null,maxAudioBitDepth=null,maxAudioBitrate=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),"LessThanEqual"===condition.Condition&&"AudioBitrate"===condition.Property&&(maxAudioBitrate=condition.Value)})}),{maxAudioSampleRate:maxAudioSampleRate,maxAudioBitDepth:maxAudioBitDepth,maxAudioBitrate:maxAudioBitrate}}function getAudioStreamUrl(item,transcodingProfile,directPlayContainers,maxBitrate,apiClient,maxAudioSampleRate,maxAudioBitDepth,maxAudioBitrate,startPosition){var url="Audio/"+item.Id+"/universal";return startingPlaySession++,apiClient.getUrl(url,{UserId:apiClient.getCurrentUserId(),DeviceId:apiClient.deviceId(),MaxStreamingBitrate:maxAudioBitrate||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("remoteaudio")})}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,maxValues.maxAudioBitrate,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;i0}function getSavedMaxStreamingBitrate(apiClient,mediaType){apiClient||(apiClient=connectionManager.currentApiClient());var endpointInfo=apiClient.getSavedEndpointInfo()||{};return appSettings.maxStreamingBitrate(endpointInfo.IsInNetwork,mediaType)}function getDeliveryMethod(subtitleStream){return subtitleStream.DeliveryMethod?subtitleStream.DeliveryMethod:subtitleStream.IsExternal?"External":"Embed"}function canPlayerSeek(player){if(!player)throw new Error("player cannot be null");return-1!==(getPlayerData(player).streamInfo.url||"").toLowerCase().indexOf(".m3u8")||(player.seekable?player.seekable():!("Transcode"===self.playMethod(player))&&player.duration())}function changeStream(player,ticks,params){if(canPlayerSeek(player)&&null==params)return void player.currentTime(parseInt(ticks/1e4));params=params||{};var liveStreamId=getPlayerData(player).streamInfo.liveStreamId,lastMediaInfoQuery=getPlayerData(player).streamInfo.lastMediaInfoQuery,playSessionId=self.playSessionId(player),currentItem=self.currentItem(player);player.getDeviceProfile(currentItem,{isRetry:!1===params.EnableDirectPlay}).then(function(deviceProfile){var audioStreamIndex=null==params.AudioStreamIndex?getPlayerData(player).audioStreamIndex:params.AudioStreamIndex,subtitleStreamIndex=null==params.SubtitleStreamIndex?getPlayerData(player).subtitleStreamIndex:params.SubtitleStreamIndex,currentMediaSource=self.currentMediaSource(player),apiClient=connectionManager.getApiClient(currentItem.ServerId);ticks&&(ticks=parseInt(ticks));var maxBitrate=params.MaxStreamingBitrate||self.getMaxStreamingBitrate(player),currentPlayOptions=currentItem.playOptions||{};getPlaybackInfo(player,apiClient,currentItem,deviceProfile,maxBitrate,ticks,!0,currentMediaSource.Id,audioStreamIndex,subtitleStreamIndex,liveStreamId,params.EnableDirectPlay,params.EnableDirectStream,params.AllowVideoStreamCopy,params.AllowAudioStreamCopy).then(function(result){if(validatePlaybackInfoResult(self,result)){currentMediaSource=result.MediaSources[0];var streamInfo=createStreamInfo(apiClient,currentItem.MediaType,currentItem,currentMediaSource,ticks);if(streamInfo.fullscreen=currentPlayOptions.fullscreen,streamInfo.lastMediaInfoQuery=lastMediaInfoQuery,!streamInfo.url)return void showPlaybackInfoErrorMessage(self,"NoCompatibleStream",!0);getPlayerData(player).subtitleStreamIndex=subtitleStreamIndex,getPlayerData(player).audioStreamIndex=audioStreamIndex,getPlayerData(player).maxStreamingBitrate=maxBitrate,changeStreamToUrl(apiClient,player,playSessionId,streamInfo)}})})}function changeStreamToUrl(apiClient,player,playSessionId,streamInfo,newPositionTicks){var playerData=getPlayerData(player);playerData.isChangingStream=!0,playerData.streamInfo&&playSessionId?apiClient.stopActiveEncodings(playSessionId).then(function(){var afterSetSrc=function(){apiClient.stopActiveEncodings(playSessionId)};setSrcIntoPlayer(apiClient,player,streamInfo).then(afterSetSrc,afterSetSrc)}):setSrcIntoPlayer(apiClient,player,streamInfo)}function setSrcIntoPlayer(apiClient,player,streamInfo){return player.play(streamInfo).then(function(){var playerData=getPlayerData(player);playerData.isChangingStream=!1,playerData.streamInfo=streamInfo,streamInfo.started=!0,streamInfo.ended=!1,sendProgressUpdate(player,"timeupdate")},function(e){getPlayerData(player).isChangingStream=!1,onPlaybackError.call(player,e,{type:"mediadecodeerror",streamInfo:streamInfo})})}function translateItemsForPlayback(items,options){var promise,firstItem=items[0],serverId=firstItem.ServerId,queryOptions=options.queryOptions||{};return"Program"===firstItem.Type?promise=getItemsForPlayback(serverId,{Ids:firstItem.ChannelId}):"Playlist"===firstItem.Type?promise=getItemsForPlayback(serverId,{ParentId:firstItem.Id,SortBy:options.shuffle?"Random":null}):"MusicArtist"===firstItem.Type?promise=getItemsForPlayback(serverId,{ArtistIds:firstItem.Id,Filters:"IsNotFolder",Recursive:!0,SortBy:options.shuffle?"Random":"SortName",MediaTypes:"Audio"}):"Photo"===firstItem.MediaType?promise=getItemsForPlayback(serverId,{ParentId:firstItem.ParentId,Filters:"IsNotFolder",Recursive:!1,SortBy:options.shuffle?"Random":"SortName",MediaTypes:"Photo,Video",Limit:5e3}).then(function(result){var items=result.Items,index=items.map(function(i){return i.Id}).indexOf(firstItem.Id);return-1===index&&(index=0),options.startIndex=index,Promise.resolve(result)}):"PhotoAlbum"===firstItem.Type?promise=getItemsForPlayback(serverId,{ParentId:firstItem.Id,Filters:"IsNotFolder",Recursive:!1,SortBy:options.shuffle?"Random":"SortName",MediaTypes:"Photo,Video",Limit:1e3}):"MusicGenre"===firstItem.Type?promise=getItemsForPlayback(serverId,{GenreIds:firstItem.Id,Filters:"IsNotFolder",Recursive:!0,SortBy:options.shuffle?"Random":"SortName",MediaTypes:"Audio"}):firstItem.IsFolder?promise=getItemsForPlayback(serverId,mergePlaybackQueries({ParentId:firstItem.Id,Filters:"IsNotFolder",Recursive:!0,SortBy:options.shuffle?"Random":-1===["BoxSet"].indexOf(firstItem.Type)?"SortName":null,MediaTypes:"Audio,Video"},queryOptions)):"Episode"===firstItem.Type&&1===items.length&&!1!==getPlayer(firstItem,options).supportsProgress&&(promise=new Promise(function(resolve,reject){var apiClient=connectionManager.getApiClient(firstItem.ServerId);apiClient.getCurrentUser().then(function(user){if(!user.Configuration.EnableNextEpisodeAutoPlay||!firstItem.SeriesId)return void resolve(null);apiClient.getEpisodes(firstItem.SeriesId,{IsVirtualUnaired:!1,IsMissing:!1,UserId:apiClient.getCurrentUserId(),Fields:"Chapters"}).then(function(episodesResult){var foundItem=!1;episodesResult.Items=episodesResult.Items.filter(function(e){return!!foundItem||e.Id===firstItem.Id&&(foundItem=!0,!0)}),episodesResult.TotalRecordCount=episodesResult.Items.length,resolve(episodesResult)},reject)})})),promise?promise.then(function(result){return result?result.Items:items}):Promise.resolve(items)}function getPlayerData(player){if(!player)throw new Error("player cannot be null");if(!player.name)throw new Error("player name cannot be null");var state=playerStates[player.name];return state||(playerStates[player.name]={},state=playerStates[player.name]),player}function getCurrentTicks(player){if(!player)throw new Error("player cannot be null");var playerTime=Math.floor(1e4*(player||self._currentPlayer).currentTime());return getPlayerData(player).streamInfo&&(playerTime+=getPlayerData(player).streamInfo.transcodingOffsetTicks||0),playerTime}function playPhotos(items,options,user){var playStartIndex=options.startIndex||0,player=getPlayer(items[playStartIndex],options);return loading.hide(),options.items=items,player.play(options)}function playWithIntros(items,options,user){var playStartIndex=options.startIndex||0,firstItem=items[playStartIndex];if(firstItem||(playStartIndex=0,firstItem=items[playStartIndex]),!firstItem)return showPlaybackInfoErrorMessage(self,"NoCompatibleStream",!1),Promise.reject();if("Photo"===firstItem.MediaType)return playPhotos(items,options,user);var apiClient=connectionManager.getApiClient(firstItem.ServerId);return getIntros(firstItem,apiClient,options).then(function(introsResult){var introPlayOptions,introItems=introsResult.Items;return firstItem.playOptions=truncatePlayOptions(options),introPlayOptions=introItems.length?{fullscreen:firstItem.playOptions.fullscreen}:firstItem.playOptions,items=introItems.concat(items),introPlayOptions.items=items,introPlayOptions.startIndex=playStartIndex,playInternal(items[playStartIndex],introPlayOptions,function(){self._playQueueManager.setPlaylist(items),setPlaylistState(items[playStartIndex].PlaylistItemId,playStartIndex),loading.hide()})})}function setPlaylistState(playlistItemId,index){isNaN(index)||self._playQueueManager.setPlaylistState(playlistItemId,index)}function playInternal(item,playOptions,onPlaybackStartedFn){return item.IsPlaceHolder?(loading.hide(),showPlaybackInfoErrorMessage(self,"PlaceHolder",!0),Promise.reject()):(normalizePlayOptions(playOptions),playOptions.isFirstItem?playOptions.isFirstItem=!1:playOptions.isFirstItem=!0,runInterceptors(item,playOptions).then(function(){playOptions.fullscreen&&loading.show();var mediaType=item.MediaType,onBitrateDetectionFailure=function(){return playAfterBitrateDetect(getSavedMaxStreamingBitrate(connectionManager.getApiClient(item.ServerId),mediaType),item,playOptions,onPlaybackStartedFn)};if(!isServerItem(item)||itemHelper.isLocalItem(item))return onBitrateDetectionFailure();var apiClient=connectionManager.getApiClient(item.ServerId);apiClient.getEndpointInfo().then(function(endpointInfo){if(("Video"===mediaType||"Audio"===mediaType)&&appSettings.enableAutomaticBitrateDetection(endpointInfo.IsInNetwork,mediaType))return apiClient.detectBitrate().then(function(bitrate){return appSettings.maxStreamingBitrate(endpointInfo.IsInNetwork,mediaType,bitrate),playAfterBitrateDetect(bitrate,item,playOptions,onPlaybackStartedFn)},onBitrateDetectionFailure);onBitrateDetectionFailure()},onBitrateDetectionFailure)},onInterceptorRejection))}function onInterceptorRejection(){var player=self._currentPlayer;return player&&(destroyPlayer(player),removeCurrentPlayer(player)),events.trigger(self,"playbackcancelled"),Promise.reject()}function destroyPlayer(player){player.destroy()}function runInterceptors(item,playOptions){return new Promise(function(resolve,reject){var interceptors=pluginManager.ofType("preplayintercept");if(interceptors.sort(function(a,b){return(a.order||0)-(b.order||0)}),!interceptors.length)return void resolve();loading.hide();var options=Object.assign({},playOptions);options.mediaType=item.MediaType,options.item=item,runNextPrePlay(interceptors,0,options,resolve,reject)})}function runNextPrePlay(interceptors,index,options,resolve,reject){if(index>=interceptors.length)return void resolve();interceptors[index].intercept(options).then(function(){runNextPrePlay(interceptors,index+1,options,resolve,reject)},reject)}function sendPlaybackListToPlayer(player,items,deviceProfile,maxBitrate,apiClient,startPositionTicks,mediaSourceId,audioStreamIndex,subtitleStreamIndex,startIndex){return setStreamUrls(items,deviceProfile,maxBitrate,apiClient,startPositionTicks).then(function(){return loading.hide(),player.play({items:items,startPositionTicks:startPositionTicks||0,mediaSourceId:mediaSourceId,audioStreamIndex:audioStreamIndex,subtitleStreamIndex:subtitleStreamIndex,startIndex:startIndex})})}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&&"Book"!==item.MediaType?Promise.all([promise,player.getDeviceProfile(item)]).then(function(responses){var deviceProfile=responses[1],apiClient=connectionManager.getApiClient(item.ServerId),mediaSourceId=playOptions.mediaSourceId,audioStreamIndex=playOptions.audioStreamIndex,subtitleStreamIndex=playOptions.subtitleStreamIndex;return player&&!enableLocalPlaylistManagement(player)?sendPlaybackListToPlayer(player,playOptions.items,deviceProfile,maxBitrate,apiClient,startPosition,mediaSourceId,audioStreamIndex,subtitleStreamIndex,playOptions.startIndex):(playOptions.items=null,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(err){onPlaybackStartedFn(),onPlaybackStarted(player,playOptions,streamInfo,mediaSource),setTimeout(function(){onPlaybackError.call(player,err,{type:"mediadecodeerror",streamInfo:streamInfo})},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){var mediaUrl,contentType,directOptions,transcodingOffsetTicks=0,playerStartPositionTicks=startPosition,liveStreamId=mediaSource.LiveStreamId,playMethod="Transcode",mediaSourceContainer=(mediaSource.Container||"").toLowerCase();if("Video"===type||"Audio"===type)if(contentType=getMimeType(type.toLowerCase(),mediaSourceContainer),mediaSource.enableDirectPlay)mediaUrl=mediaSource.Path,playMethod="DirectPlay";else if(mediaSource.StreamUrl)playMethod="Transcode",mediaUrl=mediaSource.StreamUrl;else if(mediaSource.SupportsDirectStream){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);var prefix="Video"===type?"Videos":"Audio";mediaUrl=apiClient.getUrl(prefix+"/"+item.Id+"/stream."+mediaSourceContainer,directOptions),playMethod="DirectStream"}else mediaSource.SupportsTranscoding&&(mediaUrl=apiClient.getUrl(mediaSource.TranscodingUrl),"hls"===mediaSource.TranscodingSubProtocol?contentType="application/x-mpegURL":(playerStartPositionTicks=null,contentType=getMimeType(type.toLowerCase(),mediaSource.TranscodingContainer),-1===mediaUrl.toLowerCase().indexOf("copytimestamps=true")&&(transcodingOffsetTicks=startPosition||0)));else 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;i=6e5&&getLiveStreamMediaInfo(player,streamInfo,self.currentMediaSource(player),streamInfo.liveStreamId,serverId)}}function getLiveStreamMediaInfo(player,streamInfo,mediaSource,liveStreamId,serverId){console.log("getLiveStreamMediaInfo"),streamInfo.lastMediaInfoQuery=(new Date).getTime(),connectionManager.getApiClient(serverId).isMinServerVersion("3.2.70.7")&&connectionManager.getApiClient(serverId).getLiveStreamMediaInfo(liveStreamId).then(function(info){mediaSource.MediaStreams=info.MediaStreams,events.trigger(player,"mediastreamschange")},function(){})}var currentTargetInfo,lastLocalPlayer,self=this,players=[],currentPairingId=null;this._playNextAfterEnded=!0;var playerStates={};this._playQueueManager=new PlayQueueManager,self.currentItem=function(player){if(!player)throw new Error("player cannot be null");if(player.currentItem)return player.currentItem();var data=getPlayerData(player);return data.streamInfo?data.streamInfo.item:null},self.currentMediaSource=function(player){if(!player)throw new Error("player cannot be null");if(player.currentMediaSource)return player.currentMediaSource();var data=getPlayerData(player);return data.streamInfo?data.streamInfo.mediaSource:null},self.playMethod=function(player){if(!player)throw new Error("player cannot be null");if(player.playMethod)return player.playMethod();var data=getPlayerData(player);return data.streamInfo?data.streamInfo.playMethod:null},self.playSessionId=function(player){if(!player)throw new Error("player cannot be null");if(player.playSessionId)return player.playSessionId();var data=getPlayerData(player);return data.streamInfo?data.streamInfo.playSessionId:null},self.getPlayerInfo=function(){var player=self._currentPlayer;if(!player)return null;var target=currentTargetInfo||{};return{name:player.name,isLocalPlayer:player.isLocalPlayer,id:target.id,deviceName:target.deviceName,playableMediaTypes:target.playableMediaTypes,supportedCommands:target.supportedCommands}},self.setActivePlayer=function(player,targetInfo){if("localplayer"===player||"localplayer"===player.name){if(self._currentPlayer&&self._currentPlayer.isLocalPlayer)return;return void setCurrentPlayerInternal(null,null)}if("string"==typeof player&&(player=players.filter(function(p){return p.name===player})[0]),!player)throw new Error("null player");setCurrentPlayerInternal(player,targetInfo)},self.trySetActivePlayer=function(player,targetInfo){if("localplayer"===player||"localplayer"===player.name)return void(self._currentPlayer&&self._currentPlayer.isLocalPlayer);if("string"==typeof player&&(player=players.filter(function(p){return p.name===player})[0]),!player)throw new Error("null player");if(currentPairingId!==targetInfo.id){currentPairingId=targetInfo.id;var promise=player.tryPair?player.tryPair(targetInfo):Promise.resolve();events.trigger(self,"pairing"),promise.then(function(){events.trigger(self,"paired"),setCurrentPlayerInternal(player,targetInfo)},function(){events.trigger(self,"pairerror"),currentPairingId===targetInfo.id&&(currentPairingId=null)})}},self.getTargets=function(){var promises=players.filter(displayPlayerIndividually).map(getPlayerTargets);return Promise.all(promises).then(function(responses){return connectionManager.currentApiClient().getCurrentUser().then(function(user){var targets=[];targets.push({name:globalize.translate("sharedcomponents#HeaderMyDevice"),id:"localplayer",playerName:"localplayer",playableMediaTypes:["Audio","Video","Game","Photo","Book"],isLocalPlayer:!0,supportedCommands:self.getSupportedCommands({isLocalPlayer:!0}),user:user});for(var i=0;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;if("PhotoAlbum"===itemType||"MusicGenre"===itemType||"Season"===itemType||"Series"===itemType||"BoxSet"===itemType||"MusicAlbum"===itemType||"MusicArtist"===itemType||"Playlist"===itemType)return!0;if("Virtual"===item.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.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.getAspectRatio)return player.getAspectRatio()};var brightnessOsdLoaded;self.setBrightness=function(val,player){(player=player||self._currentPlayer)&&(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.setVolume(val)},self.getVolume=function(player){if(player=player||self._currentPlayer)return player.getVolume()},self.volumeUp=function(player){(player=player||self._currentPlayer)&&player.volumeUp()},self.volumeDown=function(player){(player=player||self._currentPlayer)&&player.volumeDown()},self.changeAudioStream=function(player){if((player=player||self._currentPlayer)&&!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=-1===nextIndex?-1:mediaStreams[nextIndex].Index,self.setAudioStreamIndex(nextIndex,player)}}},self.changeSubtitleStream=function(player){if((player=player||self._currentPlayer)&&!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=-1===nextIndex?-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){if((player=player||self._currentPlayer)&&!enableLocalPlaylistManagement(player))return player.setAudioStreamIndex(index);"Transcode"!==self.playMethod(player)&&player.canSetAudioStreamIndex()?player.getDeviceProfile(self.currentItem(player)).then(function(profile){isAudioStreamSupported(self.currentMediaSource(player),index,profile)?(player.setAudioStreamIndex(index),getPlayerData(player).audioStreamIndex=index):(changeStream(player,getCurrentTicks(player),{AudioStreamIndex: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.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);return getSavedMaxStreamingBitrate(currentItem?connectionManager.getApiClient(currentItem.ServerId):connectionManager.currentApiClient(),mediaType)},self.enableAutomaticBitrateDetection=function(player){if((player=player||self._currentPlayer)&&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.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){if(player=player||self._currentPlayer,!player.isLocalPlayer||player.toggleFulscreen)return player.toggleFulscreen();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)&&!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)&&!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){if(ticks=Math.max(0,ticks),(player=player||self._currentPlayer)&&!enableLocalPlaylistManagement(player))return player.isLocalPlayer?player.seek((ticks||0)/1e4):player.seek(ticks);changeStream(player,ticks)},self.seekRelative=function(offsetTicks,player){if((player=player||self._currentPlayer)&&!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(!1===options.enableRemotePlayers&&!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,item,mediaSource){if(!(player=player||self._currentPlayer))throw new Error("player cannot be null");if(!enableLocalPlaylistManagement(player)&&player.getPlayerState)return player.getPlayerState();item=item||self.currentItem(player),mediaSource=mediaSource||self.currentMediaSource(player);var 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),state.PlayState.PlaylistItemId=self.getCurrentPlaylistItemId(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)&&!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);return apiClient.getEndpointInfo().then(function(){var maxBitrate=getSavedMaxStreamingBitrate(connectionManager.getApiClient(item.ServerId),mediaType);return player.getDeviceProfile(item).then(function(deviceProfile){return getPlaybackMediaSource(player,apiClient,deviceProfile,maxBitrate,item,startPosition,options.mediaSourceId,options.audioStreamIndex,options.subtitleStreamIndex).then(function(mediaSource){return createStreamInfo(apiClient,item.MediaType,item,mediaSource,startPosition)})})})},self.getPlaybackMediaSources=function(item,options){options=options||{};var startPosition=options.startPositionTicks||0,mediaType=options.mediaType||item.MediaType,player=getPlayer(item,options,!0),apiClient=connectionManager.getApiClient(item.ServerId);return apiClient.getEndpointInfo().then(function(){var maxBitrate=getSavedMaxStreamingBitrate(connectionManager.getApiClient(item.ServerId),mediaType);return player.getDeviceProfile(item).then(function(deviceProfile){return getPlaybackInfo(player,apiClient,item,deviceProfile,maxBitrate,startPosition,!1,null,null,null,null).then(function(playbackInfoResult){return playbackInfoResult.MediaSources})})})},self.setCurrentPlaylistItem=function(playlistItemId,player){if((player=player||self._currentPlayer)&&!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 newItemPlayOptions=newItem.playOptions||{};newItemPlayOptions.startPositionTicks=0,playInternal(newItem,newItemPlayOptions,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)&&!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)&&!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.isMuted()},PlaybackManager.prototype.setMute=function(mute,player){(player=player||this._currentPlayer)&&player.setMute(mute)},PlaybackManager.prototype.toggleMute=function(mute,player){(player=player||this._currentPlayer)&&(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 player=this._currentPlayer;if(player&&player.playTrailers)return player.playTrailers(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);return textStream.IsExternalUrl?textStream.DeliveryUrl:apiClient.getUrl(textStream.DeliveryUrl)},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.pause()},PlaybackManager.prototype.unpause=function(player){(player=player||this._currentPlayer)&&player.unpause()},PlaybackManager.prototype.instantMix=function(item,player){if((player=player||this._currentPlayer)&&player.instantMix)return player.instantMix(item);var apiClient=connectionManager.getApiClient(item.ServerId),options={};options.UserId=apiClient.getCurrentUserId(),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){return player=player||this._currentPlayer,player&&player.shuffle?player.shuffle(shuffleItem):this.play({items:[shuffleItem],shuffle:!0})},PlaybackManager.prototype.audioTracks=function(player){if(player=player||this._currentPlayer,player.audioTracks){var result=player.audioTracks();if(result)return result}return((this.currentMediaSource(player)||{}).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}return((this.currentMediaSource(player)||{}).MediaStreams||[]).filter(function(s){return"Subtitle"===s.Type})},PlaybackManager.prototype.getSupportedCommands=function(player){if(player=player||this._currentPlayer||{isLocalPlayer:!0},player.isLocalPlayer){var list=["GoHome","GoToSettings","VolumeUp","VolumeDown","Mute","Unmute","ToggleMute","SetVolume","SetAudioStreamIndex","SetSubtitleStreamIndex","SetMaxStreamingBitrate","DisplayContent","GoToSearch","DisplayMessage","SetRepeatMode","PlayMediaSource","PlayTrailers"];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){if((player=player||this._currentPlayer)&&!enableLocalPlaylistManagement(player))return player.setRepeatMode(value);this._playQueueManager.setRepeatMode(value),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.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/playback/playbackorientation.js b/dashboard-ui/bower_components/emby-webcomponents/playback/playbackorientation.js new file mode 100644 index 0000000000..9eced4dc0c --- /dev/null +++ b/dashboard-ui/bower_components/emby-webcomponents/playback/playbackorientation.js @@ -0,0 +1 @@ +define(["playbackManager","layoutManager","events"],function(playbackManager,layoutManager,events){"use strict";function onOrientationChangeSuccess(){orientationLocked=!0}function onOrientationChangeError(err){orientationLocked=!1,console.log("error locking orientation: "+err)}var orientationLocked;events.on(playbackManager,"playbackstart",function(e,player,state){if(player.isLocalPlayer&&!player.isExternalPlayer&&playbackManager.isPlayingVideo(player)&&layoutManager.mobile){var lockOrientation=screen.lockOrientation||screen.mozLockOrientation||screen.msLockOrientation||screen.orientation&&screen.orientation.lock;if(lockOrientation)try{var promise=lockOrientation("landscape");promise.then?promise.then(onOrientationChangeSuccess,onOrientationChangeError):orientationLocked=promise}catch(err){onOrientationChangeError(err)}}}),events.on(playbackManager,"playbackstop",function(e,playbackStopInfo){if(orientationLocked&&!playbackStopInfo.nextMediaType){var unlockOrientation=screen.unlockOrientation||screen.mozUnlockOrientation||screen.msUnlockOrientation||screen.orientation&&screen.orientation.unlock;if(unlockOrientation){try{unlockOrientation()}catch(err){console.log("error unlocking orientation: "+err)}orientationLocked=!1}}})}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/playback/playerselection.js b/dashboard-ui/bower_components/emby-webcomponents/playback/playerselection.js index 7f97d9f0c5..6d0bba55cc 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/playback/playerselection.js +++ b/dashboard-ui/bower_components/emby-webcomponents/playback/playerselection.js @@ -1 +1 @@ -define(["appSettings","events","browser","loading","playbackManager","appRouter","globalize","apphost"],function(appSettings,events,browser,loading,playbackManager,appRouter,globalize,appHost){"use strict";function mirrorItem(info,player){var item=info.item;playbackManager.displayContent({ItemName:item.Name,ItemId:item.Id,ItemType:item.Type,Context:info.context},player)}function mirrorIfEnabled(info){if(info&&playbackManager.enableDisplayMirroring()){var getPlayerInfo=playbackManager.getPlayerInfo();getPlayerInfo&&(getPlayerInfo.isLocalPlayer||getPlayerInfo.supportedCommands.indexOf("DisplayContent")===-1||mirrorItem(info,playbackManager.getCurrentPlayer()))}}function emptyCallback(){}function showPlayerSelection(button){var currentPlayerInfo=playbackManager.getPlayerInfo();if(currentPlayerInfo&&!currentPlayerInfo.isLocalPlayer)return void showActivePlayerMenu(currentPlayerInfo);var currentPlayerId=currentPlayerInfo?currentPlayerInfo.id:null;loading.show(),playbackManager.getTargets().then(function(targets){var menuItems=targets.map(function(t){var name=t.name;return t.appName&&t.appName!==t.name&&(name+=" - "+t.appName),{name:name,id:t.id,selected:currentPlayerId===t.id}});require(["actionsheet"],function(actionsheet){loading.hide();var menuOptions={title:globalize.translate("sharedcomponents#HeaderPlayOn"),items:menuItems,positionTo:button,resolveOnClick:!0};browser.chrome&&!appHost.supports("castmenuhashchange")&&(menuOptions.enableHistory=!1),actionsheet.show(menuOptions).then(function(id){var target=targets.filter(function(t){return t.id===id})[0];playbackManager.trySetActivePlayer(target.playerName,target),mirrorIfEnabled()},emptyCallback)})})}function showActivePlayerMenu(playerInfo){require(["dialogHelper","dialog","emby-checkbox","emby-button"],function(dialogHelper){showActivePlayerMenuInternal(dialogHelper,playerInfo)})}function disconnectFromPlayer(){playbackManager.getSupportedCommands().indexOf("EndSession")!==-1?require(["dialog"],function(dialog){var menuItems=[];menuItems.push({name:globalize.translate("sharedcomponents#Yes"),id:"yes"}),menuItems.push({name:globalize.translate("sharedcomponents#No"),id:"no"}),dialog({buttons:menuItems,text:globalize.translate("sharedcomponents#ConfirmEndPlayerSession")}).then(function(id){switch(id){case"yes":playbackManager.getCurrentPlayer().endSession(),playbackManager.setDefaultPlayerActive();break;case"no":playbackManager.setDefaultPlayerActive()}})}):playbackManager.setDefaultPlayerActive()}function showActivePlayerMenuInternal(dialogHelper,playerInfo){var html="",dialogOptions={removeOnClose:!0};dialogOptions.modal=!1,dialogOptions.entryAnimationDuration=160,dialogOptions.exitAnimationDuration=160,dialogOptions.autoFocus=!1;var dlg=dialogHelper.createDialog(dialogOptions);if(dlg.classList.add("promptDialog"),html+='
',html+='

',html+=playerInfo.deviceName||playerInfo.name,html+="

",html+="
",playerInfo.supportedCommands.indexOf("DisplayContent")!==-1){html+='"}html+="
",html+='
',html+='",html+='",html+='",html+="
",html+="
",dlg.innerHTML=html;var chkMirror=dlg.querySelector(".chkMirror");chkMirror&&chkMirror.addEventListener("change",onMirrorChange);var destination="",btnRemoteControl=dlg.querySelector(".btnRemoteControl");btnRemoteControl&&btnRemoteControl.addEventListener("click",function(){destination="nowplaying",dialogHelper.close(dlg)}),dlg.querySelector(".btnDisconnect").addEventListener("click",function(){destination="disconnectFromPlayer",dialogHelper.close(dlg)}),dlg.querySelector(".btnCancel").addEventListener("click",function(){dialogHelper.close(dlg)}),dialogHelper.open(dlg).then(function(){"nowplaying"===destination?appRouter.showNowPlaying():"disconnectFromPlayer"===destination&&disconnectFromPlayer()},emptyCallback)}function onMirrorChange(){playbackManager.enableDisplayMirroring(this.checked)}return document.addEventListener("viewshow",function(e){var state=e.detail.state||{},item=state.item;if(item&&item.ServerId)return void mirrorIfEnabled({item:item})}),events.on(appSettings,"change",function(e,name){"displaymirror"===name&&mirrorIfEnabled()}),{show:showPlayerSelection}}); \ No newline at end of file +define(["appSettings","events","browser","loading","playbackManager","appRouter","globalize","apphost"],function(appSettings,events,browser,loading,playbackManager,appRouter,globalize,appHost){"use strict";function mirrorItem(info,player){var item=info.item;playbackManager.displayContent({ItemName:item.Name,ItemId:item.Id,ItemType:item.Type,Context:info.context},player)}function mirrorIfEnabled(info){if(info&&playbackManager.enableDisplayMirroring()){var getPlayerInfo=playbackManager.getPlayerInfo();getPlayerInfo&&(getPlayerInfo.isLocalPlayer||-1===getPlayerInfo.supportedCommands.indexOf("DisplayContent")||mirrorItem(info,playbackManager.getCurrentPlayer()))}}function emptyCallback(){}function getTargetSecondaryText(target){return target.user?target.user.Name:null}function getIcon(target){var deviceType=target.deviceType;switch(!deviceType&&target.isLocalPlayer&&(deviceType=browser.tv?"tv":browser.mobile?"smartphone":"desktop"),deviceType||(deviceType="tv"),deviceType){case"smartphone":return"";case"tablet":return"";case"tv":return"";case"cast":return"";case"desktop":return"";default:return""}}function showPlayerSelection(button){var currentPlayerInfo=playbackManager.getPlayerInfo();if(currentPlayerInfo&&!currentPlayerInfo.isLocalPlayer)return void showActivePlayerMenu(currentPlayerInfo);var currentPlayerId=currentPlayerInfo?currentPlayerInfo.id:null;loading.show(),playbackManager.getTargets().then(function(targets){var menuItems=targets.map(function(t){var name=t.name;return t.appName&&t.appName!==t.name&&(name+=" - "+t.appName),{name:name,id:t.id,selected:currentPlayerId===t.id,secondaryText:getTargetSecondaryText(t),icon:getIcon(t)}});require(["actionsheet"],function(actionsheet){loading.hide();var menuOptions={title:globalize.translate("sharedcomponents#HeaderPlayOn"),items:menuItems,positionTo:button,resolveOnClick:!0,border:!0};browser.chrome&&!appHost.supports("castmenuhashchange")&&(menuOptions.enableHistory=!1),actionsheet.show(menuOptions).then(function(id){var target=targets.filter(function(t){return t.id===id})[0];playbackManager.trySetActivePlayer(target.playerName,target),mirrorIfEnabled()},emptyCallback)})})}function showActivePlayerMenu(playerInfo){require(["dialogHelper","dialog","emby-checkbox","emby-button"],function(dialogHelper){showActivePlayerMenuInternal(dialogHelper,playerInfo)})}function disconnectFromPlayer(currentDeviceName){-1!==playbackManager.getSupportedCommands().indexOf("EndSession")?require(["dialog"],function(dialog){var menuItems=[];menuItems.push({name:globalize.translate("sharedcomponents#Yes"),id:"yes"}),menuItems.push({name:globalize.translate("sharedcomponents#No"),id:"no"}),dialog({buttons:menuItems,text:globalize.translate("sharedcomponents#ConfirmEndPlayerSession",currentDeviceName)}).then(function(id){switch(id){case"yes":playbackManager.getCurrentPlayer().endSession(),playbackManager.setDefaultPlayerActive();break;case"no":playbackManager.setDefaultPlayerActive()}})}):playbackManager.setDefaultPlayerActive()}function showActivePlayerMenuInternal(dialogHelper,playerInfo){var html="",dialogOptions={removeOnClose:!0};dialogOptions.modal=!1,dialogOptions.entryAnimationDuration=160,dialogOptions.exitAnimationDuration=160,dialogOptions.autoFocus=!1;var dlg=dialogHelper.createDialog(dialogOptions);dlg.classList.add("promptDialog");var currentDeviceName=playerInfo.deviceName||playerInfo.name;if(html+='
',html+='

',html+=currentDeviceName,html+="

",html+="
",-1!==playerInfo.supportedCommands.indexOf("DisplayContent")){html+='"}html+="
",html+='
',html+='",html+='",html+='",html+="
",html+="
",dlg.innerHTML=html;var chkMirror=dlg.querySelector(".chkMirror");chkMirror&&chkMirror.addEventListener("change",onMirrorChange);var destination="",btnRemoteControl=dlg.querySelector(".btnRemoteControl");btnRemoteControl&&btnRemoteControl.addEventListener("click",function(){destination="nowplaying",dialogHelper.close(dlg)}),dlg.querySelector(".btnDisconnect").addEventListener("click",function(){destination="disconnectFromPlayer",dialogHelper.close(dlg)}),dlg.querySelector(".btnCancel").addEventListener("click",function(){dialogHelper.close(dlg)}),dialogHelper.open(dlg).then(function(){"nowplaying"===destination?appRouter.showNowPlaying():"disconnectFromPlayer"===destination&&disconnectFromPlayer(currentDeviceName)},emptyCallback)}function onMirrorChange(){playbackManager.enableDisplayMirroring(this.checked)}return document.addEventListener("viewshow",function(e){var state=e.detail.state||{},item=state.item;if(item&&item.ServerId)return void mirrorIfEnabled({item:item})}),events.on(appSettings,"change",function(e,name){"displaymirror"===name&&mirrorIfEnabled()}),events.on(playbackManager,"pairing",function(e){loading.show()}),events.on(playbackManager,"paired",function(e){loading.hide()}),events.on(playbackManager,"pairerror",function(e){loading.hide()}),{show:showPlayerSelection}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/playback/playersettingsmenu.js b/dashboard-ui/bower_components/emby-webcomponents/playback/playersettingsmenu.js index d5a12ca60a..3cae0391ac 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/playback/playersettingsmenu.js +++ b/dashboard-ui/bower_components/emby-webcomponents/playback/playersettingsmenu.js @@ -1 +1 @@ -define(["connectionManager","actionsheet","datetime","playbackManager","globalize","appSettings","qualityoptions"],function(connectionManager,actionsheet,datetime,playbackManager,globalize,appSettings,qualityoptions){"use strict";function showQualityMenu(player,btn){var videoStream=playbackManager.currentMediaSource(player).MediaStreams.filter(function(stream){return"Video"===stream.Type})[0],videoWidth=videoStream?videoStream.Width:null,options=qualityoptions.getVideoQualityOptions({currentMaxBitrate:playbackManager.getMaxStreamingBitrate(player),isAutomaticBitrateEnabled:playbackManager.enableAutomaticBitrateDetection(player),videoWidth:videoWidth,enableAuto:!0}),menuItems=options.map(function(o){var opt={name:o.name,id:o.bitrate,secondaryText:o.secondaryText};return o.selected&&(opt.selected=!0),opt}),selectedId=options.filter(function(o){return o.selected});return selectedId=selectedId.length?selectedId[0].bitrate:null,actionsheet.show({items:menuItems,positionTo:btn}).then(function(id){var bitrate=parseInt(id);bitrate!==selectedId&&playbackManager.setMaxStreamingBitrate({enableAutomaticBitrateDetection:!bitrate,maxBitrate:bitrate},player)})}function showRepeatModeMenu(player,btn){var menuItems=[],currentValue=playbackManager.getRepeatMode(player);return menuItems.push({name:globalize.translate("sharedcomponents#RepeatAll"),id:"RepeatAll",selected:"RepeatAll"===currentValue}),menuItems.push({name:globalize.translate("sharedcomponents#RepeatOne"),id:"RepeatOne",selected:"RepeatOne"===currentValue}),menuItems.push({name:globalize.translate("sharedcomponents#None"),id:"RepeatNone",selected:"RepeatNone"===currentValue}),actionsheet.show({items:menuItems,positionTo:btn}).then(function(mode){mode&&playbackManager.setRepeatMode(mode,player)})}function getQualitySecondaryText(player){var state=playbackManager.getPlayerState(player),videoStream=(playbackManager.enableAutomaticBitrateDetection(player),playbackManager.getMaxStreamingBitrate(player),playbackManager.currentMediaSource(player).MediaStreams.filter(function(stream){return"Video"===stream.Type})[0]),videoWidth=videoStream?videoStream.Width:null,options=qualityoptions.getVideoQualityOptions({currentMaxBitrate:playbackManager.getMaxStreamingBitrate(player),isAutomaticBitrateEnabled:playbackManager.enableAutomaticBitrateDetection(player),videoWidth:videoWidth,enableAuto:!0}),selectedOption=(options.map(function(o){var opt={name:o.name,id:o.bitrate,secondaryText:o.secondaryText};return o.selected&&(opt.selected=!0),opt}),options.filter(function(o){return o.selected}));if(!selectedOption.length)return null;selectedOption=selectedOption[0];var text=selectedOption.name;return selectedOption.autoText&&(text+=state.PlayState&&"Transcode"!==state.PlayState.PlayMethod?" - Direct":" "+selectedOption.autoText),text}function showAspectRatioMenu(player,btn){var currentId=playbackManager.getAspectRatio(player),menuItems=playbackManager.getSupportedAspectRatios(player).map(function(i){return{id:i.id,name:i.name,selected:i.id===currentId}});return actionsheet.show({items:menuItems,positionTo:btn}).then(function(id){return id?(playbackManager.setAspectRatio(id,player),Promise.resolve()):Promise.reject()})}function showWithUser(options,player,user){var supportedCommands=playbackManager.getSupportedCommands(player),menuItems=(options.mediaType,[]);if(supportedCommands.indexOf("SetAspectRatio")!==-1){var currentAspectRatioId=playbackManager.getAspectRatio(player),currentAspectRatio=playbackManager.getSupportedAspectRatios(player).filter(function(i){return i.id===currentAspectRatioId})[0];menuItems.push({name:globalize.translate("sharedcomponents#AspectRatio"),id:"aspectratio",secondaryText:currentAspectRatio?currentAspectRatio.name:null})}if(user&&user.Policy.EnableVideoPlaybackTranscoding){var secondaryQualityText=getQualitySecondaryText(player);menuItems.push({name:globalize.translate("sharedcomponents#Quality"),id:"quality",secondaryText:secondaryQualityText})}var repeatMode=playbackManager.getRepeatMode(player);return supportedCommands.indexOf("SetRepeatMode")!==-1&&playbackManager.currentMediaSource(player).RunTimeTicks&&menuItems.push({name:globalize.translate("sharedcomponents#RepeatMode"),id:"repeatmode",secondaryText:"RepeatNone"===repeatMode?globalize.translate("sharedcomponents#None"):globalize.translate("sharedcomponents#"+repeatMode)}),options.stats&&menuItems.push({name:globalize.translate("sharedcomponents#StatsForNerds"),id:"stats",secondaryText:null}),actionsheet.show({items:menuItems,positionTo:options.positionTo}).then(function(id){return handleSelectedOption(id,options,player)})}function show(options){var player=options.player,currentItem=playbackManager.currentItem(player);if(!currentItem||!currentItem.ServerId)return showWithUser(options,player,null);var apiClient=connectionManager.getApiClient(currentItem.ServerId);return apiClient.getCurrentUser().then(function(user){return showWithUser(options,player,user)})}function handleSelectedOption(id,options,player){switch(id){case"quality":return showQualityMenu(player,options.positionTo);case"aspectratio":return showAspectRatioMenu(player,options.positionTo);case"repeatmode":return showRepeatModeMenu(player,options.positionTo);case"stats":return options.onOption&&options.onOption("stats"),Promise.resolve()}return Promise.reject()}return{show:show}}); \ No newline at end of file +define(["connectionManager","actionsheet","datetime","playbackManager","globalize","appSettings","qualityoptions"],function(connectionManager,actionsheet,datetime,playbackManager,globalize,appSettings,qualityoptions){"use strict";function showQualityMenu(player,btn){var videoStream=playbackManager.currentMediaSource(player).MediaStreams.filter(function(stream){return"Video"===stream.Type})[0],videoWidth=videoStream?videoStream.Width:null,options=qualityoptions.getVideoQualityOptions({currentMaxBitrate:playbackManager.getMaxStreamingBitrate(player),isAutomaticBitrateEnabled:playbackManager.enableAutomaticBitrateDetection(player),videoWidth:videoWidth,enableAuto:!0}),menuItems=options.map(function(o){var opt={name:o.name,id:o.bitrate,asideText:o.secondaryText};return o.selected&&(opt.selected=!0),opt}),selectedId=options.filter(function(o){return o.selected});return selectedId=selectedId.length?selectedId[0].bitrate:null,actionsheet.show({items:menuItems,positionTo:btn}).then(function(id){var bitrate=parseInt(id);bitrate!==selectedId&&playbackManager.setMaxStreamingBitrate({enableAutomaticBitrateDetection:!bitrate,maxBitrate:bitrate},player)})}function showRepeatModeMenu(player,btn){var menuItems=[],currentValue=playbackManager.getRepeatMode(player);return menuItems.push({name:globalize.translate("sharedcomponents#RepeatAll"),id:"RepeatAll",selected:"RepeatAll"===currentValue}),menuItems.push({name:globalize.translate("sharedcomponents#RepeatOne"),id:"RepeatOne",selected:"RepeatOne"===currentValue}),menuItems.push({name:globalize.translate("sharedcomponents#None"),id:"RepeatNone",selected:"RepeatNone"===currentValue}),actionsheet.show({items:menuItems,positionTo:btn}).then(function(mode){mode&&playbackManager.setRepeatMode(mode,player)})}function getQualitySecondaryText(player){var state=playbackManager.getPlayerState(player),videoStream=(playbackManager.enableAutomaticBitrateDetection(player),playbackManager.getMaxStreamingBitrate(player),playbackManager.currentMediaSource(player).MediaStreams.filter(function(stream){return"Video"===stream.Type})[0]),videoWidth=videoStream?videoStream.Width:null,options=qualityoptions.getVideoQualityOptions({currentMaxBitrate:playbackManager.getMaxStreamingBitrate(player),isAutomaticBitrateEnabled:playbackManager.enableAutomaticBitrateDetection(player),videoWidth:videoWidth,enableAuto:!0}),selectedOption=(options.map(function(o){var opt={name:o.name,id:o.bitrate,asideText:o.secondaryText};return o.selected&&(opt.selected=!0),opt}),options.filter(function(o){return o.selected}));if(!selectedOption.length)return null;selectedOption=selectedOption[0];var text=selectedOption.name;return selectedOption.autoText&&(state.PlayState&&"Transcode"!==state.PlayState.PlayMethod?text+=" - Direct":text+=" "+selectedOption.autoText),text}function showAspectRatioMenu(player,btn){var currentId=playbackManager.getAspectRatio(player),menuItems=playbackManager.getSupportedAspectRatios(player).map(function(i){return{id:i.id,name:i.name,selected:i.id===currentId}});return actionsheet.show({items:menuItems,positionTo:btn}).then(function(id){return id?(playbackManager.setAspectRatio(id,player),Promise.resolve()):Promise.reject()})}function showWithUser(options,player,user){var supportedCommands=playbackManager.getSupportedCommands(player),menuItems=(options.mediaType,[]);if(-1!==supportedCommands.indexOf("SetAspectRatio")){var currentAspectRatioId=playbackManager.getAspectRatio(player),currentAspectRatio=playbackManager.getSupportedAspectRatios(player).filter(function(i){return i.id===currentAspectRatioId})[0];menuItems.push({name:globalize.translate("sharedcomponents#AspectRatio"),id:"aspectratio",asideText:currentAspectRatio?currentAspectRatio.name:null})}if(menuItems.push({name:globalize.translate("sharedcomponents#PlaybackSettings"),id:"playbacksettings"}),user&&user.Policy.EnableVideoPlaybackTranscoding){var secondaryQualityText=getQualitySecondaryText(player);menuItems.push({name:globalize.translate("sharedcomponents#Quality"),id:"quality",asideText:secondaryQualityText})}var repeatMode=playbackManager.getRepeatMode(player);return-1!==supportedCommands.indexOf("SetRepeatMode")&&playbackManager.currentMediaSource(player).RunTimeTicks&&menuItems.push({name:globalize.translate("sharedcomponents#RepeatMode"),id:"repeatmode",asideText:"RepeatNone"===repeatMode?globalize.translate("sharedcomponents#None"):globalize.translate("sharedcomponents#"+repeatMode)}),options.stats&&menuItems.push({name:globalize.translate("sharedcomponents#StatsForNerds"),id:"stats",asideText:null}),menuItems.push({name:globalize.translate("sharedcomponents#SubtitleSettings"),id:"subtitlesettings"}),actionsheet.show({items:menuItems,positionTo:options.positionTo}).then(function(id){return handleSelectedOption(id,options,player)})}function show(options){var player=options.player,currentItem=playbackManager.currentItem(player);return currentItem&¤tItem.ServerId?connectionManager.getApiClient(currentItem.ServerId).getCurrentUser().then(function(user){return showWithUser(options,player,user)}):showWithUser(options,player,null)}function alertText(text){return new Promise(function(resolve,reject){require(["alert"],function(alert){alert(text).then(resolve)})})}function showSubtitleSettings(player,btn){return alertText(globalize.translate("sharedcomponents#SubtitleSettingsIntro"))}function showPlaybackSettings(player,btn){return alertText(globalize.translate("sharedcomponents#PlaybackSettingsIntro"))}function handleSelectedOption(id,options,player){switch(id){case"quality":return showQualityMenu(player,options.positionTo);case"aspectratio":return showAspectRatioMenu(player,options.positionTo);case"repeatmode":return showRepeatModeMenu(player,options.positionTo);case"subtitlesettings":return showSubtitleSettings(player,options.positionTo);case"playbacksettings":return showPlaybackSettings(player,options.positionTo);case"stats":return options.onOption&&options.onOption("stats"),Promise.resolve()}return Promise.reject()}return{show:show}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/playback/playqueuemanager.js b/dashboard-ui/bower_components/emby-webcomponents/playback/playqueuemanager.js index d80f397658..36375c225d 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/playback/playqueuemanager.js +++ b/dashboard-ui/bower_components/emby-webcomponents/playback/playqueuemanager.js @@ -1 +1 @@ -define([],function(){"use strict";function addUniquePlaylistItemId(item){item.PlaylistItemId||(item.PlaylistItemId="playlistItem"+currentId,currentId++)}function findPlaylistIndex(playlistItemId,list){for(var i=0,length=list.length;i=playlist.length)throw new Error("newIndex out of bounds");return moveInArray(playlist,oldIndex,newIndex),this._playlist=playlist,{result:"moved",playlistItemId:playlistItemId,newIndex:newIndex}},PlayQueueManager.prototype.reset=function(){this._playlist=[],this._currentPlaylistItemId=null,this._repeatMode="RepeatNone"},PlayQueueManager.prototype.setRepeatMode=function(value){this._repeatMode=value},PlayQueueManager.prototype.getRepeatMode=function(){return this._repeatMode},PlayQueueManager.prototype.getNextItemInfo=function(){var newIndex,playlist=this.getPlaylist(),playlistLength=playlist.length;switch(this.getRepeatMode()){case"RepeatOne":newIndex=this.getCurrentPlaylistIndex();break;case"RepeatAll":newIndex=this.getCurrentPlaylistIndex()+1,newIndex>=playlistLength&&(newIndex=0);break;default:newIndex=this.getCurrentPlaylistIndex()+1}if(newIndex<0||newIndex>=playlistLength)return null;var item=playlist[newIndex];return item?{item:item,index:newIndex}:null},PlayQueueManager}); \ No newline at end of file +define([],function(){"use strict";function addUniquePlaylistItemId(item){item.PlaylistItemId||(item.PlaylistItemId="playlistItem"+currentId,currentId++)}function findPlaylistIndex(playlistItemId,list){for(var i=0,length=list.length;i=playlist.length)throw new Error("newIndex out of bounds");return moveInArray(playlist,oldIndex,newIndex),this._playlist=playlist,{result:"moved",playlistItemId:playlistItemId,newIndex:newIndex}},PlayQueueManager.prototype.reset=function(){this._playlist=[],this._currentPlaylistItemId=null,this._repeatMode="RepeatNone"},PlayQueueManager.prototype.setRepeatMode=function(value){this._repeatMode=value},PlayQueueManager.prototype.getRepeatMode=function(){return this._repeatMode},PlayQueueManager.prototype.getNextItemInfo=function(){var newIndex,playlist=this.getPlaylist(),playlistLength=playlist.length;switch(this.getRepeatMode()){case"RepeatOne":newIndex=this.getCurrentPlaylistIndex();break;case"RepeatAll":newIndex=this.getCurrentPlaylistIndex()+1,newIndex>=playlistLength&&(newIndex=0);break;default:newIndex=this.getCurrentPlaylistIndex()+1}if(newIndex<0||newIndex>=playlistLength)return null;var item=playlist[newIndex];return item?{item:item,index:newIndex}:null},PlayQueueManager}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/playback/remotecontrolautoplay.js b/dashboard-ui/bower_components/emby-webcomponents/playback/remotecontrolautoplay.js index d32371bca9..bbe8735f9a 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/playback/remotecontrolautoplay.js +++ b/dashboard-ui/bower_components/emby-webcomponents/playback/remotecontrolautoplay.js @@ -1 +1 @@ -define(["events","playbackManager"],function(events,playbackManager){"use strict";function transferPlayback(oldPlayer,newPlayer){var state=playbackManager.getPlayerState(oldPlayer),item=state.NowPlayingItem;if(item){var playState=state.PlayState||{};playbackManager.stop(oldPlayer).then(function(){var resumePositionTicks=playState.PositionTicks||0;playbackManager.play({ids:[item.Id],serverId:item.ServerId,startPositionTicks:resumePositionTicks},newPlayer)})}}events.on(playbackManager,"playerchange",function(e,newPlayer,newTarget,oldPlayer){if(oldPlayer&&newPlayer)return oldPlayer.isLocalPlayer?newPlayer.isLocalPlayer?void console.log("Skipping remote control autoplay because newPlayer is a local player"):void transferPlayback(oldPlayer,newPlayer):void console.log("Skipping remote control autoplay because oldPlayer is not a local player")})}); \ No newline at end of file +define(["events","playbackManager"],function(events,playbackManager){"use strict";function transferPlayback(oldPlayer,newPlayer){var state=playbackManager.getPlayerState(oldPlayer),item=state.NowPlayingItem;if(item){var playState=state.PlayState||{},resumePositionTicks=playState.PositionTicks||0;playbackManager.stop(oldPlayer).then(function(){playbackManager.play({ids:[item.Id],serverId:item.ServerId,startPositionTicks:resumePositionTicks},newPlayer)})}}events.on(playbackManager,"playerchange",function(e,newPlayer,newTarget,oldPlayer){if(oldPlayer&&newPlayer)return oldPlayer.isLocalPlayer?newPlayer.isLocalPlayer?void console.log("Skipping remote control autoplay because newPlayer is a local player"):void transferPlayback(oldPlayer,newPlayer):void console.log("Skipping remote control autoplay because oldPlayer is not a local player")})}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/playback/volumeosd.js b/dashboard-ui/bower_components/emby-webcomponents/playback/volumeosd.js index 39563309f4..b33ed54cd1 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/playback/volumeosd.js +++ b/dashboard-ui/bower_components/emby-webcomponents/playback/volumeosd.js @@ -1 +1 @@ -define(["events","playbackManager","dom","browser","css!./iconosd","material-icons"],function(events,playbackManager,dom,browser){"use strict";function getOsdElementHtml(){var html="";return html+='',html+='
'}function ensureOsdElement(){var elem=osdElement;elem||(enableAnimation=browser.supportsCssAnimation(),elem=document.createElement("div"),elem.classList.add("hide"),elem.classList.add("iconOsd"),elem.classList.add("iconOsd-hidden"),elem.classList.add("volumeOsd"),elem.innerHTML=getOsdElementHtml(),iconElement=elem.querySelector("i"),progressElement=elem.querySelector(".iconOsdProgressInner"),document.body.appendChild(elem),osdElement=elem)}function onHideComplete(){this.classList.add("hide")}function showOsd(){clearHideTimeout();var elem=osdElement;dom.removeEventListener(elem,dom.whichTransitionEvent(),onHideComplete,{once:!0}),elem.classList.remove("hide"),void elem.offsetWidth,requestAnimationFrame(function(){elem.classList.remove("iconOsd-hidden"),hideTimeout=setTimeout(hideOsd,3e3)})}function clearHideTimeout(){hideTimeout&&(clearTimeout(hideTimeout),hideTimeout=null)}function hideOsd(){clearHideTimeout();var elem=osdElement;elem&&(enableAnimation?(void elem.offsetWidth,requestAnimationFrame(function(){elem.classList.add("iconOsd-hidden"),dom.addEventListener(elem,dom.whichTransitionEvent(),onHideComplete,{once:!0})})):onHideComplete.call(elem))}function updatePlayerVolumeState(isMuted,volume){iconElement&&(iconElement.innerHTML=isMuted?"":""),progressElement&&(progressElement.style.width=(volume||0)+"%")}function releaseCurrentPlayer(){var player=currentPlayer;player&&(events.off(player,"volumechange",onVolumeChanged),events.off(player,"playbackstop",hideOsd),currentPlayer=null)}function onVolumeChanged(e){var player=this;ensureOsdElement(),updatePlayerVolumeState(player.isMuted(),player.getVolume()),showOsd()}function bindToPlayer(player){player!==currentPlayer&&(releaseCurrentPlayer(),currentPlayer=player,player&&(hideOsd(),events.on(player,"volumechange",onVolumeChanged),events.on(player,"playbackstop",hideOsd)))}var currentPlayer,osdElement,iconElement,progressElement,enableAnimation,hideTimeout;events.on(playbackManager,"playerchange",function(){bindToPlayer(playbackManager.getCurrentPlayer())}),bindToPlayer(playbackManager.getCurrentPlayer())}); \ No newline at end of file +define(["events","playbackManager","dom","browser","css!./iconosd","material-icons"],function(events,playbackManager,dom,browser){"use strict";function getOsdElementHtml(){var html="";return html+='',html+='
'}function ensureOsdElement(){var elem=osdElement;elem||(enableAnimation=browser.supportsCssAnimation(),elem=document.createElement("div"),elem.classList.add("hide"),elem.classList.add("iconOsd"),elem.classList.add("iconOsd-hidden"),elem.classList.add("volumeOsd"),elem.innerHTML=getOsdElementHtml(),iconElement=elem.querySelector("i"),progressElement=elem.querySelector(".iconOsdProgressInner"),document.body.appendChild(elem),osdElement=elem)}function onHideComplete(){this.classList.add("hide")}function showOsd(){clearHideTimeout();var elem=osdElement;dom.removeEventListener(elem,dom.whichTransitionEvent(),onHideComplete,{once:!0}),elem.classList.remove("hide"),elem.offsetWidth,requestAnimationFrame(function(){elem.classList.remove("iconOsd-hidden"),hideTimeout=setTimeout(hideOsd,3e3)})}function clearHideTimeout(){hideTimeout&&(clearTimeout(hideTimeout),hideTimeout=null)}function hideOsd(){clearHideTimeout();var elem=osdElement;elem&&(enableAnimation?(elem.offsetWidth,requestAnimationFrame(function(){elem.classList.add("iconOsd-hidden"),dom.addEventListener(elem,dom.whichTransitionEvent(),onHideComplete,{once:!0})})):onHideComplete.call(elem))}function updatePlayerVolumeState(isMuted,volume){iconElement&&(iconElement.innerHTML=isMuted?"":""),progressElement&&(progressElement.style.width=(volume||0)+"%")}function releaseCurrentPlayer(){var player=currentPlayer;player&&(events.off(player,"volumechange",onVolumeChanged),events.off(player,"playbackstop",hideOsd),currentPlayer=null)}function onVolumeChanged(e){var player=this;ensureOsdElement(),updatePlayerVolumeState(player.isMuted(),player.getVolume()),showOsd()}function bindToPlayer(player){player!==currentPlayer&&(releaseCurrentPlayer(),currentPlayer=player,player&&(hideOsd(),events.on(player,"volumechange",onVolumeChanged),events.on(player,"playbackstop",hideOsd)))}var currentPlayer,osdElement,iconElement,progressElement,enableAnimation,hideTimeout;events.on(playbackManager,"playerchange",function(){bindToPlayer(playbackManager.getCurrentPlayer())}),bindToPlayer(playbackManager.getCurrentPlayer())}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/playbacksettings/playbacksettings.js b/dashboard-ui/bower_components/emby-webcomponents/playbacksettings/playbacksettings.js index 262ae57b64..0999d1db89 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/playbacksettings/playbacksettings.js +++ b/dashboard-ui/bower_components/emby-webcomponents/playbacksettings/playbacksettings.js @@ -1 +1 @@ -define(["require","browser","appSettings","apphost","focusManager","qualityoptions","globalize","loading","connectionManager","dom","events","emby-select","emby-checkbox"],function(require,browser,appSettings,appHost,focusManager,qualityoptions,globalize,loading,connectionManager,dom,events){"use strict";function fillSkipLengths(select){var options=[5,10,15,20,25,30];select.innerHTML=options.map(function(option){return{name:globalize.translate("sharedcomponents#ValueSeconds",option),value:1e3*option}}).map(function(o){return'"}).join("")}function populateLanguages(select,languages){var html="";html+="";for(var i=0,length=languages.length;i"+culture.DisplayName+""}select.innerHTML=html}function setMaxBitrateIntoField(select,isInNetwork,mediatype){var options="Audio"===mediatype?qualityoptions.getAudioQualityOptions({currentMaxBitrate:appSettings.maxStreamingBitrate(isInNetwork,mediatype),isAutomaticBitrateEnabled:appSettings.enableAutomaticBitrateDetection(isInNetwork,mediatype),enableAuto:!0}):qualityoptions.getVideoQualityOptions({currentMaxBitrate:appSettings.maxStreamingBitrate(isInNetwork,mediatype),isAutomaticBitrateEnabled:appSettings.enableAutomaticBitrateDetection(isInNetwork,mediatype),enableAuto:!0});select.innerHTML=options.map(function(i){return'"}).join(""),appSettings.enableAutomaticBitrateDetection(isInNetwork,mediatype)?select.value="":select.value=appSettings.maxStreamingBitrate(isInNetwork,mediatype)}function fillChromecastQuality(select){var options=qualityoptions.getVideoQualityOptions({currentMaxBitrate:appSettings.maxChromecastBitrate(),isAutomaticBitrateEnabled:!appSettings.maxChromecastBitrate(),enableAuto:!0});select.innerHTML=options.map(function(i){return'"}).join(""),select.value=appSettings.maxChromecastBitrate()||""}function setMaxBitrateFromField(select,isInNetwork,mediatype,value){select.value?(appSettings.maxStreamingBitrate(isInNetwork,mediatype,select.value),appSettings.enableAutomaticBitrateDetection(isInNetwork,mediatype,!1)):appSettings.enableAutomaticBitrateDetection(isInNetwork,mediatype,!0)}function showHideQualityFields(context,user,apiClient){return user.Policy.EnableVideoPlaybackTranscoding?context.querySelector(".videoQualitySection").classList.remove("hide"):context.querySelector(".videoQualitySection").classList.add("hide"),appHost.supports("multiserver")?(context.querySelector(".fldVideoInNetworkQuality").classList.remove("hide"),context.querySelector(".fldVideoInternetQuality").classList.remove("hide"),void(user.Policy.EnableAudioPlaybackTranscoding?context.querySelector(".musicQualitySection").classList.remove("hide"):context.querySelector(".musicQualitySection").classList.add("hide"))):void apiClient.getEndpointInfo().then(function(endpointInfo){endpointInfo.IsInNetwork?(context.querySelector(".fldVideoInNetworkQuality").classList.remove("hide"),context.querySelector(".fldVideoInternetQuality").classList.add("hide"),context.querySelector(".musicQualitySection").classList.add("hide")):(context.querySelector(".fldVideoInNetworkQuality").classList.add("hide"),context.querySelector(".fldVideoInternetQuality").classList.remove("hide"),user.Policy.EnableAudioPlaybackTranscoding?context.querySelector(".musicQualitySection").classList.remove("hide"):context.querySelector(".musicQualitySection").classList.add("hide"))})}function showOrHideEpisodesField(context,user,apiClient){return browser.tizen||browser.web0s?void context.querySelector(".fldEpisodeAutoPlay").classList.add("hide"):void context.querySelector(".fldEpisodeAutoPlay").classList.remove("hide")}function loadForm(context,user,userSettings,apiClient){var loggedInUserId=apiClient.getCurrentUserId(),userId=user.Id;showHideQualityFields(context,user,apiClient),apiClient.getCultures().then(function(allCultures){populateLanguages(context.querySelector("#selectAudioLanguage"),allCultures),context.querySelector("#selectAudioLanguage",context).value=user.Configuration.AudioLanguagePreference||"",context.querySelector(".chkEpisodeAutoPlay").checked=user.Configuration.EnableNextEpisodeAutoPlay||!1}),apiClient.getNamedConfiguration("cinemamode").then(function(cinemaConfig){cinemaConfig.EnableIntrosForMovies||cinemaConfig.EnableIntrosForEpisodes?context.querySelector(".cinemaModeOptions").classList.remove("hide"):context.querySelector(".cinemaModeOptions").classList.add("hide")}),appHost.supports("externalplayerintent")&&userId===loggedInUserId?context.querySelector(".fldExternalPlayer").classList.remove("hide"):context.querySelector(".fldExternalPlayer").classList.add("hide"),userId===loggedInUserId&&(user.Policy.EnableVideoPlaybackTranscoding||user.Policy.EnableAudioPlaybackTranscoding)?(context.querySelector(".qualitySections").classList.remove("hide"),appHost.supports("chromecast")&&user.Policy.EnableVideoPlaybackTranscoding?context.querySelector(".fldChromecastQuality").classList.remove("hide"):context.querySelector(".fldChromecastQuality").classList.add("hide")):(context.querySelector(".qualitySections").classList.add("hide"),context.querySelector(".fldChromecastQuality").classList.add("hide")),browser.tizen||browser.web0s?context.querySelector(".fldEnableNextVideoOverlay").classList.add("hide"):context.querySelector(".fldEnableNextVideoOverlay").classList.remove("hide"),context.querySelector(".chkPlayDefaultAudioTrack").checked=user.Configuration.PlayDefaultAudioTrack||!1,context.querySelector(".chkEnableCinemaMode").checked=userSettings.enableCinemaMode(),context.querySelector(".chkEnableNextVideoOverlay").checked=userSettings.enableNextVideoInfoOverlay(),context.querySelector(".chkExternalVideoPlayer").checked=appSettings.enableSystemExternalPlayers(),setMaxBitrateIntoField(context.querySelector(".selectVideoInNetworkQuality"),!0,"Video"),setMaxBitrateIntoField(context.querySelector(".selectVideoInternetQuality"),!1,"Video"),setMaxBitrateIntoField(context.querySelector(".selectMusicInternetQuality"),!1,"Audio"),fillChromecastQuality(context.querySelector(".selectChromecastVideoQuality"));var selectSkipForwardLength=context.querySelector(".selectSkipForwardLength");fillSkipLengths(selectSkipForwardLength),selectSkipForwardLength.value=userSettings.skipForwardLength();var selectSkipBackLength=context.querySelector(".selectSkipBackLength");fillSkipLengths(selectSkipBackLength),selectSkipBackLength.value=userSettings.skipBackLength(),showOrHideEpisodesField(context,user,apiClient),loading.hide()}function saveUser(context,user,userSettingsInstance,apiClient){return appSettings.enableSystemExternalPlayers(context.querySelector(".chkExternalVideoPlayer").checked),appSettings.maxChromecastBitrate(context.querySelector(".selectChromecastVideoQuality").value),setMaxBitrateFromField(context.querySelector(".selectVideoInNetworkQuality"),!0,"Video"),setMaxBitrateFromField(context.querySelector(".selectVideoInternetQuality"),!1,"Video"),setMaxBitrateFromField(context.querySelector(".selectMusicInternetQuality"),!1,"Audio"),user.Configuration.AudioLanguagePreference=context.querySelector("#selectAudioLanguage").value,user.Configuration.PlayDefaultAudioTrack=context.querySelector(".chkPlayDefaultAudioTrack").checked,user.Configuration.EnableNextEpisodeAutoPlay=context.querySelector(".chkEpisodeAutoPlay").checked,userSettingsInstance.enableCinemaMode(context.querySelector(".chkEnableCinemaMode").checked),userSettingsInstance.enableNextVideoInfoOverlay(context.querySelector(".chkEnableNextVideoOverlay").checked),userSettingsInstance.skipForwardLength(context.querySelector(".selectSkipForwardLength").value),userSettingsInstance.skipBackLength(context.querySelector(".selectSkipBackLength").value),apiClient.updateUserConfiguration(user.Id,user.Configuration)}function save(instance,context,userId,userSettings,apiClient,enableSaveConfirmation){loading.show(),apiClient.getUser(userId).then(function(user){saveUser(context,user,userSettings,apiClient).then(function(){loading.hide(),enableSaveConfirmation&&require(["toast"],function(toast){toast(globalize.translate("sharedcomponents#SettingsSaved"))}),events.trigger(instance,"saved")},function(){loading.hide()})})}function onSubmit(e){var self=this,apiClient=connectionManager.getApiClient(self.options.serverId),userId=self.options.userId,userSettings=self.options.userSettings;return userSettings.setUserInfo(userId,apiClient).then(function(){var enableSaveConfirmation=self.options.enableSaveConfirmation;save(self,self.options.element,userId,userSettings,apiClient,enableSaveConfirmation)}),e&&e.preventDefault(),!1}function embed(options,self){require(["text!./playbacksettings.template.html"],function(template){options.element.innerHTML=globalize.translateDocument(template,"sharedcomponents"),options.element.querySelector("form").addEventListener("submit",onSubmit.bind(self)),options.enableSaveButton&&options.element.querySelector(".btnSave").classList.remove("hide"),self.loadData(),options.autoFocus&&focusManager.autoFocus(options.element)})}function PlaybackSettings(options){this.options=options,embed(options,this)}return PlaybackSettings.prototype.loadData=function(){var self=this,context=self.options.element;loading.show();var userId=self.options.userId,apiClient=connectionManager.getApiClient(self.options.serverId),userSettings=self.options.userSettings;apiClient.getUser(userId).then(function(user){userSettings.setUserInfo(userId,apiClient).then(function(){self.dataLoaded=!0,loadForm(context,user,userSettings,apiClient)})})},PlaybackSettings.prototype.submit=function(){onSubmit.call(this)},PlaybackSettings.prototype.destroy=function(){this.options=null},PlaybackSettings}); \ No newline at end of file +define(["require","browser","appSettings","apphost","focusManager","qualityoptions","globalize","loading","connectionManager","dom","events","emby-select","emby-checkbox"],function(require,browser,appSettings,appHost,focusManager,qualityoptions,globalize,loading,connectionManager,dom,events){"use strict";function fillSkipLengths(select){var options=[5,10,15,20,25,30];select.innerHTML=options.map(function(option){return{name:globalize.translate("sharedcomponents#ValueSeconds",option),value:1e3*option}}).map(function(o){return'"}).join("")}function populateLanguages(select,languages){var html="";html+="";for(var i=0,length=languages.length;i"+culture.DisplayName+""}select.innerHTML=html}function setMaxBitrateIntoField(select,isInNetwork,mediatype){var options="Audio"===mediatype?qualityoptions.getAudioQualityOptions({currentMaxBitrate:appSettings.maxStreamingBitrate(isInNetwork,mediatype),isAutomaticBitrateEnabled:appSettings.enableAutomaticBitrateDetection(isInNetwork,mediatype),enableAuto:!0}):qualityoptions.getVideoQualityOptions({currentMaxBitrate:appSettings.maxStreamingBitrate(isInNetwork,mediatype),isAutomaticBitrateEnabled:appSettings.enableAutomaticBitrateDetection(isInNetwork,mediatype),enableAuto:!0});select.innerHTML=options.map(function(i){return'"}).join(""),appSettings.enableAutomaticBitrateDetection(isInNetwork,mediatype)?select.value="":select.value=appSettings.maxStreamingBitrate(isInNetwork,mediatype)}function fillChromecastQuality(select){var options=qualityoptions.getVideoQualityOptions({currentMaxBitrate:appSettings.maxChromecastBitrate(),isAutomaticBitrateEnabled:!appSettings.maxChromecastBitrate(),enableAuto:!0});select.innerHTML=options.map(function(i){return'"}).join(""),select.value=appSettings.maxChromecastBitrate()||""}function setMaxBitrateFromField(select,isInNetwork,mediatype,value){select.value?(appSettings.maxStreamingBitrate(isInNetwork,mediatype,select.value),appSettings.enableAutomaticBitrateDetection(isInNetwork,mediatype,!1)):appSettings.enableAutomaticBitrateDetection(isInNetwork,mediatype,!0)}function showHideQualityFields(context,user,apiClient){if(user.Policy.EnableVideoPlaybackTranscoding?context.querySelector(".videoQualitySection").classList.remove("hide"):context.querySelector(".videoQualitySection").classList.add("hide"),appHost.supports("multiserver"))return context.querySelector(".fldVideoInNetworkQuality").classList.remove("hide"),context.querySelector(".fldVideoInternetQuality").classList.remove("hide"),void(user.Policy.EnableAudioPlaybackTranscoding?context.querySelector(".musicQualitySection").classList.remove("hide"):context.querySelector(".musicQualitySection").classList.add("hide"));apiClient.getEndpointInfo().then(function(endpointInfo){endpointInfo.IsInNetwork?(context.querySelector(".fldVideoInNetworkQuality").classList.remove("hide"),context.querySelector(".fldVideoInternetQuality").classList.add("hide"),context.querySelector(".musicQualitySection").classList.add("hide")):(context.querySelector(".fldVideoInNetworkQuality").classList.add("hide"),context.querySelector(".fldVideoInternetQuality").classList.remove("hide"),user.Policy.EnableAudioPlaybackTranscoding?context.querySelector(".musicQualitySection").classList.remove("hide"):context.querySelector(".musicQualitySection").classList.add("hide"))})}function showOrHideEpisodesField(context,user,apiClient){if(browser.tizen||browser.web0s)return void context.querySelector(".fldEpisodeAutoPlay").classList.add("hide");context.querySelector(".fldEpisodeAutoPlay").classList.remove("hide")}function loadForm(context,user,userSettings,apiClient){var loggedInUserId=apiClient.getCurrentUserId(),userId=user.Id;showHideQualityFields(context,user,apiClient),apiClient.getCultures().then(function(allCultures){populateLanguages(context.querySelector("#selectAudioLanguage"),allCultures),context.querySelector("#selectAudioLanguage",context).value=user.Configuration.AudioLanguagePreference||"",context.querySelector(".chkEpisodeAutoPlay").checked=user.Configuration.EnableNextEpisodeAutoPlay||!1}),apiClient.getNamedConfiguration("cinemamode").then(function(cinemaConfig){cinemaConfig.EnableIntrosForMovies||cinemaConfig.EnableIntrosForEpisodes?context.querySelector(".cinemaModeOptions").classList.remove("hide"):context.querySelector(".cinemaModeOptions").classList.add("hide")}),appHost.supports("externalplayerintent")&&userId===loggedInUserId?context.querySelector(".fldExternalPlayer").classList.remove("hide"):context.querySelector(".fldExternalPlayer").classList.add("hide"),userId===loggedInUserId&&(user.Policy.EnableVideoPlaybackTranscoding||user.Policy.EnableAudioPlaybackTranscoding)?(context.querySelector(".qualitySections").classList.remove("hide"),appHost.supports("chromecast")&&user.Policy.EnableVideoPlaybackTranscoding?context.querySelector(".fldChromecastQuality").classList.remove("hide"):context.querySelector(".fldChromecastQuality").classList.add("hide")):(context.querySelector(".qualitySections").classList.add("hide"),context.querySelector(".fldChromecastQuality").classList.add("hide")),browser.tizen||browser.web0s?context.querySelector(".fldEnableNextVideoOverlay").classList.add("hide"):context.querySelector(".fldEnableNextVideoOverlay").classList.remove("hide"),context.querySelector(".chkPlayDefaultAudioTrack").checked=user.Configuration.PlayDefaultAudioTrack||!1,context.querySelector(".chkEnableCinemaMode").checked=userSettings.enableCinemaMode(),context.querySelector(".chkEnableNextVideoOverlay").checked=userSettings.enableNextVideoInfoOverlay(),context.querySelector(".chkExternalVideoPlayer").checked=appSettings.enableSystemExternalPlayers(),setMaxBitrateIntoField(context.querySelector(".selectVideoInNetworkQuality"),!0,"Video"),setMaxBitrateIntoField(context.querySelector(".selectVideoInternetQuality"),!1,"Video"),setMaxBitrateIntoField(context.querySelector(".selectMusicInternetQuality"),!1,"Audio"),fillChromecastQuality(context.querySelector(".selectChromecastVideoQuality"));var selectSkipForwardLength=context.querySelector(".selectSkipForwardLength");fillSkipLengths(selectSkipForwardLength),selectSkipForwardLength.value=userSettings.skipForwardLength();var selectSkipBackLength=context.querySelector(".selectSkipBackLength");fillSkipLengths(selectSkipBackLength),selectSkipBackLength.value=userSettings.skipBackLength(),showOrHideEpisodesField(context,user,apiClient),loading.hide()}function saveUser(context,user,userSettingsInstance,apiClient){return appSettings.enableSystemExternalPlayers(context.querySelector(".chkExternalVideoPlayer").checked),appSettings.maxChromecastBitrate(context.querySelector(".selectChromecastVideoQuality").value),setMaxBitrateFromField(context.querySelector(".selectVideoInNetworkQuality"),!0,"Video"),setMaxBitrateFromField(context.querySelector(".selectVideoInternetQuality"),!1,"Video"),setMaxBitrateFromField(context.querySelector(".selectMusicInternetQuality"),!1,"Audio"),user.Configuration.AudioLanguagePreference=context.querySelector("#selectAudioLanguage").value,user.Configuration.PlayDefaultAudioTrack=context.querySelector(".chkPlayDefaultAudioTrack").checked,user.Configuration.EnableNextEpisodeAutoPlay=context.querySelector(".chkEpisodeAutoPlay").checked,userSettingsInstance.enableCinemaMode(context.querySelector(".chkEnableCinemaMode").checked),userSettingsInstance.enableNextVideoInfoOverlay(context.querySelector(".chkEnableNextVideoOverlay").checked),userSettingsInstance.skipForwardLength(context.querySelector(".selectSkipForwardLength").value),userSettingsInstance.skipBackLength(context.querySelector(".selectSkipBackLength").value),apiClient.updateUserConfiguration(user.Id,user.Configuration)}function save(instance,context,userId,userSettings,apiClient,enableSaveConfirmation){loading.show(),apiClient.getUser(userId).then(function(user){saveUser(context,user,userSettings,apiClient).then(function(){loading.hide(),enableSaveConfirmation&&require(["toast"],function(toast){toast(globalize.translate("sharedcomponents#SettingsSaved"))}),events.trigger(instance,"saved")},function(){loading.hide()})})}function onSubmit(e){var self=this,apiClient=connectionManager.getApiClient(self.options.serverId),userId=self.options.userId,userSettings=self.options.userSettings;return userSettings.setUserInfo(userId,apiClient).then(function(){var enableSaveConfirmation=self.options.enableSaveConfirmation;save(self,self.options.element,userId,userSettings,apiClient,enableSaveConfirmation)}),e&&e.preventDefault(),!1}function embed(options,self){require(["text!./playbacksettings.template.html"],function(template){options.element.innerHTML=globalize.translateDocument(template,"sharedcomponents"),options.element.querySelector("form").addEventListener("submit",onSubmit.bind(self)),options.enableSaveButton&&options.element.querySelector(".btnSave").classList.remove("hide"),self.loadData(),options.autoFocus&&focusManager.autoFocus(options.element)})}function PlaybackSettings(options){this.options=options,embed(options,this)}return PlaybackSettings.prototype.loadData=function(){var self=this,context=self.options.element;loading.show();var userId=self.options.userId,apiClient=connectionManager.getApiClient(self.options.serverId),userSettings=self.options.userSettings;apiClient.getUser(userId).then(function(user){userSettings.setUserInfo(userId,apiClient).then(function(){self.dataLoaded=!0,loadForm(context,user,userSettings,apiClient)})})},PlaybackSettings.prototype.submit=function(){onSubmit.call(this)},PlaybackSettings.prototype.destroy=function(){this.options=null},PlaybackSettings}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/playerstats/playerstats.js b/dashboard-ui/bower_components/emby-webcomponents/playerstats/playerstats.js index a45cdd212d..d9a2b5440e 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/playerstats/playerstats.js +++ b/dashboard-ui/bower_components/emby-webcomponents/playerstats/playerstats.js @@ -1 +1 @@ -define(["events","globalize","playbackManager","connectionManager","playMethodHelper","layoutManager","serverNotifications","paper-icon-button-light","css!./playerstats"],function(events,globalize,playbackManager,connectionManager,playMethodHelper,layoutManager,serverNotifications){"use strict";function init(instance){var parent=document.createElement("div");parent.classList.add("playerStats"),layoutManager.tv&&parent.classList.add("playerStats-tv"),parent.classList.add("hide");var button;button=layoutManager.tv?"":'';var contentClass=layoutManager.tv?"playerStats-content playerStats-content-tv":"playerStats-content";parent.innerHTML='
'+button+'
',button=parent.querySelector(".playerStats-closeButton"),button&&button.addEventListener("click",onCloseButtonClick.bind(instance)),document.body.appendChild(parent),instance.element=parent}function onCloseButtonClick(){this.enabled(!1)}function renderStats(elem,categories){elem.querySelector(".playerStats-stats").innerHTML=categories.map(function(category){var categoryHtml="",stats=category.stats;stats.length&&category.name&&(categoryHtml+='
',categoryHtml+='
',categoryHtml+=category.name,categoryHtml+="
",categoryHtml+='
',categoryHtml+=category.subText||"",categoryHtml+="
",categoryHtml+="
");for(var i=0,length=stats.length;i';var stat=stats[i];categoryHtml+='
',categoryHtml+=stat.label,categoryHtml+="
",categoryHtml+='
',categoryHtml+=stat.value,categoryHtml+="
",categoryHtml+=""}return categoryHtml}).join("")}function getSession(instance,player){var now=(new Date).getTime();if(now-(instance.lastSessionTime||0)<1e4)return Promise.resolve(instance.lastSession);var apiClient=connectionManager.getApiClient(playbackManager.currentItem(player).ServerId);return apiClient.getSessions({deviceId:apiClient.deviceId()}).then(function(sessions){return instance.lastSession=sessions[0]||{},instance.lastSessionTime=(new Date).getTime(),Promise.resolve(instance.lastSession)},function(){return Promise.resolve({})})}function translateReason(reason){return globalize.translate("sharedcomponents#"+reason)}function getTranscodingStats(session,player,displayPlayMethod){var videoCodec,audioCodec,totalBitrate,audioChannels,sessionStats=[];return session.TranscodingInfo&&(videoCodec=session.TranscodingInfo.VideoCodec,audioCodec=session.TranscodingInfo.AudioCodec,totalBitrate=session.TranscodingInfo.Bitrate,audioChannels=session.TranscodingInfo.AudioChannels),videoCodec&&sessionStats.push({label:"Video codec:",value:session.TranscodingInfo.IsVideoDirect?videoCodec.toUpperCase()+" (direct)":videoCodec.toUpperCase()}),audioCodec&&sessionStats.push({label:"Audio codec:",value:session.TranscodingInfo.IsAudioDirect?audioCodec.toUpperCase()+" (direct)":audioCodec.toUpperCase()}),"Transcode"===displayPlayMethod&&(totalBitrate&&sessionStats.push({label:"Bitrate:",value:getDisplayBitrate(totalBitrate)}),session.TranscodingInfo.CompletionPercentage&&sessionStats.push({label:"Transcoding progress:",value:session.TranscodingInfo.CompletionPercentage.toFixed(1)+"%"}),session.TranscodingInfo.Framerate&&sessionStats.push({label:"Transcoding framerate:",value:session.TranscodingInfo.Framerate+" fps"}),session.TranscodingInfo.TranscodeReasons&&session.TranscodingInfo.TranscodeReasons.length&&sessionStats.push({label:"Reason for transcoding:",value:session.TranscodingInfo.TranscodeReasons.map(translateReason).join("
")})),sessionStats}function getDisplayBitrate(bitrate){return bitrate>1e6?(bitrate/1e6).toFixed(1)+" Mbps":Math.floor(bitrate/1e3)+" kbps"}function getMediaSourceStats(session,player,displayPlayMethod){var sessionStats=[],mediaSource=playbackManager.currentMediaSource(player)||{},totalBitrate=mediaSource.Bitrate;mediaSource.Container&&sessionStats.push({label:"Container:",value:mediaSource.Container}),totalBitrate&&sessionStats.push({label:"Bitrate:",value:getDisplayBitrate(totalBitrate)});var mediaStreams=mediaSource.MediaStreams||[],videoStream=mediaStreams.filter(function(s){return"Video"===s.Type})[0]||{},videoCodec=videoStream.Codec,audioStreamIndex=playbackManager.getAudioStreamIndex(player),audioStream=playbackManager.audioTracks(player).filter(function(s){return"Audio"===s.Type&&s.Index===audioStreamIndex})[0]||{},audioCodec=audioStream.Codec,audioChannels=audioStream.Channels,videoInfos=[];videoCodec&&videoInfos.push(videoCodec.toUpperCase()),videoStream.Profile&&videoInfos.push(videoStream.Profile),videoInfos.length&&sessionStats.push({label:"Video codec:",value:videoInfos.join(" ")}),videoStream.BitRate&&sessionStats.push({label:"Video bitrate:",value:getDisplayBitrate(videoStream.BitRate)});var audioInfos=[];return audioCodec&&audioInfos.push(audioCodec.toUpperCase()),audioStream.Profile&&audioInfos.push(audioStream.Profile),audioInfos.length&&sessionStats.push({label:"Audio codec:",value:audioInfos.join(" ")}),audioStream.BitRate&&sessionStats.push({label:"Audio bitrate:",value:getDisplayBitrate(audioStream.BitRate)}),audioChannels&&sessionStats.push({label:"Audio channels:",value:audioChannels}),audioStream.SampleRate&&sessionStats.push({label:"Audio sample rate:",value:audioStream.SampleRate+" Hz"}),audioStream.BitDepth&&sessionStats.push({label:"Audio bit depth:",value:audioStream.BitDepth}),sessionStats}function getStats(instance,player){var statsPromise=player.getStats?player.getStats():Promise.resolve({}),sessionPromise=getSession(instance,player);return Promise.all([statsPromise,sessionPromise]).then(function(responses){var playerStatsResult=responses[0],playerStats=playerStatsResult.categories||[],session=responses[1],displayPlayMethod=playMethodHelper.getDisplayPlayMethod(session),baseCategory={stats:[],name:"Playback Info"};baseCategory.stats.unshift({label:"Play method:",value:displayPlayMethod}),baseCategory.stats.unshift({label:"Player:",value:player.name});var categories=[];categories.push(baseCategory);for(var i=0,length=playerStats.length;iclose';var contentClass=layoutManager.tv?"playerStats-content playerStats-content-tv":"playerStats-content";parent.innerHTML='
'+button+'
',button=parent.querySelector(".playerStats-closeButton"),button&&button.addEventListener("click",onCloseButtonClick.bind(instance)),document.body.appendChild(parent),instance.element=parent}function onCloseButtonClick(){this.enabled(!1)}function renderStats(elem,categories){elem.querySelector(".playerStats-stats").innerHTML=categories.map(function(category){var categoryHtml="",stats=category.stats;stats.length&&category.name&&(categoryHtml+='
',categoryHtml+='
',categoryHtml+=category.name,categoryHtml+="
",categoryHtml+='
',categoryHtml+=category.subText||"",categoryHtml+="
",categoryHtml+="
");for(var i=0,length=stats.length;i';var stat=stats[i];categoryHtml+='
',categoryHtml+=stat.label,categoryHtml+="
",categoryHtml+='
',categoryHtml+=stat.value,categoryHtml+="
",categoryHtml+=""}return categoryHtml}).join("")}function getSession(instance,player){if((new Date).getTime()-(instance.lastSessionTime||0)<1e4)return Promise.resolve(instance.lastSession);var apiClient=connectionManager.getApiClient(playbackManager.currentItem(player).ServerId);return apiClient.getSessions({deviceId:apiClient.deviceId()}).then(function(sessions){return instance.lastSession=sessions[0]||{},instance.lastSessionTime=(new Date).getTime(),Promise.resolve(instance.lastSession)},function(){return Promise.resolve({})})}function translateReason(reason){return globalize.translate("sharedcomponents#"+reason)}function getTranscodingStats(session,player,displayPlayMethod){var videoCodec,audioCodec,totalBitrate,sessionStats=[];return session.TranscodingInfo&&(videoCodec=session.TranscodingInfo.VideoCodec,audioCodec=session.TranscodingInfo.AudioCodec,totalBitrate=session.TranscodingInfo.Bitrate,session.TranscodingInfo.AudioChannels),videoCodec&&sessionStats.push({label:"Video codec:",value:session.TranscodingInfo.IsVideoDirect?videoCodec.toUpperCase()+" (direct)":videoCodec.toUpperCase()}),audioCodec&&sessionStats.push({label:"Audio codec:",value:session.TranscodingInfo.IsAudioDirect?audioCodec.toUpperCase()+" (direct)":audioCodec.toUpperCase()}),"Transcode"===displayPlayMethod&&(totalBitrate&&sessionStats.push({label:"Bitrate:",value:getDisplayBitrate(totalBitrate)}),session.TranscodingInfo.CompletionPercentage&&sessionStats.push({label:"Transcoding progress:",value:session.TranscodingInfo.CompletionPercentage.toFixed(1)+"%"}),session.TranscodingInfo.Framerate&&sessionStats.push({label:"Transcoding framerate:",value:session.TranscodingInfo.Framerate+" fps"}),session.TranscodingInfo.TranscodeReasons&&session.TranscodingInfo.TranscodeReasons.length&&sessionStats.push({label:"Reason for transcoding:",value:session.TranscodingInfo.TranscodeReasons.map(translateReason).join("
")})),sessionStats}function getDisplayBitrate(bitrate){return bitrate>1e6?(bitrate/1e6).toFixed(1)+" Mbps":Math.floor(bitrate/1e3)+" kbps"}function getMediaSourceStats(session,player,displayPlayMethod){var sessionStats=[],mediaSource=playbackManager.currentMediaSource(player)||{},totalBitrate=mediaSource.Bitrate;mediaSource.Container&&sessionStats.push({label:"Container:",value:mediaSource.Container}),totalBitrate&&sessionStats.push({label:"Bitrate:",value:getDisplayBitrate(totalBitrate)});var mediaStreams=mediaSource.MediaStreams||[],videoStream=mediaStreams.filter(function(s){return"Video"===s.Type})[0]||{},videoCodec=videoStream.Codec,audioStreamIndex=playbackManager.getAudioStreamIndex(player),audioStream=playbackManager.audioTracks(player).filter(function(s){return"Audio"===s.Type&&s.Index===audioStreamIndex})[0]||{},audioCodec=audioStream.Codec,audioChannels=audioStream.Channels,videoInfos=[];videoCodec&&videoInfos.push(videoCodec.toUpperCase()),videoStream.Profile&&videoInfos.push(videoStream.Profile),videoInfos.length&&sessionStats.push({label:"Video codec:",value:videoInfos.join(" ")}),videoStream.BitRate&&sessionStats.push({label:"Video bitrate:",value:getDisplayBitrate(videoStream.BitRate)});var audioInfos=[];return audioCodec&&audioInfos.push(audioCodec.toUpperCase()),audioStream.Profile&&audioInfos.push(audioStream.Profile),audioInfos.length&&sessionStats.push({label:"Audio codec:",value:audioInfos.join(" ")}),audioStream.BitRate&&sessionStats.push({label:"Audio bitrate:",value:getDisplayBitrate(audioStream.BitRate)}),audioChannels&&sessionStats.push({label:"Audio channels:",value:audioChannels}),audioStream.SampleRate&&sessionStats.push({label:"Audio sample rate:",value:audioStream.SampleRate+" Hz"}),audioStream.BitDepth&&sessionStats.push({label:"Audio bit depth:",value:audioStream.BitDepth}),sessionStats}function getStats(instance,player){var statsPromise=player.getStats?player.getStats():Promise.resolve({}),sessionPromise=getSession(instance,player);return Promise.all([statsPromise,sessionPromise]).then(function(responses){var playerStatsResult=responses[0],playerStats=playerStatsResult.categories||[],session=responses[1],displayPlayMethod=playMethodHelper.getDisplayPlayMethod(session),baseCategory={stats:[],name:"Playback Info"};baseCategory.stats.unshift({label:"Play method:",value:displayPlayMethod}),baseCategory.stats.unshift({label:"Player:",value:player.name});var categories=[];categories.push(baseCategory);for(var i=0,length=playerStats.length;i'+globalize.translate("sharedcomponents#AddToPlayQueue")+""),html+='",html+=result.Items.map(function(i){return'"}),select.innerHTML=html;var defaultValue=editorOptions.defaultValue;defaultValue||(defaultValue=userSettings.get("playlisteditor-lastplaylistid")||""),select.value="new"===defaultValue?"":defaultValue,select.value||(select.value=""),triggerChange(select),loading.hide()})}function getEditorHtml(){var html="";return html+='
',html+='
',html+='
',html+='
',html+='',html+="
",html+='
',html+='
',html+='',html+="
",html+="
",html+='
',html+='",html+="
",html+='',html+="
",html+="
",html+="
"}function initEditor(content,options,items){if(content.querySelector("#selectPlaylistToAddTo").addEventListener("change",function(){this.value?(content.querySelector(".newPlaylistInfo").classList.add("hide"),content.querySelector("#txtNewPlaylistName").removeAttribute("required")):(content.querySelector(".newPlaylistInfo").classList.remove("hide"),content.querySelector("#txtNewPlaylistName").setAttribute("required","required"))}),content.querySelector("form").addEventListener("submit",onSubmit),content.querySelector(".fldSelectedItemIds",content).value=items.join(","),items.length)content.querySelector(".fldSelectPlaylist").classList.remove("hide"),populatePlaylists(options,content);else{content.querySelector(".fldSelectPlaylist").classList.add("hide");var selectPlaylistToAddTo=content.querySelector("#selectPlaylistToAddTo");selectPlaylistToAddTo.innerHTML="",selectPlaylistToAddTo.value="",triggerChange(selectPlaylistToAddTo)}}function centerFocus(elem,horiz,on){require(["scrollHelper"],function(scrollHelper){var fn=on?"on":"off";scrollHelper.centerFocus[fn](elem,horiz)})}function PlaylistEditor(){}var currentServerId;return PlaylistEditor.prototype.show=function(options){var items=options.items||{};currentServerId=options.serverId;var dialogOptions={removeOnClose:!0,scrollY:!1};layoutManager.tv?dialogOptions.size="fullscreen":dialogOptions.size="small";var dlg=dialogHelper.createDialog(dialogOptions);dlg.classList.add("formDialog");var html="",title=globalize.translate("sharedcomponents#HeaderAddToPlaylist");return html+='
',html+='',html+='

',html+=title,html+="

",html+="
",html+=getEditorHtml(),dlg.innerHTML=html,initEditor(dlg,options,items),dlg.querySelector(".btnCancel").addEventListener("click",function(){dialogHelper.close(dlg)}),layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!0),dialogHelper.open(dlg).then(function(){return layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!1),dlg.submitted?Promise.resolve():Promise.reject()})},PlaylistEditor}); \ No newline at end of file +define(["shell","dialogHelper","loading","layoutManager","playbackManager","connectionManager","userSettings","appRouter","globalize","emby-input","paper-icon-button-light","emby-select","material-icons","css!./../formdialog","emby-button"],function(shell,dialogHelper,loading,layoutManager,playbackManager,connectionManager,userSettings,appRouter,globalize){"use strict";function parentWithClass(elem,className){for(;!elem.classList||!elem.classList.contains(className);)if(!(elem=elem.parentNode))return null;return elem}function onSubmit(e){var panel=parentWithClass(this,"dialog"),playlistId=panel.querySelector("#selectPlaylistToAddTo").value,apiClient=connectionManager.getApiClient(currentServerId);return playlistId?(userSettings.set("playlisteditor-lastplaylistid",playlistId),addToPlaylist(apiClient,panel,playlistId)):createPlaylist(apiClient,panel),e.preventDefault(),!1}function createPlaylist(apiClient,dlg){loading.show();var url=apiClient.getUrl("Playlists",{Name:dlg.querySelector("#txtNewPlaylistName").value,Ids:dlg.querySelector(".fldSelectedItemIds").value||"",userId:apiClient.getCurrentUserId()});apiClient.ajax({type:"POST",url:url,dataType:"json"}).then(function(result){loading.hide();var id=result.Id;dlg.submitted=!0,dialogHelper.close(dlg),redirectToPlaylist(apiClient,id)})}function redirectToPlaylist(apiClient,id){appRouter.showItem(id,apiClient.serverId())}function addToPlaylist(apiClient,dlg,id){var itemIds=dlg.querySelector(".fldSelectedItemIds").value||"";if("queue"===id)return playbackManager.queue({serverId:apiClient.serverId(),ids:itemIds.split(",")}),dlg.submitted=!0,void dialogHelper.close(dlg);loading.show();var url=apiClient.getUrl("Playlists/"+id+"/Items",{Ids:itemIds,userId:apiClient.getCurrentUserId()});apiClient.ajax({type:"POST",url:url}).then(function(){loading.hide(),dlg.submitted=!0,dialogHelper.close(dlg)})}function triggerChange(select){select.dispatchEvent(new CustomEvent("change",{}))}function populatePlaylists(editorOptions,panel){var select=panel.querySelector("#selectPlaylistToAddTo");loading.hide(),panel.querySelector(".newPlaylistInfo").classList.add("hide");var options={Recursive:!0,IncludeItemTypes:"Playlist",SortBy:"SortName",EnableTotalRecordCount:!1},apiClient=connectionManager.getApiClient(currentServerId);apiClient.getItems(apiClient.getCurrentUserId(),options).then(function(result){var html="";!1!==editorOptions.enableAddToPlayQueue&&playbackManager.isPlaying()&&(html+='"),html+='",html+=result.Items.map(function(i){return'"}),select.innerHTML=html;var defaultValue=editorOptions.defaultValue;defaultValue||(defaultValue=userSettings.get("playlisteditor-lastplaylistid")||""),select.value="new"===defaultValue?"":defaultValue,select.value||(select.value=""),triggerChange(select),loading.hide()})}function getEditorHtml(items){var html="";html+='
',html+='
',html+='
',html+='
';var autoFocus=items.length?" autofocus":"";return html+='",html+="
",html+='
',html+='
',autoFocus=items.length?"":" autofocus",html+='",html+="
",html+="
",html+='
',html+='",html+="
",html+='',html+="
",html+="
",html+="
"}function initEditor(content,options,items){if(content.querySelector("#selectPlaylistToAddTo").addEventListener("change",function(){this.value?(content.querySelector(".newPlaylistInfo").classList.add("hide"),content.querySelector("#txtNewPlaylistName").removeAttribute("required")):(content.querySelector(".newPlaylistInfo").classList.remove("hide"),content.querySelector("#txtNewPlaylistName").setAttribute("required","required"))}),content.querySelector("form").addEventListener("submit",onSubmit),content.querySelector(".fldSelectedItemIds",content).value=items.join(","),items.length)content.querySelector(".fldSelectPlaylist").classList.remove("hide"),populatePlaylists(options,content);else{content.querySelector(".fldSelectPlaylist").classList.add("hide");var selectPlaylistToAddTo=content.querySelector("#selectPlaylistToAddTo");selectPlaylistToAddTo.innerHTML="",selectPlaylistToAddTo.value="",triggerChange(selectPlaylistToAddTo)}}function centerFocus(elem,horiz,on){require(["scrollHelper"],function(scrollHelper){var fn=on?"on":"off";scrollHelper.centerFocus[fn](elem,horiz)})}function PlaylistEditor(){}var currentServerId;return PlaylistEditor.prototype.show=function(options){var items=options.items||{};currentServerId=options.serverId;var dialogOptions={removeOnClose:!0,scrollY:!1};layoutManager.tv?dialogOptions.size="fullscreen":dialogOptions.size="small";var dlg=dialogHelper.createDialog(dialogOptions);dlg.classList.add("formDialog");var html="",title=globalize.translate("sharedcomponents#HeaderAddToPlaylist");return html+='
',html+='',html+='

',html+=title,html+="

",html+="
",html+=getEditorHtml(items),dlg.innerHTML=html,initEditor(dlg,options,items),dlg.querySelector(".btnCancel").addEventListener("click",function(){dialogHelper.close(dlg)}),layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!0),dialogHelper.open(dlg).then(function(){return layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!1),dlg.submitted?Promise.resolve():Promise.reject()})},PlaylistEditor}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/pluginmanager.js b/dashboard-ui/bower_components/emby-webcomponents/pluginmanager.js index f2f02e4a12..a4674d541e 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/pluginmanager.js +++ b/dashboard-ui/bower_components/emby-webcomponents/pluginmanager.js @@ -1 +1 @@ -define(["events"],function(events){"use strict";function loadStrings(plugin,globalize){var strings=plugin.getTranslations?plugin.getTranslations():[];return globalize.loadStrings({name:plugin.id||plugin.packageName,strings:strings})}function definePluginRoute(pluginManager,route,plugin){route.contentPath=pluginManager.mapPath(plugin,route.path),route.path=pluginManager.mapRoute(plugin,route),Emby.App.defineRoute(route,plugin.id)}function PluginManager(){this.pluginsList=[]}var cacheParam=(new Date).getTime();return PluginManager.prototype.loadPlugin=function(url){console.log("Loading plugin: "+url);var instance=this;return new Promise(function(resolve,reject){require([url,"globalize","appRouter"],function(pluginFactory,globalize,appRouter){var plugin=new pluginFactory,existing=instance.pluginsList.filter(function(p){return p.id===plugin.id})[0];if(existing)return void resolve(url);plugin.installUrl=url;var urlLower=url.toLowerCase();urlLower.indexOf("http:")===-1&&urlLower.indexOf("https:")===-1&&urlLower.indexOf("file:")===-1&&0!==url.indexOf(appRouter.baseUrl())&&(url=appRouter.baseUrl()+"/"+url);var separatorIndex=Math.max(url.lastIndexOf("/"),url.lastIndexOf("\\"));plugin.baseUrl=url.substring(0,separatorIndex);var paths={};paths[plugin.id]=plugin.baseUrl,requirejs.config({waitSeconds:0,paths:paths}),instance.register(plugin),plugin.getRoutes&&plugin.getRoutes().forEach(function(route){definePluginRoute(instance,route,plugin)}),"skin"===plugin.type?resolve(plugin):loadStrings(plugin,globalize).then(function(){resolve(plugin)},reject)})})},PluginManager.prototype.register=function(obj){this.pluginsList.push(obj),events.trigger(this,"registered",[obj])},PluginManager.prototype.ofType=function(type){return this.pluginsList.filter(function(o){return o.type===type})},PluginManager.prototype.plugins=function(){return this.pluginsList},PluginManager.prototype.mapRoute=function(plugin,route){return"string"==typeof plugin&&(plugin=this.pluginsList.filter(function(p){return(p.id||p.packageName)===plugin})[0]),route=route.path||route,0===route.toLowerCase().indexOf("http")?route:"/plugins/"+plugin.id+"/"+route},PluginManager.prototype.mapPath=function(plugin,path,addCacheParam){"string"==typeof plugin&&(plugin=this.pluginsList.filter(function(p){return(p.id||p.packageName)===plugin})[0]);var url=plugin.baseUrl+"/"+path;return addCacheParam&&(url+=url.indexOf("?")===-1?"?":"&",url+="v="+cacheParam),url},new PluginManager}); \ No newline at end of file +define(["events"],function(events){"use strict";function loadStrings(plugin,globalize){var strings=plugin.getTranslations?plugin.getTranslations():[];return globalize.loadStrings({name:plugin.id||plugin.packageName,strings:strings})}function definePluginRoute(pluginManager,route,plugin){route.contentPath=pluginManager.mapPath(plugin,route.path),route.path=pluginManager.mapRoute(plugin,route),Emby.App.defineRoute(route,plugin.id)}function PluginManager(){this.pluginsList=[]}var cacheParam=(new Date).getTime();return PluginManager.prototype.loadPlugin=function(url){console.log("Loading plugin: "+url);var instance=this;return new Promise(function(resolve,reject){require([url,"globalize","appRouter"],function(pluginFactory,globalize,appRouter){var plugin=new pluginFactory;if(instance.pluginsList.filter(function(p){return p.id===plugin.id})[0])return void resolve(url);plugin.installUrl=url;var urlLower=url.toLowerCase();-1===urlLower.indexOf("http:")&&-1===urlLower.indexOf("https:")&&-1===urlLower.indexOf("file:")&&0!==url.indexOf(appRouter.baseUrl())&&(url=appRouter.baseUrl()+"/"+url);var separatorIndex=Math.max(url.lastIndexOf("/"),url.lastIndexOf("\\"));plugin.baseUrl=url.substring(0,separatorIndex);var paths={};paths[plugin.id]=plugin.baseUrl,requirejs.config({waitSeconds:0,paths:paths}),instance.register(plugin),plugin.getRoutes&&plugin.getRoutes().forEach(function(route){definePluginRoute(instance,route,plugin)}),"skin"===plugin.type?resolve(plugin):loadStrings(plugin,globalize).then(function(){resolve(plugin)},reject)})})},PluginManager.prototype.register=function(obj){this.pluginsList.push(obj),events.trigger(this,"registered",[obj])},PluginManager.prototype.ofType=function(type){return this.pluginsList.filter(function(o){return o.type===type})},PluginManager.prototype.plugins=function(){return this.pluginsList},PluginManager.prototype.mapRoute=function(plugin,route){return"string"==typeof plugin&&(plugin=this.pluginsList.filter(function(p){return(p.id||p.packageName)===plugin})[0]),route=route.path||route,0===route.toLowerCase().indexOf("http")?route:"/plugins/"+plugin.id+"/"+route},PluginManager.prototype.mapPath=function(plugin,path,addCacheParam){"string"==typeof plugin&&(plugin=this.pluginsList.filter(function(p){return(p.id||p.packageName)===plugin})[0]);var url=plugin.baseUrl+"/"+path;return addCacheParam&&(url+=-1===url.indexOf("?")?"?":"&",url+="v="+cacheParam),url},new PluginManager}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/polyfills/objectassign.js b/dashboard-ui/bower_components/emby-webcomponents/polyfills/objectassign.js index 66118a7510..468eda183e 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/polyfills/objectassign.js +++ b/dashboard-ui/bower_components/emby-webcomponents/polyfills/objectassign.js @@ -1 +1 @@ -"function"!=typeof Object.assign&&!function(){Object.assign=function(target){"use strict";if(void 0===target||null===target)throw new TypeError("Cannot convert undefined or null to object");for(var output=Object(target),index=1;index=3800&&(qualityOptions.push({name:"4K - 120 Mbps",maxHeight:2160,bitrate:12e7}),qualityOptions.push({name:"4K - 100 Mbps",maxHeight:2160,bitrate:1e8}),qualityOptions.push({name:"4K - 80 Mbps",maxHeight:2160,bitrate:8e7})),maxAllowedWidth>=1900?(qualityOptions.push({name:"1080p - 60 Mbps",maxHeight:1080,bitrate:6e7}),qualityOptions.push({name:"1080p - 50 Mbps",maxHeight:1080,bitrate:5e7}),qualityOptions.push({name:"1080p - 40 Mbps",maxHeight:1080,bitrate:4e7}),qualityOptions.push({name:"1080p - 30 Mbps",maxHeight:1080,bitrate:3e7}),qualityOptions.push({name:"1080p - 25 Mbps",maxHeight:1080,bitrate:25e6}),qualityOptions.push({name:"1080p - 20 Mbps",maxHeight:1080,bitrate:2e7}),qualityOptions.push({name:"1080p - 15 Mbps",maxHeight:1080,bitrate:15e6}),qualityOptions.push({name:"1080p - 10 Mbps",maxHeight:1080,bitrate:10000001}),qualityOptions.push({name:"1080p - 8 Mbps",maxHeight:1080,bitrate:8000001}),qualityOptions.push({name:"1080p - 6 Mbps",maxHeight:1080,bitrate:6000001}),qualityOptions.push({name:"1080p - 5 Mbps",maxHeight:1080,bitrate:5000001}),qualityOptions.push({name:"1080p - 4 Mbps",maxHeight:1080,bitrate:4000002})):maxAllowedWidth>=1260?(qualityOptions.push({name:"720p - 10 Mbps",maxHeight:720,bitrate:1e7}),qualityOptions.push({name:"720p - 8 Mbps",maxHeight:720,bitrate:8e6}),qualityOptions.push({name:"720p - 6 Mbps",maxHeight:720,bitrate:6e6}),qualityOptions.push({name:"720p - 5 Mbps",maxHeight:720,bitrate:5e6})):maxAllowedWidth>=620&&(qualityOptions.push({name:"480p - 4 Mbps",maxHeight:480,bitrate:4000001}),qualityOptions.push({name:"480p - 3 Mbps",maxHeight:480,bitrate:3000001}),qualityOptions.push({name:"480p - 2.5 Mbps",maxHeight:480,bitrate:25e5}),qualityOptions.push({name:"480p - 2 Mbps",maxHeight:480,bitrate:2000001}),qualityOptions.push({name:"480p - 1.5 Mbps",maxHeight:480,bitrate:1500001})),maxAllowedWidth>=1260&&(qualityOptions.push({name:"720p - 4 Mbps",maxHeight:720,bitrate:4e6}),qualityOptions.push({name:"720p - 3 Mbps",maxHeight:720,bitrate:3e6}),qualityOptions.push({name:"720p - 2 Mbps",maxHeight:720,bitrate:2e6}),qualityOptions.push({name:"720p - 1.5 Mbps",maxHeight:720,bitrate:15e5}),qualityOptions.push({name:"720p - 1 Mbps",maxHeight:720,bitrate:1000001})),qualityOptions.push({name:"480p - 1 Mbps",maxHeight:480,bitrate:1e6}),qualityOptions.push({name:"480p - 720 kbps",maxHeight:480,bitrate:72e4}),qualityOptions.push({name:"480p - 420 kbps",maxHeight:480,bitrate:42e4}),qualityOptions.push({name:"360p",maxHeight:360,bitrate:4e5}),qualityOptions.push({name:"240p",maxHeight:240,bitrate:32e4}),qualityOptions.push({name:"144p",maxHeight:144,bitrate:192e3});var autoQualityOption={name:globalize.translate("sharedcomponents#Auto"),bitrate:0,selected:options.isAutomaticBitrateEnabled};if(options.enableAuto&&qualityOptions.push(autoQualityOption),maxStreamingBitrate){for(var selectedIndex=-1,i=0,length=qualityOptions.length;i=3800&&(qualityOptions.push({name:"4K - 120 Mbps",maxHeight:2160,bitrate:12e7}),qualityOptions.push({name:"4K - 100 Mbps",maxHeight:2160,bitrate:1e8}),qualityOptions.push({name:"4K - 80 Mbps",maxHeight:2160,bitrate:8e7})),maxAllowedWidth>=1900?(qualityOptions.push({name:"1080p - 60 Mbps",maxHeight:1080,bitrate:6e7}),qualityOptions.push({name:"1080p - 50 Mbps",maxHeight:1080,bitrate:5e7}),qualityOptions.push({name:"1080p - 40 Mbps",maxHeight:1080,bitrate:4e7}),qualityOptions.push({name:"1080p - 30 Mbps",maxHeight:1080,bitrate:3e7}),qualityOptions.push({name:"1080p - 25 Mbps",maxHeight:1080,bitrate:25e6}),qualityOptions.push({name:"1080p - 20 Mbps",maxHeight:1080,bitrate:2e7}),qualityOptions.push({name:"1080p - 15 Mbps",maxHeight:1080,bitrate:15e6}),qualityOptions.push({name:"1080p - 10 Mbps",maxHeight:1080,bitrate:10000001}),qualityOptions.push({name:"1080p - 8 Mbps",maxHeight:1080,bitrate:8000001}),qualityOptions.push({name:"1080p - 6 Mbps",maxHeight:1080,bitrate:6000001}),qualityOptions.push({name:"1080p - 5 Mbps",maxHeight:1080,bitrate:5000001}),qualityOptions.push({name:"1080p - 4 Mbps",maxHeight:1080,bitrate:4000002})):maxAllowedWidth>=1260?(qualityOptions.push({name:"720p - 10 Mbps",maxHeight:720,bitrate:1e7}),qualityOptions.push({name:"720p - 8 Mbps",maxHeight:720,bitrate:8e6}),qualityOptions.push({name:"720p - 6 Mbps",maxHeight:720,bitrate:6e6}),qualityOptions.push({name:"720p - 5 Mbps",maxHeight:720,bitrate:5e6})):maxAllowedWidth>=620&&(qualityOptions.push({name:"480p - 4 Mbps",maxHeight:480,bitrate:4000001}),qualityOptions.push({name:"480p - 3 Mbps",maxHeight:480,bitrate:3000001}),qualityOptions.push({name:"480p - 2.5 Mbps",maxHeight:480,bitrate:25e5}),qualityOptions.push({name:"480p - 2 Mbps",maxHeight:480,bitrate:2000001}),qualityOptions.push({name:"480p - 1.5 Mbps",maxHeight:480,bitrate:1500001})),maxAllowedWidth>=1260&&(qualityOptions.push({name:"720p - 4 Mbps",maxHeight:720,bitrate:4e6}),qualityOptions.push({name:"720p - 3 Mbps",maxHeight:720,bitrate:3e6}),qualityOptions.push({name:"720p - 2 Mbps",maxHeight:720,bitrate:2e6}),qualityOptions.push({name:"720p - 1.5 Mbps",maxHeight:720,bitrate:15e5}),qualityOptions.push({name:"720p - 1 Mbps",maxHeight:720,bitrate:1000001})),qualityOptions.push({name:"480p - 1 Mbps",maxHeight:480,bitrate:1e6}),qualityOptions.push({name:"480p - 720 kbps",maxHeight:480,bitrate:72e4}),qualityOptions.push({name:"480p - 420 kbps",maxHeight:480,bitrate:42e4}),qualityOptions.push({name:"360p",maxHeight:360,bitrate:4e5}),qualityOptions.push({name:"240p",maxHeight:240,bitrate:32e4}),qualityOptions.push({name:"144p",maxHeight:144,bitrate:192e3});var autoQualityOption={name:globalize.translate("sharedcomponents#Auto"),bitrate:0,selected:options.isAutomaticBitrateEnabled};if(options.enableAuto&&qualityOptions.push(autoQualityOption),maxStreamingBitrate){for(var selectedIndex=-1,i=0,length=qualityOptions.length;i
-
-
+
+
@@ -21,8 +21,8 @@
-
-
+
+
diff --git a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingfields.css b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingfields.css index 2e74beedb1..67bae22751 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingfields.css +++ b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingfields.css @@ -1 +1 @@ -.recordingButton{margin-left:0;min-width:10em}.recordingIcon{font-size:1.3em!important}.recordingIcon-active{color:#c33}.recordSeriesContainer{margin-bottom:.8em} \ No newline at end of file +.recordingButton{margin-left:0;min-width:10em}.recordingIcon-active{color:#c33}.recordSeriesContainer{margin-bottom:.8em} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingfields.js b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingfields.js index e9f8b2d612..6098673c76 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingfields.js +++ b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingfields.js @@ -1 +1 @@ -define(["globalize","connectionManager","serverNotifications","require","loading","apphost","dom","recordingHelper","events","registrationServices","paper-icon-button-light","emby-button","css!./recordingfields","flexStyles"],function(globalize,connectionManager,serverNotifications,require,loading,appHost,dom,recordingHelper,events,registrationServices){"use strict";function getRegistration(apiClient,feature){return registrationServices.validateFeature(feature,{showDialog:!1,viewOnly:!0})}function showConvertRecordingsUnlockMessage(context,apiClient){getRegistration(apiClient,getDvrFeatureCode()).then(function(){context.querySelector(".convertRecordingsContainer").classList.add("hide")},function(){context.querySelector(".convertRecordingsContainer").classList.remove("hide")})}function showSeriesRecordingFields(context,programId,apiClient){getRegistration(apiClient,getDvrFeatureCode()).then(function(){context.querySelector(".supporterContainer").classList.add("hide"),context.querySelector(".convertRecordingsContainer").classList.add("hide"),context.querySelector(".recordSeriesContainer").classList.remove("hide")},function(){context.querySelector(".supporterContainerText").innerHTML=globalize.translate("sharedcomponents#MessageActiveSubscriptionRequiredSeriesRecordings"),context.querySelector(".supporterContainer").classList.remove("hide"),context.querySelector(".recordSeriesContainer").classList.add("hide"),context.querySelector(".convertRecordingsContainer").classList.add("hide")})}function getDvrFeatureCode(){return"dvr"}function showSingleRecordingFields(context,programId,apiClient){getRegistration(apiClient,getDvrFeatureCode()).then(function(){context.querySelector(".supporterContainer").classList.add("hide"),showConvertRecordingsUnlockMessage(context,apiClient)},function(){context.querySelector(".supporterContainerText").innerHTML=globalize.translate("sharedcomponents#DvrSubscriptionRequired"),context.querySelector(".supporterContainer").classList.remove("hide"),context.querySelector(".convertRecordingsContainer").classList.add("hide")})}function showRecordingFieldsContainer(context,programId,apiClient){getRegistration(apiClient,getDvrFeatureCode()).then(function(){context.querySelector(".recordingFields").classList.remove("hide")},function(){context.querySelector(".recordingFields").classList.add("hide")})}function loadData(parent,program,apiClient){program.IsSeries?(parent.querySelector(".recordSeriesContainer").classList.remove("hide"),showSeriesRecordingFields(parent,program.Id,apiClient)):(parent.querySelector(".recordSeriesContainer").classList.add("hide"),showSingleRecordingFields(parent,program.Id,apiClient)),program.SeriesTimerId?(parent.querySelector(".btnManageSeriesRecording").classList.remove("hide"),parent.querySelector(".seriesRecordingButton .recordingIcon").classList.add("recordingIcon-active"),parent.querySelector(".seriesRecordingButton .buttonText").innerHTML=globalize.translate("sharedcomponents#CancelSeries")):(parent.querySelector(".btnManageSeriesRecording").classList.add("hide"),parent.querySelector(".seriesRecordingButton .recordingIcon").classList.remove("recordingIcon-active"),parent.querySelector(".seriesRecordingButton .buttonText").innerHTML=globalize.translate("sharedcomponents#RecordSeries")),program.TimerId&&"Cancelled"!==program.Status?(parent.querySelector(".btnManageRecording").classList.remove("hide"),parent.querySelector(".singleRecordingButton .recordingIcon").classList.add("recordingIcon-active"),"InProgress"===program.Status?parent.querySelector(".singleRecordingButton .buttonText").innerHTML=globalize.translate("sharedcomponents#StopRecording"):parent.querySelector(".singleRecordingButton .buttonText").innerHTML=globalize.translate("sharedcomponents#DoNotRecord")):(parent.querySelector(".btnManageRecording").classList.add("hide"),parent.querySelector(".singleRecordingButton .recordingIcon").classList.remove("recordingIcon-active"),parent.querySelector(".singleRecordingButton .buttonText").innerHTML=globalize.translate("sharedcomponents#Record"))}function fetchData(instance){var options=instance.options,apiClient=connectionManager.getApiClient(options.serverId);return showRecordingFieldsContainer(options.parent,options.programId,apiClient),apiClient.getLiveTvProgram(options.programId,apiClient.getCurrentUserId()).then(function(program){instance.TimerId=program.TimerId,instance.Status=program.Status,instance.SeriesTimerId=program.SeriesTimerId,loadData(options.parent,program,apiClient)})}function onTimerChangedExternally(e,apiClient,data){var options=this.options,refresh=!1;data.Id&&this.TimerId===data.Id&&(refresh=!0),data.ProgramId&&options&&options.programId===data.ProgramId&&(refresh=!0),refresh&&this.refresh()}function onSeriesTimerChangedExternally(e,apiClient,data){var options=this.options,refresh=!1;data.Id&&this.SeriesTimerId===data.Id&&(refresh=!0),data.ProgramId&&options&&options.programId===data.ProgramId&&(refresh=!0),refresh&&this.refresh()}function RecordingEditor(options){this.options=options,this.embed();var timerChangedHandler=onTimerChangedExternally.bind(this);this.timerChangedHandler=timerChangedHandler,events.on(serverNotifications,"TimerCreated",timerChangedHandler),events.on(serverNotifications,"TimerCancelled",timerChangedHandler);var seriesTimerChangedHandler=onSeriesTimerChangedExternally.bind(this);this.seriesTimerChangedHandler=seriesTimerChangedHandler,events.on(serverNotifications,"SeriesTimerCreated",seriesTimerChangedHandler),events.on(serverNotifications,"SeriesTimerCancelled",seriesTimerChangedHandler)}function onSupporterButtonClick(){registrationServices.showPremiereInfo()}function onManageRecordingClick(e){var options=this.options;if(this.TimerId&&"Cancelled"!==this.Status){var self=this;require(["recordingEditor"],function(recordingEditor){recordingEditor.show(self.TimerId,options.serverId,{enableCancel:!1}).then(function(){self.changed=!0})})}}function onManageSeriesRecordingClick(e){var options=this.options;if(this.SeriesTimerId){var self=this;require(["seriesRecordingEditor"],function(seriesRecordingEditor){seriesRecordingEditor.show(self.SeriesTimerId,options.serverId,{enableCancel:!1}).then(function(){self.changed=!0})})}}function onRecordChange(e){this.changed=!0;var self=this,options=this.options,apiClient=connectionManager.getApiClient(options.serverId),button=dom.parentWithTag(e.target,"BUTTON"),isChecked=!button.querySelector("i").classList.contains("recordingIcon-active"),hasEnabledTimer=this.TimerId&&"Cancelled"!==this.Status;isChecked?hasEnabledTimer||(loading.show(),recordingHelper.createRecording(apiClient,options.programId,!1).then(function(){events.trigger(self,"recordingchanged"),fetchData(self),loading.hide()})):hasEnabledTimer&&(loading.show(),recordingHelper.cancelTimer(apiClient,this.TimerId,!0).then(function(){events.trigger(self,"recordingchanged"),fetchData(self),loading.hide()}))}function sendToast(msg){require(["toast"],function(toast){toast(msg)})}function onRecordSeriesChange(e){this.changed=!0;var self=this,options=this.options,apiClient=connectionManager.getApiClient(options.serverId),button=dom.parentWithTag(e.target,"BUTTON"),isChecked=!button.querySelector("i").classList.contains("recordingIcon-active");if(isChecked){if(showSeriesRecordingFields(options.parent,options.programId,apiClient),!this.SeriesTimerId){var promise=this.TimerId?recordingHelper.changeRecordingToSeries(apiClient,this.TimerId,options.programId):recordingHelper.createRecording(apiClient,options.programId,!0);promise.then(function(){fetchData(self)})}}else showSingleRecordingFields(options.parent,options.programId,apiClient),this.SeriesTimerId&&apiClient.cancelLiveTvSeriesTimer(this.SeriesTimerId).then(function(){sendToast(globalize.translate("sharedcomponents#RecordingCancelled")),fetchData(self)})}return RecordingEditor.prototype.embed=function(){var self=this;return new Promise(function(resolve,reject){require(["text!./recordingfields.template.html"],function(template){var options=self.options,context=options.parent;context.innerHTML=globalize.translateDocument(template,"sharedcomponents");for(var supporterButtons=context.querySelectorAll(".btnSupporter"),i=0,length=supporterButtons.length;i'+text+""}context.querySelector(".selectKeepUpTo").innerHTML=html}function onFieldChange(e){this.querySelector(".btnSubmit").click()}function embed(itemId,serverId,options){recordingUpdated=!1,recordingDeleted=!1,currentServerId=serverId,loading.show(),options=options||{},require(["text!./seriesrecordingeditor.template.html"],function(template){var dialogOptions={removeOnClose:!0,scrollY:!1};layoutManager.tv?dialogOptions.size="fullscreen":dialogOptions.size="small";var dlg=options.context;dlg.classList.add("hide"),dlg.innerHTML=globalize.translateDocument(template,"sharedcomponents"),dlg.querySelector(".formDialogHeader").classList.add("hide"),dlg.querySelector(".formDialogFooter").classList.add("hide"),dlg.querySelector(".formDialogContent").className="",dlg.querySelector(".dialogContentInner").className="",dlg.classList.remove("hide"),dlg.removeEventListener("change",onFieldChange),dlg.addEventListener("change",onFieldChange),currentDialog=dlg,init(dlg),reload(dlg,itemId)})}function showEditor(itemId,serverId,options){return new Promise(function(resolve,reject){recordingUpdated=!1,recordingDeleted=!1,currentServerId=serverId,loading.show(),options=options||{},require(["text!./seriesrecordingeditor.template.html"],function(template){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("recordingDialog"),layoutManager.tv||(dlg.style["min-width"]="20%");var html="";html+=globalize.translateDocument(template,"sharedcomponents"),dlg.innerHTML=html,options.enableCancel===!1&&dlg.querySelector(".formDialogFooter").classList.add("hide"),currentDialog=dlg,dlg.addEventListener("closing",function(){recordingDeleted||this.querySelector(".btnSubmit").click()}),dlg.addEventListener("close",function(){recordingUpdated?resolve({updated:!0,deleted:recordingDeleted}):reject()}),layoutManager.tv&&scrollHelper.centerFocus.on(dlg.querySelector(".formDialogContent"),!1),init(dlg),reload(dlg,itemId),dialogHelper.open(dlg)})})}var currentDialog,currentItemId,currentServerId,recordingUpdated=!1,recordingDeleted=!1;return{show:showEditor,embed:embed}}); \ No newline at end of file +define(["dialogHelper","globalize","layoutManager","mediaInfo","apphost","connectionManager","require","loading","scrollHelper","imageLoader","datetime","scrollStyles","emby-button","emby-checkbox","emby-input","emby-select","paper-icon-button-light","css!./../formdialog","css!./recordingcreator","material-icons","flexStyles"],function(dialogHelper,globalize,layoutManager,mediaInfo,appHost,connectionManager,require,loading,scrollHelper,imageLoader,datetime){"use strict";function deleteTimer(apiClient,timerId){return new Promise(function(resolve,reject){require(["recordingHelper"],function(recordingHelper){recordingHelper.cancelSeriesTimerWithConfirmation(timerId,apiClient.serverId()).then(resolve,reject)})})}function renderTimer(context,item,apiClient){item.ProgramInfo;context.querySelector("#txtPrePaddingMinutes").value=item.PrePaddingSeconds/60,context.querySelector("#txtPostPaddingMinutes").value=item.PostPaddingSeconds/60,context.querySelector(".selectChannels").value=item.RecordAnyChannel?"all":"one",context.querySelector(".selectAirTime").value=item.RecordAnyTime?"any":"original",context.querySelector(".selectShowType").value=item.RecordNewOnly?"new":"all",context.querySelector(".chkSkipEpisodesInLibrary").checked=item.SkipEpisodesInLibrary,context.querySelector(".selectKeepUpTo").value=item.KeepUpTo||0,item.ChannelName||item.ChannelNumber?context.querySelector(".optionChannelOnly").innerHTML=globalize.translate("sharedcomponents#ChannelNameOnly",item.ChannelName||item.ChannelNumber):context.querySelector(".optionChannelOnly").innerHTML=globalize.translate("sharedcomponents#OneChannel"),context.querySelector(".optionAroundTime").innerHTML=globalize.translate("sharedcomponents#AroundTime",datetime.getDisplayTime(datetime.parseISO8601Date(item.StartDate))),loading.hide()}function closeDialog(isDeleted){recordingUpdated=!0,recordingDeleted=isDeleted,dialogHelper.close(currentDialog)}function onSubmit(e){var form=this,apiClient=connectionManager.getApiClient(currentServerId);return apiClient.getLiveTvSeriesTimer(currentItemId).then(function(item){item.PrePaddingSeconds=60*form.querySelector("#txtPrePaddingMinutes").value,item.PostPaddingSeconds=60*form.querySelector("#txtPostPaddingMinutes").value,item.RecordAnyChannel="all"===form.querySelector(".selectChannels").value,item.RecordAnyTime="any"===form.querySelector(".selectAirTime").value,item.RecordNewOnly="new"===form.querySelector(".selectShowType").value,item.SkipEpisodesInLibrary=form.querySelector(".chkSkipEpisodesInLibrary").checked,item.KeepUpTo=form.querySelector(".selectKeepUpTo").value,apiClient.updateLiveTvSeriesTimer(item)}),e.preventDefault(),!1}function init(context){fillKeepUpTo(context),context.querySelector(".btnCancel").addEventListener("click",function(){closeDialog(!1)}),context.querySelector(".btnCancelRecording").addEventListener("click",function(){deleteTimer(connectionManager.getApiClient(currentServerId),currentItemId).then(function(){closeDialog(!0)})}),context.querySelector("form").addEventListener("submit",onSubmit)}function reload(context,id){var apiClient=connectionManager.getApiClient(currentServerId);loading.show(),"string"==typeof id?(currentItemId=id,apiClient.getLiveTvSeriesTimer(id).then(function(result){renderTimer(context,result,apiClient),loading.hide()})):id&&(currentItemId=id.Id,renderTimer(context,id,apiClient),loading.hide())}function fillKeepUpTo(context){for(var html="",i=0;i<=50;i++){var text;text=0===i?globalize.translate("sharedcomponents#AsManyAsPossible"):1===i?globalize.translate("sharedcomponents#ValueOneEpisode"):globalize.translate("sharedcomponents#ValueEpisodeCount",i),html+='"}context.querySelector(".selectKeepUpTo").innerHTML=html}function onFieldChange(e){this.querySelector(".btnSubmit").click()}function embed(itemId,serverId,options){recordingUpdated=!1,recordingDeleted=!1,currentServerId=serverId,loading.show(),options=options||{},require(["text!./seriesrecordingeditor.template.html"],function(template){var dialogOptions={removeOnClose:!0,scrollY:!1};layoutManager.tv?dialogOptions.size="fullscreen":dialogOptions.size="small";var dlg=options.context;dlg.classList.add("hide"),dlg.innerHTML=globalize.translateDocument(template,"sharedcomponents"),dlg.querySelector(".formDialogHeader").classList.add("hide"),dlg.querySelector(".formDialogFooter").classList.add("hide"),dlg.querySelector(".formDialogContent").className="",dlg.querySelector(".dialogContentInner").className="",dlg.classList.remove("hide"),dlg.removeEventListener("change",onFieldChange),dlg.addEventListener("change",onFieldChange),currentDialog=dlg,init(dlg),reload(dlg,itemId)})}function showEditor(itemId,serverId,options){return new Promise(function(resolve,reject){recordingUpdated=!1,recordingDeleted=!1,currentServerId=serverId,loading.show(),options=options||{},require(["text!./seriesrecordingeditor.template.html"],function(template){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("recordingDialog"),layoutManager.tv||(dlg.style["min-width"]="20%");var html="";html+=globalize.translateDocument(template,"sharedcomponents"),dlg.innerHTML=html,!1===options.enableCancel&&dlg.querySelector(".formDialogFooter").classList.add("hide"),currentDialog=dlg,dlg.addEventListener("closing",function(){recordingDeleted||this.querySelector(".btnSubmit").click()}),dlg.addEventListener("close",function(){recordingUpdated?resolve({updated:!0,deleted:recordingDeleted}):reject()}),layoutManager.tv&&scrollHelper.centerFocus.on(dlg.querySelector(".formDialogContent"),!1),init(dlg),reload(dlg,itemId),dialogHelper.open(dlg)})})}var currentDialog,currentItemId,currentServerId,recordingUpdated=!1,recordingDeleted=!1;return{show:showEditor,embed:embed}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/seriesrecordingeditor.template.html b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/seriesrecordingeditor.template.html index e882a41210..0460546a76 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/seriesrecordingeditor.template.html +++ b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/seriesrecordingeditor.template.html @@ -43,8 +43,8 @@
-
-
+
+
@@ -53,8 +53,8 @@
-
-
+
+
diff --git a/dashboard-ui/bower_components/emby-webcomponents/refreshdialog/refreshdialog.js b/dashboard-ui/bower_components/emby-webcomponents/refreshdialog/refreshdialog.js index 8e1c09aa1c..d2ccd47197 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/refreshdialog/refreshdialog.js +++ b/dashboard-ui/bower_components/emby-webcomponents/refreshdialog/refreshdialog.js @@ -1 +1 @@ -define(["shell","dialogHelper","loading","layoutManager","connectionManager","appRouter","globalize","emby-input","emby-checkbox","paper-icon-button-light","emby-select","material-icons","css!./../formdialog","emby-button"],function(shell,dialogHelper,loading,layoutManager,connectionManager,appRouter,globalize){"use strict";function parentWithClass(elem,className){for(;!elem.classList||!elem.classList.contains(className);)if(elem=elem.parentNode,!elem)return null;return elem}function getEditorHtml(){var html="";return html+='
',html+='
',html+='
',html+='
',html+='",html+="
",html+='",html+='
',html+=globalize.translate("sharedcomponents#RefreshDialogHelp"),html+="
",html+='',html+="
",html+='
',html+='",html+="
",html+="
",html+="
",html+="
"}function centerFocus(elem,horiz,on){require(["scrollHelper"],function(scrollHelper){var fn=on?"on":"off";scrollHelper.centerFocus[fn](elem,horiz)})}function onSubmit(e){loading.show();var instance=this,dlg=parentWithClass(e.target,"dialog"),options=instance.options,apiClient=connectionManager.getApiClient(options.serverId),replaceAllMetadata="all"===dlg.querySelector("#selectMetadataRefreshMode").value,mode="scan"===dlg.querySelector("#selectMetadataRefreshMode").value?"Default":"FullRefresh",replaceAllImages="FullRefresh"===mode&&dlg.querySelector(".chkReplaceImages").checked;return options.itemIds.forEach(function(itemId){apiClient.refreshItem(itemId,{Recursive:!0,ImageRefreshMode:mode,MetadataRefreshMode:mode,ReplaceAllImages:replaceAllImages,ReplaceAllMetadata:replaceAllMetadata})}),dialogHelper.close(dlg),require(["toast"],function(toast){toast(globalize.translate("sharedcomponents#RefreshQueued"))}),loading.hide(),e.preventDefault(),!1}function RefreshDialog(options){this.options=options}return RefreshDialog.prototype.show=function(){var dialogOptions={removeOnClose:!0,scrollY:!1};layoutManager.tv?dialogOptions.size="fullscreen":dialogOptions.size="small";var dlg=dialogHelper.createDialog(dialogOptions);dlg.classList.add("formDialog");var html="",title=globalize.translate("sharedcomponents#RefreshMetadata");return html+='
',html+='',html+='

',html+=title,html+="

",html+="
",html+=getEditorHtml(),dlg.innerHTML=html,dlg.querySelector("form").addEventListener("submit",onSubmit.bind(this)),dlg.querySelector("#selectMetadataRefreshMode").addEventListener("change",function(){"scan"===this.value?dlg.querySelector(".fldReplaceExistingImages").classList.add("hide"):dlg.querySelector(".fldReplaceExistingImages").classList.remove("hide")}),this.options.mode&&(dlg.querySelector("#selectMetadataRefreshMode").value=this.options.mode),dlg.querySelector("#selectMetadataRefreshMode").dispatchEvent(new CustomEvent("change")),dlg.querySelector(".btnCancel").addEventListener("click",function(){dialogHelper.close(dlg)}),layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!0),new Promise(function(resolve,reject){layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!1),dlg.addEventListener("close",resolve),dialogHelper.open(dlg)})},RefreshDialog}); \ No newline at end of file +define(["shell","dialogHelper","loading","layoutManager","connectionManager","appRouter","globalize","emby-input","emby-checkbox","paper-icon-button-light","emby-select","material-icons","css!./../formdialog","emby-button"],function(shell,dialogHelper,loading,layoutManager,connectionManager,appRouter,globalize){"use strict";function parentWithClass(elem,className){for(;!elem.classList||!elem.classList.contains(className);)if(!(elem=elem.parentNode))return null;return elem}function getEditorHtml(){var html="";return html+='
',html+='
',html+='
',html+='
',html+='",html+="
",html+='",html+='
',html+=globalize.translate("sharedcomponents#RefreshDialogHelp"),html+="
",html+='',html+="
",html+='
',html+='",html+="
",html+="
",html+="
",html+="
"}function centerFocus(elem,horiz,on){require(["scrollHelper"],function(scrollHelper){var fn=on?"on":"off";scrollHelper.centerFocus[fn](elem,horiz)})}function onSubmit(e){loading.show();var instance=this,dlg=parentWithClass(e.target,"dialog"),options=instance.options,apiClient=connectionManager.getApiClient(options.serverId),replaceAllMetadata="all"===dlg.querySelector("#selectMetadataRefreshMode").value,mode="scan"===dlg.querySelector("#selectMetadataRefreshMode").value?"Default":"FullRefresh",replaceAllImages="FullRefresh"===mode&&dlg.querySelector(".chkReplaceImages").checked;return options.itemIds.forEach(function(itemId){apiClient.refreshItem(itemId,{Recursive:!0,ImageRefreshMode:mode,MetadataRefreshMode:mode,ReplaceAllImages:replaceAllImages,ReplaceAllMetadata:replaceAllMetadata})}),dialogHelper.close(dlg),require(["toast"],function(toast){toast(globalize.translate("sharedcomponents#RefreshQueued"))}),loading.hide(),e.preventDefault(),!1}function RefreshDialog(options){this.options=options}return RefreshDialog.prototype.show=function(){var dialogOptions={removeOnClose:!0,scrollY:!1};layoutManager.tv?dialogOptions.size="fullscreen":dialogOptions.size="small";var dlg=dialogHelper.createDialog(dialogOptions);dlg.classList.add("formDialog");var html="",title=globalize.translate("sharedcomponents#RefreshMetadata");return html+='
',html+='',html+='

',html+=title,html+="

",html+="
",html+=getEditorHtml(),dlg.innerHTML=html,dlg.querySelector("form").addEventListener("submit",onSubmit.bind(this)),dlg.querySelector("#selectMetadataRefreshMode").addEventListener("change",function(){"scan"===this.value?dlg.querySelector(".fldReplaceExistingImages").classList.add("hide"):dlg.querySelector(".fldReplaceExistingImages").classList.remove("hide")}),this.options.mode&&(dlg.querySelector("#selectMetadataRefreshMode").value=this.options.mode),dlg.querySelector("#selectMetadataRefreshMode").dispatchEvent(new CustomEvent("change")),dlg.querySelector(".btnCancel").addEventListener("click",function(){dialogHelper.close(dlg)}),layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!0),new Promise(function(resolve,reject){layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!1),dlg.addEventListener("close",resolve),dialogHelper.open(dlg)})},RefreshDialog}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/registrationservices/registrationservices.js b/dashboard-ui/bower_components/emby-webcomponents/registrationservices/registrationservices.js index a51b8fc5f3..1daf465c83 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/registrationservices/registrationservices.js +++ b/dashboard-ui/bower_components/emby-webcomponents/registrationservices/registrationservices.js @@ -1 +1 @@ -define(["appSettings","loading","apphost","iapManager","events","shell","globalize","dialogHelper","connectionManager","layoutManager","emby-button","emby-linkbutton"],function(appSettings,loading,appHost,iapManager,events,shell,globalize,dialogHelper,connectionManager,layoutManager){"use strict";function alertText(options){return new Promise(function(resolve,reject){require(["alert"],function(alert){alert(options).then(resolve,reject)})})}function showInAppPurchaseInfo(subscriptionOptions,unlockableProductInfo,dialogOptions){return new Promise(function(resolve,reject){require(["listViewStyle","formDialogStyle"],function(){showInAppPurchaseElement(subscriptionOptions,unlockableProductInfo,dialogOptions,resolve,reject),currentDisplayingResolve=resolve})})}function showPeriodicMessage(feature,settingsKey){return new Promise(function(resolve,reject){require(["listViewStyle","emby-button","formDialogStyle"],function(){var dlg=dialogHelper.createDialog({size:layoutManager.tv?"fullscreen":"fullscreen-border",removeOnClose:!0,scrollY:!1});dlg.classList.add("formDialog");var html="";html+='
',html+='',html+='

Emby Premiere',html+="

",html+="
",html+='
',html+='
',html+="

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

",html+="

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

",html+="

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

",html+='

'+globalize.translate("sharedcomponents#HeaderBenefitsEmbyPremiere")+"

",html+='
',html+=getSubscriptionBenefits().map(getSubscriptionBenefitHtml).join(""),html+="
",html+="
",html+='
',html+='";var seconds=11;html+='
'+globalize.translate("sharedcomponents#ContinueInSecondsValue",seconds)+"
",html+='",html+="
",html+="
",html+="
",dlg.innerHTML=html;var i,length,isRejected=!0,timeTextInterval=setInterval(function(){seconds-=1,seconds<=0?(dlg.querySelector(".continueTimeText").classList.add("hide"),dlg.querySelector(".btnContinue").classList.remove("hide")):dlg.querySelector(".continueTimeText").innerHTML=globalize.translate("sharedcomponents#ContinueInSecondsValue",seconds)},1e3),btnPurchases=dlg.querySelectorAll(".buttonPremiereInfo");for(i=0,length=btnPurchases.length;iintervalMs){var apiClient=connectionManager.currentApiClient();if("6da60dd6edfc4508bca2c434d4400816"===apiClient.serverId())return Promise.resolve();var registrationOptions={viewOnly:!0};return connectionManager.getRegistrationInfo(iapManager.getAdminFeatureName(feature),apiClient,registrationOptions).catch(function(errorResult){return"overlimit"===errorResult?(appSettings.set(settingsKey,(new Date).getTime()),Promise.resolve()):showPeriodicMessage(feature,settingsKey)})}return Promise.resolve()}function validateFeature(feature,options){return options=options||{},console.log("validateFeature: "+feature),iapManager.isUnlockedByDefault(feature,options).then(function(){return showPeriodicMessageIfNeeded(feature)},function(){var unlockableFeatureCacheKey="featurepurchased-"+feature;if("1"===appSettings.get(unlockableFeatureCacheKey))return showPeriodicMessageIfNeeded(feature);var unlockableProduct=iapManager.getProductInfo(feature);if(unlockableProduct){var unlockableCacheKey="productpurchased-"+unlockableProduct.id;if(unlockableProduct.owned)return appSettings.set(unlockableFeatureCacheKey,"1"),appSettings.set(unlockableCacheKey,"1"),showPeriodicMessageIfNeeded(feature);if("1"===appSettings.get(unlockableCacheKey))return showPeriodicMessageIfNeeded(feature)}var unlockableProductInfo=unlockableProduct?{enableAppUnlock:!0,id:unlockableProduct.id,price:unlockableProduct.price,feature:feature}:null;return iapManager.getSubscriptionOptions().then(function(subscriptionOptions){if(subscriptionOptions.filter(function(p){return p.owned}).length>0)return Promise.resolve();var registrationOptions={viewOnly:options.viewOnly};return connectionManager.getRegistrationInfo(iapManager.getAdminFeatureName(feature),connectionManager.currentApiClient(),registrationOptions).catch(function(errorResult){if(options.showDialog===!1)return Promise.reject();var alertPromise;return"overlimit"===errorResult&&(alertPromise=showOverLimitAlert()),alertPromise||(alertPromise=Promise.resolve()),alertPromise.then(function(){var dialogOptions={title:globalize.translate("sharedcomponents#HeaderUnlockFeature"),feature:feature};return currentValidatingFeature=feature,showInAppPurchaseInfo(subscriptionOptions,unlockableProductInfo,dialogOptions)})})})})}function showOverLimitAlert(){return alertText("Your Emby Premiere device limit has been exceeded. Please check with the owner of your Emby Server and have them contact Emby support at apps@emby.media if necessary.").catch(function(){return Promise.resolve()})}function cancelInAppPurchase(){var elem=document.querySelector(".inAppPurchaseOverlay");elem&&dialogHelper.close(elem)}function clearCurrentDisplayingInfo(){currentDisplayingProductInfos=[],currentDisplayingResolve=null,currentValidatingFeature=null,isCurrentDialogRejected=null}function showExternalPremiereInfo(){shell.openUrl("https://emby.media/premiere")}function centerFocus(elem,horiz,on){require(["scrollHelper"],function(scrollHelper){var fn=on?"on":"off";scrollHelper.centerFocus[fn](elem,horiz)})}function getPurchaseTermHtml(term){return"
  • "+term+"
  • "}function getTermsOfPurchaseHtml(){var html="",termsOfPurchase=iapManager.getTermsOfPurchase?iapManager.getTermsOfPurchase():[];return termsOfPurchase.length?(html+="

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

    ",termsOfPurchase.push(''+globalize.translate("sharedcomponents#PrivacyPolicy")+""),termsOfPurchase.push(''+globalize.translate("sharedcomponents#TermsOfUse")+""),html+="
      ",html+=termsOfPurchase.map(getPurchaseTermHtml).join(""),html+="
    "):html}function showInAppPurchaseElement(subscriptionOptions,unlockableProductInfo,dialogOptions,resolve,reject){function onCloseButtonClick(){dialogHelper.close(dlg)}cancelInAppPurchase(),currentDisplayingProductInfos=subscriptionOptions.slice(0),unlockableProductInfo&¤tDisplayingProductInfos.push(unlockableProductInfo);var dlg=dialogHelper.createDialog({size:layoutManager.tv?"fullscreen":"fullscreen-border",removeOnClose:!0,scrollY:!1});dlg.classList.add("formDialog");var html="";html+='
    ',html+='',html+='

    ',html+=dialogOptions.title||"",html+="

    ",html+="
    ",html+='
    ',html+='
    ',html+='
    ',html+='

    ',html+=unlockableProductInfo?globalize.translate("sharedcomponents#MessageUnlockAppWithPurchaseOrSupporter"):globalize.translate("sharedcomponents#MessageUnlockAppWithSupporter"),html+="

    ",html+='

    ',html+=globalize.translate("sharedcomponents#MessageToValidateSupporter"),html+="

    ";var i,length,hasProduct=!1;for(i=0,length=subscriptionOptions.length;i",html+='",html+="

    ";if(unlockableProductInfo){hasProduct=!0;var unlockText=globalize.translate("sharedcomponents#ButtonUnlockWithPurchase");unlockableProductInfo.price&&(unlockText=globalize.translate("sharedcomponents#ButtonUnlockPrice",unlockableProductInfo.price)),html+="

    ",html+='",html+="

    "}html+="

    ",html+='",html+="

    ",subscriptionOptions.length&&(html+='

    '+globalize.translate("sharedcomponents#HeaderBenefitsEmbyPremiere")+"

    ",html+='
    ',html+=getSubscriptionBenefits().map(getSubscriptionBenefitHtml).join(""),html+="
    "),"playback"===dialogOptions.feature&&(html+="

    ",html+='",html+="

    "),html+=getTermsOfPurchaseHtml(),html+="",html+="
    ",html+="
    ",dlg.innerHTML=html,document.body.appendChild(dlg);var btnPurchases=dlg.querySelectorAll(".btnPurchase");for(i=0,length=btnPurchases.length;i'):html+='
    ',html+=''+item.icon+"",html+='
    ',html+='

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

    ",html+='
    ',html+=item.text,html+="
    ",html+="
    ",html+=enableLink?"":"
    "}function onPurchaseButtonClick(){var featureId=this.getAttribute("data-featureid");"true"===this.getAttribute("data-email")?getUserEmail().then(function(email){iapManager.beginPurchase(featureId,email)}):iapManager.beginPurchase(featureId)}function restorePurchase(unlockableProductInfo){var dlg=dialogHelper.createDialog({size:layoutManager.tv?"fullscreen":"fullscreen-border",removeOnClose:!0,scrollY:!1});dlg.classList.add("formDialog");var html="";html+='
    ',html+='',html+='

    ',html+=iapManager.getRestoreButtonText(),html+="

    ",html+="
    ",html+='
    ',html+='
    ',html+='

    ',html+=globalize.translate("sharedcomponents#HowDidYouPay"),html+="

    ",html+="

    ",html+='",html+="

    ",unlockableProductInfo&&(html+="

    ",html+='",html+="

    "),html+="
    ",html+="
    ",dlg.innerHTML=html,document.body.appendChild(dlg),loading.hide(),layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!0),dlg.querySelector(".btnCloseDialog").addEventListener("click",function(){dialogHelper.close(dlg)}),dlg.querySelector(".btnRestoreSub").addEventListener("click",function(){dialogHelper.close(dlg),alertText({text:globalize.translate("sharedcomponents#MessageToValidateSupporter"),title:"Emby Premiere"})});var btnRestoreUnlock=dlg.querySelector(".btnRestoreUnlock");btnRestoreUnlock&&btnRestoreUnlock.addEventListener("click",function(){dialogHelper.close(dlg),iapManager.restorePurchase()}),dialogHelper.open(dlg).then(function(){layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!1)})}function getUserEmail(){if(connectionManager.isLoggedIntoConnect()){var connectUser=connectionManager.connectUser();if(connectUser&&connectUser.Email)return Promise.resolve(connectUser.Email)}return new Promise(function(resolve,reject){require(["prompt"],function(prompt){prompt({label:globalize.translate("sharedcomponents#LabelEmailAddress")}).then(resolve,reject)})})}function onProductUpdated(e,product){if(product.owned){var resolve=currentDisplayingResolve;if(resolve&¤tDisplayingProductInfos.filter(function(p){return product.id===p.id}).length)return isCurrentDialogRejected=!1,cancelInAppPurchase(),void resolve()}var feature=currentValidatingFeature;feature&&iapManager.isUnlockedByDefault(feature).then(function(){isCurrentDialogRejected=!1,cancelInAppPurchase(),resolve()})}function showPremiereInfo(){return appHost.supports("externalpremium")?(showExternalPremiereInfo(),Promise.resolve()):iapManager.getSubscriptionOptions().then(function(subscriptionOptions){var dialogOptions={title:"Emby Premiere",feature:"sync"};return showInAppPurchaseInfo(subscriptionOptions,null,dialogOptions)})}var currentDisplayingProductInfos=[],currentDisplayingResolve=null,currentValidatingFeature=null,isCurrentDialogRejected=null;return events.on(iapManager,"productupdated",onProductUpdated),{validateFeature:validateFeature,showPremiereInfo:showPremiereInfo}}); \ No newline at end of file +define(["appSettings","loading","apphost","iapManager","events","shell","globalize","dialogHelper","connectionManager","layoutManager","emby-button","emby-linkbutton"],function(appSettings,loading,appHost,iapManager,events,shell,globalize,dialogHelper,connectionManager,layoutManager){"use strict";function alertText(options){return new Promise(function(resolve,reject){require(["alert"],function(alert){alert(options).then(resolve,reject)})})}function showInAppPurchaseInfo(subscriptionOptions,unlockableProductInfo,dialogOptions){return new Promise(function(resolve,reject){require(["listViewStyle","formDialogStyle"],function(){showInAppPurchaseElement(subscriptionOptions,unlockableProductInfo,dialogOptions,resolve,reject),currentDisplayingResolve=resolve})})}function showPeriodicMessage(feature,settingsKey){return new Promise(function(resolve,reject){require(["listViewStyle","emby-button","formDialogStyle"],function(){var dlg=dialogHelper.createDialog({size:layoutManager.tv?"fullscreen":"fullscreen-border",removeOnClose:!0,scrollY:!1});dlg.classList.add("formDialog");var html="";html+='
    ',html+='',html+='

    Emby Premiere',html+="

    ",html+="
    ",html+='
    ',html+='
    ',html+="

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

    ",html+="

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

    ",html+="

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

    ",html+='

    '+globalize.translate("sharedcomponents#HeaderBenefitsEmbyPremiere")+"

    ",html+='
    ',html+=getSubscriptionBenefits().map(getSubscriptionBenefitHtml).join(""),html+="
    ",html+="
    ",html+='
    ',html+='";var seconds=11;html+='
    '+globalize.translate("sharedcomponents#ContinueInSecondsValue",seconds)+"
    ",html+='",html+="
    ",html+="
    ",html+="
    ",dlg.innerHTML=html;var i,length,isRejected=!0,timeTextInterval=setInterval(function(){seconds-=1,seconds<=0?(dlg.querySelector(".continueTimeText").classList.add("hide"),dlg.querySelector(".btnContinue").classList.remove("hide")):dlg.querySelector(".continueTimeText").innerHTML=globalize.translate("sharedcomponents#ContinueInSecondsValue",seconds)},1e3),btnPurchases=dlg.querySelectorAll(".buttonPremiereInfo");for(i=0,length=btnPurchases.length;iintervalMs){var apiClient=connectionManager.currentApiClient();if("6da60dd6edfc4508bca2c434d4400816"===apiClient.serverId())return Promise.resolve();var registrationOptions={viewOnly:!0};return connectionManager.getRegistrationInfo(iapManager.getAdminFeatureName(feature),apiClient,registrationOptions).catch(function(errorResult){return"overlimit"===errorResult?(appSettings.set(settingsKey,(new Date).getTime()),Promise.resolve()):showPeriodicMessage(feature,settingsKey)})}return Promise.resolve()}function validateFeature(feature,options){return options=options||{},console.log("validateFeature: "+feature),iapManager.isUnlockedByDefault(feature,options).then(function(){return showPeriodicMessageIfNeeded(feature)},function(){var unlockableFeatureCacheKey="featurepurchased-"+feature;if("1"===appSettings.get(unlockableFeatureCacheKey))return showPeriodicMessageIfNeeded(feature);var unlockableProduct=iapManager.getProductInfo(feature);if(unlockableProduct){var unlockableCacheKey="productpurchased-"+unlockableProduct.id;if(unlockableProduct.owned)return appSettings.set(unlockableFeatureCacheKey,"1"),appSettings.set(unlockableCacheKey,"1"),showPeriodicMessageIfNeeded(feature);if("1"===appSettings.get(unlockableCacheKey))return showPeriodicMessageIfNeeded(feature)}var unlockableProductInfo=unlockableProduct?{enableAppUnlock:!0,id:unlockableProduct.id,price:unlockableProduct.price,feature:feature}:null;return iapManager.getSubscriptionOptions().then(function(subscriptionOptions){if(subscriptionOptions.filter(function(p){return p.owned}).length>0)return Promise.resolve();var registrationOptions={viewOnly:options.viewOnly};return connectionManager.getRegistrationInfo(iapManager.getAdminFeatureName(feature),connectionManager.currentApiClient(),registrationOptions).catch(function(errorResult){if(!1===options.showDialog)return Promise.reject();var alertPromise;return"overlimit"===errorResult&&(alertPromise=showOverLimitAlert()),alertPromise||(alertPromise=Promise.resolve()),alertPromise.then(function(){var dialogOptions={title:globalize.translate("sharedcomponents#HeaderUnlockFeature"),feature:feature};return currentValidatingFeature=feature,showInAppPurchaseInfo(subscriptionOptions,unlockableProductInfo,dialogOptions)})})})})}function showOverLimitAlert(){return alertText("Your Emby Premiere device limit has been exceeded. Please check with the owner of your Emby Server and have them contact Emby support at apps@emby.media if necessary.").catch(function(){return Promise.resolve()})}function cancelInAppPurchase(){var elem=document.querySelector(".inAppPurchaseOverlay");elem&&dialogHelper.close(elem)}function clearCurrentDisplayingInfo(){currentDisplayingProductInfos=[],currentDisplayingResolve=null,currentValidatingFeature=null,isCurrentDialogRejected=null}function showExternalPremiereInfo(){shell.openUrl(iapManager.getPremiumInfoUrl())}function centerFocus(elem,horiz,on){require(["scrollHelper"],function(scrollHelper){var fn=on?"on":"off";scrollHelper.centerFocus[fn](elem,horiz)})}function getPurchaseTermHtml(term){return"
  • "+term+"
  • "}function getTermsOfPurchaseHtml(){var html="",termsOfPurchase=iapManager.getTermsOfPurchase?iapManager.getTermsOfPurchase():[];return termsOfPurchase.length?(html+="

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

    ",termsOfPurchase.push(''+globalize.translate("sharedcomponents#PrivacyPolicy")+""),termsOfPurchase.push(''+globalize.translate("sharedcomponents#TermsOfUse")+""),html+="
      ",html+=termsOfPurchase.map(getPurchaseTermHtml).join(""),html+="
    "):html}function showInAppPurchaseElement(subscriptionOptions,unlockableProductInfo,dialogOptions,resolve,reject){function onCloseButtonClick(){dialogHelper.close(dlg)}cancelInAppPurchase(),currentDisplayingProductInfos=subscriptionOptions.slice(0),unlockableProductInfo&¤tDisplayingProductInfos.push(unlockableProductInfo);var dlg=dialogHelper.createDialog({size:layoutManager.tv?"fullscreen":"fullscreen-border",removeOnClose:!0,scrollY:!1});dlg.classList.add("formDialog");var html="";html+='
    ',html+='',html+='

    ',html+=dialogOptions.title||"",html+="

    ",html+="
    ",html+='
    ',html+='
    ',html+='
    ',html+='

    ',html+=unlockableProductInfo?globalize.translate("sharedcomponents#MessageUnlockAppWithPurchaseOrSupporter"):globalize.translate("sharedcomponents#MessageUnlockAppWithSupporter"),html+="

    ",html+='

    ',html+=globalize.translate("sharedcomponents#MessageToValidateSupporter"),html+="

    ";var i,length;for(i=0,length=subscriptionOptions.length;i",html+='",html+="

    ";if(unlockableProductInfo){!0;var unlockText=globalize.translate("sharedcomponents#ButtonUnlockWithPurchase");unlockableProductInfo.price&&(unlockText=globalize.translate("sharedcomponents#ButtonUnlockPrice",unlockableProductInfo.price)),html+="

    ",html+='",html+="

    "}html+="

    ",html+='",html+="

    ",subscriptionOptions.length&&(html+='

    '+globalize.translate("sharedcomponents#HeaderBenefitsEmbyPremiere")+"

    ",html+='
    ',html+=getSubscriptionBenefits().map(getSubscriptionBenefitHtml).join(""),html+="
    "),"playback"===dialogOptions.feature&&(html+="

    ",html+='",html+="

    "),html+=getTermsOfPurchaseHtml(),html+="",html+="
    ",html+="
    ",dlg.innerHTML=html,document.body.appendChild(dlg);var btnPurchases=dlg.querySelectorAll(".btnPurchase");for(i=0,length=btnPurchases.length;i'):html+='
    ',html+=''+item.icon+"",html+='
    ',html+='

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

    ",html+='
    ',html+=item.text,html+="
    ",html+="
    ",html+=enableLink?"":"
    "}function onPurchaseButtonClick(){var featureId=this.getAttribute("data-featureid");"true"===this.getAttribute("data-email")?getUserEmail().then(function(email){iapManager.beginPurchase(featureId,email)}):iapManager.beginPurchase(featureId)}function restorePurchase(unlockableProductInfo){var dlg=dialogHelper.createDialog({size:layoutManager.tv?"fullscreen":"fullscreen-border",removeOnClose:!0,scrollY:!1});dlg.classList.add("formDialog");var html="";html+='
    ',html+='',html+='

    ',html+=iapManager.getRestoreButtonText(),html+="

    ",html+="
    ",html+='
    ',html+='
    ',html+='

    ',html+=globalize.translate("sharedcomponents#HowDidYouPay"),html+="

    ",html+="

    ",html+='",html+="

    ",unlockableProductInfo&&(html+="

    ",html+='",html+="

    "),html+="
    ",html+="
    ",dlg.innerHTML=html,document.body.appendChild(dlg),loading.hide(),layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!0),dlg.querySelector(".btnCloseDialog").addEventListener("click",function(){dialogHelper.close(dlg)}),dlg.querySelector(".btnRestoreSub").addEventListener("click",function(){dialogHelper.close(dlg),alertText({text:globalize.translate("sharedcomponents#MessageToValidateSupporter"),title:"Emby Premiere"})});var btnRestoreUnlock=dlg.querySelector(".btnRestoreUnlock");btnRestoreUnlock&&btnRestoreUnlock.addEventListener("click",function(){dialogHelper.close(dlg),iapManager.restorePurchase()}),dialogHelper.open(dlg).then(function(){layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!1)})}function getUserEmail(){if(connectionManager.isLoggedIntoConnect()){var connectUser=connectionManager.connectUser();if(connectUser&&connectUser.Email)return Promise.resolve(connectUser.Email)}return new Promise(function(resolve,reject){require(["prompt"],function(prompt){prompt({label:globalize.translate("sharedcomponents#LabelEmailAddress")}).then(resolve,reject)})})}function onProductUpdated(e,product){if(product.owned){var resolve=currentDisplayingResolve;if(resolve&¤tDisplayingProductInfos.filter(function(p){return product.id===p.id}).length)return isCurrentDialogRejected=!1,cancelInAppPurchase(),void resolve()}var feature=currentValidatingFeature;feature&&iapManager.isUnlockedByDefault(feature).then(function(){isCurrentDialogRejected=!1,cancelInAppPurchase(),resolve()})}function showPremiereInfo(){return appHost.supports("externalpremium")?(showExternalPremiereInfo(),Promise.resolve()):iapManager.getSubscriptionOptions().then(function(subscriptionOptions){return showInAppPurchaseInfo(subscriptionOptions,null,{title:"Emby Premiere",feature:"sync"})})}var currentDisplayingProductInfos=[],currentDisplayingResolve=null,currentValidatingFeature=null,isCurrentDialogRejected=null;return events.on(iapManager,"productupdated",onProductUpdated),{validateFeature:validateFeature,showPremiereInfo:showPremiereInfo}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/require/requirecss.js b/dashboard-ui/bower_components/emby-webcomponents/require/requirecss.js index 3ddbe9037a..1448c6fa8e 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/require/requirecss.js +++ b/dashboard-ui/bower_components/emby-webcomponents/require/requirecss.js @@ -1 +1 @@ -define(function(){"use strict";function isLoaded(url){return importedCss.indexOf(url)!==-1}function removeFromLoadHistory(url){url=url.toLowerCase(),importedCss=importedCss.filter(function(c){return url.indexOf(c.toLowerCase())===-1})}var requireCss={};requireCss.normalize=function(name,normalize){return".css"===name.substr(name.length-4,4)&&(name=name.substr(0,name.length-4)),normalize(name)};var importedCss=[];return requireCss.load=function(cssId,req,load,config){var srch="/emby-webcomponents/require/requirecss",index=cssId.indexOf(srch);index!==-1&&(cssId="css"+cssId.substring(index+srch.length));var url=cssId+".css";if(url.indexOf("://")===-1&&(url=config.baseUrl+url),isLoaded(url))load();else{importedCss.push(url);var link=document.createElement("link");link.setAttribute("rel","stylesheet"),link.setAttribute("type","text/css"),link.onload=load;var linkUrl=url;config.urlArgs&&(linkUrl+=config.urlArgs(cssId,url)),link.setAttribute("href",linkUrl),document.head.appendChild(link)}},window.requireCss={removeStylesheet:function(stylesheet){stylesheet.parentNode.removeChild(stylesheet),removeFromLoadHistory(stylesheet.href)}},requireCss}); \ No newline at end of file +define(function(){"use strict";function isLoaded(url){return-1!==importedCss.indexOf(url)}function removeFromLoadHistory(url){url=url.toLowerCase(),importedCss=importedCss.filter(function(c){return-1===url.indexOf(c.toLowerCase())})}var requireCss={};requireCss.normalize=function(name,normalize){return".css"===name.substr(name.length-4,4)&&(name=name.substr(0,name.length-4)),normalize(name)};var importedCss=[];return requireCss.load=function(cssId,req,load,config){var srch="/emby-webcomponents/require/requirecss",index=cssId.indexOf(srch);-1!==index&&(cssId="css"+cssId.substring(index+srch.length));var url=cssId+".css";if(-1===url.indexOf("://")&&(url=config.baseUrl+url),isLoaded(url))load();else{importedCss.push(url);var link=document.createElement("link");link.setAttribute("rel","stylesheet"),link.setAttribute("type","text/css"),link.onload=load;var linkUrl=url;config.urlArgs&&(linkUrl+=config.urlArgs(cssId,url)),link.setAttribute("href",linkUrl),document.head.appendChild(link)}},window.requireCss={removeStylesheet:function(stylesheet){stylesheet.parentNode.removeChild(stylesheet),removeFromLoadHistory(stylesheet.href)}},requireCss}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/require/requirehtml.js b/dashboard-ui/bower_components/emby-webcomponents/require/requirehtml.js deleted file mode 100644 index 16e5ea49ef..0000000000 --- a/dashboard-ui/bower_components/emby-webcomponents/require/requirehtml.js +++ /dev/null @@ -1 +0,0 @@ -define(function(){"use strict";var importedFiles=[];return{load:function(cssId,req,load,config){cssId=cssId.replace("js/requirehtml","html");var url=cssId+".html";if(url.indexOf("://")===-1&&(url=config.baseUrl+url),importedFiles.indexOf(url)===-1){importedFiles.push(url);var link=document.createElement("link");return link.rel="import",config.urlArgs&&(url.toLowerCase().indexOf("bower_")!==-1&&url.toLowerCase().indexOf("emby-webcomponents")===-1||(url+=config.urlArgs(cssId,url))),link.onload=load,link.href=url,void document.head.appendChild(link)}load()},normalize:function(name,normalize){return".html"===name.substr(name.length-5,5)&&(name=name.substr(0,name.length-5)),normalize(name)}}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/require/requiretext.js b/dashboard-ui/bower_components/emby-webcomponents/require/requiretext.js index b1feac2604..5e950f1d13 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/require/requiretext.js +++ b/dashboard-ui/bower_components/emby-webcomponents/require/requiretext.js @@ -1 +1 @@ -define(function(){"use strict";return{load:function(url,req,load,config){url.indexOf("://")===-1&&(url=config.baseUrl+url),config.urlArgs&&(url+=config.urlArgs(url,url));var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.onload=function(e){load(this.response)},xhr.send()},normalize:function(name,normalize){return normalize(name)}}}); \ No newline at end of file +define(function(){"use strict";var addRedirectPrevention=null!=self.dashboardVersion&&self.Dashboard&&!self.Dashboard.isConnectMode();return{load:function(url,req,load,config){-1===url.indexOf("://")&&(url=config.baseUrl+url),config.urlArgs&&(url+=config.urlArgs(url,url)),addRedirectPrevention&&(-1===url.indexOf("?")?url+="?":url+="&",url+="r=0");var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.onload=function(e){load(this.response)},xhr.send()},normalize:function(name,normalize){return normalize(name)}}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/resize-observer-polyfill/ResizeObserver.js b/dashboard-ui/bower_components/emby-webcomponents/resize-observer-polyfill/ResizeObserver.js new file mode 100644 index 0000000000..51fedf6e2c --- /dev/null +++ b/dashboard-ui/bower_components/emby-webcomponents/resize-observer-polyfill/ResizeObserver.js @@ -0,0 +1 @@ +!function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?module.exports=factory():"function"==typeof define&&define.amd?define(factory):global.ResizeObserver=factory()}(this,function(){"use strict";function getHTMLElementContentRect(target){var rect=target.getBoundingClientRect();return createRectInit(rect.left,rect.top,rect.width,rect.height)}function getContentRect(target){return isBrowser?getHTMLElementContentRect(target):emptyRect}function createReadOnlyRect(ref){var x=ref.x,y=ref.y,width=ref.width,height=ref.height,Constr="undefined"!=typeof DOMRectReadOnly?DOMRectReadOnly:Object,rect=Object.create(Constr.prototype);return defineConfigurable(rect,{x:x,y:y,width:width,height:height,top:y,right:x+width,bottom:height+y,left:x}),rect}function createRectInit(x,y,width,height){return{x:x,y:y,width:width,height:height}}var MapShim=function(){function getIndex(arr,key){var result=-1;return arr.some(function(entry,index){return entry[0]===key&&(result=index,!0)}),result}return"undefined"!=typeof Map?Map:function(){function anonymous(){this.__entries__=[]}var prototypeAccessors={size:{configurable:!0}};return prototypeAccessors.size.get=function(){return this.__entries__.length},anonymous.prototype.get=function(key){var index=getIndex(this.__entries__,key),entry=this.__entries__[index];return entry&&entry[1]},anonymous.prototype.set=function(key,value){var index=getIndex(this.__entries__,key);~index?this.__entries__[index][1]=value:this.__entries__.push([key,value])},anonymous.prototype.delete=function(key){var entries=this.__entries__,index=getIndex(entries,key);~index&&entries.splice(index,1)},anonymous.prototype.has=function(key){return!!~getIndex(this.__entries__,key)},anonymous.prototype.clear=function(){this.__entries__.splice(0)},anonymous.prototype.forEach=function(callback,ctx){var this$1=this;void 0===ctx&&(ctx=null);for(var i=0,list=this$1.__entries__;i0},ResizeObserverController.prototype.connect_=function(){isBrowser&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),window.addEventListener("orientationchange",this.refresh),mutationObserverSupported?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},ResizeObserverController.prototype.disconnect_=function(){isBrowser&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),window.removeEventListener("orientationchange",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},ResizeObserverController.prototype.onTransitionEnd_=function(ref){var propertyName=ref.propertyName;void 0===propertyName&&(propertyName=""),transitionKeys.some(function(key){return!!~propertyName.indexOf(key)})&&this.refresh()},ResizeObserverController.getInstance=function(){return this.instance_||(this.instance_=new ResizeObserverController),this.instance_},ResizeObserverController.instance_=null;var defineConfigurable=function(target,props){for(var i=0,list=Object.keys(props);i0};var observers="undefined"!=typeof WeakMap?new WeakMap:new MapShim,ResizeObserver=function(callback){if(!(this instanceof ResizeObserver))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var controller=ResizeObserverController.getInstance(),observer=new ResizeObserverSPI(callback,controller,this);observers.set(this,observer)};return["observe","unobserve","disconnect"].forEach(function(method){ResizeObserver.prototype[method]=function(){return(ref=observers.get(this))[method].apply(ref,arguments);var ref}}),function(){return void 0!==global$1.ResizeObserver?global$1.ResizeObserver:ResizeObserver}()}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/router.js b/dashboard-ui/bower_components/emby-webcomponents/router.js index aff8bfaed5..4d41c0dd43 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/router.js +++ b/dashboard-ui/bower_components/emby-webcomponents/router.js @@ -1 +1 @@ -define(["loading","globalize","events","viewManager","layoutManager","skinManager","pluginManager","backdrop","browser","pageJs","appSettings","apphost","connectionManager"],function(loading,globalize,events,viewManager,layoutManager,skinManager,pluginManager,backdrop,browser,page,appSettings,appHost,connectionManager){"use strict";function beginConnectionWizard(){backdrop.clear(),loading.show(),connectionManager.connect({enableAutoLogin:appSettings.enableAutoLogin()}).then(function(result){handleConnectionResult(result,loading)})}function handleConnectionResult(result,loading){switch(result.State){case MediaBrowser.ConnectionState.SignedIn:loading.hide(),skinManager.loadUserSkin();break;case MediaBrowser.ConnectionState.ServerSignIn:result.ApiClient.getPublicUsers().then(function(users){users.length?appRouter.showLocalLogin(result.Servers[0].Id):appRouter.showLocalLogin(result.Servers[0].Id,!0)});break;case MediaBrowser.ConnectionState.ServerSelection:appRouter.showSelectServer();break;case MediaBrowser.ConnectionState.ConnectSignIn:appRouter.showWelcome();break;case MediaBrowser.ConnectionState.ServerUpdateNeeded:require(["alert"],function(alert){alert({text:globalize.translate("sharedcomponents#ServerUpdateNeeded","https://emby.media"),html:globalize.translate("sharedcomponents#ServerUpdateNeeded",'https://emby.media')}).then(function(){appRouter.showSelectServer()})})}}function loadContentUrl(ctx,next,route,request){var url;url=route.contentPath&&"function"==typeof route.contentPath?route.contentPath(ctx.querystring):route.contentPath||route.path,url.indexOf("://")===-1&&(0!==url.indexOf("/")&&(url="/"+url),url=baseUrl()+url),ctx.querystring&&route.enableContentQueryString&&(url+="?"+ctx.querystring),require(["text!"+url],function(html){loadContent(ctx,route,html,request)})}function handleRoute(ctx,next,route){authenticate(ctx,route,function(){initRoute(ctx,next,route)})}function initRoute(ctx,next,route){var onInitComplete=function(controllerFactory){sendRouteToViewManager(ctx,next,route,controllerFactory)};require(route.dependencies||[],function(){route.controller?require([route.controller],onInitComplete):onInitComplete()})}function cancelCurrentLoadRequest(){var currentRequest=currentViewLoadRequest;currentRequest&&(currentRequest.cancel=!0)}function sendRouteToViewManager(ctx,next,route,controllerFactory){if(isDummyBackToHome&&"home"===route.type)return void(isDummyBackToHome=!1);cancelCurrentLoadRequest();var isBackNav=ctx.isBack,currentRequest={url:baseUrl()+ctx.path,transition:route.transition,isBack:isBackNav,state:ctx.state,type:route.type,fullscreen:route.fullscreen,controllerFactory:controllerFactory,options:{supportsThemeMedia:route.supportsThemeMedia||!1,enableMediaControl:route.enableMediaControl!==!1},autoFocus:route.autoFocus};currentViewLoadRequest=currentRequest;var onNewViewNeeded=function(){"string"==typeof route.path?loadContentUrl(ctx,next,route,currentRequest):next()};return isBackNav?void viewManager.tryRestoreView(currentRequest,function(){currentRouteInfo={route:route,path:ctx.path}}).catch(function(result){result&&result.cancelled||onNewViewNeeded()}):void onNewViewNeeded()}function onForcedLogoutMessageTimeout(){var msg=forcedLogoutMsg;forcedLogoutMsg=null,msg&&require(["alert"],function(alert){alert(msg)})}function showForcedLogoutMessage(msg){forcedLogoutMsg=msg,msgTimeout&&clearTimeout(msgTimeout),msgTimeout=setTimeout(onForcedLogoutMessageTimeout,100)}function onRequestFail(e,data){var apiClient=this;if(401===data.status&&"ParentalControl"===data.errorCode){var isCurrentAllowed=!currentRouteInfo||(currentRouteInfo.route.anonymous||currentRouteInfo.route.startup);isCurrentAllowed||(showForcedLogoutMessage(globalize.translate("sharedcomponents#AccessRestrictedTryAgainLater")),connectionManager.isLoggedIntoConnect()?appRouter.showConnectLogin():appRouter.showLocalLogin(apiClient.serverId()))}}function onBeforeExit(e){browser.web0s&&page.restorePreviousState()}function normalizeImageOptions(options){var height=screen.availHeight;height=Math.min(height,1440);var scaleFactor=height/1080;Math.abs(height-1080)<100&&(scaleFactor=1),layoutManager.tv||(scaleFactor=1);var appImageScaleFactor=browser.tv?.8:1;scaleFactor*=appImageScaleFactor;var setQuality;if(options.maxWidth&&(options.maxWidth=Math.round(options.maxWidth*scaleFactor),setQuality=!0),options.width&&(options.width=Math.round(options.width*scaleFactor),setQuality=!0),options.maxHeight&&(options.maxHeight=Math.round(options.maxHeight*scaleFactor),setQuality=!0),options.height&&(options.height=Math.round(options.height*scaleFactor),setQuality=!0),setQuality){var quality=100,isBackdrop=options.type&&"backdrop"===options.type.toLowerCase();quality=browser.tv||browser.slow?isBackdrop?60:50:isBackdrop?60:90,options.quality=quality}}function onApiClientCreated(e,newApiClient){newApiClient.normalizeImageOptions=normalizeImageOptions,events.off(newApiClient,"requestfail",onRequestFail),events.on(newApiClient,"requestfail",onRequestFail)}function initApiClient(apiClient){onApiClientCreated({},apiClient)}function initApiClients(){connectionManager.getApiClients().forEach(initApiClient),events.on(connectionManager,"apiclientcreated",onApiClientCreated)}function onAppResume(){var apiClient=connectionManager.currentApiClient();apiClient&&apiClient.ensureWebSocket()}function start(options){loading.show(),initApiClients(),events.on(appHost,"beforeexit",onBeforeExit),events.on(appHost,"resume",onAppResume),connectionManager.connect({enableAutoLogin:appSettings.enableAutoLogin()}).then(function(result){firstConnectionResult=result,loading.hide(),options=options||{},page({click:options.click!==!1,hashbang:options.hashbang!==!1,enableHistory:enableHistory()})})}function enableHistory(){return!browser.xboxOne&&!browser.orsay}function enableNativeHistory(){return page.enableNativeHistory()}function authenticate(ctx,route,callback){var firstResult=firstConnectionResult;if(firstResult&&(firstConnectionResult=null,firstResult.State!==MediaBrowser.ConnectionState.SignedIn&&!route.anonymous))return void handleConnectionResult(firstResult,loading);var apiClient=connectionManager.currentApiClient(),pathname=ctx.pathname.toLowerCase();console.log("appRouter - processing path request "+pathname);var isCurrentRouteStartup=!currentRouteInfo||currentRouteInfo.route.startup,shouldExitApp=ctx.isBack&&route.isDefaultRoute&&isCurrentRouteStartup;if(!(shouldExitApp||apiClient&&apiClient.isLoggedIn()||route.anonymous))return console.log("appRouter - route does not allow anonymous access, redirecting to login"),void beginConnectionWizard();if(shouldExitApp){if(appHost.supports("exit"))return void appHost.exit()}else{if(apiClient&&apiClient.isLoggedIn()){if(console.log("appRouter - user is authenticated"),ctx.isBack&&(route.isDefaultRoute||route.startup)&&!isCurrentRouteStartup)return void handleBackToDefault();if(route.isDefaultRoute)return console.log("appRouter - loading skin home page"),void loadUserSkinWithOptions(ctx);if(route.roles)return void validateRoles(apiClient,route.roles).then(function(){callback()},beginConnectionWizard)}console.log("appRouter - proceeding to "+pathname),callback()}}function loadUserSkinWithOptions(ctx){require(["queryString"],function(queryString){var params=queryString.parse(ctx.querystring);skinManager.loadUserSkin({start:params.start})})}function validateRoles(apiClient,roles){return Promise.all(roles.split(",").map(function(role){return validateRole(apiClient,role)}))}function validateRole(apiClient,role){return"admin"===role?apiClient.getCurrentUser().then(function(user){return user.Policy.IsAdministrator?Promise.resolve():Promise.reject()}):Promise.resolve()}function handleBackToDefault(){return!appHost.supports("exitmenu")&&appHost.supports("exit")?void appHost.exit():(isDummyBackToHome=!0,skinManager.loadUserSkin(),void(isHandlingBackToDefault||skinManager.getCurrentSkin().showBackMenu().then(function(){isHandlingBackToDefault=!1})))}function loadContent(ctx,route,html,request){html=globalize.translateDocument(html,route.dictionary),request.view=html,viewManager.loadView(request),currentRouteInfo={route:route,path:ctx.path},ctx.handled=!0}function getRequestFile(){var path=window.location.pathname||"",index=path.lastIndexOf("/");return path=index!==-1?path.substring(index):"/"+path,path&&"/"!==path||(path="/index.html"),path}function endsWith(str,srch){return str.lastIndexOf(srch)===srch.length-1}function baseUrl(){return baseRoute}function getHandler(route){return function(ctx,next){handleRoute(ctx,next,route)}}function getWindowLocationSearch(win){var currentPath=currentRouteInfo?currentRouteInfo.path||"":"",index=currentPath.indexOf("?"),search="";return index!==-1&&(search=currentPath.substring(index)),search||""}function param(name,url){name=name.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var regexS="[\\?&]"+name+"=([^&#]*)",regex=new RegExp(regexS,"i"),results=regex.exec(url||getWindowLocationSearch());return null==results?"":decodeURIComponent(results[1].replace(/\+/g," "))}function back(){page.back()}function canGoBack(){var curr=current();return!!curr&&("home"!==curr.type&&page.canGoBack())}function show(path,options){0!==path.indexOf("/")&&path.indexOf("://")===-1&&(path="/"+path);var baseRoute=baseUrl();return path=path.replace(baseRoute,""),currentRouteInfo&¤tRouteInfo.path===path&&"home"!==currentRouteInfo.route.type?(loading.hide(),Promise.resolve()):new Promise(function(resolve,reject){resolveOnNextShow=resolve,page.show(path,options)})}function current(){return currentRouteInfo?currentRouteInfo.route:null}function goHome(){var skin=skinManager.getCurrentSkin();if(skin.getHomeRoute){var homePath=skin.getHomeRoute();return show(pluginManager.mapRoute(skin,homePath))}var homeRoute=skin.getRoutes().filter(function(r){return"home"===r.type})[0];return show(pluginManager.mapRoute(skin,homeRoute))}function getRouteUrl(item,options){return"downloads"===item?"offline/offline.html":"managedownloads"===item?"offline/managedownloads.html":skinManager.getCurrentSkin().getRouteUrl(item,options)}function showItem(item,serverId,options){if("string"==typeof item){var apiClient=serverId?connectionManager.getApiClient(serverId):connectionManager.currentApiClient();apiClient.getItem(apiClient.getCurrentUserId(),item).then(function(item){appRouter.showItem(item,options)})}else{2===arguments.length&&(options=arguments[1]);var url=appRouter.getRouteUrl(item,options);appRouter.show(url,{item:item})}}function setTitle(title){skinManager.getCurrentSkin().setTitle(title)}function showVideoOsd(){var skin=skinManager.getCurrentSkin(),homeRoute=skin.getRoutes().filter(function(r){return"video-osd"===r.type})[0];return show(pluginManager.mapRoute(skin,homeRoute))}function addRoute(path,newRoute){page(path,getHandler(newRoute)),allRoutes.push(newRoute)}function getRoutes(){return allRoutes}function setTransparency(level){backdropContainer||(backdropContainer=document.querySelector(".backdropContainer")),backgroundContainer||(backgroundContainer=document.querySelector(".backgroundContainer")),"full"===level||2===level?(backdrop.clear(!0),document.documentElement.classList.add("transparentDocument"),backgroundContainer.classList.add("backgroundContainer-transparent"),backdropContainer.classList.add("hide")):"backdrop"===level||1===level?(backdrop.externalBackdrop(!0),document.documentElement.classList.add("transparentDocument"),backgroundContainer.classList.add("backgroundContainer-transparent"),backdropContainer.classList.add("hide")):(backdrop.externalBackdrop(!1),document.documentElement.classList.remove("transparentDocument"),backgroundContainer.classList.remove("backgroundContainer-transparent"),backdropContainer.classList.remove("hide"))}function pushState(state,title,url){state.navigate=!1,page.pushState(state,title,url)}function setBaseRoute(){var baseRoute=window.location.pathname.replace(getRequestFile(),"");baseRoute.lastIndexOf("/")===baseRoute.length-1&&(baseRoute=baseRoute.substring(0,baseRoute.length-1)),console.log("Setting page base to "+baseRoute),page.base(baseRoute)}function invokeShortcut(id){0===id.indexOf("library-")?(id=id.replace("library-",""),id=id.split("_"),appRouter.showItem(id[0],id[1])):(id=id.split("_"),appRouter.show(appRouter.getRouteUrl(id[0],{serverId:id[1]})))}var currentViewLoadRequest,msgTimeout,forcedLogoutMsg,firstConnectionResult,isHandlingBackToDefault,isDummyBackToHome,appRouter={showLocalLogin:function(serverId,manualLogin){var pageName=manualLogin?"manuallogin":"login";show("/startup/"+pageName+".html?serverid="+serverId)},showSelectServer:function(){show("/startup/selectserver.html")},showWelcome:function(){show("/startup/welcome.html")},showConnectLogin:function(){show("/startup/connectlogin.html")},showSettings:function(){show("/settings/settings.html")},showSearch:function(){skinManager.getCurrentSkin().search()},showGenre:function(options){skinManager.getCurrentSkin().showGenre(options)},showGuide:function(){skinManager.getCurrentSkin().showGuide({serverId:connectionManager.currentApiClient().serverId()})},showLiveTV:function(){skinManager.getCurrentSkin().showLiveTV({serverId:connectionManager.currentApiClient().serverId()})},showRecordedTV:function(){skinManager.getCurrentSkin().showRecordedTV()},showFavorites:function(){skinManager.getCurrentSkin().showFavorites()},showNowPlaying:function(){skinManager.getCurrentSkin().showNowPlaying()}},baseRoute=window.location.href.split("?")[0].replace(getRequestFile(),"");baseRoute=baseRoute.split("#")[0],endsWith(baseRoute,"/")&&!endsWith(baseRoute,"://")&&(baseRoute=baseRoute.substring(0,baseRoute.length-1));var resolveOnNextShow;document.addEventListener("viewshow",function(){var resolve=resolveOnNextShow;resolve&&(resolveOnNextShow=null,resolve())});var currentRouteInfo,backdropContainer,backgroundContainer,allRoutes=[];return setBaseRoute(),appRouter.addRoute=addRoute,appRouter.param=param,appRouter.back=back,appRouter.show=show,appRouter.start=start,appRouter.baseUrl=baseUrl,appRouter.canGoBack=canGoBack,appRouter.current=current,appRouter.beginConnectionWizard=beginConnectionWizard,appRouter.goHome=goHome,appRouter.showItem=showItem,appRouter.setTitle=setTitle,appRouter.setTransparency=setTransparency,appRouter.getRoutes=getRoutes,appRouter.getRouteUrl=getRouteUrl,appRouter.pushState=pushState,appRouter.enableNativeHistory=enableNativeHistory,appRouter.showVideoOsd=showVideoOsd,appRouter.handleAnchorClick=page.handleAnchorClick,appRouter.TransparencyLevel={None:0,Backdrop:1,Full:2},appRouter.invokeShortcut=invokeShortcut,appRouter}); \ No newline at end of file +define(["loading","globalize","events","viewManager","layoutManager","skinManager","pluginManager","backdrop","browser","pageJs","appSettings","apphost","connectionManager"],function(loading,globalize,events,viewManager,layoutManager,skinManager,pluginManager,backdrop,browser,page,appSettings,appHost,connectionManager){"use strict";function beginConnectionWizard(){backdrop.clear(),loading.show(),connectionManager.connect({enableAutoLogin:appSettings.enableAutoLogin()}).then(function(result){handleConnectionResult(result,loading)})}function handleConnectionResult(result,loading){switch(result.State){case"SignedIn":loading.hide(),skinManager.loadUserSkin();break;case"ServerSignIn":result.ApiClient.getPublicUsers().then(function(users){users.length?appRouter.showLocalLogin(result.Servers[0].Id):appRouter.showLocalLogin(result.Servers[0].Id,!0)});break;case"ServerSelection":appRouter.showSelectServer();break;case"ConnectSignIn":appRouter.showWelcome();break;case"ServerUpdateNeeded":require(["alert"],function(alert){alert({text:globalize.translate("sharedcomponents#ServerUpdateNeeded","https://emby.media"),html:globalize.translate("sharedcomponents#ServerUpdateNeeded",'https://emby.media')}).then(function(){appRouter.showSelectServer()})})}}function loadContentUrl(ctx,next,route,request){var url;url=route.contentPath&&"function"==typeof route.contentPath?route.contentPath(ctx.querystring):route.contentPath||route.path,-1===url.indexOf("://")&&(0!==url.indexOf("/")&&(url="/"+url),url=baseUrl()+url),ctx.querystring&&route.enableContentQueryString&&(url+="?"+ctx.querystring),require(["text!"+url],function(html){loadContent(ctx,route,html,request)})}function handleRoute(ctx,next,route){authenticate(ctx,route,function(){initRoute(ctx,next,route)})}function initRoute(ctx,next,route){var onInitComplete=function(controllerFactory){sendRouteToViewManager(ctx,next,route,controllerFactory)};require(route.dependencies||[],function(){route.controller?require([route.controller],onInitComplete):onInitComplete()})}function cancelCurrentLoadRequest(){var currentRequest=currentViewLoadRequest;currentRequest&&(currentRequest.cancel=!0)}function sendRouteToViewManager(ctx,next,route,controllerFactory){if(isDummyBackToHome&&"home"===route.type)return void(isDummyBackToHome=!1);cancelCurrentLoadRequest();var isBackNav=ctx.isBack,currentRequest={url:baseUrl()+ctx.path,transition:route.transition,isBack:isBackNav,state:ctx.state,type:route.type,fullscreen:route.fullscreen,controllerFactory:controllerFactory,options:{supportsThemeMedia:route.supportsThemeMedia||!1,enableMediaControl:!1!==route.enableMediaControl},autoFocus:route.autoFocus};currentViewLoadRequest=currentRequest;var onNewViewNeeded=function(){"string"==typeof route.path?loadContentUrl(ctx,next,route,currentRequest):next()};if(!isBackNav)return void onNewViewNeeded();viewManager.tryRestoreView(currentRequest,function(){currentRouteInfo={route:route,path:ctx.path}}).catch(function(result){result&&result.cancelled||onNewViewNeeded()})}function onForcedLogoutMessageTimeout(){var msg=forcedLogoutMsg;forcedLogoutMsg=null,msg&&require(["alert"],function(alert){alert(msg)})}function showForcedLogoutMessage(msg){forcedLogoutMsg=msg,msgTimeout&&clearTimeout(msgTimeout),msgTimeout=setTimeout(onForcedLogoutMessageTimeout,100)}function onRequestFail(e,data){var apiClient=this;if(401===data.status&&"ParentalControl"===data.errorCode){!currentRouteInfo||(currentRouteInfo.route.anonymous||currentRouteInfo.route.startup)||(showForcedLogoutMessage(globalize.translate("sharedcomponents#AccessRestrictedTryAgainLater")),connectionManager.isLoggedIntoConnect()?appRouter.showConnectLogin():appRouter.showLocalLogin(apiClient.serverId()))}}function onBeforeExit(e){browser.web0s&&page.restorePreviousState()}function normalizeImageOptions(options){var setQuality,scaleFactor=browser.tv?.8:1;if(options.maxWidth&&(options.maxWidth=Math.round(options.maxWidth*scaleFactor),setQuality=!0),options.width&&(options.width=Math.round(options.width*scaleFactor),setQuality=!0),options.maxHeight&&(options.maxHeight=Math.round(options.maxHeight*scaleFactor),setQuality=!0),options.height&&(options.height=Math.round(options.height*scaleFactor),setQuality=!0),setQuality){var quality=100,type=options.type||"Primary";quality=browser.tv||browser.slow?browser.chrome?"Primary"===type?40:50:"Backdrop"===type?60:50:"Backdrop"===type?70:90,options.quality=quality}}function getMaxBandwidth(){if(navigator.connection){var max=navigator.connection.downlinkMax;if(max&&max>0&&max=55296&&codePoint<=56319}function isLowSurrogate(codePoint){return codePoint>=56320&&codePoint<=57343}function getByteLength(string){if("string"!=typeof string)throw new Error("Input must be string");for(var charLength=string.length,byteLength=0,codePoint=null,prevCodePoint=null,i=0;i=128&&codePoint<=2047?byteLength+=2:codePoint>=2048&&codePoint<=65535&&(byteLength+=3),prevCodePoint=codePoint;return byteLength}function truncate(string,byteLength){if("string"!=typeof string)throw new Error("Input must be string");for(var codePoint,segment,charLength=string.length,curByteLength=0,i=0;ibyteLength)return string.slice(0,i-segment.length+1)}return string}var illegalRe=/[\/\?<>\\:\*\|":]/g,controlRe=/[\x00-\x1f\x80-\x9f]/g,reservedRe=/^\.+$/,windowsReservedRe=/^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i,windowsTrailingRe=/[\. ]+$/;return{sanitize:function(input,replacement){var sanitized=input.replace(illegalRe,replacement).replace(controlRe,replacement).replace(reservedRe,replacement).replace(windowsReservedRe,replacement).replace(windowsTrailingRe,replacement);return truncate(sanitized,255)}}}); \ No newline at end of file +define([],function(){"use strict";function isHighSurrogate(codePoint){return codePoint>=55296&&codePoint<=56319}function isLowSurrogate(codePoint){return codePoint>=56320&&codePoint<=57343}function getByteLength(string){if("string"!=typeof string)throw new Error("Input must be string");for(var charLength=string.length,byteLength=0,codePoint=null,prevCodePoint=null,i=0;i=128&&codePoint<=2047?byteLength+=2:codePoint>=2048&&codePoint<=65535&&(byteLength+=3),prevCodePoint=codePoint;return byteLength}function truncate(string,byteLength){if("string"!=typeof string)throw new Error("Input must be string");for(var codePoint,segment,charLength=string.length,curByteLength=0,i=0;ibyteLength)return string.slice(0,i-segment.length+1)}return string}var illegalRe=/[\/\?<>\\:\*\|":]/g,controlRe=/[\x00-\x1f\x80-\x9f]/g,reservedRe=/^\.+$/,windowsReservedRe=/^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i,windowsTrailingRe=/[\. ]+$/;return{sanitize:function(input,replacement){return truncate(input.replace(illegalRe,replacement).replace(controlRe,replacement).replace(reservedRe,replacement).replace(windowsReservedRe,replacement).replace(windowsTrailingRe,replacement),255)}}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/scroller/smoothscroller.js b/dashboard-ui/bower_components/emby-webcomponents/scroller/smoothscroller.js index 5d7abffbcd..2ab1136203 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/scroller/smoothscroller.js +++ b/dashboard-ui/bower_components/emby-webcomponents/scroller/smoothscroller.js @@ -1 +1 @@ -define(["browser","layoutManager","dom","focusManager","ResizeObserver","scrollStyles"],function(browser,layoutManager,dom,focusManager,ResizeObserver){"use strict";function type(value){return null==value?String(value):"object"==typeof value||"function"==typeof value?Object.prototype.toString.call(value).match(/\s([a-z]+)/i)[1].toLowerCase()||"object":typeof value}function disableOneEvent(event){event.preventDefault(),event.stopPropagation(),this.removeEventListener(event.type,disableOneEvent)}function within(number,min,max){return numbermax?max:number}var dragMouseEvents=["mousemove","mouseup"],dragTouchEvents=["touchmove","touchend"],wheelEvent=document.implementation.hasFeature("Event.wheel","3.0")?"wheel":"mousewheel",interactiveElements=["INPUT","SELECT","TEXTAREA"],abs=Math.abs,sqrt=Math.sqrt,pow=Math.pow,round=Math.round,max=Math.max,scrollerFactory=(Math.min,function(frame,options){function sibling(n,elem){for(var matched=[];n;n=n.nextSibling)1===n.nodeType&&n!==elem&&matched.push(n);return matched}function ensureSizeInfo(){requiresReflow&&(requiresReflow=!1,frameSize=o.horizontal?frame.offsetWidth:frame.offsetHeight,slideeSize=o.scrollWidth||Math.max(slideeElement[o.horizontal?"offsetWidth":"offsetHeight"],slideeElement[o.horizontal?"scrollWidth":"scrollHeight"]),self._pos.end=max(slideeSize-frameSize,0))}function load(isInit){if(requiresReflow=!0,!isInit){ensureSizeInfo();var pos=self._pos;self.slideTo(within(pos.dest,pos.start,pos.end))}}function initFrameResizeObserver(){var observerOptions={};self.frameResizeObserver=new ResizeObserver(onResize,observerOptions),self.frameResizeObserver.observe(frame)}function nativeScrollTo(container,pos,immediate){container.scroll?o.horizontal?container.scroll({left:pos,behavior:immediate?"instant":"smooth"}):container.scroll({top:pos,behavior:immediate?"instant":"smooth"}):!immediate&&container.scrollTo?o.horizontal?container.scrollTo(Math.round(pos),0):container.scrollTo(0,Math.round(pos)):o.horizontal?container.scrollLeft=Math.round(pos):container.scrollTop=Math.round(pos)}function setStyleProperty(elem,name,value,speed,resetTransition){var style=elem.style;(resetTransition||browser.edge)&&(style.transition="none",void elem.offsetWidth),style.transition="transform "+speed+"ms ease-out",style[name]=value}function dispatchScrollEventIfNeeded(){o.dispatchScrollEvent&&frame.dispatchEvent(new CustomEvent(self.getScrollEventName(),{bubbles:!0,cancelable:!1}))}function renderAnimateWithTransform(fromPosition,toPosition,immediate){var speed=o.speed;immediate&&(speed=o.immediateSpeed||50),o.horizontal?setStyleProperty(slideeElement,"transform","translateX("+-round(toPosition)+"px)",speed):setStyleProperty(slideeElement,"transform","translateY("+-round(toPosition)+"px)",speed),self._pos.cur=toPosition,dispatchScrollEventIfNeeded()}function getBoundingClientRect(elem){return elem.getBoundingClientRect?elem.getBoundingClientRect():{top:0,left:0}}function dragInitSlidee(event){var isTouch="touchstart"===event.type;if(!(dragging.init||!isTouch&&isInteractive(event.target))&&(isTouch?o.touchDragging:o.mouseDragging&&event.which<2)){isTouch||event.preventDefault(),dragging.released=0,dragging.init=0,dragging.source=event.target,dragging.touch=isTouch;var pointer=isTouch?event.touches[0]:event;dragging.initX=pointer.pageX,dragging.initY=pointer.pageY,dragging.initPos=self._pos.cur,dragging.start=+new Date,dragging.time=0,dragging.path=0,dragging.delta=0,dragging.locked=0,dragging.pathToLock=isTouch?30:10,transform&&(isTouch?dragTouchEvents.forEach(function(eventName){dom.addEventListener(document,eventName,dragHandler,{passive:!0})}):dragMouseEvents.forEach(function(eventName){dom.addEventListener(document,eventName,dragHandler,{passive:!0})}))}}function dragHandler(event){dragging.released="mouseup"===event.type||"touchend"===event.type;var pointer=dragging.touch?event[dragging.released?"changedTouches":"touches"][0]:event;if(dragging.pathX=pointer.pageX-dragging.initX,dragging.pathY=pointer.pageY-dragging.initY,dragging.path=sqrt(pow(dragging.pathX,2)+pow(dragging.pathY,2)),dragging.delta=o.horizontal?dragging.pathX:dragging.pathY,dragging.released||!(dragging.path<1)){if(!dragging.init){if(dragging.pathabs(dragging.pathY):abs(dragging.pathX)dragging.pathToLock&&(dragging.locked=1,dragging.source.addEventListener("click",disableOneEvent)),dragging.released&&dragEnd(),self.slideTo(round(dragging.initPos-dragging.delta))}}function dragEnd(){dragging.released=!0,dragTouchEvents.forEach(function(eventName){dom.removeEventListener(document,eventName,dragHandler,{passive:!0})}),dragMouseEvents.forEach(function(eventName){dom.removeEventListener(document,eventName,dragHandler,{passive:!0})}),setTimeout(function(){dragging.source.removeEventListener("click",disableOneEvent)}),dragging.init=0}function isInteractive(element){for(;element;){if(interactiveElements.indexOf(element.tagName)!==-1)return!0;element=element.parentNode}return!1}function normalizeWheelDelta(event){return scrolling.curDelta=(o.horizontal?event.deltaY||event.deltaX:event.deltaY)||-event.wheelDelta,transform&&(scrolling.curDelta/=1===event.deltaMode?3:100),scrolling.curDelta}function scrollHandler(event){ensureSizeInfo();var pos=self._pos;if(o.scrollBy&&pos.start!==pos.end){var delta=normalizeWheelDelta(event);transform?(delta>0&&pos.destpos.start,self.slideBy(o.scrollBy*delta)):(isSmoothScrollSupported&&(delta*=12),o.horizontal?nativeScrollElement.scrollLeft+=delta:nativeScrollElement.scrollTop+=delta)}}function onResize(entries){var entry=entries[0];if(entry){var newRect=entry.contentRect;if(0===newRect.width||0===newRect.height)return;newRect.width===contentRect.width&&newRect.height===contentRect.height||(contentRect=newRect,load(!1))}}function resetScroll(){o.horizontal?this.scrollLeft=0:this.scrollTop=0}function onFrameClick(e){if(1===e.which){var focusableParent=focusManager.focusableParent(e.target);focusableParent&&focusableParent!==document.activeElement&&focusableParent.focus()}}var o=Object.assign({},{slidee:null,horizontal:!1,mouseWheel:!0,scrollBy:0,dragSource:null,mouseDragging:1,touchDragging:1,dragThreshold:3,intervactive:null,speed:0},options),isSmoothScrollSupported="scrollBehavior"in document.documentElement.style;options.allowNativeScroll===!1?options.enableNativeScroll=!1:isSmoothScrollSupported&&(browser.firefox&&!layoutManager.tv||options.allowNativeSmoothScroll)?options.enableNativeScroll=!0:options.requireAnimation&&(browser.animate||browser.supportsCssAnimation())?options.enableNativeScroll=!1:layoutManager.tv&&browser.animate||(options.enableNativeScroll=!0),browser.web0s&&(options.enableNativeScroll=!0);var self=this;self.options=o;var slideeElement=o.slidee?o.slidee:sibling(frame.firstChild)[0];self._pos={start:0,center:0,end:0,cur:0,dest:0};var transform=!options.enableNativeScroll,scrollSource=frame,dragSourceElement=o.dragSource?o.dragSource:frame,dragging={released:1},scrolling={last:0,delta:0,resetTime:200};self.initialized=0,self.slidee=slideeElement,self.options=o,self.dragging=dragging;var nativeScrollElement=frame,requiresReflow=!0,frameSize=0,slideeSize=0;self.reload=function(){load()},self.getScrollEventName=function(){return transform?"scrollanimate":"scroll"},self.getScrollSlider=function(){return slideeElement},self.getScrollFrame=function(){return frame};var lastAnimate;self.slideTo=function(newPos,immediate,fullItemPos){ensureSizeInfo();var pos=self._pos;if(newPos=within(newPos,pos.start,pos.end),!transform)return void nativeScrollTo(nativeScrollElement,newPos,immediate);var from=pos.cur;immediate=immediate||dragging.init||!o.speed;var now=(new Date).getTime();o.autoImmediate&&!immediate&&now-(lastAnimate||0)<=50&&(immediate=!0),!immediate&&o.skipSlideToWhenVisible&&fullItemPos&&fullItemPos.isVisible||newPos!==pos.dest&&(pos.dest=newPos,renderAnimateWithTransform(from,newPos,immediate),lastAnimate=now)},self.getPos=function(item){var scrollElement=transform?slideeElement:nativeScrollElement,slideeOffset=getBoundingClientRect(scrollElement),itemOffset=getBoundingClientRect(item),offset=(o.horizontal?slideeOffset.left:slideeOffset.top,o.horizontal?slideeOffset.right:slideeOffset.bottom,o.horizontal?itemOffset.left-slideeOffset.left:itemOffset.top-slideeOffset.top),size=o.horizontal?itemOffset.width:itemOffset.height;size||0===size||(size=item[o.horizontal?"offsetWidth":"offsetHeight"]);var centerOffset=o.centerOffset||0;transform||(centerOffset=0,offset+=o.horizontal?nativeScrollElement.scrollLeft:nativeScrollElement.scrollTop),ensureSizeInfo();var currentStart=self._pos.cur,currentEnd=currentStart+frameSize,isVisible=offset>=currentStart&&offset+size<=currentEnd;return{start:offset,center:offset+centerOffset-frameSize/2+size/2,end:offset-frameSize+size,size:size,isVisible:isVisible}},self.getCenterPosition=function(item){ensureSizeInfo();var pos=self.getPos(item);return within(pos.center,pos.start,pos.end)},self.destroy=function(){return self.frameResizeObserver&&(self.frameResizeObserver.disconnect(),self.frameResizeObserver=null),dom.removeEventListener(frame,"scroll",resetScroll,{passive:!0}),dom.removeEventListener(scrollSource,wheelEvent,scrollHandler,{passive:!0}),dom.removeEventListener(dragSourceElement,"touchstart",dragInitSlidee,{passive:!0}),dom.removeEventListener(frame,"click",onFrameClick,{passive:!0,capture:!0}),dom.removeEventListener(dragSourceElement,"mousedown",dragInitSlidee,{}),self.initialized=0,self};var contentRect={};self.getScrollPosition=function(){return transform?self._pos.cur:o.horizontal?nativeScrollElement.scrollLeft:nativeScrollElement.scrollTop},self.getScrollSize=function(){return transform?slideeSize:o.horizontal?nativeScrollElement.scrollWidth:nativeScrollElement.scrollHeight},self.init=function(){if(!self.initialized)return transform?(frame.style.overflow="hidden",slideeElement.style["will-change"]="transform",slideeElement.style.transition="transform "+o.speed+"ms ease-out",o.horizontal?slideeElement.classList.add("animatedScrollX"):slideeElement.classList.add("animatedScrollY")):o.horizontal?(layoutManager.desktop&&!o.hideScrollbar?nativeScrollElement.classList.add("scrollX"):(nativeScrollElement.classList.add("scrollX"),nativeScrollElement.classList.add("hiddenScrollX"),layoutManager.tv&&o.allowNativeSmoothScroll!==!1&&nativeScrollElement.classList.add("smoothScrollX")),o.forceHideScrollbars&&nativeScrollElement.classList.add("hiddenScrollX-forced")):(layoutManager.desktop&&!o.hideScrollbar?nativeScrollElement.classList.add("scrollY"):(nativeScrollElement.classList.add("scrollY"),nativeScrollElement.classList.add("hiddenScrollY"),layoutManager.tv&&o.allowNativeSmoothScroll!==!1&&nativeScrollElement.classList.add("smoothScrollY")),o.forceHideScrollbars&&nativeScrollElement.classList.add("hiddenScrollY-forced")),(transform||layoutManager.tv)&&dom.addEventListener(dragSourceElement,"mousedown",dragInitSlidee,{}),initFrameResizeObserver(),transform?(dom.addEventListener(dragSourceElement,"touchstart",dragInitSlidee,{passive:!0}),o.horizontal||dom.addEventListener(frame,"scroll",resetScroll,{passive:!0}),o.mouseWheel&&dom.addEventListener(scrollSource,wheelEvent,scrollHandler,{passive:!0})):o.horizontal&&o.mouseWheel&&dom.addEventListener(scrollSource,wheelEvent,scrollHandler,{passive:!0}),dom.addEventListener(frame,"click",onFrameClick,{passive:!0,capture:!0}),self.initialized=1,load(!0),self}});return scrollerFactory.prototype.slideBy=function(delta,immediate){delta&&this.slideTo(this._pos.dest+delta,immediate)},scrollerFactory.prototype.to=function(location,item,immediate){if("boolean"===type(item)&&(immediate=item,item=void 0),void 0===item)this.slideTo(this._pos[location],immediate);else{var itemPos=this.getPos(item);itemPos&&this.slideTo(itemPos[location],immediate,itemPos)}},scrollerFactory.prototype.toStart=function(item,immediate){this.to("start",item,immediate)},scrollerFactory.prototype.toEnd=function(item,immediate){this.to("end",item,immediate)},scrollerFactory.prototype.toCenter=function(item,immediate){this.to("center",item,immediate)},scrollerFactory.create=function(frame,options){var instance=new scrollerFactory(frame,options);return Promise.resolve(instance)},scrollerFactory}); \ No newline at end of file +define(["browser","layoutManager","dom","focusManager","ResizeObserver","scrollStyles"],function(browser,layoutManager,dom,focusManager,ResizeObserver){"use strict";function type(value){return null==value?String(value):"object"==typeof value||"function"==typeof value?Object.prototype.toString.call(value).match(/\s([a-z]+)/i)[1].toLowerCase()||"object":typeof value}function disableOneEvent(event){event.preventDefault(),event.stopPropagation(),this.removeEventListener(event.type,disableOneEvent)}function within(number,min,max){return numbermax?max:number}var dragMouseEvents=["mousemove","mouseup"],dragTouchEvents=["touchmove","touchend"],wheelEvent=document.implementation.hasFeature("Event.wheel","3.0")?"wheel":"mousewheel",interactiveElements=["INPUT","SELECT","TEXTAREA"],abs=Math.abs,sqrt=Math.sqrt,pow=Math.pow,round=Math.round,max=Math.max,scrollerFactory=(Math.min,function(frame,options){function ensureSizeInfo(){requiresReflow&&(requiresReflow=!1,frameSize=o.horizontal?frame.offsetWidth:frame.offsetHeight,slideeSize=o.scrollWidth||Math.max(slideeElement[o.horizontal?"offsetWidth":"offsetHeight"],slideeElement[o.horizontal?"scrollWidth":"scrollHeight"]),self._pos.end=max(slideeSize-frameSize,0))}function load(isInit){if(requiresReflow=!0,!isInit){ensureSizeInfo();var pos=self._pos;self.slideTo(within(pos.dest,pos.start,pos.end))}}function initFrameResizeObserver(){var observerOptions={};self.frameResizeObserver=new ResizeObserver(onResize,observerOptions),self.frameResizeObserver.observe(frame)}function nativeScrollTo(container,pos,immediate){container.scroll?o.horizontal?container.scroll({left:pos,behavior:immediate?"instant":"smooth"}):container.scroll({top:pos,behavior:immediate?"instant":"smooth"}):!immediate&&container.scrollTo?o.horizontal?container.scrollTo(Math.round(pos),0):container.scrollTo(0,Math.round(pos)):o.horizontal?container.scrollLeft=Math.round(pos):container.scrollTop=Math.round(pos)}function setStyleProperty(elem,name,value,speed,resetTransition){var style=elem.style;(resetTransition||browser.edge)&&(style.transition="none",elem.offsetWidth),style.transition="transform "+speed+"ms ease-out",style[name]=value}function dispatchScrollEventIfNeeded(){o.dispatchScrollEvent&&frame.dispatchEvent(new CustomEvent(self.getScrollEventName(),{bubbles:!0,cancelable:!1}))}function renderAnimateWithTransform(fromPosition,toPosition,immediate){var speed=o.speed;immediate&&(speed=o.immediateSpeed||50),o.horizontal?setStyleProperty(slideeElement,"transform","translateX("+-round(toPosition)+"px)",speed):setStyleProperty(slideeElement,"transform","translateY("+-round(toPosition)+"px)",speed),self._pos.cur=toPosition,dispatchScrollEventIfNeeded()}function getBoundingClientRect(elem){return elem.getBoundingClientRect?elem.getBoundingClientRect():{top:0,left:0}}function dragInitSlidee(event){var isTouch="touchstart"===event.type;if(!(dragging.init||!isTouch&&isInteractive(event.target))&&(isTouch?o.touchDragging:o.mouseDragging&&event.which<2)){isTouch||event.preventDefault(),dragging.released=0,dragging.init=0,dragging.source=event.target,dragging.touch=isTouch;var pointer=isTouch?event.touches[0]:event;dragging.initX=pointer.pageX,dragging.initY=pointer.pageY,dragging.initPos=self._pos.cur,dragging.start=+new Date,dragging.time=0,dragging.path=0,dragging.delta=0,dragging.locked=0,dragging.pathToLock=isTouch?30:10,transform&&(isTouch?dragTouchEvents.forEach(function(eventName){dom.addEventListener(document,eventName,dragHandler,{passive:!0})}):dragMouseEvents.forEach(function(eventName){dom.addEventListener(document,eventName,dragHandler,{passive:!0})}))}}function dragHandler(event){dragging.released="mouseup"===event.type||"touchend"===event.type;var pointer=dragging.touch?event[dragging.released?"changedTouches":"touches"][0]:event;if(dragging.pathX=pointer.pageX-dragging.initX,dragging.pathY=pointer.pageY-dragging.initY,dragging.path=sqrt(pow(dragging.pathX,2)+pow(dragging.pathY,2)),dragging.delta=o.horizontal?dragging.pathX:dragging.pathY,dragging.released||!(dragging.path<1)){if(!dragging.init){if(dragging.pathabs(dragging.pathY):abs(dragging.pathX)dragging.pathToLock&&(dragging.locked=1,dragging.source.addEventListener("click",disableOneEvent)),dragging.released&&dragEnd(),self.slideTo(round(dragging.initPos-dragging.delta))}}function dragEnd(){dragging.released=!0,dragTouchEvents.forEach(function(eventName){dom.removeEventListener(document,eventName,dragHandler,{passive:!0})}),dragMouseEvents.forEach(function(eventName){dom.removeEventListener(document,eventName,dragHandler,{passive:!0})}),setTimeout(function(){dragging.source.removeEventListener("click",disableOneEvent)}),dragging.init=0}function isInteractive(element){for(;element;){if(-1!==interactiveElements.indexOf(element.tagName))return!0;element=element.parentNode}return!1}function normalizeWheelDelta(event){return scrolling.curDelta=(o.horizontal?event.deltaY||event.deltaX:event.deltaY)||-event.wheelDelta,transform&&(scrolling.curDelta/=1===event.deltaMode?3:100),scrolling.curDelta}function scrollHandler(event){ensureSizeInfo();var pos=self._pos;if(o.scrollBy&&pos.start!==pos.end){var delta=normalizeWheelDelta(event);transform?(delta>0&&pos.dest=currentStart&&offset+size<=currentEnd}},self.getCenterPosition=function(item){ensureSizeInfo();var pos=self.getPos(item);return within(pos.center,pos.start,pos.end)},self.destroy=function(){return self.frameResizeObserver&&(self.frameResizeObserver.disconnect(),self.frameResizeObserver=null),dom.removeEventListener(frame,"scroll",resetScroll,{passive:!0}),dom.removeEventListener(scrollSource,wheelEvent,scrollHandler,{passive:!0}),dom.removeEventListener(dragSourceElement,"touchstart",dragInitSlidee,{passive:!0}),dom.removeEventListener(frame,"click",onFrameClick,{passive:!0,capture:!0}),dom.removeEventListener(dragSourceElement,"mousedown",dragInitSlidee,{}),self.initialized=0,self};var contentRect={};self.getScrollPosition=function(){return transform?self._pos.cur:o.horizontal?nativeScrollElement.scrollLeft:nativeScrollElement.scrollTop},self.getScrollSize=function(){return transform?slideeSize:o.horizontal?nativeScrollElement.scrollWidth:nativeScrollElement.scrollHeight},self.init=function(){if(!self.initialized)return transform?(frame.style.overflow="hidden",slideeElement.style["will-change"]="transform",slideeElement.style.transition="transform "+o.speed+"ms ease-out",o.horizontal?slideeElement.classList.add("animatedScrollX"):slideeElement.classList.add("animatedScrollY")):o.horizontal?(layoutManager.desktop&&!o.hideScrollbar?nativeScrollElement.classList.add("scrollX"):(nativeScrollElement.classList.add("scrollX"),nativeScrollElement.classList.add("hiddenScrollX"),layoutManager.tv&&!1!==o.allowNativeSmoothScroll&&nativeScrollElement.classList.add("smoothScrollX")),o.forceHideScrollbars&&nativeScrollElement.classList.add("hiddenScrollX-forced")):(layoutManager.desktop&&!o.hideScrollbar?nativeScrollElement.classList.add("scrollY"):(nativeScrollElement.classList.add("scrollY"),nativeScrollElement.classList.add("hiddenScrollY"),layoutManager.tv&&!1!==o.allowNativeSmoothScroll&&nativeScrollElement.classList.add("smoothScrollY")),o.forceHideScrollbars&&nativeScrollElement.classList.add("hiddenScrollY-forced")),(transform||layoutManager.tv)&&dom.addEventListener(dragSourceElement,"mousedown",dragInitSlidee,{}),initFrameResizeObserver(),transform?(dom.addEventListener(dragSourceElement,"touchstart",dragInitSlidee,{passive:!0}),o.horizontal||dom.addEventListener(frame,"scroll",resetScroll,{passive:!0}),o.mouseWheel&&dom.addEventListener(scrollSource,wheelEvent,scrollHandler,{passive:!0})):o.horizontal&&o.mouseWheel&&dom.addEventListener(scrollSource,wheelEvent,scrollHandler,{passive:!0}),dom.addEventListener(frame,"click",onFrameClick,{passive:!0,capture:!0}),self.initialized=1,load(!0),self}});return scrollerFactory.prototype.slideBy=function(delta,immediate){delta&&this.slideTo(this._pos.dest+delta,immediate)},scrollerFactory.prototype.to=function(location,item,immediate){if("boolean"===type(item)&&(immediate=item,item=void 0),void 0===item)this.slideTo(this._pos[location],immediate);else{var itemPos=this.getPos(item);itemPos&&this.slideTo(itemPos[location],immediate,itemPos)}},scrollerFactory.prototype.toStart=function(item,immediate){this.to("start",item,immediate)},scrollerFactory.prototype.toEnd=function(item,immediate){this.to("end",item,immediate)},scrollerFactory.prototype.toCenter=function(item,immediate){this.to("center",item,immediate)},scrollerFactory.create=function(frame,options){var instance=new scrollerFactory(frame,options);return Promise.resolve(instance)},scrollerFactory}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/scrollhelper.js b/dashboard-ui/bower_components/emby-webcomponents/scrollhelper.js index 411919893d..6e397f060f 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/scrollhelper.js +++ b/dashboard-ui/bower_components/emby-webcomponents/scrollhelper.js @@ -1 +1 @@ -define(["focusManager","dom","scrollStyles"],function(focusManager,dom){"use strict";function getBoundingClientRect(elem){return elem.getBoundingClientRect?elem.getBoundingClientRect():{top:0,left:0}}function getPosition(scrollContainer,item,horizontal){var slideeOffset=getBoundingClientRect(scrollContainer),itemOffset=getBoundingClientRect(item),offset=horizontal?itemOffset.left-slideeOffset.left:itemOffset.top-slideeOffset.top,size=horizontal?itemOffset.width:itemOffset.height;size||0===size||(size=item[horizontal?"offsetWidth":"offsetHeight"]);var currentStart=horizontal?scrollContainer.scrollLeft:scrollContainer.scrollTop;offset+=currentStart;var frameSize=horizontal?scrollContainer.offsetWidth:scrollContainer.offsetHeight,currentEnd=currentStart+frameSize,isVisible=offset>=currentStart&&offset+size<=currentEnd;return{start:offset,center:offset-frameSize/2+size/2,end:offset-frameSize+size,size:size,isVisible:isVisible}}function toCenter(container,elem,horizontal,skipWhenVisible){var pos=getPosition(container,elem,horizontal);skipWhenVisible&&pos.isVisible||(container.scrollTo?horizontal?container.scrollTo(pos.center,0):container.scrollTo(0,pos.center):horizontal?container.scrollLeft=Math.round(pos.center):container.scrollTop=Math.round(pos.center))}function toStart(container,elem,horizontal,skipWhenVisible){var pos=getPosition(container,elem,horizontal);skipWhenVisible&&pos.isVisible||(container.scrollTo?horizontal?container.scrollTo(pos.start,0):container.scrollTo(0,pos.start):horizontal?container.scrollLeft=Math.round(pos.start):container.scrollTop=Math.round(pos.start))}function centerOnFocus(e,scrollSlider,horizontal){var focused=focusManager.focusableParent(e.target);focused&&toCenter(scrollSlider,focused,horizontal)}function centerOnFocusHorizontal(e){centerOnFocus(e,this,!0)}function centerOnFocusVertical(e){centerOnFocus(e,this,!1)}return{getPosition:getPosition,centerFocus:{on:function(element,horizontal){horizontal?dom.addEventListener(element,"focus",centerOnFocusHorizontal,{capture:!0,passive:!0}):dom.addEventListener(element,"focus",centerOnFocusVertical,{capture:!0,passive:!0})},off:function(element,horizontal){horizontal?dom.removeEventListener(element,"focus",centerOnFocusHorizontal,{capture:!0,passive:!0}):dom.removeEventListener(element,"focus",centerOnFocusVertical,{capture:!0,passive:!0})}},toCenter:toCenter,toStart:toStart}}); \ No newline at end of file +define(["focusManager","dom","scrollStyles"],function(focusManager,dom){"use strict";function getBoundingClientRect(elem){return elem.getBoundingClientRect?elem.getBoundingClientRect():{top:0,left:0}}function getPosition(scrollContainer,item,horizontal){var slideeOffset=getBoundingClientRect(scrollContainer),itemOffset=getBoundingClientRect(item),offset=horizontal?itemOffset.left-slideeOffset.left:itemOffset.top-slideeOffset.top,size=horizontal?itemOffset.width:itemOffset.height;size||0===size||(size=item[horizontal?"offsetWidth":"offsetHeight"]);var currentStart=horizontal?scrollContainer.scrollLeft:scrollContainer.scrollTop;offset+=currentStart;var frameSize=horizontal?scrollContainer.offsetWidth:scrollContainer.offsetHeight,currentEnd=currentStart+frameSize;return{start:offset,center:offset-frameSize/2+size/2,end:offset-frameSize+size,size:size,isVisible:offset>=currentStart&&offset+size<=currentEnd}}function toCenter(container,elem,horizontal,skipWhenVisible){var pos=getPosition(container,elem,horizontal);skipWhenVisible&&pos.isVisible||(container.scrollTo?horizontal?container.scrollTo(pos.center,0):container.scrollTo(0,pos.center):horizontal?container.scrollLeft=Math.round(pos.center):container.scrollTop=Math.round(pos.center))}function toStart(container,elem,horizontal,skipWhenVisible){var pos=getPosition(container,elem,horizontal);skipWhenVisible&&pos.isVisible||(container.scrollTo?horizontal?container.scrollTo(pos.start,0):container.scrollTo(0,pos.start):horizontal?container.scrollLeft=Math.round(pos.start):container.scrollTop=Math.round(pos.start))}function centerOnFocus(e,scrollSlider,horizontal){var focused=focusManager.focusableParent(e.target);focused&&toCenter(scrollSlider,focused,horizontal)}function centerOnFocusHorizontal(e){centerOnFocus(e,this,!0)}function centerOnFocusVertical(e){centerOnFocus(e,this,!1)}return{getPosition:getPosition,centerFocus:{on:function(element,horizontal){horizontal?dom.addEventListener(element,"focus",centerOnFocusHorizontal,{capture:!0,passive:!0}):dom.addEventListener(element,"focus",centerOnFocusVertical,{capture:!0,passive:!0})},off:function(element,horizontal){horizontal?dom.removeEventListener(element,"focus",centerOnFocusHorizontal,{capture:!0,passive:!0}):dom.removeEventListener(element,"focus",centerOnFocusVertical,{capture:!0,passive:!0})}},toCenter:toCenter,toStart:toStart}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/search/searchfields.js b/dashboard-ui/bower_components/emby-webcomponents/search/searchfields.js index b44a1c0ff9..2af72fd678 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/search/searchfields.js +++ b/dashboard-ui/bower_components/emby-webcomponents/search/searchfields.js @@ -1 +1 @@ -define(["layoutManager","globalize","require","events","browser","alphaPicker","emby-input","flexStyles","material-icons","css!./searchfields"],function(layoutManager,globalize,require,events,browser,AlphaPicker){"use strict";function onSearchTimeout(){var instance=this,value=instance.nextSearchValue;value=(value||"").trim(),events.trigger(instance,"search",[value])}function triggerSearch(instance,value){instance.searchTimeout&&clearTimeout(instance.searchTimeout),instance.nextSearchValue=value,instance.searchTimeout=setTimeout(onSearchTimeout.bind(instance),300)}function onAlphaValueClicked(e){var value=e.detail.value,searchFieldsInstance=this,txtSearch=searchFieldsInstance.options.element.querySelector(".searchfields-txtSearch");if("backspace"===value){var val=txtSearch.value;txtSearch.value=val.length?val.substring(0,val.length-1):""}else txtSearch.value+=value;txtSearch.dispatchEvent(new CustomEvent("input",{bubbles:!0}))}function initAlphaPicker(alphaPickerElement,instance){instance.alphaPicker=new AlphaPicker({element:alphaPickerElement,mode:"keyboard"}),alphaPickerElement.addEventListener("alphavalueclicked",onAlphaValueClicked.bind(instance))}function onSearchInput(e){var value=e.target.value,searchFieldsInstance=this;triggerSearch(searchFieldsInstance,value)}function embed(elem,instance,options){require(["text!./searchfields.template.html"],function(template){var html=globalize.translateDocument(template,"sharedcomponents");(browser.tizen||browser.orsay)&&(html=html.replace("';return itemHtml+=i.Name,itemHtml+="
    "}).join(""),searchSuggestions=context.querySelector(".searchSuggestions");searchSuggestions.querySelector(".searchSuggestionsList").innerHTML=html,result.Items.length&&searchSuggestions.classList.remove("hide")})}function getSearchHints(instance,apiClient,query){if(!query.searchTerm)return Promise.resolve({SearchHints:[]});var allowSearch=!0,queryIncludeItemTypes=query.IncludeItemTypes;return"tvshows"===instance.options.collectionType?query.IncludeArtists?allowSearch=!1:"Movie"!==queryIncludeItemTypes&&"LiveTvProgram"!==queryIncludeItemTypes&&"MusicAlbum"!==queryIncludeItemTypes&&"Audio"!==queryIncludeItemTypes&&"Book"!==queryIncludeItemTypes&&"AudioBook"!==queryIncludeItemTypes&&"Video"!==query.MediaTypes||(allowSearch=!1):"movies"===instance.options.collectionType?query.IncludeArtists?allowSearch=!1:"Series"!==queryIncludeItemTypes&&"Episode"!==queryIncludeItemTypes&&"LiveTvProgram"!==queryIncludeItemTypes&&"MusicAlbum"!==queryIncludeItemTypes&&"Audio"!==queryIncludeItemTypes&&"Book"!==queryIncludeItemTypes&&"AudioBook"!==queryIncludeItemTypes&&"Video"!==query.MediaTypes||(allowSearch=!1):"music"===instance.options.collectionType?query.People?allowSearch=!1:"Series"!==queryIncludeItemTypes&&"Episode"!==queryIncludeItemTypes&&"LiveTvProgram"!==queryIncludeItemTypes&&"Movie"!==queryIncludeItemTypes||(allowSearch=!1):"livetv"===instance.options.collectionType&&(query.IncludeArtists||query.IncludePeople?allowSearch=!1:"Series"!==queryIncludeItemTypes&&"Episode"!==queryIncludeItemTypes&&"MusicAlbum"!==queryIncludeItemTypes&&"Audio"!==queryIncludeItemTypes&&"Book"!==queryIncludeItemTypes&&"AudioBook"!==queryIncludeItemTypes&&"Movie"!==queryIncludeItemTypes&&"Video"!==query.MediaTypes||(allowSearch=!1)),"NullType"===queryIncludeItemTypes&&(allowSearch=!1),allowSearch?apiClient.getSearchHints(query):Promise.resolve({SearchHints:[]})}function search(instance,apiClient,context,value){value||layoutManager.tv?(instance.mode="search",context.querySelector(".searchSuggestions").classList.add("hide")):(instance.mode="suggestions",loadSuggestions(instance,context,apiClient)),"livetv"===instance.options.collectionType?searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,IncludeItemTypes:"LiveTvProgram",IsMovie:!0,IsKids:!1,IsNews:!1},context,".movieResults",{preferThumb:!0,inheritThumb:!1,shape:enableScrollX()?"overflowPortrait":"portrait",showParentTitleOrTitle:!0,showTitle:!1,centerText:!0,coverImage:!0,overlayText:!1,overlayMoreButton:!0,showAirTime:!0,showAirDateTime:!0,showChannelName:!0}):searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,IncludeItemTypes:"Movie"},context,".movieResults",{showTitle:!0,overlayText:!1,centerText:!0,showYear:!0}),searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,IncludeItemTypes:"Series"},context,".seriesResults",{showTitle:!0,overlayText:!1,centerText:!0,showYear:!0}),"livetv"===instance.options.collectionType?searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,IncludeItemTypes:"LiveTvProgram",IsSeries:!0,IsSports:!1,IsKids:!1,IsNews:!1},context,".episodeResults",{preferThumb:!0,inheritThumb:!1,shape:enableScrollX()?"overflowBackdrop":"backdrop",showParentTitleOrTitle:!0,showTitle:!1,centerText:!0,coverImage:!0,overlayText:!1,overlayMoreButton:!0,showAirTime:!0,showAirDateTime:!0,showChannelName:!0}):searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,IncludeItemTypes:"Episode"},context,".episodeResults",{coverImage:!0,showTitle:!0,showParentTitle:!0}),searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,IncludeItemTypes:"livetv"===instance.options.collectionType?"LiveTvProgram":"NullType",IsSports:!0},context,".sportsResults",{preferThumb:!0,inheritThumb:!1,shape:enableScrollX()?"overflowBackdrop":"backdrop",showParentTitleOrTitle:!0,showTitle:!1,centerText:!0,coverImage:!0,overlayText:!1,overlayMoreButton:!0,showAirTime:!0,showAirDateTime:!0,showChannelName:!0}),searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,IncludeItemTypes:"livetv"===instance.options.collectionType?"LiveTvProgram":"NullType",IsKids:!0},context,".kidsResults",{preferThumb:!0,inheritThumb:!1,shape:enableScrollX()?"overflowBackdrop":"backdrop",showParentTitleOrTitle:!0,showTitle:!1,centerText:!0,coverImage:!0,overlayText:!1,overlayMoreButton:!0,showAirTime:!0,showAirDateTime:!0,showChannelName:!0}),searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,IncludeItemTypes:"livetv"===instance.options.collectionType?"LiveTvProgram":"NullType",IsNews:!0},context,".newsResults",{preferThumb:!0,inheritThumb:!1,shape:enableScrollX()?"overflowBackdrop":"backdrop",showParentTitleOrTitle:!0,showTitle:!1,centerText:!0,coverImage:!0,overlayText:!1,overlayMoreButton:!0,showAirTime:!0,showAirDateTime:!0,showChannelName:!0}),searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,IncludeItemTypes:"LiveTvProgram",IsMovie:"livetv"!==instance.options.collectionType&&null,IsSeries:"livetv"!==instance.options.collectionType&&null,IsSports:"livetv"!==instance.options.collectionType&&null,IsKids:"livetv"!==instance.options.collectionType&&null,IsNews:"livetv"!==instance.options.collectionType&&null},context,".programResults",{preferThumb:!0,inheritThumb:!1,shape:enableScrollX()?"overflowBackdrop":"backdrop",showParentTitleOrTitle:!0,showTitle:!1,centerText:!0,coverImage:!0,overlayText:!1,overlayMoreButton:!0,showAirTime:!0,showAirDateTime:!0,showChannelName:!0}),searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,MediaTypes:"Video",ExcludeItemTypes:"Movie,Episode"},context,".videoResults",{showParentTitle:!0,showTitle:!0,overlayText:!1,centerText:!0}),searchType(instance,apiClient,{searchTerm:value,IncludePeople:!0,IncludeMedia:!1,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1},context,".peopleResults",{coverImage:!0,showTitle:!0}),searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!1,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!0},context,".artistResults",{coverImage:!0,showTitle:!0}),searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,IncludeItemTypes:"MusicAlbum"},context,".albumResults",{showParentTitle:!0,showTitle:!0,overlayText:!1,centerText:!0}),searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,IncludeItemTypes:"Audio"},context,".songResults",{showParentTitle:!0,showTitle:!0,overlayText:!1,centerText:!0,action:"play"}),searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,IncludeItemTypes:"Book"},context,".bookResults",{showTitle:!0,overlayText:!1,centerText:!0}),searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,IncludeItemTypes:"AudioBook"},context,".audioBookResults",{showTitle:!0,overlayText:!1,centerText:!0})}function searchType(instance,apiClient,query,context,section,cardOptions){query.UserId=apiClient.getCurrentUserId(),query.Limit=enableScrollX()?24:16,query.ParentId=instance.options.parentId,getSearchHints(instance,apiClient,query).then(function(result){populateResults(result,context,section,cardOptions)})}function populateResults(result,context,section,cardOptions){section=context.querySelector(section);var items=result.SearchHints,itemsContainer=section.querySelector(".itemsContainer");cardBuilder.buildCards(items,Object.assign({itemsContainer:itemsContainer,parentContainer:section,shape:enableScrollX()?"autooverflow":"auto",scalable:!0,overlayText:!1,centerText:!0,allowBottomPadding:!enableScrollX()},cardOptions||{})),section.querySelector(".emby-scroller").scrollToBeginning(!0)}function enableScrollX(){return!0}function replaceAll(originalString,strReplace,strWith){var reg=new RegExp(strReplace,"ig");return originalString.replace(reg,strWith)}function embed(elem,instance,options){require(["text!./searchresults.template.html"],function(template){enableScrollX()||(template=replaceAll(template,'data-horizontal="true"','data-horizontal="false"'),template=replaceAll(template,"itemsContainer scrollSlider","itemsContainer scrollSlider vertical-wrap"));var html=globalize.translateDocument(template,"sharedcomponents");elem.innerHTML=html,elem.classList.add("searchResults"),instance.search("")})}function SearchResults(options){this.options=options,embed(options.element,this,options)}return SearchResults.prototype.search=function(value){var apiClient=connectionManager.getApiClient(this.options.serverId);search(this,apiClient,this.options.element,value)},SearchResults.prototype.destroy=function(){var options=this.options;options&&options.element.classList.remove("searchFields"),this.options=null},SearchResults}); \ No newline at end of file +define(["layoutManager","globalize","require","events","connectionManager","cardBuilder","appRouter","emby-scroller","emby-itemscontainer","emby-linkbutton"],function(layoutManager,globalize,require,events,connectionManager,cardBuilder,appRouter){"use strict";function loadSuggestions(instance,context,apiClient){var options={SortBy:"IsFavoriteOrLiked,Random",IncludeItemTypes:"Movie,Series,MusicArtist",Limit:20,Recursive:!0,ImageTypeLimit:0,EnableImages:!1,ParentId:instance.options.parentId,EnableTotalRecordCount:!1};apiClient.getItems(apiClient.getCurrentUserId(),options).then(function(result){"suggestions"!==instance.mode&&(result.Items=[]);var html=result.Items.map(function(i){var href=appRouter.getRouteUrl(i),itemHtml='"}).join(""),searchSuggestions=context.querySelector(".searchSuggestions");searchSuggestions.querySelector(".searchSuggestionsList").innerHTML=html,result.Items.length&&searchSuggestions.classList.remove("hide")})}function getSearchHints(instance,apiClient,query){if(!query.searchTerm)return Promise.resolve({SearchHints:[]});var allowSearch=!0,queryIncludeItemTypes=query.IncludeItemTypes;if("tvshows"===instance.options.collectionType?query.IncludeArtists?allowSearch=!1:"Movie"!==queryIncludeItemTypes&&"LiveTvProgram"!==queryIncludeItemTypes&&"MusicAlbum"!==queryIncludeItemTypes&&"Audio"!==queryIncludeItemTypes&&"Book"!==queryIncludeItemTypes&&"AudioBook"!==queryIncludeItemTypes&&"Playlist"!==queryIncludeItemTypes&&"PhotoAlbum"!==queryIncludeItemTypes&&"Video"!==query.MediaTypes&&"Photo"!==query.MediaTypes||(allowSearch=!1):"movies"===instance.options.collectionType?query.IncludeArtists?allowSearch=!1:"Series"!==queryIncludeItemTypes&&"Episode"!==queryIncludeItemTypes&&"LiveTvProgram"!==queryIncludeItemTypes&&"MusicAlbum"!==queryIncludeItemTypes&&"Audio"!==queryIncludeItemTypes&&"Book"!==queryIncludeItemTypes&&"AudioBook"!==queryIncludeItemTypes&&"Playlist"!==queryIncludeItemTypes&&"PhotoAlbum"!==queryIncludeItemTypes&&"Video"!==query.MediaTypes&&"Photo"!==query.MediaTypes||(allowSearch=!1):"music"===instance.options.collectionType?query.People?allowSearch=!1:"Series"!==queryIncludeItemTypes&&"Episode"!==queryIncludeItemTypes&&"LiveTvProgram"!==queryIncludeItemTypes&&"Movie"!==queryIncludeItemTypes||(allowSearch=!1):"livetv"===instance.options.collectionType&&(query.IncludeArtists||query.IncludePeople?allowSearch=!1:"Series"!==queryIncludeItemTypes&&"Episode"!==queryIncludeItemTypes&&"MusicAlbum"!==queryIncludeItemTypes&&"Audio"!==queryIncludeItemTypes&&"Book"!==queryIncludeItemTypes&&"AudioBook"!==queryIncludeItemTypes&&"PhotoAlbum"!==queryIncludeItemTypes&&"Movie"!==queryIncludeItemTypes&&"Video"!==query.MediaTypes&&"Photo"!==query.MediaTypes||(allowSearch=!1)),"NullType"===queryIncludeItemTypes&&(allowSearch=!1),!allowSearch)return Promise.resolve({SearchHints:[]});if(apiClient.isMinServerVersion("3.4.1.31")){query.Fields="PrimaryImageAspectRatio,CanDelete,BasicSyncInfo,MediaSourceCount",query.Recursive=!0,query.EnableTotalRecordCount=!1,query.ImageTypeLimit=1;var methodName="getItems";return query.IncludeMedia||(query.IncludePeople?methodName="getPeople":query.IncludeArtists&&(methodName="getArtists")),apiClient[methodName](apiClient.getCurrentUserId(),query)}return query.UserId=apiClient.getCurrentUserId(),apiClient.getSearchHints(query)}function search(instance,apiClient,context,value){value||layoutManager.tv?(instance.mode="search",context.querySelector(".searchSuggestions").classList.add("hide")):(instance.mode="suggestions",loadSuggestions(instance,context,apiClient)),"livetv"===instance.options.collectionType?searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,IncludeItemTypes:"LiveTvProgram",IsMovie:!0,IsKids:!1,IsNews:!1},context,".movieResults",{preferThumb:!0,inheritThumb:!1,shape:enableScrollX()?"overflowPortrait":"portrait",showParentTitleOrTitle:!0,showTitle:!1,centerText:!0,coverImage:!0,overlayText:!1,overlayMoreButton:!0,showAirTime:!0,showAirDateTime:!0,showChannelName:!0}):searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,IncludeItemTypes:"Movie"},context,".movieResults",{showTitle:!0,overlayText:!1,centerText:!0,showYear:!0}),searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,IncludeItemTypes:"Series"},context,".seriesResults",{showTitle:!0,overlayText:!1,centerText:!0,showYear:!0}),"livetv"===instance.options.collectionType?searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,IncludeItemTypes:"LiveTvProgram",IsSeries:!0,IsSports:!1,IsKids:!1,IsNews:!1},context,".episodeResults",{preferThumb:!0,inheritThumb:!1,shape:enableScrollX()?"overflowBackdrop":"backdrop",showParentTitleOrTitle:!0,showTitle:!1,centerText:!0,coverImage:!0,overlayText:!1,overlayMoreButton:!0,showAirTime:!0,showAirDateTime:!0,showChannelName:!0}):searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,IncludeItemTypes:"Episode"},context,".episodeResults",{coverImage:!0,showTitle:!0,showParentTitle:!0}),searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,IncludeItemTypes:"livetv"===instance.options.collectionType?"LiveTvProgram":"NullType",IsSports:!0},context,".sportsResults",{preferThumb:!0,inheritThumb:!1,shape:enableScrollX()?"overflowBackdrop":"backdrop",showParentTitleOrTitle:!0,showTitle:!1,centerText:!0,coverImage:!0,overlayText:!1,overlayMoreButton:!0,showAirTime:!0,showAirDateTime:!0,showChannelName:!0}),searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,IncludeItemTypes:"livetv"===instance.options.collectionType?"LiveTvProgram":"NullType",IsKids:!0},context,".kidsResults",{preferThumb:!0,inheritThumb:!1,shape:enableScrollX()?"overflowBackdrop":"backdrop",showParentTitleOrTitle:!0,showTitle:!1,centerText:!0,coverImage:!0,overlayText:!1,overlayMoreButton:!0,showAirTime:!0,showAirDateTime:!0,showChannelName:!0}),searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,IncludeItemTypes:"livetv"===instance.options.collectionType?"LiveTvProgram":"NullType",IsNews:!0},context,".newsResults",{preferThumb:!0,inheritThumb:!1,shape:enableScrollX()?"overflowBackdrop":"backdrop",showParentTitleOrTitle:!0,showTitle:!1,centerText:!0,coverImage:!0,overlayText:!1,overlayMoreButton:!0,showAirTime:!0,showAirDateTime:!0,showChannelName:!0}),searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,IncludeItemTypes:"LiveTvProgram",IsMovie:"livetv"!==instance.options.collectionType&&null,IsSeries:"livetv"!==instance.options.collectionType&&null,IsSports:"livetv"!==instance.options.collectionType&&null,IsKids:"livetv"!==instance.options.collectionType&&null,IsNews:"livetv"!==instance.options.collectionType&&null},context,".programResults",{preferThumb:!0,inheritThumb:!1,shape:enableScrollX()?"overflowBackdrop":"backdrop",showParentTitleOrTitle:!0,showTitle:!1,centerText:!0,coverImage:!0,overlayText:!1,overlayMoreButton:!0,showAirTime:!0,showAirDateTime:!0,showChannelName:!0}),searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,MediaTypes:"Video",ExcludeItemTypes:"Movie,Episode"},context,".videoResults",{showParentTitle:!0,showTitle:!0,overlayText:!1,centerText:!0}),searchType(instance,apiClient,{searchTerm:value,IncludePeople:!0,IncludeMedia:!1,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1},context,".peopleResults",{coverImage:!0,showTitle:!0}),searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!1,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!0},context,".artistResults",{coverImage:!0,showTitle:!0}),searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,IncludeItemTypes:"MusicAlbum"},context,".albumResults",{showParentTitle:!0,showTitle:!0,overlayText:!1,centerText:!0}),searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,IncludeItemTypes:"Audio"},context,".songResults",{showParentTitle:!0,showTitle:!0,overlayText:!1,centerText:!0,action:"play"}),searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,MediaTypes:"Photo"},context,".photoResults",{showParentTitle:!1,showTitle:!0,overlayText:!1,centerText:!0}),searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,IncludeItemTypes:"PhotoAlbum"},context,".photoAlbumResults",{showTitle:!0,overlayText:!1,centerText:!0}),searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,IncludeItemTypes:"Book"},context,".bookResults",{showTitle:!0,overlayText:!1,centerText:!0}),searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,IncludeItemTypes:"AudioBook"},context,".audioBookResults",{showTitle:!0,overlayText:!1,centerText:!0}),searchType(instance,apiClient,{searchTerm:value,IncludePeople:!1,IncludeMedia:!0,IncludeGenres:!1,IncludeStudios:!1,IncludeArtists:!1,IncludeItemTypes:"Playlist"},context,".playlistResults",{showTitle:!0,overlayText:!1,centerText:!0})}function searchType(instance,apiClient,query,context,section,cardOptions){query.Limit=enableScrollX()?24:16,query.ParentId=instance.options.parentId,getSearchHints(instance,apiClient,query).then(function(result){populateResults(result,context,section,cardOptions)})}function populateResults(result,context,section,cardOptions){section=context.querySelector(section);var items=result.Items||result.SearchHints,itemsContainer=section.querySelector(".itemsContainer");cardBuilder.buildCards(items,Object.assign({itemsContainer:itemsContainer,parentContainer:section,shape:enableScrollX()?"autooverflow":"auto",scalable:!0,overlayText:!1,centerText:!0,allowBottomPadding:!enableScrollX()},cardOptions||{})),section.querySelector(".emby-scroller").scrollToBeginning(!0)}function enableScrollX(){return!0}function replaceAll(originalString,strReplace,strWith){var reg=new RegExp(strReplace,"ig");return originalString.replace(reg,strWith)}function embed(elem,instance,options){require(["text!./searchresults.template.html"],function(template){enableScrollX()||(template=replaceAll(template,'data-horizontal="true"','data-horizontal="false"'),template=replaceAll(template,"itemsContainer scrollSlider","itemsContainer scrollSlider vertical-wrap"));var html=globalize.translateDocument(template,"sharedcomponents");elem.innerHTML=html,elem.classList.add("searchResults"),instance.search("")})}function SearchResults(options){this.options=options,embed(options.element,this,options)}return SearchResults.prototype.search=function(value){search(this,connectionManager.getApiClient(this.options.serverId),this.options.element,value)},SearchResults.prototype.destroy=function(){var options=this.options;options&&options.element.classList.remove("searchFields"),this.options=null},SearchResults}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/search/searchresults.template.html b/dashboard-ui/bower_components/emby-webcomponents/search/searchresults.template.html index 3527933b65..26b047b5df 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/search/searchresults.template.html +++ b/dashboard-ui/bower_components/emby-webcomponents/search/searchresults.template.html @@ -10,169 +10,137 @@
    -
    -

    ${Movies}

    -
    +

    ${Movies}

    -
    -
    -
    -
    +
    +
    -
    -

    ${Shows}

    -
    +

    ${Shows}

    -
    -
    -
    -
    +
    +
    -
    -

    ${Episodes}

    -
    +

    ${Episodes}

    -
    -
    -
    -
    +
    +
    -
    -

    ${Sports}

    -
    +

    ${Sports}

    -
    -
    -
    -
    +
    +
    -
    -

    ${Kids}

    -
    +

    ${Kids}

    -
    -
    -
    -
    +
    +
    -
    -

    ${News}

    -
    +

    ${News}

    -
    -
    -
    -
    +
    +
    -
    -

    ${Programs}

    -
    +

    ${Programs}

    -
    -
    -
    -
    +
    +
    -
    -

    ${Videos}

    -
    +

    ${Videos}

    -
    -
    -
    -
    +
    +
    +
    +
    + +
    +

    ${Playlists}

    + +
    +
    -
    -

    ${Artists}

    -
    +

    ${Artists}

    -
    -
    -
    -
    +
    +
    -
    -

    ${Albums}

    -
    +

    ${Albums}

    -
    -
    -
    -
    +
    +
    -
    -

    ${Songs}

    -
    +

    ${Songs}

    -
    -
    -
    -
    +
    +
    +
    +
    + +
    +

    ${HeaderPhotoAlbums}

    + +
    +
    +
    +
    + +
    +

    ${Photos}

    + +
    +
    -
    -

    ${HeaderAudioBooks}

    -
    +

    ${HeaderAudioBooks}

    -
    -
    -
    -
    +
    +
    -
    -

    ${Books}

    -
    +

    ${Books}

    -
    -
    -
    -
    +
    +
    -
    -

    ${People}

    -
    +

    ${People}

    -
    -
    -
    -
    +
    +
    \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/serverrestartdialog/serverrestartdialog.js b/dashboard-ui/bower_components/emby-webcomponents/serverrestartdialog/serverrestartdialog.js index 117512cc56..07a308114e 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/serverrestartdialog/serverrestartdialog.js +++ b/dashboard-ui/bower_components/emby-webcomponents/serverrestartdialog/serverrestartdialog.js @@ -1 +1 @@ -define(["loading","events","dialogHelper","dom","layoutManager","scrollHelper","globalize","require","material-icons","emby-button","paper-icon-button-light","emby-input","formDialogStyle","flexStyles"],function(loading,events,dialogHelper,dom,layoutManager,scrollHelper,globalize,require){"use strict";function reloadPageWhenServerAvailable(retryCount){var apiClient=currentApiClient;apiClient&&apiClient.getJSON(apiClient.getUrl("System/Info")).then(function(info){info.IsShuttingDown?retryReload(retryCount):(currentInstance.restarted=!0,dialogHelper.close(currentDlg))},function(){retryReload(retryCount)})}function retryReload(retryCount){setTimeout(function(){retryCount=retryCount||0,retryCount++,retryCount<150&&reloadPageWhenServerAvailable(retryCount)},500)}function startRestart(instance,apiClient,dlg){currentApiClient=apiClient,currentDlg=dlg,currentInstance=instance,apiClient.restartServer().then(function(){setTimeout(reloadPageWhenServerAvailable,250)})}function showDialog(instance,options,template){function onButtonClick(){dialogHelper.close(dlg)}var dialogOptions={removeOnClose:!0,scrollY:!1},enableTvLayout=layoutManager.tv;enableTvLayout&&(dialogOptions.size="fullscreen");var dlg=dialogHelper.createDialog(dialogOptions),configuredButtons=[];dlg.classList.add("formDialog"),dlg.innerHTML=globalize.translateHtml(template,"sharedcomponents"),dlg.classList.add("align-items-center"),dlg.classList.add("justify-items-center");var formDialogContent=dlg.querySelector(".formDialogContent");formDialogContent.style["flex-grow"]="initial",enableTvLayout?(formDialogContent.style["max-width"]="50%",formDialogContent.style["max-height"]="60%",scrollHelper.centerFocus.on(formDialogContent,!1)):(formDialogContent.style.maxWidth=Math.min(150*configuredButtons.length+200,dom.getWindowSize().innerWidth-50)+"px",dlg.classList.add("dialog-fullscreen-lowres")),dlg.querySelector(".formDialogHeaderTitle").innerHTML=globalize.translate("sharedcomponents#HeaderRestartingEmbyServer"),dlg.querySelector(".text").innerHTML=globalize.translate("sharedcomponents#RestartPleaseWaitMessage");var i,length,html="";for(i=0,length=configuredButtons.length;i"+item.name+""}dlg.querySelector(".formDialogFooter").innerHTML=html;var buttons=dlg.querySelectorAll(".btnOption");for(i=0,length=buttons.length;i"+item.name+""}dlg.querySelector(".formDialogFooter").innerHTML=html;var buttons=dlg.querySelectorAll(".btnOption");for(i=0,length=buttons.length;i",html+='
    ',html+='',html+='',html+='',html+='',html+='',html+="
    ",dlg.style.padding=".5em 1.5em 1.5em",dlg.innerHTML=html;for(var isShared=!1,shareInfo=options.share,sskButtons=dlg.querySelectorAll(".ssk"),i=0,length=sskButtons.length;i.ssk,.ssk.ssk-xs{padding:4px}.ssk-xs>.ssk .fa,.ssk-xs>.ssk .glyphicon,.ssk-xs>.ssk:before,.ssk.ssk-xs .fa,.ssk.ssk-xs .glyphicon,.ssk.ssk-xs:before{font-size:15px}.ssk-sm>.ssk,.ssk.ssk-sm{padding:5px}.ssk-sm>.ssk .fa,.ssk-sm>.ssk .glyphicon,.ssk-sm>.ssk:before,.ssk.ssk-sm .fa,.ssk.ssk-sm .glyphicon,.ssk.ssk-sm:before{font-size:20px}.ssk-lg>.ssk,.ssk.ssk-lg{padding:9px}.ssk-lg>.ssk .fa,.ssk-lg>.ssk .glyphicon,.ssk-lg>.ssk:before,.ssk.ssk-lg .fa,.ssk.ssk-lg .glyphicon,.ssk.ssk-lg:before{font-size:28px}.ssk:last-child{margin-right:0}.ssk:hover{background-color:#424242}.ssk-round .ssk,.ssk.ssk-round{-webkit-border-radius:50%;border-radius:50%}.ssk-round .ssk:before,.ssk.ssk-round:before{text-indent:0;margin-right:0}.ssk-rounded .ssk,.ssk.ssk-rounded{-webkit-border-radius:15%;border-radius:15%}.ssk.ssk-icon{color:#757575;padding:2px;font-size:24px}.ssk.ssk-icon,.ssk.ssk-icon:hover{background-color:transparent}.ssk.ssk-icon:hover{color:#424242}.ssk-xs>.ssk.ssk-icon,.ssk.ssk-icon.ssk-xs{font-size:16px}.ssk-sm>.ssk.ssk-icon,.ssk.ssk-icon.ssk-sm{font-size:20px}.ssk-lg>.ssk.ssk-icon,.ssk.ssk-icon.ssk-lg{font-size:28px}.ssk.ssk-text{overflow:hidden;font-size:17px;line-height:normal;padding-right:10px}.ssk.ssk-text .fa,.ssk.ssk-text .glyphicon,.ssk.ssk-text:before{margin:-7px 10px -7px -7px;padding:7px;background-color:rgba(0,0,0,.15);vertical-align:bottom;text-indent:0}.ssk-block .ssk.ssk-text{display:block;margin-right:0;text-align:left}.ssk-xs>.ssk.ssk-text,.ssk.ssk-text.ssk-xs{font-size:12px;padding-right:6px}.ssk-xs>.ssk.ssk-text .fa,.ssk-xs>.ssk.ssk-text .glyphicon,.ssk-xs>.ssk.ssk-text:before,.ssk.ssk-text.ssk-xs .fa,.ssk.ssk-text.ssk-xs .glyphicon,.ssk.ssk-text.ssk-xs:before{margin:-4px 6px -4px -4px;padding:4px}.ssk-sm>.ssk.ssk-text,.ssk.ssk-text.ssk-sm{font-size:16px;padding-right:7px}.ssk-sm>.ssk.ssk-text .fa,.ssk-sm>.ssk.ssk-text .glyphicon,.ssk-sm>.ssk.ssk-text:before,.ssk.ssk-text.ssk-sm .fa,.ssk.ssk-text.ssk-sm .glyphicon,.ssk.ssk-text.ssk-sm:before{margin:-5px 7px -5px -5px;padding:5px}.ssk-lg>.ssk.ssk-text,.ssk.ssk-text.ssk-lg{font-size:22px;padding-right:13px}.ssk-lg>.ssk.ssk-text .fa,.ssk-lg>.ssk.ssk-text .glyphicon,.ssk-lg>.ssk.ssk-text:before,.ssk.ssk-text.ssk-lg .fa,.ssk.ssk-text.ssk-lg .glyphicon,.ssk.ssk-text.ssk-lg:before{margin:-9px 13px -9px -9px;padding:9px}.ssk-group,.ssk-sticky{font-size:0}.ssk-sticky{top:0;position:fixed;z-index:2000}.ssk-sticky .ssk{transition:padding .1s ease-out;-webkit-transition:padding .1s ease-out;-moz-transition:padding .1s ease-out;-ms-transition:padding .1s ease-out;-o-transition:padding .1s ease-out;margin:0}@media (min-width:768px){.ssk-sticky.ssk-left .ssk,.ssk-sticky.ssk-right .ssk{display:block;clear:both}.ssk-sticky.ssk-left.ssk-center,.ssk-sticky.ssk-right.ssk-center{top:50%;transform:translateY(-50%);-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%)}.ssk-sticky.ssk-left{left:0}.ssk-sticky.ssk-left .ssk{float:left}.ssk-sticky.ssk-left .ssk:hover{padding-left:15px}.ssk-sticky.ssk-right{right:0}.ssk-sticky.ssk-right .ssk{float:right}.ssk-sticky.ssk-right .ssk:hover{padding-right:15px}}.ssk-sticky.ssk-bottom{font-size:0;top:auto;bottom:0}.ssk-sticky.ssk-bottom.ssk-center{left:50%;right:auto;transform:translateX(-50%);-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);-o-transform:translateX(-50%)}.ssk-sticky.ssk-bottom .ssk{vertical-align:bottom}.ssk-sticky.ssk-bottom .ssk:hover{padding-bottom:15px}.ssk-sticky.ssk-round.ssk-xs .ssk:hover{padding:8px}.ssk-sticky.ssk-round.ssk-sm .ssk:hover{padding:9px}.ssk-sticky.ssk-round .ssk:hover{padding:11px}.ssk-sticky.ssk-round.ssk-lg .ssk:hover{padding:13px}@media (max-width:767px){.ssk-sticky{left:0;right:0;bottom:0;top:auto;width:100%;display:-webkit-box!important;display:-webkit-flex!important;display:flex!important;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.ssk-sticky.ssk-sticky-hide-xs{display:none!important}.ssk-sticky .ssk{-webkit-box-flex:1;-webkit-flex:1;flex:1;width:auto}.ssk-sticky .ssk .ssk-num{display:none}}.ssk-count{padding-top:20px}.ssk-count .ssk{position:relative}.ssk-count .ssk-num{-webkit-border-radius:4px;border-radius:4px;color:#8f8f8f;background-color:rgba(50,50,50,.03);display:block;font-size:12px;left:0;line-height:20px;position:absolute;right:0;text-align:center;top:-20px}@media (min-width:768px){.ssk-count.ssk-sticky{padding-top:0}.ssk-count.ssk-sticky.ssk-left .ssk-num,.ssk-count.ssk-sticky.ssk-right .ssk-num{top:20%;background-color:transparent}.ssk-count.ssk-sticky.ssk-left .ssk-num{left:100%;margin-left:5px}.ssk-count.ssk-sticky.ssk-right .ssk-num{right:115%;margin-left:-100%;text-align:right}}.ssk-facebook{background-color:#255c95}.ssk-grayscale>.ssk-facebook{background-color:#757575}.ssk-facebook:hover{background-color:#1b436c}.ssk-grayscale>.ssk-facebook:hover{background-color:#255c95}.ssk-facebook.ssk-icon{color:#255c95}.ssk-facebook.ssk-icon:hover{color:#1b436c}.ssk-facebook.ssk-icon:before{text-indent:0;margin-right:0}.ssk-twitter{background-color:#00b4e0}.ssk-grayscale>.ssk-twitter{background-color:#757575}.ssk-twitter:hover{background-color:#008bad}.ssk-grayscale>.ssk-twitter:hover{background-color:#00b4e0}.ssk-twitter.ssk-icon{color:#00b4e0}.ssk-twitter.ssk-icon:hover{color:#008bad}.ssk-google-plus{background-color:#f1403a}.ssk-grayscale>.ssk-google-plus{background-color:#757575}.ssk-google-plus:hover{background-color:#e81810}.ssk-grayscale>.ssk-google-plus:hover{background-color:#f1403a}.ssk-google-plus.ssk-icon{color:#f1403a}.ssk-google-plus.ssk-icon:hover{color:#e81810}.ssk-pinterest{background-color:#cb2027}.ssk-grayscale>.ssk-pinterest{background-color:#757575}.ssk-pinterest:hover{background-color:#9f191f}.ssk-grayscale>.ssk-pinterest:hover{background-color:#cb2027}.ssk-pinterest.ssk-icon{color:#cb2027}.ssk-pinterest.ssk-icon:hover{color:#9f191f}.ssk-tumblr{background-color:#395773}.ssk-grayscale>.ssk-tumblr{background-color:#757575}.ssk-tumblr:hover{background-color:#283d51}.ssk-grayscale>.ssk-tumblr:hover{background-color:#395773}.ssk-tumblr.ssk-icon{color:#395773}.ssk-tumblr.ssk-icon:hover{color:#283d51}.ssk-email,.ssk-grayscale>.ssk-email{background-color:#757575}.ssk-email:hover,.ssk-grayscale>.ssk-email:hover{background-color:#5b5b5b}.ssk-email.ssk-icon{color:#757575}.ssk-email.ssk-icon:hover{color:#5b5b5b}.ssk-vk{background-color:#54769a}.ssk-grayscale>.ssk-vk{background-color:#757575}.ssk-vk:hover{background-color:#425d79}.ssk-grayscale>.ssk-vk:hover{background-color:#54769a}.ssk-vk.ssk-icon{color:#54769a}.ssk-vk.ssk-icon:hover{color:#425d79}.ssk-linkedin{background-color:#1c87bd}.ssk-grayscale>.ssk-linkedin{background-color:#757575}.ssk-linkedin:hover{background-color:#156791}.ssk-grayscale>.ssk-linkedin:hover{background-color:#1c87bd}.ssk-linkedin.ssk-icon{color:#1c87bd}.ssk-linkedin.ssk-icon:hover{color:#156791}.ssk-whatsapp{background-color:#34AF23}.ssk-grayscale>.ssk-whatsapp{background-color:#757575}.ssk-whatsapp:hover{background-color:#27851a}.ssk-grayscale>.ssk-whatsapp:hover{background-color:#34AF23}.ssk-whatsapp.ssk-icon{color:#34AF23}.ssk-whatsapp.ssk-icon:hover{color:#27851a}.ssk-reddit{background-color:#5f99cf}.ssk-grayscale>.ssk-reddit{background-color:#757575}.ssk-reddit:hover{background-color:#3a80c1}.ssk-grayscale>.ssk-reddit:hover,.ssk-reddit2{background-color:#5f99cf}.ssk-reddit.ssk-icon{color:#5f99cf}.ssk-reddit.ssk-icon:hover{color:#3a80c1}.ssk-grayscale>.ssk-reddit2{background-color:#757575}.ssk-reddit2:hover{background-color:#3a80c1}.ssk-grayscale>.ssk-reddit2:hover{background-color:#5f99cf}.ssk-reddit2.ssk-icon{color:#5f99cf}.ssk-reddit2.ssk-icon:hover{color:#3a80c1}.ssk-turquoise{background-color:#1abc9c}.ssk-turquoise:hover{background-color:#148f77}.ssk-emerald{background-color:#2ecc71}.ssk-emerald:hover{background-color:#25a25a}.ssk-peter-river{background-color:#3498db}.ssk-peter-river:hover{background-color:#217dbb}.ssk-belize-hole{background-color:#2980b9}.ssk-belize-hole:hover{background-color:#20638f}.ssk-amethyst{background-color:#9b59b6}.ssk-amethyst:hover{background-color:#804399}.ssk-wisteria{background-color:#8e44ad}.ssk-wisteria:hover{background-color:#703688}.ssk-wet-asphalt{background-color:#34495e}.ssk-wet-asphalt:hover{background-color:#222f3d}.ssk-midnight-blue{background-color:#2c3e50}.ssk-midnight-blue:hover{background-color:#1a242f}.ssk-green-sea{background-color:#16a085}.ssk-green-sea:hover{background-color:#107360}.ssk-nephritis{background-color:#27ae60}.ssk-nephritis:hover{background-color:#1e8449}.ssk-sunflower{background-color:#f1c40f}.ssk-sunflower:hover{background-color:#c29d0b}.ssk-orange{background-color:#f39c12}.ssk-orange:hover{background-color:#c87f0a}.ssk-carrot{background-color:#e67e22}.ssk-carrot:hover{background-color:#bf6516}.ssk-pumpkin{background-color:#d35400}.ssk-pumpkin:hover{background-color:#a04000}.ssk-alizarin{background-color:#e74c3c}.ssk-alizarin:hover{background-color:#d62c1a}.ssk-pomegranate{background-color:#c0392b}.ssk-pomegranate:hover{background-color:#962d22}.ssk-clouds{background-color:#cfd9db}.ssk-clouds:hover{background-color:#b1c2c6}.ssk-concrete{background-color:#95a5a6}.ssk-concrete:hover{background-color:#798d8f}.ssk-silver{background-color:#bdc3c7}.ssk-silver:hover{background-color:#a1aab0}.ssk-asbestos{background-color:#7f8c8d}.ssk-asbestos:hover{background-color:#667273}.ssk-dark-gray{background-color:#555}.ssk-dark-gray:hover{background-color:#3b3b3b}.ssk-black{background-color:#333}.ssk-black:hover{background-color:#1a1a1a} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/sharing/socialsharekit/dist/fonts/social-share-kit.eot b/dashboard-ui/bower_components/emby-webcomponents/sharing/socialsharekit/dist/fonts/social-share-kit.eot deleted file mode 100644 index a9d69c604c..0000000000 Binary files a/dashboard-ui/bower_components/emby-webcomponents/sharing/socialsharekit/dist/fonts/social-share-kit.eot and /dev/null differ diff --git a/dashboard-ui/bower_components/emby-webcomponents/sharing/socialsharekit/dist/fonts/social-share-kit.svg b/dashboard-ui/bower_components/emby-webcomponents/sharing/socialsharekit/dist/fonts/social-share-kit.svg deleted file mode 100644 index a6ec16e060..0000000000 --- a/dashboard-ui/bower_components/emby-webcomponents/sharing/socialsharekit/dist/fonts/social-share-kit.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - -Generated by Fontastic.me - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/emby-webcomponents/sharing/socialsharekit/dist/fonts/social-share-kit.ttf b/dashboard-ui/bower_components/emby-webcomponents/sharing/socialsharekit/dist/fonts/social-share-kit.ttf deleted file mode 100644 index a6f4458738..0000000000 Binary files a/dashboard-ui/bower_components/emby-webcomponents/sharing/socialsharekit/dist/fonts/social-share-kit.ttf and /dev/null differ diff --git a/dashboard-ui/bower_components/emby-webcomponents/sharing/socialsharekit/dist/fonts/social-share-kit.woff b/dashboard-ui/bower_components/emby-webcomponents/sharing/socialsharekit/dist/fonts/social-share-kit.woff deleted file mode 100644 index f03624afd4..0000000000 Binary files a/dashboard-ui/bower_components/emby-webcomponents/sharing/socialsharekit/dist/fonts/social-share-kit.woff and /dev/null differ diff --git a/dashboard-ui/bower_components/emby-webcomponents/sharing/socialsharekit/dist/js/social-share-kit.min.js b/dashboard-ui/bower_components/emby-webcomponents/sharing/socialsharekit/dist/js/social-share-kit.min.js deleted file mode 100644 index 9d23f80f60..0000000000 --- a/dashboard-ui/bower_components/emby-webcomponents/sharing/socialsharekit/dist/js/social-share-kit.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/*! - * Social Share Kit v1.0.10 (http://socialsharekit.com) - * Copyright 2015 Social Share Kit / Kaspars Sprogis. - * @Licensed under Creative Commons Attribution-NonCommercial 3.0 license: - * https://github.com/darklow/social-share-kit/blob/master/LICENSE - * --- - */ -var SocialShareKit=function(){function e(e){return k(e).share()}function t(e){"loading"!=document.readyState?e():document.addEventListener?document.addEventListener("DOMContentLoaded",e):document.attachEvent("onreadystatechange",function(){"loading"!=document.readyState&&e()})}function n(e){return document.querySelectorAll(e)}function o(e,t){for(var n=0;n=200&&this.status<400&&t(this.responseText)},o.open("POST",e,!0),o.setRequestHeader("Content-Type","application/json"),o.send(n)}function g(e,t,n){var o="cb_"+e+"_"+Math.round(1e5*Math.random()),r=document.createElement("script");return window[o]=function(e){try{delete window[o]}catch(e){}document.body.removeChild(r),n(e)},"vk"==e?window.VK={Share:{count:function(e,t){window[o](t)}}}:"google-plus"==e&&(window.services={gplus:{cb:window[o]}}),r.src=t+(t.indexOf("?")>=0?"&":"?")+"callback="+o,document.body.appendChild(r),!0}var k,b,y=/(twitter|facebook|google-plus|pinterest|tumblr|vk|linkedin|email)/,C="*|*";return b=function(e){var t=e||{},o=t.selector||".ssk";this.nodes=n(o),this.options=t},b.prototype={share:function(){function e(e){var t,n=c(e),o=a(n),r=o[0];if(o&&(t=s(p,r,n))){if(window.twttr&&n.getAttribute("href").indexOf("twitter.com/intent/")!==-1)return void n.setAttribute("href",t);if("email"!=r){var i=u(t);if(p.onOpen&&p.onOpen(n,r,t,i),p.onClose)var d=window.setInterval(function(){i.closed!==!1&&(window.clearInterval(d),p.onClose(n,r,t,i))},250)}else document.location=t}}function n(){var e,t;for(e in h)t=e.split(C),function(e){w(t[0],t[1],p,function(t){for(var n in e)m(e[n],t)})}(h[e])}var l=this.nodes,p=this.options,h={};return t(function(){l.length&&(o(l,function(t){var n,o=a(t);o&&(i(t,"click",e),r(t,"click",e),t.parentNode.className.indexOf("ssk-count")!==-1&&(o=o[0],n=o+C+d(p,o,t),n in h||(h[n]=[]),h[n].push(t)))}),n())}),this.nodes}},k=function(e){return new b(e)},{init:e}}();window.SocialShareKit=SocialShareKit; diff --git a/dashboard-ui/bower_components/emby-webcomponents/shortcuts.js b/dashboard-ui/bower_components/emby-webcomponents/shortcuts.js index ee688c6200..fa49968900 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/shortcuts.js +++ b/dashboard-ui/bower_components/emby-webcomponents/shortcuts.js @@ -1 +1 @@ -define(["playbackManager","inputManager","connectionManager","appRouter","globalize","loading","dom","recordingHelper"],function(playbackManager,inputManager,connectionManager,appRouter,globalize,loading,dom,recordingHelper){"use strict";function playAllFromHere(card,serverId,queue){for(var startIndex,parent=card.parentNode,className=card.classList.length?"."+card.classList[0]:"",cards=parent.querySelectorAll(className+"[data-id]"),ids=[],foundCard=!1,i=0,length=cards.length;i=30?"halloween":id}function loadThemeResources(id){return lastSound=0,currentSound&&(currentSound.stop(),currentSound=null),backdrop.clear(),"halloween"===id?void(themeResources={themeSong:"https://github.com/MediaBrowser/Emby.Resources/raw/master/themes/halloween/monsterparadefade.mp3",effect:"https://github.com/MediaBrowser/Emby.Resources/raw/master/themes/halloween/howl.wav",backdrop:"https://github.com/MediaBrowser/Emby.Resources/raw/master/themes/halloween/bg.jpg"}):void(themeResources={})}function onViewBeforeShow(e){e.detail&&"video-osd"===e.detail.type||(themeResources.backdrop&&backdrop.setBackdrop(themeResources.backdrop),!browser.mobile&&userSettings.enableThemeSongs()&&(0===lastSound?themeResources.themeSong&&playSound(themeResources.themeSong):(new Date).getTime()-lastSound>3e4&&themeResources.effect&&playSound(themeResources.effect)))}function playSound(path,volume){lastSound=(new Date).getTime(),require(["howler"],function(howler){try{var sound=new Howl({src:[path],volume:volume||.1});sound.play(),currentSound=sound}catch(err){console.log("Error playing sound: "+err)}})}var currentSkin,cacheParam=(new Date).getTime();events.on(userSettings,"change",function(e,name){"skin"!==name&&"language"!==name||loadUserSkin()});var themeStyleElement,currentThemeId,currentSound,skinManager={getCurrentSkin:getCurrentSkin,loadSkin:loadSkin,loadUserSkin:loadUserSkin,getThemes:getThemes},themeResources={},lastSound=0;return skinManager.setTheme=function(id,context){return new Promise(function(resolve,reject){var requiresRegistration=!0;if("serverdashboard"!==context){var newId=modifyThemeForSeasonal(id);newId!==id&&(requiresRegistration=!1),id=newId}if(currentThemeId&¤tThemeId===id)return void resolve();var isDefaultProperty="serverdashboard"===context?"isDefaultServerDashboard":"isDefault",info=getThemeStylesheetInfo(id,requiresRegistration,isDefaultProperty);if(currentThemeId&¤tThemeId===info.themeId)return void resolve();var linkUrl=info.stylesheetPath;unloadTheme();var link=document.createElement("link");link.setAttribute("rel","stylesheet"),link.setAttribute("type","text/css"),link.onload=resolve,link.setAttribute("href",linkUrl),document.head.appendChild(link),themeStyleElement=link,currentThemeId=info.themeId,loadThemeResources(info.themeId),onViewBeforeShow({})})},document.addEventListener("viewshow",onViewBeforeShow),skinManager}); \ No newline at end of file +define(["apphost","userSettings","browser","events","pluginManager","backdrop","globalize","require","appSettings"],function(appHost,userSettings,browser,events,pluginManager,backdrop,globalize,require,appSettings){"use strict";function getCurrentSkin(){return currentSkin}function getRequirePromise(deps){return new Promise(function(resolve,reject){require(deps,resolve)})}function loadSkin(id){var newSkin=pluginManager.plugins().filter(function(p){return p.id===id})[0];newSkin||(newSkin=pluginManager.plugins().filter(function(p){return"defaultskin"===p.id})[0]);var unloadPromise;if(currentSkin){if(currentSkin.id===newSkin.id)return Promise.resolve(currentSkin);unloadPromise=unloadSkin(currentSkin)}else unloadPromise=Promise.resolve();return unloadPromise.then(function(){var deps=newSkin.getDependencies();return console.log("Loading skin dependencies"),getRequirePromise(deps).then(function(){console.log("Skin dependencies loaded");var strings=newSkin.getTranslations?newSkin.getTranslations():[];return globalize.loadStrings({name:newSkin.id,strings:strings}).then(function(){return globalize.defaultModule(newSkin.id),loadSkinHeader(newSkin)})})})}function unloadSkin(skin){return unloadTheme(),backdrop.clear(),console.log("Unloading skin: "+skin.name),skin.unload().then(function(){document.dispatchEvent(new CustomEvent("skinunload",{detail:{name:skin.name}}))})}function loadSkinHeader(skin){return getSkinHeader(skin).then(function(headerHtml){return document.querySelector(".skinHeader").innerHTML=headerHtml,currentSkin=skin,skin.load(),skin})}function getSkinHeader(skin){return new Promise(function(resolve,reject){if(!skin.getHeaderTemplate)return void resolve("");var xhr=new XMLHttpRequest,url=skin.getHeaderTemplate();url+=-1===url.indexOf("?")?"?":"&",url+="v="+cacheParam,xhr.open("GET",url,!0),xhr.onload=function(e){resolve(this.status<400?this.response:"")},xhr.send()})}function loadUserSkin(options){loadSkin(userSettings.get("skin",!1)||"defaultskin").then(function(skin){options=options||{},options.start?Emby.Page.invokeShortcut(options.start):Emby.Page.goHome()})}function unloadTheme(){var elem=themeStyleElement;elem&&(elem.parentNode.removeChild(elem),themeStyleElement=null,currentThemeId=null)}function getThemes(){return currentSkin.getThemes?currentSkin.getThemes():[]}function onRegistrationSuccess(){appSettings.set("appthemesregistered","true")}function onRegistrationFailure(){appSettings.set("appthemesregistered","false")}function isRegistered(){return getRequirePromise(["registrationServices"]).then(function(registrationServices){registrationServices.validateFeature("themes",{showDialog:!1}).then(onRegistrationSuccess,onRegistrationFailure)}),"false"!==appSettings.get("appthemesregistered")}function getThemeStylesheetInfo(id,requiresRegistration,isDefaultProperty){for(var defaultTheme,selectedTheme,themes=skinManager.getThemes(),i=0,length=themes.length;i=30?"halloween":id}function loadThemeResources(id){if(lastSound=0,currentSound&&(currentSound.stop(),currentSound=null),backdrop.clear(),"halloween"===id)return void(themeResources={themeSong:"https://github.com/MediaBrowser/Emby.Resources/raw/master/themes/halloween/monsterparadefade.mp3",effect:"https://github.com/MediaBrowser/Emby.Resources/raw/master/themes/halloween/howl.wav",backdrop:"https://github.com/MediaBrowser/Emby.Resources/raw/master/themes/halloween/bg.jpg"});themeResources={}}function onThemeLoaded(){document.documentElement.classList.remove("preload");try{var color=getComputedStyle(document.querySelector(".skinHeader")).getPropertyValue("background-color");color&&appHost.setThemeColor(color)}catch(err){console.log("Error setting theme color: "+err)}}function onViewBeforeShow(e){e.detail&&"video-osd"===e.detail.type||(themeResources.backdrop&&backdrop.setBackdrop(themeResources.backdrop),!browser.mobile&&userSettings.enableThemeSongs()&&(0===lastSound?themeResources.themeSong&&playSound(themeResources.themeSong):(new Date).getTime()-lastSound>3e4&&themeResources.effect&&playSound(themeResources.effect)))}function playSound(path,volume){lastSound=(new Date).getTime(),require(["howler"],function(howler){try{var sound=new Howl({src:[path],volume:volume||.1});sound.play(),currentSound=sound}catch(err){console.log("Error playing sound: "+err)}})}var currentSkin,cacheParam=(new Date).getTime();events.on(userSettings,"change",function(e,name){"skin"!==name&&"language"!==name||loadUserSkin()});var themeStyleElement,currentThemeId,currentSound,skinManager={getCurrentSkin:getCurrentSkin,loadSkin:loadSkin,loadUserSkin:loadUserSkin,getThemes:getThemes},themeResources={},lastSound=0;return skinManager.setTheme=function(id,context){return new Promise(function(resolve,reject){var requiresRegistration=!0;if("serverdashboard"!==context){var newId=modifyThemeForSeasonal(id);newId!==id&&(requiresRegistration=!1),id=newId}if(currentThemeId&¤tThemeId===id)return void resolve();var isDefaultProperty="serverdashboard"===context?"isDefaultServerDashboard":"isDefault",info=getThemeStylesheetInfo(id,requiresRegistration,isDefaultProperty);if(currentThemeId&¤tThemeId===info.themeId)return void resolve();var linkUrl=info.stylesheetPath;unloadTheme();var link=document.createElement("link");link.setAttribute("rel","stylesheet"),link.setAttribute("type","text/css"),link.onload=function(){onThemeLoaded(),resolve()},link.setAttribute("href",linkUrl),document.head.appendChild(link),themeStyleElement=link,currentThemeId=info.themeId,loadThemeResources(info.themeId),onViewBeforeShow({})})},document.addEventListener("viewshow",onViewBeforeShow),skinManager}); \ 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 ee7d63ea24..363eb0bc45 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(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 +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":"",'"}function setUserScalable(scalable){try{appHost.setUserScalable(scalable)}catch(err){console.log("error in appHost.setUserScalable: "+err)}}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 hide-mouse-idle-tv",!1),html+=getIcon("keyboard_arrow_right","btnSlideshowNext slideshowButton hide-mouse-idle-tv",!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 hide-mouse-idle-tv",!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)}setUserScalable(!0),dialogHelper.open(dlg).then(function(){setUserScalable(!1),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:!1!==options.loop,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(!1===options.loop&&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"),shareUrl:slide.getAttribute("data-imageurl"),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();navigator.share({url:imageInfo.shareUrl})}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(){"pause"!==dlg.querySelector(".btnSlideshowPause i").innerHTML?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"))};if(!elem.animate)return void onFinish();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})}}function slideDownToHide(elem){if(!elem.classList.contains("hide")){var onFinish=function(){elem.classList.add("hide"),_osdOpen=!1};if(!elem.animate)return void onFinish();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})}}function onPointerMove(e){if("mouse"===(e.pointerType||(layoutManager.mobile?"touch":"mouse"))){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":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,self=this;browser.chromecast&&(options.interactive=!1);var hideTimeout,lastMouseMoveData,_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/slideshow/style.css b/dashboard-ui/bower_components/emby-webcomponents/slideshow/style.css index 2149a418d6..2cdcab00de 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/slideshow/style.css +++ b/dashboard-ui/bower_components/emby-webcomponents/slideshow/style.css @@ -1 +1 @@ -.slideshowSwiperContainer,.swiper-slide,.swiper-wrapper{background:#000}.slideshowImage,.slideshowSwiperContainer{position:fixed;top:0;right:0;left:0;bottom:0;background-position:center center;-webkit-background-size:contain;background-size:contain;background-repeat:no-repeat;margin:0!important;color:#fff;line-height:normal}.slideshowImage-cover{-webkit-background-size:cover;background-size:cover}.slideshowImageText{position:fixed;bottom:.25em;right:.5em;color:#fff;z-index:1002;font-weight:400;text-shadow:3px 3px 0 #000,-1px -1px 0 #000,1px -1px 0 #000,-1px 1px 0 #000,1px 1px 0 #000}.swiper-slide-img{width:auto;height:auto;max-width:100%;max-height:100%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);position:absolute;left:50%;top:50%}.btnSlideshowNext,.btnSlideshowPrevious{top:45vh;z-index:1002;position:absolute}.slideshowButtonIcon{color:#fff;opacity:.7}.btnSlideshowPrevious{left:.5vh}.btnSlideshowNext{right:.5vh}.topActionButtons{right:.5vh;top:.5vh;z-index:1002;position:absolute}.slideshowBottomBar,.slideshowTopBar{position:fixed;background-color:rgba(0,0,0,.7);color:#fff;padding:.5%;-webkit-box-orient:horizontal;-webkit-box-direction:normal;left:0;right:0}.slideshowBottomBar{bottom:0;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-direction:row;flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.slideshowTopBar{top:0;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-direction:row;flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;align-items:center;text-align:right;-webkit-box-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.mouseIdle .btnSlideshowExit,.mouseIdle .btnSlideshowNext,.mouseIdle .btnSlideshowPrevious{display:none}.slideshowExtraButtons{margin-left:auto;text-align:right}.slideText{position:absolute;left:0;right:0;bottom:10vh;text-align:center}.slideTextInner{margin:0 auto;max-width:60%;background:rgba(0,0,0,.8);display:inline-block;padding:.5em 1em;-webkit-border-radius:.25em;border-radius:.25em}.slideTitle{margin:0 0 .25em}.slideSubtitle{color:#ccc} \ No newline at end of file +.slideshowDialog,.slideshowSwiperContainer,.swiper-slide,.swiper-wrapper{background:#000}.slideshowImage,.slideshowSwiperContainer{position:fixed;top:0;right:0;left:0;bottom:0;background-position:center center;-webkit-background-size:contain;background-size:contain;background-repeat:no-repeat;margin:0!important;color:#fff;line-height:normal}.slideshowImage-cover{-webkit-background-size:cover;background-size:cover}.slideshowImageText{position:fixed;bottom:.25em;right:.5em;color:#fff;z-index:1002;font-weight:400;text-shadow:3px 3px 0 #000,-1px -1px 0 #000,1px -1px 0 #000,-1px 1px 0 #000,1px 1px 0 #000}.swiper-slide-img{width:auto;height:auto;max-width:100%;max-height:100%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);position:absolute;left:50%;top:50%}.btnSlideshowNext,.btnSlideshowPrevious{top:45vh;z-index:1002;position:absolute}.slideshowButtonIcon{color:#fff;opacity:.7}.btnSlideshowPrevious{left:.5vh}.btnSlideshowNext{right:.5vh}.topActionButtons{right:.5vh;top:.5vh;z-index:1002;position:absolute}.slideshowBottomBar,.slideshowTopBar{position:fixed;background-color:rgba(0,0,0,.7);color:#fff;padding:.5%;-webkit-box-orient:horizontal;-webkit-box-direction:normal;left:0;right:0}.slideshowBottomBar{bottom:0;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-direction:row;flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.slideshowTopBar{top:0;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-direction:row;flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;align-items:center;text-align:right;-webkit-box-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.slideshowExtraButtons{margin-left:auto;text-align:right}.slideText{position:absolute;left:0;right:0;bottom:10vh;text-align:center}.slideTextInner{margin:0 auto;max-width:60%;background:rgba(0,0,0,.8);display:inline-block;padding:.5em 1em;-webkit-border-radius:.25em;border-radius:.25em}.slideTitle{margin:0 0 .25em}.slideSubtitle{color:#ccc} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/sortmenu/sortmenu.js b/dashboard-ui/bower_components/emby-webcomponents/sortmenu/sortmenu.js new file mode 100644 index 0000000000..edb77a7be2 --- /dev/null +++ b/dashboard-ui/bower_components/emby-webcomponents/sortmenu/sortmenu.js @@ -0,0 +1 @@ +define(["require","dom","focusManager","dialogHelper","loading","layoutManager","connectionManager","globalize","userSettings","emby-select","paper-icon-button-light","material-icons","css!./../formdialog","emby-button","emby-linkbutton","flexStyles"],function(require,dom,focusManager,dialogHelper,loading,layoutManager,connectionManager,globalize,userSettings){"use strict";function onSubmit(e){return e.preventDefault(),!1}function initEditor(context,settings){context.querySelector("form").addEventListener("submit",onSubmit),context.querySelector(".selectSortOrder").value=settings.sortOrder,context.querySelector(".selectSortBy").value=settings.sortBy}function centerFocus(elem,horiz,on){require(["scrollHelper"],function(scrollHelper){var fn=on?"on":"off";scrollHelper.centerFocus[fn](elem,horiz)})}function fillSortBy(context,options){context.querySelector(".selectSortBy").innerHTML=options.map(function(o){return'"}).join("")}function saveValues(context,settings,settingsKey){userSettings.setFilter(settingsKey+"-sortorder",context.querySelector(".selectSortOrder").value),userSettings.setFilter(settingsKey+"-sortby",context.querySelector(".selectSortBy").value)}function SortMenu(){}return SortMenu.prototype.show=function(options){return new Promise(function(resolve,reject){require(["text!./sortmenu.template.html"],function(template){var dialogOptions={removeOnClose:!0,scrollY:!1};layoutManager.tv?dialogOptions.size="fullscreen":dialogOptions.size="small";var dlg=dialogHelper.createDialog(dialogOptions);dlg.classList.add("formDialog");var html="";html+='
    ',html+='',html+='

    ${Sort}

    ',html+="
    ",html+=template,dlg.innerHTML=globalize.translateDocument(html,"sharedcomponents"),fillSortBy(dlg,options.sortOptions),initEditor(dlg,options.settings),dlg.querySelector(".btnCancel").addEventListener("click",function(){dialogHelper.close(dlg)}),layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!0);var submitted;dlg.querySelector("form").addEventListener("change",function(){submitted=!0},!0),dialogHelper.open(dlg).then(function(){if(layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!1),submitted)return saveValues(dlg,options.settings,options.settingsKey),void resolve();reject()})})})},SortMenu}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/sortmenu/sortmenu.template.html b/dashboard-ui/bower_components/emby-webcomponents/sortmenu/sortmenu.template.html new file mode 100644 index 0000000000..3f523c2959 --- /dev/null +++ b/dashboard-ui/bower_components/emby-webcomponents/sortmenu/sortmenu.template.html @@ -0,0 +1,22 @@ +
    +
    +
    + +
    + +
    + +
    + +
    + +
    +
    +
    +
    +
    \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/staticbackdrops.js b/dashboard-ui/bower_components/emby-webcomponents/staticbackdrops.js index 163606a44d..d7269beab9 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/staticbackdrops.js +++ b/dashboard-ui/bower_components/emby-webcomponents/staticbackdrops.js @@ -1 +1 @@ -define([],function(){"use strict";function getStaticBackdrops(){var list=[];return list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg1-1920.jpg",width:1920}]),list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg2-1920.jpg",width:1920}]),list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg3-1920.jpg",width:1920}]),list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg4-1920.jpg",width:1920}]),list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg5-1920.jpg",width:1920}]),list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg6-1920.jpg",width:1920}]),list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg7-1920.jpg",width:1920}]),list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg8-1920.jpg",width:1920}]),list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg9-1920.jpg",width:1920}]),list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg10-1920.jpg",width:1920}]),list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg11-1920.jpg",width:1920}]),list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg12-1920.jpg",width:1920}]),list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg13-1920.jpg",width:1920}]),list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg14-1920.jpg",width:1920}]),list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg15-1920.jpg",width:1920}]),list}function getRandomInt(min,max){return Math.floor(Math.random()*(max-min+1))+min}function getRandomImageUrl(){var images=getStaticBackdrops(),index=getRandomInt(0,images.length-1);return images[index][0].url}return{getStaticBackdrops:getStaticBackdrops,getRandomImageUrl:getRandomImageUrl}}); \ No newline at end of file +define([],function(){"use strict";function getStaticBackdrops(){var list=[];return list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg1-1920.jpg",width:1920}]),list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg2-1920.jpg",width:1920}]),list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg3-1920.jpg",width:1920}]),list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg4-1920.jpg",width:1920}]),list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg5-1920.jpg",width:1920}]),list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg6-1920.jpg",width:1920}]),list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg7-1920.jpg",width:1920}]),list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg8-1920.jpg",width:1920}]),list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg9-1920.jpg",width:1920}]),list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg10-1920.jpg",width:1920}]),list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg11-1920.jpg",width:1920}]),list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg12-1920.jpg",width:1920}]),list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg13-1920.jpg",width:1920}]),list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg14-1920.jpg",width:1920}]),list.push([{url:"https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/images/wallpaper/bg15-1920.jpg",width:1920}]),list}function getRandomInt(min,max){return Math.floor(Math.random()*(max-min+1))+min}function getRandomImageUrl(){var images=getStaticBackdrops();return images[getRandomInt(0,images.length-1)][0].url}return{getStaticBackdrops:getStaticBackdrops,getRandomImageUrl:getRandomImageUrl}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ar.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ar.json index 38def894f7..8be6d009da 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/ar.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ar.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", @@ -17,6 +19,7 @@ "EndsAtValue": "Ends at {0}", "HeaderSelectDate": "Select Date", "Watched": "Watched", + "AirDate": "Air date", "Played": "Played", "ButtonOk": "Ok", "ButtonCancel": "\u0627\u0644\u063a\u0627\u0621", @@ -28,6 +31,12 @@ "RecordingScheduled": "Recording scheduled.", "SeriesRecordingScheduled": "Series recording scheduled.", "HeaderNewRecording": "New Recording", + "WakeServer": "Wake server", + "HeaderWakeServer": "Wake Server", + "AttemptingWakeServer": "Attempting to wake server. Please wait...", + "WakeServerSuccess": "Success!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "\u0627\u0644\u0627\u062d\u062f", "Monday": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", "Tuesday": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", @@ -36,6 +45,13 @@ "Friday": "\u0627\u0644\u062c\u0645\u0639\u0629", "Saturday": "\u0627\u0644\u0633\u0628\u062a", "Days": "Days", + "SortByValue": "Sort by {0}", + "LabelSortBy": "Sort by:", + "LabelSortOrder": "Sort order:", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "Photos", + "HeaderAppearsOn": "Appears On", + "List": "List", "RecordSeries": "Record series", "HeaderCinemaMode": "Cinema Mode", "HeaderCloudSync": "Cloud Sync", @@ -138,7 +154,8 @@ "Shuffle": "Shuffle", "Identify": "Identify", "EditImages": "Edit images", - "EditInfo": "Edit info", + "EditMetadata": "Edit metadata", + "Convert": "Convert", "Sync": "Sync", "InstantMix": "Instant mix", "ViewAlbum": "View album", @@ -149,6 +166,7 @@ "ResumeAt": "Resume from {0}", "RemoveFromPlaylist": "Remove from playlist", "RemoveFromCollection": "Remove from collection", + "Sort": "Sort", "Trailer": "Trailer", "MarkPlayed": "Mark played", "MarkUnplayed": "Mark unplayed", @@ -157,7 +175,7 @@ "TryMultiSelect": "Try Multi-Select", "TryMultiSelectMessage": "To edit multiple media items, just click and hold any poster and select the items you want to manage. Try it!", "HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation", - "MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?", + "MessageConfirmRecordingCancellation": "Cancel recording?", "Error": "Error", "VoiceInput": "Voice Input", "LabelContentType": "Content type:", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "Original title:", "LabelSortTitle": "Sort title:", "LabelDateAdded": "Date added:", + "DateAdded": "Date added", + "DatePlayed": "Date played", "ConfigureDateAdded": "Configure how date added is determined in the Emby Server dashboard under Library settings", "LabelStatus": "Status:", "LabelArtists": "Artists:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "Artists": "Artists", + "ImdbRating": "IMDb rating", + "CommunityRating": "Community rating", "LabelCommunityRating": "Community rating:", "LabelCriticRating": "Critic rating:", + "CriticRating": "Critic rating", "LabelWebsite": "Website:", "LabelTagline": "Tagline:", "LabelOverview": "Overview:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Release date:", "LabelYear": "Year:", "LabelPlaceOfBirth": "Place of birth:", + "Aired": "Aired", "LabelAirDays": "Air days:", "LabelAirTime": "Air time:", "LabelRuntimeMinutes": "Run time (minutes):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Original aspect ratio:", "Label3DFormat": "3D format:", "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Perfect match", "EnableExternalVideoPlayers": "Enable external video players", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Alternate Episode Numbers", - "LabelDvdSeasonNumber": "Dvd season number:", - "LabelDvdEpisodeNumber": "Dvd episode number:", - "LabelAbsoluteEpisodeNumber": "Absolute episode number:", "HeaderSpecialEpisodeInfo": "Special Episode Info", "LabelAirsBeforeSeason": "Airs before season:", "LabelAirsAfterSeason": "Airs after season:", @@ -234,13 +254,14 @@ "Continuing": "Continuing", "Ended": "Ended", "HeaderEnabledFields": "Enabled Fields", - "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent it's data from being changed.", + "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent its data from being changed.", "Backdrops": "Backdrops", "Images": "Images", "Runtime": "Runtime", "ProductionLocations": "Production locations", "BirthLocation": "Birth location", "ParentalRating": "Parental Rating", + "PlayCount": "Play count", "Name": "Name", "Overview": "Overview", "LabelType": "Type:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "Deleting these items will delete them from both the file system and your media library. Are you sure you wish to continue?", "PleaseRestartServerName": "Please restart Emby Server - {0}.", "LabelSyncJobName": "Sync job name:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "Quality:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", "DownloadingDots": "Downloading...", @@ -297,12 +319,17 @@ "LearnMore": "Learn more", "LabelProfile": "Profile:", "LabelBitrateMbps": "Bitrate (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "Download unwatched videos only", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", "AutomaticallySyncNewContent": "Automatically download new content", "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "Item limit:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "Please select a device to download to.", "Screenshots": "Screenshots", "MoveRight": "Move right", @@ -428,6 +455,7 @@ "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", "LabelSyncTo": "Sync to:", + "LabelConvertTo": "Convert to:", "Next": "Next", "LabelSource": "Source:", "LabelVersion": "Version:", @@ -441,10 +469,10 @@ "More": "More", "Up": "Up", "Down": "Down", + "Home": "Home", + "Favorites": "Favorites", "HeaderHomeScreen": "Home Screen", - "HeaderHomeScreenContent": "Home Screen Content", "HeaderLatestChannelItems": "Latest Channel Items", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "Library Order", "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", "HeaderOnNow": "On Now", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.", "Guide": "Guide", "Suggestions": "Suggestions", - "Favorites": "Favorites", + "HeaderFavoriteCollections": "Favorite Collections", + "HeaderFavoritePlaylists": "Favorite Playlists", "Collections": "Collections", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", "Shows": "Shows", "HeaderLibraryFolders": "Library Folders", - "HeaderLandingScreens": "Landing Screens", - "LandingScreensHelp": "Select the default landing screen when clicking on a library.", "HeaderTermsOfPurchase": "Terms of Purchase", "PrivacyPolicy": "Privacy policy", "TermsOfUse": "Terms of use", "RepeatMode": "Repeat mode", "RepeatOne": "Repeat one", "RepeatAll": "Repeat all", - "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", + "LabelDefaultScreen": "Default screen:", + "ConfirmEndPlayerSession": "Would you like to shutdown Emby on {0}?", "Yes": "Yes", "No": "No", "LiveTV": "Live TV", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video codec not supported", "AudioCodecNotSupported": "Audio codec not supported", "SubtitleCodecNotSupported": "Subtitle format not supported", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Container not supported", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "No subtitles", "Default": "Default", + "Absolute": "Absolute", "Smart": "Smart", "Small": "Small", + "Smaller": "Smaller", "Medium": "Medium", "Large": "Large", "ExtraLarge": "Extra large", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Stop recording", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Manage recording", "LabelDropImageHere": "Drop image here, or click to browse.", "MessageFileReadError": "There was an error reading the file. Please try again.", @@ -633,5 +668,22 @@ "Trailers": "Trailers", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteVideos": "Favorite Videos", + "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteSongs": "Favorite Songs", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Color space", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/be-by.json b/dashboard-ui/bower_components/emby-webcomponents/strings/be-by.json index bec491b66f..b775d9a047 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/be-by.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/be-by.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", @@ -17,6 +19,7 @@ "EndsAtValue": "Ends at {0}", "HeaderSelectDate": "Select Date", "Watched": "Watched", + "AirDate": "Air date", "Played": "Played", "ButtonOk": "Ok", "ButtonCancel": "\u0410\u0434\u043c\u044f\u043d\u0456\u0446\u044c", @@ -28,6 +31,12 @@ "RecordingScheduled": "Recording scheduled.", "SeriesRecordingScheduled": "Series recording scheduled.", "HeaderNewRecording": "New Recording", + "WakeServer": "Wake server", + "HeaderWakeServer": "Wake Server", + "AttemptingWakeServer": "Attempting to wake server. Please wait...", + "WakeServerSuccess": "Success!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "Sunday", "Monday": "Monday", "Tuesday": "Tuesday", @@ -36,6 +45,13 @@ "Friday": "Friday", "Saturday": "Saturday", "Days": "Days", + "SortByValue": "Sort by {0}", + "LabelSortBy": "Sort by:", + "LabelSortOrder": "Sort order:", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "Photos", + "HeaderAppearsOn": "Appears On", + "List": "List", "RecordSeries": "Record series", "HeaderCinemaMode": "Cinema Mode", "HeaderCloudSync": "Cloud Sync", @@ -138,7 +154,8 @@ "Shuffle": "Shuffle", "Identify": "Identify", "EditImages": "Edit images", - "EditInfo": "Edit info", + "EditMetadata": "Edit metadata", + "Convert": "Convert", "Sync": "Sync", "InstantMix": "Instant mix", "ViewAlbum": "View album", @@ -149,6 +166,7 @@ "ResumeAt": "Resume from {0}", "RemoveFromPlaylist": "Remove from playlist", "RemoveFromCollection": "Remove from collection", + "Sort": "Sort", "Trailer": "Trailer", "MarkPlayed": "Mark played", "MarkUnplayed": "Mark unplayed", @@ -157,7 +175,7 @@ "TryMultiSelect": "Try Multi-Select", "TryMultiSelectMessage": "To edit multiple media items, just click and hold any poster and select the items you want to manage. Try it!", "HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation", - "MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?", + "MessageConfirmRecordingCancellation": "Cancel recording?", "Error": "Error", "VoiceInput": "Voice Input", "LabelContentType": "Content type:", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "Original title:", "LabelSortTitle": "Sort title:", "LabelDateAdded": "Date added:", + "DateAdded": "Date added", + "DatePlayed": "Date played", "ConfigureDateAdded": "Configure how date added is determined in the Emby Server dashboard under Library settings", "LabelStatus": "Status:", "LabelArtists": "Artists:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "Artists": "Artists", + "ImdbRating": "IMDb rating", + "CommunityRating": "Community rating", "LabelCommunityRating": "Community rating:", "LabelCriticRating": "Critic rating:", + "CriticRating": "Critic rating", "LabelWebsite": "Website:", "LabelTagline": "Tagline:", "LabelOverview": "Overview:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Release date:", "LabelYear": "Year:", "LabelPlaceOfBirth": "Place of birth:", + "Aired": "Aired", "LabelAirDays": "Air days:", "LabelAirTime": "Air time:", "LabelRuntimeMinutes": "Run time (minutes):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Original aspect ratio:", "Label3DFormat": "3D format:", "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Perfect match", "EnableExternalVideoPlayers": "Enable external video players", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Alternate Episode Numbers", - "LabelDvdSeasonNumber": "Dvd season number:", - "LabelDvdEpisodeNumber": "Dvd episode number:", - "LabelAbsoluteEpisodeNumber": "Absolute episode number:", "HeaderSpecialEpisodeInfo": "Special Episode Info", "LabelAirsBeforeSeason": "Airs before season:", "LabelAirsAfterSeason": "Airs after season:", @@ -234,13 +254,14 @@ "Continuing": "Continuing", "Ended": "Ended", "HeaderEnabledFields": "Enabled Fields", - "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent it's data from being changed.", + "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent its data from being changed.", "Backdrops": "Backdrops", "Images": "Images", "Runtime": "Runtime", "ProductionLocations": "Production locations", "BirthLocation": "Birth location", "ParentalRating": "Parental rating", + "PlayCount": "Play count", "Name": "Name", "Overview": "Overview", "LabelType": "Type:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "Deleting these items will delete them from both the file system and your media library. Are you sure you wish to continue?", "PleaseRestartServerName": "Please restart Emby Server - {0}.", "LabelSyncJobName": "Sync job name:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "Quality:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", "DownloadingDots": "Downloading...", @@ -297,12 +319,17 @@ "LearnMore": "Learn more", "LabelProfile": "Profile:", "LabelBitrateMbps": "Bitrate (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "Download unwatched videos only", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", "AutomaticallySyncNewContent": "Automatically download new content", "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "Item limit:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "Please select a device to download to.", "Screenshots": "Screenshots", "MoveRight": "Move right", @@ -428,6 +455,7 @@ "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", "LabelSyncTo": "Sync to:", + "LabelConvertTo": "Convert to:", "Next": "Next", "LabelSource": "Source:", "LabelVersion": "Version:", @@ -441,10 +469,10 @@ "More": "More", "Up": "Up", "Down": "Down", + "Home": "Home", + "Favorites": "Favorites", "HeaderHomeScreen": "Home Screen", - "HeaderHomeScreenContent": "Home Screen Content", "HeaderLatestChannelItems": "Latest Channel Items", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "Library Order", "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", "HeaderOnNow": "On Now", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.", "Guide": "Guide", "Suggestions": "Suggestions", - "Favorites": "Favorites", + "HeaderFavoriteCollections": "Favorite Collections", + "HeaderFavoritePlaylists": "Favorite Playlists", "Collections": "Collections", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", "Shows": "Shows", "HeaderLibraryFolders": "Library Folders", - "HeaderLandingScreens": "Landing Screens", - "LandingScreensHelp": "Select the default landing screen when clicking on a library.", "HeaderTermsOfPurchase": "Terms of Purchase", "PrivacyPolicy": "Privacy policy", "TermsOfUse": "Terms of use", "RepeatMode": "Repeat mode", "RepeatOne": "Repeat one", "RepeatAll": "Repeat all", - "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", + "LabelDefaultScreen": "Default screen:", + "ConfirmEndPlayerSession": "Would you like to shutdown Emby on {0}?", "Yes": "Yes", "No": "No", "LiveTV": "Live TV", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video codec not supported", "AudioCodecNotSupported": "Audio codec not supported", "SubtitleCodecNotSupported": "Subtitle format not supported", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Container not supported", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "No subtitles", "Default": "Default", + "Absolute": "Absolute", "Smart": "Smart", "Small": "Small", + "Smaller": "Smaller", "Medium": "Medium", "Large": "Large", "ExtraLarge": "Extra large", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Stop recording", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Manage recording", "LabelDropImageHere": "Drop image here, or click to browse.", "MessageFileReadError": "There was an error reading the file. Please try again.", @@ -633,5 +668,22 @@ "Trailers": "Trailers", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteVideos": "Favorite Videos", + "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteSongs": "Favorite Songs", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Color space", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/bg-bg.json b/dashboard-ui/bower_components/emby-webcomponents/strings/bg-bg.json index 73087b09d4..b4d44de4ae 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/bg-bg.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/bg-bg.json @@ -1,33 +1,42 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", - "ValueSpecialEpisodeName": "Special - {0}", + "ValueSpecialEpisodeName": "\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u043d\u0438 - {0}", "Share": "\u0421\u043f\u043e\u0434\u0435\u043b\u044f\u043d\u0435", "Add": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435", - "ServerUpdateNeeded": "This Emby Server needs to be updated. To download the latest version, please visit {0}", + "ServerUpdateNeeded": "\u0421\u044a\u0440\u0432\u044a\u0440\u044a\u0442 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0431\u044a\u0434\u0435 \u043e\u0431\u043d\u043e\u0432\u0435\u043d. \u041c\u043e\u043b\u044f, \u043f\u043e\u0441\u0435\u0442\u0435\u0442\u0435 {0}, \u0437\u0430 \u0434\u0430 \u0441\u0432\u0430\u043b\u0438\u0442\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0430\u0442\u0430 \u0432\u0435\u0440\u0441\u0438\u044f.", "LiveTvRequiresUnlock": "\u0422\u0435\u043b\u0435\u0432\u0438\u0437\u0438\u044f\u0442\u0430 \u043d\u0430 \u0436\u0438\u0432\u043e \u0438\u0437\u0438\u0441\u043a\u0432\u0430 \u0430\u043a\u0442\u0438\u0432\u0435\u043d \u0430\u0431\u043e\u043d\u0430\u043c\u0435\u043d\u0442 \u0437\u0430 \u043f\u0440\u0435\u043c\u0438\u0435\u0440\u043d\u043e\u0442\u043e \u0438\u0437\u0434\u0430\u043d\u0438\u0435.", - "AttributeNew": "New", + "AttributeNew": "\u041d\u043e\u0432\u0438", "Premiere": "\u041f\u0440\u0435\u043c\u0438\u0435\u0440\u0430", "Live": "\u041d\u0430 \u0436\u0438\u0432\u043e", "Repeat": "\u041f\u043e\u0432\u0442\u0430\u0440\u044f\u043d\u0435", "TrackCount": "{0} \u043f\u0435\u0441\u043d\u0438", "ItemCount": "{0} items", "OriginalAirDateValue": "\u0414\u0430\u0442\u0430 \u043d\u0430 \u043f\u044a\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u043d\u043e \u0438\u0437\u043b\u044a\u0447\u0432\u0430\u043d\u0435: {0}", - "EndsAtValue": "Ends at {0}", + "EndsAtValue": "\u0421\u0432\u044a\u0440\u0448\u0432\u0430 \u043d\u0430 {0}", "HeaderSelectDate": "\u0418\u0437\u0431\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0434\u0430\u0442\u0430", "Watched": "\u0418\u0437\u0433\u043b\u0435\u0434\u0430\u043d\u043e", + "AirDate": "\u0414\u0430\u0442\u0430 \u043d\u0430 \u0438\u0437\u043b\u044a\u0447\u0432\u0430\u043d\u0435", "Played": "\u041f\u0443\u0441\u043a\u0430\u043d\u043e", "ButtonOk": "\u0414\u043e\u0431\u0440\u0435", "ButtonCancel": "\u041e\u0442\u043c\u044f\u043d\u0430", "AccessRestrictedTryAgainLater": "Access is currently restricted. Please try again later.", - "ButtonGotIt": "\u0420\u0430\u0437\u0431\u0440\u0430\u0445", + "ButtonGotIt": "\u0414\u043e\u0431\u0440\u0435", "ButtonRestart": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u043f\u0443\u0441\u043a\u0430\u043d\u0435", "RecordingCancelled": "\u0417\u0430\u043f\u0438\u0441\u0432\u0430\u043d\u0435\u0442\u043e \u0435 \u043e\u0442\u043a\u0430\u0437\u0430\u043d\u043e.", "SeriesCancelled": "Series cancelled.", "RecordingScheduled": "Recording scheduled.", "SeriesRecordingScheduled": "Series recording scheduled.", "HeaderNewRecording": "\u041d\u043e\u0432 \u0437\u0430\u043f\u0438\u0441", + "WakeServer": "\u0421\u044a\u0431\u0443\u0436\u0434\u0430\u043d\u0435", + "HeaderWakeServer": "Wake Server", + "AttemptingWakeServer": "Attempting to wake server. Please wait...", + "WakeServerSuccess": "Success!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "\u041d\u0435\u0434\u0435\u043b\u044f", "Monday": "\u041f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a", "Tuesday": "\u0412\u0442\u043e\u0440\u043d\u0438\u043a", @@ -36,9 +45,16 @@ "Friday": "\u041f\u0435\u0442\u044a\u043a", "Saturday": "\u0421\u044a\u0431\u043e\u0442\u0430", "Days": "\u0414\u043d\u0438", + "SortByValue": "\u041f\u043e\u0434\u0440\u0435\u0436\u0434\u0430\u043d\u0435 \u043f\u043e {0}", + "LabelSortBy": "\u041f\u043e\u0434\u0440\u0435\u0436\u0434\u0430\u043d\u0435 \u043f\u043e:", + "LabelSortOrder": "\u0420\u0435\u0434 \u043d\u0430 \u043f\u043e\u0434\u0440\u0435\u0436\u0434\u0430\u043d\u0435", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "\u0421\u043d\u0438\u043c\u043a\u0438", + "HeaderAppearsOn": "Appears On", + "List": "\u0421\u043f\u0438\u0441\u044a\u043a", "RecordSeries": "Record series", "HeaderCinemaMode": "\u0420\u0435\u0436\u0438\u043c \"\u041a\u0438\u043d\u043e\u0441\u0430\u043b\u043e\u043d\"", - "HeaderCloudSync": "Cloud Sync", + "HeaderCloudSync": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0430\u043d\u0435 \u0432 \u043e\u0431\u043b\u0430\u043a\u0430", "Downloads": "\u0418\u0437\u0442\u0435\u0433\u043b\u044f\u043d\u0438\u044f", "HeaderMyDownloads": "\u041c\u043e\u0438\u0442\u0435 \u0438\u0437\u0442\u0435\u0433\u043b\u044f\u043d\u0438\u044f", "HeaderOfflineDownloads": "Offline Media", @@ -72,20 +88,20 @@ "NewCollection": "\u041d\u043e\u0432\u0430 \u043a\u043e\u043b\u0435\u043a\u0446\u0438\u044f", "LabelCollection": "\u041a\u043e\u043b\u0435\u043a\u0446\u0438\u044f:", "Help": "\u041f\u043e\u043c\u043e\u0449", - "LabelDisplayMode": "Display mode:", - "Desktop": "Desktop", - "Mobile": "Mobile \/ Tablet", - "TV": "TV", + "LabelDisplayMode": "\u0420\u0435\u0436\u0438\u043c \u043d\u0430 \u043f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435:", + "Desktop": "\u0420\u0430\u0431\u043e\u0442\u0435\u043d \u043f\u043b\u043e\u0442", + "Mobile": "\u041c\u043e\u0431\u0438\u043b\u043d\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e", + "TV": "\u0422\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440", "DisplayModeHelp": "Select the type of screen you're running Emby on.", - "LabelDisplayLanguage": "Display language:", - "LabelDisplayLanguageHelp": "Translating Emby is an ongoing project.", + "LabelDisplayLanguage": "\u0415\u0437\u0438\u043a \u043d\u0430 \u043f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435:", + "LabelDisplayLanguageHelp": "\u041f\u0440\u0435\u0432\u0435\u0436\u0434\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0415\u043c\u0431\u0438 \u0435 \u0442\u0435\u043a\u0443\u0449 \u043f\u0440\u043e\u0435\u043a\u0442.", "LearnHowYouCanContribute": "Learn how you can contribute.", "NewCollectionHelp": "Collections allow you to create personalized groupings of movies and other library content.", "SearchForCollectionInternetMetadata": "\u0422\u044a\u0440\u0441\u0435\u043d\u0435 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0437\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u0438 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u0438", "DisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", "DisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", - "EnableThemeSongs": "Enable theme songs", - "EnableBackdrops": "Enable backdrops", + "EnableThemeSongs": "\u0422\u0435\u043c\u0430\u0442\u0438\u0447\u043d\u0438 \u043f\u0435\u0441\u043d\u0438", + "EnableBackdrops": "\u0424\u043e\u043d\u043e\u0432\u0435", "EnableThemeSongsHelp": "If enabled, theme songs will be played in the background while browsing the library.", "EnableBackdropsHelp": "If enabled, backdrops will be displayed in the background of some pages while browsing the library.", "EnableThemeVideos": "Enable theme videos", @@ -102,8 +118,8 @@ "AddToPlaylist": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043a\u044a\u043c \u0441\u043f\u0438\u0441\u044a\u043a", "HeaderAddToPlaylist": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043a\u044a\u043c \u0441\u043f\u0438\u0441\u044a\u043a", "Subtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u0438", - "LabelTheme": "Theme:", - "LabelDashboardTheme": "Server dashboard theme:", + "LabelTheme": "\u041e\u0431\u043b\u0438\u043a:", + "LabelDashboardTheme": "\u041e\u0431\u043b\u0438\u043a \u043d\u0430 \u0441\u044a\u0440\u0432\u044a\u0440\u043d\u043e\u0442\u043e \u0442\u0430\u0431\u043b\u043e:", "SearchForSubtitles": "\u0422\u044a\u0440\u0441\u0435\u043d\u0435 \u043d\u0430 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438", "LabelLanguage": "\u0415\u0437\u0438\u043a:", "Search": "\u0422\u044a\u0440\u0441\u0435\u043d\u0435", @@ -118,19 +134,19 @@ "RefreshMetadata": "\u041e\u043f\u0440\u0435\u0441\u043d\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u0438\u0442\u0435", "ReplaceExistingImages": "Replace existing images", "ReplaceAllMetadata": "Replace all metadata", - "SearchForMissingMetadata": "Search for missing metadata", + "SearchForMissingMetadata": "\u0422\u044a\u0440\u0441\u0435\u043d\u0435 \u0437\u0430 \u043b\u0438\u0441\u0432\u0430\u0449\u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u0438", "LabelRefreshMode": "Refresh mode:", "NoItemsFound": "No items found.", "HeaderSaySomethingLike": "Say Something Like...", - "ButtonTryAgain": "Try Again", + "ButtonTryAgain": "\u041e\u043f\u0438\u0442\u0430\u0439\u0442\u0435 \u043e\u0442\u043d\u043e\u0432\u043e", "HeaderYouSaid": "You Said...", "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", - "ValueDiscNumber": "Disc {0}", + "ValueDiscNumber": "\u0414\u0438\u0441\u043a {0}", "Unrated": "Unrated", "Favorite": "\u0412 \u043b\u044e\u0431\u0438\u043c\u0438", - "Like": "Like", - "Dislike": "Dislike", + "Like": "\u0425\u0430\u0440\u0435\u0441\u0432\u0430\u043d\u0435", + "Dislike": "\u041d\u0435\u0445\u0430\u0440\u0435\u0441\u0432\u0430\u043d\u0435", "RefreshDialogHelp": "Metadata is refreshed based on settings and internet services that are enabled in the Emby Server dashboard.", "Open": "\u041e\u0442\u0432\u0430\u0440\u044f\u043d\u0435", "Play": "\u041f\u0443\u0441\u043a\u0430\u043d\u0435", @@ -138,7 +154,8 @@ "Shuffle": "\u041f\u0443\u0441\u043a\u0430\u043d\u0435 \u0432 \u0440\u0430\u0437\u0431\u044a\u0440\u043a\u0430\u043d \u0440\u0435\u0434", "Identify": "\u0420\u0430\u0437\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0435", "EditImages": "\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0442\u0430", - "EditInfo": "\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0434\u0430\u043d\u043d\u0438\u0442\u0435", + "EditMetadata": "\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u0438\u0442\u0435", + "Convert": "\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0432\u0430\u043d\u0435", "Sync": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0430\u043d\u0435", "InstantMix": "\u041f\u0443\u0441\u043a\u0430\u043d\u0435 \u043d\u0430 \u043f\u043e\u0434\u043e\u0431\u043d\u0438", "ViewAlbum": "\u041f\u0440\u0435\u0433\u043b\u0435\u0434 \u043d\u0430 \u0430\u043b\u0431\u0443\u043c\u0430", @@ -148,7 +165,8 @@ "PlayFromBeginning": "Play from beginning", "ResumeAt": "\u041f\u0440\u043e\u0434\u044a\u043b\u0436\u0430\u0432\u0430\u043d\u0435 \u043e\u0442 {0}", "RemoveFromPlaylist": "\u041f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u043d\u0435 \u043e\u0442 \u0441\u043f\u0438\u0441\u044a\u043a\u0430", - "RemoveFromCollection": "Remove from collection", + "RemoveFromCollection": "\u041f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u043d\u0435 \u043e\u0442 \u043a\u043e\u043b\u0435\u043a\u0446\u0438\u044f\u0442\u0430", + "Sort": "\u041f\u043e\u0434\u0440\u0435\u0436\u0434\u0430\u043d\u0435", "Trailer": "\u0422\u0440\u0435\u0439\u043b\u044a\u0440", "MarkPlayed": "\u041e\u0442\u0431\u0435\u043b\u044f\u0437\u0432\u0430\u043d\u0435 \u043a\u0430\u0442\u043e \u043f\u0443\u0441\u043a\u0430\u043d\u043e", "MarkUnplayed": "\u041e\u0442\u0431\u0435\u043b\u044f\u0437\u0432\u0430\u043d\u0435 \u043a\u0430\u0442\u043e \u043d\u0435\u043f\u0443\u0441\u043a\u0430\u043d\u043e", @@ -157,57 +175,59 @@ "TryMultiSelect": "Try Multi-Select", "TryMultiSelectMessage": "To edit multiple media items, just click and hold any poster and select the items you want to manage. Try it!", "HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation", - "MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?", + "MessageConfirmRecordingCancellation": "Cancel recording?", "Error": "\u0413\u0440\u0435\u0448\u043a\u0430", "VoiceInput": "Voice Input", "LabelContentType": "\u0422\u0438\u043f \u043d\u0430 \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435\u0442\u043e:", "LabelPath": "\u041f\u044a\u0442:", - "Playlists": "Playlists", + "Playlists": "\u0421\u043f\u0438\u0441\u044a\u0446\u0438", "LabelTitle": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435:", "LabelOriginalTitle": "\u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u043d\u043e \u0437\u0430\u0433\u043b\u0430\u0432\u0438\u0435:", "LabelSortTitle": "Sort title:", "LabelDateAdded": "\u0414\u0430\u0442\u0430 \u043d\u0430 \u0434\u043e\u0431\u0430\u0432\u044f\u043d\u0435:", + "DateAdded": "\u0414\u0430\u0442\u0430 \u043d\u0430 \u0434\u043e\u0431\u0430\u0432\u044f\u043d\u0435", + "DatePlayed": "\u0414\u0430\u0442\u0430 \u043d\u0430 \u043f\u0443\u0441\u043a\u0430\u043d\u0435", "ConfigureDateAdded": "Configure how date added is determined in the Emby Server dashboard under Library settings", "LabelStatus": "\u0421\u044a\u0441\u0442\u043e\u044f\u043d\u0438\u0435:", "LabelArtists": "\u0418\u0437\u043f\u044a\u043b\u043d\u0438\u0442\u0435\u043b\u0438:", "LabelArtistsHelp": "\u041e\u0442\u0434\u0435\u043b\u0435\u0442\u0435 \u043d\u044f\u043a\u043e\u043b\u043a\u043e \u0441 ;", - "HeaderAlbumArtists": "Album Artists", + "HeaderAlbumArtists": "\u0418\u0437\u043f\u044a\u043b\u043d\u0438\u0442\u0435\u043b\u0438 \u043d\u0430 \u0430\u043b\u0431\u0443\u043c\u0438", "LabelAlbumArtists": "\u0418\u0437\u043f\u044a\u043b\u043d\u0438\u0442\u0435\u043b\u0438 \u043d\u0430 \u0430\u043b\u0431\u0443\u043c\u0430:", "LabelAlbum": "\u0410\u043b\u0431\u0443\u043c:", "Artists": "\u0418\u0437\u043f\u044a\u043b\u043d\u0438\u0442\u0435\u043b\u0438", + "ImdbRating": "\u041e\u0446\u0435\u043d\u043a\u0430 \u0432 IMDb", + "CommunityRating": "\u041e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u0430 \u043e\u0449\u0435\u043d\u043a\u0430", "LabelCommunityRating": "\u041e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u0430 \u043e\u0446\u0435\u043d\u043a\u0430", - "LabelCriticRating": "Critic rating:", + "LabelCriticRating": "\u041e\u0446\u0435\u043d\u043a\u0430 \u043d\u0430 \u043a\u0440\u0438\u0442\u0438\u0446\u0438\u0442\u0435:", + "CriticRating": "\u041e\u0446\u0435\u043d\u043a\u0430 \u043d\u0430 \u043a\u0440\u0438\u0442\u0438\u0446\u0438\u0442\u0435", "LabelWebsite": "\u0421\u0430\u0439\u0442:", "LabelTagline": "Tagline:", - "LabelOverview": "Overview:", - "LabelShortOverview": "Short overview:", + "LabelOverview": "\u041e\u0431\u043e\u0431\u0449\u0435\u043d\u0438\u0435:", + "LabelShortOverview": "\u041a\u0440\u0430\u0442\u043a\u043e \u043e\u0431\u043e\u0431\u0449\u0435\u043d\u0438\u0435:", "LabelReleaseDate": "\u0414\u0430\u0442\u0430 \u043d\u0430 \u0438\u0437\u0434\u0430\u0432\u0430\u043d\u0435:", "LabelYear": "\u0413\u043e\u0434\u0438\u043d\u0430:", - "LabelPlaceOfBirth": "Place of birth:", - "LabelAirDays": "Air days:", - "LabelAirTime": "Air time:", + "LabelPlaceOfBirth": "\u0420\u043e\u0436\u0434\u0435\u043d\u043e \u043c\u044f\u0441\u0442\u043e:", + "Aired": "\u0418\u0437\u043b\u044a\u0447\u0435\u043d\u043e", + "LabelAirDays": "\u0414\u043d\u0438 \u043d\u0430 \u0438\u0437\u043b\u044a\u0447\u0432\u0430\u043d\u0435:", + "LabelAirTime": "\u0427\u0430\u0441 \u043d\u0430 \u0438\u0437\u043b\u044a\u0447\u0432\u0430\u043d\u0435:", "LabelRuntimeMinutes": "Run time (minutes):", "LabelParentalRating": "\u0420\u043e\u0434\u0438\u0442\u0435\u043b\u0441\u043a\u0430 \u043e\u0446\u0435\u043d\u043a\u0430:", - "LabelCustomRating": "Custom rating:", + "LabelCustomRating": "\u041e\u0446\u0435\u043d\u043a\u0430 \u043f\u043e \u0438\u0437\u0431\u043e\u0440:", "LabelOriginalAspectRatio": "\u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u043d\u043e \u0441\u044a\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435:", - "Label3DFormat": "3D format:", - "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", + "Label3DFormat": "\u0422\u0440\u0438\u0438\u0437\u043c\u0435\u0440\u0435\u043d \u0444\u043e\u0440\u043c\u0430\u0442:", + "FormatValue": "\u0424\u043e\u0440\u043c\u0430\u0442: {0}", + "DownloadsValue": "{0} \u0438\u0437\u0442\u0435\u0433\u043b\u044f\u043d\u0438\u044f", "PerfectMatch": "Perfect match", "EnableExternalVideoPlayers": "Enable external video players", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Alternate Episode Numbers", - "LabelDvdSeasonNumber": "Dvd season number:", - "LabelDvdEpisodeNumber": "Dvd episode number:", - "LabelAbsoluteEpisodeNumber": "Absolute episode number:", "HeaderSpecialEpisodeInfo": "Special Episode Info", "LabelAirsBeforeSeason": "Airs before season:", "LabelAirsAfterSeason": "Airs after season:", "LabelAirsBeforeEpisode": "Airs before episode:", "HeaderExternalIds": "External Ids:", - "HeaderDisplaySettings": "Display Settings", + "HeaderDisplaySettings": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u043f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435", "LabelDisplayOrder": "\u0420\u0435\u0434 \u043d\u0430 \u043f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435:", - "Display": "\u0415\u043a\u0440\u0430\u043d", + "Display": "\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435", "Countries": "\u0414\u044a\u0440\u0436\u0430\u0432\u0438", "Genres": "\u0416\u0430\u043d\u0440\u043e\u0432\u0435", "Studios": "\u0421\u0442\u0443\u0434\u0438\u0430", @@ -223,57 +243,58 @@ "LabelBirthDate": "Birth date:", "LabelDeathDate": "Death date:", "LabelEndDate": "End date:", - "LabelSeasonNumber": "Season number:", - "LabelEpisodeNumber": "Episode number:", + "LabelSeasonNumber": "\u041d\u043e\u043c\u0435\u0440 \u043d\u0430 \u0441\u0435\u0437\u043e\u043d\u0430:", + "LabelEpisodeNumber": "\u041d\u043e\u043c\u0435\u0440 \u043d\u0430 \u0435\u043f\u0438\u0437\u043e\u0434\u0430:", "LabelTrackNumber": "Track number:", "LabelNumber": "Number:", "LabelDiscNumber": "Disc number:", "LabelParentNumber": "Parent number:", "SortName": "Sort name", - "ReleaseDate": "Release date", + "ReleaseDate": "\u0414\u0430\u0442\u0430 \u043d\u0430 \u0438\u0437\u0434\u0430\u0432\u0430\u043d\u0435", "Continuing": "\u041f\u0440\u043e\u0434\u044a\u043b\u0436\u0430\u0432\u0430\u0449\u043e", "Ended": "\u041f\u0440\u0438\u043a\u043b\u044e\u0447\u0438\u043b\u043e", "HeaderEnabledFields": "\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438 \u043f\u043e\u043b\u0435\u0442\u0430", - "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent it's data from being changed.", + "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent its data from being changed.", "Backdrops": "\u0424\u043e\u043d\u043e\u0432\u0435", "Images": "\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f", - "Runtime": "Runtime", + "Runtime": "\u0412\u0440\u0435\u043c\u0435\u0442\u0440\u0430\u0435\u043d\u0435", "ProductionLocations": "Production locations", "BirthLocation": "Birth location", "ParentalRating": "\u0420\u043e\u0434\u0438\u0442\u0435\u043b\u0441\u043a\u0430 \u043e\u0446\u0435\u043d\u043a\u0430", + "PlayCount": "Play count", "Name": "\u0418\u043c\u0435", - "Overview": "\u041e\u0431\u0449 \u043f\u0440\u0435\u0433\u043b\u0435\u0434", + "Overview": "\u041e\u0431\u043e\u0431\u0449\u0435\u043d\u0438\u0435", "LabelType": "\u0412\u0438\u0434:", "LabelPersonRole": "\u0420\u043e\u043b\u044f:", "LabelPersonRoleHelp": "Example: Ice cream truck driver", "Actor": "\u0410\u043a\u0442\u044c\u043e\u0440", "Composer": "\u0421\u044a\u0447\u0438\u043d\u0438\u0442\u0435\u043b", "Director": "\u0420\u0435\u0436\u0438\u0441\u044c\u043e\u0440", - "GuestStar": "Guest star", + "GuestStar": "\u0413\u043e\u0441\u0442\u0443\u0432\u0430\u0449\u0430 \u0437\u0432\u0435\u0437\u0434\u0430", "Producer": "\u041f\u0440\u043e\u0434\u0443\u0446\u0435\u043d\u0442", "Writer": "\u041f\u0438\u0441\u0430\u0442\u0435\u043b", - "MessageNoSyncJobsFound": "No downloads found. Create download jobs using the Download buttons found throughout the app.", + "MessageNoSyncJobsFound": "\u041d\u044f\u043c\u0430 \u0438\u0437\u0442\u0435\u0433\u043b\u044f\u043d\u0438\u044f. \u0421\u044a\u0437\u0434\u0430\u0439\u0442\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0447\u0440\u0435\u0437 \u043a\u043e\u043f\u0447\u0435\u0442\u0430\u0442\u0430 \u0437\u0430 \u0441\u0432\u0430\u043b\u044f\u043d\u0435.", "MessageNoDownloadsFound": "No offline downloads. Download your media for offline use by clicking Download throughout the app.", - "InstallingPackage": "Installing {0}", + "InstallingPackage": "\u0418\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 {0}", "PackageInstallCompleted": "{0} installation completed.", "PackageInstallFailed": "{0} installation failed.", "PackageInstallCancelled": "{0} installation cancelled.", - "SeriesYearToPresent": "{0} - Present", + "SeriesYearToPresent": "{0} - \u041d\u0430\u0441\u0442\u043e\u044f\u0449\u0435", "ValueOneItem": "1 item", - "ValueOneSong": "1 song", - "ValueSongCount": "{0} songs", - "ValueOneMovie": "1 movie", - "ValueMovieCount": "{0} movies", - "ValueOneSeries": "1 series", - "ValueSeriesCount": "{0} series", - "ValueOneEpisode": "1 episode", - "ValueEpisodeCount": "{0} episodes", - "ValueOneGame": "1 game", - "ValueGameCount": "{0} games", - "ValueOneAlbum": "1 album", - "ValueAlbumCount": "{0} albums", - "ValueOneMusicVideo": "1 music video", - "ValueMusicVideoCount": "{0} music videos", + "ValueOneSong": "1 \u043f\u0435\u0441\u0435\u043d", + "ValueSongCount": "{0} \u043f\u0435\u0441\u043d\u0438", + "ValueOneMovie": "1 \u0444\u0438\u043b\u043c", + "ValueMovieCount": "{0} \u0444\u0438\u043b\u043c\u0430", + "ValueOneSeries": "1 \u0441\u0435\u0440\u0438\u0430\u043b", + "ValueSeriesCount": "{0} \u0441\u0435\u0440\u0438\u0430\u043b\u0430", + "ValueOneEpisode": "1 \u0435\u043f\u0438\u0437\u043e\u0434", + "ValueEpisodeCount": "{0} \u0435\u043f\u0438\u0437\u043e\u0434\u0430", + "ValueOneGame": "1 \u0438\u0433\u0440\u0430", + "ValueGameCount": "{0} \u0438\u0433\u0440\u0438", + "ValueOneAlbum": "1 \u0430\u043b\u0431\u0443\u043c", + "ValueAlbumCount": "{0} \u0430\u043b\u0431\u0443\u043c\u0430", + "ValueOneMusicVideo": "1 \u043c\u0443\u0437\u0438\u043a\u0430\u043b\u0435\u043d \u043a\u043b\u0438\u043f", + "ValueMusicVideoCount": "{0} \u043c\u0443\u0437\u0438\u043a\u0430\u043b\u043d\u0438 \u043a\u043b\u0438\u043f\u0430", "ValueMinutes": "{0} \u043c\u0438\u043d\u0443\u0442\u0438", "Albums": "\u0410\u043b\u0431\u0443\u043c\u0438", "Songs": "\u041f\u0435\u0441\u043d\u0438", @@ -283,26 +304,32 @@ "PleaseEnterNameOrId": "Please enter a name or an external Id.", "MessageItemSaved": "Item saved.", "SearchResults": "Search Results", - "ServerNameIsRestarting": "Emby Server - {0} is restarting.", - "ServerNameIsShuttingDown": "Emby Server - {0} is shutting down.", + "ServerNameIsRestarting": "\u0421\u044a\u0440\u0432\u044a\u0440\u043d\u043e \u0438\u0437\u0434\u0430\u043d\u0438\u0435 \u0415\u043c\u0431\u0438 - {0} \u0441\u0435 \u043f\u0443\u0441\u043a\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e.", + "ServerNameIsShuttingDown": "\u0421\u044a\u0440\u0432\u044a\u0440\u043d\u043e \u0438\u0437\u0434\u0430\u043d\u0438\u0435 \u0415\u043c\u0431\u0438 - {0} \u0441\u0435 \u0438\u0437\u043a\u043b\u044e\u0447\u0432\u0430.", "HeaderDeleteItems": "Delete Items", "ConfirmDeleteItems": "Deleting these items will delete them from both the file system and your media library. Are you sure you wish to continue?", - "PleaseRestartServerName": "Please restart Emby Server - {0}.", + "PleaseRestartServerName": "\u041c\u043e\u043b\u044f, \u043f\u0443\u0441\u043d\u0435\u0442\u0435 \u0441\u044a\u0440\u0432\u044a\u0440\u0430 \u043e\u0442\u043d\u043e\u0432\u043e - {0}.", "LabelSyncJobName": "Sync job name:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", "DownloadingDots": "\u0418\u0437\u0442\u0435\u0433\u043b\u044f\u043d\u0435...", "HeaderSyncRequiresSub": "\u0418\u0437\u0442\u0435\u0433\u043b\u044f\u043d\u0435\u0442\u043e \u0438\u0437\u0438\u0441\u043a\u0432\u0430 \u0430\u043a\u0442\u0438\u0432\u0435\u043d \u0430\u0431\u043e\u043d\u0430\u043c\u0435\u043d\u0442 \u0437\u0430 \u043f\u0440\u0435\u043c\u0438\u0435\u0440\u043d\u043e\u0442\u043e \u0438\u0437\u0434\u0430\u043d\u0438\u0435.", - "LearnMore": "Learn more", + "LearnMore": "\u041d\u0430\u0443\u0447\u0435\u0442\u0435 \u043f\u043e\u0432\u0435\u0447\u0435", "LabelProfile": "Profile:", "LabelBitrateMbps": "Bitrate (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "Download unwatched videos only", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", - "AutomaticallySyncNewContent": "Automatically download new content", + "AutomaticallySyncNewContent": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u0441\u0432\u0430\u043b\u044f\u043d\u0435 \u043d\u0430 \u043d\u043e\u0432\u043e \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435", "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "Item limit:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "Please select a device to download to.", "Screenshots": "\u0421\u043d\u0438\u043c\u043a\u0438 \u043d\u0430 \u0435\u043a\u0440\u0430\u043d\u0430", "MoveRight": "Move right", @@ -313,8 +340,8 @@ "ShowIndicatorsFor": "Show indicators for:", "NewEpisodes": "\u041d\u043e\u0432\u0438 \u0435\u043f\u0438\u0437\u043e\u0434\u0438", "Episodes": "\u0415\u043f\u0438\u0437\u043e\u0434\u0438", - "HDPrograms": "HD programs", - "Programs": "Programs", + "HDPrograms": "\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u0438 \u0441 \u0432\u0438\u0441\u043e\u043a\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u043d\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442", + "Programs": "\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u0438", "LiveBroadcasts": "Live broadcasts", "Premieres": "\u041f\u0440\u0435\u043c\u0438\u0435\u0440\u0438", "RepeatEpisodes": "Repeat episodes", @@ -324,7 +351,7 @@ "HeaderKeepRecording": "Keep Recording", "HeaderCancelSeries": "Cancel Series", "HeaderKeepSeries": "Keep Series", - "HeaderLearnMore": "Learn More", + "HeaderLearnMore": "\u041d\u0430\u0443\u0447\u0435\u0442\u0435 \u043f\u043e\u0432\u0435\u0447\u0435", "DeleteMedia": "\u0418\u0437\u0442\u0440\u0438\u0432\u0430\u043d\u0435 \u043d\u0430 \u043c\u0435\u0434\u0438\u044f\u0442\u0430", "SeriesSettings": "Series settings", "HeaderRecordingOptions": "Recording Options", @@ -339,7 +366,7 @@ "All": "All", "AllChannels": "All channels", "LabelRecord": "Record:", - "NewEpisodesOnly": "New episodes only", + "NewEpisodesOnly": "\u0421\u0430\u043c\u043e \u043d\u043e\u0432\u0438 \u0435\u043f\u0438\u0437\u043e\u0434\u0438", "AllEpisodes": "All episodes", "LabelStartWhenPossible": "Start when possible:", "LabelStopWhenPossible": "Stop when possible:", @@ -354,9 +381,9 @@ "UntilIDelete": "Until I delete", "UntilSpaceNeeded": "Until space needed", "Categories": "Categories", - "Sports": "Sports", - "News": "News", - "Movies": "Movies", + "Sports": "\u0421\u043f\u043e\u0440\u0442\u043d\u0438", + "News": "\u041d\u043e\u0432\u0438\u043d\u0438", + "Movies": "\u0424\u0438\u043b\u043c\u0438", "Kids": "Kids", "EnableColorCodedBackgrounds": "Enable color coded backgrounds", "SortChannelsBy": "Sort channels by:", @@ -369,13 +396,13 @@ "IHaveEmbyPremiere": "\u0418\u043c\u0430\u043c \u043f\u0440\u0435\u043c\u0438\u0435\u0440\u043d\u043e \u0438\u0437\u0434\u0430\u043d\u0438\u0435", "IPurchasedThisApp": "I purchased this app", "ButtonRestorePreviousPurchase": "Restore Purchase", - "ButtonUnlockWithPurchase": "Unlock with Purchase", - "ButtonUnlockPrice": "Unlock {0}", + "ButtonUnlockWithPurchase": "\u041e\u0442\u043a\u043b\u044e\u0447\u0432\u0430\u043d\u0435 \u0441 \u043f\u043e\u043a\u0443\u043f\u043a\u0430", + "ButtonUnlockPrice": "\u041e\u0442\u043a\u043b\u044e\u0447\u0432\u0430\u043d\u0435 \u043d\u0430 {0}", "EmbyPremiereMonthlyWithPrice": "Emby Premiere Monthly {0}", "HeaderAlreadyPaid": "Already Paid?", "ButtonPlayOneMinute": "Play One Minute", "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", - "HeaderUnlockFeature": "Unlock Feature", + "HeaderUnlockFeature": "\u041e\u0442\u043a\u043b\u044e\u0447\u0432\u0430\u043d\u0435 \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0442\u0430", "MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?", "MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.", "HeaderPlayMyMedia": "Play my Media", @@ -385,28 +412,28 @@ "ConfirmRemoveDownload": "Remove download?", "RemoveDownload": "Remove download", "KeepDownload": "Keep download", - "AddedOnValue": "Added {0}", + "AddedOnValue": "\u0414\u043e\u0431\u0430\u0432\u0435\u043d\u043e \u043d\u0430 {0}", "RemovingFromDevice": "Removing from device", "KeepOnDevice": "Keep on device", "CancelDownload": "Cancel download", - "SyncJobItemStatusReadyToTransfer": "Ready to Transfer", - "SyncJobItemStatusSyncedMarkForRemoval": "Removing from device", - "SyncJobItemStatusQueued": "Queued", - "SyncJobItemStatusConverting": "Converting", - "SyncJobItemStatusTransferring": "Transferring", - "SyncJobItemStatusSynced": "Downloaded", - "SyncJobItemStatusFailed": "Failed", - "SyncJobItemStatusRemovedFromDevice": "Removed from device", - "SyncJobItemStatusCancelled": "Cancelled", + "SyncJobItemStatusReadyToTransfer": "\u0412 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442 \u0437\u0430 \u043f\u0440\u0435\u0445\u0432\u044a\u0440\u043b\u044f\u043d\u0435", + "SyncJobItemStatusSyncedMarkForRemoval": "\u041f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u043d\u0435 \u043e\u0442 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u0442\u043e", + "SyncJobItemStatusQueued": "\u0412 \u043e\u043f\u0430\u0448\u043a\u0430", + "SyncJobItemStatusConverting": "\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0432\u0430\u043d\u0435", + "SyncJobItemStatusTransferring": "\u041f\u0440\u0435\u0445\u0432\u044a\u0440\u043b\u044f\u043d\u0435", + "SyncJobItemStatusSynced": "\u0418\u0437\u0442\u0435\u0433\u043b\u0435\u043d\u043e", + "SyncJobItemStatusFailed": "\u041f\u0440\u043e\u0432\u0430\u043b\u0435\u043d\u043e", + "SyncJobItemStatusRemovedFromDevice": "\u041f\u0440\u0435\u043c\u0430\u0445\u043d\u0430\u0442\u043e", + "SyncJobItemStatusCancelled": "\u041e\u0442\u043a\u0430\u0437\u0430\u043d\u043e", "Retry": "Retry", "HeaderMyDevice": "\u041c\u043e\u0435\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e", - "Continue": "Continue", - "ContinueInSecondsValue": "Continue in {0} seconds.", + "Continue": "\u041f\u0440\u043e\u0434\u044a\u043b\u0436\u0430\u0432\u0430\u043d\u0435", + "ContinueInSecondsValue": "\u041f\u0440\u043e\u0434\u044a\u043b\u0436\u0430\u0432\u0430\u043d\u0435 \u0441\u043b\u0435\u0434 {0} \u0441\u0435\u043a\u0443\u043d\u0434\u0438.", "HeaderRemoteControl": "Remote Control", "Disconnect": "Disconnect", "EnableDisplayMirroring": "Enable display mirroring", "HeaderPlayOn": "\u041f\u0443\u0441\u043a\u0430\u043d\u0435 \u043d\u0430", - "Quality": "Quality", + "Quality": "\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e", "Auto": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e", "AndroidUnlockRestoreHelp": "To restore your previous purchase, please ensure you're signed into the device with the same Google (or Amazon) account that originally made the purchase. Make sure the app store is enabled and not restricted by any parental controls, and ensure you have an active internet connection. You'll only have to do this once to restore your previous purchase.", "AspectRatio": "Aspect ratio", @@ -420,59 +447,63 @@ "Connect": "Connect", "HeaderMyMedia": "\u041c\u043e\u044f\u0442\u0430 \u043c\u0435\u0434\u0438\u044f", "HeaderMyMediaSmall": "\u041c\u043e\u044f\u0442\u0430 \u043c\u0435\u0434\u0438\u044f (\u043c\u0430\u043b\u044a\u043a)", - "LatestFromLibrary": "Latest {0}", - "ContinueWatching": "Continue watching", + "LatestFromLibrary": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438 {0}", + "ContinueWatching": "\u041f\u0440\u043e\u0434\u044a\u043b\u0436\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u0433\u043b\u0435\u0434\u0430\u043d\u0435\u0442\u043e", "HeaderLatestChannelMedia": "Latest Channel Items", - "HeaderContinueWatching": "Continue Watching", - "HeaderContinueListening": "Continue Listening", + "HeaderContinueWatching": "\u041f\u0440\u043e\u0434\u044a\u043b\u0436\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u0433\u043b\u0435\u0434\u0430\u043d\u0435\u0442\u043e", + "HeaderContinueListening": "\u041f\u0440\u043e\u0434\u044a\u043b\u0436\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u0441\u043b\u0443\u0448\u0430\u043d\u0435\u0442\u043e", "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438 \u0437\u0430\u043f\u0438\u0441\u0438", - "LabelSyncTo": "Sync to:", + "LabelSyncTo": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0430\u043d\u0435 \u043a\u044a\u043c:", + "LabelConvertTo": "\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0432\u0430\u043d\u0435 \u0432:", "Next": "Next", "LabelSource": "Source:", - "LabelVersion": "Version:", + "LabelVersion": "\u0412\u0435\u0440\u0441\u0438\u044f:", "AllLanguages": "All languages", "Previous": "Previous", - "HeaderNextUp": "Next Up", + "HeaderNextUp": "\u0421\u043b\u0435\u0434\u0432\u0430", "HeaderLatestFrom": "Latest from {0}", "LabelHomeScreenSectionValue": "\u0420\u0430\u0437\u0434\u0435\u043b {0} \u043d\u0430 \u043d\u0430\u0447\u0430\u043b\u043d\u0438\u044f \u0435\u043a\u0440\u0430\u043d:", - "SettingsSaved": "Settings saved.", + "SettingsSaved": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u0442\u0435 \u0441\u0430 \u0437\u0430\u043f\u0430\u0437\u0435\u043d\u0438.", "None": "\u041d\u0438\u0449\u043e", "More": "More", "Up": "Up", "Down": "Down", + "Home": "\u041d\u0430\u0447\u0430\u043b\u043e", + "Favorites": "\u041b\u044e\u0431\u0438\u043c\u0438", "HeaderHomeScreen": "\u041d\u0430\u0447\u0430\u043b\u0435\u043d \u0435\u043a\u0440\u0430\u043d", - "HeaderHomeScreenContent": "\u0421\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435 \u043d\u0430 \u043d\u0430\u0447\u0430\u043b\u043d\u0438\u044f \u0435\u043a\u0440\u0430\u043d", "HeaderLatestChannelItems": "Latest Channel Items", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "\u041f\u043e\u0434\u0440\u0435\u0434\u0431\u0430 \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0442\u0430", - "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", - "HeaderOnNow": "On Now", + "HideWatchedContentFromLatestMedia": "\u0421\u043a\u0440\u0438\u0432\u0430\u043d\u0435 \u043d\u0430 \u0433\u043b\u0435\u0434\u0430\u043d\u043e\u0442\u043e \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435 \u043e\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0430\u0442\u0430 \u043c\u0435\u0434\u0438\u044f", + "HeaderOnNow": "\u041d\u0430 \u0436\u0438\u0432\u043e \u0441\u0435\u0433\u0430", "HeaderPlaybackError": "Playback Error", "PlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", "PlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.", - "Guide": "\u0420\u044a\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e", + "Guide": "\u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a", "Suggestions": "\u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f", - "Favorites": "\u041b\u044e\u0431\u0438\u043c\u0438", + "HeaderFavoriteCollections": "\u041b\u044e\u0431\u0438\u043c\u0438 \u043a\u043e\u043b\u0435\u043a\u0446\u0438\u0438", + "HeaderFavoritePlaylists": "\u041b\u044e\u0431\u0438\u043c\u0438 \u0441\u043f\u0438\u0441\u044a\u0446\u0438", "Collections": "\u041a\u043e\u043b\u0435\u043a\u0446\u0438\u0438", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", - "Shows": "Shows", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", + "Shows": "\u041f\u0440\u0435\u0434\u0430\u0432\u0430\u043d\u0438\u044f", "HeaderLibraryFolders": "\u041f\u0430\u043f\u043a\u0438 \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0442\u0430", - "HeaderLandingScreens": "\u0418\u0437\u0433\u043b\u0435\u0434\u0438", - "LandingScreensHelp": "Select the default landing screen when clicking on a library.", "HeaderTermsOfPurchase": "Terms of Purchase", "PrivacyPolicy": "Privacy policy", "TermsOfUse": "Terms of use", "RepeatMode": "Repeat mode", "RepeatOne": "Repeat one", "RepeatAll": "Repeat all", - "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", + "LabelDefaultScreen": "Default screen:", + "ConfirmEndPlayerSession": "Would you like to shutdown Emby on {0}?", "Yes": "Yes", "No": "No", - "LiveTV": "Live TV", - "Schedule": "Schedule", + "LiveTV": "\u0422\u0435\u043b\u0435\u0432\u0438\u0437\u0438\u044f \u043d\u0430 \u0436\u0438\u0432\u043e", + "Schedule": "\u0420\u0430\u0437\u043f\u0438\u0441\u0430\u043d\u0438\u0435", "Recordings": "Recordings", "MarkWatched": "\u041e\u0442\u0431\u0435\u043b\u044f\u0437\u0432\u0430\u043d\u0435 \u043a\u0430\u0442\u043e \u0438\u0437\u0433\u043b\u0435\u0434\u0430\u043d\u043e", "ScanForNewAndUpdatedFiles": "Scan for new and updated files", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video codec not supported", "AudioCodecNotSupported": "Audio codec not supported", "SubtitleCodecNotSupported": "Subtitle format not supported", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Container not supported", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", @@ -499,9 +531,9 @@ "InterlacedVideoNotSupported": "Interlaced video not supported", "SecondaryAudioNotSupported": "Audio track switching not supported", "ErrorRemovingEmbyConnectAccount": "There was an error removing the Emby Connect account. Please ensure you have an active internet connection and try again.", - "HeaderEmbyAccountRemoved": "Emby Account Removed", + "HeaderEmbyAccountRemoved": "\u0421\u043c\u0435\u0442\u043a\u0430\u0442\u0430 \u0432 \u0415\u043c\u0431\u0438 \u0435 \u043f\u0440\u0435\u043c\u0430\u0445\u043d\u0430\u0442\u0430", "MessageEmbyAccontRemoved": "The Emby account has been removed from this user.", - "HeaderInvitationSent": "Invitation Sent", + "HeaderInvitationSent": "\u041f\u043e\u043a\u0430\u043d\u0430\u0442\u0430 \u0435 \u0438\u0437\u043f\u0440\u0430\u0442\u0435\u043d\u0430", "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.", "GuestUserNotFound": "User not found. Please ensure the name is correct and try again, or try entering their email address.", @@ -512,13 +544,15 @@ "ErrorAddingGuestAccount2": "If you're still having an issue, please send an email to {0}, and include your email address as well as theirs.", "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "MessagePendingEmbyAccountAdded": "The Emby account has been added to this user. An email will be sent to the owner of the account. The invitation will need to be confirmed by clicking a link within the email.", - "HeaderEmbyAccountAdded": "Emby Account Added", - "LabelSubtitlePlaybackMode": "Subtitle mode:", + "HeaderEmbyAccountAdded": "\u0421\u043c\u0435\u0442\u043a\u0430\u0442\u0430 \u0432 \u0415\u043c\u0431\u0438 \u0435 \u0434\u043e\u0431\u0430\u0432\u0435\u043d\u0430", + "LabelSubtitlePlaybackMode": "\u0420\u0435\u0436\u0438\u043c \u043d\u0430 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438\u0442\u0435:", "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "\u0411\u0435\u0437 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438", "Default": "\u041f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435", + "Absolute": "Absolute", "Smart": "\u0423\u043c\u043d\u0438", "Small": "\u041c\u0430\u043b\u044a\u043a", + "Smaller": "Smaller", "Medium": "Medium", "Large": "\u0413\u043e\u043b\u044f\u043c", "ExtraLarge": "\u041c\u043d\u043e\u0433\u043e \u0433\u043e\u043b\u044f\u043c", @@ -533,7 +567,7 @@ "NoSubtitlesHelp": "Subtitles will not be loaded by default. They can still be turned on manually during playback.", "LabelPreferredSubtitleLanguage": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d \u0435\u0437\u0438\u043a \u043d\u0430 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438\u0442\u0435:", "LabelTextSize": "\u0420\u0430\u0437\u043c\u0435\u0440 \u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430:", - "TheseSettingsAffectSubtitlesOnThisDevice": "These settings affect subtitles on this device", + "TheseSettingsAffectSubtitlesOnThisDevice": "\u0422\u0435\u0437\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u043e\u043c\u0435\u043d\u044f\u0442 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438\u0442\u0435 \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u043e\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e", "LabelDropShadow": "\u0421\u044f\u043d\u043a\u0430:", "LabelTextBackgroundColor": "Text background color:", "LabelWindowBackgroundColor": "Text background color:", @@ -555,10 +589,10 @@ "WifiRequiredToDownload": "A Wifi connection is required to continue downloading.", "HeaderDownloadSettings": "Download Settings", "Hide": "\u0421\u043a\u0440\u0438\u0432\u0430\u043d\u0435", - "HeaderStartNow": "Start Now", + "HeaderStartNow": "\u041f\u0443\u0441\u043a\u0430\u043d\u0435 \u0432\u0435\u0434\u043d\u0430\u0433\u0430", "HeaderNextVideoPlayingInValue": "Next Video Playing in {0}", - "HeaderNextEpisodePlayingInValue": "Next Episode Playing in {0}", - "HeaderSecondsValue": "{0} Seconds", + "HeaderNextEpisodePlayingInValue": "\u0421\u043b\u0435\u0434\u0432\u0430\u0449\u0438\u044f\u0442 \u0435\u043f\u0438\u0437\u043e\u0434 \u0449\u0435 \u0441\u0435 \u043f\u0443\u0441\u043d\u0435 \u0441\u043b\u0435\u0434 {0}", + "HeaderSecondsValue": "{0} \u0441\u0435\u043a\u0443\u043d\u0434\u0438", "AudioBitDepthNotSupported": "Audio bit depth not supported", "VideoProfileNotSupported": "Video profile not supported", "VideoFramerateNotSupported": "Video framerate not supported", @@ -566,15 +600,16 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Stop recording", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Manage recording", - "LabelDropImageHere": "Drop image here, or click to browse.", + "LabelDropImageHere": "\u041f\u0443\u0441\u043d\u0435\u0442\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0442\u0443\u043a \u0438\u043b\u0438 \u0449\u0440\u0430\u043a\u043d\u0435\u0442\u0435 \u0437\u0430 \u0440\u0430\u0437\u0433\u043b\u0435\u0436\u0434\u0430\u043d\u0435.", "MessageFileReadError": "There was an error reading the file. Please try again.", "Browse": "\u0420\u0430\u0437\u0433\u043b\u0435\u0436\u0434\u0430\u043d\u0435", "HeaderUploadImage": "\u041a\u0430\u0447\u0432\u0430\u043d\u0435 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435", - "HeaderAddUpdateImage": "Add\/Update Image", - "LabelImageType": "Image type:", + "HeaderAddUpdateImage": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435", + "LabelImageType": "\u0412\u0438\u0434 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435:", "Upload": "\u041a\u0430\u0447\u0432\u0430\u043d\u0435", - "Primary": "Primary", + "Primary": "\u0413\u043b\u0430\u0432\u043d\u043e", "Art": "\u041a\u0430\u0440\u0442\u0438\u043d\u0430", "Backdrop": "\u0424\u043e\u043d", "Banner": "Banner", @@ -608,30 +643,47 @@ "AllowSeasonalThemes": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u0438 \u0441\u0435\u0437\u043e\u043d\u043d\u0438 \u043e\u0431\u043b\u0438\u0446\u0438", "AllowSeasonalThemesHelp": "If enabled, seasonal themes will occasionally override your theme setting.", "AutoBasedOnLanguageSetting": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e (\u0441\u043f\u043e\u0440\u0435\u0434 \u0435\u0437\u0438\u043a\u0430)", - "LabelDateTimeLocale": "Date time locale:", - "DirectorValue": "Director: {0}", - "DirectorsValue": "Directors: {0}", - "GenreValue": "Genre: {0}", - "GenresValue": "Genres: {0}", - "LinksValue": "Links: {0}", - "TagsValue": "Tags: {0}", + "LabelDateTimeLocale": "\u041c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430 \u0434\u0430\u0442\u0430 \u0438 \u0447\u0430\u0441:", + "DirectorValue": "\u0420\u0435\u0436\u0438\u0441\u044c\u043e\u0440: {0}", + "DirectorsValue": "\u0420\u0435\u0436\u0438\u0441\u044c\u043e\u0440\u0438: {0}", + "GenreValue": "\u0416\u0430\u043d\u0440: {0}", + "GenresValue": "\u0416\u0430\u043d\u0440\u043e\u0432\u0435: {0}", + "LinksValue": "\u041f\u0440\u0435\u043f\u0440\u0430\u0442\u043a\u0438: {0}", + "TagsValue": "\u0415\u0442\u0438\u043a\u0435\u0442\u0438: {0}", "LabelAudio": "Audio:", "LabelVideo": "Video:", - "LabelSubtitles": "Subtitles:", - "Off": "Off", + "LabelSubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u0438:", + "Off": "\u0418\u0437\u043a\u043b\u044e\u0447\u0435\u043d\u043e", "ShowTitle": "\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u0437\u0430\u0433\u043b\u0430\u0432\u0438\u0435\u0442\u043e", "ShowYear": "\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u0433\u043e\u0434\u0438\u043d\u0430\u0442\u0430", "Filters": "\u0424\u0438\u043b\u0442\u0440\u0438", - "Unplayed": "Unplayed", + "Unplayed": "\u041d\u0435\u043f\u0443\u0441\u043a\u0430\u043d\u043e", "LabelTVHomeScreen": "TV mode home screen:", - "Horizontal": "Horizontal", - "Vertical": "Vertical", + "Horizontal": "\u0412\u043e\u0434\u043e\u0440\u0430\u0432\u043d\u043e", + "Vertical": "\u041e\u0442\u0432\u0435\u0441\u043d\u043e", "GroupBySeries": "Group by series", "HeaderVideoType": "Video Type", "HeaderSeriesStatus": "Series Status", "Features": "Features", - "Trailers": "Trailers", - "Extras": "Extras", - "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "Trailers": "\u0422\u0440\u0435\u0439\u043b\u044a\u0440\u0438", + "Extras": "\u0415\u043a\u0441\u0442\u0440\u0438", + "ThemeSongs": "\u0424\u043e\u043d\u043e\u0432\u0438 \u043f\u0435\u0441\u043d\u0438", + "ThemeVideos": "\u0424\u043e\u043d\u043e\u0432\u0438 \u0432\u0438\u0434\u0435\u043e\u043a\u043b\u0438\u043f\u043e\u0432\u0435", + "HeaderFavoriteMovies": "\u041b\u044e\u0431\u0438\u043c\u0438 \u0444\u0438\u043b\u043c\u0438", + "HeaderFavoriteShows": "\u041b\u044e\u0431\u0438\u043c\u0438 \u043f\u0440\u0435\u0434\u0430\u0432\u0430\u043d\u0438\u044f", + "HeaderFavoriteEpisodes": "\u041b\u044e\u0431\u0438\u043c\u0438 \u0435\u043f\u0438\u0437\u043e\u0434\u0438", + "HeaderFavoriteVideos": "\u041b\u044e\u0431\u0438\u043c\u0438 \u043a\u043b\u0438\u043f\u043e\u0432\u0435", + "HeaderFavoriteGames": "\u041b\u044e\u0431\u0438\u043c\u0438 \u0438\u0433\u0440\u0438", + "HeaderFavoriteArtists": "\u041b\u044e\u0431\u0438\u043c\u0438 \u0438\u0437\u043f\u044a\u043b\u043d\u0438\u0442\u0435\u043b\u0438", + "HeaderFavoriteAlbums": "\u041b\u044e\u0431\u0438\u043c\u0438 \u0430\u043b\u0431\u0443\u043c\u0438", + "HeaderFavoriteSongs": "\u041b\u044e\u0431\u0438\u043c\u0438 \u043f\u0435\u0441\u043d\u0438", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Color primaries", + "ColorSpace": "\u0426\u0432\u0435\u0442\u043e\u0432\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ca.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ca.json index 0d02edc085..67f9fba111 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/ca.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ca.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Activa aquesta funcionalitat amb un \u00fanic pagament, o amb una subscripci\u00f3 activa d'Emby Premiere.", "MessageUnlockAppWithSupporter": "Activa aquesta funcionalitat amb una subscripci\u00f3 activa d'Emby Premiere.", "MessageToValidateSupporter": "Si tens una subscripci\u00f3 activa d'Emby Premiere assegura't que l'has configurat al teu tauler de control de l'Emby Server, on pots accedir clicant a l'opci\u00f3 d'Emby Premiere al men\u00fa principal.", @@ -17,6 +19,7 @@ "EndsAtValue": "Acabaria a les {0}", "HeaderSelectDate": "Seleccionar Data", "Watched": "Vists", + "AirDate": "Air date", "Played": "Reprodu\u00eft", "ButtonOk": "D'acord", "ButtonCancel": "Cancel\u00b7la", @@ -28,6 +31,12 @@ "RecordingScheduled": "Enregistrament programat.", "SeriesRecordingScheduled": "Enregistrament de la s\u00e8rie programat.", "HeaderNewRecording": "Nou Enregistrament", + "WakeServer": "Wake server", + "HeaderWakeServer": "Wake Server", + "AttemptingWakeServer": "Attempting to wake server. Please wait...", + "WakeServerSuccess": "Success!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "Diumenge", "Monday": "Dilluns", "Tuesday": "Dimarts", @@ -36,6 +45,13 @@ "Friday": "Divendres", "Saturday": "Dissabte", "Days": "Dies", + "SortByValue": "Sort by {0}", + "LabelSortBy": "Sort by:", + "LabelSortOrder": "Sort order:", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "Photos", + "HeaderAppearsOn": "Appears On", + "List": "List", "RecordSeries": "Enregistra la s\u00e8rie", "HeaderCinemaMode": "Mode Cinema", "HeaderCloudSync": "Sincronitzar amb el N\u00favol", @@ -51,7 +67,7 @@ "FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.", "HeaderBecomeProjectSupporter": "Obtenir Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.", - "LabelEmailAddress": "E-mail address:", + "LabelEmailAddress": "Correu electr\u00f2nic:", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", "HeaderConvertYourRecordings": "Convert Your Recordings", @@ -73,16 +89,16 @@ "LabelCollection": "Col\u00b7lecci\u00f3:", "Help": "Ajuda", "LabelDisplayMode": "Display mode:", - "Desktop": "Desktop", - "Mobile": "Mobile \/ Tablet", + "Desktop": "Escriptori", + "Mobile": "M\u00f2bil \/ Tauleta", "TV": "TV", - "DisplayModeHelp": "Select the type of screen you're running Emby on.", - "LabelDisplayLanguage": "Display language:", + "DisplayModeHelp": "Selecciona el tipus de pantalla en el que tens Emby funcionant.", + "LabelDisplayLanguage": "Idioma de visualitzaci\u00f3:", "LabelDisplayLanguageHelp": "Translating Emby is an ongoing project.", "LearnHowYouCanContribute": "Learn how you can contribute.", "NewCollectionHelp": "Les col\u00b7leccions et permeten crear agrupacions personalitzades de pel\u00b7l\u00edcules i altres continguts.", "SearchForCollectionInternetMetadata": "Cerca a internet artwork i metadades", - "DisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", + "DisplayMissingEpisodesWithinSeasons": "Mostra tamb\u00e9 els episodis que no tingui a les temporades", "DisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "EnableThemeSongs": "Enable theme songs", "EnableBackdrops": "Enable backdrops", @@ -90,10 +106,10 @@ "EnableBackdropsHelp": "If enabled, backdrops will be displayed in the background of some pages while browsing the library.", "EnableThemeVideos": "Enable theme videos", "EnableThemeVideosHelp": "If enabled, theme videos will be played in the background while browsing the library.", - "RunAtStartup": "Run at startup", - "LabelScreensaver": "Screensaver:", - "LabelSoundEffects": "Sound effects:", - "LabelSkin": "Skin:", + "RunAtStartup": "Arrenca en iniciar", + "LabelScreensaver": "Salva pantalla:", + "LabelSoundEffects": "Efectes de so:", + "LabelSkin": "Aspecte:", "LabelName": "Nom:", "NewCollectionNameExample": "Exemple: Col\u00b7leci\u00f3 Star Wars", "MessageItemsAdded": "\u00cdtems afegits.", @@ -102,8 +118,8 @@ "AddToPlaylist": "Afegeix a la llista de reproducci\u00f3", "HeaderAddToPlaylist": "Afegir a la llista de reproducci\u00f3", "Subtitles": "Subt\u00edtols", - "LabelTheme": "Theme:", - "LabelDashboardTheme": "Server dashboard theme:", + "LabelTheme": "Tema:", + "LabelDashboardTheme": "Tema del tauler de control del servidor:", "SearchForSubtitles": "Cerca Subt\u00edtols", "LabelLanguage": "Idioma:", "Search": "Cerca", @@ -134,27 +150,29 @@ "RefreshDialogHelp": "Metadata is refreshed based on settings and internet services that are enabled in the Emby Server dashboard.", "Open": "Obre", "Play": "Reprodueix", - "AddToPlayQueue": "Add to play queue", - "Shuffle": "Shuffle", + "AddToPlayQueue": "Afegeix a la llista de reproducci\u00f3", + "Shuffle": "Aleatori", "Identify": "Identifica", "EditImages": "Edita imatges", - "EditInfo": "Edita informaci\u00f3", - "Sync": "Sync", - "InstantMix": "Instant mix", + "EditMetadata": "Edit metadata", + "Convert": "Convert", + "Sync": "Sincronitza", + "InstantMix": "Mescla instant\u00e0nia", "ViewAlbum": "Veure \u00e0lbum", "ViewArtist": "Veure artista", - "QueueAllFromHere": "Queue all from here", - "PlayAllFromHere": "Play all from here", - "PlayFromBeginning": "Play from beginning", - "ResumeAt": "Resume from {0}", + "QueueAllFromHere": "Afegeix tots a la cua des d'aqu\u00ed", + "PlayAllFromHere": "Reprodueix tots des d'aqu\u00ed", + "PlayFromBeginning": "Reprodueix des de l'inici", + "ResumeAt": "Reprodueix des de {0}", "RemoveFromPlaylist": "Esborra de la llista de reproducci\u00f3", - "RemoveFromCollection": "Remove from collection", - "Trailer": "Trailer", + "RemoveFromCollection": "Elimina de la col\u00b7lecci\u00f3", + "Sort": "Sort", + "Trailer": "Tr\u00e0iler", "MarkPlayed": "Marca com a reprodu\u00eft", "MarkUnplayed": "Marca com a no reprodu\u00eft", "GroupVersions": "Group versions", "PleaseSelectTwoItems": "Please select at least two items.", - "TryMultiSelect": "Try Multi-Select", + "TryMultiSelect": "Prova el Multi-Select", "TryMultiSelectMessage": "Per editar m\u00faltiples mitjans multim\u00e8dia simplement fes clic i mantingues premut sobre qualsevol cartell i despr\u00e9s selecciona els \u00edtems que vulguis gestionar. Prova-ho!", "HeaderConfirmRecordingCancellation": "Confirmar Cancel\u00b7laci\u00f3 de l'Enregistrament", "MessageConfirmRecordingCancellation": "Est\u00e0s segur que vols cancel\u00b7lar aquest enregistrament?", @@ -162,11 +180,13 @@ "VoiceInput": "Voice Input", "LabelContentType": "Tipus de contingut:", "LabelPath": "Directori:", - "Playlists": "Playlists", + "Playlists": "Llistes de reproducci\u00f3", "LabelTitle": "T\u00edtol:", "LabelOriginalTitle": "T\u00edtol original:", "LabelSortTitle": "T\u00edtol d'endre\u00e7at:", - "LabelDateAdded": "Date added:", + "LabelDateAdded": "Data afegit:", + "DateAdded": "Date added", + "DatePlayed": "Date played", "ConfigureDateAdded": "Configure how date added is determined in the Emby Server dashboard under Library settings", "LabelStatus": "Estat:", "LabelArtists": "Artistes:", @@ -174,16 +194,20 @@ "HeaderAlbumArtists": "Album Artists", "LabelAlbumArtists": "Album artists:", "LabelAlbum": "\u00c0lbum:", - "Artists": "Artists", + "Artists": "Artistes", + "ImdbRating": "IMDb rating", + "CommunityRating": "Community rating", "LabelCommunityRating": "Valoraci\u00f3 de la comunitat:", "LabelCriticRating": "Valoraci\u00f3 cr\u00edtica:", + "CriticRating": "Critic rating", "LabelWebsite": "Website:", "LabelTagline": "Tagline:", - "LabelOverview": "Overview:", - "LabelShortOverview": "Short overview:", + "LabelOverview": "Sinopsi:", + "LabelShortOverview": "Sinopsi curta:", "LabelReleaseDate": "Data de publicaci\u00f3:", "LabelYear": "Any:", "LabelPlaceOfBirth": "Lloc de naixement:", + "Aired": "Aired", "LabelAirDays": "Air days:", "LabelAirTime": "Air time:", "LabelRuntimeMinutes": "Run time (minutes):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Relaci\u00f3 d'aspecte original:", "Label3DFormat": "3D format:", "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Perfect match", "EnableExternalVideoPlayers": "Enable external video players", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Alternar Nombres d'Episodis", - "LabelDvdSeasonNumber": "Dvd season number:", - "LabelDvdEpisodeNumber": "Dvd episode number:", - "LabelAbsoluteEpisodeNumber": "Absolute episode number:", "HeaderSpecialEpisodeInfo": "Special Episode Info", "LabelAirsBeforeSeason": "Airs before season:", "LabelAirsAfterSeason": "Airs after season:", @@ -234,13 +254,14 @@ "Continuing": "Continuant", "Ended": "Acabades", "HeaderEnabledFields": "Camps Habilitats", - "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent it's data from being changed.", + "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent its data from being changed.", "Backdrops": "Backdrops", "Images": "Imatges", "Runtime": "Runtime", "ProductionLocations": "Production locations", "BirthLocation": "Birth location", "ParentalRating": "Valoraci\u00f3 Parental", + "PlayCount": "Play count", "Name": "Nom", "Overview": "Overview", "LabelType": "Tipus:", @@ -289,20 +310,26 @@ "ConfirmDeleteItems": "Deleting these items will delete them from both the file system and your media library. Are you sure you wish to continue?", "PleaseRestartServerName": "Reinicia el Servidor d'Emby si et plau - {0}.", "LabelSyncJobName": "Sync job name:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "Qualitat:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", "DownloadingDots": "Descarregant...", - "HeaderSyncRequiresSub": "Downloading requires an active Emby Premiere subscription.", + "HeaderSyncRequiresSub": "Descarregar requereix una subscripci\u00f3 activa d'Emby Premiere.", "LearnMore": "Learn more", "LabelProfile": "Perfil:", "LabelBitrateMbps": "Bitrate (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "Descarrega nom\u00e9s els v\u00eddeos no vists", - "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", - "AutomaticallySyncNewContent": "Automatically download new content", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", + "SyncUnwatchedVideosOnlyHelp": "Nom\u00e9s els v\u00eddeos no vists seran descarregats, i els v\u00eddeos seran eliminats del dispositiu un cop s'hagin vist.", + "AutomaticallySyncNewContent": "Descarrega nou contingut autom\u00e0ticament", "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "Item limit:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "Selecciona el dispositiu on ho vulguis descarregar.", "Screenshots": "Captures de pantalla", "MoveRight": "Moure a la dreta", @@ -427,7 +454,8 @@ "HeaderContinueListening": "Continua Escoltant", "HeaderActiveRecordings": "Enregistraments Actius", "HeaderLatestRecordings": "Darrers Enregistraments", - "LabelSyncTo": "Sync to:", + "LabelSyncTo": "Sincronitza a:", + "LabelConvertTo": "Convert to:", "Next": "Next", "LabelSource": "Source:", "LabelVersion": "Version:", @@ -441,10 +469,10 @@ "More": "M\u00e9s", "Up": "Amunt", "Down": "Avall", + "Home": "Home", + "Favorites": "Favorites", "HeaderHomeScreen": "P\u00e0gina d'Inici", - "HeaderHomeScreenContent": "Contingut de la P\u00e0gina d'Inici", "HeaderLatestChannelItems": "Darrers \u00edtems del canal", - "LabelSelectHomeScreenItemsFolders": "Mostra els seg\u00fcents continguts a la p\u00e0gina d'inici:", "HeaderLibraryOrder": "Ordre de la llibreria", "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", "HeaderOnNow": "En Directe Ara", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.", "Guide": "Guide", "Suggestions": "Sugger\u00e8ncies", - "Favorites": "Favorites", + "HeaderFavoriteCollections": "Favorite Collections", + "HeaderFavoritePlaylists": "Llistes de Reproducci\u00f3 Preferides", "Collections": "Collections", "LabelSelectFolderGroups": "Agrupa autom\u00e0ticament el contingut de les seg\u00fcents carpetes en col\u00b7leccions com Pel\u00b7l\u00edcules, M\u00fasica i TV:", "LabelSelectFolderGroupsHelp": "Les carpetes desmarcades ser\u00e1n mostrades individualment en la seva pr\u00f2pia vista.", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", "Shows": "Shows", "HeaderLibraryFolders": "Directoris de la Llibreria", - "HeaderLandingScreens": "Landing Screens", - "LandingScreensHelp": "Select the default landing screen when clicking on a library.", "HeaderTermsOfPurchase": "Terms of Purchase", "PrivacyPolicy": "Privacy policy", "TermsOfUse": "Terms of use", "RepeatMode": "Repeat mode", "RepeatOne": "Repeat one", "RepeatAll": "Repeat all", - "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", + "LabelDefaultScreen": "Default screen:", + "ConfirmEndPlayerSession": "Would you like to shutdown Emby on {0}?", "Yes": "Yes", "No": "No", "LiveTV": "Live TV", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video codec not supported", "AudioCodecNotSupported": "Audio codec not supported", "SubtitleCodecNotSupported": "Format de subt\u00edtol no suportat", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Container not supported", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "Sense subt\u00edtols", "Default": "Default", + "Absolute": "Absolute", "Smart": "Smart", "Small": "Small", + "Smaller": "Smaller", "Medium": "Medium", "Large": "Large", "ExtraLarge": "Extra large", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Stop recording", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Manage recording", "LabelDropImageHere": "Drop image here, or click to browse.", "MessageFileReadError": "There was an error reading the file. Please try again.", @@ -633,5 +668,22 @@ "Trailers": "Trailers", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteVideos": "Favorite Videos", + "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteSongs": "Favorite Songs", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Color space", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/cs.json b/dashboard-ui/bower_components/emby-webcomponents/strings/cs.json index 946f1c34db..9b2ce69853 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/cs.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/cs.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Odemknout tuto funkci pomoc\u00ed jednor\u00e1zov\u00e9 platby, nebo pomoc\u00ed aktivace p\u0159edplatn\u00e9ho Emby Premiere.", "MessageUnlockAppWithSupporter": "Odemknout tuto funkci pomoc\u00ed aktivn\u00edho p\u0159edplatn\u00e9ho Emby Premiere.", "MessageToValidateSupporter": "Pokud m\u00e1te aktivn\u00ed p\u0159edplatn\u00e9 Emby Premiere, ujist\u011bte se, \u017ee m\u00e1te nastaven Emby Premiere v panelu Nastaven\u00ed pod N\u00e1pov\u011bda -> Emby Premiere.", @@ -6,7 +8,7 @@ "Share": "Sd\u00edlet", "Add": "P\u0159idat", "ServerUpdateNeeded": "Tento Emby Server je t\u0159eba aktualizovat. Chcete-li st\u00e1hnout nejnov\u011bj\u0161\u00ed verzi, nav\u0161tivte pros\u00edm {0}", - "LiveTvRequiresUnlock": "Live TV requires an active Emby Premiere subscription.", + "LiveTvRequiresUnlock": "Live TV vy\u017eaduje aktivn\u00ed p\u0159edplatn\u00e9 Emby Premiere.", "AttributeNew": "Nov\u00e9", "Premiere": "Premi\u00e9ra", "Live": "\u017div\u011b", @@ -17,6 +19,7 @@ "EndsAtValue": "Kon\u010d\u00ed v {0}", "HeaderSelectDate": "Vyber datum", "Watched": "Shl\u00e9dnuto", + "AirDate": "Air date", "Played": "P\u0159ehr\u00e1no", "ButtonOk": "Ok", "ButtonCancel": "Zru\u0161it", @@ -28,6 +31,12 @@ "RecordingScheduled": "Pl\u00e1n nahr\u00e1v\u00e1n\u00ed.", "SeriesRecordingScheduled": "Pl\u00e1n nahr\u00e1v\u00e1n\u00ed seri\u00e1lu.", "HeaderNewRecording": "Nov\u00fd z\u00e1znam", + "WakeServer": "Wake server", + "HeaderWakeServer": "Wake Server", + "AttemptingWakeServer": "Attempting to wake server. Please wait...", + "WakeServerSuccess": "Success!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "Ned\u011ble", "Monday": "Pond\u011bl\u00ed", "Tuesday": "\u00dater\u00fd", @@ -36,6 +45,13 @@ "Friday": "P\u00e1tek", "Saturday": "Sobota", "Days": "Dny", + "SortByValue": "T\u0159\u00eddit dle {0}", + "LabelSortBy": "Sort by:", + "LabelSortOrder": "Sort order:", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "Fotky", + "HeaderAppearsOn": "Appears On", + "List": "Seznam", "RecordSeries": "Nahr\u00e1t s\u00e9rie", "HeaderCinemaMode": "Cinema M\u00f3d", "HeaderCloudSync": "Synchronizace s Cloudem", @@ -138,7 +154,8 @@ "Shuffle": "N\u00e1hodn\u011b", "Identify": "Identifikuj", "EditImages": "Editace obr\u00e1zk\u016f", - "EditInfo": "Editace info", + "EditMetadata": "Edit metadata", + "Convert": "Convert", "Sync": "Synchronizace", "InstantMix": "Okam\u017eit\u00e9 m\u00edch\u00e1n\u00ed", "ViewAlbum": "Zobrazit album", @@ -149,6 +166,7 @@ "ResumeAt": "Obnovit p\u0159ehr\u00e1v\u00e1n\u00ed od {0}", "RemoveFromPlaylist": "Odebrat z playlistu", "RemoveFromCollection": "Odebrat z kolekce", + "Sort": "Sort", "Trailer": "Uk\u00e1zka\/trailer", "MarkPlayed": "Ozna\u010dit p\u0159ehran\u00e9", "MarkUnplayed": "Ozna\u010dit nep\u0159ehran\u00e9", @@ -157,26 +175,31 @@ "TryMultiSelect": "Vyzkou\u0161ej multi-v\u00fdb\u011br", "TryMultiSelectMessage": "Chcete-li upravit v\u00edce medi\u00e1ln\u00edch polo\u017eek, sta\u010d\u00ed kliknout a podr\u017eet na kter\u00e9mkoliv plak\u00e1tu. Pot\u00e9 m\u016f\u017eete vybrat v\u00edce polo\u017eek, kter\u00e9 chcete spravovat. Zkus to!", "HeaderConfirmRecordingCancellation": "Potvrzen\u00ed zru\u0161en\u00ed nahr\u00e1v\u00e1n\u00ed", - "MessageConfirmRecordingCancellation": "Jste si jisti, \u017ee chcete zru\u0161it tuto nahr\u00e1vku?", + "MessageConfirmRecordingCancellation": "Zru\u0161it nahr\u00e1v\u00e1n\u00ed", "Error": "Chyba", "VoiceInput": "Hlasov\u00fd vstup", "LabelContentType": "Typ obsahu:", "LabelPath": "Cesta k souboru:", - "Playlists": "Playlists", + "Playlists": "Playlisty", "LabelTitle": "N\u00e1zev:", "LabelOriginalTitle": "Origin\u00e1ln\u00ed n\u00e1zev:", "LabelSortTitle": "T\u0159\u00eddit dle n\u00e1zvu:", "LabelDateAdded": "Datum p\u0159id\u00e1n\u00ed:", + "DateAdded": "Datum p\u0159id\u00e1n\u00ed", + "DatePlayed": "Datum p\u0159ehr\u00e1n\u00ed", "ConfigureDateAdded": "Konfigurace p\u0159id\u00e1n\u00ed data je definov\u00e1na v nastaven\u00ed knihovny v ovl\u00e1dac\u00edm panelu", "LabelStatus": "Stav:", "LabelArtists": "\u00dam\u011blci", "LabelArtistsHelp": "Odd\u011bl pomoc\u00ed ;", - "HeaderAlbumArtists": "Album Artists", + "HeaderAlbumArtists": "Um\u011blci alba", "LabelAlbumArtists": "Alba um\u011blce:", "LabelAlbum": "Album:", "Artists": "Um\u011blci", + "ImdbRating": "Hodnocen\u00ed IMDb", + "CommunityRating": "Hodnocen\u00ed komunity", "LabelCommunityRating": "Hodnocen\u00ed komunity:", "LabelCriticRating": "Hodnocen\u00ed kritik\u016f:", + "CriticRating": "Critic rating", "LabelWebsite": "Webov\u00e9 str\u00e1nky:", "LabelTagline": "Slogan:", "LabelOverview": "P\u0159ehled:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Datum vyd\u00e1n\u00ed:", "LabelYear": "Rok:", "LabelPlaceOfBirth": "M\u00edsto narozen\u00ed:", + "Aired": "Aired", "LabelAirDays": "Vys\u00edl\u00e1no:", "LabelAirTime": "\u010cas vys\u00edl\u00e1n\u00ed:", "LabelRuntimeMinutes": "D\u00e9lka (v minut\u00e1ch):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "P\u016fvodn\u00ed pom\u011br stran:", "Label3DFormat": "3D form\u00e1t:", "FormatValue": "Form\u00e1t: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "P\u0159esn\u00e1 shoda", "EnableExternalVideoPlayers": "Povolit extern\u00ed video p\u0159ehr\u00e1va\u010de", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Alternativn\u00ed \u010d\u00edslov\u00e1n\u00ed epizod", - "LabelDvdSeasonNumber": "\u010c\u00edslo DVD sez\u00f3ny:", - "LabelDvdEpisodeNumber": "\u010c\u00edslo DVD epizody:", - "LabelAbsoluteEpisodeNumber": "Absolutn\u00ed \u010d\u00edslo epizody:", "HeaderSpecialEpisodeInfo": "Infromace o speci\u00e1ln\u00ed epizod\u011b", "LabelAirsBeforeSeason": "Vys\u00edl\u00e1no p\u0159ed sez\u00f3nou:", "LabelAirsAfterSeason": "Vys\u00edl\u00e1no po sez\u00f3n\u011b:", @@ -241,6 +261,7 @@ "ProductionLocations": "M\u00edsto v\u00fdroby", "BirthLocation": "M\u00edsto narozen\u00ed", "ParentalRating": "Rodi\u010dovsk\u00e9 hodnocen\u00ed", + "PlayCount": "Po\u010det p\u0159ehr\u00e1n\u00ed", "Name": "N\u00e1zev", "Overview": "P\u0159ehled\/Obsah", "LabelType": "Typ:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "Odstran\u011bn\u00edm t\u011bchto polo\u017eek odstran\u00edte va\u0161e m\u00e9dia jak z knihovny m\u00e9di\u00ed, tak i ze souborov\u00e9ho syst\u00e9mu. Jste si jisti, \u017ee chcete pokra\u010dovat?", "PleaseRestartServerName": "Pros\u00edm, restartujte Emby Server - {0}.", "LabelSyncJobName": "N\u00e1zev Sync \u00falohy:", - "SyncJobCreated": "\u00daloha Sync vytvo\u0159ena", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "Kvalita:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", "DownloadingDots": "Stahov\u00e1n\u00ed...", @@ -297,12 +319,17 @@ "LearnMore": "Zjistit v\u00edce", "LabelProfile": "Profil:", "LabelBitrateMbps": "Datov\u00fd tok (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "St\u00e1hnout pouze neshl\u00e9dnut\u00e1 videa", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", "SyncUnwatchedVideosOnlyHelp": "Pouze neshl\u00e9dnut\u00e1 videa budou sta\u017eena a budou odstran\u011bna ze za\u0159\u00edzen\u00ed, jakmile je zhl\u00e9dnete.", "AutomaticallySyncNewContent": "Automaticky stahovat nov\u00fd obsah", "AutomaticallySyncNewContentHelp": "Nov\u00fd obsah p\u0159idan\u00fd do t\u00e9to slo\u017eky bude automaticky sta\u017een do za\u0159\u00edzen\u00ed.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "Limit polo\u017eek:", - "LabelItemLimitHelp": "Voliteln\u00e9. Nastaven\u00ed limitu po\u010dtu polo\u017eek, kter\u00e9 budou sta\u017eeny.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "Please select a device to download to.", "Screenshots": "Sn\u00edmky obrazovky", "MoveRight": "Posunout vpravo", @@ -421,16 +448,17 @@ "HeaderMyMedia": "Moje m\u00e9dia", "HeaderMyMediaSmall": "Moje m\u00e9dia (mal\u00e9)", "LatestFromLibrary": "Nejnov\u011bj\u0161\u00ed {0}", - "ContinueWatching": "Continue watching", + "ContinueWatching": "Pokra\u010dovat ve sledov\u00e1n\u00ed", "HeaderLatestChannelMedia": "Nejnov\u011bj\u0161\u00ed polo\u017eky kan\u00e1lu", "HeaderContinueWatching": "Pokra\u010dovat ve sledov\u00e1n\u00ed", "HeaderContinueListening": "Pokra\u010dovat v poslechu", "HeaderActiveRecordings": "Aktivn\u00ed nahr\u00e1v\u00e1n\u00ed", "HeaderLatestRecordings": "Nejnov\u011bj\u0161\u00ed nahr\u00e1vky", "LabelSyncTo": "Sync do:", + "LabelConvertTo": "Convert to:", "Next": "Dal\u0161\u00ed", "LabelSource": "Zdroj:", - "LabelVersion": "Version:", + "LabelVersion": "Verze:", "AllLanguages": "V\u0161echny jazyky", "Previous": "P\u0159edchoz\u00ed", "HeaderNextUp": "Nadch\u00e1zej\u00edc\u00ed", @@ -441,10 +469,10 @@ "More": "V\u00edce", "Up": "Nahoru", "Down": "Dol\u016f", + "Home": "Dom\u016f", + "Favorites": "Obl\u00edben\u00e9", "HeaderHomeScreen": "Domovsk\u00e1 obrazovka", - "HeaderHomeScreenContent": "Obsah domovsk\u00e9 obrazovky", "HeaderLatestChannelItems": "Nejnov\u011bj\u0161\u00ed polo\u017eky kan\u00e1lu", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "Po\u0159ad\u00ed knihovny", "HideWatchedContentFromLatestMedia": "Skr\u00fdt p\u0159ehran\u00e9 polo\u017eky ze seznamu nejnov\u011bj\u0161\u00edch m\u00e9di\u00ed", "HeaderOnNow": "Pr\u00e1v\u011b te\u010f", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Pro p\u0159ehr\u00e1n\u00ed videa nejd\u0159\u00edve vlo\u017ete disk", "Guide": "Pr\u016fvodce", "Suggestions": "N\u00e1vrhy", - "Favorites": "Obl\u00edben\u00e9", + "HeaderFavoriteCollections": "Favorite Collections", + "HeaderFavoritePlaylists": "Favorite Playlists", "Collections": "Kolekce", "LabelSelectFolderGroups": "Automaticky seskupit obsah z n\u00e1sleduj\u00edc\u00edch slo\u017eek do zobrazen\u00ed, jako jsou Filmy, Hudba a TV:", "LabelSelectFolderGroupsHelp": "Slo\u017eky, kter\u00e9 nejsou za\u0161krtnuty budou zobrazeny ve vlastn\u00edm pohledu.", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", "Shows": "Seri\u00e1ly", "HeaderLibraryFolders": "Slo\u017eky knihovny", - "HeaderLandingScreens": "C\u00edlov\u00e1 obrazovka", - "LandingScreensHelp": "Vyberte v\u00fdchoz\u00ed c\u00edlovou obrazovku po kliknut\u00ed na knihovnu.", "HeaderTermsOfPurchase": "Podm\u00ednky n\u00e1kupu", "PrivacyPolicy": "Z\u00e1sady ochrany osobn\u00edch \u00fadaj\u016f", "TermsOfUse": "Podm\u00ednky pou\u017eit\u00ed", "RepeatMode": "M\u00f3d opakov\u00e1n\u00ed", "RepeatOne": "Opakovat jeden", "RepeatAll": "Opakovat v\u0161e", - "ConfirmEndPlayerSession": "Chcete zav\u0159\u00edt Emby na za\u0159\u00edzen\u00ed?", + "LabelDefaultScreen": "Default screen:", + "ConfirmEndPlayerSession": "Chcete vypnout Emby na {0}?", "Yes": "Ano", "No": "Ne", "LiveTV": "Live TV", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video kodek nen\u00ed podporov\u00e1n", "AudioCodecNotSupported": "Audio kodek nen\u00ed podporov\u00e1n", "SubtitleCodecNotSupported": "Form\u00e1t titulk\u016f nen\u00ed podporov\u00e1n", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Kontejner nen\u00ed podporov\u00e1n", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Datov\u00fd tok audia nen\u00ed podporov\u00e1n", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "Nastala chyba p\u0159i maz\u00e1n\u00ed polo\u017eky z Emby Serveru. Zkontrolujte pros\u00edm, \u017ee Emby Server m\u00e1 opr\u00e1vn\u011bn\u00ed k z\u00e1pisu do slo\u017eky m\u00e9di\u00ed a zkuste to pros\u00edm znovu.", "NoSubtitles": "\u017d\u00e1dn\u00e9 titulky", "Default": "V\u00fdchoz\u00ed", + "Absolute": "Absolute", "Smart": "Chytr\u00fd", "Small": "Mal\u00fd", + "Smaller": "Smaller", "Medium": "St\u0159edn\u00ed", "Large": "Velk\u00fd", "ExtraLarge": "Extra velk\u00fd", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Zastavit nahr\u00e1v\u00e1n\u00ed", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Spravovat nahr\u00e1v\u00e1n\u00ed", "LabelDropImageHere": "Sem p\u0159et\u00e1hn\u011bte obr\u00e1zek nebo klikn\u011bte pro proch\u00e1zen\u00ed.", "MessageFileReadError": "Do\u0161lo k chyb\u011b p\u0159i \u010dten\u00ed souboru. Pros\u00edm zkuste to znovu.", @@ -633,5 +668,22 @@ "Trailers": "Trailers", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteVideos": "Favorite Videos", + "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteSongs": "Favorite Songs", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Color space", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/da.json b/dashboard-ui/bower_components/emby-webcomponents/strings/da.json index eb16132255..d601bd725e 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/da.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/da.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "L\u00e5s op for dette feature med en lille enkeltst\u00e5ende betaling, eller med et aktivt Emby Premiere abonnement.", "MessageUnlockAppWithSupporter": "L\u00e5s op for dette feature med et aktivt Emby Premiere abonnement.", "MessageToValidateSupporter": "Hvis du har et aktivt Emby Premiere abonnement, skal du v\u00e6re sikker p\u00e5 at Emby Premiere er konfigureret i dit Emby Server-kontrolpanel, som kan tilg\u00e5es ved at klikke p\u00e5 Emby Premiere i hovedmenuen.", @@ -17,6 +19,7 @@ "EndsAtValue": "Slutter {0}", "HeaderSelectDate": "V\u00e6lg dato", "Watched": "Watched", + "AirDate": "Air date", "Played": "Afspillet", "ButtonOk": "Ok", "ButtonCancel": "Annuller", @@ -28,6 +31,12 @@ "RecordingScheduled": "Optagelse planlagt.", "SeriesRecordingScheduled": "Optagning af serie planlagt.", "HeaderNewRecording": "Ny optagelse", + "WakeServer": "Wake server", + "HeaderWakeServer": "Wake Server", + "AttemptingWakeServer": "Attempting to wake server. Please wait...", + "WakeServerSuccess": "Success!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "S\u00f8ndag", "Monday": "Mandag", "Tuesday": "Tirsdag", @@ -36,6 +45,13 @@ "Friday": "Fredag", "Saturday": "L\u00f8rdag", "Days": "Dage", + "SortByValue": "Sort by {0}", + "LabelSortBy": "Sort by:", + "LabelSortOrder": "Sort order:", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "Photos", + "HeaderAppearsOn": "Appears On", + "List": "List", "RecordSeries": "Optag serie", "HeaderCinemaMode": "Biograftilstand", "HeaderCloudSync": "Sky-Synk", @@ -138,7 +154,8 @@ "Shuffle": "Bland", "Identify": "Identificer", "EditImages": "Rediger billeder", - "EditInfo": "Rediger info", + "EditMetadata": "Edit metadata", + "Convert": "Convert", "Sync": "Synk", "InstantMix": "Instant Mix", "ViewAlbum": "Vis album", @@ -149,6 +166,7 @@ "ResumeAt": "Genoptag fra {0}", "RemoveFromPlaylist": "Fjer fra afspilningsliste", "RemoveFromCollection": "Fjern fra samling", + "Sort": "Sort", "Trailer": "Trailer", "MarkPlayed": "Mark\u00e9r som afspillet", "MarkUnplayed": "Mark\u00e9r som ikke afspillet", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "Original titel:", "LabelSortTitle": "Sort\u00e9r titel:", "LabelDateAdded": "Dato for tilf\u00f8jelse:", + "DateAdded": "Date added", + "DatePlayed": "Date played", "ConfigureDateAdded": "Konfigurer hvordan tilf\u00f8jet-dato bestemmes, under Emby Server-kontrolpanelet under Biblioteksindstillinger", "LabelStatus": "Status:", "LabelArtists": "Artister:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "Albumartister:", "LabelAlbum": "Album:", "Artists": "Artists", + "ImdbRating": "IMDb rating", + "CommunityRating": "Community rating", "LabelCommunityRating": "F\u00e6llesskabsvurdering:", "LabelCriticRating": "Kritikervurdering:", + "CriticRating": "Critic rating", "LabelWebsite": "Hjemmeside:", "LabelTagline": "Tagline:", "LabelOverview": "Oversigt:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Udgivelsesdato:", "LabelYear": "Year:", "LabelPlaceOfBirth": "F\u00f8dselssted:", + "Aired": "Aired", "LabelAirDays": "Sendedage:", "LabelAirTime": "Sendetid:", "LabelRuntimeMinutes": "Spilletid (minutter):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Originalt formatforhold:", "Label3DFormat": "3D format:", "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Perfect match", "EnableExternalVideoPlayers": "Enable external video players", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Alternative episodenumre", - "LabelDvdSeasonNumber": "DVD s\u00e6sonnummer", - "LabelDvdEpisodeNumber": "DVD episodenummer:", - "LabelAbsoluteEpisodeNumber": "Absolut episodenummer:", "HeaderSpecialEpisodeInfo": "Information om specialepisoder", "LabelAirsBeforeSeason": "Sendes f\u00f8r s\u00e6son:", "LabelAirsAfterSeason": "Sendes efter s\u00e6son:", @@ -241,6 +261,7 @@ "ProductionLocations": "Produktionslokationer", "BirthLocation": "F\u00f8dselslokation", "ParentalRating": "Parental Rating", + "PlayCount": "Play count", "Name": "Navn", "Overview": "Overblik", "LabelType": "Type:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "Sletning af disse emner vil b\u00e5de fjerne dem fra filsystemet og dit mediebibliotek. Er du sikker p\u00e5 at du vil forts\u00e6tte?", "PleaseRestartServerName": "Genstart venligst Emby Server - {0}.", "LabelSyncJobName": "Navn til synkroniserings job:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "Kvalitet:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", "DownloadingDots": "Downloading...", @@ -297,12 +319,17 @@ "LearnMore": "L\u00e6r mere", "LabelProfile": "Profil:", "LabelBitrateMbps": "Bitrate (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "Download unwatched videos only", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", "AutomaticallySyncNewContent": "Automatically download new content", "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "Maks. filer:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "Please select a device to download to.", "Screenshots": "Sk\u00e6rmbilleder", "MoveRight": "Flyt mod h\u00f8jre", @@ -428,6 +455,7 @@ "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", "LabelSyncTo": "Synkroniser til:", + "LabelConvertTo": "Convert to:", "Next": "Next", "LabelSource": "Source:", "LabelVersion": "Version:", @@ -441,10 +469,10 @@ "More": "More", "Up": "Up", "Down": "Down", + "Home": "Home", + "Favorites": "Favorites", "HeaderHomeScreen": "Home Screen", - "HeaderHomeScreenContent": "Home Screen Content", "HeaderLatestChannelItems": "Latest Channel Items", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "Library Order", "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", "HeaderOnNow": "On Now", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.", "Guide": "Guide", "Suggestions": "Suggestions", - "Favorites": "Favorites", + "HeaderFavoriteCollections": "Favorite Collections", + "HeaderFavoritePlaylists": "Favorite Playlists", "Collections": "Collections", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", "Shows": "Shows", "HeaderLibraryFolders": "Library Folders", - "HeaderLandingScreens": "Landing Screens", - "LandingScreensHelp": "Select the default landing screen when clicking on a library.", "HeaderTermsOfPurchase": "Terms of Purchase", "PrivacyPolicy": "Privacy policy", "TermsOfUse": "Terms of use", "RepeatMode": "Repeat mode", "RepeatOne": "Repeat one", "RepeatAll": "Repeat all", - "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", + "LabelDefaultScreen": "Default screen:", + "ConfirmEndPlayerSession": "Would you like to shutdown Emby on {0}?", "Yes": "Yes", "No": "No", "LiveTV": "Live TV", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video codec not supported", "AudioCodecNotSupported": "Audio codec not supported", "SubtitleCodecNotSupported": "Subtitle format not supported", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Container not supported", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "No subtitles", "Default": "Default", + "Absolute": "Absolute", "Smart": "Smart", "Small": "Small", + "Smaller": "Smaller", "Medium": "Medium", "Large": "Large", "ExtraLarge": "Extra large", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Stop recording", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Manage recording", "LabelDropImageHere": "Drop image here, or click to browse.", "MessageFileReadError": "There was an error reading the file. Please try again.", @@ -633,5 +668,22 @@ "Trailers": "Trailers", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteVideos": "Favorite Videos", + "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteSongs": "Favorite Songs", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Color space", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/de.json b/dashboard-ui/bower_components/emby-webcomponents/strings/de.json index 356186aaf2..f9b06d34e9 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/de.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/de.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Schalte diese Funktion mit einer kleinen einmaligen Geb\u00fchr oder einem aktiven Emby Premium Abo frei.", "MessageUnlockAppWithSupporter": "Schalte diese Funktion mit einem aktiven Emby Premium Abo frei.", "MessageToValidateSupporter": "Wenn du eine aktive Emby Premiere Mitgliedschaft hast, stelle bitte sicher, dass du diese \u00fcber das Emby Server Dashboard eingerichtet hast (Hauptmenu -> Emby Premiere).", @@ -17,7 +19,8 @@ "EndsAtValue": "Endet um {0}", "HeaderSelectDate": "Datum w\u00e4hlen", "Watched": "Gesehen", - "Played": "Gespielt", + "AirDate": "Ausstrahlungsdatum", + "Played": "Gesehen", "ButtonOk": "Ok", "ButtonCancel": "Abbrechen", "AccessRestrictedTryAgainLater": "Der Zugriff ist derzeit eingeschr\u00e4nkt. Bitte versuche es sp\u00e4ter erneut.", @@ -28,6 +31,12 @@ "RecordingScheduled": "Aufnahme geplant.", "SeriesRecordingScheduled": "Serien-Aufnahme geplant.", "HeaderNewRecording": "Neue Aufnahme", + "WakeServer": "Server aufwecken", + "HeaderWakeServer": "Server aufwecken", + "AttemptingWakeServer": "Versuche Server aufwecken. Bitte warten...", + "WakeServerSuccess": "Erfolgreich!", + "HeaderCustomizeHomeScreen": "Startbildschirm konfigurieren", + "WakeServerError": "Wake On LAN Pakete wurden an deinen Server geschickt, aber wir konnten deinen Emby Server nicht erreichen. Deine Maschine braucht vielleicht etwas l\u00e4nger um aufzuwachen oder Emby Server wird zur Zeit nicht ausgef\u00fchrt.", "Sunday": "Sonntag", "Monday": "Montag", "Tuesday": "Dienstag", @@ -36,6 +45,13 @@ "Friday": "Freitag", "Saturday": "Samstag", "Days": "Tage", + "SortByValue": "Sortieren nach {0}", + "LabelSortBy": "Sortiert nach:", + "LabelSortOrder": "Sortierreihenfolge", + "HeaderPhotoAlbums": "Fotoalben", + "Photos": "Fotos", + "HeaderAppearsOn": "Erscheint auf", + "List": "Liste", "RecordSeries": "Serie aufnehmen", "HeaderCinemaMode": "Kinomodus", "HeaderCloudSync": "Cloud Synchronisation", @@ -66,7 +82,7 @@ "HeaderDeleteItem": "L\u00f6sche Element", "ConfirmDeleteItem": "L\u00f6schen dieses Eintrages bedeutet das L\u00f6schen der Datei und das Entfernen aus der Medien-Bibliothek. M\u00f6chtest du wirklich fortfahren?", "Refresh": "Aktualisieren", - "RefreshQueued": "Warteschlange aktualisieren.", + "RefreshQueued": "Aktualisierung eingereiht.", "AddToCollection": "Zur Sammlung hinzuf\u00fcgen", "HeaderAddToCollection": "Zu Sammlung hinzuf\u00fcgen", "NewCollection": "Neue Collection", @@ -129,8 +145,8 @@ "ValueDiscNumber": "Disc {0}", "Unrated": "Nicht bewertet", "Favorite": "Favorit", - "Like": "Like", - "Dislike": "Dislike", + "Like": "Mag ich", + "Dislike": "Mag ich nicht", "RefreshDialogHelp": "Metadaten werden auf Basis der Einstellungen und Internet Services in den Emby Server Einstellungen aktualisiert.", "Open": "\u00d6ffnen", "Play": "Abspielen", @@ -138,7 +154,8 @@ "Shuffle": "Zufallswiedergabe", "Identify": "Identifizieren", "EditImages": "Bearbeite Bilder", - "EditInfo": "Info bearbeiten", + "EditMetadata": "Bearbeite Metadaten", + "Convert": "Konvertieren", "Sync": "Synchronisation", "InstantMix": "Schnellmix", "ViewAlbum": "Zeige Album", @@ -149,6 +166,7 @@ "ResumeAt": "Fortsetzen bei {0}", "RemoveFromPlaylist": "Von Wiedergabeliste entfernen", "RemoveFromCollection": "Aus Sammlung entfernen", + "Sort": "Sortieren", "Trailer": "Trailer", "MarkPlayed": "Markiere \"als gesehen\"", "MarkUnplayed": "Markiere \"als ungesehen\"", @@ -157,26 +175,31 @@ "TryMultiSelect": "Versuche Mehrfachauswahl", "TryMultiSelectMessage": "F\u00fcr eine Mehrfachauswahl klicke und halte ein Poster. W\u00e4hle die Eintr\u00e4ge die du bearbeiten m\u00f6chten. Versuch es!", "HeaderConfirmRecordingCancellation": "Best\u00e4tige Aufzeichnungsabbruch", - "MessageConfirmRecordingCancellation": "Bis du dir sicher, diese Aufzeichnung abzubrechen?", + "MessageConfirmRecordingCancellation": "Aufzeichnung abbrechen?", "Error": "Fehler", "VoiceInput": "Spracheingabe", "LabelContentType": "Typ des Inhalts:", "LabelPath": "Pfad:", - "Playlists": "Playlists", + "Playlists": "Wiedergabelisten", "LabelTitle": "Titel:", "LabelOriginalTitle": "Original Titel:", "LabelSortTitle": "Sortierungs Titel:", "LabelDateAdded": "Hinzugef\u00fcgt am:", + "DateAdded": "Hinzugef\u00fcgt am", + "DatePlayed": "Gesehen am", "ConfigureDateAdded": "Bestimme in den Bibliotheks-Einstellungen des Emby Server Dashboards, wie das Feld \"Hinzugef\u00fcgt am\" interpretiert werden soll.", "LabelStatus": "Status:", "LabelArtists": "Interpreten:", "LabelArtistsHelp": "Trenne mehrere Eintr\u00e4ge durch ;", - "HeaderAlbumArtists": "Album Artists", + "HeaderAlbumArtists": "Albuminterpreten", "LabelAlbumArtists": "Alben Interpreten:", "LabelAlbum": "Album:", "Artists": "Interpreten", + "ImdbRating": "IMDb Bewertung", + "CommunityRating": "Community Bewertung", "LabelCommunityRating": "Community Bewertung:", "LabelCriticRating": "Kritiker Bewertung:", + "CriticRating": "Kritiker Bewertung", "LabelWebsite": "Website:", "LabelTagline": "Tagline:", "LabelOverview": "\u00dcbersicht:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Ver\u00f6ffentlichungsdatum:", "LabelYear": "Jahr:", "LabelPlaceOfBirth": "Geburtsort:", + "Aired": "Ausgestrahlt", "LabelAirDays": "Ausstrahlungstage:", "LabelAirTime": "Ausstrahlungszeit:", "LabelRuntimeMinutes": "Laufzeit (Minuten):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Original Seitenverh\u00e4ltnis:", "Label3DFormat": "3D Format:", "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} Downloads", "PerfectMatch": "Perfektes Ergbnis", "EnableExternalVideoPlayers": "Aktiviere externe Videoplayer", "EnableExternalVideoPlayersHelp": "Ein Men\u00fc f\u00fcr externe Videoplayer wird beim Start der Videowiedergabe angezeigt.", - "HeaderAlternateEpisodeNumbers": "Alternative Episodennummern", - "LabelDvdSeasonNumber": "DVD Staffelnummer:", - "LabelDvdEpisodeNumber": "DVD Episodennummer:", - "LabelAbsoluteEpisodeNumber": "Absolute Episodennummer:", "HeaderSpecialEpisodeInfo": "Spezialepisoden Information", "LabelAirsBeforeSeason": "Ausstrahlungen vor Staffel:", "LabelAirsAfterSeason": "Ausstrahlungen nach Staffel:", @@ -231,7 +251,7 @@ "LabelParentNumber": "Ursprungsnummer:", "SortName": "Sortiername", "ReleaseDate": "Ver\u00f6ffentlichungsdatum", - "Continuing": "Fortdauernd", + "Continuing": "Fortlaufend", "Ended": "Beendent", "HeaderEnabledFields": "Aktiviere Felder", "HeaderEnabledFieldsHelp": "W\u00e4hle Felder ab um das \u00c4ndern von Daten zu verhindern.", @@ -241,6 +261,7 @@ "ProductionLocations": "Drehorte", "BirthLocation": "Geburtsort", "ParentalRating": "Altersfreigabe", + "PlayCount": "Wiedergabez\u00e4hler", "Name": "Name", "Overview": "\u00dcbersicht", "LabelType": "Typ:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "Das L\u00f6schen dieser Objekte l\u00f6scht die Dateien vom Laufwerk und in deiner Medienbibliothek. Bist du wirklich sicher?", "PleaseRestartServerName": "Bitte starte Emby Server - {0} neu.", "LabelSyncJobName": "Synchronisations-Aufgabe:", - "SyncJobCreated": "Synchronisationsaufgabe erstellt", + "SyncingDots": "Synchronisieren...", + "ConvertingDots": "Konvertieren...", "LabelQuality": "Qualit\u00e4t:", "LabelSyncNoTargetsHelp": "Es sieht so aus als w\u00fcrdest du aktuell keine Apps verwenden, die Offline-Downloads unterst\u00fctzen.", "DownloadingDots": "L\u00e4dt herunter...", @@ -297,12 +319,17 @@ "LearnMore": "Erfahre mehr", "LabelProfile": "Profil:", "LabelBitrateMbps": "Bitrate (Mbps):", + "ConvertUnwatchedVideosOnly": "Konvertiere nur ungesehen Videos", "SyncUnwatchedVideosOnly": "Lade nur ungesehene Videos herunter", + "ConvertUnwatchedVideosOnlyHelp": "Nur ungesehene Videos werden konvertiert.", "SyncUnwatchedVideosOnlyHelp": "Nur ungesehene Video werden heruntergeladen. Videos werden entfernt sobald diese auf dem Ger\u00e4t angeschaut wurden.", "AutomaticallySyncNewContent": "Lade neue Inhalte automatisch herunter", "AutomaticallySyncNewContentHelp": "Neu zu diesem Ordner hinzugef\u00fcgte Inhalte werden automatisch auf das Ger\u00e4t heruntergeladen.", + "AutomaticallyConvertNewContent": "Konvertiere neue Inhalte automatisch", + "AutomaticallyConvertNewContentHelp": "Neue Inhalte in diesem Ordner werden automatisch konveriert.", "LabelItemLimit": "Maximale Anzahl:", - "LabelItemLimitHelp": "Optional. Lege die maximale Anzahl der herunterzuladenden Eintr\u00e4ge fest.", + "ConvertItemLimitHelp": "Optional. Lege die maximale Anzahl der zu konvertierenden Dateien fest.", + "DownloadItemLimitHelp": "Optional. Lege die maximale Anzahl der herunterzuladenden Dateien fest.", "PleaseSelectDeviceToSyncTo": "Bitte w\u00e4hle ein Download-Zielger\u00e4t.", "Screenshots": "Screenshots", "MoveRight": "Nach rechts bewegen", @@ -334,7 +361,7 @@ "LabelChannels": "Kan\u00e4le:", "ChannelNameOnly": "Nur Kanal {0}", "Anytime": "Jederzeit", - "AnyLanguage": "Any language", + "AnyLanguage": "Jede Sprache", "AroundTime": "Um {0}", "All": "Alle", "AllChannels": "Alle Kan\u00e4le:", @@ -421,13 +448,14 @@ "HeaderMyMedia": "Meine Medien", "HeaderMyMediaSmall": "Meine Medien (Klein)", "LatestFromLibrary": "Neueste {0}", - "ContinueWatching": "Continue watching", + "ContinueWatching": "Weiterschauen", "HeaderLatestChannelMedia": "Neueste Channelinhalte", "HeaderContinueWatching": "Weiterschauen", "HeaderContinueListening": "Weiterh\u00f6ren", "HeaderActiveRecordings": "Aktive Aufnahmen", "HeaderLatestRecordings": "Neueste Aufnahmen", "LabelSyncTo": "Synchronisiere mit:", + "LabelConvertTo": "Konvertiere nach:", "Next": "N\u00e4chstes", "LabelSource": "Quelle:", "LabelVersion": "Version:", @@ -441,10 +469,10 @@ "More": "Mehr", "Up": "Hoch", "Down": "Runter", + "Home": "Home", + "Favorites": "Favoriten", "HeaderHomeScreen": "Startseite", - "HeaderHomeScreenContent": "Startbildschirminhalte", "HeaderLatestChannelItems": "Neueste Channelinhalte", - "LabelSelectHomeScreenItemsFolders": "Erlaube auf dem Startbildschirm die Anzeige von Inhalten aus:", "HeaderLibraryOrder": "Bibliotheksreihenfolge", "HideWatchedContentFromLatestMedia": "Verberge gesehene Inhalte von neuesten Medien.", "HeaderOnNow": "Gerade l\u00e4uft", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Bitte lege die Disc ein um das Video abzuspielen.", "Guide": "TV Guide", "Suggestions": "Empfehlungen", - "Favorites": "Favoriten", + "HeaderFavoriteCollections": "Lieblingssammlungen", + "HeaderFavoritePlaylists": "Lieblingswiedergabelisten", "Collections": "Sammlungen", "LabelSelectFolderGroups": "Gruppiere Inhalte von folgenden Verzeichnissen automatisch zu Ansichten wie beispielsweise Filme, Musik und TV:", "LabelSelectFolderGroupsHelp": "Verzeichnisse die nicht markiert sind werden alleine mit ihren eigenen Ansichten angezeigt.", + "Folders": "Verzeichnisse", + "DisplayInOtherHomeScreenSections": "Zeige auf dem Homescreen Bereiche wie 'Neueste Medien' oder 'Weiterschauen'", + "DisplayInMyMedia": "Zeige auf Homescreen", "Shows": "Serien", "HeaderLibraryFolders": "Bibliotheksverzeichnisse", - "HeaderLandingScreens": "Einstiegsbildschirme", - "LandingScreensHelp": "W\u00e4hle den Standard-Einstiegsbildschirm bei Klick auf eine Bibliothek.", "HeaderTermsOfPurchase": "Bestellungsbedingungen", "PrivacyPolicy": "Datenschutzbestimmungen", "TermsOfUse": "Nutzungsbedingungen", "RepeatMode": "Wiederholungsmodus", "RepeatOne": "Dieses wiederholen", "RepeatAll": "Alles wiederholen", - "ConfirmEndPlayerSession": "M\u00f6chtest du Emby auf diesem Ger\u00e4t beenden?", + "LabelDefaultScreen": "Standardscreen:", + "ConfirmEndPlayerSession": "M\u00f6chtest du Emby auf {0} beenden?", "Yes": "Ja", "No": "Nein", "LiveTV": "Live TV", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video Codec nicht unterst\u00fctzt", "AudioCodecNotSupported": "Audio Codec nicht unterst\u00fctzt", "SubtitleCodecNotSupported": "Untertitelformat nicht unterst\u00fctzt", + "DirectPlayError": "Fehler bei der direkten Wiedergabe", "ContainerNotSupported": "Container nicht unterst\u00fctzt", "VideoLevelNotSupported": "Video Level nicht unterst\u00fctzt", "AudioBitrateNotSupported": "Audio Bitrate nicht unterst\u00fctzt", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "Fehler beim L\u00f6schen des Mediums vom Emby Server. Bitte stelle sicher dass der Emby Server Schreibzugriff auf den Dateiordner hat und versuche es erneut.", "NoSubtitles": "Keine Untertitel", "Default": "Standard", + "Absolute": "Absolut", "Smart": "Smart", "Small": "Klein", + "Smaller": "Kleiner", "Medium": "Mittel", "Large": "Gro\u00df", "ExtraLarge": "Extragro\u00df", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Anzahl der Videoreferenzframes nicht unterst\u00fctzt", "ErrorConnectServerUnreachable": "Es gab einen Fehler bei bei der Ausf\u00fchrung des Funktion. Dein Server ist nicht in der Lage unsere Emby-Connect-Server zu erreichen um {0}. Stelle bitte sicher, dass dein Server eine aktive Internetverbindung hat und die Kommunikations durch die Firewall oder andere installierte Sicherheitssoftware erlaubt wurde.", "StopRecording": "Aufnahme stoppen", + "HeaderStopRecording": "Aufnahme stoppen", "ManageRecording": "Aufnahme verwalten", "LabelDropImageHere": "Fotos hierher ziehen oder klicken im zu browsen.", "MessageFileReadError": "Es gab einen Fehler beim Lesen der Datei. Bitte versuche es erneut.", @@ -617,21 +652,38 @@ "TagsValue": "Tags: {0}", "LabelAudio": "Audio:", "LabelVideo": "Video:", - "LabelSubtitles": "Subtitles:", - "Off": "Off", - "ShowTitle": "Show title", - "ShowYear": "Show year", - "Filters": "Filters", - "Unplayed": "Unplayed", - "LabelTVHomeScreen": "TV mode home screen:", + "LabelSubtitles": "Untertitel:", + "Off": "Aus", + "ShowTitle": "Zeige Titel", + "ShowYear": "Zeige Jahr", + "Filters": "Filter", + "Unplayed": "Ungesehen", + "LabelTVHomeScreen": "TV-Mode Startseite", "Horizontal": "Horizontal", - "Vertical": "Vertical", - "GroupBySeries": "Group by series", - "HeaderVideoType": "Video Type", - "HeaderSeriesStatus": "Series Status", + "Vertical": "Vertikal", + "GroupBySeries": "Nach Serien gruppieren", + "HeaderVideoType": "Videotyp:", + "HeaderSeriesStatus": "Serienstatus:", "Features": "Features", - "Trailers": "Trailers", + "Trailers": "Trailer", "Extras": "Extras", - "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeSongs": "Titelsongs", + "ThemeVideos": "Titelvideos", + "HeaderFavoriteMovies": "Lieblingsfilme", + "HeaderFavoriteShows": "Lieblingsserien", + "HeaderFavoriteEpisodes": "Lieblingsepisoden", + "HeaderFavoriteVideos": "Lieblingsvideos", + "HeaderFavoriteGames": "Lieblingsspiele", + "HeaderFavoriteArtists": "Lieblingsk\u00fcnstler", + "HeaderFavoriteAlbums": "Lieblingsalben", + "HeaderFavoriteSongs": "Lieblingssongs", + "Ascending": "Aufsteigend", + "Descending": "Absteigend", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Farbraum", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Sortiere Episoden nach Ausstrahlungsdatum, DVD Reihenfolge oder absoluter Nummerierung.", + "PlaybackSettingsIntro": "Um die Wiedergabeeinstellungen zu \u00e4ndern, stoppen Sie die Wiedergabe und klicken Sie auf Ihr Benutzer-Icon in der oberen rechten Ecke der App.", + "SubtitleSettingsIntro": "Um das Aussehen der Untertitel und die Spracheinstellungen zu \u00e4ndern, stoppen Sie die Wiedergabe und klicken Sie auf Ihr Benutzer-Icon in der oberen rechten Ecke der App." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/el.json b/dashboard-ui/bower_components/emby-webcomponents/strings/el.json index 2b181e7cf3..cb88caa75e 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/el.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/el.json @@ -1,33 +1,42 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "\u039e\u03b5\u03ba\u03bb\u03b5\u03b9\u03b4\u03ce\u03c3\u03c4\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03b7\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03ba\u03b1\u03c4\u03b1\u03b2\u03ac\u03bb\u03bf\u03bd\u03c4\u03b1\u03c2 \u03ad\u03bd\u03b1 \u03c0\u03bf\u03bb\u03cd \u03bc\u03b9\u03ba\u03c1\u03cc \u03ba\u03cc\u03c3\u03c4\u03bf\u03c2 \u03ae \u03bc\u03b5 \u03bc\u03af\u03b1 \u03b5\u03bd\u03b5\u03c1\u03b3\u03ae \u03c3\u03c5\u03bd\u03b4\u03c1\u03bf\u03bc\u03ae \u03c3\u03c4\u03bf Emby Premiere.", "MessageUnlockAppWithSupporter": "\u039e\u03b5\u03ba\u03bb\u03b5\u03b9\u03b4\u03ce\u03c3\u03c4\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03b7\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03bc\u03b5 \u03bc\u03af\u03b1 \u03b5\u03bd\u03b5\u03c1\u03b3\u03ae \u03c3\u03c5\u03bd\u03b4\u03c1\u03bf\u03bc\u03ae \u03c3\u03c4\u03bf Emby Premiere.", "MessageToValidateSupporter": "\u0391\u03bd \u03ad\u03c7\u03b5\u03c4\u03b5 \u03b5\u03bd\u03b5\u03c1\u03b3\u03ae \u03c3\u03c5\u03bd\u03b4\u03c1\u03bf\u03bc\u03ae Emby Premiere, \u03b2\u03b5\u03b2\u03b1\u03b9\u03c9\u03b8\u03b5\u03af\u03c4\u03b5 \u03cc\u03c4\u03b9 \u03ad\u03c7\u03b5\u03c4\u03b5 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9 \u03c4\u03bf Emby Premiere \u03c3\u03c4\u03bf\u03bd \u03c0\u03af\u03bd\u03b1\u03ba\u03b1 \u03b5\u03bb\u03ad\u03b3\u03c7\u03bf\u03c5 \u03c4\u03bf\u03c5 Emby Server, \u03c3\u03c4\u03bf\u03bd \u03bf\u03c0\u03bf\u03af\u03bf \u03bc\u03c0\u03bf\u03c1\u03b5\u03af\u03c4\u03b5 \u03bd\u03b1 \u03ad\u03c7\u03b5\u03c4\u03b5 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03ba\u03ac\u03bd\u03bf\u03bd\u03c4\u03b1\u03c2 \u03ba\u03bb\u03b9\u03ba \u03c3\u03c4\u03bf Emby Premiere \u03c3\u03c4\u03bf \u03ba\u03cd\u03c1\u03b9\u03bf \u03bc\u03b5\u03bd\u03bf\u03cd.", "ValueSpecialEpisodeName": "\u0395\u03b9\u03b4\u03b9\u03ba\u03ac - {0} ", - "Share": "\u03ba\u03bf\u03b9\u03bd\u03ae \u03c7\u03c1\u03ae\u03c3\u03b7", - "Add": "\u03a0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c3\u03b5", - "ServerUpdateNeeded": "\u0391\u03c5\u03c4\u03cc\u03c2 \u03bf \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae\u03c2 Emby \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03bd\u03b7\u03bc\u03b5\u03c1\u03c9\u03b8\u03b5\u03af. \u0393\u03b9\u03b1 \u03bd\u03b1 \u03ba\u03ac\u03bd\u03b5\u03c4\u03b5 \u03bb\u03ae\u03c8\u03b7 \u03c4\u03b7\u03c2 \u03c4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b1\u03c2 \u03ad\u03ba\u03b4\u03bf\u03c3\u03b7\u03c2, \u03b5\u03c0\u03b9\u03c3\u03ba\u03b5\u03c6\u03b8\u03b5\u03af\u03c4\u03b5 \u03c4\u03b7\u03bd {0}", - "LiveTvRequiresUnlock": "\u039f \u0396\u03c9\u03bd\u03c4\u03b1\u03bd\u03ae \u03a4\u03b7\u03bb\u03b5\u03cc\u03c1\u03b1\u03c3\u03b7 \u03b1\u03c0\u03b1\u03b9\u03c4\u03b5\u03af \u03bc\u03af\u03b1 \u03b5\u03bd\u03b5\u03c1\u03b3\u03ae \u03c3\u03c5\u03bd\u03b4\u03c1\u03bf\u03bc\u03ae \u03c3\u03c4\u03bf Emby Premiere", + "Share": "\u039a\u03bf\u03b9\u03bd\u03ae \u03c7\u03c1\u03ae\u03c3\u03b7", + "Add": "\u03a0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7", + "ServerUpdateNeeded": "\u0391\u03c5\u03c4\u03cc\u03c2 \u03bf Emby Server \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03bd\u03b7\u03bc\u03b5\u03c1\u03c9\u03b8\u03b5\u03af. \u0393\u03b9\u03b1 \u03bd\u03b1 \u03ba\u03ac\u03bd\u03b5\u03c4\u03b5 \u03bb\u03ae\u03c8\u03b7 \u03c4\u03b7\u03c2 \u03c4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b1\u03c2 \u03ad\u03ba\u03b4\u03bf\u03c3\u03b7\u03c2, \u03b5\u03c0\u03b9\u03c3\u03ba\u03b5\u03c6\u03b8\u03b5\u03af\u03c4\u03b5 \u03c4\u03b7\u03bd {0}", + "LiveTvRequiresUnlock": "\u0397 \u0396\u03c9\u03bd\u03c4\u03b1\u03bd\u03ae \u03a4\u03b7\u03bb\u03b5\u03cc\u03c1\u03b1\u03c3\u03b7 \u03b1\u03c0\u03b1\u03b9\u03c4\u03b5\u03af \u03bc\u03af\u03b1 \u03b5\u03bd\u03b5\u03c1\u03b3\u03ae \u03c3\u03c5\u03bd\u03b4\u03c1\u03bf\u03bc\u03ae \u03c3\u03c4\u03bf Emby Premiere.", "AttributeNew": "\u039d\u03ad\u03bf", - "Premiere": "Premiere", + "Premiere": "\u03a0\u03c1\u03b5\u03bc\u03b9\u03ad\u03c1\u03b1", "Live": "\u0396\u03c9\u03bd\u03c4\u03b1\u03bd\u03ac", "Repeat": "\u0395\u03c0\u03b1\u03bd\u03ac\u03bb\u03b7\u03c8\u03b7", - "TrackCount": "{0} \u0397\u03c7\u03b7\u03c4\u03b9\u03ba\u03ac \u03ba\u03bf\u03bc\u03bc\u03ac\u03c4\u03b9\u03b1", - "ItemCount": "{0} \u03a3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1", + "TrackCount": "{0} \u03ba\u03bf\u03bc\u03bc\u03ac\u03c4\u03b9\u03b1", + "ItemCount": "{0} \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1", "OriginalAirDateValue": "\u0391\u03c1\u03c7\u03b9\u03ba\u03ae \u03b7\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03ba\u03c5\u03ba\u03bb\u03bf\u03c6\u03bf\u03c1\u03af\u03b1\u03c2: {0}", "EndsAtValue": "\u03a4\u03b5\u03bb\u03b5\u03b9\u03ce\u03bd\u03b5\u03b9 \u03c3\u03b5 {0}", "HeaderSelectDate": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1\u03c2", - "Watched": "\u03a0\u03b1\u03c1\u03b1\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03ae\u03c3\u03b1\u03bd", - "Played": "\u0391\u03bd\u03b1\u03c0\u03b1\u03c1\u03ac\u03c7\u03b8\u03b7\u03ba\u03b5", + "Watched": "\u0388\u03c7\u03b5\u03b9 \u03b3\u03af\u03bd\u03b5\u03b9 \u03c0\u03b1\u03c1\u03b1\u03ba\u03bf\u03bb\u03bf\u03cd\u03b8\u03b7\u03c3\u03b7", + "AirDate": "\u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03c0\u03c1\u03bf\u03b2\u03bf\u03bb\u03ae\u03c2", + "Played": "\u0388\u03b3\u03b9\u03bd\u03b5 \u0391\u03bd\u03b1\u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03ae", "ButtonOk": "Ok", "ButtonCancel": "\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7 ", "AccessRestrictedTryAgainLater": "\u0397 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03c0\u03af \u03c4\u03bf\u03c5 \u03c0\u03b1\u03c1\u03cc\u03bd\u03c4\u03bf\u03c2 \u03c0\u03b5\u03c1\u03b9\u03bf\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03b7. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b4\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac \u03b1\u03c1\u03b3\u03cc\u03c4\u03b5\u03c1\u03b1.", - "ButtonGotIt": "\u03a4\u03bf \u03c0\u03ae\u03c1\u03b1", + "ButtonGotIt": "\u03a4\u03bf \u03ba\u03b1\u03c4\u03ac\u03bb\u03b1\u03b2\u03b1", "ButtonRestart": "\u0395\u03c0\u03b1\u03bd\u03b5\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7", - "RecordingCancelled": "\u0397 \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae \u03b1\u03ba\u03c5\u03c1\u03ce\u03b8\u03b7\u03ba\u03b5", - "SeriesCancelled": "\u0397 \u03a3\u03b5\u03b9\u03c1\u03ac \u03b1\u03ba\u03c5\u03c1\u03ce\u03b8\u03b7\u03ba\u03b5", - "RecordingScheduled": "\u03a0\u03c1\u03bf\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03b9\u03c3\u03bc\u03ad\u03bd\u03b5\u03c2 \u0395\u03b3\u03b3\u03c1\u03b1\u03c6\u03ad\u03c2", + "RecordingCancelled": "\u0397 \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae \u03b1\u03ba\u03c5\u03c1\u03ce\u03b8\u03b7\u03ba\u03b5.", + "SeriesCancelled": "\u0397 \u03a3\u03b5\u03b9\u03c1\u03ac \u03b1\u03ba\u03c5\u03c1\u03ce\u03b8\u03b7\u03ba\u03b5.", + "RecordingScheduled": "\u0397 \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae \u03c0\u03c1\u03bf\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03af\u03c3\u03c4\u03b9\u03ba\u03b5.", "SeriesRecordingScheduled": "\u03a0\u03c1\u03bf\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03b9\u03c3\u03bc\u03cc\u03c2 \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ce\u03bd \u03a3\u03b5\u03b9\u03c1\u03ce\u03bd", "HeaderNewRecording": "\u039d\u03ad\u03b1 \u0395\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae", + "WakeServer": "\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 server", + "HeaderWakeServer": "\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 Server", + "AttemptingWakeServer": "\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 server \u03c3\u03b5 \u03b5\u03be\u03ad\u03bb\u03b9\u03be\u03b7. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03c0\u03b5\u03c1\u03b9\u03bc\u03ad\u03bd\u03b5\u03c4\u03b5...", + "WakeServerSuccess": "\u0395\u03c0\u03b9\u03c4\u03c5\u03c7\u03af\u03b1!", + "HeaderCustomizeHomeScreen": "\u03a0\u03c1\u03bf\u03c3\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae \u03b1\u03c1\u03c7\u03b9\u03ba\u03ae\u03c2 \u03bf\u03b8\u03cc\u03bd\u03b7\u03c2", + "WakeServerError": "\u03a4\u03b1 \u03c0\u03b1\u03ba\u03ad\u03c4\u03b1 Wake On LAN \u03c3\u03c4\u03ac\u03bb\u03b8\u03b7\u03ba\u03b1\u03bd \u03c3\u03c4\u03bf\u03bd server \u03c3\u03b1\u03c2, \u03b1\u03bb\u03bb\u03ac \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03bc\u03b5 \u03c4\u03bf\u03bd Emby Server. \u03a4\u03bf \u03bc\u03b7\u03c7\u03ac\u03bd\u03b7\u03bc\u03ac \u03c3\u03b1\u03c2 \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03c7\u03c1\u03b5\u03b9\u03b1\u03c3\u03c4\u03b5\u03af \u03bb\u03af\u03b3\u03bf \u03c0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03bf \u03c7\u03c1\u03cc\u03bd\u03bf \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03b8\u03b5\u03af, \u03ae \u03bf Emby Server \u03b5\u03bd\u03b4\u03ad\u03c7\u03b5\u03c4\u03b1\u03b9 \u03bd\u03b1 \u03bc\u03b7\u03bd \u03b5\u03ba\u03c4\u03b5\u03bb\u03b5\u03af\u03c4\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03ac \u03c3\u03c4\u03bf \u03bc\u03b7\u03c7\u03ac\u03bd\u03b7\u03bc\u03b1.", "Sunday": "\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae", "Monday": "\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1", "Tuesday": "\u03a4\u03c1\u03af\u03c4\u03b7", @@ -36,6 +45,13 @@ "Friday": "\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae", "Saturday": "\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf", "Days": "\u0397\u03bc\u03ad\u03c1\u03b5\u03c2", + "SortByValue": "\u03a4\u03b1\u03be\u03b9\u03bd\u03cc\u03bc\u03b7\u03c3\u03b7 \u03ba\u03b1\u03c4\u03ac {0}", + "LabelSortBy": "\u03a4\u03b1\u03be\u03b9\u03bd\u03cc\u03bc\u03b7\u03c3\u03b7 \u03ba\u03b1\u03c4\u03ac:", + "LabelSortOrder": "\u03a3\u03b5\u03b9\u03c1\u03ac \u03c4\u03b1\u03be\u03b9\u03bd\u03cc\u03bc\u03b7\u03c3\u03b7\u03c2:", + "HeaderPhotoAlbums": "\u0386\u03bb\u03bc\u03c0\u03bf\u03c5\u03bc \u03c6\u03c9\u03c4\u03bf\u03b3\u03c1\u03b1\u03c6\u03b9\u03ce\u03bd", + "Photos": "\u03a6\u03c9\u03c4\u03bf\u03b3\u03c1\u03b1\u03c6\u03af\u03b5\u03c2", + "HeaderAppearsOn": "\u0395\u03bc\u03c6\u03b1\u03bd\u03af\u03b6\u03b5\u03c4\u03b1\u03b9 \u03c3\u03b5", + "List": "\u039b\u03af\u03c3\u03c4\u03b1", "RecordSeries": "\u0395\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae \u03a3\u03b5\u03b9\u03c1\u03ce\u03bd", "HeaderCinemaMode": "\u039b\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u039a\u03b9\u03bd\u03b7\u03bc\u03b1\u03c4\u03bf\u03b3\u03c1\u03ac\u03c6\u03bf\u03c5", "HeaderCloudSync": "\u03a3\u03c5\u03b3\u03c7\u03c1\u03bf\u03bd\u03b9\u03c3\u03bc\u03cc\u03c2 Cloud", @@ -43,30 +59,30 @@ "HeaderMyDownloads": "\u039f\u03b9 \u039b\u03ae\u03c8\u03b5\u03b9\u03c2 \u03bc\u03bf\u03c5", "HeaderOfflineDownloads": "\u03a0\u03bf\u03bb\u03c5\u03bc\u03ad\u03c3\u03b1 \u03b5\u03ba\u03c4\u03cc\u03c2 \u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2", "HeaderOfflineDownloadsDescription": "\u039a\u03ac\u03bd\u03c4\u03b5 \u03bb\u03ae\u03c8\u03b7 \u03bc\u03ad\u03c3\u03c9\u03bd \u03c3\u03c4\u03b9\u03c2 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ad\u03c2 \u03c3\u03b1\u03c2 \u03b3\u03b9\u03b1 \u03b5\u03cd\u03ba\u03bf\u03bb\u03b7 \u03c7\u03c1\u03ae\u03c3\u03b7 \u03b5\u03ba\u03c4\u03cc\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2.", - "CloudSyncFeatureDescription": "\u03a3\u03c5\u03b3\u03c7\u03c1\u03bf\u03bd\u03af\u03c3\u03c4\u03b5 \u03c4\u03b1 \u03bc\u03ad\u03c3\u03b1 \u03c3\u03b1\u03c2 \u03c3\u03c4\u03bf \u03c3\u03cd\u03bd\u03bd\u03b5\u03c6\u03bf \u03b3\u03b9\u03b1 \u03b5\u03cd\u03ba\u03bf\u03bb\u03b7 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b1\u03bd\u03c4\u03b9\u03b3\u03c1\u03ac\u03c6\u03c9\u03bd \u03b1\u03c3\u03c6\u03b1\u03bb\u03b5\u03af\u03b1\u03c2, \u03b1\u03c1\u03c7\u03b5\u03b9\u03bf\u03b8\u03ad\u03c4\u03b7\u03c3\u03b7 \u03ba\u03b1\u03b9 \u03bc\u03b5\u03c4\u03b1\u03c4\u03c1\u03bf\u03c0\u03ae.", - "LiveTvFeatureDescription": "Stream Live TV \u03c3\u03b5 \u03bf\u03c0\u03bf\u03b9\u03b1\u03b4\u03ae\u03c0\u03bf\u03c4\u03b5 \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae Emby, \u03bc\u03b5 \u03c3\u03c5\u03bc\u03b2\u03b1\u03c4\u03ae \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03c4\u03b7\u03bb\u03b5\u03bf\u03c0\u03c4\u03b9\u03ba\u03bf\u03cd \u03b4\u03ad\u03ba\u03c4\u03b7 \u03b5\u03b3\u03ba\u03b1\u03c4\u03b5\u03c3\u03c4\u03b7\u03bc\u03ad\u03bd\u03b7 \u03c3\u03c4\u03bf\u03bd \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae \u03c3\u03b1\u03c2 Emby.", - "DvrFeatureDescription": "\u03a0\u03c1\u03bf\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03af\u03c3\u03c4\u03b5 \u03bc\u03b5\u03bc\u03bf\u03bd\u03c9\u03bc\u03ad\u03bd\u03b5\u03c2 \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ad\u03c2 Live TV, \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ad\u03c2 \u03c3\u03b5 \u03c3\u03b5\u03b9\u03c1\u03ac \u03ba\u03b1\u03b9 \u03c0\u03bf\u03bb\u03bb\u03ac \u03ac\u03bb\u03bb\u03b1 \u03bc\u03b5 \u03c4\u03bf DVR Emby.", + "CloudSyncFeatureDescription": "\u03a3\u03c5\u03b3\u03c7\u03c1\u03bf\u03bd\u03af\u03c3\u03c4\u03b5 \u03c4\u03b1 \u03c0\u03bf\u03bb\u03c5\u03bc\u03ad\u03c3\u03b1 \u03c3\u03b1\u03c2 \u03c3\u03c4\u03bf cloud \u03b3\u03b9\u03b1 \u03b5\u03cd\u03ba\u03bf\u03bb\u03b7 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b1\u03bd\u03c4\u03b9\u03b3\u03c1\u03ac\u03c6\u03c9\u03bd \u03b1\u03c3\u03c6\u03b1\u03bb\u03b5\u03af\u03b1\u03c2, \u03b1\u03c1\u03c7\u03b5\u03b9\u03bf\u03b8\u03ad\u03c4\u03b7\u03c3\u03b7 \u03ba\u03b1\u03b9 \u03bc\u03b5\u03c4\u03b1\u03c4\u03c1\u03bf\u03c0\u03ae.", + "LiveTvFeatureDescription": "\u039a\u03ac\u03bd\u03c4\u03b5 stream \u03b6\u03c9\u03bd\u03c4\u03b1\u03bd\u03ae\u03c2 \u03c4\u03b7\u03bb\u03b5\u03cc\u03c1\u03b1\u03c3\u03b7\u03c2 \u03c3\u03b5 \u03bf\u03c0\u03bf\u03b9\u03b1\u03b4\u03ae\u03c0\u03bf\u03c4\u03b5 \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae Emby, \u03bc\u03b5 \u03c3\u03c5\u03bc\u03b2\u03b1\u03c4\u03ae \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03c4\u03b7\u03bb\u03b5\u03bf\u03c0\u03c4\u03b9\u03ba\u03bf\u03cd \u03b4\u03ad\u03ba\u03c4\u03b7 \u03b5\u03b3\u03ba\u03b1\u03c4\u03b5\u03c3\u03c4\u03b7\u03bc\u03ad\u03bd\u03b7 \u03c3\u03c4\u03bf\u03bd \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae \u03c3\u03b1\u03c2 Emby.", + "DvrFeatureDescription": "\u03a0\u03c1\u03bf\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03af\u03c3\u03c4\u03b5 \u03bc\u03b5\u03bc\u03bf\u03bd\u03c9\u03bc\u03ad\u03bd\u03b5\u03c2 \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ad\u03c2 Live TV, \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ad\u03c2 \u03c3\u03b5\u03b9\u03c1\u03ce\u03bd \u03ba\u03b1\u03b9 \u03c0\u03bf\u03bb\u03bb\u03ac \u03ac\u03bb\u03bb\u03b1 \u03bc\u03b5 \u03c4\u03bf Emby DVR.", "CinemaModeFeatureDescription": "\u0397 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u039a\u03b9\u03bd\u03b7\u03bc\u03b1\u03c4\u03bf\u03b3\u03c1\u03ac\u03c6\u03bf\u03c5 \u03c3\u03ac\u03c2 \u03c0\u03c1\u03bf\u03c3\u03c6\u03ad\u03c1\u03b5\u03b9 \u03c4\u03b7\u03bd \u03c0\u03c1\u03b1\u03b3\u03bc\u03b1\u03c4\u03b9\u03ba\u03ae \u03ba\u03b9\u03bd\u03b7\u03bc\u03b1\u03c4\u03bf\u03b3\u03c1\u03b1\u03c6\u03b9\u03ba\u03ae \u03b5\u03bc\u03c0\u03b5\u03b9\u03c1\u03af\u03b1 \u03bc\u03b5 \u03c1\u03c5\u03bc\u03bf\u03c5\u03bb\u03ba\u03bf\u03cd\u03bc\u03b5\u03bd\u03b1 \u03ba\u03b1\u03b9 \u03c0\u03c1\u03bf\u03c3\u03b1\u03c1\u03bc\u03bf\u03c3\u03bc\u03ad\u03bd\u03b5\u03c2 intros \u03c0\u03c1\u03b9\u03bd \u03b1\u03c0\u03cc \u03c4\u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1.", "HeaderFreeApps": "\u0394\u03c9\u03c1\u03b5\u03ac\u03bd \u0395\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ad\u03c2 Emby", "FreeAppsFeatureDescription": "\u0391\u03c0\u03bf\u03bb\u03b1\u03cd\u03c3\u03c4\u03b5 \u03b4\u03c9\u03c1\u03b5\u03ac\u03bd \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03b5 \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ad\u03c2 Emby \u03b3\u03b9\u03b1 \u03c4\u03b9\u03c2 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ad\u03c2 \u03c3\u03b1\u03c2.", "HeaderBecomeProjectSupporter": "\u0391\u03c0\u03cc\u03ba\u03c4\u03b7\u03c3\u03b5 \u03a3\u03c5\u03bd\u03b4\u03c1\u03bf\u03bc\u03ae Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "\u0391\u03c0\u03b1\u03b9\u03c4\u03b5\u03af\u03c4\u03b1\u03b9 \u03bc\u03b9\u03b1 \u03b5\u03bd\u03b5\u03c1\u03b3\u03ae \u03c3\u03c5\u03bd\u03b4\u03c1\u03bf\u03bc\u03ae Emby Premiere \u03b3\u03b9\u03b1 \u03c4\u03b7 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b1\u03c5\u03c4\u03bf\u03bc\u03b1\u03c4\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03c9\u03bd \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ce\u03bd \u03c3\u03b5 \u03c3\u03b5\u03b9\u03c1\u03ad\u03c2.", "LabelEmailAddress": "\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 E-mail", - "PromoConvertRecordingsToStreamingFormat": "\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03bc\u03b5\u03c4\u03b1\u03c4\u03c1\u03bf\u03c0\u03ae \u03c4\u03c9\u03bd \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ce\u03bd \u03c3\u03b5 \u03c6\u03b9\u03bb\u03b9\u03ba\u03ae \u03c0\u03c1\u03bf\u03c2 \u03c4\u03bf streaming \u03bc\u03bf\u03c1\u03c6\u03ae \u03bc\u03b5 \u03c4\u03b7\u03bd Emby Premiere. \u039f\u03b9 \u03b7\u03c7\u03bf\u03b3\u03c1\u03b1\u03c6\u03ae\u03c3\u03b5\u03b9\u03c2 \u03b8\u03b1 \u03bc\u03b5\u03c4\u03b1\u03c4\u03c1\u03b1\u03c0\u03bf\u03cd\u03bd \u03c3\u03b5 \u03bc\u03bf\u03c1\u03c6\u03ae MP4 \u03ae MKV, \u03bc\u03b5 \u03b2\u03ac\u03c3\u03b7 \u03c4\u03b9\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u03c4\u03bf\u03c5 \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae Emby.", - "FeatureRequiresEmbyPremiere": "\u039e\u03b5\u03ba\u03bb\u03b5\u03b9\u03b4\u03ce\u03c3\u03c4\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03b7\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03bc\u03b5 \u03bc\u03af\u03b1 \u03b5\u03bd\u03b5\u03c1\u03b3\u03ae \u03c3\u03c5\u03bd\u03b4\u03c1\u03bf\u03bc\u03ae \u03c3\u03c4\u03bf Emby Premiere.", + "PromoConvertRecordingsToStreamingFormat": "\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03bc\u03b5\u03c4\u03b1\u03c4\u03c1\u03bf\u03c0\u03ae \u03c4\u03c9\u03bd \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ce\u03bd \u03c3\u03b5 \u03c6\u03b9\u03bb\u03b9\u03ba\u03ae \u03bc\u03bf\u03c1\u03c6\u03ae \u03b3\u03b9\u03b1 streaming \u03bc\u03b5 \u03c4\u03bf Emby Premiere. \u039f\u03b9 \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ad\u03c2 \u03b8\u03b1 \u03bc\u03b5\u03c4\u03b1\u03c4\u03c1\u03b1\u03c0\u03bf\u03cd\u03bd \u03c3\u03b5 \u03bc\u03bf\u03c1\u03c6\u03ae MP4 \u03ae MKV, \u03bc\u03b5 \u03b2\u03ac\u03c3\u03b7 \u03c4\u03b9\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u03c4\u03bf\u03c5 \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae Emby.", + "FeatureRequiresEmbyPremiere": "\u0391\u03c5\u03c4\u03ae \u03b7 \u03b4\u03c5\u03bd\u03b1\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1 \u03b1\u03c0\u03b1\u03b9\u03c4\u03b5\u03af \u03bc\u03b9\u03b1 \u03b5\u03bd\u03b5\u03c1\u03b3\u03ae \u03c3\u03c5\u03bd\u03b4\u03c1\u03bf\u03bc\u03ae Emby Premiere.", "HeaderConvertYourRecordings": "\u039c\u03b5\u03c4\u03b1\u03c4\u03c1\u03ad\u03c8\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ad\u03c2 \u03c3\u03b1\u03c2", "Record": "\u0395\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae", "Save": "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7", "Edit": "\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1", "Download": "\u039b\u03ae\u03c8\u03b7", "Downloaded": "\u039b\u03ae\u03c6\u03b8\u03b7\u03ba\u03b1\u03bd", - "Downloading": "\u039b\u03ae\u03c8\u03b7", + "Downloading": "\u0393\u03af\u03bd\u03b5\u03c4\u03b1\u03b9 \u039b\u03ae\u03c8\u03b7", "Advanced": "\u0393\u03b9\u03b1 \u03c0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03bf\u03c5\u03c2", "Delete": "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae", "HeaderDeleteItem": "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u0391\u03bd\u03c4\u03b9\u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5", "ConfirmDeleteItem": "\u0397 \u03b4\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03b1\u03c5\u03c4\u03bf\u03cd \u03c4\u03bf\u03c5 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf\u03c5 \u03b8\u03b1 \u03c4\u03bf \u03b4\u03b9\u03b1\u03b3\u03c1\u03ac\u03c8\u03b5\u03b9 \u03c4\u03cc\u03c3\u03bf \u03b1\u03c0\u03cc \u03c4\u03bf \u03c3\u03cd\u03c3\u03c4\u03b7\u03bc\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03c9\u03bd \u03cc\u03c3\u03bf \u03ba\u03b1\u03b9 \u03b1\u03c0\u03cc \u03c4\u03b7 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7 \u03c0\u03bf\u03bb\u03c5\u03bc\u03ad\u03c3\u03c9\u03bd \u03c3\u03b1\u03c2. \u0395\u03af\u03c3\u03c4\u03b5 \u03b2\u03ad\u03b2\u03b1\u03b9\u03bf\u03b9 \u03cc\u03c4\u03b9 \u03b8\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b5\u03c7\u03af\u03c3\u03b5\u03c4\u03b5;", "Refresh": "\u0391\u03bd\u03b1\u03bd\u03ad\u03c9\u03c3\u03b7", - "RefreshQueued": "\u0397 \u0391\u03bd\u03b1\u03bd\u03ad\u03c9\u03c3\u03b7 \u03c0\u03c1\u03bf\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03af\u03c3\u03c4\u03b7\u03ba\u03b5", + "RefreshQueued": "\u0397 \u0391\u03bd\u03b1\u03bd\u03ad\u03c9\u03c3\u03b7 \u03c0\u03c1\u03bf\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03af\u03c3\u03c4\u03b7\u03ba\u03b5.", "AddToCollection": "\u03a0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c3\u03b5 \u03c3\u03c4\u03b7 \u03c3\u03c5\u03bb\u03bb\u03bf\u03b3\u03ae", "HeaderAddToCollection": "\u03a0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c3\u03b5 \u03c3\u03c4\u03b7 \u03a3\u03c5\u03bb\u03bb\u03bf\u03b3\u03ae", "NewCollection": "\u039d\u03ad\u03b1 \u03a3\u03c5\u03bb\u03bb\u03bf\u03b3\u03ae", @@ -103,7 +119,7 @@ "HeaderAddToPlaylist": "\u03a0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c3\u03b5 \u03c3\u03b5 \u039b\u03af\u03c3\u03c4\u03b1", "Subtitles": "\u03a5\u03c0\u03cc\u03c4\u03b9\u03c4\u03bb\u03bf\u03b9", "LabelTheme": "\u0398\u03ad\u03bc\u03b1:", - "LabelDashboardTheme": "\u0398\u03ad\u03bc\u03b1 \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae:", + "LabelDashboardTheme": "\u0398\u03ad\u03bc\u03b1 \u03b5\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7\u03c2 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1 \u03b5\u03bb\u03ad\u03b3\u03c7\u03bf\u03c5 server:", "SearchForSubtitles": "\u0391\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7 \u03a5\u03c0\u03bf\u03c4\u03af\u03c4\u03bb\u03c9\u03bd", "LabelLanguage": "\u0393\u03bb\u03ce\u03c3\u03c3\u03b1", "Search": "\u0391\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7", @@ -138,7 +154,8 @@ "Shuffle": "\u0391\u03bd\u03ac\u03bc\u03b9\u03be\u03b7", "Identify": "\u0391\u03bd\u03b1\u03b3\u03bd\u03ce\u03c1\u03b9\u03c3\u03b7", "EditImages": "\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03b5\u03b9\u03ba\u03cc\u03bd\u03c9\u03bd", - "EditInfo": "\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03a0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03b9\u03ce\u03bd", + "EditMetadata": "\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03bc\u03b5\u03c4\u03b1\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd", + "Convert": "\u039c\u03b5\u03c4\u03b1\u03c4\u03c1\u03bf\u03c0\u03ae", "Sync": "\u03a3\u03c5\u03b3\u03c7\u03c1\u03bf\u03bd\u03b9\u03c3\u03bc\u03cc\u03c2", "InstantMix": "\u0386\u03bc\u03b5\u03c3\u03b7 Mix", "ViewAlbum": "\u03a0\u03c1\u03bf\u03b2\u03bf\u03bb\u03ae \u03ac\u03bb\u03bc\u03c0\u03bf\u03c5\u03bc", @@ -149,6 +166,7 @@ "ResumeAt": "\u03a3\u03c5\u03bd\u03ad\u03c7\u03b9\u03c3\u03b7 \u03b1\u03c0\u03cc {0}", "RemoveFromPlaylist": "\u039a\u03b1\u03c4\u03ac\u03c1\u03b3\u03b7\u03c3\u03b7 \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03bf\u03c5\u03c1\u03ac", "RemoveFromCollection": "\u039a\u03b1\u03c4\u03ac\u03c1\u03b3\u03b7\u03c3\u03b7 \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03c3\u03c5\u03bb\u03bb\u03bf\u03b3\u03ae", + "Sort": "\u03a4\u03b1\u03be\u03b9\u03bd\u03cc\u03bc\u03b7\u03c3\u03b7", "Trailer": "\u03a4\u03c1\u03ad\u03ca\u03bb\u03b5\u03c1", "MarkPlayed": "\u03ad\u03c7\u03b5\u03b9 \u03b1\u03bd\u03b1\u03c0\u03b1\u03c1\u03b1\u03c7\u03b8\u03b5\u03af", "MarkUnplayed": "\u0394\u03b5\u03bd \u03b1\u03bd\u03b1\u03c0\u03b1\u03c1\u03ac\u03c7\u03b8\u03b7\u03ba\u03b5", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "\u0391\u03c1\u03c7\u03b9\u03ba\u03cc\u03c2 \u03c4\u03af\u03c4\u03bb\u03bf\u03c2:", "LabelSortTitle": "\u03a3\u03cd\u03bd\u03c4\u03bf\u03bc\u03bf\u03c2 \u03c4\u03af\u03c4\u03bb\u03bf\u03c2", "LabelDateAdded": "\u0397\u03bc\u03b5\u03c1\u03bd\u03af\u03b1 \u03c0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7\u03c2:", + "DateAdded": "\u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03c0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7\u03c2", + "DatePlayed": "\u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u0391\u03bd\u03b1\u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2", "ConfigureDateAdded": "\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03c4\u03b5 \u03c4\u03b7 \u03c1\u03cd\u03b8\u03bc\u03b9\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03c4\u03c1\u03cc\u03c0\u03bf\u03c5 \u03bc\u03b5 \u03c4\u03bf\u03bd \u03bf\u03c0\u03bf\u03af\u03bf \u03c0\u03c1\u03bf\u03c3\u03b4\u03b9\u03bf\u03c1\u03af\u03b6\u03b5\u03c4\u03b1\u03b9 \u03b7 \u03b7\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03c0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7\u03c2 \u03c3\u03c4\u03bf\u03bd \u03c0\u03af\u03bd\u03b1\u03ba\u03b1 \u03b5\u03bb\u03ad\u03b3\u03c7\u03bf\u03c5 \u03c4\u03bf\u03c5 Emby Server \u03c3\u03c4\u03b9\u03c2 \u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7\u03c2", "LabelStatus": "\u039a\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7:", "LabelArtists": "\u039a\u03b1\u03bb\u03bb\u03b9\u03c4\u03ad\u03c7\u03bd\u03b5\u03c2:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "\u0386\u03bb\u03bc\u03c0\u03bf\u03c5\u03bc \u039a\u03b1\u03bb\u03bb\u03b9\u03c4\u03ad\u03c7\u03bd\u03b5\u03c2", "LabelAlbum": "\u0386\u03bb\u03bc\u03c0\u03bf\u03c5\u03bc", "Artists": "\u039a\u03b1\u03bb\u03bb\u03b9\u03c4\u03ad\u03c7\u03bd\u03b5\u03c2", + "ImdbRating": "\u0392\u03b1\u03b8\u03bc\u03bf\u03bb\u03bf\u03b3\u03af\u03b1 IMDb", + "CommunityRating": "\u0392\u03b1\u03b8\u03bc\u03bf\u03bb\u03bf\u03b3\u03af\u03b1 \u039a\u03bf\u03b9\u03bd\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2", "LabelCommunityRating": "\u0392\u03b1\u03b8\u03bc\u03bf\u03bb\u03bf\u03b3\u03af\u03b1 \u039a\u03bf\u03b9\u03bd\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2:", "LabelCriticRating": "\u0392\u03b1\u03b8\u03bc\u03bf\u03bb\u03bf\u03b3\u03af\u03b1 \u03ba\u03c1\u03b9\u03c4\u03b9\u03ba\u03ce\u03bd:", + "CriticRating": "\u0392\u03b1\u03b8\u03bc\u03bf\u03bb\u03bf\u03b3\u03af\u03b1 \u03ba\u03c1\u03b9\u03c4\u03b9\u03ba\u03ce\u03bd", "LabelWebsite": "\u0399\u03c3\u03c4\u03bf\u03c3\u03b5\u03bb\u03af\u03b4\u03b1:", "LabelTagline": "\u0395\u03c4\u03b9\u03ba\u03ad\u03c4\u03b1:", "LabelOverview": "\u0395\u03c0\u03b9\u03c3\u03ba\u03cc\u03c0\u03b7\u03c3\u03b7:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "\u0397\u03bc\u03ad\u03c1\u03b1 \u03ba\u03c5\u03ba\u03bb\u03bf\u03c6\u03bf\u03c1\u03af\u03b1\u03c2:", "LabelYear": "\u0388\u03c4\u03bf\u03c2:", "LabelPlaceOfBirth": "\u03a4\u03cc\u03c0\u03bf\u03c2 \u03b3\u03ad\u03bd\u03bd\u03b7\u03c3\u03b7\u03c2:", + "Aired": "\u03a0\u03c1\u03bf\u03b2\u03bb\u03ae\u03b8\u03b7\u03ba\u03b5", "LabelAirDays": "\u0397\u03bc\u03ad\u03c1\u03b5\u03c2 \u03ba\u03c5\u03ba\u03bb\u03bf\u03c6\u03bf\u03c1\u03af\u03b1\u03c2:", "LabelAirTime": "\u038f\u03c1\u03b1 \u03ba\u03c5\u03ba\u03bb\u03bf\u03c6\u03bf\u03c1\u03af\u03b1\u03c2", "LabelRuntimeMinutes": "\u03a7\u03c1\u03cc\u03bd\u03bf\u03c2 \u03b5\u03ba\u03c4\u03ad\u03bb\u03b5\u03c3\u03b7\u03c2 (\u03bb\u03b5\u03c0\u03c4\u03ac):", @@ -196,10 +220,6 @@ "PerfectMatch": "\u03a4\u03ad\u03bb\u03b5\u03b9\u03b1 \u03b1\u03bd\u03c4\u03b9\u03c3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7", "EnableExternalVideoPlayers": "\u0395\u03be\u03c9\u03c4\u03b5\u03c1\u03b9\u03ba\u03ac players \u03b3\u03b9\u03b1 \u03b2\u03af\u03bd\u03c4\u03b5\u03bf", "EnableExternalVideoPlayersHelp": "\u0388\u03bd\u03b1 \u03b5\u03be\u03c9\u03c4\u03b5\u03c1\u03b9\u03ba\u03cc \u03bc\u03b5\u03bd\u03bf\u03cd \u03b1\u03bd\u03b1\u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2 \u03b8\u03b1 \u03b5\u03bc\u03c6\u03b1\u03bd\u03b9\u03c3\u03c4\u03b5\u03af \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03b5\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03b1\u03bd\u03b1\u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2 \u03b2\u03af\u03bd\u03c4\u03b5\u03bf.", - "HeaderAlternateEpisodeNumbers": "\u0395\u03bd\u03b1\u03bb\u03bb\u03b1\u03ba\u03c4\u03b9\u03ba\u03bf\u03af \u03b1\u03c1\u03b9\u03b8\u03bc\u03bf\u03af \u03b5\u03c0\u03b5\u03b9\u03c3\u03bf\u03b4\u03af\u03c9\u03bd", - "LabelDvdSeasonNumber": "\u0391\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03c3\u03b5\u03b6\u03cc\u03bd DVD:", - "LabelDvdEpisodeNumber": "\u0391\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03b5\u03c0\u03b5\u03b9\u03c3\u03bf\u03b4\u03af\u03bf\u03c5 Dvd:", - "LabelAbsoluteEpisodeNumber": "\u0391\u03c0\u03cc\u03bb\u03c5\u03c4\u03bf\u03c2 \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03b5\u03c0\u03b5\u03b9\u03c3\u03bf\u03b4\u03af\u03bf\u03c5:", "HeaderSpecialEpisodeInfo": "\u0395\u03b9\u03b4\u03b9\u03ba\u03ad\u03c2 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03b5\u03c0\u03b5\u03b9\u03c3\u03bf\u03b4\u03af\u03bf\u03c5", "LabelAirsBeforeSeason": "Airs before season:", "LabelAirsAfterSeason": "Airs after season:", @@ -241,6 +261,7 @@ "ProductionLocations": "\u03a4\u03bf\u03c0\u03bf\u03b8\u03b5\u03c3\u03af\u03b5\u03c2 \u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2", "BirthLocation": "\u03a4\u03cc\u03c0\u03bf\u03c2 \u03b3\u03ad\u03bd\u03bd\u03b7\u03c3\u03b7\u03c2:", "ParentalRating": "\u039a\u03b1\u03c4\u03b1\u03bb\u03bb\u03b7\u03bb\u03cc\u03c4\u03b7\u03c4\u03b1", + "PlayCount": "\u039a\u03b1\u03c4\u03b1\u03bc\u03ad\u03c4\u03c1\u03b7\u03c3\u03b7 \u03b1\u03bd\u03b1\u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2", "Name": "\u038c\u03bd\u03bf\u03bc\u03b1", "Overview": "\u0395\u03c0\u03b9\u03c3\u03ba\u03cc\u03c0\u03b7\u03c3\u03b7", "LabelType": "\u03a4\u03cd\u03c0\u03bf\u03c2:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "\u0397 \u03b4\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03b1\u03c5\u03c4\u03ce\u03bd \u03c4\u03c9\u03bd \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03c9\u03bd \u03b8\u03b1 \u03c4\u03b1 \u03b4\u03b9\u03b1\u03b3\u03c1\u03ac\u03c8\u03b5\u03b9 \u03c4\u03cc\u03c3\u03bf \u03b1\u03c0\u03cc \u03c4\u03bf \u03c3\u03cd\u03c3\u03c4\u03b7\u03bc\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03c9\u03bd \u03cc\u03c3\u03bf \u03ba\u03b1\u03b9 \u03b1\u03c0\u03cc \u03c4\u03b7 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7 \u03c0\u03bf\u03bb\u03c5\u03bc\u03ad\u03c3\u03c9\u03bd \u03c3\u03b1\u03c2. \u0395\u03af\u03c3\u03c4\u03b5 \u03b2\u03ad\u03b2\u03b1\u03b9\u03bf\u03b9 \u03cc\u03c4\u03b9 \u03b8\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b5\u03c7\u03af\u03c3\u03b5\u03c4\u03b5;", "PleaseRestartServerName": "\u039a\u03ac\u03bd\u03c4\u03b5 \u03b5\u03c0\u03b1\u03bd\u03b5\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7 \u03c4\u03bf\u03c5 Emby Server - {0}.", "LabelSyncJobName": "\u038c\u03bd\u03bf\u03bc\u03b1 \u0395\u03c1\u03b3\u03b1\u03c3\u03af\u03b1\u03c2 \u03a3\u03c5\u03b3\u03c7\u03c1\u03bf\u03bd\u03b9\u03c3\u03bc\u03bf\u03cd:", - "SyncJobCreated": "\u0394\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03ae\u03b8\u03b7\u03ba\u03b5 \u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03c3\u03c5\u03b3\u03c7\u03c1\u03bf\u03bd\u03b9\u03c3\u03bc\u03bf\u03cd", + "SyncingDots": "\u03a3\u03c5\u03b3\u03c7\u03c1\u03bf\u03bd\u03b9\u03c3\u03bc\u03cc\u03c2...", + "ConvertingDots": "\u039c\u03b5\u03c4\u03b1\u03c4\u03c1\u03bf\u03c0\u03ae...", "LabelQuality": "\u03a0\u03bf\u03b9\u03cc\u03c4\u03b7\u03c4\u03b1:", "LabelSyncNoTargetsHelp": "\u03a6\u03b1\u03af\u03bd\u03b5\u03c4\u03b1\u03b9 \u03cc\u03c4\u03b9 \u03b4\u03b5\u03bd \u03b4\u03b9\u03b1\u03b8\u03ad\u03c4\u03b5\u03c4\u03b5 \u03b5\u03c0\u03af \u03c4\u03bf\u03c5 \u03c0\u03b1\u03c1\u03cc\u03bd\u03c4\u03bf\u03c2 \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ad\u03c2 \u03c0\u03bf\u03c5 \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03af\u03b6\u03bf\u03c5\u03bd \u03bb\u03ae\u03c8\u03b7 \u03c7\u03c9\u03c1\u03af\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7.", "DownloadingDots": "\u039b\u03ae\u03c8\u03b7...", @@ -297,12 +319,17 @@ "LearnMore": "\u03a0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03b1 ", "LabelProfile": "\u03a0\u03c1\u03bf\u03c6\u03b9\u03bb:", "LabelBitrateMbps": "Bitrate (Mbps):", + "ConvertUnwatchedVideosOnly": "\u039c\u03b5\u03c4\u03b1\u03c4\u03c1\u03bf\u03c0\u03ae \u03bc\u03cc\u03bd\u03bf \u03c4\u03c9\u03bd \u03b2\u03af\u03bd\u03c4\u03b5\u03bf \u03c0\u03bf\u03c5 \u03b4\u03b5\u03bd \u03ad\u03c7\u03c9 \u03c0\u03b1\u03c1\u03b1\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03ae\u03c3\u03b5\u03b9", "SyncUnwatchedVideosOnly": "\u039a\u03ac\u03bd\u03c4\u03b5 \u03bb\u03ae\u03c8\u03b7 \u03bc\u03cc\u03bd\u03bf \u03b2\u03af\u03bd\u03c4\u03b5\u03bf \u03c0\u03bf\u03c5 \u03b4\u03b5\u03bd \u03ad\u03c7\u03bf\u03c5\u03bd \u03b1\u03bd\u03b1\u03c0\u03b1\u03c1\u03b1\u03c7\u03b8\u03b5\u03af", + "ConvertUnwatchedVideosOnlyHelp": "\u039c\u03cc\u03bd\u03bf \u03c4\u03b1 \u03b2\u03af\u03bd\u03c4\u03b5\u03bf \u03c0\u03bf\u03c5 \u03b4\u03b5\u03bd \u03ad\u03c7\u03c9 \u03c0\u03b1\u03c1\u03b1\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03ae\u03c3\u03b5\u03b9 \u03b8\u03b1 \u03bc\u03b5\u03c4\u03b1\u03c4\u03c1\u03b1\u03c0\u03bf\u03cd\u03bd.", "SyncUnwatchedVideosOnlyHelp": "\u0398\u03b1 \u03c0\u03c1\u03b1\u03b3\u03bc\u03b1\u03c4\u03bf\u03c0\u03bf\u03b9\u03b7\u03b8\u03bf\u03cd\u03bd \u03bb\u03ae\u03c8\u03b7 \u03bc\u03cc\u03bd\u03bf \u03bc\u03b7 \u03b1\u03bd\u03b1\u03c0\u03b1\u03c1\u03b1\u03c7\u03b8\u03ad\u03bd\u03c4\u03c9\u03bd \u03b2\u03af\u03bd\u03c4\u03b5\u03bf \u03ba\u03b1\u03b9 \u03c4\u03b1 \u03b2\u03af\u03bd\u03c4\u03b5\u03bf \u03b8\u03b1 \u03ba\u03b1\u03c4\u03b1\u03c1\u03b3\u03b7\u03b8\u03bf\u03cd\u03bd \u03b1\u03c0\u03cc \u03c4\u03b7 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03ba\u03b1\u03b8\u03ce\u03c2 \u03c0\u03b1\u03c1\u03b1\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03bf\u03cd\u03bd\u03c4\u03b1\u03b9.", "AutomaticallySyncNewContent": "\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03bb\u03ae\u03c8\u03b7 \u03bd\u03ad\u03bf\u03c5 \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03bf\u03bc\u03ad\u03bd\u03bf\u03c5", "AutomaticallySyncNewContentHelp": "\u03a4\u03bf \u03bd\u03ad\u03bf \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03cc\u03bc\u03b5\u03bd\u03bf \u03c0\u03bf\u03c5 \u03c0\u03c1\u03bf\u03c3\u03c4\u03af\u03b8\u03b5\u03c4\u03b1\u03b9 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03cc\u03bd \u03c4\u03bf \u03c6\u03ac\u03ba\u03b5\u03bb\u03bf \u03b8\u03b1 \u03bc\u03b5\u03c4\u03b1\u03c6\u03bf\u03c1\u03c4\u03c9\u03b8\u03b5\u03af \u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b1 \u03c3\u03c4\u03b7 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae.", + "AutomaticallyConvertNewContent": "\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03bc\u03b5\u03c4\u03b1\u03c4\u03c1\u03bf\u03c0\u03ae \u03bd\u03ad\u03bf\u03c5 \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03bf\u03bc\u03ad\u03bd\u03bf\u03c5", + "AutomaticallyConvertNewContentHelp": "\u03a4\u03bf \u03bd\u03ad\u03bf \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03cc\u03bc\u03b5\u03bd\u03bf \u03c0\u03bf\u03c5 \u03c0\u03c1\u03bf\u03c3\u03c4\u03af\u03b8\u03b5\u03c4\u03b1\u03b9 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03cc\u03bd \u03c4\u03bf \u03c6\u03ac\u03ba\u03b5\u03bb\u03bf \u03b8\u03b1 \u03bc\u03b5\u03c4\u03b1\u03c4\u03ad\u03c0\u03b5\u03c4\u03b1\u03b9 \u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b1.", "LabelItemLimit": "\u038c\u03c1\u03b9\u03bf \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf\u03c5:", - "LabelItemLimitHelp": "\u03a0\u03c1\u03bf\u03b1\u03b9\u03c1\u03b5\u03c4\u03b9\u03ba\u03cc. \u039f\u03c1\u03af\u03c3\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03cc\u03c1\u03b9\u03bf \u03c3\u03c4\u03bf\u03bd \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc \u03c4\u03c9\u03bd \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03c9\u03bd \u03c0\u03bf\u03c5 \u03b8\u03b1 \u03bb\u03b7\u03c6\u03b8\u03bf\u03cd\u03bd.", + "ConvertItemLimitHelp": "\u03a0\u03c1\u03bf\u03b1\u03b9\u03c1\u03b5\u03c4\u03b9\u03ba\u03cc. \u039f\u03c1\u03af\u03c3\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03cc\u03c1\u03b9\u03bf \u03c3\u03c4\u03bf\u03bd \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc \u03c4\u03c9\u03bd \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03c9\u03bd \u03c0\u03bf\u03c5 \u03b8\u03b1 \u03bc\u03b5\u03c4\u03b1\u03c4\u03c1\u03b1\u03c0\u03bf\u03cd\u03bd.", + "DownloadItemLimitHelp": "\u03a0\u03c1\u03bf\u03b1\u03b9\u03c1\u03b5\u03c4\u03b9\u03ba\u03cc. \u039f\u03c1\u03af\u03c3\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03cc\u03c1\u03b9\u03bf \u03c3\u03c4\u03bf\u03bd \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc \u03c4\u03c9\u03bd \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03c9\u03bd \u03c0\u03bf\u03c5 \u03b8\u03b1 \u03bb\u03b7\u03c6\u03b8\u03bf\u03cd\u03bd.", "PleaseSelectDeviceToSyncTo": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03bc\u03b9\u03b1 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03b3\u03b9\u03b1 \u03c4\u03b7\u03bd \u03bf\u03c0\u03bf\u03af\u03b1 \u03b8\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03ba\u03ac\u03bd\u03b5\u03c4\u03b5 \u03bb\u03ae\u03c8\u03b7.", "Screenshots": "\u03a3\u03c4\u03b9\u03b3\u03bc\u03b9\u03cc\u03c4\u03c5\u03c0\u03b1 \u03bf\u03b8\u03cc\u03bd\u03b7\u03c2", "MoveRight": "\u039c\u03b5\u03c4\u03b1\u03ba\u03b9\u03bd\u03ae\u03c3\u03c4\u03b5 \u03b4\u03b5\u03be\u03b9\u03ac", @@ -334,7 +361,7 @@ "LabelChannels": "\u039a\u03b1\u03bd\u03ac\u03bb\u03b9\u03b1:", "ChannelNameOnly": "\u039c\u03cc\u03bd\u03bf \u03c4\u03bf {0} \u03ba\u03b1\u03bd\u03ac\u03bb\u03b9", "Anytime": "\u039f\u03c0\u03bf\u03c4\u03b5\u03b4\u03ae\u03c0\u03bf\u03c4\u03b5", - "AnyLanguage": "Any language", + "AnyLanguage": "\u039f\u03c0\u03bf\u03b9\u03b1\u03b4\u03ae\u03c0\u03bf\u03c4\u03b5 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1", "AroundTime": "\u03a0\u03b5\u03c1\u03af\u03c0\u03bf\u03c5 {0}", "All": "\u038c\u03bb\u03b1", "AllChannels": "\u038c\u03bb\u03b1 \u03c4\u03b1 \u03ba\u03b1\u03bd\u03ac\u03bb\u03b9\u03b1", @@ -421,13 +448,14 @@ "HeaderMyMedia": "\u03a4\u03b1 \u03a0\u03bf\u03bb\u03c5\u03bc\u03ad\u03c3\u03b1 \u03bc\u03bf\u03c5", "HeaderMyMediaSmall": "\u03a4\u03b1 \u03a0\u03bf\u03bb\u03c5\u03bc\u03ad\u03c3\u03b1 \u03bc\u03bf\u03c5 (\u03bc\u03b9\u03ba\u03c1\u03ac)", "LatestFromLibrary": "\u03a4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b1 {0}", - "ContinueWatching": "Continue watching", + "ContinueWatching": "\u03a3\u03c5\u03bd\u03b5\u03c7\u03af\u03c3\u03c4\u03b5 \u03bd\u03b1 \u03c0\u03b1\u03c1\u03b1\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03b5\u03af\u03c4\u03b5", "HeaderLatestChannelMedia": "\u03a4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b1 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1 \u03ba\u03b1\u03bd\u03b1\u03bb\u03b9\u03bf\u03cd", "HeaderContinueWatching": "\u03a3\u03c5\u03bd\u03b5\u03c7\u03af\u03c3\u03c4\u03b5 \u03c4\u03b7\u03bd \u03c0\u03b1\u03c1\u03b1\u03ba\u03bf\u03bb\u03bf\u03cd\u03b8\u03b7\u03c3\u03b7", "HeaderContinueListening": "\u03a3\u03c5\u03bd\u03b5\u03c7\u03af\u03c3\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b1\u03ba\u03c1\u03cc\u03b1\u03c3\u03b7", "HeaderActiveRecordings": "\u0395\u03bd\u03b5\u03c1\u03b3\u03ad\u03c2 \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ad\u03c2", "HeaderLatestRecordings": "\u03c4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b5\u03c2 \u03b7\u03c7\u03bf\u03b3\u03c1\u03b1\u03c6\u03ae\u03c3\u03b5\u03b9\u03c2", "LabelSyncTo": "\u03a3\u03c5\u03b3\u03c7\u03c1\u03bf\u03bd\u03b9\u03c3\u03bc\u03cc\u03c2 \u03c3\u03b5:", + "LabelConvertTo": "\u039c\u03b5\u03c4\u03b1\u03c4\u03c1\u03bf\u03c0\u03ae \u03c3\u03b5:", "Next": "\u0395\u03c0\u03cc\u03bc\u03b5\u03bd\u03bf", "LabelSource": "\u03a0\u03b7\u03b3\u03ae:", "LabelVersion": "\u0388\u03ba\u03b4\u03bf\u03c3\u03b7:", @@ -441,33 +469,36 @@ "More": "\u03a0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03b1 ", "Up": "\u0395\u03c0\u03ac\u03bd\u03c9", "Down": "\u039a\u03ac\u03c4\u03c9", - "HeaderHomeScreen": "\u039f\u03b8\u03cc\u03bd\u03b7", - "HeaderHomeScreenContent": "\u03a0\u03b5\u03c1\u03b9\u03b5\u03c7\u03cc\u03bc\u03b5\u03bd\u03bf \u03bf\u03b8\u03cc\u03bd\u03b7\u03c2 \u03b1\u03c1\u03c7\u03b9\u03ba\u03ae\u03c2 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1\u03c2", + "Home": "\u0391\u03c1\u03c7\u03b9\u03ba\u03ae", + "Favorites": "\u0391\u03b3\u03b1\u03c0\u03b7\u03bc\u03ad\u03bd\u03b1", + "HeaderHomeScreen": "\u0391\u03c1\u03c7\u03b9\u03ba\u03ae \u03bf\u03b8\u03cc\u03bd\u03b7", "HeaderLatestChannelItems": "\u03a4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b1 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1 \u03ba\u03b1\u03bd\u03b1\u03bb\u03b9\u03bf\u03cd", - "LabelSelectHomeScreenItemsFolders": "\u039d\u03b1 \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03b5\u03c4\u03b1\u03b9 \u03b7 \u03b5\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03c9\u03bd \u03c3\u03c4\u03b7\u03bd \u03b1\u03c1\u03c7\u03b9\u03ba\u03ae \u03bc\u03bf\u03c5 \u03bf\u03b8\u03cc\u03bd\u03b7 \u03b1\u03c0\u03cc:", "HeaderLibraryOrder": "\u0394\u03b9\u03ac\u03c4\u03b1\u03be\u03b7 \u0392\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7\u03c2", "HideWatchedContentFromLatestMedia": "\u0391\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 \u03c0\u03c1\u03bf\u03b2\u03bb\u03b7\u03b8\u03ad\u03bd\u03c4\u03c9\u03bd \u03b1\u03c0\u03cc \u03c4\u03b1 \u03c0\u03c1\u03cc\u03c3\u03c6\u03b1\u03c4\u03b1 \u03bc\u03ad\u03c3\u03b1", - "HeaderOnNow": "On Now", + "HeaderOnNow": "\u03a4\u03ce\u03c1\u03b1", "HeaderPlaybackError": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03b1\u03bd\u03b1\u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2", "PlaybackErrorNotAllowed": "\u0394\u03b5\u03bd \u03b5\u03af\u03c3\u03c4\u03b5 \u03b5\u03c0\u03af \u03c4\u03bf\u03c5 \u03c0\u03b1\u03c1\u03cc\u03bd\u03c4\u03bf\u03c2 \u03b5\u03be\u03bf\u03c5\u03c3\u03b9\u03bf\u03b4\u03bf\u03c4\u03b7\u03bc\u03ad\u03bd\u03bf\u03c2 \u03bd\u03b1 \u03b1\u03bd\u03b1\u03c0\u03b1\u03c1\u03ac\u03b3\u03b5\u03c4\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03cc\u03bc\u03b5\u03bd\u03bf. \u0395\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03ae\u03c3\u03c4\u03b5 \u03bc\u03b5 \u03c4\u03bf \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae \u03c4\u03bf\u03c5 \u03c3\u03c5\u03c3\u03c4\u03ae\u03bc\u03b1\u03c4\u03cc\u03c2 \u03c3\u03b1\u03c2 \u03b3\u03b9\u03b1 \u03bb\u03b5\u03c0\u03c4\u03bf\u03bc\u03ad\u03c1\u03b5\u03b9\u03b5\u03c2.", "PlaybackErrorNoCompatibleStream": "\u0394\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03bf\u03c5\u03bd \u03b5\u03c0\u03af \u03c4\u03bf\u03c5 \u03c0\u03b1\u03c1\u03cc\u03bd\u03c4\u03bf\u03c2 \u03b4\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03b5\u03c2 \u03c3\u03c5\u03bc\u03b2\u03b1\u03c4\u03ad\u03c2 \u03c1\u03bf\u03ad\u03c2. \u0394\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac \u03b1\u03c1\u03b3\u03cc\u03c4\u03b5\u03c1\u03b1 \u03ae \u03b5\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03ae\u03c3\u03c4\u03b5 \u03bc\u03b5 \u03c4\u03bf\u03bd \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae \u03c4\u03bf\u03c5 \u03c3\u03c5\u03c3\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2 \u03b3\u03b9\u03b1 \u03bb\u03b5\u03c0\u03c4\u03bf\u03bc\u03ad\u03c1\u03b5\u03b9\u03b5\u03c2.", "PlaybackErrorPlaceHolder": "\u0395\u03b9\u03c3\u03b1\u03b3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf\u03bd \u03b4\u03af\u03c3\u03ba\u03bf \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c0\u03b1\u03af\u03be\u03b5\u03c4\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03b2\u03af\u03bd\u03c4\u03b5\u03bf.", "Guide": "\u039f\u03b4\u03b7\u03b3\u03cc\u03c2", "Suggestions": "\u03a0\u03c1\u03bf\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2", - "Favorites": "\u0391\u03b3\u03b1\u03c0\u03b7\u03bc\u03ad\u03bd\u03b1", + "HeaderFavoriteCollections": "\u0391\u03b3\u03b1\u03c0\u03b7\u03bc\u03ad\u03bd\u03b5\u03c2 \u03a3\u03c5\u03bb\u03bb\u03bf\u03b3\u03ad\u03c2", + "HeaderFavoritePlaylists": "\u0391\u03b3\u03b1\u03c0\u03b7\u03bc\u03ad\u03bd\u03b5\u03c2 \u039b\u03af\u03c3\u03c4\u03b5\u03c2 \u0391\u03bd\u03b1\u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2", "Collections": "\u03a3\u03c5\u03bb\u03bb\u03bf\u03b3\u03ad\u03c2", "LabelSelectFolderGroups": "\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03bf\u03bc\u03b1\u03b4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03bf\u03bc\u03ad\u03bd\u03bf\u03c5 \u03b1\u03c0\u03cc \u03c4\u03bf\u03c5\u03c2 \u03b1\u03ba\u03cc\u03bb\u03bf\u03c5\u03b8\u03bf\u03c5\u03c2 \u03c6\u03b1\u03ba\u03ad\u03bb\u03bf\u03c5\u03c2 \u03c3\u03b5 \u03c0\u03c1\u03bf\u03b2\u03bf\u03bb\u03ad\u03c2 \u03cc\u03c0\u03c9\u03c2 \u03c4\u03b1\u03b9\u03bd\u03af\u03b5\u03c2, \u03bc\u03bf\u03c5\u03c3\u03b9\u03ba\u03ae \u03ba\u03b1\u03b9 \u03c4\u03b7\u03bb\u03b5\u03cc\u03c1\u03b1\u03c3\u03b7:", "LabelSelectFolderGroupsHelp": "\u039f\u03b9 \u03c6\u03ac\u03ba\u03b5\u03bb\u03bf\u03b9 \u03c0\u03bf\u03c5 \u03b4\u03b5\u03bd \u03ad\u03c7\u03bf\u03c5\u03bd \u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03b5\u03af \u03b8\u03b1 \u03b5\u03bc\u03c6\u03b1\u03bd\u03af\u03b6\u03bf\u03bd\u03c4\u03b1\u03b9 \u03b1\u03c0\u03cc \u03bc\u03cc\u03bd\u03bf\u03b9 \u03c4\u03bf\u03c5\u03c2 \u03c3\u03c4\u03b7 \u03b4\u03b9\u03ba\u03ae \u03c4\u03bf\u03c5\u03c2 \u03ac\u03c0\u03bf\u03c8\u03b7.", + "Folders": "\u03a6\u03ac\u03ba\u03b5\u03bb\u03bf\u03b9", + "DisplayInOtherHomeScreenSections": "\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03c3\u03c4\u03b1 \u03c4\u03bc\u03ae\u03bc\u03b1\u03c4\u03b1 \u03c4\u03b7\u03c2 \u03b1\u03c1\u03c7\u03b9\u03ba\u03ae\u03c2 \u03bf\u03b8\u03cc\u03bd\u03b7\u03c2, \u03cc\u03c0\u03c9\u03c2 \u03c4\u03b1 \u03c0\u03b9\u03bf \u03c0\u03c1\u03cc\u03c3\u03c6\u03b1\u03c4\u03b1 \u03c0\u03bf\u03bb\u03c5\u03bc\u03ad\u03c3\u03b1 \u03ba\u03b1\u03b9 \u03c3\u03c5\u03bd\u03b5\u03c7\u03af\u03c3\u03c4\u03b5 \u03bd\u03b1 \u03c0\u03b1\u03c1\u03b1\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03b5\u03af\u03c4\u03b5", + "DisplayInMyMedia": "\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03c3\u03c4\u03b7\u03bd \u03b1\u03c1\u03c7\u03b9\u03ba\u03ae \u03bf\u03b8\u03cc\u03bd\u03b7", "Shows": "\u03a3\u03b5\u03b9\u03c1\u03ad\u03c2", "HeaderLibraryFolders": "\u03a6\u03ac\u03ba\u03b5\u03bb\u03bf\u03c2 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03b7\u03ba\u03ce\u03bd", - "HeaderLandingScreens": "\u039f\u03b8\u03cc\u03bd\u03b5\u03c2 \u0395\u03ba\u03c4\u03ad\u03bb\u03b5\u03c3\u03b5\u03b9\u03c2", - "LandingScreensHelp": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03b7 \u03bf\u03b8\u03cc\u03bd\u03b7 \u03b5\u03ba\u03c4\u03ad\u03bb\u03b5\u03c3\u03b7\u03c2 \u03cc\u03c4\u03b1\u03bd \u03ba\u03ac\u03bd\u03b5\u03c4\u03b5 \u03ba\u03bb\u03b9\u03ba \u03c3\u03b5 \u03bc\u03b9\u03b1 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7.", "HeaderTermsOfPurchase": "\u038c\u03c1\u03bf\u03b9 \u03b1\u03b3\u03bf\u03c1\u03ac\u03c2", "PrivacyPolicy": "\u03a0\u03c1\u03bf\u03c3\u03c9\u03c0\u03b9\u03ba\u03ac \u0394\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1", "TermsOfUse": "\u038c\u03c1\u03bf\u03b9 \u03a7\u03c1\u03ae\u03c3\u03b7\u03c2", "RepeatMode": "\u039b\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b5\u03c0\u03b1\u03bd\u03ac\u03bb\u03b7\u03c8\u03b7\u03c2", "RepeatOne": "\u0395\u03c0\u03b1\u03bd\u03b1\u03bb\u03ac\u03b2\u03b5\u03c4\u03b5 \u03ad\u03bd\u03b1", "RepeatAll": "\u0395\u03c0\u03b1\u03bd\u03ac\u03bb\u03b7\u03c8\u03b7 \u03cc\u03bb\u03c9\u03bd", + "LabelDefaultScreen": "\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03b7 \u03bf\u03b8\u03cc\u03bd\u03b7:", "ConfirmEndPlayerSession": "\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03ba\u03bb\u03b5\u03af\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf\u03bd Emby \u03c3\u03c4\u03b7 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae;", "Yes": "\u039d\u03b1\u03b9", "No": "\u039f\u03c7\u03b9", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "\u039f \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf\u03c0\u03bf\u03b9\u03b7\u03c4\u03ae\u03c2 \u03b2\u03af\u03bd\u03c4\u03b5\u03bf \u03b4\u03b5\u03bd \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03af\u03b6\u03b5\u03c4\u03b1\u03b9", "AudioCodecNotSupported": "\u039f \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf\u03c0\u03bf\u03b9\u03b7\u03c4\u03ae\u03c2 \u03ae\u03c7\u03bf\u03c5 \u03b4\u03b5\u03bd \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03af\u03b6\u03b5\u03c4\u03b1\u03b9", "SubtitleCodecNotSupported": "\u0397 \u03bc\u03bf\u03c1\u03c6\u03ae \u03c5\u03c0\u03bf\u03c4\u03af\u03c4\u03bb\u03c9\u03bd \u03b4\u03b5\u03bd \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03af\u03b6\u03b5\u03c4\u03b1\u03b9", + "DirectPlayError": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ac\u03bc\u03b5\u03c3\u03b7\u03c2 \u03b1\u03bd\u03b1\u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2", "ContainerNotSupported": "\u03a4\u03bf \u03ba\u03bf\u03bd\u03c4\u03ad\u03b9\u03bd\u03b5\u03c1 \u03b4\u03b5\u03bd \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03af\u03b6\u03b5\u03c4\u03b1\u03b9", "VideoLevelNotSupported": "\u03a4\u03bf \u03b5\u03c0\u03af\u03c0\u03b5\u03b4\u03bf \u03b2\u03af\u03bd\u03c4\u03b5\u03bf \u03b4\u03b5\u03bd \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03af\u03b6\u03b5\u03c4\u03b1\u03b9", "AudioBitrateNotSupported": "\u03a4\u03bf bitrate \u03ae\u03c7\u03bf\u03c5 \u03b4\u03b5\u03bd \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03af\u03b6\u03b5\u03c4\u03b1\u03b9", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7 \u03b4\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03c4\u03bf\u03c5 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf\u03c5 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae Emby. \u0392\u03b5\u03b2\u03b1\u03b9\u03c9\u03b8\u03b5\u03af\u03c4\u03b5 \u03cc\u03c4\u03b9 \u03bf \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae\u03c2 Emby \u03ad\u03c7\u03b5\u03b9 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2 \u03c3\u03c4\u03bf \u03c6\u03ac\u03ba\u03b5\u03bb\u03bf \u03c0\u03bf\u03bb\u03c5\u03bc\u03ad\u03c3\u03c9\u03bd \u03ba\u03b1\u03b9 \u03c0\u03c1\u03bf\u03c3\u03c0\u03b1\u03b8\u03ae\u03c3\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac.", "NoSubtitles": "\u03a7\u03c9\u03c1\u03af\u03c2 \u03a5\u03c0\u03cc\u03c4\u03b9\u03c4\u03bb\u03bf\u03c5\u03c2", "Default": "\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae", + "Absolute": "\u0391\u03c0\u03cc\u03bb\u03c5\u03c4\u03bf", "Smart": "\u0388\u03be\u03c5\u03c0\u03bd\u03bf", "Small": "\u039c\u03b9\u03ba\u03c1\u03cc", + "Smaller": "\u039c\u03b9\u03ba\u03c1\u03cc\u03c4\u03b5\u03c1\u03bf", "Medium": "\u039c\u03b5\u03c3\u03b1\u03af\u03bf", "Large": "\u039c\u03b5\u03b3\u03ac\u03bb\u03bf", "ExtraLarge": "\u03a0\u03bf\u03bb\u03cd \u039c\u03b5\u03b3\u03ac\u03bb\u03bf", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "\u039f \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03c0\u03bb\u03b1\u03b9\u03c3\u03af\u03c9\u03bd \u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac\u03c2 \u03b2\u03af\u03bd\u03c4\u03b5\u03bf \u03b4\u03b5\u03bd \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03af\u03b6\u03b5\u03c4\u03b1\u03b9", "ErrorConnectServerUnreachable": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03b5\u03ba\u03c4\u03ad\u03bb\u03b5\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03b6\u03b7\u03c4\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7\u03c2 \u03b5\u03bd\u03ad\u03c1\u03b3\u03b5\u03b9\u03b1\u03c2. \u039f \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae\u03c2 \u03c3\u03b1\u03c2 \u03b4\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03b5\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03ae\u03c3\u03b5\u03b9 \u03bc\u03b5 \u03c4\u03bf \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae Emby Connect \u03c3\u03c4\u03bf {0}. \u0392\u03b5\u03b2\u03b1\u03b9\u03c9\u03b8\u03b5\u03af\u03c4\u03b5 \u03cc\u03c4\u03b9 \u03bf \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae\u03c2 \u03c3\u03b1\u03c2 \u03b4\u03b9\u03b1\u03b8\u03ad\u03c4\u03b5\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03ae \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c3\u03c4\u03bf \u03b4\u03b9\u03b1\u03b4\u03af\u03ba\u03c4\u03c5\u03bf \u03ba\u03b1\u03b9 \u03cc\u03c4\u03b9 \u03bf\u03b9 \u03b5\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03af\u03b5\u03c2 \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03bf\u03bd\u03c4\u03b1\u03b9 \u03b1\u03c0\u03cc \u03bf\u03c0\u03bf\u03b9\u03bf\u03b4\u03ae\u03c0\u03bf\u03c4\u03b5 \u03c4\u03b5\u03af\u03c7\u03bf\u03c2 \u03c0\u03c1\u03bf\u03c3\u03c4\u03b1\u03c3\u03af\u03b1\u03c2 \u03ae \u03bb\u03bf\u03b3\u03b9\u03c3\u03bc\u03b9\u03ba\u03cc \u03b1\u03c3\u03c6\u03b1\u03bb\u03b5\u03af\u03b1\u03c2 \u03c0\u03bf\u03c5 \u03ad\u03c7\u03b5\u03c4\u03b5 \u03b5\u03b3\u03ba\u03b1\u03c4\u03b1\u03c3\u03c4\u03ae\u03c3\u03b5\u03b9.", "StopRecording": "\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7 \u0395\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2", + "HeaderStopRecording": "\u0394\u03b9\u03b1\u03ba\u03bf\u03c0\u03ae \u0395\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2", "ManageRecording": "\u0394\u03b9\u03b1\u03c7\u03b5\u03af\u03c1\u03b9\u03c3\u03b7 \u0395\u03b3\u03b3\u03c1\u03b1\u03c6\u03ce\u03bd", "LabelDropImageHere": "\u039a\u03ac\u03bd\u03c4\u03b5 \u03ba\u03bb\u03b9\u03ba \u03b5\u03b4\u03ce, \u03ae \u03ba\u03ac\u03bd\u03c4\u03b5 \u03ba\u03bb\u03b9\u03ba \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c0\u03b5\u03c1\u03b9\u03b7\u03b3\u03b7\u03b8\u03b5\u03af\u03c4\u03b5.", "MessageFileReadError": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03b1\u03bd\u03ac\u03b3\u03bd\u03c9\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03c0\u03c1\u03bf\u03c3\u03c0\u03ac\u03b8\u03b7\u03c3\u03b5 \u03be\u03b1\u03bd\u03ac.", @@ -619,19 +654,36 @@ "LabelVideo": "\u0392\u03af\u03bd\u03c4\u03b5\u03bf:", "LabelSubtitles": "\u03a5\u03c0\u03cc\u03c4\u03b9\u03c4\u03bb\u03bf\u03b9:", "Off": "\u039a\u03bb\u03b5\u03b9\u03c3\u03c4\u03cc", - "ShowTitle": "Show title", - "ShowYear": "Show year", - "Filters": "Filters", - "Unplayed": "Unplayed", - "LabelTVHomeScreen": "TV mode home screen:", - "Horizontal": "Horizontal", - "Vertical": "Vertical", - "GroupBySeries": "Group by series", - "HeaderVideoType": "Video Type", - "HeaderSeriesStatus": "Series Status", - "Features": "Features", - "Trailers": "Trailers", - "Extras": "Extras", - "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ShowTitle": "\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03c4\u03af\u03c4\u03bb\u03bf\u03c5", + "ShowYear": "\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03ad\u03c4\u03bf\u03c5\u03c2", + "Filters": "\u03a6\u03af\u03bb\u03c4\u03c1\u03b1", + "Unplayed": "\u0394\u03b5\u03bd \u03c0\u03b1\u03af\u03c7\u03b8\u03b7\u03ba\u03b5", + "LabelTVHomeScreen": "\u0391\u03c1\u03c7\u03b9\u03ba\u03ae \u03bf\u03b8\u03cc\u03bd\u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1\u03c2 \u03c4\u03b7\u03bb\u03b5\u03cc\u03c1\u03b1\u03c3\u03b7\u03c2:", + "Horizontal": "\u039f\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1", + "Vertical": "\u039a\u03ac\u03b8\u03b5\u03c4\u03b1", + "GroupBySeries": "\u039f\u03bc\u03b1\u03b4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03ba\u03b1\u03c4\u03ac \u03c3\u03b5\u03b9\u03c1\u03ac", + "HeaderVideoType": "\u03a4\u03cd\u03c0\u03bf\u03c2 \u0392\u03af\u03bd\u03c4\u03b5\u03bf", + "HeaderSeriesStatus": "\u039a\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03a3\u03b5\u03b9\u03c1\u03ac\u03c2", + "Features": "\u03a7\u03b1\u03c1\u03b1\u03ba\u03c4\u03b7\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03ac", + "Trailers": "\u03a4\u03c1\u03ad\u03ca\u03bb\u03b5\u03c1\u03c2", + "Extras": "\u0395\u03c0\u03b9\u03c0\u03bb\u03ad\u03bf\u03bd \u03a5\u03bb\u03b9\u03ba\u03cc", + "ThemeSongs": "\u0398\u03b5\u03bc\u03b1\u03c4\u03b9\u03ba\u03ac \u03c4\u03c1\u03b1\u03b3\u03bf\u03cd\u03b4\u03b9\u03b1", + "ThemeVideos": "\u0398\u03b5\u03bc\u03b1\u03c4\u03b9\u03ba\u03ac \u03b2\u03af\u03bd\u03c4\u03b5\u03bf", + "HeaderFavoriteMovies": "\u0391\u03b3\u03b1\u03c0\u03b7\u03bc\u03ad\u03bd\u03b5\u03c2 \u03a4\u03b1\u03b9\u03bd\u03af\u03b5\u03c2", + "HeaderFavoriteShows": "\u0391\u03b3\u03b1\u03c0\u03b7\u03bc\u03ad\u03bd\u03b5\u03c2 \u03a3\u03b5\u03b9\u03c1\u03ad\u03c2", + "HeaderFavoriteEpisodes": "\u0391\u03b3\u03b1\u03c0\u03b7\u03bc\u03ad\u03bd\u03b1 \u0395\u03c0\u03b5\u03b9\u03c3\u03cc\u03b4\u03b9\u03b1", + "HeaderFavoriteVideos": "\u0391\u03b3\u03b1\u03c0\u03b7\u03bc\u03ad\u03bd\u03b1 \u0392\u03af\u03bd\u03c4\u03b5\u03bf", + "HeaderFavoriteGames": "\u0391\u03b3\u03b1\u03c0\u03b7\u03bc\u03ad\u03bd\u03b1 \u03a0\u03b1\u03b9\u03c7\u03bd\u03af\u03b4\u03b9\u03b1", + "HeaderFavoriteArtists": "\u0391\u03b3\u03b1\u03c0\u03b7\u03bc\u03ad\u03bd\u03bf\u03b9 \u039a\u03b1\u03bb\u03bb\u03b9\u03c4\u03ad\u03c7\u03bd\u03b5\u03c2", + "HeaderFavoriteAlbums": "\u0391\u03b3\u03b1\u03c0\u03b7\u03bc\u03ad\u03bd\u03b1 \u0386\u03bb\u03bc\u03c0\u03bf\u03c5\u03bc", + "HeaderFavoriteSongs": "\u0391\u03b3\u03b1\u03c0\u03b7\u03bc\u03ad\u03bd\u03b1 \u03a4\u03c1\u03b1\u03b3\u03bf\u03cd\u03b4\u03b9\u03b1", + "Ascending": "\u0391\u03cd\u03be\u03bf\u03c5\u03c3\u03b1", + "Descending": "\u03a6\u03b8\u03af\u03bd\u03bf\u03c5\u03c3\u03b1", + "ColorPrimaries": "Color primaries", + "ColorSpace": "\u03a7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03ba\u03cc\u03c2 \u03c7\u03ce\u03c1\u03bf\u03c2", + "ColorTransfer": "\u039c\u03b5\u03c4\u03b1\u03c6\u03bf\u03c1\u03ac \u03c7\u03c1\u03ce\u03bc\u03b1\u03c4\u03bf\u03c2", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "\u0393\u03b9\u03b1 \u03bd\u03b1 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03c0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03b5\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u03b1\u03bd\u03b1\u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2, \u03c3\u03c4\u03b1\u03bc\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b1\u03bd\u03b1\u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03ae \u03b2\u03af\u03bd\u03c4\u03b5\u03bf \u03ba\u03b1\u03b9 \u03c3\u03c4\u03b7 \u03c3\u03c5\u03bd\u03ad\u03c7\u03b5\u03b9\u03b1, \u03ba\u03ac\u03bd\u03c4\u03b5 \u03ba\u03bb\u03b9\u03ba \u03c3\u03c4\u03bf \u03b5\u03b9\u03ba\u03bf\u03bd\u03af\u03b4\u03b9\u03bf \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03c3\u03c4\u03b7\u03bd \u03b5\u03c0\u03ac\u03bd\u03c9 \u03b4\u03b5\u03be\u03b9\u03ac \u03b5\u03bd\u03cc\u03c4\u03b7\u03c4\u03b1 \u03c4\u03b7\u03c2 \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae\u03c2.", + "SubtitleSettingsIntro": "\u0393\u03b9\u03b1 \u03bd\u03b1 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03b7 \u03b5\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03c5\u03c0\u03cc\u03c4\u03b9\u03c4\u03bb\u03c9\u03bd \u03ba\u03b1\u03b9 \u03c4\u03b9\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1\u03c2, \u03c3\u03c4\u03b1\u03bc\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b1\u03bd\u03b1\u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03ae \u03b2\u03af\u03bd\u03c4\u03b5\u03bf \u03ba\u03b1\u03b9, \u03c3\u03c4\u03b7 \u03c3\u03c5\u03bd\u03ad\u03c7\u03b5\u03b9\u03b1, \u03ba\u03ac\u03bd\u03c4\u03b5 \u03ba\u03bb\u03b9\u03ba \u03c3\u03c4\u03bf \u03b5\u03b9\u03ba\u03bf\u03bd\u03af\u03b4\u03b9\u03bf \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03c3\u03c4\u03b7\u03bd \u03b5\u03c0\u03ac\u03bd\u03c9 \u03b4\u03b5\u03be\u03b9\u03ac \u03b5\u03bd\u03cc\u03c4\u03b7\u03c4\u03b1 \u03c4\u03b7\u03c2 \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae\u03c2." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/en-gb.json b/dashboard-ui/bower_components/emby-webcomponents/strings/en-gb.json index a30c6579d6..8718c31d2d 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/en-gb.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/en-gb.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", @@ -17,6 +19,7 @@ "EndsAtValue": "Ends at {0}", "HeaderSelectDate": "Select Date", "Watched": "Watched", + "AirDate": "Air date", "Played": "Played", "ButtonOk": "Ok", "ButtonCancel": "Cancel", @@ -28,6 +31,12 @@ "RecordingScheduled": "Recording scheduled.", "SeriesRecordingScheduled": "Series recording scheduled.", "HeaderNewRecording": "New Recording", + "WakeServer": "Wake server", + "HeaderWakeServer": "Wake Server", + "AttemptingWakeServer": "Attempting to wake server. Please wait...", + "WakeServerSuccess": "Success!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN packets were sent to your server machine but we're unable to connect to your Emby Server. Your machine may need a little more time to wake or Emby Server may not be actively running on the machine.", "Sunday": "Sunday", "Monday": "Monday", "Tuesday": "Tuesday", @@ -36,6 +45,13 @@ "Friday": "Friday", "Saturday": "Saturday", "Days": "Days", + "SortByValue": "Sort by {0}", + "LabelSortBy": "Sort by:", + "LabelSortOrder": "Sort order:", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "Photos", + "HeaderAppearsOn": "Appears On", + "List": "List", "RecordSeries": "Record series", "HeaderCinemaMode": "Cinema Mode", "HeaderCloudSync": "Cloud Sync", @@ -138,7 +154,8 @@ "Shuffle": "Shuffle", "Identify": "Identify", "EditImages": "Edit images", - "EditInfo": "Edit info", + "EditMetadata": "Edit metadata", + "Convert": "Convert", "Sync": "Sync", "InstantMix": "Instant mix", "ViewAlbum": "View album", @@ -149,6 +166,7 @@ "ResumeAt": "Resume from {0}", "RemoveFromPlaylist": "Remove from playlist", "RemoveFromCollection": "Remove from collection", + "Sort": "Sort", "Trailer": "Trailer", "MarkPlayed": "Mark played", "MarkUnplayed": "Mark unplayed", @@ -157,7 +175,7 @@ "TryMultiSelect": "Try Multi-Select", "TryMultiSelectMessage": "To edit multiple media items, just click and hold any poster and select the items you want to manage. Try it!", "HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation", - "MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?", + "MessageConfirmRecordingCancellation": "Cancel recording?", "Error": "Error", "VoiceInput": "Voice Input", "LabelContentType": "Content type:", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "Original title:", "LabelSortTitle": "Sort title:", "LabelDateAdded": "Date added:", + "DateAdded": "Date added", + "DatePlayed": "Date played", "ConfigureDateAdded": "Configure how date added is determined in the Emby Server dashboard under Library settings", "LabelStatus": "Status:", "LabelArtists": "Artists:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "Artists": "Artists", + "ImdbRating": "IMDb rating", + "CommunityRating": "Community rating", "LabelCommunityRating": "Community rating:", "LabelCriticRating": "Critic rating:", + "CriticRating": "Critic rating", "LabelWebsite": "Website:", "LabelTagline": "Tagline:", "LabelOverview": "Overview:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Release date:", "LabelYear": "Year", "LabelPlaceOfBirth": "Place of birth:", + "Aired": "Aired", "LabelAirDays": "Air days:", "LabelAirTime": "Air time:", "LabelRuntimeMinutes": "Run time (minutes):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Original aspect ratio:", "Label3DFormat": "3D format:", "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Perfect match", "EnableExternalVideoPlayers": "Enable external video players", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Alternate Episode Numbers", - "LabelDvdSeasonNumber": "Dvd season number:", - "LabelDvdEpisodeNumber": "Dvd episode number:", - "LabelAbsoluteEpisodeNumber": "Absolute episode number:", "HeaderSpecialEpisodeInfo": "Special Episode Info", "LabelAirsBeforeSeason": "Airs before season:", "LabelAirsAfterSeason": "Airs after season:", @@ -241,6 +261,7 @@ "ProductionLocations": "Production locations", "BirthLocation": "Birth location", "ParentalRating": "Parental rating", + "PlayCount": "Play count", "Name": "Name", "Overview": "Overview", "LabelType": "Type:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "Deleting these items will delete them from both the file system and your media library. Are you sure you wish to continue?", "PleaseRestartServerName": "Please restart Emby Server - {0}.", "LabelSyncJobName": "Sync job name:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "Quality:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", "DownloadingDots": "Downloading...", @@ -297,12 +319,17 @@ "LearnMore": "Learn more", "LabelProfile": "Profile:", "LabelBitrateMbps": "Bitrate (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "Download unwatched videos only", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded and videos will be removed from the device as they are watched.", "AutomaticallySyncNewContent": "Automatically download new content", "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "Item limit:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "Please select a device to download to.", "Screenshots": "Screenshots", "MoveRight": "Move right", @@ -428,6 +455,7 @@ "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", "LabelSyncTo": "Sync to:", + "LabelConvertTo": "Convert to:", "Next": "Next", "LabelSource": "Source:", "LabelVersion": "Version:", @@ -441,10 +469,10 @@ "More": "More", "Up": "Up", "Down": "Down", + "Home": "Home", + "Favorites": "Favourites", "HeaderHomeScreen": "Home Screen", - "HeaderHomeScreenContent": "Home Screen Content", "HeaderLatestChannelItems": "Latest Channel Items", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "Library Order", "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", "HeaderOnNow": "On Now", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.", "Guide": "Guide", "Suggestions": "Suggestions", - "Favorites": "Favourites", + "HeaderFavoriteCollections": "Favourite Collections", + "HeaderFavoritePlaylists": "Favourite Playlists", "Collections": "Collections", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unticked will be displayed by themselves in their own view.", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", "Shows": "Shows", "HeaderLibraryFolders": "Library Folders", - "HeaderLandingScreens": "Landing Screens", - "LandingScreensHelp": "Select the default landing screen when clicking on a library.", "HeaderTermsOfPurchase": "Terms of Purchase", "PrivacyPolicy": "Privacy policy", "TermsOfUse": "Terms of use", "RepeatMode": "Repeat mode", "RepeatOne": "Repeat one", "RepeatAll": "Repeat all", - "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", + "LabelDefaultScreen": "Default screen:", + "ConfirmEndPlayerSession": "Would you like to shutdown Emby on {0}?", "Yes": "Yes", "No": "No", "LiveTV": "Live TV", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video codec not supported", "AudioCodecNotSupported": "Audio codec not supported", "SubtitleCodecNotSupported": "Subtitle format not supported", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Container not supported", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "No subtitles", "Default": "Default", + "Absolute": "Absolute", "Smart": "Smart", "Small": "Small", + "Smaller": "Smaller", "Medium": "Medium", "Large": "Large", "ExtraLarge": "Extra large", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active Internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Stop recording", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Manage recording", "LabelDropImageHere": "Drop image here, or click to browse.", "MessageFileReadError": "There was an error reading the file. Please try again.", @@ -633,5 +668,22 @@ "Trailers": "Trailers", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Favourite Movies", + "HeaderFavoriteShows": "Favourite Shows", + "HeaderFavoriteEpisodes": "Favourite Episodes", + "HeaderFavoriteVideos": "Favourite Videos", + "HeaderFavoriteGames": "Favourite Games", + "HeaderFavoriteArtists": "Favourite Artists", + "HeaderFavoriteAlbums": "Favourite Albums", + "HeaderFavoriteSongs": "Favourite Songs", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Colour primaries", + "ColorSpace": "Colour space", + "ColorTransfer": "Colour transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, DVD order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/en-us.json b/dashboard-ui/bower_components/emby-webcomponents/strings/en-us.json index 1b1a9af33a..cc8a35a108 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/en-us.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/en-us.json @@ -17,6 +17,7 @@ "EndsAtValue": "Ends at {0}", "HeaderSelectDate": "Select Date", "Watched": "Watched", + "AirDate": "Air date", "Played": "Played", "ButtonOk": "Ok", "ButtonCancel": "Cancel", @@ -28,6 +29,12 @@ "RecordingScheduled": "Recording scheduled.", "SeriesRecordingScheduled": "Series recording scheduled.", "HeaderNewRecording": "New Recording", + "WakeServer": "Wake server", + "HeaderWakeServer": "Wake Server", + "AttemptingWakeServer": "Attempting to wake server. Please wait...", + "WakeServerSuccess": "Success!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "Sunday", "Monday": "Monday", "Tuesday": "Tuesday", @@ -36,6 +43,13 @@ "Friday": "Friday", "Saturday": "Saturday", "Days": "Days", + "SortByValue": "Sort by {0}", + "LabelSortBy": "Sort by:", + "LabelSortOrder": "Sort order:", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "Photos", + "HeaderAppearsOn": "Appears On", + "List": "List", "RecordSeries": "Record series", "HeaderCinemaMode": "Cinema Mode", "HeaderCloudSync": "Cloud Sync", @@ -138,7 +152,8 @@ "Shuffle": "Shuffle", "Identify": "Identify", "EditImages": "Edit images", - "EditInfo": "Edit info", + "EditMetadata": "Edit metadata", + "Convert": "Convert", "Sync": "Sync", "InstantMix": "Instant mix", "ViewAlbum": "View album", @@ -149,6 +164,7 @@ "ResumeAt": "Resume from {0}", "RemoveFromPlaylist": "Remove from playlist", "RemoveFromCollection": "Remove from collection", + "Sort": "Sort", "Trailer": "Trailer", "MarkPlayed": "Mark played", "MarkUnplayed": "Mark unplayed", @@ -157,7 +173,7 @@ "TryMultiSelect": "Try Multi-Select", "TryMultiSelectMessage": "To edit multiple media items, just click and hold any poster and select the items you want to manage. Try it!", "HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation", - "MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?", + "MessageConfirmRecordingCancellation": "Cancel recording?", "Error": "Error", "VoiceInput": "Voice Input", "LabelContentType": "Content type:", @@ -167,6 +183,8 @@ "LabelOriginalTitle": "Original title:", "LabelSortTitle": "Sort title:", "LabelDateAdded": "Date added:", + "DateAdded": "Date added", + "DatePlayed": "Date played", "ConfigureDateAdded": "Configure how date added is determined in the Emby Server dashboard under Library settings", "LabelStatus": "Status:", "LabelArtists": "Artists:", @@ -175,8 +193,11 @@ "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "Artists": "Artists", + "ImdbRating": "IMDb rating", + "CommunityRating": "Community rating", "LabelCommunityRating": "Community rating:", "LabelCriticRating": "Critic rating:", + "CriticRating": "Critic rating", "LabelWebsite": "Website:", "LabelTagline": "Tagline:", "LabelOverview": "Overview:", @@ -184,6 +205,7 @@ "LabelReleaseDate": "Release date:", "LabelYear": "Year:", "LabelPlaceOfBirth": "Place of birth:", + "Aired": "Aired", "LabelAirDays": "Air days:", "LabelAirTime": "Air time:", "LabelRuntimeMinutes": "Run time (minutes):", @@ -192,14 +214,10 @@ "LabelOriginalAspectRatio": "Original aspect ratio:", "Label3DFormat": "3D format:", "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Perfect match", "EnableExternalVideoPlayers": "Enable external video players", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Alternate Episode Numbers", - "LabelDvdSeasonNumber": "Dvd season number:", - "LabelDvdEpisodeNumber": "Dvd episode number:", - "LabelAbsoluteEpisodeNumber": "Absolute episode number:", "HeaderSpecialEpisodeInfo": "Special Episode Info", "LabelAirsBeforeSeason": "Airs before season:", "LabelAirsAfterSeason": "Airs after season:", @@ -234,13 +252,14 @@ "Continuing": "Continuing", "Ended": "Ended", "HeaderEnabledFields": "Enabled Fields", - "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent it's data from being changed.", + "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent its data from being changed.", "Backdrops": "Backdrops", "Images": "Images", "Runtime": "Runtime", "ProductionLocations": "Production locations", "BirthLocation": "Birth location", "ParentalRating": "Parental rating", + "PlayCount": "Play count", "Name": "Name", "Overview": "Overview", "LabelType": "Type:", @@ -289,7 +308,8 @@ "ConfirmDeleteItems": "Deleting these items will delete them from both the file system and your media library. Are you sure you wish to continue?", "PleaseRestartServerName": "Please restart Emby Server - {0}.", "LabelSyncJobName": "Sync job name:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "Quality:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", "DownloadingDots": "Downloading...", @@ -297,12 +317,17 @@ "LearnMore": "Learn more", "LabelProfile": "Profile:", "LabelBitrateMbps": "Bitrate (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "Download unwatched videos only", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", "AutomaticallySyncNewContent": "Automatically download new content", "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "Item limit:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "Please select a device to download to.", "Screenshots": "Screenshots", "MoveRight": "Move right", @@ -428,6 +453,7 @@ "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", "LabelSyncTo": "Sync to:", + "LabelConvertTo": "Convert to:", "Next": "Next", "LabelSource": "Source:", "LabelVersion": "Version:", @@ -441,10 +467,10 @@ "More": "More", "Up": "Up", "Down": "Down", + "Home": "Home", + "Favorites": "Favorites", "HeaderHomeScreen": "Home Screen", - "HeaderHomeScreenContent": "Home Screen Content", "HeaderLatestChannelItems": "Latest Channel Items", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "Library Order", "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", "HeaderOnNow": "On Now", @@ -454,21 +480,24 @@ "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.", "Guide": "Guide", "Suggestions": "Suggestions", - "Favorites": "Favorites", + "HeaderFavoriteCollections": "Favorite Collections", + "HeaderFavoritePlaylists": "Favorite Playlists", "Collections": "Collections", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", "Shows": "Shows", "HeaderLibraryFolders": "Library Folders", - "HeaderLandingScreens": "Landing Screens", - "LandingScreensHelp": "Select the default landing screen when clicking on a library.", "HeaderTermsOfPurchase": "Terms of Purchase", "PrivacyPolicy": "Privacy policy", "TermsOfUse": "Terms of use", "RepeatMode": "Repeat mode", "RepeatOne": "Repeat one", "RepeatAll": "Repeat all", - "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", + "LabelDefaultScreen": "Default screen:", + "ConfirmEndPlayerSession": "Would you like to shutdown Emby on {0}?", "Yes": "Yes", "No": "No", "LiveTV": "Live TV", @@ -488,6 +517,7 @@ "VideoCodecNotSupported": "Video codec not supported", "AudioCodecNotSupported": "Audio codec not supported", "SubtitleCodecNotSupported": "Subtitle format not supported", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Container not supported", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", @@ -517,8 +547,10 @@ "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "No subtitles", "Default": "Default", + "Absolute": "Absolute", "Smart": "Smart", "Small": "Small", + "Smaller": "Smaller", "Medium": "Medium", "Large": "Large", "ExtraLarge": "Extra large", @@ -566,6 +598,7 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Stop recording", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Manage recording", "LabelDropImageHere": "Drop image here, or click to browse.", "MessageFileReadError": "There was an error reading the file. Please try again.", @@ -633,5 +666,24 @@ "Trailers": "Trailers", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteVideos": "Favorite Videos", + "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteSongs": "Favorite Songs", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Color space", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/es-ar.json b/dashboard-ui/bower_components/emby-webcomponents/strings/es-ar.json index 62ed6617e9..58f7df84f2 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/es-ar.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/es-ar.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", @@ -17,6 +19,7 @@ "EndsAtValue": "Ends at {0}", "HeaderSelectDate": "Select Date", "Watched": "Watched", + "AirDate": "Air date", "Played": "Played", "ButtonOk": "Ok", "ButtonCancel": "Cancel", @@ -28,6 +31,12 @@ "RecordingScheduled": "Recording scheduled.", "SeriesRecordingScheduled": "Series recording scheduled.", "HeaderNewRecording": "New Recording", + "WakeServer": "Wake server", + "HeaderWakeServer": "Wake Server", + "AttemptingWakeServer": "Attempting to wake server. Please wait...", + "WakeServerSuccess": "Success!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "Sunday", "Monday": "Monday", "Tuesday": "Tuesday", @@ -36,6 +45,13 @@ "Friday": "Friday", "Saturday": "Saturday", "Days": "Days", + "SortByValue": "Sort by {0}", + "LabelSortBy": "Sort by:", + "LabelSortOrder": "Sort order:", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "Photos", + "HeaderAppearsOn": "Appears On", + "List": "List", "RecordSeries": "Record series", "HeaderCinemaMode": "Cinema Mode", "HeaderCloudSync": "Cloud Sync", @@ -138,7 +154,8 @@ "Shuffle": "Shuffle", "Identify": "Identify", "EditImages": "Edit images", - "EditInfo": "Edit info", + "EditMetadata": "Edit metadata", + "Convert": "Convert", "Sync": "Sync", "InstantMix": "Instant mix", "ViewAlbum": "View album", @@ -149,6 +166,7 @@ "ResumeAt": "Resume from {0}", "RemoveFromPlaylist": "Remove from playlist", "RemoveFromCollection": "Remove from collection", + "Sort": "Sort", "Trailer": "Trailer", "MarkPlayed": "Mark played", "MarkUnplayed": "Mark unplayed", @@ -157,7 +175,7 @@ "TryMultiSelect": "Try Multi-Select", "TryMultiSelectMessage": "To edit multiple media items, just click and hold any poster and select the items you want to manage. Try it!", "HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation", - "MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?", + "MessageConfirmRecordingCancellation": "Cancel recording?", "Error": "Error", "VoiceInput": "Voice Input", "LabelContentType": "Content type:", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "Original title:", "LabelSortTitle": "Sort title:", "LabelDateAdded": "Date added:", + "DateAdded": "Date added", + "DatePlayed": "Date played", "ConfigureDateAdded": "Configure how date added is determined in the Emby Server dashboard under Library settings", "LabelStatus": "Status:", "LabelArtists": "Artists:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "Artists": "Artists", + "ImdbRating": "IMDb rating", + "CommunityRating": "Community rating", "LabelCommunityRating": "Community rating:", "LabelCriticRating": "Critic rating:", + "CriticRating": "Critic rating", "LabelWebsite": "Website:", "LabelTagline": "Tagline:", "LabelOverview": "Overview:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Release date:", "LabelYear": "Year:", "LabelPlaceOfBirth": "Place of birth:", + "Aired": "Aired", "LabelAirDays": "Air days:", "LabelAirTime": "Air time:", "LabelRuntimeMinutes": "Run time (minutes):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Original aspect ratio:", "Label3DFormat": "3D format:", "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Perfect match", "EnableExternalVideoPlayers": "Enable external video players", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Alternate Episode Numbers", - "LabelDvdSeasonNumber": "Dvd season number:", - "LabelDvdEpisodeNumber": "Dvd episode number:", - "LabelAbsoluteEpisodeNumber": "Absolute episode number:", "HeaderSpecialEpisodeInfo": "Special Episode Info", "LabelAirsBeforeSeason": "Airs before season:", "LabelAirsAfterSeason": "Airs after season:", @@ -234,13 +254,14 @@ "Continuing": "Continuing", "Ended": "Ended", "HeaderEnabledFields": "Enabled Fields", - "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent it's data from being changed.", + "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent its data from being changed.", "Backdrops": "Backdrops", "Images": "Images", "Runtime": "Runtime", "ProductionLocations": "Production locations", "BirthLocation": "Birth location", "ParentalRating": "Parental Rating", + "PlayCount": "Play count", "Name": "Name", "Overview": "Overview", "LabelType": "Type:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "Deleting these items will delete them from both the file system and your media library. Are you sure you wish to continue?", "PleaseRestartServerName": "Please restart Emby Server - {0}.", "LabelSyncJobName": "Sync job name:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "Quality:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", "DownloadingDots": "Downloading...", @@ -297,12 +319,17 @@ "LearnMore": "Learn more", "LabelProfile": "Profile:", "LabelBitrateMbps": "Bitrate (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "Download unwatched videos only", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", "AutomaticallySyncNewContent": "Automatically download new content", "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "Item limit:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "Please select a device to download to.", "Screenshots": "Screenshots", "MoveRight": "Move right", @@ -428,6 +455,7 @@ "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", "LabelSyncTo": "Sync to:", + "LabelConvertTo": "Convert to:", "Next": "Next", "LabelSource": "Source:", "LabelVersion": "Version:", @@ -441,10 +469,10 @@ "More": "More", "Up": "Up", "Down": "Down", + "Home": "Home", + "Favorites": "Favorites", "HeaderHomeScreen": "Home Screen", - "HeaderHomeScreenContent": "Home Screen Content", "HeaderLatestChannelItems": "Latest Channel Items", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "Library Order", "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", "HeaderOnNow": "On Now", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.", "Guide": "Guide", "Suggestions": "Suggestions", - "Favorites": "Favorites", + "HeaderFavoriteCollections": "Favorite Collections", + "HeaderFavoritePlaylists": "Favorite Playlists", "Collections": "Collections", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", "Shows": "Shows", "HeaderLibraryFolders": "Library Folders", - "HeaderLandingScreens": "Landing Screens", - "LandingScreensHelp": "Select the default landing screen when clicking on a library.", "HeaderTermsOfPurchase": "Terms of Purchase", "PrivacyPolicy": "Privacy policy", "TermsOfUse": "Terms of use", "RepeatMode": "Repeat mode", "RepeatOne": "Repeat one", "RepeatAll": "Repeat all", - "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", + "LabelDefaultScreen": "Default screen:", + "ConfirmEndPlayerSession": "Would you like to shutdown Emby on {0}?", "Yes": "Yes", "No": "No", "LiveTV": "Live TV", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video codec not supported", "AudioCodecNotSupported": "Audio codec not supported", "SubtitleCodecNotSupported": "Subtitle format not supported", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Container not supported", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "No subtitles", "Default": "Default", + "Absolute": "Absolute", "Smart": "Smart", "Small": "Small", + "Smaller": "Smaller", "Medium": "Medium", "Large": "Large", "ExtraLarge": "Extra large", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Stop recording", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Manage recording", "LabelDropImageHere": "Drop image here, or click to browse.", "MessageFileReadError": "There was an error reading the file. Please try again.", @@ -633,5 +668,22 @@ "Trailers": "Trailers", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteVideos": "Favorite Videos", + "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteSongs": "Favorite Songs", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Color space", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/es-mx.json b/dashboard-ui/bower_components/emby-webcomponents/strings/es-mx.json index e2c41ff785..70fb1b8865 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/es-mx.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/es-mx.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Configuraciones de Reproducci\u00f3n", + "SubtitleSettings": "Configuraciones de Subtitulos", "MessageUnlockAppWithPurchaseOrSupporter": "Desbloquee esta caracter\u00edstica con una peque\u00f1a compra \u00fanica, o con una suscripci\u00f3n activa de Emby Premier.", "MessageUnlockAppWithSupporter": "Desbloquee esta caracter\u00edstica con una suscripci\u00f3n activa de Emby Premier.", "MessageToValidateSupporter": "Si tiene una subscripci\u00f3n de Emby Premiere activa, aseg\u00farese de que ha configurado Emby Premiere en el Panel de Control del Servidor Emby, al cual puede acceder dando click en Emby Premiere dentro del men\u00fa principal.", @@ -13,10 +15,11 @@ "Repeat": "Repetir", "TrackCount": "{0} Pistas", "ItemCount": "{0} \u00edtems", - "OriginalAirDateValue": "Fecha de transmisi\u00f3n original: {0}", + "OriginalAirDateValue": "Fecha de emisi\u00f3n original: {0}", "EndsAtValue": "Termina a las {0}", "HeaderSelectDate": "Seleccionar fecha", "Watched": "Visto", + "AirDate": "Fecha de emisi\u00f3n", "Played": "Reproducido", "ButtonOk": "Ok", "ButtonCancel": "Cancelar", @@ -28,6 +31,12 @@ "RecordingScheduled": "Grabaci\u00f3n programada.", "SeriesRecordingScheduled": "Grabaci\u00f3n de series programadas.", "HeaderNewRecording": "Nueva Grabaci\u00f3n", + "WakeServer": "Despertar servidor", + "HeaderWakeServer": "Despertar Servidor", + "AttemptingWakeServer": "Intentando despertar el servidor. Por favor espere...", + "WakeServerSuccess": "\u00a1\u00c9xito!", + "HeaderCustomizeHomeScreen": "Personalizar la Pantalla de Inicio", + "WakeServerError": "Se enviaron los paquetes Wake On LAN (Despertar por red) a su computadora servidor, pero no ha sido posible contactar a su Servidor Emby. Su computadora quiz\u00e1s necesite un poco mas de tiempo para despertar, o tal vez la aplicaci\u00f3n de Servidor Emby no se esta ejecutando en la computadora.", "Sunday": "Domingo", "Monday": "Lunes", "Tuesday": "Martes", @@ -36,6 +45,13 @@ "Friday": "Viernes", "Saturday": "S\u00e1bado", "Days": "D\u00edas", + "SortByValue": "Ordenar por {0}", + "LabelSortBy": "Ordenar por:", + "LabelSortOrder": "Modo de ordenar:", + "HeaderPhotoAlbums": "\u00c1lbumes de Fotos", + "Photos": "Fotos", + "HeaderAppearsOn": "Aparece En", + "List": "Lista", "RecordSeries": "Grabar Series", "HeaderCinemaMode": "Modo Cine", "HeaderCloudSync": "Sincronizaci\u00f3n en la Nube", @@ -138,7 +154,8 @@ "Shuffle": "Aleatorio", "Identify": "Identificar", "EditImages": "Editar im\u00e1genes", - "EditInfo": "Editar informaci\u00f3n", + "EditMetadata": "Editar metadatos", + "Convert": "Convertir", "Sync": "Sincronizar", "InstantMix": "Mix instant\u00e1neo", "ViewAlbum": "Ver album", @@ -149,6 +166,7 @@ "ResumeAt": "Reanudar desde {0}", "RemoveFromPlaylist": "Eliminar de la lista de reproducci\u00f3n", "RemoveFromCollection": "Remover de la colecci\u00f3n", + "Sort": "Ordenar", "Trailer": "Trailer", "MarkPlayed": "Marcar como Reproducido", "MarkUnplayed": "Marcar como No Reproducido", @@ -157,7 +175,7 @@ "TryMultiSelect": "Intente Multi-Selecci\u00f3n", "TryMultiSelectMessage": "Para editar m\u00faltiples medios, solo de clic sostenido sobre cualquier p\u00f3ster y elija los items que desea administrar. \u00a1int\u00e9ntelo!", "HeaderConfirmRecordingCancellation": "Confirmar Cancelaci\u00f3n de la Grabaci\u00f3n", - "MessageConfirmRecordingCancellation": "\u00bfEst\u00e1 seguro de querer cancelar esta grabaci\u00f3n?", + "MessageConfirmRecordingCancellation": "\u00bfcancelar esta grabaci\u00f3n?", "Error": "Error", "VoiceInput": "Entrada de Voz", "LabelContentType": "Tipo de Contenido:", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "Titulo original:", "LabelSortTitle": "Titulo para ordenar:", "LabelDateAdded": "Fecha de adici\u00f3n:", + "DateAdded": "Fecha de adici\u00f3n", + "DatePlayed": "Fecha de reproducci\u00f3n", "ConfigureDateAdded": "Configure como la fecha de adici\u00f3n es determinada en el Panel de Control del Servidor Emby bajo la configuraci\u00f3n de Bibliotecas", "LabelStatus": "Estado:", "LabelArtists": "Artistas:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "Artistas del \u00e1lbum:", "LabelAlbum": "\u00c1lbum", "Artists": "Artistas", + "ImdbRating": "Calificaci\u00f3n de IMDb", + "CommunityRating": "Calificaci\u00f3n de la comunidad", "LabelCommunityRating": "Calificaci\u00f3n de la comunidad:", "LabelCriticRating": "Calificaci\u00f3n de la cr\u00edtica:", + "CriticRating": "Calificaci\u00f3n de la cr\u00edtica", "LabelWebsite": "Sitio web:", "LabelTagline": "Eslogan", "LabelOverview": "Sinopsis:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Fecha de estreno:", "LabelYear": "A\u00f1o:", "LabelPlaceOfBirth": "Lugar de nacimiento:", + "Aired": "Transmitido", "LabelAirDays": "Se emite los d\u00edas:", "LabelAirTime": "Duraci\u00f3n:", "LabelRuntimeMinutes": "Duraci\u00f3n (minutos):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Relaci\u00f3n de aspecto original:", "Label3DFormat": "Formato 3D:", "FormatValue": "Formato: {0}", - "DownloadsValue": "Descargas: {0}", + "DownloadsValue": "{0} descargas", "PerfectMatch": "Coincidencia exacta", "EnableExternalVideoPlayers": "Habilitar reproductores externos de video", "EnableExternalVideoPlayersHelp": "Un men\u00fa de reproductor externo se mostrara cuando inicie la reproducci\u00f3n de un video.", - "HeaderAlternateEpisodeNumbers": "N\u00fameros de Episodio Alternativos:", - "LabelDvdSeasonNumber": "N\u00famero de temporada del DVD:", - "LabelDvdEpisodeNumber": "N\u00famero de episodio de DVD:", - "LabelAbsoluteEpisodeNumber": "N\u00famero de episodio absoluto:", "HeaderSpecialEpisodeInfo": "Informaci\u00f3n del Episodio Especial", "LabelAirsBeforeSeason": "Transmisi\u00f3n antes de la temporada:", "LabelAirsAfterSeason": "Transmisi\u00f3n despu\u00e9s de la temporada:", @@ -241,6 +261,7 @@ "ProductionLocations": "Lugares de produccion", "BirthLocation": "Lugar de nacimiento", "ParentalRating": "Clasificaci\u00f3n Parental", + "PlayCount": "Cantidad de reproducciones", "Name": "Nombre", "Overview": "Sinopsis", "LabelType": "Tipo:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "Al borrar estos items ser\u00e1n eliminados tanto del sistema de archivos como de la biblioteca de medios. \u00bfEsta seguro que desea continuar?", "PleaseRestartServerName": "Por favor reinicie el Servidor Emby - {0}.", "LabelSyncJobName": "Nombre del trabajo de sincronizaci\u00f3n:", - "SyncJobCreated": "Trabajo de sincronizaci\u00f3n creado", + "SyncingDots": "Sincronizando...", + "ConvertingDots": "Convirtiendo...", "LabelQuality": "Calidad:", "LabelSyncNoTargetsHelp": "Parece que actualmente no cuentas con ninguna app que soporte descargas sin conexi\u00f3n.", "DownloadingDots": "Descargando...", @@ -297,12 +319,17 @@ "LearnMore": "Aprenda m\u00e1s", "LabelProfile": "Perf\u00edl:", "LabelBitrateMbps": "Tasa de bits (Mbps):", + "ConvertUnwatchedVideosOnly": "Convertir \u00f9nicamente videos no vistos", "SyncUnwatchedVideosOnly": "Descargar \u00fanicamente videos no vistos", + "ConvertUnwatchedVideosOnlyHelp": "Solo los videos no vistos ser\u00e1n convertidos.", "SyncUnwatchedVideosOnlyHelp": "Solamente los videos a\u00fan no vistos ser\u00e1n descargados, se eliminar\u00e1n los videos del dispositivo conforme \u00e9stos sean vistos.", "AutomaticallySyncNewContent": "Descargar autom\u00e1ticamente nuevos contenidos", "AutomaticallySyncNewContentHelp": "Los contenidos nuevos agregados a esta carpeta ser\u00e1n descargados autom\u00e1ticamente al dispositivo.", + "AutomaticallyConvertNewContent": "Convertir contenidos nuevos autom\u00e1ticamente", + "AutomaticallyConvertNewContentHelp": "Los contenidos nuevos agregados a esta carpeta ser\u00e1n convertidos autom\u00e1ticamente.", "LabelItemLimit": "L\u00edmite de \u00cdtems:", - "LabelItemLimitHelp": "Opcional. Establece un l\u00edmite en el n\u00famero de \u00edtems que ser\u00e1n descargados.", + "ConvertItemLimitHelp": "Opcional. Establecer un l\u00edmite en el n\u00famero de \u00edtems que ser\u00e1n convertidos.", + "DownloadItemLimitHelp": "Opcional. Establecer un l\u00edmite en el n\u00famero de \u00edtems que ser\u00e1n descargados.", "PleaseSelectDeviceToSyncTo": "Por favor seleccione un dispositivo con al que desee descargar.", "Screenshots": "Capturas de pantalla", "MoveRight": "Mover a la derecha", @@ -421,13 +448,14 @@ "HeaderMyMedia": "Mis Medios", "HeaderMyMediaSmall": "Mis medios (peque\u00f1o)", "LatestFromLibrary": "M\u00e1s recientes {0}", - "ContinueWatching": "Continue watching", + "ContinueWatching": "Continuar viendo", "HeaderLatestChannelMedia": "\u00cdtems Recientes de Canales", "HeaderContinueWatching": "Continuar Viendo", "HeaderContinueListening": "Continuar Escuchando", "HeaderActiveRecordings": "Grabaciones Activas", "HeaderLatestRecordings": "Grabaciones Recientes", "LabelSyncTo": "Sincronizar con:", + "LabelConvertTo": "Convertir a:", "Next": "Siguiente", "LabelSource": "Fuente:", "LabelVersion": "Versi\u00f3n:", @@ -441,10 +469,10 @@ "More": "Mas", "Up": "Arriba", "Down": "Abajo", + "Home": "Inicio", + "Favorites": "Favoritos", "HeaderHomeScreen": "Pantalla de Inicio", - "HeaderHomeScreenContent": "Contenido de la Pantalla de Inicio", "HeaderLatestChannelItems": "\u00cdtems Recientes de Canales", - "LabelSelectHomeScreenItemsFolders": "Permitir items en mi pantalla de inicio de:", "HeaderLibraryOrder": "Orden de Bibliotecas", "HideWatchedContentFromLatestMedia": "Ocultar contenido ya visto de Agregadas Recientemente", "HeaderOnNow": "Transmiti\u00e9ndo Ahora", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Por favor introduzca el disco para poder reproducir este video.", "Guide": "Gu\u00eda", "Suggestions": "Sugerencias", - "Favorites": "Favoritos", + "HeaderFavoriteCollections": "Colecciones Favoritas", + "HeaderFavoritePlaylists": "Listas de Reproducci\u00f3n Favoritas", "Collections": "Colecciones", "LabelSelectFolderGroups": "Agrupar autom\u00e1ticamente el contenido de las siguientes carpetas en vistas tales como Pel\u00edculas, M\u00fasica y TV:", "LabelSelectFolderGroupsHelp": "Las carpetas sin marcar ser\u00e1n mostradas individualmente en su propia vista.", + "Folders": "Carpetas", + "DisplayInOtherHomeScreenSections": "Mostrar en las secciones de la pantalla de inicio como Recientes o Continua Viendo", + "DisplayInMyMedia": "Mostrar en pantalla de inicio", "Shows": "Programas", "HeaderLibraryFolders": "Carpetas de Biblioteca", - "HeaderLandingScreens": "Pantallas de Llegada", - "LandingScreensHelp": "Seleccione la pantalla de llegada por defecto al dar clic sobre una biblioteca.", "HeaderTermsOfPurchase": "T\u00e9rminos de Compra", "PrivacyPolicy": "Pol\u00edtica de privacidad", "TermsOfUse": "T\u00e9rminos de uso", "RepeatMode": "Modo de repeticion", "RepeatOne": "Repetir uno", "RepeatAll": "Repetir todas", - "ConfirmEndPlayerSession": "\u00bfDesea cerrar Emby en el dispositivo?", + "LabelDefaultScreen": "Pantalla por defecto:", + "ConfirmEndPlayerSession": "\u00bfDesea cerrar Emby en {0}?", "Yes": "S\u00ed", "No": "No", "LiveTV": "TV en Vivo", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Codec de video no soportado", "AudioCodecNotSupported": "Codec de audio no soportado", "SubtitleCodecNotSupported": "Formato de subtitulo no soportado", + "DirectPlayError": "Error de reproducci\u00f3n directa", "ContainerNotSupported": "Contenedor no soportado", "VideoLevelNotSupported": "Nivel de video no soportado", "AudioBitrateNotSupported": "Tasa de bits de audio no soportado", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "Hubo un error eliminando el \u00edtem del Servidor Emby. Por favor verifique tenga permisos de escritura en la carpeta de medios e intente de nuevo.", "NoSubtitles": "Sin Subtitulos", "Default": "Por defecto", + "Absolute": "Absoluto", "Smart": "Inteligente", "Small": "Peque\u00f1o", + "Smaller": "M\u00e1s peque\u00f1o", "Medium": "Mediano", "Large": "Grande", "ExtraLarge": "Extra grande", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Cantidad de cuadros de referencia del Video no soportado", "ErrorConnectServerUnreachable": "Hubo un error al ejecutar la operaci\u00f3n solicitada. Su servidor no puede contactar nuestro servidor de Emby Connect en {0}. Por favor aseg\u00farese de que su servidor tiene una conection a internet activa y que el firewall o software de seguridad permita la comunicaci\u00f3n.", "StopRecording": "Detener grabaci\u00f3n", + "HeaderStopRecording": "Detener Grabaci\u00f3n", "ManageRecording": "Administrar grabaciones", "LabelDropImageHere": "Arrastre la imagen aqu\u00ed, o de clic para navegar.", "MessageFileReadError": "Hubo un error al leer el archivo. Por favor intente de nuevo.", @@ -629,9 +664,26 @@ "GroupBySeries": "Agrupar por series", "HeaderVideoType": "Tipo de Video", "HeaderSeriesStatus": "Estado de la Serie", - "Features": "Features", - "Trailers": "Trailers", + "Features": "Caracter\u00edsticas", + "Trailers": "Tr\u00e1ilers", "Extras": "Extras", - "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeSongs": "Canciones de Tema", + "ThemeVideos": "Videos de Tema", + "HeaderFavoriteMovies": "Pel\u00edculas Favoritas", + "HeaderFavoriteShows": "Programas Favoritos", + "HeaderFavoriteEpisodes": "Episodios Favoritos", + "HeaderFavoriteVideos": "Videos Favoritos", + "HeaderFavoriteGames": "Juegos Favoritos", + "HeaderFavoriteArtists": "Artistas Favoritos", + "HeaderFavoriteAlbums": "\u00c1lbumes Favoritos", + "HeaderFavoriteSongs": "Canciones Favoritas", + "Ascending": "Ascendente", + "Descending": "Descendente", + "ColorPrimaries": "Colores primarios", + "ColorSpace": "Espacio de color", + "ColorTransfer": "Transferencia de color", + "VideoRange": "Rango de video", + "SeriesDisplayOrderHelp": "Ordenar los episodios por fecha transmisi\u00f3n, orden del dvd o por su numeraci\u00f3n absoluta.", + "PlaybackSettingsIntro": "Para configurar las opciones de reproducci\u00f3n predeterminadas, detenga la reproducci\u00f3n de video. entonces de clic en su icono de usuario en la esquina superior derecha de la aplicaci\u00f3n.", + "SubtitleSettingsIntro": "Para configurar la apariencia predeterminada de los subtitulos e idioma, detenga la reproducci\u00f3n de video, entonces de clic en su icono de usuario en la parte superior derecha de la aplicaci\u00f3n." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/es.json b/dashboard-ui/bower_components/emby-webcomponents/strings/es.json index 8cf32c93ba..2630b061ec 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/es.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/es.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Desbloquea esta caracter\u00edstica con una peque\u00f1a compra una vez o con una suscripci\u00f3n a Emby Premiere.", "MessageUnlockAppWithSupporter": "Desbloquea esta caracter\u00edstica con una suscripci\u00f3n a Emby Premiere.", "MessageToValidateSupporter": "Si tienes una suscripci\u00f3n a Emby Premiere aseg\u00farate de que la has configurado en el Panel de Control de tu servidor Emby en Ayuda -> Emby Premiere.", @@ -17,6 +19,7 @@ "EndsAtValue": "Termina a las {0}", "HeaderSelectDate": "Seleccionar Fecha", "Watched": "Visto", + "AirDate": "Air date", "Played": "Reproducido", "ButtonOk": "Ok", "ButtonCancel": "Cancelar", @@ -28,6 +31,12 @@ "RecordingScheduled": "Grabaci\u00f3n programada.", "SeriesRecordingScheduled": "Grabaci\u00f3n de series programada.", "HeaderNewRecording": "Nueva grabaci\u00f3n", + "WakeServer": "Wake server", + "HeaderWakeServer": "Wake Server", + "AttemptingWakeServer": "Attempting to wake server. Please wait...", + "WakeServerSuccess": "Success!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "Domingo", "Monday": "Lunes", "Tuesday": "Martes", @@ -36,6 +45,13 @@ "Friday": "Viernes", "Saturday": "S\u00e1bado", "Days": "D\u00edas", + "SortByValue": "Sort by {0}", + "LabelSortBy": "Sort by:", + "LabelSortOrder": "Sort order:", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "Photos", + "HeaderAppearsOn": "Appears On", + "List": "List", "RecordSeries": "Grabar serie", "HeaderCinemaMode": "Modo cine", "HeaderCloudSync": "Sincronizaci\u00f3n en la nube", @@ -138,7 +154,8 @@ "Shuffle": "Mezclar", "Identify": "Identificar", "EditImages": "Editar im\u00e1genes", - "EditInfo": "Editar info", + "EditMetadata": "Edit metadata", + "Convert": "Convert", "Sync": "Sincronizar", "InstantMix": "Mix instant\u00e1neo", "ViewAlbum": "Ver album", @@ -149,6 +166,7 @@ "ResumeAt": "Continuar desde {0}", "RemoveFromPlaylist": "Quitar de la lista", "RemoveFromCollection": "Quitar de la colecci\u00f3n", + "Sort": "Sort", "Trailer": "Tr\u00e1iler", "MarkPlayed": "Marcar como reproducido", "MarkUnplayed": "Marcar como no reproducido", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "T\u00edtulo original", "LabelSortTitle": "Clasificar por t\u00edtulo:", "LabelDateAdded": "Fecha a\u00f1adido:", + "DateAdded": "Date added", + "DatePlayed": "Date played", "ConfigureDateAdded": "Configura como la fecha a\u00f1adida se determina en el Panel de Control del servidor Emby en los ajustes de la biblioteca.", "LabelStatus": "Estado:", "LabelArtists": "Artistas:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "Artistas de los \u00e1lbumes", "LabelAlbum": "\u00c1lbum", "Artists": "Artistas", + "ImdbRating": "IMDb rating", + "CommunityRating": "Community rating", "LabelCommunityRating": "Puntuaci\u00f3n de la comunidad", "LabelCriticRating": "Valoraci\u00f3n de la cr\u00edtica:", + "CriticRating": "Critic rating", "LabelWebsite": "Sitio web:", "LabelTagline": "Lema:", "LabelOverview": "Resumen:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Fecha de lanzamiento:", "LabelYear": "A\u00f1o:", "LabelPlaceOfBirth": "Lugar de nacimiento:", + "Aired": "Aired", "LabelAirDays": "D\u00edas de emisi\u00f3n:", "LabelAirTime": "Tiempo de emisi\u00f3n:", "LabelRuntimeMinutes": "Tiempo e ejecuci\u00f3n (minutos):", @@ -196,10 +220,6 @@ "PerfectMatch": "Perfect match", "EnableExternalVideoPlayers": "Activar reproductores externos", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Alternar el n\u00famero de episodios", - "LabelDvdSeasonNumber": "Temporada DVD n\u00famero:", - "LabelDvdEpisodeNumber": "Episodio DVD n\u00famero:", - "LabelAbsoluteEpisodeNumber": "N\u00famero absoluto de episodio:", "HeaderSpecialEpisodeInfo": "Informaci\u00f3n del episodio especial", "LabelAirsBeforeSeason": "Se emite antes de la temporada:", "LabelAirsAfterSeason": "Se emite despu\u00e9s de la temporada:", @@ -241,6 +261,7 @@ "ProductionLocations": "Localizaciones de producci\u00f3n", "BirthLocation": "Lugar de nacimiento", "ParentalRating": "Parental Rating", + "PlayCount": "Play count", "Name": "Nombre", "Overview": "Sinopsis", "LabelType": "Tipo:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "Al borrar este \u00edtem se borrar\u00e1 del sistema de archivos y de la biblioteca. \u00bfQuieres continuar?", "PleaseRestartServerName": "Por favor, reinicie el Servidor de Emby - {0}.", "LabelSyncJobName": "Nombre del trabajo de sincronizaci\u00f3n:", - "SyncJobCreated": "Trabajo de sincronizaci\u00f3n creado.", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "Calidad:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", "DownloadingDots": "Descargando", @@ -297,12 +319,17 @@ "LearnMore": "Aprende m\u00e1s", "LabelProfile": "Perfil:", "LabelBitrateMbps": "Tasa de bits (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "Download unwatched videos only", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", "AutomaticallySyncNewContent": "Descargar autom\u00e1ticamente contenido nuevo", "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "L\u00edmite de \u00edtems:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "Please select a device to download to.", "Screenshots": "Capturas de pantalla", "MoveRight": "Mover derecha", @@ -428,6 +455,7 @@ "HeaderActiveRecordings": "Grabaciones activas", "HeaderLatestRecordings": "\u00daltimas Grabaciones", "LabelSyncTo": "Sincronizar en:", + "LabelConvertTo": "Convert to:", "Next": "Siguiente", "LabelSource": "Source:", "LabelVersion": "Version:", @@ -441,10 +469,10 @@ "More": "M\u00e1s", "Up": "Arriba", "Down": "Abajo", + "Home": "Home", + "Favorites": "Favoritos", "HeaderHomeScreen": "Pantalla de inicio", - "HeaderHomeScreenContent": "Home Screen Content", "HeaderLatestChannelItems": "\u00daltimos elementos de canales", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "Orden de la Biblioteca", "HideWatchedContentFromLatestMedia": "Esconder medios vistos de los medios m\u00e1s recientes", "HeaderOnNow": "Transmitiendo Ahora", @@ -454,20 +482,23 @@ "PlaybackErrorPlaceHolder": "El contenido elegido no se puede reproducir desde este dispositivo.", "Guide": "Gu\u00eda", "Suggestions": "Sugerencias", - "Favorites": "Favoritos", + "HeaderFavoriteCollections": "Favorite Collections", + "HeaderFavoritePlaylists": "Favorite Playlists", "Collections": "Colecciones", "LabelSelectFolderGroups": "Agrupar contenido autom\u00e1ticamente desde las siguientes carpetas en vistas como Pel\u00edculas, M\u00fasica y Series:", "LabelSelectFolderGroupsHelp": "Las carpetas sin seleccionar se mostrar\u00e1n ellas mismas en su propia vista.", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", "Shows": "Series", "HeaderLibraryFolders": "Carpetas de la Biblioteca", - "HeaderLandingScreens": "Landing Screens", - "LandingScreensHelp": "Select the default landing screen when clicking on a library.", "HeaderTermsOfPurchase": "T\u00e9rminos de compra", "PrivacyPolicy": "Pol\u00edtica de privacidad", "TermsOfUse": "T\u00e9rminos de uso", "RepeatMode": "Modo de repetici\u00f3n", "RepeatOne": "Repetir uno", "RepeatAll": "Repetir todo", + "LabelDefaultScreen": "Default screen:", "ConfirmEndPlayerSession": "\u00bfQuieres cerrar Emby en el dispositivo?", "Yes": "Si", "No": "No", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Codec de video no soportado", "AudioCodecNotSupported": "Codec de audio no soportado", "SubtitleCodecNotSupported": "Formato de subt\u00edtulos no soportado", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Contenedor no soportado", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "Sin subt\u00edtulos", "Default": "Por defecto", + "Absolute": "Absolute", "Smart": "Listo", "Small": "Peque\u00f1o", + "Smaller": "Smaller", "Medium": "Mediano", "Large": "Grande", "ExtraLarge": "Extragrande", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "N\u00famero de cuadros de referencia de video no soportados", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Parar grabaci\u00f3n", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Gestionar grabaci\u00f3n", "LabelDropImageHere": "Soltar imagen aqu\u00ed, o pulsar para navegar.", "MessageFileReadError": "Ha habido un error leyendo el fichero. Por favor int\u00e9ntalo m\u00e1s tarde.", @@ -633,5 +668,22 @@ "Trailers": "Trailers", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteVideos": "Favorite Videos", + "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteSongs": "Favorite Songs", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Color space", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/fi.json b/dashboard-ui/bower_components/emby-webcomponents/strings/fi.json index db5667dca8..0dcd5d918c 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/fi.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/fi.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", @@ -17,6 +19,7 @@ "EndsAtValue": "Ends at {0}", "HeaderSelectDate": "Select Date", "Watched": "Watched", + "AirDate": "Air date", "Played": "Played", "ButtonOk": "Ok", "ButtonCancel": "Lopeta", @@ -28,6 +31,12 @@ "RecordingScheduled": "Recording scheduled.", "SeriesRecordingScheduled": "Series recording scheduled.", "HeaderNewRecording": "New Recording", + "WakeServer": "Wake server", + "HeaderWakeServer": "Wake Server", + "AttemptingWakeServer": "Attempting to wake server. Please wait...", + "WakeServerSuccess": "Success!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "Sunday", "Monday": "Monday", "Tuesday": "Tuesday", @@ -36,6 +45,13 @@ "Friday": "Friday", "Saturday": "Saturday", "Days": "Days", + "SortByValue": "Sort by {0}", + "LabelSortBy": "Sort by:", + "LabelSortOrder": "Sort order:", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "Photos", + "HeaderAppearsOn": "Appears On", + "List": "List", "RecordSeries": "Record series", "HeaderCinemaMode": "Cinema Mode", "HeaderCloudSync": "Cloud Sync", @@ -138,7 +154,8 @@ "Shuffle": "Shuffle", "Identify": "Identify", "EditImages": "Edit images", - "EditInfo": "Edit info", + "EditMetadata": "Edit metadata", + "Convert": "Convert", "Sync": "Sync", "InstantMix": "Instant mix", "ViewAlbum": "View album", @@ -149,6 +166,7 @@ "ResumeAt": "Resume from {0}", "RemoveFromPlaylist": "Remove from playlist", "RemoveFromCollection": "Remove from collection", + "Sort": "Sort", "Trailer": "Trailer", "MarkPlayed": "Mark played", "MarkUnplayed": "Mark unplayed", @@ -157,7 +175,7 @@ "TryMultiSelect": "Try Multi-Select", "TryMultiSelectMessage": "To edit multiple media items, just click and hold any poster and select the items you want to manage. Try it!", "HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation", - "MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?", + "MessageConfirmRecordingCancellation": "Cancel recording?", "Error": "Error", "VoiceInput": "Voice Input", "LabelContentType": "Content type:", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "Original title:", "LabelSortTitle": "Sort title:", "LabelDateAdded": "Date added:", + "DateAdded": "Date added", + "DatePlayed": "Date played", "ConfigureDateAdded": "Configure how date added is determined in the Emby Server dashboard under Library settings", "LabelStatus": "Status:", "LabelArtists": "Artists:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "Artists": "Artists", + "ImdbRating": "IMDb rating", + "CommunityRating": "Community rating", "LabelCommunityRating": "Community rating:", "LabelCriticRating": "Critic rating:", + "CriticRating": "Critic rating", "LabelWebsite": "Website:", "LabelTagline": "Tagline:", "LabelOverview": "Overview:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Release date:", "LabelYear": "Year:", "LabelPlaceOfBirth": "Place of birth:", + "Aired": "Aired", "LabelAirDays": "Air days:", "LabelAirTime": "Air time:", "LabelRuntimeMinutes": "Run time (minutes):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Original aspect ratio:", "Label3DFormat": "3D format:", "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Perfect match", "EnableExternalVideoPlayers": "Enable external video players", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Alternate Episode Numbers", - "LabelDvdSeasonNumber": "Dvd season number:", - "LabelDvdEpisodeNumber": "Dvd episode number:", - "LabelAbsoluteEpisodeNumber": "Absolute episode number:", "HeaderSpecialEpisodeInfo": "Special Episode Info", "LabelAirsBeforeSeason": "Airs before season:", "LabelAirsAfterSeason": "Airs after season:", @@ -234,13 +254,14 @@ "Continuing": "Continuing", "Ended": "Ended", "HeaderEnabledFields": "Enabled Fields", - "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent it's data from being changed.", + "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent its data from being changed.", "Backdrops": "Backdrops", "Images": "Images", "Runtime": "Runtime", "ProductionLocations": "Production locations", "BirthLocation": "Birth location", "ParentalRating": "Parental Rating", + "PlayCount": "Play count", "Name": "Name", "Overview": "Overview", "LabelType": "Type:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "Deleting these items will delete them from both the file system and your media library. Are you sure you wish to continue?", "PleaseRestartServerName": "Please restart Emby Server - {0}.", "LabelSyncJobName": "Sync job name:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "Quality:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", "DownloadingDots": "Downloading...", @@ -297,12 +319,17 @@ "LearnMore": "Learn more", "LabelProfile": "Profile:", "LabelBitrateMbps": "Bitrate (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "Download unwatched videos only", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", "AutomaticallySyncNewContent": "Automatically download new content", "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "Item limit:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "Please select a device to download to.", "Screenshots": "Screenshots", "MoveRight": "Move right", @@ -428,6 +455,7 @@ "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", "LabelSyncTo": "Sync to:", + "LabelConvertTo": "Convert to:", "Next": "Next", "LabelSource": "Source:", "LabelVersion": "Version:", @@ -441,10 +469,10 @@ "More": "More", "Up": "Up", "Down": "Down", + "Home": "Home", + "Favorites": "Favorites", "HeaderHomeScreen": "Home Screen", - "HeaderHomeScreenContent": "Home Screen Content", "HeaderLatestChannelItems": "Latest Channel Items", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "Library Order", "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", "HeaderOnNow": "On Now", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.", "Guide": "Guide", "Suggestions": "Suggestions", - "Favorites": "Favorites", + "HeaderFavoriteCollections": "Favorite Collections", + "HeaderFavoritePlaylists": "Favorite Playlists", "Collections": "Collections", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", "Shows": "Shows", "HeaderLibraryFolders": "Library Folders", - "HeaderLandingScreens": "Landing Screens", - "LandingScreensHelp": "Select the default landing screen when clicking on a library.", "HeaderTermsOfPurchase": "Terms of Purchase", "PrivacyPolicy": "Privacy policy", "TermsOfUse": "Terms of use", "RepeatMode": "Repeat mode", "RepeatOne": "Repeat one", "RepeatAll": "Repeat all", - "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", + "LabelDefaultScreen": "Default screen:", + "ConfirmEndPlayerSession": "Would you like to shutdown Emby on {0}?", "Yes": "Yes", "No": "No", "LiveTV": "Live TV", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video codec not supported", "AudioCodecNotSupported": "Audio codec not supported", "SubtitleCodecNotSupported": "Subtitle format not supported", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Container not supported", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "No subtitles", "Default": "Default", + "Absolute": "Absolute", "Smart": "Smart", "Small": "Small", + "Smaller": "Smaller", "Medium": "Medium", "Large": "Large", "ExtraLarge": "Extra large", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Stop recording", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Manage recording", "LabelDropImageHere": "Drop image here, or click to browse.", "MessageFileReadError": "There was an error reading the file. Please try again.", @@ -633,5 +668,22 @@ "Trailers": "Trailers", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteVideos": "Favorite Videos", + "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteSongs": "Favorite Songs", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Color space", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/fr-ca.json b/dashboard-ui/bower_components/emby-webcomponents/strings/fr-ca.json index ff00c77f9a..59cfe9b891 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/fr-ca.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/fr-ca.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "D\u00e9verrouillez cette fonctionnalit\u00e9 avec un petit achat unique ou avec un abonnement Emby Premiere actif.", "MessageUnlockAppWithSupporter": "D\u00e9verrouillez cette fonctionnalit\u00e9 avec un abonnement Emby Premi\u00e8re actif.", "MessageToValidateSupporter": "Si vous avez un abonnement Emby Premi\u00e8re actif, assurez-vous d'avoir install\u00e9 Emby Premi\u00e8re sur le tableau de bord de votre serveur Emby, auquel vous pouvez acc\u00e9der en cliquant sur Emby Premi\u00e8re dans le menu principal.", @@ -17,6 +19,7 @@ "EndsAtValue": "Se termine \u00e0 {0}", "HeaderSelectDate": "S\u00e9lectionner une date", "Watched": "Watched", + "AirDate": "Air date", "Played": "Played", "ButtonOk": "Ok", "ButtonCancel": "Annuler", @@ -28,6 +31,12 @@ "RecordingScheduled": "Enregistrement programm\u00e9.", "SeriesRecordingScheduled": "Enregistrement en s\u00e9rie programm\u00e9.", "HeaderNewRecording": "Nouvel enregistrement", + "WakeServer": "Wake server", + "HeaderWakeServer": "Wake Server", + "AttemptingWakeServer": "Attempting to wake server. Please wait...", + "WakeServerSuccess": "Success!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "Dimanche", "Monday": "Lundi", "Tuesday": "Mardi", @@ -36,6 +45,13 @@ "Friday": "Vendredi", "Saturday": "Samedi", "Days": "Jours", + "SortByValue": "Sort by {0}", + "LabelSortBy": "Sort by:", + "LabelSortOrder": "Sort order:", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "Photos", + "HeaderAppearsOn": "Appears On", + "List": "List", "RecordSeries": "Record series", "HeaderCinemaMode": "Mode Cin\u00e9ma", "HeaderCloudSync": "Synchronisation Cloud", @@ -138,7 +154,8 @@ "Shuffle": "Shuffle", "Identify": "Identify", "EditImages": "Edit images", - "EditInfo": "Edit info", + "EditMetadata": "Edit metadata", + "Convert": "Convert", "Sync": "Sync", "InstantMix": "Instant mix", "ViewAlbum": "View album", @@ -149,6 +166,7 @@ "ResumeAt": "Resume from {0}", "RemoveFromPlaylist": "Remove from playlist", "RemoveFromCollection": "Remove from collection", + "Sort": "Sort", "Trailer": "Trailer", "MarkPlayed": "Mark played", "MarkUnplayed": "Mark unplayed", @@ -157,7 +175,7 @@ "TryMultiSelect": "Try Multi-Select", "TryMultiSelectMessage": "To edit multiple media items, just click and hold any poster and select the items you want to manage. Try it!", "HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation", - "MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?", + "MessageConfirmRecordingCancellation": "Cancel recording?", "Error": "Error", "VoiceInput": "Voice Input", "LabelContentType": "Content type:", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "Original title:", "LabelSortTitle": "Sort title:", "LabelDateAdded": "Date added:", + "DateAdded": "Date added", + "DatePlayed": "Date played", "ConfigureDateAdded": "Configure how date added is determined in the Emby Server dashboard under Library settings", "LabelStatus": "Status:", "LabelArtists": "Artists:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "Artists": "Artists", + "ImdbRating": "IMDb rating", + "CommunityRating": "Community rating", "LabelCommunityRating": "Community rating:", "LabelCriticRating": "Critic rating:", + "CriticRating": "Critic rating", "LabelWebsite": "Website:", "LabelTagline": "Tagline:", "LabelOverview": "Overview:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Release date:", "LabelYear": "Ann\u00e9e:", "LabelPlaceOfBirth": "Place of birth:", + "Aired": "Aired", "LabelAirDays": "Air days:", "LabelAirTime": "Air time:", "LabelRuntimeMinutes": "Run time (minutes):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Original aspect ratio:", "Label3DFormat": "3D format:", "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Perfect match", "EnableExternalVideoPlayers": "Enable external video players", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Alternate Episode Numbers", - "LabelDvdSeasonNumber": "Dvd season number:", - "LabelDvdEpisodeNumber": "Dvd episode number:", - "LabelAbsoluteEpisodeNumber": "Absolute episode number:", "HeaderSpecialEpisodeInfo": "Special Episode Info", "LabelAirsBeforeSeason": "Airs before season:", "LabelAirsAfterSeason": "Airs after season:", @@ -234,13 +254,14 @@ "Continuing": "Continuing", "Ended": "Ended", "HeaderEnabledFields": "Enabled Fields", - "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent it's data from being changed.", + "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent its data from being changed.", "Backdrops": "Backdrops", "Images": "Images", "Runtime": "Runtime", "ProductionLocations": "Production locations", "BirthLocation": "Birth location", "ParentalRating": "Classement parentale", + "PlayCount": "Play count", "Name": "Name", "Overview": "Overview", "LabelType": "Type:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "Deleting these items will delete them from both the file system and your media library. Are you sure you wish to continue?", "PleaseRestartServerName": "Please restart Emby Server - {0}.", "LabelSyncJobName": "Sync job name:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "Quality:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", "DownloadingDots": "Downloading...", @@ -297,12 +319,17 @@ "LearnMore": "Learn more", "LabelProfile": "Profile:", "LabelBitrateMbps": "Bitrate (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "Download unwatched videos only", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", "AutomaticallySyncNewContent": "Automatically download new content", "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "Item limit:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "Please select a device to download to.", "Screenshots": "Screenshots", "MoveRight": "Move right", @@ -428,6 +455,7 @@ "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", "LabelSyncTo": "Sync to:", + "LabelConvertTo": "Convert to:", "Next": "Next", "LabelSource": "Source:", "LabelVersion": "Version:", @@ -441,10 +469,10 @@ "More": "More", "Up": "Up", "Down": "Down", + "Home": "Home", + "Favorites": "Favorites", "HeaderHomeScreen": "Home Screen", - "HeaderHomeScreenContent": "Home Screen Content", "HeaderLatestChannelItems": "Latest Channel Items", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "Library Order", "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", "HeaderOnNow": "On Now", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.", "Guide": "Guide", "Suggestions": "Suggestions", - "Favorites": "Favorites", + "HeaderFavoriteCollections": "Favorite Collections", + "HeaderFavoritePlaylists": "Favorite Playlists", "Collections": "Collections", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", "Shows": "Shows", "HeaderLibraryFolders": "Library Folders", - "HeaderLandingScreens": "Landing Screens", - "LandingScreensHelp": "Select the default landing screen when clicking on a library.", "HeaderTermsOfPurchase": "Terms of Purchase", "PrivacyPolicy": "Privacy policy", "TermsOfUse": "Terms of use", "RepeatMode": "Repeat mode", "RepeatOne": "Repeat one", "RepeatAll": "Repeat all", - "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", + "LabelDefaultScreen": "Default screen:", + "ConfirmEndPlayerSession": "Would you like to shutdown Emby on {0}?", "Yes": "Yes", "No": "No", "LiveTV": "Live TV", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video codec not supported", "AudioCodecNotSupported": "Audio codec not supported", "SubtitleCodecNotSupported": "Subtitle format not supported", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Container not supported", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "No subtitles", "Default": "Default", + "Absolute": "Absolute", "Smart": "Smart", "Small": "Small", + "Smaller": "Smaller", "Medium": "Medium", "Large": "Large", "ExtraLarge": "Extra large", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Stop recording", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Manage recording", "LabelDropImageHere": "Drop image here, or click to browse.", "MessageFileReadError": "There was an error reading the file. Please try again.", @@ -633,5 +668,22 @@ "Trailers": "Trailers", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteVideos": "Favorite Videos", + "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteSongs": "Favorite Songs", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Color space", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/fr.json b/dashboard-ui/bower_components/emby-webcomponents/strings/fr.json index 28969f2dd3..dd29b91f0d 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/fr.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/fr.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Param\u00e8tres de lecture", + "SubtitleSettings": "Param\u00e8tres des sous-titres", "MessageUnlockAppWithPurchaseOrSupporter": "D\u00e9verrouillez cette fonctionnalit\u00e9 avec un petit achat unique, ou avec un abonnement Emby Premiere.", "MessageUnlockAppWithSupporter": "D\u00e9verrouillez cette fonctionnalit\u00e9 avec un abonnement Emby Premiere.", "MessageToValidateSupporter": "Si vous avez un abonnement Emby Premiere, veuillez vous assurer que vous avez configur\u00e9 Emby Premiere dans le tableau de bord de votre serveur Emby auquel vous pouvez acc\u00e9der en cliquant sur Emby Premiere dans le menu principal", @@ -17,6 +19,7 @@ "EndsAtValue": "Se termine \u00e0 {0}", "HeaderSelectDate": "S\u00e9lectionnez la date", "Watched": "Lu", + "AirDate": "Date de diffusion", "Played": "Lu", "ButtonOk": "OK", "ButtonCancel": "Annuler", @@ -28,6 +31,12 @@ "RecordingScheduled": "Enregistrement planifi\u00e9.", "SeriesRecordingScheduled": "Enregistrement de la s\u00e9rie planifi\u00e9.", "HeaderNewRecording": "Nouvel enregistrement", + "WakeServer": "R\u00e9veiller le serveur", + "HeaderWakeServer": "R\u00e9veiller le serveur", + "AttemptingWakeServer": "Essai de r\u00e9veil du serveur. Veuillez patienter...", + "WakeServerSuccess": "R\u00e9ussi\u00a0!", + "HeaderCustomizeHomeScreen": "Personnaliser l'\u00e9cran d'accueil", + "WakeServerError": "Des paquets Wake-On-LAN on \u00e9t\u00e9 envoy\u00e9 \u00e0 votre serveur, mais nous ne pouvons pas nous connecter \u00e0 votre serveur Emby. Votre machine a peut-\u00eatre besoin de plus de temps pour se r\u00e9veiller, ou le serveur Emby n'est peut-\u00eatre pas lanc\u00e9 sur la machine.", "Sunday": "Dimanche", "Monday": "Lundi", "Tuesday": "Mardi", @@ -36,6 +45,13 @@ "Friday": "Vendredi", "Saturday": "Samedi", "Days": "Jours", + "SortByValue": "Trier par {0}", + "LabelSortBy": "Trier par :", + "LabelSortOrder": "Ordre de tri :", + "HeaderPhotoAlbums": "Albums photo", + "Photos": "Photos", + "HeaderAppearsOn": "Apparait dans", + "List": "Liste", "RecordSeries": "Enregistrer la s\u00e9rie", "HeaderCinemaMode": "Mode cin\u00e9ma", "HeaderCloudSync": "Synchronisation avec le cloud", @@ -135,10 +151,11 @@ "Open": "Ouvrir", "Play": "Lire", "AddToPlayQueue": "Ajouter \u00e0 la file d'attente", - "Shuffle": "M\u00e9langer", + "Shuffle": "Al\u00e9atoire", "Identify": "Identifier", "EditImages": "Modifier les images", - "EditInfo": "Modifier les informations", + "EditMetadata": "\u00c9diter les m\u00e9tadonn\u00e9es", + "Convert": "Convertir", "Sync": "Synchroniser", "InstantMix": "Mix instantan\u00e9", "ViewAlbum": "Voir l'album", @@ -149,6 +166,7 @@ "ResumeAt": "Reprendre \u00e0 {0}", "RemoveFromPlaylist": "Supprimer de la liste de lecture", "RemoveFromCollection": "Supprimer de la collection", + "Sort": "Tri", "Trailer": "Bande-annonce", "MarkPlayed": "Marquer comme lu", "MarkUnplayed": "Marquer comme non lu", @@ -157,7 +175,7 @@ "TryMultiSelect": "Essayer la s\u00e9lection multiple", "TryMultiSelectMessage": "Pour modifier plusieurs m\u00e9dias, il suffit de cliquer et maintenir le clic sur n'importe quelle affiche, puis de s\u00e9lectionner les autres \u00e9l\u00e9ments que vous voulez modifier. Essayez donc !", "HeaderConfirmRecordingCancellation": "Confirmer l'annulation de l'enregistrement", - "MessageConfirmRecordingCancellation": "Voulez-vous vraiment annuler cet enregistrement\u00a0?", + "MessageConfirmRecordingCancellation": "Annuler l'enregistrement\u00a0?", "Error": "Erreur", "VoiceInput": "Entr\u00e9e vocale", "LabelContentType": "Type de contenu :", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "Titre original\u00a0:", "LabelSortTitle": "Titre de tri\u00a0:", "LabelDateAdded": "Date d'ajout\u00a0:", + "DateAdded": "Date d'ajout", + "DatePlayed": "Date de lecture", "ConfigureDateAdded": "Configurez comment la date d'ajout est d\u00e9termin\u00e9e dans le tableau de bord du serveur Emby, dans M\u00e9diath\u00e8que, Avanc\u00e9", "LabelStatus": "\u00c9tat\u00a0:", "LabelArtists": "Artistes\u00a0:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "Artistes de l'album :", "LabelAlbum": "Album :", "Artists": "Artistes", + "ImdbRating": "Note IMDb", + "CommunityRating": "Note de la communaut\u00e9", "LabelCommunityRating": "Note de la communaut\u00e9\u00a0:", "LabelCriticRating": "Note des critiques\u00a0:", + "CriticRating": "Note de la critique", "LabelWebsite": "Site internet\u00a0:", "LabelTagline": "Slogan\u00a0:", "LabelOverview": "Synopsis\u00a0:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Date de sortie\u00a0:", "LabelYear": "Ann\u00e9e :", "LabelPlaceOfBirth": "Lieu de naissance :", + "Aired": "Diffus\u00e9", "LabelAirDays": "Jours de diffusion\u00a0:", "LabelAirTime": "Heure de diffusion :", "LabelRuntimeMinutes": "Dur\u00e9e (minutes)\u00a0:", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Ratio d'aspect original\u00a0:", "Label3DFormat": "Format 3D\u00a0:", "FormatValue": "Format : {0}", - "DownloadsValue": "T\u00e9l\u00e9chargements : {0}", + "DownloadsValue": "{0} t\u00e9l\u00e9chargements", "PerfectMatch": "Correspondance parfaite", "EnableExternalVideoPlayers": "Activer les lecteurs vid\u00e9o externes", "EnableExternalVideoPlayersHelp": "Une liste des lecteurs externes sera affich\u00e9e au lancement de la lecture d'une vid\u00e9o.", - "HeaderAlternateEpisodeNumbers": "Num\u00e9ros d'\u00e9pisode alternatifs", - "LabelDvdSeasonNumber": "Num\u00e9ro de saison en DVD :", - "LabelDvdEpisodeNumber": "Num\u00e9ro d'\u00e9pisode en DVD\u00a0:", - "LabelAbsoluteEpisodeNumber": "Num\u00e9ro d'\u00e9pisode absolu :", "HeaderSpecialEpisodeInfo": "Informations de l'\u00e9pisode sp\u00e9cial", "LabelAirsBeforeSeason": "Diffusion avant la saison :", "LabelAirsAfterSeason": "Diffusion apr\u00e8s la saison :", @@ -234,13 +254,14 @@ "Continuing": "En cours", "Ended": "Termin\u00e9", "HeaderEnabledFields": "Activer les champs", - "HeaderEnabledFieldsHelp": "D\u00e9cocher un champ pour le verrouiller et emp\u00eacher ainsi ses donn\u00e9es d'\u00eatre modifi\u00e9es.", + "HeaderEnabledFieldsHelp": "D\u00e9cocher un champ pour le verrouiller et emp\u00eacher ses donn\u00e9es d'\u00eatre modifi\u00e9es.", "Backdrops": "Arri\u00e8re-plans", "Images": "Images", "Runtime": "Dur\u00e9e", "ProductionLocations": "Sites de production", "BirthLocation": "Lieu de naissance", "ParentalRating": "Classification parentale", + "PlayCount": "Nombre de lectures", "Name": "Nom", "Overview": "Synopsis", "LabelType": "Type :", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "Supprimer ces \u00e9l\u00e9ments les effacera \u00e0 la fois du syst\u00e8me de fichiers et de votre m\u00e9diath\u00e8que. Voulez-vous vraiment continuer ?", "PleaseRestartServerName": "Veuillez red\u00e9marrer le serveur Emby - {0}.", "LabelSyncJobName": "Nom de la t\u00e2che de synchronisation :", - "SyncJobCreated": "T\u00e2che de synchronisation cr\u00e9\u00e9e.", + "SyncingDots": "Synchronisation...", + "ConvertingDots": "Conversion...", "LabelQuality": "Qualit\u00e9\u00a0:", "LabelSyncNoTargetsHelp": "Il semble que vous n'ayez actuellement aucune application qui supporte le t\u00e9l\u00e9chargement hors ligne.", "DownloadingDots": "T\u00e9l\u00e9chargement...", @@ -297,12 +319,17 @@ "LearnMore": "En savoir plus", "LabelProfile": "Profil :", "LabelBitrateMbps": "D\u00e9bit (Mbps) :", + "ConvertUnwatchedVideosOnly": "Convertir les vid\u00e9os non lues uniquement", "SyncUnwatchedVideosOnly": "T\u00e9l\u00e9charger seulement les vid\u00e9os non lues", + "ConvertUnwatchedVideosOnlyHelp": "Seulement les vid\u00e9os non lues seront converties", "SyncUnwatchedVideosOnlyHelp": "Seule les vid\u00e9os non lues seront t\u00e9l\u00e9charg\u00e9es et les vid\u00e9os seront supprim\u00e9es de l'appareil au fur et \u00e0 mesure que vous les regardez.", "AutomaticallySyncNewContent": "T\u00e9l\u00e9charger automatiquement le nouveau contenu", "AutomaticallySyncNewContentHelp": "Le nouveau contenu ajout\u00e9 \u00e0 ce dossier sera automatiquement transf\u00e9r\u00e9 vers l'appareil.", + "AutomaticallyConvertNewContent": "Convertir automatiquement les nouveaux contenus", + "AutomaticallyConvertNewContentHelp": "Les nouveaux contenus seront automatiquement convertis", "LabelItemLimit": "\u00c9l\u00e9ments maximum :", - "LabelItemLimitHelp": "Optionnel : d\u00e9finit le nombre maximum d'\u00e9l\u00e9ments qui seront transf\u00e9r\u00e9s.", + "ConvertItemLimitHelp": "Optionnel. D\u00e9finir une limite de nombre d'\u00e9l\u00e9ments \u00e0 convertir.", + "DownloadItemLimitHelp": "Optionnel. D\u00e9finir une limite de nombre d'\u00e9l\u00e9ments \u00e0 t\u00e9l\u00e9charger.", "PleaseSelectDeviceToSyncTo": "Veuillez s\u00e9lectionner l'appareil auquel le t\u00e9l\u00e9chargement doit \u00eatre envoy\u00e9.", "Screenshots": "Captures d'\u00e9cran", "MoveRight": "D\u00e9placer \u00e0 droite", @@ -316,8 +343,8 @@ "HDPrograms": "Programmes HD", "Programs": "Programmes", "LiveBroadcasts": "Diffusions en direct", - "Premieres": "Premi\u00e8res", - "RepeatEpisodes": "R\u00e9p\u00e9ter les \u00e9pisodes", + "Premieres": "In\u00e9dits", + "RepeatEpisodes": "Rediffusions", "DvrSubscriptionRequired": "Le magn\u00e9toscope Emby n\u00e9cessite un abonnement Emby Premiere.", "HeaderCancelRecording": "Annuler l'enregistrement", "CancelRecording": "Annuler l'enregistrement", @@ -325,7 +352,7 @@ "HeaderCancelSeries": "Annuler la s\u00e9rie", "HeaderKeepSeries": "Garder la s\u00e9rie", "HeaderLearnMore": "En savoir plus", - "DeleteMedia": "Effacer le m\u00e9dia", + "DeleteMedia": "Supprimer le m\u00e9dia", "SeriesSettings": "Param\u00e8tres de la s\u00e9rie", "HeaderRecordingOptions": "Options d'enregistrement", "CancelSeries": "Annuler la s\u00e9rie", @@ -358,7 +385,7 @@ "News": "Actualit\u00e9s", "Movies": "Films", "Kids": "Jeunesse", - "EnableColorCodedBackgrounds": "Activer les arri\u00e8res-plans \u00e0 code-couleur", + "EnableColorCodedBackgrounds": "Activer les fonds avec code couleur", "SortChannelsBy": "Trier les cha\u00eenes par\u00a0:", "RecentlyWatched": "Lu r\u00e9cemment", "ChannelNumber": "Num\u00e9ro de cha\u00eene", @@ -399,7 +426,7 @@ "SyncJobItemStatusRemovedFromDevice": "Supprim\u00e9 de l'appareil", "SyncJobItemStatusCancelled": "Annul\u00e9", "Retry": "R\u00e9essayer", - "HeaderMyDevice": "Mon appareil", + "HeaderMyDevice": "Cet appareil", "Continue": "Continuer", "ContinueInSecondsValue": "Continuer dans {0} secondes.", "HeaderRemoteControl": "Contr\u00f4le \u00e0 distance", @@ -418,33 +445,34 @@ "Accept": "Accepter", "Reject": "Refuser", "Connect": "Se connecter", - "HeaderMyMedia": "Mes m\u00e9dias", - "HeaderMyMediaSmall": "Mes m\u00e9dias (petit)", - "LatestFromLibrary": "{0} r\u00e9cemment ajout\u00e9s", + "HeaderMyMedia": "Mes M\u00e9dias", + "HeaderMyMediaSmall": "Mes m\u00e9dias (Petit)", + "LatestFromLibrary": "{0}, ajouts r\u00e9cents", "ContinueWatching": "Continuez \u00e0 regarder", "HeaderLatestChannelMedia": "Derniers \u00e9l\u00e9ments de la cha\u00eene", - "HeaderContinueWatching": "Continuer \u00e0 regarder", - "HeaderContinueListening": "Continuer l'\u00e9coute", + "HeaderContinueWatching": "Reprendre", + "HeaderContinueListening": "Reprendre l'\u00e9coute", "HeaderActiveRecordings": "Enregistrements actifs", "HeaderLatestRecordings": "Derniers enregistrements", "LabelSyncTo": "Synchroniser avec :", + "LabelConvertTo": "Convertir en :", "Next": "Prochain", "LabelSource": "Source:", "LabelVersion": "Version :", "AllLanguages": "Tous les langages", "Previous": "Pr\u00e9c\u00e9dent", - "HeaderNextUp": "En Cours", - "HeaderLatestFrom": "R\u00e9cemment ajout\u00e9s {0}", + "HeaderNextUp": "\u00c0 suivre", + "HeaderLatestFrom": "{0}, ajouts r\u00e9cents", "LabelHomeScreenSectionValue": "Section {0} de l'accueil\u00a0:", "SettingsSaved": "Param\u00e8tres enregistr\u00e9s.", "None": "Aucun", "More": "Plus", "Up": "Haut", "Down": "Bas", + "Home": "Accueil", + "Favorites": "Favoris", "HeaderHomeScreen": "\u00c9cran d'accueil", - "HeaderHomeScreenContent": "Contenu de l'\u00e9cran d'accueil", "HeaderLatestChannelItems": "Derniers \u00e9l\u00e9ments de la cha\u00eene", - "LabelSelectHomeScreenItemsFolders": "Autoriser sur mon \u00e9cran d'accueil l'affichage des \u00e9l\u00e9ments de\u00a0:", "HeaderLibraryOrder": "Ordre de la m\u00e9diath\u00e8que", "HideWatchedContentFromLatestMedia": "Masquer le contenu d\u00e9j\u00e0 vu dans les derniers m\u00e9dias", "HeaderOnNow": "En ce moment", @@ -454,25 +482,28 @@ "PlaybackErrorPlaceHolder": "Veuillez ins\u00e9rer le disque pour lire cette vid\u00e9o.", "Guide": "Guide", "Suggestions": "Suggestions", - "Favorites": "Favoris", + "HeaderFavoriteCollections": "Collections Favorites", + "HeaderFavoritePlaylists": "Listes de lecture favorites", "Collections": "Collections", "LabelSelectFolderGroups": "Grouper automatiquement le contenu des dossiers suivants dans des cat\u00e9gories telles que Films, Musique et TV\u00a0:", "LabelSelectFolderGroupsHelp": "Les dossiers qui ne sont pas coch\u00e9s seront affich\u00e9s tels quels, avec leur propre vue.", + "Folders": "Dossiers", + "DisplayInOtherHomeScreenSections": "Afficher dans les sections de l\u2019\u00e9cran d\u2019accueil comme Ajouts r\u00e9cents et Reprendre", + "DisplayInMyMedia": "Afficher sur l\u2019\u00e9cran d\u2019accueil", "Shows": "\u00c9missions", "HeaderLibraryFolders": "Dossiers de la m\u00e9diath\u00e8que", - "HeaderLandingScreens": "\u00c9crans d\u2019accueil", - "LandingScreensHelp": "S\u00e9lectionner l'\u00e9cran d'accueil par d\u00e9faut quand vous cliquez sur une m\u00e9diath\u00e8que.", "HeaderTermsOfPurchase": "Conditions d'achat", "PrivacyPolicy": "Politique de confidentialit\u00e9", "TermsOfUse": "Conditions d'utilisation", "RepeatMode": "Mode de r\u00e9p\u00e9tition", "RepeatOne": "R\u00e9p\u00e9ter un m\u00e9dia", "RepeatAll": "Tout r\u00e9p\u00e9ter", - "ConfirmEndPlayerSession": "Voulez-vous fermer Emby sur l'appareil ?", + "LabelDefaultScreen": "\u00c9cran par d\u00e9faut", + "ConfirmEndPlayerSession": "Voulez-vous arr\u00eater Emby sur {0} ?", "Yes": "Oui", "No": "Non", "LiveTV": "TV en direct", - "Schedule": "Programmation", + "Schedule": "Planning", "Recordings": "Enregistrements", "MarkWatched": "Marquer comme lu", "ScanForNewAndUpdatedFiles": "Actualiser pour d\u00e9tecter les nouveaux fichiers et les modifications", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Codec vid\u00e9o non support\u00e9", "AudioCodecNotSupported": "Codec audio non support\u00e9", "SubtitleCodecNotSupported": "Format des sous-titres non pris en charge", + "DirectPlayError": "Erreur de lecture directe", "ContainerNotSupported": "Conteneur non pris en charge", "VideoLevelNotSupported": "Niveau vid\u00e9o non pris en charge", "AudioBitrateNotSupported": "D\u00e9bit audio non pris en charge", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "Une erreur s'est produite lors de la suppression de l'\u00e9l\u00e9ment du serveur Emby. V\u00e9rifiez que le serveur Emby a un acc\u00e8s en \u00e9criture au dossier multim\u00e9dia et r\u00e9essayez.", "NoSubtitles": "Pas de sous-titres", "Default": "Par d\u00e9faut", + "Absolute": "Absolu", "Smart": "Intelligent", "Small": "Petit", + "Smaller": "Plus petit", "Medium": "Moyen", "Large": "Grand", "ExtraLarge": "Tr\u00e8s grand", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Nombre d'images de r\u00e9f\u00e9rence de la vid\u00e9o non pris en charge", "ErrorConnectServerUnreachable": "Une erreur est survenue pendant l'ex\u00e9cution de l'op\u00e9ration demand\u00e9e. Votre serveur est dans l'incapacit\u00e9 de joindre le serveur d'Emby Connect \u00e0 {0}. Veuillez v\u00e9rifier que votre serveur est bien connect\u00e9 \u00e0 Internet et qu'aucun pare-feu ou autre logiciel de s\u00e9curit\u00e9 ne bloque les communications.", "StopRecording": "Arr\u00eater l'enregistrement", + "HeaderStopRecording": "Arr\u00eater l'enregistrement", "ManageRecording": "G\u00e9rer l'enregistrement", "LabelDropImageHere": "Faites glisser l'image ici, ou cliquez pour parcourir vos fichiers.", "MessageFileReadError": "Une erreur est survenue lors de la lecture du fichier. Veuillez r\u00e9essayer.", @@ -623,15 +658,32 @@ "ShowYear": "Voir l'ann\u00e9e", "Filters": "Filtres", "Unplayed": "Non lu", - "LabelTVHomeScreen": "\u00c9cran d'accueil du mode TV:", + "LabelTVHomeScreen": "\u00c9cran d'accueil du mode TV :", "Horizontal": "Horizontal", "Vertical": "Verticale", "GroupBySeries": "Grouper par s\u00e9ries", "HeaderVideoType": "Type de vid\u00e9o", "HeaderSeriesStatus": "Statut de la s\u00e9rie", "Features": "Longs m\u00e9trages", - "Trailers": "Bandes annonces", + "Trailers": "Bandes-annonces", "Extras": "Extras", "ThemeSongs": "Chansons th\u00e9matiques", - "ThemeVideos": "Vid\u00e9os th\u00e9matiques" + "ThemeVideos": "Vid\u00e9os th\u00e9matiques", + "HeaderFavoriteMovies": "Films Favoris", + "HeaderFavoriteShows": "S\u00e9ries Favorites", + "HeaderFavoriteEpisodes": "Episodes Favoris", + "HeaderFavoriteVideos": "Vid\u00e9os favoris", + "HeaderFavoriteGames": "Jeux Favoris", + "HeaderFavoriteArtists": "Artistes Favoris", + "HeaderFavoriteAlbums": "Albums Favoris", + "HeaderFavoriteSongs": "Chansons Favorites", + "Ascending": "Croissant", + "Descending": "D\u00e9croissant", + "ColorPrimaries": "Couleurs primaires", + "ColorSpace": "Espace colorim\u00e9trique", + "ColorTransfer": "Transfert de couleur", + "VideoRange": "Gamme vid\u00e9o", + "SeriesDisplayOrderHelp": "Ranger les \u00e9pisodes par date de diffusion, par ordre de DVD ou par num\u00e9ro absolu.", + "PlaybackSettingsIntro": "Pour configurer les r\u00e9glages de lecture par d\u00e9faut, arr\u00eatez la lecture de la vid\u00e9o, puis cliquez sur votre ic\u00f4ne utilisateur situ\u00e9e en haut \u00e0 droite dans l'application.", + "SubtitleSettingsIntro": "Pour configurer l'apparence des sous-titres et la langue par d\u00e9faut, arr\u00eatez la lecture de la vid\u00e9o, puis cliquez sur votre ic\u00f4ne utilisateur situ\u00e9e en haut \u00e0 droite dans l'application." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/gsw.json b/dashboard-ui/bower_components/emby-webcomponents/strings/gsw.json index 3d0e7e1d4e..c30f632bec 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/gsw.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/gsw.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", @@ -17,6 +19,7 @@ "EndsAtValue": "Ends at {0}", "HeaderSelectDate": "Select Date", "Watched": "Watched", + "AirDate": "Air date", "Played": "Played", "ButtonOk": "Ok", "ButtonCancel": "Abbreche", @@ -28,6 +31,12 @@ "RecordingScheduled": "Recording scheduled.", "SeriesRecordingScheduled": "Series recording scheduled.", "HeaderNewRecording": "New Recording", + "WakeServer": "Wake server", + "HeaderWakeServer": "Wake Server", + "AttemptingWakeServer": "Attempting to wake server. Please wait...", + "WakeServerSuccess": "Success!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "Sonntig", "Monday": "M\u00e4ntig", "Tuesday": "Tsischtig", @@ -36,6 +45,13 @@ "Friday": "Friitig", "Saturday": "Samstig", "Days": "Days", + "SortByValue": "Sort by {0}", + "LabelSortBy": "Sort by:", + "LabelSortOrder": "Sort order:", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "Photos", + "HeaderAppearsOn": "Appears On", + "List": "List", "RecordSeries": "Record series", "HeaderCinemaMode": "Cinema Mode", "HeaderCloudSync": "Cloud Sync", @@ -138,7 +154,8 @@ "Shuffle": "Shuffle", "Identify": "Identify", "EditImages": "Edit images", - "EditInfo": "Edit info", + "EditMetadata": "Edit metadata", + "Convert": "Convert", "Sync": "Sync", "InstantMix": "Instant mix", "ViewAlbum": "View album", @@ -149,6 +166,7 @@ "ResumeAt": "Resume from {0}", "RemoveFromPlaylist": "Remove from playlist", "RemoveFromCollection": "Remove from collection", + "Sort": "Sort", "Trailer": "Trailer", "MarkPlayed": "Mark played", "MarkUnplayed": "Mark unplayed", @@ -157,7 +175,7 @@ "TryMultiSelect": "Try Multi-Select", "TryMultiSelectMessage": "To edit multiple media items, just click and hold any poster and select the items you want to manage. Try it!", "HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation", - "MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?", + "MessageConfirmRecordingCancellation": "Cancel recording?", "Error": "Error", "VoiceInput": "Voice Input", "LabelContentType": "Date Art:", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "Original title:", "LabelSortTitle": "Sort title:", "LabelDateAdded": "Date added:", + "DateAdded": "Date added", + "DatePlayed": "Date played", "ConfigureDateAdded": "Configure how date added is determined in the Emby Server dashboard under Library settings", "LabelStatus": "Status:", "LabelArtists": "Artist:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "Artists": "Artists", + "ImdbRating": "IMDb rating", + "CommunityRating": "Community rating", "LabelCommunityRating": "Community rating:", "LabelCriticRating": "Critic rating:", + "CriticRating": "Critic rating", "LabelWebsite": "Website:", "LabelTagline": "Tagline:", "LabelOverview": "Overview:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Release date:", "LabelYear": "Year:", "LabelPlaceOfBirth": "Place of birth:", + "Aired": "Aired", "LabelAirDays": "Air days:", "LabelAirTime": "Air time:", "LabelRuntimeMinutes": "Run time (minutes):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Original aspect ratio:", "Label3DFormat": "3D format:", "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Perfect match", "EnableExternalVideoPlayers": "Enable external video players", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Alternate Episode Numbers", - "LabelDvdSeasonNumber": "Dvd season number:", - "LabelDvdEpisodeNumber": "Dvd episode number:", - "LabelAbsoluteEpisodeNumber": "Absolute episode number:", "HeaderSpecialEpisodeInfo": "Special Episode Info", "LabelAirsBeforeSeason": "Airs before season:", "LabelAirsAfterSeason": "Airs after season:", @@ -234,13 +254,14 @@ "Continuing": "Fortlaufend", "Ended": "Beendent", "HeaderEnabledFields": "Enabled Fields", - "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent it's data from being changed.", + "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent its data from being changed.", "Backdrops": "Backdrops", "Images": "Images", "Runtime": "Runtime", "ProductionLocations": "Production locations", "BirthLocation": "Birth location", "ParentalRating": "Parental Rating", + "PlayCount": "Play count", "Name": "Name", "Overview": "Overview", "LabelType": "Type:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "Deleting these items will delete them from both the file system and your media library. Are you sure you wish to continue?", "PleaseRestartServerName": "Please restart Emby Server - {0}.", "LabelSyncJobName": "Sync job name:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "Quality:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", "DownloadingDots": "Downloading...", @@ -297,12 +319,17 @@ "LearnMore": "Learn more", "LabelProfile": "Profile:", "LabelBitrateMbps": "Bitrate (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "Download unwatched videos only", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", "AutomaticallySyncNewContent": "Automatically download new content", "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "Item limit:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "Please select a device to download to.", "Screenshots": "Screenshots", "MoveRight": "Move right", @@ -428,6 +455,7 @@ "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", "LabelSyncTo": "Sync to:", + "LabelConvertTo": "Convert to:", "Next": "Next", "LabelSource": "Source:", "LabelVersion": "Version:", @@ -441,10 +469,10 @@ "More": "More", "Up": "Up", "Down": "Down", + "Home": "Home", + "Favorites": "Favorites", "HeaderHomeScreen": "Home Screen", - "HeaderHomeScreenContent": "Home Screen Content", "HeaderLatestChannelItems": "Latest Channel Items", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "Library Order", "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", "HeaderOnNow": "On Now", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.", "Guide": "Guide", "Suggestions": "Suggestions", - "Favorites": "Favorites", + "HeaderFavoriteCollections": "Favorite Collections", + "HeaderFavoritePlaylists": "Favorite Playlists", "Collections": "Collections", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", "Shows": "Shows", "HeaderLibraryFolders": "Library Folders", - "HeaderLandingScreens": "Landing Screens", - "LandingScreensHelp": "Select the default landing screen when clicking on a library.", "HeaderTermsOfPurchase": "Terms of Purchase", "PrivacyPolicy": "Privacy policy", "TermsOfUse": "Terms of use", "RepeatMode": "Repeat mode", "RepeatOne": "Repeat one", "RepeatAll": "Repeat all", - "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", + "LabelDefaultScreen": "Default screen:", + "ConfirmEndPlayerSession": "Would you like to shutdown Emby on {0}?", "Yes": "Yes", "No": "No", "LiveTV": "Live TV", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video codec not supported", "AudioCodecNotSupported": "Audio codec not supported", "SubtitleCodecNotSupported": "Subtitle format not supported", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Container not supported", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "No subtitles", "Default": "Default", + "Absolute": "Absolute", "Smart": "Smart", "Small": "Small", + "Smaller": "Smaller", "Medium": "Medium", "Large": "Large", "ExtraLarge": "Extra large", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Stop recording", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Manage recording", "LabelDropImageHere": "Drop image here, or click to browse.", "MessageFileReadError": "There was an error reading the file. Please try again.", @@ -633,5 +668,22 @@ "Trailers": "Trailers", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteVideos": "Favorite Videos", + "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteSongs": "Favorite Songs", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Color space", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/he.json b/dashboard-ui/bower_components/emby-webcomponents/strings/he.json index f386eb48aa..6346a5d44c 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/he.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/he.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "\u05e0\u05e2\u05d9\u05dc\u05ea \u05ea\u05db\u05d5\u05e0\u05d4 \u05d6\u05d5 \u05e2\u05dd \u05e8\u05db\u05d9\u05e9\u05d4 \u05d7\u05d3 \u05e4\u05e2\u05de\u05d9\u05ea \u05e7\u05d8\u05e0\u05d4, \u05d0\u05d5 \u05e2\u05dd \u05de\u05e0\u05d5\u05d9 \u05e4\u05e2\u05d9\u05dc Premiere \u05d0\u05de\u05d1\u05d9.", "MessageUnlockAppWithSupporter": "\u05d1\u05d9\u05d8\u05d5\u05dc \u05e0\u05e2\u05d9\u05dc\u05d4 \u05e9\u05dc \u05ea\u05db\u05d5\u05e0\u05d4 \u05d6\u05d5 \u05e2\u05dd \u05de\u05e0\u05d5\u05d9 \u05e4\u05e2\u05d9\u05dc \u05e9\u05dc Emby Premiere.", "MessageToValidateSupporter": "\u05d0\u05dd \u05d9\u05e9 \u05dc\u05da \u05de\u05e0\u05d5\u05d9 \u05e4\u05e2\u05d9\u05dc \u05e9\u05dc Emby Premiere, \u05d5\u05d3\u05d0 \u05e9\u05d4\u05d2\u05d3\u05e8\u05ea \u05d0\u05ea Emby Premiere \u05d1\u05de\u05e8\u05db\u05d6 \u05d4\u05e9\u05dc\u05d9\u05d8\u05d4 \u05e9\u05dc \u200b\u200b\u05d0\u05de\u05d1\u05d9 \u05e9\u05e8\u05ea, \u05e9\u05d1\u05d5 \u05d1\u05d0\u05e4\u05e9\u05e8\u05d5\u05ea\u05da \u05dc\u05d2\u05e9\u05ea \u05e2\u05dc-\u05d9\u05d3\u05d9 \u05dc\u05d7\u05d9\u05e6\u05d4 \u05e2\u05dc Emby Premiere \u05d1\u05ea\u05e4\u05e8\u05d9\u05d8 \u05d4\u05e8\u05d0\u05e9\u05d9.", @@ -17,6 +19,7 @@ "EndsAtValue": "\u05de\u05e1\u05ea\u05d9\u05d9\u05dd \u05d1 {0}", "HeaderSelectDate": "\u05d1\u05d7\u05e8 \u05ea\u05d0\u05e8\u05d9\u05da", "Watched": "Watched", + "AirDate": "Air date", "Played": "Played", "ButtonOk": "\u05d1\u05e1\u05d3\u05e8", "ButtonCancel": "\u05d1\u05d8\u05dc", @@ -28,6 +31,12 @@ "RecordingScheduled": "\u05d4\u05d4\u05e7\u05dc\u05d8\u05d4 \u05de\u05ea\u05d5\u05d6\u05de\u05e0\u05ea.", "SeriesRecordingScheduled": "\u05d4\u05e7\u05dc\u05d8\u05ea \u05e1\u05d3\u05e8\u05d4 \u05de\u05ea\u05d5\u05d6\u05de\u05e0\u05ea.", "HeaderNewRecording": "\u05d4\u05e7\u05dc\u05d8\u05d4 \u05d7\u05d3\u05e9\u05d4", + "WakeServer": "Wake server", + "HeaderWakeServer": "Wake Server", + "AttemptingWakeServer": "Attempting to wake server. Please wait...", + "WakeServerSuccess": "Success!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "\u05e8\u05d0\u05e9\u05d5\u05df", "Monday": "\u05e9\u05e0\u05d9", "Tuesday": "\u05e9\u05dc\u05d9\u05e9\u05d9", @@ -36,6 +45,13 @@ "Friday": "\u05e9\u05d9\u05e9\u05d9", "Saturday": "\u05e9\u05d1\u05ea", "Days": "\u05d9\u05de\u05d9\u05dd", + "SortByValue": "Sort by {0}", + "LabelSortBy": "Sort by:", + "LabelSortOrder": "Sort order:", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "Photos", + "HeaderAppearsOn": "Appears On", + "List": "List", "RecordSeries": "\u05d4\u05e7\u05dc\u05d8 \u05e1\u05d3\u05e8\u05d4", "HeaderCinemaMode": "\u05de\u05e6\u05d1 \u05e7\u05d5\u05dc\u05e0\u05d5\u05e2", "HeaderCloudSync": "\u05e1\u05e0\u05db\u05e8\u05d5\u05df \u05e2\u05e0\u05df", @@ -138,7 +154,8 @@ "Shuffle": "\u05e2\u05e8\u05d1\u05d1", "Identify": "\u05dc\u05d6\u05d4\u05d5\u05ea", "EditImages": "\u05e2\u05e8\u05d5\u05da \u05ea\u05de\u05d5\u05e0\u05d5\u05ea", - "EditInfo": "\u05e2\u05e8\u05d5\u05da \u05de\u05d9\u05d3\u05e2", + "EditMetadata": "Edit metadata", + "Convert": "Convert", "Sync": "\u05e1\u05e0\u05db\u05e8\u05df", "InstantMix": "\u05de\u05d9\u05e7\u05e1 \u05de\u05d9\u05d9\u05d3\u05d9", "ViewAlbum": "\u05e6\u05e4\u05d4 \u05d1\u05d0\u05dc\u05d1\u05d5\u05dd", @@ -149,6 +166,7 @@ "ResumeAt": "\u05d4\u05de\u05e9\u05da \u05de {0}", "RemoveFromPlaylist": "\u05d4\u05e1\u05e8 \u05de\u05e8\u05e9\u05d9\u05de\u05ea \u05d4\u05e0\u05d9\u05d2\u05d5\u05df", "RemoveFromCollection": "\u05d4\u05e1\u05e8 \u05de\u05d0\u05d5\u05e1\u05e4\u05d9\u05dd", + "Sort": "Sort", "Trailer": "\u05e7\u05d8\u05e2\u05d9 \u05e1\u05e8\u05d8", "MarkPlayed": "\u05e1\u05de\u05df \u05e0\u05d5\u05d2\u05df", "MarkUnplayed": "\u05e1\u05de\u05df \u05dc\u05d0 \u05e0\u05d5\u05d2\u05df", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "\u05db\u05d5\u05ea\u05e8\u05ea \u05de\u05e7\u05d5\u05e8\u05d9\u05ea:", "LabelSortTitle": "\u05de\u05d9\u05d9\u05df \u05db\u05d5\u05ea\u05e8\u05ea:", "LabelDateAdded": "\u05ea\u05d0\u05e8\u05d9\u05da \u05d4\u05d5\u05e1\u05e3:", + "DateAdded": "Date added", + "DatePlayed": "Date played", "ConfigureDateAdded": "\u05d4\u05d2\u05d3\u05e8 \u05db\u05d9\u05e6\u05d3 \u05ea\u05d0\u05e8\u05d9\u05da \u05d4\u05ea\u05d5\u05e1\u05e4\u05ea \u05e0\u05e7\u05d1\u05e2 \u05d1\u05dc\u05d5\u05d7 \u05d4\u05de\u05d7\u05d5\u05d5\u05e0\u05d9\u05dd \u05e9\u05dc \u05e9\u05e8\u05ea Amby \u05ea\u05d7\u05ea \u05d4\u05d2\u05d3\u05e8\u05d5\u05ea \u05e1\u05e4\u05e8\u05d9\u05d4", "LabelStatus": "\u05e1\u05d8\u05d8\u05d5\u05e1:", "LabelArtists": "\u05d0\u05d5\u05de\u05e0\u05d9\u05dd:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "\u05d0\u05dc\u05d1\u05d5\u05dd \u05d0\u05d5\u05de\u05e0\u05d9\u05dd:", "LabelAlbum": "\u05d0\u05dc\u05d1\u05d5\u05dd:", "Artists": "Artists", + "ImdbRating": "IMDb rating", + "CommunityRating": "Community rating", "LabelCommunityRating": "\u05d3\u05d9\u05e8\u05d5\u05d2 \u05d4\u05e7\u05d4\u05d9\u05dc\u05d4:", "LabelCriticRating": "\u05d3\u05d9\u05e8\u05d5\u05d2 \u05d1\u05d9\u05e7\u05d5\u05e8\u05ea:", + "CriticRating": "Critic rating", "LabelWebsite": "\u05d0\u05ea\u05e8:", "LabelTagline": "\u05e9\u05d5\u05e8\u05ea \u05ea\u05d9\u05d5\u05d2:", "LabelOverview": "\u05e1\u05e7\u05d9\u05e8\u05d4 \u05db\u05dc\u05dc\u05d9\u05ea:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "\u05ea\u05d0\u05e8\u05d9\u05da \u05d4\u05d5\u05e6\u05d0\u05d4:", "LabelYear": "\u05e9\u05e0\u05d4:", "LabelPlaceOfBirth": "\u05de\u05e7\u05d5\u05dd \u05dc\u05d9\u05d3\u05d4:", + "Aired": "Aired", "LabelAirDays": "\u05d9\u05de\u05d9 \u05d0\u05d5\u05d9\u05e8:", "LabelAirTime": "\u05d6\u05de\u05df \u05d0\u05d5\u05d5\u05d9\u05e8:", "LabelRuntimeMinutes": "\u05d6\u05de\u05df \u05e8\u05d9\u05e6\u05d4 (\u05d3\u05e7\u05d5\u05ea):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "\u05d9\u05d7\u05e1 \u05d2\u05d5\u05d1\u05d4-\u05e8\u05d5\u05d7\u05d1 \u05de\u05e7\u05d5\u05e8\u05d9:", "Label3DFormat": "\u05e4\u05d5\u05e8\u05de\u05d8 \u05ea\u05dc\u05ea-\u05de\u05de\u05d3\u05d9:", "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Perfect match", "EnableExternalVideoPlayers": "Enable external video players", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "\u05de\u05e1\u05e4\u05e8\u05d9\u05dd \u05d7\u05dc\u05d5\u05e4\u05d9\u05d9\u05dd", - "LabelDvdSeasonNumber": "\u05de\u05e1\u05e4\u05e8 \u05d4\u05e2\u05d5\u05e0\u05d4 \u05e9\u05dc \u05d4- DVD:", - "LabelDvdEpisodeNumber": "\u05de\u05e1\u05e4\u05e8 \u05e4\u05e8\u05e7 DVD:", - "LabelAbsoluteEpisodeNumber": "\u05de\u05e1\u05e4\u05e8 \u05e4\u05e8\u05e7 \u05de\u05d5\u05d7\u05dc\u05d8:", "HeaderSpecialEpisodeInfo": "\u05e4\u05e8\u05d8\u05d9 \u05d0\u05e4\u05d9\u05d6\u05d5\u05d3\u05d5\u05ea \u05de\u05d9\u05d5\u05d7\u05d3\u05d5\u05ea", "LabelAirsBeforeSeason": "\u05d1\u05d0\u05d5\u05d5\u05d9\u05e8 \u05dc\u05e4\u05e0\u05d9 \u05d4\u05e2\u05d5\u05e0\u05d4:", "LabelAirsAfterSeason": "\u05d1\u05d0\u05d5\u05d5\u05d9\u05e8 \u05d0\u05d7\u05e8\u05d9 \u05d4\u05e2\u05d5\u05e0\u05d4:", @@ -241,6 +261,7 @@ "ProductionLocations": "\u05de\u05d9\u05e7\u05d5\u05de\u05d9 \u05d9\u05d9\u05e6\u05d5\u05e8", "BirthLocation": "\u05de\u05d9\u05e7\u05d5\u05dd \u05dc\u05d9\u05d3\u05d4", "ParentalRating": "\u05d3\u05d9\u05e8\u05d5\u05d2 \u05d4\u05d4\u05d5\u05e8\u05d9\u05dd", + "PlayCount": "Play count", "Name": "\u05e9\u05dd", "Overview": "\u05e1\u05e7\u05d9\u05e8\u05d4 \u05db\u05dc\u05dc\u05d9\u05ea", "LabelType": "\u05e1\u05d5\u05d2:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "\u05de\u05d7\u05d9\u05e7\u05ea \u05e4\u05e8\u05d9\u05d8\u05d9\u05dd \u05d0\u05dc\u05d4 \u05ea\u05de\u05d7\u05e7 \u05d0\u05d5\u05ea\u05dd \u05d4\u05df \u05de\u05de\u05e2\u05e8\u05db\u05ea \u05d4\u05e7\u05d1\u05e6\u05d9\u05dd \u05d5\u05d4\u05df \u05de\u05e1\u05e4\u05e8\u05d9\u05d9\u05ea \u05d4\u05de\u05d3\u05d9\u05d4 \u05e9\u05dc\u05da. \u05d4\u05d0\u05dd \u05d0\u05ea\u05d4 \u05d1\u05d8\u05d5\u05d7 \u05e9\u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05de\u05e9\u05d9\u05da?", "PleaseRestartServerName": "\u05d0\u05e0\u05d0 \u05d4\u05e4\u05e2\u05dc \u05de\u05d7\u05d3\u05e9 \u05d0\u05ea \u05e9\u05e8\u05ea Emby - {0}.", "LabelSyncJobName": "\u05e1\u05e0\u05db\u05e8\u05df \u05d0\u05ea \u05e9\u05dd \u05d4\u05e2\u05d1\u05d5\u05d3\u05d4:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "\u05d0\u05d9\u05db\u05d5\u05ea:", "LabelSyncNoTargetsHelp": "\u05e0\u05e8\u05d0\u05d4 \u05e9\u05d0\u05d9\u05df \u05dc\u05da \u05db\u05e8\u05d2\u05e2 \u05d0\u05e4\u05dc\u05d9\u05e7\u05e6\u05d9\u05d5\u05ea \u05d4\u05ea\u05d5\u05de\u05db\u05d5\u05ea \u05d1\u05d4\u05d5\u05e8\u05d3\u05d4 \u05d1\u05de\u05e6\u05d1 \u05dc\u05d0 \u05de\u05e7\u05d5\u05d5\u05df.", "DownloadingDots": "Downloading...", @@ -297,12 +319,17 @@ "LearnMore": "\u05dc\u05de\u05d3 \u05e2\u05d5\u05d3", "LabelProfile": "\u05e4\u05e8\u05d5\u05e4\u05d9\u05dc:", "LabelBitrateMbps": "\u05e7\u05e6\u05d1 \u05e1\u05d9\u05d1\u05d9\u05d5\u05ea (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "Download unwatched videos only", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", "SyncUnwatchedVideosOnlyHelp": "\u05e8\u05e7 \u05e1\u05e8\u05d8\u05d5\u05e0\u05d9\u05dd \u05e9\u05dc\u05d0 \u05d4\u05d5\u05e8\u05d3\u05d5 \u05d9\u05d5\u05e8\u05d3\u05d5, \u05d5\u05e1\u05e8\u05d8\u05d5\u05e0\u05d9\u05dd \u05d9\u05d5\u05e1\u05e8\u05d5 \u05de\u05d4\u05de\u05db\u05e9\u05d9\u05e8 \u05db\u05e4\u05d9 \u05e9\u05d4\u05dd \u05e6\u05e4\u05d5.", "AutomaticallySyncNewContent": "Automatically download new content", "AutomaticallySyncNewContentHelp": "\u05ea\u05d5\u05db\u05df \u05d7\u05d3\u05e9 \u05e9\u05e0\u05d5\u05e1\u05e3 \u05dc\u05ea\u05d9\u05e7\u05d9\u05d4 \u05d6\u05d5 \u05d9\u05d5\u05e8\u05d9\u05d3 \u05d1\u05d0\u05d5\u05e4\u05df \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9 \u05dc\u05de\u05db\u05e9\u05d9\u05e8.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "\u05de\u05d2\u05d1\u05dc\u05ea \u05e4\u05e8\u05d9\u05d8:", - "LabelItemLimitHelp": "\u05d0\u05d5\u05e4\u05e6\u05d9\u05d5\u05e0\u05d0\u05dc\u05d9. \u05d4\u05d2\u05d3\u05e8 \u05de\u05d2\u05d1\u05dc\u05d4 \u05dc\u05de\u05e1\u05e4\u05e8 \u05d4\u05e4\u05e8\u05d9\u05d8\u05d9\u05dd \u05e9\u05d9\u05d5\u05e8\u05d3\u05d5.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "\u05d1\u05d7\u05e8 \u05de\u05db\u05e9\u05d9\u05e8 \u05dc\u05d4\u05d5\u05e8\u05d3\u05d4 \u05d0\u05dc\u05d9\u05d5.", "Screenshots": "\u05e6\u05d9\u05dc\u05d5\u05de\u05d9 \u05de\u05e1\u05da", "MoveRight": "\u05d6\u05d5\u05d6 \u05d9\u05de\u05d9\u05e0\u05d4", @@ -428,6 +455,7 @@ "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", "LabelSyncTo": "\u05e1\u05e0\u05db\u05e8\u05df \u05dc:", + "LabelConvertTo": "Convert to:", "Next": "Next", "LabelSource": "Source:", "LabelVersion": "Version:", @@ -441,10 +469,10 @@ "More": "More", "Up": "Up", "Down": "Down", + "Home": "Home", + "Favorites": "Favorites", "HeaderHomeScreen": "Home Screen", - "HeaderHomeScreenContent": "Home Screen Content", "HeaderLatestChannelItems": "Latest Channel Items", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "Library Order", "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", "HeaderOnNow": "On Now", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.", "Guide": "Guide", "Suggestions": "Suggestions", - "Favorites": "Favorites", + "HeaderFavoriteCollections": "Favorite Collections", + "HeaderFavoritePlaylists": "Favorite Playlists", "Collections": "Collections", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", "Shows": "Shows", "HeaderLibraryFolders": "Library Folders", - "HeaderLandingScreens": "Landing Screens", - "LandingScreensHelp": "Select the default landing screen when clicking on a library.", "HeaderTermsOfPurchase": "Terms of Purchase", "PrivacyPolicy": "Privacy policy", "TermsOfUse": "Terms of use", "RepeatMode": "Repeat mode", "RepeatOne": "Repeat one", "RepeatAll": "Repeat all", - "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", + "LabelDefaultScreen": "Default screen:", + "ConfirmEndPlayerSession": "Would you like to shutdown Emby on {0}?", "Yes": "Yes", "No": "No", "LiveTV": "Live TV", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video codec not supported", "AudioCodecNotSupported": "Audio codec not supported", "SubtitleCodecNotSupported": "Subtitle format not supported", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Container not supported", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "No subtitles", "Default": "Default", + "Absolute": "Absolute", "Smart": "Smart", "Small": "Small", + "Smaller": "Smaller", "Medium": "Medium", "Large": "Large", "ExtraLarge": "Extra large", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Stop recording", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Manage recording", "LabelDropImageHere": "Drop image here, or click to browse.", "MessageFileReadError": "There was an error reading the file. Please try again.", @@ -633,5 +668,22 @@ "Trailers": "Trailers", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteVideos": "Favorite Videos", + "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteSongs": "Favorite Songs", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Color space", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/hr.json b/dashboard-ui/bower_components/emby-webcomponents/strings/hr.json index aef3adf36f..127bf9043b 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/hr.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/hr.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Otklju\u010daj ovu mogu\u0107nost s malom jednokratnom kupnjom ili s aktivnom pretplatom Emby Premijere.", "MessageUnlockAppWithSupporter": "Otklju\u010daj ovu mogu\u0107nost sa pretplatom Emby Premijere.", "MessageToValidateSupporter": "Ako imate aktivnu pretplatu Emby Premijere provjerite dali ste postavili Emby Premijeru u svojoj nadzornoj plo\u010di Emby Server-a kojoj mo\u017eete pristupiti klikom Emby Premijera u glavnom izborniku.", @@ -17,6 +19,7 @@ "EndsAtValue": "Zavr\u0161ava u {0}", "HeaderSelectDate": "Odaberi datum", "Watched": "Watched", + "AirDate": "Air date", "Played": "Played", "ButtonOk": "U redu", "ButtonCancel": "Odustani", @@ -28,6 +31,12 @@ "RecordingScheduled": "Snimka je zakazana.", "SeriesRecordingScheduled": "Snimanje serije je zakazano.", "HeaderNewRecording": "Nova snimka", + "WakeServer": "Wake server", + "HeaderWakeServer": "Wake Server", + "AttemptingWakeServer": "Attempting to wake server. Please wait...", + "WakeServerSuccess": "Success!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "Nedjelja", "Monday": "Ponedjeljak", "Tuesday": "Utorak", @@ -36,6 +45,13 @@ "Friday": "Petak", "Saturday": "Subota", "Days": "Dani", + "SortByValue": "Sort by {0}", + "LabelSortBy": "Sort by:", + "LabelSortOrder": "Sort order:", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "Photos", + "HeaderAppearsOn": "Appears On", + "List": "List", "RecordSeries": "Snimi serije", "HeaderCinemaMode": "Kino na\u010din", "HeaderCloudSync": "Sink. preko oblaka", @@ -138,7 +154,8 @@ "Shuffle": "Mije\u0161aj", "Identify": "Identificiraj", "EditImages": "Ure\u0111ivanje slika", - "EditInfo": "Ure\u0111ivanje informacija", + "EditMetadata": "Edit metadata", + "Convert": "Convert", "Sync": "Sink.", "InstantMix": "Trenutno mije\u0161anje", "ViewAlbum": "Pogledaj album", @@ -149,6 +166,7 @@ "ResumeAt": "Nastavi od {0}", "RemoveFromPlaylist": "Ukloni iz popisa", "RemoveFromCollection": "Ukloni iz kolekcije", + "Sort": "Sort", "Trailer": "Kratki video", "MarkPlayed": "Ozna\u010di pogledan", "MarkUnplayed": "Ozna\u010di nepogledan", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "Originalni naslov:", "LabelSortTitle": "Naziv vrste:", "LabelDateAdded": "Datumu dodavanja", + "DateAdded": "Date added", + "DatePlayed": "Date played", "ConfigureDateAdded": "Podesite kako se datum dodavanja odre\u0111uje na nadzornoj plo\u010di Emby Server-a u postavkama biblioteke", "LabelStatus": "Status:", "LabelArtists": "Izvo\u0111a\u010di:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "Izvo\u0111a\u010di albuma", "LabelAlbum": "Album:", "Artists": "Artists", + "ImdbRating": "IMDb rating", + "CommunityRating": "Community rating", "LabelCommunityRating": "Ocjene zajednice:", "LabelCriticRating": "Ocjene kritike:", + "CriticRating": "Critic rating", "LabelWebsite": "Web stranica:", "LabelTagline": "Slogan:", "LabelOverview": "Pregled:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Datum izdavanja:", "LabelYear": "Year:", "LabelPlaceOfBirth": "Datum ro\u0111enja:", + "Aired": "Aired", "LabelAirDays": "Dani emitiranja:", "LabelAirTime": "Vrijeme emitiranja:", "LabelRuntimeMinutes": "Vrijeme izvo\u0111enja (minuta):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Originalni omjer gledanja:", "Label3DFormat": "3D format:", "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Perfect match", "EnableExternalVideoPlayers": "Enable external video players", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Alternativni brojevi epizoda", - "LabelDvdSeasonNumber": "Dvd broj sezone:", - "LabelDvdEpisodeNumber": "Dvd broj epizode:", - "LabelAbsoluteEpisodeNumber": "Apsolutni broj epizode:", "HeaderSpecialEpisodeInfo": "Posebni podaci o epizodi", "LabelAirsBeforeSeason": "Emitiranje prije sezone:", "LabelAirsAfterSeason": "Emitiranje nakon sezona:", @@ -241,6 +261,7 @@ "ProductionLocations": "Lokacije proizvodnje", "BirthLocation": "Lokacije ro\u0111enja", "ParentalRating": "Parental Rating", + "PlayCount": "Play count", "Name": "Naziv", "Overview": "Pregled", "LabelType": "Tip:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "Brisanjem ove stavke \u0107e se izbrisati iz oba datote\u010dnog sustava i medijskoj biblioteci. Jeste li sigurni da \u017eelite nastaviti?", "PleaseRestartServerName": "Ponovno pokrenite Emby Server - {0}.", "LabelSyncJobName": "Ime sinkronizacijskog posla:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "Kvaliteta:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", "DownloadingDots": "Downloading...", @@ -297,12 +319,17 @@ "LearnMore": "Nau\u010di jo\u0161", "LabelProfile": "Profil:", "LabelBitrateMbps": "Brzina prijenosa (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "Download unwatched videos only", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", "AutomaticallySyncNewContent": "Automatically download new content", "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "Ograni\u010denje stavke:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "Please select a device to download to.", "Screenshots": "Isje\u010dci slika", "MoveRight": "Pomakni udesno", @@ -428,6 +455,7 @@ "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", "LabelSyncTo": "Sinkroniziraj na:", + "LabelConvertTo": "Convert to:", "Next": "Next", "LabelSource": "Source:", "LabelVersion": "Version:", @@ -441,10 +469,10 @@ "More": "More", "Up": "Up", "Down": "Down", + "Home": "Home", + "Favorites": "Favorites", "HeaderHomeScreen": "Home Screen", - "HeaderHomeScreenContent": "Home Screen Content", "HeaderLatestChannelItems": "Latest Channel Items", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "Library Order", "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", "HeaderOnNow": "On Now", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.", "Guide": "Guide", "Suggestions": "Suggestions", - "Favorites": "Favorites", + "HeaderFavoriteCollections": "Favorite Collections", + "HeaderFavoritePlaylists": "Favorite Playlists", "Collections": "Collections", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", "Shows": "Shows", "HeaderLibraryFolders": "Library Folders", - "HeaderLandingScreens": "Landing Screens", - "LandingScreensHelp": "Select the default landing screen when clicking on a library.", "HeaderTermsOfPurchase": "Terms of Purchase", "PrivacyPolicy": "Privacy policy", "TermsOfUse": "Terms of use", "RepeatMode": "Repeat mode", "RepeatOne": "Repeat one", "RepeatAll": "Repeat all", - "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", + "LabelDefaultScreen": "Default screen:", + "ConfirmEndPlayerSession": "Would you like to shutdown Emby on {0}?", "Yes": "Yes", "No": "No", "LiveTV": "Live TV", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video codec not supported", "AudioCodecNotSupported": "Audio codec not supported", "SubtitleCodecNotSupported": "Subtitle format not supported", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Container not supported", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "No subtitles", "Default": "Default", + "Absolute": "Absolute", "Smart": "Smart", "Small": "Small", + "Smaller": "Smaller", "Medium": "Medium", "Large": "Large", "ExtraLarge": "Extra large", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Stop recording", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Manage recording", "LabelDropImageHere": "Drop image here, or click to browse.", "MessageFileReadError": "There was an error reading the file. Please try again.", @@ -633,5 +668,22 @@ "Trailers": "Trailers", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteVideos": "Favorite Videos", + "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteSongs": "Favorite Songs", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Color space", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/hu.json b/dashboard-ui/bower_components/emby-webcomponents/strings/hu.json index 624f0fb9d4..de782de884 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/hu.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/hu.json @@ -1,12 +1,14 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", - "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", + "MessageUnlockAppWithSupporter": "Enged\u00e9lyezd ezt a funkci\u00f3t akt\u00edv Emby Premiere el\u0151fizet\u00e9ssel.", "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Megoszt\u00e1s", "Add": "Hozz\u00e1ad", - "ServerUpdateNeeded": "This Emby Server needs to be updated. To download the latest version, please visit {0}", - "LiveTvRequiresUnlock": "Live TV requires an active Emby Premiere subscription.", + "ServerUpdateNeeded": "Ezt az Emby Sertvert friss\u00edteni kell. A leg\u00fajabb verzi\u00f3 let\u00f6lt\u00e9s\u00e9hez k\u00e9rj\u00fck, l\u00e1togass el ide {0}", + "LiveTvRequiresUnlock": "A Live TV akt\u00edv Emby Premiere el\u0151fizet\u00e9st ig\u00e9nyel.", "AttributeNew": "\u00daj", "Premiere": "Premiere", "Live": "\u00c9l\u0151", @@ -16,7 +18,8 @@ "OriginalAirDateValue": "Eredeti vet\u00edt\u00e9s d\u00e1tuma: {0}", "EndsAtValue": "V\u00e1rhat\u00f3 befejez\u00e9s {0}", "HeaderSelectDate": "V\u00e1lassz d\u00e1tumot", - "Watched": "Watched", + "Watched": "Megtekintett", + "AirDate": "Air date", "Played": "Megn\u00e9zett", "ButtonOk": "Ok", "ButtonCancel": "M\u00e9gsem", @@ -28,6 +31,12 @@ "RecordingScheduled": "Recording scheduled.", "SeriesRecordingScheduled": "Series recording scheduled.", "HeaderNewRecording": "\u00daj Felv\u00e9tel", + "WakeServer": "Kiszolg\u00e1l\u00f3 fel\u00e9breszt\u00e9s", + "HeaderWakeServer": "Kiszolg\u00e1l\u00f3 fel\u00e9breszt\u00e9s", + "AttemptingWakeServer": "A kiszolg\u00e1l\u00f3 fel\u00e9breszt\u00e9se folyamatban. K\u00e9rlek v\u00e1rj...", + "WakeServerSuccess": "Success!", + "HeaderCustomizeHomeScreen": "Kezd\u0151k\u00e9perny\u0151 testreszab\u00e1sa", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "Vas\u00e1rnap", "Monday": "H\u00e9tf\u0151", "Tuesday": "Kedd", @@ -36,11 +45,18 @@ "Friday": "P\u00e9ntek", "Saturday": "Szombat", "Days": "Nap", + "SortByValue": "Rendez\u00e9s {0}", + "LabelSortBy": "Rendez\u00e9s:", + "LabelSortOrder": "Sorrend:", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "Photos", + "HeaderAppearsOn": "Appears On", + "List": "List", "RecordSeries": "Record series", "HeaderCinemaMode": "Cinema Mode", "HeaderCloudSync": "Felh\u0151szinkroniz\u00e1ci\u00f3 ", "Downloads": "Let\u00f6lt\u00e9sek", - "HeaderMyDownloads": "My Downloads", + "HeaderMyDownloads": "Let\u00f6lt\u00e9sek", "HeaderOfflineDownloads": "Offline M\u00e9dia", "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", @@ -131,14 +147,15 @@ "Favorite": "Kedvenc", "Like": "Tettszik", "Dislike": "Nem tettszik", - "RefreshDialogHelp": "Metadata is refreshed based on settings and internet services that are enabled in the Emby Server dashboard.", + "RefreshDialogHelp": "A metaadatok friss\u00edt\u00e9se az Emby Server vez\u00e9rl\u0151pultj\u00e1ban enged\u00e9lyezett be\u00e1ll\u00edt\u00e1sok \u00e9s internetszolg\u00e1ltat\u00e1sok alapj\u00e1n t\u00f6rt\u00e9nik.", "Open": "Megnyit\u00e1s", "Play": "Lej\u00e1tsz\u00e1s", "AddToPlayQueue": "Add to play queue", "Shuffle": "Kever\u00e9s", "Identify": "Azonos\u00edt\u00e1s", "EditImages": "K\u00e9pek szerkeszt\u00e9se", - "EditInfo": "Adatok szerkeszt\u00e9se", + "EditMetadata": "Metaadat szerkeszt\u00e9s", + "Convert": "\u00c1tkonvert\u00e1l", "Sync": "Szinkroniz\u00e1l", "InstantMix": "Instant mix", "ViewAlbum": "View album", @@ -149,6 +166,7 @@ "ResumeAt": "Resume from {0}", "RemoveFromPlaylist": "Remove from playlist", "RemoveFromCollection": "Remove from collection", + "Sort": "Rendez\u00e9s: ", "Trailer": "El\u0151zetes", "MarkPlayed": "Mark played", "MarkUnplayed": "Mark unplayed", @@ -157,7 +175,7 @@ "TryMultiSelect": "Try Multi-Select", "TryMultiSelectMessage": "To edit multiple media items, just click and hold any poster and select the items you want to manage. Try it!", "HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation", - "MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?", + "MessageConfirmRecordingCancellation": "Cancel recording?", "Error": "Error", "VoiceInput": "Voice Input", "LabelContentType": "Tartalom t\u00edpusa:", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "Eredeti c\u00edm:", "LabelSortTitle": "ABC szerinti c\u00edm:", "LabelDateAdded": "Hozz\u00e1adva:", + "DateAdded": "Hozz\u00e1adva", + "DatePlayed": "Lej\u00e1tsz\u00e1s d\u00e1tuma", "ConfigureDateAdded": "Configure how date added is determined in the Emby Server dashboard under Library settings", "LabelStatus": "St\u00e1tusz:", "LabelArtists": "El\u0151ad\u00f3k:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "Artists": "Artists", + "ImdbRating": "IMDb rating", + "CommunityRating": "K\u00f6z\u00f6ss\u00e9gi \u00e9rt\u00e9kel\u00e9s", "LabelCommunityRating": "K\u00f6z\u00f6ss\u00e9gi \u00e9rt\u00e9kel\u00e9s:", "LabelCriticRating": "Kritikusok \u00e9rt\u00e9kel\u00e9se", + "CriticRating": "Critic rating", "LabelWebsite": "Weboldal:", "LabelTagline": "C\u00edmke:", "LabelOverview": "Tartalom:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Megjelen\u00e9s d\u00e1tuma:", "LabelYear": "\u00c9v:", "LabelPlaceOfBirth": "Place of birth:", + "Aired": "Aired", "LabelAirDays": "Air days:", "LabelAirTime": "Air time:", "LabelRuntimeMinutes": "J\u00e1t\u00e9kid\u0151 (perc):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Eredeti k\u00e9par\u00e1ny:", "Label3DFormat": "3D form\u00e1tum:", "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Perfect match", "EnableExternalVideoPlayers": "Enable external video players", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Alternate Episode Numbers", - "LabelDvdSeasonNumber": "Dvd season number:", - "LabelDvdEpisodeNumber": "Dvd epiz\u00f3d sz\u00e1ma:", - "LabelAbsoluteEpisodeNumber": "Absolute episode number:", "HeaderSpecialEpisodeInfo": "Special Episode Info", "LabelAirsBeforeSeason": "Airs before season:", "LabelAirsAfterSeason": "Airs after season:", @@ -230,20 +250,21 @@ "LabelDiscNumber": "Disc number:", "LabelParentNumber": "Parent number:", "SortName": "Sort name", - "ReleaseDate": "Release date", + "ReleaseDate": "Megjelen\u00e9s d\u00e1tuma", "Continuing": "Continuing", "Ended": "Ended", "HeaderEnabledFields": "Enged\u00e9lyezett mez\u0151k", - "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent it's data from being changed.", + "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent its data from being changed.", "Backdrops": "Backdrops", "Images": "K\u00e9pek", - "Runtime": "Runtime", + "Runtime": "J\u00e1t\u00e9kid\u0151", "ProductionLocations": "Production locations", "BirthLocation": "Birth location", "ParentalRating": "Korhat\u00e1r besorol\u00e1s", - "Name": "Name", + "PlayCount": "Lej\u00e1tsz\u00e1sok sz\u00e1ma", + "Name": "N\u00e9v", "Overview": "Overview", - "LabelType": "Type:", + "LabelType": "T\u00edpus:", "LabelPersonRole": "Role:", "LabelPersonRoleHelp": "Example: Ice cream truck driver", "Actor": "Actor", @@ -267,7 +288,7 @@ "ValueOneSeries": "1 series", "ValueSeriesCount": "{0} series", "ValueOneEpisode": "1 episode", - "ValueEpisodeCount": "{0} episodes", + "ValueEpisodeCount": "{0} epiz\u00f3d", "ValueOneGame": "1 game", "ValueGameCount": "{0} games", "ValueOneAlbum": "1 album", @@ -282,14 +303,15 @@ "HeaderIdentifyItemHelp": "Adj meg egy vagy t\u00f6bb keres\u00e9si krit\u00e9riumot. T\u00e1vol\u00edtsd el a krit\u00e9riumokat a keres\u00e9si eredm\u00e9nyek n\u00f6vel\u00e9se \u00e9rdek\u00e9ben.", "PleaseEnterNameOrId": "Please enter a name or an external Id.", "MessageItemSaved": "Item saved.", - "SearchResults": "Search Results", + "SearchResults": "A keres\u00e9s eredm\u00e9nye", "ServerNameIsRestarting": "Emby Szerver - {0} \u00fajraindul.", - "ServerNameIsShuttingDown": "Emby Server - {0} is shutting down.", + "ServerNameIsShuttingDown": "Emby Server - {0} le\u00e1ll.", "HeaderDeleteItems": "Delete Items", "ConfirmDeleteItems": "Deleting these items will delete them from both the file system and your media library. Are you sure you wish to continue?", "PleaseRestartServerName": "K\u00e9rlek ind\u00edtsd \u00fajra az Emby Szerver-t - {0}.", "LabelSyncJobName": "Sync job name:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "\u00c1tkonvert\u00e1l\u00e1s...", "LabelQuality": "Min\u0151s\u00e9g:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", "DownloadingDots": "Let\u00f6lt\u00e9s...", @@ -297,12 +319,17 @@ "LearnMore": "Learn more", "LabelProfile": "Profil:", "LabelBitrateMbps": "Bitrate (Mbps):", + "ConvertUnwatchedVideosOnly": "Csak a nem l\u00e1tott vide\u00f3k konvert\u00e1l\u00e1sa", "SyncUnwatchedVideosOnly": "Download unwatched videos only", + "ConvertUnwatchedVideosOnlyHelp": "Csak a nem l\u00e1tott vide\u00f3k lesznek konvert\u00e1lva.", "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", "AutomaticallySyncNewContent": "Automatically download new content", "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "Elemsz\u00e1m limit:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "V\u00e1lassz egy eszk\u00f6zt a let\u00f6lt\u00e9shez.", "Screenshots": "Screenshots", "MoveRight": "Move right", @@ -312,7 +339,7 @@ "Settings": "Be\u00e1ll\u00edt\u00e1sok", "ShowIndicatorsFor": "Show indicators for:", "NewEpisodes": "\u00daj epiz\u00f3dok", - "Episodes": "Episodes", + "Episodes": "Epiz\u00f3dok", "HDPrograms": "HD programs", "Programs": "Programs", "LiveBroadcasts": "Live broadcasts", @@ -340,13 +367,13 @@ "AllChannels": "All channels", "LabelRecord": "Record:", "NewEpisodesOnly": "Csak \u00faj epiz\u00f3dok", - "AllEpisodes": "All episodes", + "AllEpisodes": "\u00d6sszes epiz\u00f3d", "LabelStartWhenPossible": "Start when possible:", "LabelStopWhenPossible": "Stop when possible:", "MinutesBefore": "minutes before", "MinutesAfter": "minutes after", "SkipEpisodesAlreadyInMyLibrary": "Don't record episodes that are already in my library", - "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", + "SkipEpisodesAlreadyInMyLibraryHelp": "Az epiz\u00f3dokat \u00f6sszehasonl\u00edtjuk az \u00e9vad \u00e9s az epiz\u00f3d sz\u00e1m\u00e1val, ha rendelkez\u00e9sre \u00e1llnak.", "LabelKeepUpTo": "Keep up to:", "AsManyAsPossible": "As many as possible", "DefaultErrorMessage": "There was an error processing the request. Please try again later.", @@ -356,7 +383,7 @@ "Categories": "Categories", "Sports": "Sports", "News": "News", - "Movies": "Movies", + "Movies": "Filmek", "Kids": "Kids", "EnableColorCodedBackgrounds": "Enable color coded backgrounds", "SortChannelsBy": "Sort channels by:", @@ -372,7 +399,7 @@ "ButtonUnlockWithPurchase": "Unlock with Purchase", "ButtonUnlockPrice": "Unlock {0}", "EmbyPremiereMonthlyWithPrice": "Emby Premiere Monthly {0}", - "HeaderAlreadyPaid": "Already Paid?", + "HeaderAlreadyPaid": "M\u00e1r Fizetve?", "ButtonPlayOneMinute": "Egy perc lej\u00e1tsz\u00e1sa", "PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning", "HeaderUnlockFeature": "Funkci\u00f3 felold\u00e1sa", @@ -392,7 +419,7 @@ "SyncJobItemStatusReadyToTransfer": "Ready to Transfer", "SyncJobItemStatusSyncedMarkForRemoval": "Removing from device", "SyncJobItemStatusQueued": "Queued", - "SyncJobItemStatusConverting": "Converting", + "SyncJobItemStatusConverting": "\u00c1tkonvert\u00e1l\u00e1s", "SyncJobItemStatusTransferring": "Transferring", "SyncJobItemStatusSynced": "Downloaded", "SyncJobItemStatusFailed": "Failed", @@ -417,7 +444,7 @@ "MessagePlayAccessRestricted": "Playback of this content is currently restricted. Please contact your Emby Server administrator for more information.", "Accept": "Accept", "Reject": "Reject", - "Connect": "Connect", + "Connect": "Kapcsol\u00f3d\u00e1s", "HeaderMyMedia": "M\u00e9diat\u00e1ram", "HeaderMyMediaSmall": "M\u00e9diat\u00e1ram (kicsi)", "LatestFromLibrary": "Leg\u00fajabb {0}", @@ -428,10 +455,11 @@ "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", "LabelSyncTo": "Sync to:", + "LabelConvertTo": "Convert to:", "Next": "Next", - "LabelSource": "Source:", + "LabelSource": "Forr\u00e1s:", "LabelVersion": "Version:", - "AllLanguages": "All languages", + "AllLanguages": "\u00d6sszes nyelv", "Previous": "Previous", "HeaderNextUp": "K\u00f6vetkezik", "HeaderLatestFrom": "Leg\u00fajabb innen {0}", @@ -441,10 +469,10 @@ "More": "Tov\u00e1bb", "Up": "Fel", "Down": "Le", + "Home": "Kezd\u0151lap", + "Favorites": "Kedvencek", "HeaderHomeScreen": "Kezd\u0151k\u00e9perny\u0151", - "HeaderHomeScreenContent": "Home Screen Content", "HeaderLatestChannelItems": "Latest Channel Items", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "M\u00e9diat\u00e1r rendez\u00e9s", "HideWatchedContentFromLatestMedia": "A megtekintett tartalom elrejt\u00e9se a leg\u00fajabb m\u00e9di\u00e1b\u00f3l", "HeaderOnNow": "On Now", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.", "Guide": "Guide", "Suggestions": "Javaslatok", - "Favorites": "Favorites", + "HeaderFavoriteCollections": "Favorite Collections", + "HeaderFavoritePlaylists": "Favorite Playlists", "Collections": "Gy\u0171jtem\u00e9nyek", "LabelSelectFolderGroups": "Automatikusan csoportos\u00edtsa a k\u00f6vetkez\u0151 mapp\u00e1k tartalm\u00e1t olyan n\u00e9zetekre, mint a Filmek, a Zene \u00e9s a TV:", "LabelSelectFolderGroupsHelp": "A ki nem v\u00e1lasztott mapp\u00e1k \u00f6nmagukban, saj\u00e1t n\u00e9zetben jelennek meg.", + "Folders": "Mapp\u00e1k", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", "Shows": "Shows", "HeaderLibraryFolders": "K\u00f6nyvt\u00e1r mapp\u00e1k", - "HeaderLandingScreens": "\u00c9rkez\u00e9si Oldalak", - "LandingScreensHelp": "V\u00e1laszd ki az alap\u00e9rtelmezett \u00e9rkez\u00e9si k\u00e9perny\u0151t, amikor r\u00e1kattintasz egy k\u00f6nyvt\u00e1rra.", "HeaderTermsOfPurchase": "Terms of Purchase", "PrivacyPolicy": "Privacy policy", "TermsOfUse": "Terms of use", "RepeatMode": "Ism\u00e9tl\u0151 m\u00f3d", "RepeatOne": "Ism\u00e9tl\u00e9s egyszer", "RepeatAll": "Folyamatos ism\u00e9tl\u00e9s ", - "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", + "LabelDefaultScreen": "Default screen:", + "ConfirmEndPlayerSession": "Would you like to shutdown Emby on {0}?", "Yes": "Yes", "No": "No", "LiveTV": "Live TV", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video codec not supported", "AudioCodecNotSupported": "Audio codec not supported", "SubtitleCodecNotSupported": "Subtitle format not supported", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Container not supported", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "No subtitles", "Default": "Default", + "Absolute": "Absolute", "Smart": "Smart", "Small": "Small", + "Smaller": "Smaller", "Medium": "Medium", "Large": "Large", "ExtraLarge": "Extra large", @@ -566,13 +600,14 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Stop recording", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Manage recording", "LabelDropImageHere": "Drop image here, or click to browse.", "MessageFileReadError": "There was an error reading the file. Please try again.", "Browse": "Browse", "HeaderUploadImage": "Upload Image", "HeaderAddUpdateImage": "Add\/Update Image", - "LabelImageType": "Image type:", + "LabelImageType": "K\u00e9p t\u00edpusa:", "Upload": "Upload", "Primary": "Primary", "Art": "Art", @@ -607,31 +642,48 @@ "PlayNext": "Play next", "AllowSeasonalThemes": "Allow automatic seasonal themes", "AllowSeasonalThemesHelp": "If enabled, seasonal themes will occasionally override your theme setting.", - "AutoBasedOnLanguageSetting": "Auto (based on language setting)", - "LabelDateTimeLocale": "Date time locale:", - "DirectorValue": "Director: {0}", - "DirectorsValue": "Directors: {0}", + "AutoBasedOnLanguageSetting": "Automatikus (a nyelvi be\u00e1ll\u00edt\u00e1sok alapj\u00e1n)", + "LabelDateTimeLocale": "F\u00f6ldrajzi d\u00e1tum:", + "DirectorValue": "Rendez\u0151: {0}", + "DirectorsValue": "Rendez\u0151k: {0}", "GenreValue": "Genre: {0}", - "GenresValue": "Genres: {0}", + "GenresValue": "M\u0171fajok: {0}", "LinksValue": "Links: {0}", "TagsValue": "Tags: {0}", - "LabelAudio": "Audio:", - "LabelVideo": "Video:", - "LabelSubtitles": "Subtitles:", + "LabelAudio": "Audi\u00f3:", + "LabelVideo": "Vide\u00f3:", + "LabelSubtitles": "Feliratok:", "Off": "Off", - "ShowTitle": "Show title", + "ShowTitle": "N\u00e9v megjelen\u00edt\u00e9se", "ShowYear": "Show year", - "Filters": "Filters", + "Filters": "Sz\u0171r\u0151k", "Unplayed": "Unplayed", "LabelTVHomeScreen": "TV mode home screen:", "Horizontal": "Horizontal", "Vertical": "Vertical", "GroupBySeries": "Group by series", - "HeaderVideoType": "Video Type", + "HeaderVideoType": "Vide\u00f3 t\u00edpusa:", "HeaderSeriesStatus": "Series Status", - "Features": "Features", + "Features": "Jellemz\u0151k", "Trailers": "Trailers", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Kedvenc Filmek", + "HeaderFavoriteShows": "Kedvenc M\u0171sorok", + "HeaderFavoriteEpisodes": "Kedvenc Epiz\u00f3dok", + "HeaderFavoriteVideos": "Favorite Videos", + "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteSongs": "Kedvenc Dalok", + "Ascending": "N\u00f6vekv\u0151", + "Descending": "Cs\u00f6kken\u0151", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Color space", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/id.json b/dashboard-ui/bower_components/emby-webcomponents/strings/id.json index 3eac646528..27492b5bef 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/id.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/id.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", @@ -17,6 +19,7 @@ "EndsAtValue": "Ends at {0}", "HeaderSelectDate": "Select Date", "Watched": "Watched", + "AirDate": "Air date", "Played": "Played", "ButtonOk": "Ok", "ButtonCancel": "Cancel", @@ -28,6 +31,12 @@ "RecordingScheduled": "Recording scheduled.", "SeriesRecordingScheduled": "Series recording scheduled.", "HeaderNewRecording": "New Recording", + "WakeServer": "Wake server", + "HeaderWakeServer": "Wake Server", + "AttemptingWakeServer": "Attempting to wake server. Please wait...", + "WakeServerSuccess": "Success!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "Sunday", "Monday": "Monday", "Tuesday": "Tuesday", @@ -36,6 +45,13 @@ "Friday": "Friday", "Saturday": "Saturday", "Days": "Days", + "SortByValue": "Sort by {0}", + "LabelSortBy": "Sort by:", + "LabelSortOrder": "Sort order:", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "Photos", + "HeaderAppearsOn": "Appears On", + "List": "List", "RecordSeries": "Record series", "HeaderCinemaMode": "Cinema Mode", "HeaderCloudSync": "Cloud Sync", @@ -138,7 +154,8 @@ "Shuffle": "Shuffle", "Identify": "Identify", "EditImages": "Edit images", - "EditInfo": "Edit info", + "EditMetadata": "Edit metadata", + "Convert": "Convert", "Sync": "Sync", "InstantMix": "Instant mix", "ViewAlbum": "View album", @@ -149,6 +166,7 @@ "ResumeAt": "Resume from {0}", "RemoveFromPlaylist": "Remove from playlist", "RemoveFromCollection": "Remove from collection", + "Sort": "Sort", "Trailer": "Trailer", "MarkPlayed": "Mark played", "MarkUnplayed": "Mark unplayed", @@ -157,7 +175,7 @@ "TryMultiSelect": "Try Multi-Select", "TryMultiSelectMessage": "To edit multiple media items, just click and hold any poster and select the items you want to manage. Try it!", "HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation", - "MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?", + "MessageConfirmRecordingCancellation": "Cancel recording?", "Error": "Error", "VoiceInput": "Voice Input", "LabelContentType": "Tipe konten:", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "Original title:", "LabelSortTitle": "Sort title:", "LabelDateAdded": "Date added:", + "DateAdded": "Date added", + "DatePlayed": "Date played", "ConfigureDateAdded": "Configure how date added is determined in the Emby Server dashboard under Library settings", "LabelStatus": "Status:", "LabelArtists": "Artists:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "Artists": "Artists", + "ImdbRating": "IMDb rating", + "CommunityRating": "Community rating", "LabelCommunityRating": "Community rating:", "LabelCriticRating": "Critic rating:", + "CriticRating": "Critic rating", "LabelWebsite": "Website:", "LabelTagline": "Tagline:", "LabelOverview": "Overview:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Release date:", "LabelYear": "Year:", "LabelPlaceOfBirth": "Place of birth:", + "Aired": "Aired", "LabelAirDays": "Air days:", "LabelAirTime": "Air time:", "LabelRuntimeMinutes": "Run time (minutes):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Original aspect ratio:", "Label3DFormat": "3D format:", "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Perfect match", "EnableExternalVideoPlayers": "Enable external video players", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Alternate Episode Numbers", - "LabelDvdSeasonNumber": "Dvd season number:", - "LabelDvdEpisodeNumber": "Dvd episode number:", - "LabelAbsoluteEpisodeNumber": "Absolute episode number:", "HeaderSpecialEpisodeInfo": "Special Episode Info", "LabelAirsBeforeSeason": "Airs before season:", "LabelAirsAfterSeason": "Airs after season:", @@ -234,13 +254,14 @@ "Continuing": "Continuing", "Ended": "Ended", "HeaderEnabledFields": "Enabled Fields", - "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent it's data from being changed.", + "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent its data from being changed.", "Backdrops": "Backdrops", "Images": "Images", "Runtime": "Runtime", "ProductionLocations": "Production locations", "BirthLocation": "Birth location", "ParentalRating": "Parental Rating", + "PlayCount": "Play count", "Name": "Name", "Overview": "Overview", "LabelType": "Type:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "Deleting these items will delete them from both the file system and your media library. Are you sure you wish to continue?", "PleaseRestartServerName": "Please restart Emby Server - {0}.", "LabelSyncJobName": "Sync job name:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "Quality:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", "DownloadingDots": "Downloading...", @@ -297,12 +319,17 @@ "LearnMore": "Learn more", "LabelProfile": "Profile:", "LabelBitrateMbps": "Bitrate (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "Download unwatched videos only", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", "AutomaticallySyncNewContent": "Automatically download new content", "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "Item limit:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "Please select a device to download to.", "Screenshots": "Screenshots", "MoveRight": "Move right", @@ -428,6 +455,7 @@ "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", "LabelSyncTo": "Sync to:", + "LabelConvertTo": "Convert to:", "Next": "Next", "LabelSource": "Source:", "LabelVersion": "Version:", @@ -441,10 +469,10 @@ "More": "More", "Up": "Up", "Down": "Down", + "Home": "Home", + "Favorites": "Favorites", "HeaderHomeScreen": "Home Screen", - "HeaderHomeScreenContent": "Home Screen Content", "HeaderLatestChannelItems": "Latest Channel Items", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "Library Order", "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", "HeaderOnNow": "On Now", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.", "Guide": "Guide", "Suggestions": "Suggestions", - "Favorites": "Favorites", + "HeaderFavoriteCollections": "Favorite Collections", + "HeaderFavoritePlaylists": "Favorite Playlists", "Collections": "Collections", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", "Shows": "Shows", "HeaderLibraryFolders": "Library Folders", - "HeaderLandingScreens": "Landing Screens", - "LandingScreensHelp": "Select the default landing screen when clicking on a library.", "HeaderTermsOfPurchase": "Terms of Purchase", "PrivacyPolicy": "Privacy policy", "TermsOfUse": "Terms of use", "RepeatMode": "Repeat mode", "RepeatOne": "Repeat one", "RepeatAll": "Repeat all", - "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", + "LabelDefaultScreen": "Default screen:", + "ConfirmEndPlayerSession": "Would you like to shutdown Emby on {0}?", "Yes": "Yes", "No": "No", "LiveTV": "Live TV", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video codec not supported", "AudioCodecNotSupported": "Audio codec not supported", "SubtitleCodecNotSupported": "Subtitle format not supported", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Container not supported", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "No subtitles", "Default": "Default", + "Absolute": "Absolute", "Smart": "Smart", "Small": "Small", + "Smaller": "Smaller", "Medium": "Medium", "Large": "Large", "ExtraLarge": "Extra large", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Stop recording", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Manage recording", "LabelDropImageHere": "Drop image here, or click to browse.", "MessageFileReadError": "There was an error reading the file. Please try again.", @@ -633,5 +668,22 @@ "Trailers": "Trailers", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteVideos": "Favorite Videos", + "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteSongs": "Favorite Songs", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Color space", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/it.json b/dashboard-ui/bower_components/emby-webcomponents/strings/it.json index 2a7aed715a..ea1f5e6450 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/it.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/it.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Sblocca questa funzionalit\u00e0 con un piccolo acquisto singolo, o con un abbonamento Emby Premiere.", "MessageUnlockAppWithSupporter": "Sblocca questa funzionalit\u00e0 con un abbonamento Emby Premiere", "MessageToValidateSupporter": "Se hai un abbonamento Emby Premiere, assicurati di averlo configurato nel Pannello di Controllo del Server, a cui puoi accedere cliccando su Emby Premiere dal menu principale.", @@ -17,6 +19,7 @@ "EndsAtValue": "Finir\u00e0 alle {0}", "HeaderSelectDate": "Scegli una data", "Watched": "Visto", + "AirDate": "Data messa in Onda", "Played": "Visto", "ButtonOk": "Ok", "ButtonCancel": "Annulla", @@ -28,6 +31,12 @@ "RecordingScheduled": "Registrazione pianificata.", "SeriesRecordingScheduled": "Registrazione serie TV pianificata.", "HeaderNewRecording": "Nuova Registrazione", + "WakeServer": "Sveglia il server", + "HeaderWakeServer": "Sveglia il server", + "AttemptingWakeServer": "Tentando di svegliare il server. Per piacere aspetta...", + "WakeServerSuccess": "Successo!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "I pacchetti Wake On LAN sono stati inviati al computer server, ma non siamo in grado di connettersi al server Emby. Potrebbe essere necessario un po 'pi\u00f9 di tempo per riattivare la macchina, oppure il server Emby potrebbe non essere attivo sulla macchina.", "Sunday": "Domenica", "Monday": "Luned\u00ec", "Tuesday": "Marted\u00ec", @@ -36,6 +45,13 @@ "Friday": "Venerd\u00ec", "Saturday": "Sabato", "Days": "Giorni", + "SortByValue": "Ordina per {0}", + "LabelSortBy": "Ordina per:", + "LabelSortOrder": "Ordinato per:", + "HeaderPhotoAlbums": "Album foto", + "Photos": "Foto", + "HeaderAppearsOn": "Appears On", + "List": "Lista", "RecordSeries": "Registra serie TV", "HeaderCinemaMode": "Modalit\u00e0 Cinema", "HeaderCloudSync": "Sinc. nel Cloud", @@ -138,7 +154,8 @@ "Shuffle": "Casuale", "Identify": "Identifica", "EditImages": "Modifica immagini", - "EditInfo": "Modifica Info", + "EditMetadata": "Modifica metadati", + "Convert": "Converti", "Sync": "Sincronizza", "InstantMix": "Mix istantaneo", "ViewAlbum": "Visualizza album", @@ -149,6 +166,7 @@ "ResumeAt": "Riprendi da {0}", "RemoveFromPlaylist": "Rimuovi dalla playlist", "RemoveFromCollection": "Rimuovi dalla collezione", + "Sort": "Ordina", "Trailer": "Trailer", "MarkPlayed": "Segna visto", "MarkUnplayed": "Segna non visto", @@ -157,7 +175,7 @@ "TryMultiSelect": "Prova la selezione multipla", "TryMultiSelectMessage": "Per modificare pi\u00f9 elementi, clicca e tieni premuto su un poster e seleziona gli elementi che vuoi gestire. Prova!", "HeaderConfirmRecordingCancellation": "Conferma Eliminazione Registrazione", - "MessageConfirmRecordingCancellation": "Sei sicuro di voler eliminare questa registrazione?", + "MessageConfirmRecordingCancellation": "Cancellare la registrazione?", "Error": "Errore", "VoiceInput": "Comandi Vocali", "LabelContentType": "Tipo di contenuto:", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "Titolo originale:", "LabelSortTitle": "Titolo per ordinamento:", "LabelDateAdded": "Aggiunto il:", + "DateAdded": "Aggiunto il", + "DatePlayed": "Visto il", "ConfigureDateAdded": "Scegli come determinare la data di aggiunta dal Pannello di Controllo del Server Emby, nelle impostazioni della Libreria.", "LabelStatus": "Stato:", "LabelArtists": "Artisti:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "Artisti album:", "LabelAlbum": "Album:", "Artists": "Artisti", + "ImdbRating": "Voto IMDB", + "CommunityRating": "Voto del pubblico", "LabelCommunityRating": "Voto del pubblico:", "LabelCriticRating": "Voto della critica:", + "CriticRating": "Voto della critica", "LabelWebsite": "Sito Web:", "LabelTagline": "Slogan:", "LabelOverview": "Trama:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Data di uscita:", "LabelYear": "Anno:", "LabelPlaceOfBirth": "Luogo di nascita:", + "Aired": "In onda", "LabelAirDays": "In onda da (gg):", "LabelAirTime": "In onda da:", "LabelRuntimeMinutes": "Durata (minuti):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Aspetto originale:", "Label3DFormat": "Formato 3D:", "FormatValue": "Formato: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Corrispondenza perfetta", "EnableExternalVideoPlayers": "Abilita lettori video esterni", "EnableExternalVideoPlayersHelp": "Quando viene avviata la riproduzione video, verr\u00e0 visualizzato un menu del riproduttore esterno .", - "HeaderAlternateEpisodeNumbers": "Numeri Episodio Alternativi", - "LabelDvdSeasonNumber": "Numero stagione DVD:", - "LabelDvdEpisodeNumber": "Numero episodio DVD:", - "LabelAbsoluteEpisodeNumber": "Numero episodio assoluto:", "HeaderSpecialEpisodeInfo": "Informazioni Episodio Speciale", "LabelAirsBeforeSeason": "In onda prima della stagione:", "LabelAirsAfterSeason": "In onda dopo la stagione:", @@ -241,6 +261,7 @@ "ProductionLocations": "Sedi di produzione", "BirthLocation": "Luogo di nascita", "ParentalRating": "Classificazione per genitori", + "PlayCount": "Riproduzioni", "Name": "Nome", "Overview": "Trama", "LabelType": "Tipo:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "L'eliminazione di questi elementi li canceller\u00e0 sia dal disco che dalla tua libreria multimediale. Sei sicuro di voler continuare?", "PleaseRestartServerName": "Per favore riavvia Emby Server - {0}.", "LabelSyncJobName": "Nome Attivit\u00e0 di Sinc.:", - "SyncJobCreated": "Attivit\u00e0 di Sinc. creata", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "Qualit\u00e0:", "LabelSyncNoTargetsHelp": "Al momento non hai applicazioni che supportino il download offline.", "DownloadingDots": "In scaricamento...", @@ -297,12 +319,17 @@ "LearnMore": "saperne di pi\u00f9", "LabelProfile": "Profilo:", "LabelBitrateMbps": "Bitrate (Mbps):", + "ConvertUnwatchedVideosOnly": "Converti solo video non visti", "SyncUnwatchedVideosOnly": "Scarica solo i video non visti", + "ConvertUnwatchedVideosOnlyHelp": "Verranno convertiti solo video non visti", "SyncUnwatchedVideosOnlyHelp": "Solo i video non visti verranno scaricati, e verranno rimossi dal dispositivo non appena visti.", "AutomaticallySyncNewContent": "Scarica automaticamente i nuovi contenuti", "AutomaticallySyncNewContentHelp": "I nuovi contenuti aggiunti verranno scaricati automaticamente al dispositivo.", + "AutomaticallyConvertNewContent": "Converti automaticamente i nuovi contenuti", + "AutomaticallyConvertNewContentHelp": "I nuovi contenuti aggiunti in questa cartella verranno automaticamente convertiti.", "LabelItemLimit": "Limite elementi:", - "LabelItemLimitHelp": "Facoltativo. Imposta un limite al numero di elementi che verranno scaricati.", + "ConvertItemLimitHelp": "Opzionale. Impostare un limite al numero di elementi che verranno convertiti.", + "DownloadItemLimitHelp": "Facoltativo. Imposta un limite al numero di elementi che verranno scaricati.", "PleaseSelectDeviceToSyncTo": "Seleziona un dispositivo per eseguire il download.", "Screenshots": "Screenshot", "MoveRight": "Sposta a destra", @@ -421,13 +448,14 @@ "HeaderMyMedia": "I miei media", "HeaderMyMediaSmall": "I miei media (piccolo)", "LatestFromLibrary": "Ultimi {0}", - "ContinueWatching": "Continue watching", + "ContinueWatching": "Continua a guardare", "HeaderLatestChannelMedia": "Ultimi elementi aggiunti", "HeaderContinueWatching": "Continua a guardare", "HeaderContinueListening": "Continua ad ascoltare", "HeaderActiveRecordings": "Registrazioni Attive", "HeaderLatestRecordings": "Ultime registrazioni", "LabelSyncTo": "Sincronizza su:", + "LabelConvertTo": "Converti a:", "Next": "Prossimo", "LabelSource": "Origine:", "LabelVersion": "Versione:", @@ -441,10 +469,10 @@ "More": "Dettagli", "Up": "Su", "Down": "Gi\u00f9", + "Home": "Home", + "Favorites": "Preferiti", "HeaderHomeScreen": "Pagina iniziale", - "HeaderHomeScreenContent": "Contenuto Schermata Iniziale", "HeaderLatestChannelItems": "Ultimi elementi aggiunti", - "LabelSelectHomeScreenItemsFolders": "Consentire agli elementi di apparire nella mia schermata iniziale da:", "HeaderLibraryOrder": "Ordine Libreria", "HideWatchedContentFromLatestMedia": "Nascondi i contenuti gi\u00e0 visti dagli Ultimi Media", "HeaderOnNow": "In onda ora", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Per favore inserisci i dischi nell'ordine per riprodurre questo video.", "Guide": "Guida", "Suggestions": "Suggerimenti", - "Favorites": "Preferiti", + "HeaderFavoriteCollections": "Collezioni Preferite", + "HeaderFavoritePlaylists": "Playlist Preferite", "Collections": "Collezioni", "LabelSelectFolderGroups": "Raggruppa i contenuti delle seguenti cartelle in viste come Film, Musica e Serie TV", "LabelSelectFolderGroupsHelp": "Le cartelle non selezionate verranno mostrate come se stesse nelle proprie viste", + "Folders": "Cartelle", + "DisplayInOtherHomeScreenSections": "Mostra le sezioni della schermata home come gli ultimi media e continua a guardare", + "DisplayInMyMedia": "Visualizza nella schermata di home", "Shows": "Programmi", "HeaderLibraryFolders": "Cartelle Libreria", - "HeaderLandingScreens": "Schermata di Destinazione", - "LandingScreensHelp": "Selezionare la schermata di destinazione predefinita quando si fa clic su una libreria", "HeaderTermsOfPurchase": "Termini di pagamento", "PrivacyPolicy": "Informativa sulla privacy", "TermsOfUse": "Termini di utilizzo", "RepeatMode": "Modalit\u00e0 Ripeti", "RepeatOne": "Ripeti uno", "RepeatAll": "Ripeti tutti", - "ConfirmEndPlayerSession": "Vuoi chiudere Emby su questo dispositivo?", + "LabelDefaultScreen": "Schermo predefinito:", + "ConfirmEndPlayerSession": "Vuoi chiudere Emby su {0}?", "Yes": "Si", "No": "No", "LiveTV": "Diretta TV", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Il codec video non \u00e8 supportato", "AudioCodecNotSupported": "Il codec audio non \u00e8 supportato", "SubtitleCodecNotSupported": "Il formato del sottotitolo non \u00e8 supportato", + "DirectPlayError": "Errore riproduzione diretta", "ContainerNotSupported": "Contenitore file non supportato", "VideoLevelNotSupported": "Livello video non supportato", "AudioBitrateNotSupported": "Bitrate audio non supportato", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "Si \u00e8 verificato un errore durante l'eliminazione dell'elemento da Emby Server. Verifica che Emby Server abbia accesso in scrittura sulla cartella multimediale e riprova.", "NoSubtitles": "Nessun Sottotitolo", "Default": "Predefinito", + "Absolute": "Assoluto", "Smart": "Intelligente", "Small": "Piccolo", + "Smaller": "Smaller", "Medium": "Medio", "Large": "Grande", "ExtraLarge": "Molto Grande", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Il numero di frame di riferimento video non \u00e8 supportato", "ErrorConnectServerUnreachable": "Si \u00e8 verificato un errore durante l'esecuzione dell'operazione richiesta. Il tuo server non \u00e8 in grado di contattare il nostro Server Emby Connect al {0}. Assicurarsi che il server disponga di una connessione Internet attiva e che le comunicazioni siano consentite da qualsiasi firewall o software di protezione installato.", "StopRecording": "Ferma registrazione", + "HeaderStopRecording": "Ferma registrazione", "ManageRecording": "Gestisci registrazione", "LabelDropImageHere": "Rilasciare l'immagine qui, oppure clicca per sfogliare.", "MessageFileReadError": "Si \u00e8 verificato un errore durante la lettura del file. Si prega di riprovare.", @@ -602,7 +637,7 @@ "HeaderMusicQuality": "Qualit\u00e0 Musica", "LabelHomeNetworkQuality": "Qualit\u00e0 della rete domestica:", "HeaderLatestMedia": "Ultimi Media", - "HeaderRestartingEmbyServer": "Ravviando Emby Server", + "HeaderRestartingEmbyServer": "Riavviando Emby Server", "RestartPleaseWaitMessage": "Per piacere aspetta mentre Emby Server si arresta e riavvia. Questo pu\u00f2 richiedere un minuto o due.", "PlayNext": "Riproduci prossimo", "AllowSeasonalThemes": "Consenti temi automatici stagionali", @@ -627,11 +662,28 @@ "Horizontal": "Orizzontale", "Vertical": "Verticale", "GroupBySeries": "Raggruppa per serie", - "HeaderVideoType": "Video Type", - "HeaderSeriesStatus": "Series Status", - "Features": "Features", - "Trailers": "Trailers", - "Extras": "Extras", - "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "HeaderVideoType": "Tipo di Video", + "HeaderSeriesStatus": "Stato Serie TV", + "Features": "Caratteristiche", + "Trailers": "Trailer", + "Extras": "Extra", + "ThemeSongs": "Temi canzoni", + "ThemeVideos": "Temi video", + "HeaderFavoriteMovies": "Film Preferiti", + "HeaderFavoriteShows": "Serie TV Preferite", + "HeaderFavoriteEpisodes": "Episodi Preferiti", + "HeaderFavoriteVideos": "Video Preferiti", + "HeaderFavoriteGames": "Giochi Preferiti", + "HeaderFavoriteArtists": "Artisti Preferiti", + "HeaderFavoriteAlbums": "Album Preferiti", + "HeaderFavoriteSongs": "Canzoni Preferite", + "Ascending": "Crescente", + "Descending": "Decrescente", + "ColorPrimaries": "Colori primari", + "ColorSpace": "Spazio Colore", + "ColorTransfer": "Trasferimento Colore", + "VideoRange": "Range del Video", + "SeriesDisplayOrderHelp": "Ordina gli episodi per data messa in onda, ordine dvd o numerazione assoluta.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ 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 64e710888e..226533b19b 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "\u041e\u0441\u044b \u049b\u04b1\u0440\u0430\u043c\u0434\u0430\u0441\u0442\u044b \u0431\u0456\u0440 \u0436\u043e\u043b\u0493\u044b \u0441\u0430\u0442\u044b\u043f \u0430\u043b\u0443, \u043d\u0435\u043c\u0435\u0441\u0435 \u0431\u0435\u043b\u0441\u0435\u043d\u0434\u0456 Emby Premiere \u0436\u0430\u0437\u044b\u043b\u044b\u043c\u044b \u0430\u0440\u049b\u044b\u043b\u044b \u049b\u04b1\u0440\u0441\u0430\u0443\u0434\u0430\u043d \u0431\u043e\u0441\u0430\u0442\u0443.", "MessageUnlockAppWithSupporter": "\u041e\u0441\u044b \u049b\u04b1\u0440\u0430\u043c\u0434\u0430\u0441\u0442\u044b \u0431\u0435\u043b\u0441\u0435\u043d\u0434\u0456 Emby Premiere \u0436\u0430\u0437\u044b\u043b\u044b\u043c\u044b \u0430\u0440\u049b\u044b\u043b\u044b \u049b\u04b1\u0440\u0441\u0430\u0443\u0434\u0430\u043d \u0431\u043e\u0441\u0430\u0442\u0443.", "MessageToValidateSupporter": "\u0415\u0433\u0435\u0440 \u0441\u0456\u0437\u0434\u0435 \u0431\u0435\u043b\u0441\u0435\u043d\u0434\u0456 Emby Premiere \u0436\u0430\u0437\u044b\u043b\u044b\u043c\u044b \u0431\u043e\u043b\u0441\u0430, Emby Server \u0442\u0430\u049b\u0442\u0430\u0441\u044b\u043d\u0434\u0430\u0493\u044b Emby Premiere \u043e\u0440\u043d\u0430\u0442\u044b\u043b\u044b\u043f \u0442\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d\u0456\u043d\u0435 \u043a\u04e9\u0437 \u0436\u0435\u0442\u043a\u0456\u0437\u0456\u04a3\u0456\u0437. \u0411\u04b1\u043b \u0431\u0430\u0441\u0442\u044b \u043c\u04d9\u0437\u0456\u0440\u0434\u0435 Emby Premiere \u0434\u0435\u0433\u0435\u043d\u0434\u0456 \u043d\u04b1\u049b\u044b\u043f \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u043b\u044b.", @@ -17,6 +19,7 @@ "EndsAtValue": "\u0410\u044f\u049b\u0442\u0430\u043b\u0443\u044b: {0}", "HeaderSelectDate": "\u041a\u04af\u043d\u0434\u0456 \u0442\u0430\u04a3\u0434\u0430\u0443", "Watched": "\u049a\u0430\u0440\u0430\u043b\u0493\u0430\u043d", + "AirDate": "\u042d\u0444\u0438\u0440 \u043a\u04af\u043d\u0456", "Played": "\u041e\u0439\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d", "ButtonOk": "\u0416\u0430\u0440\u0430\u0439\u0434\u044b", "ButtonCancel": "\u0411\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443", @@ -28,6 +31,12 @@ "RecordingScheduled": "\u0416\u0430\u0437\u0443 \u0436\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u0430\u043d.", "SeriesRecordingScheduled": "\u0422\u0435\u043b\u0435\u0445\u0438\u043a\u0430\u044f \u0436\u0430\u0437\u0443\u044b \u0436\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u0430\u043d.", "HeaderNewRecording": "\u0416\u0430\u04a3\u0430 \u0436\u0430\u0437\u0431\u0430", + "WakeServer": "\u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u043e\u044f\u0442\u0443", + "HeaderWakeServer": "\u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u043e\u044f\u0442\u0443", + "AttemptingWakeServer": "\u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u043e\u044f\u0442\u0443 \u04d9\u0440\u0435\u043a\u0435\u0442\u0456 \u0436\u0430\u0441\u0430\u043b\u0443\u0434\u0430. \u041a\u04af\u0442\u0435 \u0442\u04b1\u0440\u044b\u04a3\u044b\u0437...", + "WakeServerSuccess": "\u0421\u04d9\u0442\u0442\u0456\u043b\u0456\u043a!", + "HeaderCustomizeHomeScreen": "\u0411\u0430\u0441\u0442\u044b \u044d\u043a\u0440\u0430\u043d\u0434\u044b \u0440\u0435\u0442\u0442\u0435\u0443", + "WakeServerError": "Wake On LAN \u043f\u0430\u043a\u0435\u0442\u0442\u0435\u0440\u0456 \u0441\u0456\u0437\u0434\u0456\u04a3 \u0441\u0435\u0440\u0432\u0435\u0440\u0456\u04a3\u0456\u0437\u0433\u0435 \u0436\u0456\u0431\u0435\u0440\u0456\u043b\u0434\u0456, \u0431\u0456\u0440\u0430\u049b \u0441\u0456\u0437\u0434\u0456\u04a3 Emby Server \u04af\u0448\u0456\u043d \u049b\u043e\u0441\u044b\u043b\u0430 \u0430\u043b\u043c\u0430\u0439\u043c\u044b\u0437. \u049a\u04b1\u0440\u044b\u043b\u0493\u044b\u04a3\u044b\u0437\u0434\u044b \u043e\u044f\u0442\u0443 \u04af\u0448\u0456\u043d \u0431\u0456\u0440\u0430\u0437 \u0443\u0430\u049b\u044b\u0442 \u049b\u0430\u0436\u0435\u0442 \u0431\u043e\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d \u043d\u0435\u043c\u0435\u0441\u0435 Emby Server \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u0434\u0430 \u0431\u0435\u043b\u0441\u0435\u043d\u0434\u0456 \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u043c\u0435\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d.", "Sunday": "\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456", "Monday": "\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456", "Tuesday": "\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456", @@ -36,6 +45,13 @@ "Friday": "\u0436\u04b1\u043c\u0430", "Saturday": "\u0441\u0435\u043d\u0431\u0456", "Days": "\u041a\u04af\u043d\u0434\u0435\u0440", + "SortByValue": "\u0421\u04b1\u0440\u044b\u043f\u0442\u0430\u0443 \u0442\u04d9\u0441\u0456\u043b\u0456 {0}", + "LabelSortBy": "\u0421\u04b1\u0440\u044b\u043f\u0442\u0430\u0443 \u0442\u04d9\u0441\u0456\u043b\u0456:", + "LabelSortOrder": "\u0421\u04b1\u0440\u044b\u043f\u0442\u0430\u0443 \u0440\u0435\u0442\u0456:", + "HeaderPhotoAlbums": "\u0424\u043e\u0442\u043e\u0430\u043b\u044c\u0431\u043e\u043c\u0434\u0430\u0440", + "Photos": "\u0424\u043e\u0442\u043e\u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440", + "HeaderAppearsOn": "\u041a\u04e9\u0440\u0443\u0433\u0435 \u0431\u043e\u043b\u0430\u0434\u044b", + "List": "\u0422\u0456\u0437\u0456\u043c", "RecordSeries": "\u0422\u0435\u043b\u0435\u0445\u0438\u043a\u0430\u044f\u043d\u044b \u0436\u0430\u0437\u0443", "HeaderCinemaMode": "\u041a\u0438\u043d\u043e\u0442\u0435\u0430\u0442\u0440 \u0440\u0435\u0436\u0456\u043c\u0456", "HeaderCloudSync": "\u0411\u04b1\u043b\u0442\u0442\u044b\u049b \u04af\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443", @@ -138,7 +154,8 @@ "Shuffle": "\u0410\u0440\u0430\u043b\u0430\u0441\u0442\u044b\u0440\u0443", "Identify": "\u0410\u043d\u044b\u049b\u0442\u0430\u0443", "EditImages": "\u0421\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0434\u0456 \u04e9\u04a3\u0434\u0435\u0443", - "EditInfo": "\u041c\u04d9\u043b\u0456\u043c\u0435\u0442\u0442\u0435\u0440\u0434\u0456 \u04e9\u04a3\u0434\u0435\u0443", + "EditMetadata": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u04e9\u04a3\u0434\u0435\u0443", + "Convert": "\u0422\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0443", "Sync": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443", "InstantMix": "\u041b\u0435\u0437\u0434\u0456\u043a \u049b\u043e\u0441\u043f\u0430\u043b\u0430\u0443", "ViewAlbum": "\u0410\u043b\u044c\u0431\u043e\u043c\u0434\u044b \u049b\u0430\u0440\u0430\u0443", @@ -149,6 +166,7 @@ "ResumeAt": "{0} \u0431\u0430\u0441\u0442\u0430\u043f \u0436\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u0443", "RemoveFromPlaylist": "\u041e\u0439\u043d\u0430\u0442\u0443 \u0442\u0456\u0437\u0456\u043c\u0456\u043d\u0435\u043d \u0430\u043b\u0430\u0441\u0442\u0430\u0443", "RemoveFromCollection": "\u0416\u0438\u044b\u043d\u0442\u044b\u049b\u0442\u0430\u043d \u0430\u043b\u0430\u0441\u0442\u0430\u0443", + "Sort": "\u0421\u04b1\u0440\u044b\u043f\u0442\u0430\u0443", "Trailer": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440", "MarkPlayed": "\u041e\u0439\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d \u0434\u0435\u043f \u0431\u0435\u043b\u0433\u0456\u043b\u0435\u0443", "MarkUnplayed": "\u041e\u0439\u043d\u0430\u0442\u044b\u043b\u043c\u0430\u0493\u0430\u043d \u0434\u0435\u043f \u0431\u0435\u043b\u0433\u0456\u043b\u0435\u0443", @@ -156,8 +174,8 @@ "PleaseSelectTwoItems": "\u0415\u04a3 \u043a\u0435\u043c\u0456\u043d\u0434\u0435 \u0435\u043a\u0456 \u0442\u0430\u0440\u043c\u0430\u049b\u0442\u044b \u0442\u0430\u04a3\u0434\u0430\u04a3\u044b\u0437.", "TryMultiSelect": "\u04ae\u043d\u0434\u0435\u0441\u043a\u0435\u043d \u0431\u04e9\u043b\u0435\u043a\u0442\u0435\u0443\u0434\u0456 \u0441\u044b\u043d\u0430\u043f \u043a\u04e9\u0440\u0443", "TryMultiSelectMessage": "\u0411\u0456\u0440\u043d\u0435\u0448\u0435 \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0442\u0435\u0440\u0456\u043d \u04e9\u04a3\u0434\u0435\u0443 \u04af\u0448\u0456\u043d, \u043a\u0435\u0437 \u043a\u0435\u043b\u0433\u0435\u043d \u043f\u043e\u0441\u0442\u0435\u0440\u0434\u0456 \u0436\u0430\u0439 \u0493\u0430\u043d\u0430 \u0442\u0456\u043d\u0442\u0443\u0456\u0440 \u0431\u0430\u0442\u044b\u0440\u043c\u0430\u0493\u0430 \u0431\u0430\u0441\u044b\u043f \u0442\u04b1\u0440\u044b\u043f \u043d\u04b1\u049b\u044b\u04a3\u044b\u0437 \u0436\u04d9\u043d\u0435 \u0431\u0430\u0441\u049b\u0430\u0440\u0443\u044b\u043d \u049b\u0430\u043b\u0430\u0493\u0430\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0442\u0435\u0440\u0434\u0456 \u0431\u04e9\u043b\u0435\u043a\u0442\u0435\u04a3\u0456\u0437. \u0421\u044b\u043d\u0430\u043f \u043a\u04e9\u0440\u0456\u04a3\u0456\u0437!", - "HeaderConfirmRecordingCancellation": "\u0416\u0430\u0437\u0431\u0430 \u0431\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443\u0434\u044b \u0440\u0430\u0441\u0442\u0430\u0443", - "MessageConfirmRecordingCancellation": "\u0428\u044b\u043d\u044b\u043c\u0435\u043d \u043e\u0441\u044b \u0436\u0430\u0437\u0431\u0430\u043d\u044b \u0431\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443 \u049b\u0430\u0436\u0435\u0442 \u043f\u0435?", + "HeaderConfirmRecordingCancellation": "\u0416\u0430\u0437\u0443 \u0431\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443\u044b\u043d \u0440\u0430\u0441\u0442\u0430\u0443", + "MessageConfirmRecordingCancellation": "\u0416\u0430\u0437\u0443\u0434\u044b \u0431\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443 \u049b\u0430\u0436\u0435\u0442 \u043f\u0435?", "Error": "\u049a\u0430\u0442\u0435", "VoiceInput": "\u0414\u0430\u0443\u044b\u0441\u0442\u044b\u049b \u0435\u043d\u0433\u0456\u0437\u0443", "LabelContentType": "\u041c\u0430\u0437\u043c\u04b1\u043d \u0442\u04af\u0440\u0456:", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "\u0411\u0430\u0441\u0442\u0430\u043f\u049b\u044b \u0430\u0442\u0430\u0443\u044b:", "LabelSortTitle": "\u0410\u0442\u0430\u0443 \u0431\u043e\u0439\u044b\u043d\u0448\u0430 \u0441\u04b1\u0440\u044b\u043f\u0442\u0430\u0443", "LabelDateAdded": "\u04ae\u0441\u0442\u0435\u043b\u0433\u0435\u043d \u043a\u04af\u043d\u0456", + "DateAdded": "\u04ae\u0441\u0442\u0435\u043b\u0433\u0435\u043d \u043a\u04af\u043d\u0456", + "DatePlayed": "\u041e\u0439\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d \u043a\u04af\u043d\u0456", "ConfigureDateAdded": "\u04ae\u0441\u0442\u0435\u043b\u0433\u0435\u043d \u043a\u04af\u043d\u0456 Emby Server \u0442\u0430\u049b\u0442\u0430\u0441\u044b\u043d\u0434\u0430\u0493\u044b \u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456\u043d\u0434\u0435 \u0430\u043d\u044b\u049b\u0442\u0430\u043b\u0430\u0434\u044b", "LabelStatus": "\u041a\u04af\u0439:", "LabelArtists": "\u041e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "\u0410\u043b\u044c\u0431\u043e\u043c \u043e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440\u044b:", "LabelAlbum": "\u0410\u043b\u044c\u0431\u043e\u043c:", "Artists": "\u041e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440", + "ImdbRating": "IMDb \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u044b", + "CommunityRating": "\u049a\u0430\u0443\u044b\u043c \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u044b", "LabelCommunityRating": "\u049a\u0430\u0443\u044b\u043c \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u044b:", "LabelCriticRating": "\u0421\u044b\u043d\u0448\u044b\u043b\u0430\u0440 \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u044b:", + "CriticRating": "\u0421\u044b\u043d\u0448\u044b\u043b\u0430\u0440 \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u044b", "LabelWebsite": "\u0492\u0430\u043b\u0430\u043c\u0442\u043e\u0440 \u0441\u0430\u0439\u0442\u044b:", "LabelTagline": "\u041d\u0435\u0433\u0456\u0437\u0433\u0456 \u0441\u04e9\u0439\u043b\u0435\u043c:", "LabelOverview": "\u0416\u0430\u043b\u043f\u044b \u0448\u043e\u043b\u0443:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "\u0428\u044b\u0493\u0430\u0440\u0443 \u043a\u04af\u043d\u0456:", "LabelYear": "\u0416\u044b\u043b:", "LabelPlaceOfBirth": "\u0422\u0443\u0493\u0430\u043d \u0436\u0435\u0440\u0456:", + "Aired": "\u042d\u0444\u0438\u0440\u043b\u0456\u043a", "LabelAirDays": "\u042d\u0444\u0438\u0440 \u043a\u04af\u043d\u0434\u0435\u0440\u0456:", "LabelAirTime": "\u042d\u0444\u0438\u0440 \u0443\u0430\u049b\u044b\u0442\u044b:", "LabelRuntimeMinutes": "\u04b0\u0437\u0430\u049b\u0442\u044b\u0493\u044b, \u043c\u0438\u043d:", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "\u0411\u0430\u0441\u0442\u0430\u043f\u049b\u044b \u043f\u0456\u0448\u0456\u043c\u0434\u0456\u043a \u0430\u0440\u0430\u049b\u0430\u0442\u044b\u043d\u0430\u0441\u044b:", "Label3DFormat": "3D \u043f\u0456\u0448\u0456\u043c\u0456:", "FormatValue": "\u041f\u0456\u0448\u0456\u043c: {0}", - "DownloadsValue": "\u0416\u04af\u043a\u0442\u0435\u0443\u043b\u0435\u0440: {0}", + "DownloadsValue": "{0} \u0436\u04af\u043a\u0442\u0435\u0443", "PerfectMatch": "\u04ae\u0437\u0434\u0456\u043a \u0442\u0435\u04a3", "EnableExternalVideoPlayers": "\u0421\u044b\u0440\u0442\u049b\u044b \u043e\u0439\u043d\u0430\u0442\u049b\u044b\u0448\u0442\u0430\u0440\u0434\u044b \u049b\u043e\u0441\u0443", "EnableExternalVideoPlayersHelp": "\u0421\u044b\u0440\u0442\u049b\u044b \u043e\u0439\u043d\u0430\u0442\u049b\u044b\u0448 \u043c\u04d9\u0437\u0456\u0440\u0456 \u0431\u0435\u0439\u043d\u0435 \u043e\u0439\u043d\u0430\u0442\u0443\u0434\u044b \u0431\u0430\u0441\u0442\u0430\u0493\u0430\u043d \u043a\u0435\u0437\u0434\u0435 \u043a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u0435\u0434\u0456.", - "HeaderAlternateEpisodeNumbers": "\u0411\u0430\u043b\u0430\u043c\u0430\u043b\u044b \u0431\u04e9\u043b\u0456\u043c \u043d\u04e9\u043c\u0456\u0440\u043b\u0435\u0440\u0456", - "LabelDvdSeasonNumber": "DVD \u043c\u0430\u0443\u0441\u044b\u043c \u043d\u04e9\u043c\u0456\u0440\u0456", - "LabelDvdEpisodeNumber": "DVD \u0431\u04e9\u043b\u0456\u043c \u043d\u04e9\u043c\u0456\u0440\u0456", - "LabelAbsoluteEpisodeNumber": "\u041d\u0430\u049b\u043f\u0430-\u043d\u0430\u049b \u0431\u04e9\u043b\u0456\u043c \u043d\u04e9\u043c\u0456\u0440\u0456", "HeaderSpecialEpisodeInfo": "\u0410\u0440\u043d\u0430\u0439\u044b \u0431\u04e9\u043b\u0456\u043c \u0442\u0443\u0440\u0430\u043b\u044b", "LabelAirsBeforeSeason": "\"Airs before\" \u043c\u0430\u0443\u0441\u044b\u043c\u044b", "LabelAirsAfterSeason": "\"Airs after\" \u043c\u0430\u0443\u0441\u044b\u043c\u044b", @@ -241,6 +261,7 @@ "ProductionLocations": "\u04e8\u043d\u0434\u0456\u0440\u0443 \u043e\u0440\u044b\u043d\u0434\u0430\u0440\u044b", "BirthLocation": "\u0422\u0443\u0493\u0430\u043d \u043e\u0440\u043d\u044b", "ParentalRating": "\u0416\u0430\u0441\u0442\u0430\u0441 \u0441\u0430\u043d\u0430\u0442\u044b", + "PlayCount": "\u041e\u0439\u043d\u0430\u0442\u0443 \u0435\u0441\u0435\u0431\u0456", "Name": "\u0410\u0442\u044b", "Overview": "\u0416\u0430\u043b\u043f\u044b \u0448\u043e\u043b\u0443", "LabelType": "\u0422\u04af\u0440\u0456:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "\u041e\u0441\u044b \u0442\u0430\u0440\u043c\u0430\u049b\u0442\u0430\u0440\u0434\u044b \u0436\u043e\u0439\u0493\u0430\u043d\u0434\u0430, \u043e\u043b\u0430\u0440 \u0444\u0430\u0439\u043b\u0434\u044b\u049b \u0436\u04af\u0439\u0435\u0441\u0456\u043d\u0435\u043d \u0434\u0435 \u0436\u04d9\u043d\u0435 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u04a3\u044b\u0437\u0434\u0430\u043d \u0434\u0430 \u0435\u043a\u0435\u0443\u0456\u043d\u0434\u0435 \u0436\u043e\u0439\u044b\u043b\u0430\u0434. \u0421\u0456\u0437 \u0436\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u0443 \u049b\u0430\u043b\u0430\u0439\u0441\u044b\u0437 \u0431\u0430? \u0428\u044b\u043d\u044b\u043c\u0435\u043d \u0436\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u0443 \u049b\u0430\u0436\u0435\u0442 \u043f\u0435?", "PleaseRestartServerName": "Emby Server \u04af\u0448\u0456\u043d \u049b\u0430\u0439\u0442\u0430 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u04a3\u044b\u0437 - {0}.", "LabelSyncJobName": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u0436\u04b1\u043c\u044b\u0441\u044b\u043d\u044b\u04a3 \u0430\u0442\u044b:", - "SyncJobCreated": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u0436\u04b1\u043c\u044b\u0441\u044b \u0436\u0430\u0441\u0430\u043b\u0434\u044b", + "SyncingDots": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0440\u0456\u043b\u0443\u0434\u0435", + "ConvertingDots": "\u0422\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0456\u043b\u0443\u0434\u0435", "LabelQuality": "\u0421\u0430\u043f\u0430\u0441\u044b:", "LabelSyncNoTargetsHelp": "\u0416\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443\u0434\u044b \u049b\u043e\u043b\u0434\u0430\u0439\u0442\u044b\u043d \u049b\u0430\u0439\u0431\u0456\u0440 \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430 \u0430\u0493\u044b\u043c\u0434\u0430 \u0442\u0430\u0431\u044b\u043b\u043c\u0430\u043c\u0430\u0493\u0430\u043d \u0431\u043e\u043b\u044b\u043f \u043a\u04e9\u0440\u0456\u043d\u0435\u0434\u0456.", "DownloadingDots": "\u0416\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443\u0434\u0430...", @@ -297,12 +319,17 @@ "LearnMore": "\u041a\u04e9\u0431\u0456\u0440\u0435\u043a \u0431\u0456\u043b\u0443", "LabelProfile": "\u041f\u0440\u043e\u0444\u0430\u0439\u043b:", "LabelBitrateMbps": "\u049a\u0430\u0440\u049b\u044b\u043d\u044b (\u041c\u0431\u0438\u0442\/\u0441):", + "ConvertUnwatchedVideosOnly": "\u049a\u0430\u0440\u0430\u043b\u043c\u0430\u0493\u0430\u043d \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440\u0434\u0456 \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0443", "SyncUnwatchedVideosOnly": "\u049a\u0430\u0440\u0430\u043b\u043c\u0430\u0493\u0430\u043d \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440\u0434\u0456 \u0436\u04af\u043a\u0442\u0435\u0443", + "ConvertUnwatchedVideosOnlyHelp": "\u0422\u0435\u043a \u049b\u0430\u043d\u0430 \u049b\u0430\u0440\u0430\u043b\u043c\u0430\u0493\u0430\u043d \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440 \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u043b\u0435\u0434\u0456", "SyncUnwatchedVideosOnlyHelp": "\u0422\u0435\u043a \u049b\u0430\u043d\u0430 \u049b\u0430\u0440\u0430\u043b\u043c\u0430\u0493\u0430\u043d \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440 \u0436\u04af\u043a\u0442\u0435\u043b\u0435\u0434\u0456, \u049b\u0430\u0440\u0430\u043b\u0493\u0430\u043d\u043d\u0430\u043d \u043a\u0435\u0439\u0456\u043d \u049b\u04b1\u0440-\u0434\u0430\u043d \u0430\u043b\u0430\u0441\u0442\u0430\u043b\u0430\u0434\u044b.", "AutomaticallySyncNewContent": "\u0416\u0430\u04a3\u0430 \u043c\u0430\u0437\u043c\u04b1\u043d\u0434\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0436\u04af\u043a\u0442\u0435\u0443", "AutomaticallySyncNewContentHelp": "\u041e\u0441\u044b \u049b\u0430\u043b\u0442\u0430\u0493\u0430 \u0436\u0430\u04a3\u0430\u0434\u0430\u043d \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d \u043c\u0430\u0437\u043c\u04b1\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u043e\u0441\u044b \u049b\u04b1\u0440-\u0493\u044b\u0493\u0430 \u0436\u04af\u043a\u0442\u0435\u043b\u0435\u0434\u0456.", + "AutomaticallyConvertNewContent": "\u0416\u0430\u04a3\u0430 \u043c\u0430\u0437\u043c\u04b1\u043d\u0434\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0443", + "AutomaticallyConvertNewContentHelp": "\u041e\u0441\u044b \u049b\u0430\u043b\u044c\u0430\u0493\u0430 \u0436\u0430\u04a3\u0430\u0434\u0430\u043d \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d \u043c\u0430\u0437\u043c\u04b1\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u043e\u0441\u044b \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u043b\u0435\u0434\u0456.", "LabelItemLimit": "\u0422\u0430\u0440\u043c\u0430\u049b\u0442\u0430\u0440 \u0448\u0435\u0433\u0456:", - "LabelItemLimitHelp": "\u041c\u0456\u043d\u0434\u0435\u0442\u0442\u0456 \u0435\u043c\u0435\u0441: \u0416\u04af\u043a\u0442\u0435\u043b\u0435\u0442\u0456\u043d \u0442\u0430\u0440\u043c\u0430\u049b \u0441\u0430\u043d\u044b\u043d\u044b\u04a3 \u0448\u0435\u0433\u0456\u043d \u043e\u0440\u043d\u0430\u0442\u044b\u04a3\u044b\u0437.", + "ConvertItemLimitHelp": "\u041c\u0456\u043d\u0434\u0435\u0442\u0442\u0456 \u0435\u043c\u0435\u0441: \u0422\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u043b\u0435\u0442\u0456\u043d \u0442\u0430\u0440\u043c\u0430\u049b\u0442\u0430\u0440 \u0441\u0430\u043d\u044b \u0448\u0435\u0433\u0456\u043d \u043e\u0440\u043d\u0430\u0442\u044b\u04a3\u044b\u0437.", + "DownloadItemLimitHelp": "\u041c\u0456\u043d\u0434\u0435\u0442\u0442\u0456 \u0435\u043c\u0435\u0441: \u0416\u04af\u043a\u0442\u0435\u043b\u0435\u0442\u0456\u043d \u0442\u0430\u0440\u043c\u0430\u049b \u0441\u0430\u043d\u044b\u043d\u044b\u04a3 \u0448\u0435\u0433\u0456\u043d \u043e\u0440\u043d\u0430\u0442\u044b\u04a3\u044b\u0437.", "PleaseSelectDeviceToSyncTo": "\u049a\u0430\u0439\u0434\u0430 \u0436\u04af\u043a\u0442\u0435\u043b\u0435\u0442\u0456\u043d \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043d\u044b \u0442\u0430\u04a3\u0434\u0430\u04a3\u044b\u0437.", "Screenshots": "\u042d\u043a\u0440\u0430\u043d \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456", "MoveRight": "\u041e\u04a3\u0493\u0430 \u0436\u044b\u043b\u0436\u044b\u0442\u0443", @@ -319,11 +346,11 @@ "Premieres": "\u041f\u0440\u0435\u043c\u044c\u0435\u0440\u0430\u043b\u0430\u0440", "RepeatEpisodes": "\u0411\u04e9\u043b\u0456\u043c\u0434\u0435\u0440\u0434\u0456\u04a3 \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u043d\u0443\u044b", "DvrSubscriptionRequired": "Emby DVR \u04af\u0448\u0456\u043d \u0431\u0435\u043b\u0441\u0435\u043d\u0434\u0456 Emby Premiere \u0436\u0430\u0437\u044b\u043b\u044b\u043c\u044b \u049b\u0430\u0436\u0435\u0442", - "HeaderCancelRecording": "\u0416\u0430\u0437\u0431\u0430\u043d\u044b \u0431\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443", + "HeaderCancelRecording": "\u0416\u0430\u0437\u0443\u0434\u044b \u0431\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443", "CancelRecording": "\u0416\u0430\u0437\u0443\u0434\u044b \u0431\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443", - "HeaderKeepRecording": "\u0416\u0430\u0437\u0443\u0434\u044b \u04b1\u0441\u0442\u0430\u043f \u0442\u04b1\u0440\u0443", + "HeaderKeepRecording": "\u0416\u0430\u0437\u0443\u0434\u044b \u0441\u0430\u049b\u0442\u0430\u043f \u049b\u0430\u043b\u0443", "HeaderCancelSeries": "\u0422\u0435\u043b\u0435\u0445\u0438\u043a\u0430\u044f\u043d\u044b \u0431\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443", - "HeaderKeepSeries": "\u0422\u0435\u043b\u0435\u0445\u0438\u043a\u0430\u044f\u043d\u044b \u04b1\u0441\u0442\u0430\u043f \u0442\u04b1\u0440\u0443", + "HeaderKeepSeries": "\u0422\u0435\u043b\u0435\u0445\u0438\u043a\u0430\u044f\u043d\u044b \u0441\u0430\u049b\u0442\u0430\u043f \u049b\u0430\u043b\u0443", "HeaderLearnMore": "\u041a\u04e9\u0431\u0456\u0440\u0435\u043a \u0431\u0456\u043b\u0443", "DeleteMedia": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0456 \u0436\u043e\u044e", "SeriesSettings": "\u0422\u0435\u043b\u0435\u0445\u0438\u043a\u0430\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456", @@ -347,10 +374,10 @@ "MinutesAfter": "\u043c\u0438\u043d\u0443\u0442 \u0441\u043e\u04a3\u044b\u04a3\u0434\u0430", "SkipEpisodesAlreadyInMyLibrary": "\u041c\u0435\u043d\u0456\u04a3 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043c\u0434\u0430 \u0431\u0430\u0440 \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u0436\u0430\u0437\u0431\u0430\u0443", "SkipEpisodesAlreadyInMyLibraryHelp": "\u049a\u043e\u043b \u0436\u0435\u0442\u0456\u043c\u0434\u0456 \u0431\u043e\u043b\u0493\u0430\u043d\u0434\u0430, \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440 \u043c\u0430\u0443\u0441\u044b\u043c \u0436\u04d9\u043d\u0435 \u0431\u04e9\u043b\u0456\u043c \u043d\u04e9\u043c\u0456\u0440\u043b\u0435\u0440\u0456 \u0431\u043e\u0439\u044b\u043d\u0448\u0430 \u0441\u0430\u043b\u044b\u0441\u0442\u044b\u0440\u044b\u043b\u0430\u0434\u044b.", - "LabelKeepUpTo": "\u041e\u0441\u044b\u0493\u0430\u043d \u0434\u0435\u0439\u0456\u043d \u04b1\u0441\u0442\u0430\u043f \u0442\u04b1\u0440\u0443:", + "LabelKeepUpTo": "\u041e\u0441\u044b\u0493\u0430\u043d \u0434\u0435\u0439\u0456\u043d \u0441\u0430\u049b\u0442\u0430\u043f \u049b\u0430\u043b\u0443:", "AsManyAsPossible": "\u041c\u04af\u043c\u043a\u0456\u043d\u0434\u0456\u0433\u0456\u043d\u0448\u0435 \u043a\u04e9\u043f", "DefaultErrorMessage": "\u0421\u0430\u0443\u0430\u043b \u04e9\u04a3\u0434\u0435\u043b\u0443 \u043a\u0435\u0437\u0456\u043d\u0434\u0435 \u049b\u0430\u0442\u0435 \u043e\u0440\u044b\u043d \u0430\u043b\u0434\u044b. \u04d8\u0440\u0435\u043a\u0435\u0442\u0442\u0456 \u043a\u0435\u0439\u0456\u043d \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u04a3\u044b\u0437.", - "LabelKeep:": "\u04b0\u0441\u0442\u0430\u043f \u0442\u04b1\u0440\u0443:", + "LabelKeep:": "\u0421\u0430\u049b\u0442\u0430\u043f \u049b\u0430\u043b\u0443:", "UntilIDelete": "\u041c\u0435\u043d \u0436\u043e\u0439\u0493\u0430\u043d\u0448\u0430 \u0434\u0435\u0439\u0456\u043d", "UntilSpaceNeeded": "\u041e\u0440\u044b\u043d \u043a\u0435\u0440\u0435\u043a \u0431\u043e\u043b\u0493\u0430\u043d\u0448\u0430 \u0434\u0435\u0439\u0456\u043d", "Categories": "\u0421\u0430\u043d\u0430\u0442\u0442\u0430\u0440", @@ -384,10 +411,10 @@ "OneChannel": "\u0411\u0456\u0440 \u0430\u0440\u043d\u0430\u0434\u0430\u043d", "ConfirmRemoveDownload": "\u0416\u04af\u043a\u0442\u0435\u0443\u0434\u0456 \u0430\u043b\u0430\u0441\u0442\u0430\u0439\u043c\u044b\u0437 \u0431\u0430?", "RemoveDownload": "\u0416\u04af\u043a\u0442\u0435\u0443\u0434\u0456 \u0430\u043b\u0430\u0441\u0442\u0430\u0443", - "KeepDownload": "\u0416\u04af\u043a\u0442\u0435\u0443\u0434\u0456 \u04b1\u0441\u0442\u0430\u043f \u0442\u04b1\u0440\u0443", + "KeepDownload": "\u0416\u04af\u043a\u0442\u0435\u0443\u0434\u0456 \u0441\u0430\u049b\u0442\u0430\u043f \u049b\u0430\u043b\u0443", "AddedOnValue": "\u04ae\u0441\u0442\u0435\u043b\u0433\u0435\u043d\u0456 {0}", "RemovingFromDevice": "\u049a\u04b1\u0440\u044b\u043b\u0493\u044b\u0434\u0430\u043d \u0430\u043b\u0430\u0441\u0442\u0430\u0443\u0434\u0430", - "KeepOnDevice": "\u049a\u04b1\u0440\u044b\u043b\u0493\u044b\u0434\u0430 \u04b1\u0441\u0442\u0430\u043f \u0442\u04b1\u0440\u0443", + "KeepOnDevice": "\u049a\u04b1\u0440\u044b\u043b\u0493\u044b\u0434\u0430 \u0441\u0430\u049b\u0442\u0430\u043f \u049b\u0430\u043b\u0443", "CancelDownload": "\u0416\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443\u0434\u044b \u0431\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443", "SyncJobItemStatusReadyToTransfer": "\u0410\u0443\u044b\u0441\u0442\u044b\u0440\u044b\u043b\u0443\u0493\u0430 \u0434\u0430\u0439\u044b\u043d", "SyncJobItemStatusSyncedMarkForRemoval": "\u049a\u04b1\u0440\u044b\u043b\u0493\u044b\u0434\u0430\u043d \u0430\u043b\u0430\u0441\u0442\u0430\u0443\u0434\u0430", @@ -421,13 +448,14 @@ "HeaderMyMedia": "\u041c\u0435\u043d\u0456\u04a3 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0456\u043c", "HeaderMyMediaSmall": "\u041c\u0435\u043d\u0456\u04a3 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0456\u043c (\u044b\u049b\u0448\u0430\u043c)", "LatestFromLibrary": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456 {0}", - "ContinueWatching": "Continue watching", + "ContinueWatching": "\u049a\u0430\u0440\u0430\u0443\u0434\u044b \u0436\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u0443", "HeaderLatestChannelMedia": "\u0410\u0440\u043d\u0430\u043b\u0430\u0440\u0434\u044b\u04a3 \u0435\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456 \u0442\u0430\u0440\u043c\u0430\u049b\u0442\u0430\u0440\u044b", "HeaderContinueWatching": "\u049a\u0430\u0440\u0430\u0443\u0434\u044b \u0436\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u0443", "HeaderContinueListening": "\u0422\u044b\u04a3\u0434\u0430\u0443\u0434\u044b \u0436\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u0443", "HeaderActiveRecordings": "\u0411\u0435\u043b\u0441\u0435\u043d\u0434\u0456 \u0436\u0430\u0437\u0431\u0430\u043b\u0430\u0440", "HeaderLatestRecordings": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u04a3\u0433\u0456 \u0436\u0430\u0437\u0431\u0430\u043b\u0430\u0440", "LabelSyncTo": "\u041e\u0441\u044b\u043c\u0435\u043d \u04af\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443:", + "LabelConvertTo": "\u041c\u044b\u043d\u0430\u0493\u0430\u043d \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0443:", "Next": "\u041a\u0435\u043b\u0435\u0441\u0456", "LabelSource": "\u049a\u0430\u0439\u043d\u0430\u0440 \u043a\u04e9\u0437\u0456:", "LabelVersion": "\u041d\u04b1\u0441\u049b\u0430:", @@ -441,10 +469,10 @@ "More": "\u041a\u04e9\u0431\u0456\u0440\u0435\u043a", "Up": "\u0416\u043e\u0493\u0430\u0440\u044b\u0493\u0430", "Down": "\u0422\u04e9\u043c\u0435\u043d\u0433\u0435", + "Home": "\u0411\u0430\u0441\u0442\u044b", + "Favorites": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b\u043b\u0430\u0440", "HeaderHomeScreen": "\u0411\u0430\u0441\u0442\u044b \u044d\u043a\u0440\u0430\u043d", - "HeaderHomeScreenContent": "\u0411\u0430\u0441\u0442\u044b \u044d\u043a\u0440\u0430\u043d \u043c\u0430\u0437\u043c\u04b1\u043d\u044b", "HeaderLatestChannelItems": "\u0410\u0440\u043d\u0430\u043b\u0430\u0440\u0434\u044b\u04a3 \u0435\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456 \u0442\u0430\u0440\u043c\u0430\u049b\u0442\u0430\u0440\u044b", - "LabelSelectHomeScreenItemsFolders": "\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u0442\u0435\u0440\u0434\u0456 \u0431\u0430\u0441\u0442\u044b \u044d\u043a\u0440\u0430\u043d\u0434\u0430 \u043a\u0435\u043b\u0435\u0441\u0456\u0434\u0435\u043d \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443\u0433\u0435 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443:", "HeaderLibraryOrder": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430 \u0440\u0435\u0442\u0456", "HideWatchedContentFromLatestMedia": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0435\u043d \u049b\u0430\u0440\u0430\u043b\u0493\u0430\u043d \u043c\u0430\u0437\u043c\u04b1\u043d\u0434\u044b \u0436\u0430\u0441\u044b\u0440\u0443", "HeaderOnNow": "\u042d\u0444\u0438\u0440\u0434\u0435", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "\u041e\u0441\u044b \u0431\u0435\u0439\u043d\u0435\u043d\u0456 \u043e\u0439\u043d\u0430\u0442\u0443 \u04af\u0448\u0456\u043d \u0434\u0438\u0441\u043a\u0456\u043d\u0456 \u0435\u043d\u0433\u0456\u0437\u0456\u04a3\u0456\u0437.", "Guide": "\u0422\u0435\u043b\u0435\u0433\u0438\u0434", "Suggestions": "\u04b0\u0441\u044b\u043d\u044b\u0441\u0442\u0430\u0440", - "Favorites": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b\u043b\u0430\u0440", + "HeaderFavoriteCollections": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b \u0436\u0438\u044b\u043d\u0442\u044b\u049b\u0442\u0430\u0440", + "HeaderFavoritePlaylists": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b \u043e\u0439\u043d\u0430\u0442\u0443 \u0442\u0456\u0437\u0456\u043c\u0434\u0435\u0440\u0456", "Collections": "\u0416\u0438\u044b\u043d\u0442\u044b\u049b\u0442\u0430\u0440", "LabelSelectFolderGroups": "\u041a\u0435\u043b\u0435\u0441\u0456 \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u0434\u0430\u0493\u044b \u043c\u0430\u0437\u043c\u04b1\u043d\u0434\u044b \u041a\u0438\u043d\u043e, \u041c\u0443\u0437\u044b\u043a\u0430 \u0436\u04d9\u043d\u0435 \u0422\u0414 \u0441\u0438\u044f\u049b\u0442\u044b \u0430\u0441\u043f\u0435\u043a\u0442\u0442\u0435\u0440\u0433\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0442\u043e\u043f\u0442\u0430\u0441\u0442\u044b\u0440\u0443:", "LabelSelectFolderGroupsHelp": "\u0411\u0435\u043b\u0433\u0456\u043b\u0435\u043d\u0431\u0435\u0433\u0435\u043d \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440 \u04e9\u0437 \u0431\u0435\u0442\u0456\u043c\u0435\u043d \u04e9\u0437\u0456\u043d\u0456\u04a3 \u0430\u0441\u043f\u0435\u043a\u0442\u0456\u043d\u0434\u0435 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u043d\u0435\u0434\u0456.", + "Folders": "\u049a\u0430\u043b\u0442\u0430\u043b\u0430\u0440", + "DisplayInOtherHomeScreenSections": "\u0411\u0430\u0441\u0442\u044b \u044d\u043a\u0440\u0430\u043d \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u043d\u0434\u0435 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443 (\u043c\u044b\u0441. \u0415\u04a3 \u0441\u043e\u04a3\u0493\u044b \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u0436\u04d9\u043d\u0435 \u041a\u04e9\u0440\u0443\u0434\u0456 \u0436\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u0443)", + "DisplayInMyMedia": "\u0411\u0430\u0441\u0442\u044b \u044d\u043a\u0440\u0430\u043d\u0434\u0430 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u043d\u0435\u0434\u0456", "Shows": "\u041a\u04e9\u0440\u0441\u0435\u0442\u0456\u043c\u0434\u0435\u0440", "HeaderLibraryFolders": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043b\u044b\u049b \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440", - "HeaderLandingScreens": "\u041c\u0430\u049b\u0441\u0430\u0442\u0442\u044b \u044d\u043a\u0440\u0430\u043d\u0434\u0430\u0440", - "LandingScreensHelp": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u0493\u0430 \u0431\u0430\u0441\u0443 \u043a\u0435\u0437\u0456\u043d\u0434\u0435 \u043a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u0435\u0442\u0456\u043d \u04d9\u0434\u0435\u043f\u043a\u0456 \u043c\u0430\u049b\u0441\u0430\u0442\u0442\u044b \u044d\u043a\u0440\u0430\u043d\u0434\u044b \u0442\u0430\u04a3\u0434\u0430\u04a3\u044b\u0437.", "HeaderTermsOfPurchase": "\u0421\u0430\u0442\u044b\u043f \u0430\u043b\u0443 \u0448\u0430\u0440\u0442\u0442\u0430\u0440\u044b", "PrivacyPolicy": "\u049a\u04b1\u043f\u0438\u044f\u043b\u044b\u043b\u044b\u049b \u0441\u0430\u044f\u0441\u0430\u0442\u044b", "TermsOfUse": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443 \u0448\u0430\u0440\u0442\u0442\u0430\u0440\u044b", "RepeatMode": "\u049a\u0430\u0439\u0442\u0430\u043b\u0430\u0443 \u0440\u0435\u0436\u0456\u043c\u0456", "RepeatOne": "\u0411\u0456\u0440 \u0440\u0435\u0442 \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u0443", "RepeatAll": "\u0411\u0430\u0440\u043b\u044b\u0493\u044b\u043d \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u0443", - "ConfirmEndPlayerSession": "\u049a\u04b1\u0440\u044b\u043b\u0493\u044b\u0434\u0430 Emby \u0436\u0430\u0431\u0443\u044b\u043d \u049b\u0430\u043b\u0430\u0439\u0441\u044b\u0437 \u0431\u0430?", + "LabelDefaultScreen": "\u04d8\u0434\u0435\u043f\u043a\u0456 \u044d\u043a\u0440\u0430\u043d:", + "ConfirmEndPlayerSession": "Emby \u0436\u04b1\u043c\u044b\u0441\u044b\u043d \u0430\u044f\u049b\u0442\u0430\u0443\u0434\u044b {0} \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u0434\u0430 \u049b\u0430\u043b\u0430\u0439\u0441\u044b\u0437 \u0431\u0430?", "Yes": "\u0418\u04d9", "No": "\u0416\u043e\u049b", "LiveTV": "\u042d\u0444\u0438\u0440", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "\u0411\u0435\u0439\u043d\u0435 \u043a\u043e\u0434\u0435\u043a \u04af\u0448\u0456\u043d \u049b\u043e\u043b\u0434\u0430\u0443 \u043a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u043c\u0435\u0439\u0434\u0456", "AudioCodecNotSupported": "\u0414\u044b\u0431\u044b\u0441 \u043a\u043e\u0434\u0435\u043a \u049b\u043e\u043b\u0434\u0430\u0443\u0434\u0430 \u0435\u043c\u0435\u0441", "SubtitleCodecNotSupported": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u043f\u0456\u0448\u0456\u043c \u04af\u0448\u0456\u043d \u049b\u043e\u043b\u0434\u0430\u0443 \u043a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u043c\u0435\u0439\u0434\u0456", + "DirectPlayError": "\u0422\u0456\u043a\u0435\u043b\u0435\u0439 \u043e\u0439\u043d\u0430\u0442\u0443 \u049b\u0430\u0442\u0435\u0441\u0456", "ContainerNotSupported": "\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u04af\u0448\u0456\u043d \u049b\u043e\u043b\u0434\u0430\u0443 \u043a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u043c\u0435\u0439\u0434\u0456", "VideoLevelNotSupported": "\u0411\u0435\u0439\u043d\u0435 \u0434\u0435\u04a3\u0433\u0435\u0439\u0456 \u04af\u0448\u0456\u043d \u049b\u043e\u043b\u0434\u0430\u0443 \u043a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u043c\u0435\u0439\u0434\u0456", "AudioBitrateNotSupported": "\u0414\u044b\u0431\u044b\u0441 \u049b\u0430\u0440\u049b\u044b\u043d\u044b \u04af\u0448\u0456\u043d \u049b\u043e\u043b\u0434\u0430\u0443 \u043a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u043c\u0435\u0439\u0434\u0456", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "Emby Server \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0456\u043d \u0436\u043e\u044e \u043a\u0435\u0437\u0456\u043d\u0434\u0435 \u049b\u0430\u0442\u0435 \u043e\u0440\u044b\u043d \u0430\u043b\u0434\u044b. Emby Server \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u049b\u0430\u043b\u0442\u0430\u0441\u044b\u043d\u0430 \u0436\u0430\u0437\u0443\u0493\u0430 \u0440\u04b1\u049b\u0441\u0430\u0442\u044b \u0431\u0430\u0440 \u0435\u043a\u0435\u043d\u0456\u043d \u0442\u0435\u043a\u0441\u0435\u0440\u0456\u043f, \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u043f \u043a\u04e9\u0440\u0456\u04a3\u0456\u0437.", "NoSubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440\u0441\u0456\u0437", "Default": "\u04d8\u0434\u0435\u043f\u043a\u0456", + "Absolute": "\u0422\u04af\u043f\u043d\u04b1\u0441\u049b\u0430\u043b\u044b\u049b", "Smart": "\u0417\u0438\u044f\u0442\u0442\u044b", "Small": "\u04b0\u0441\u0430\u049b", + "Smaller": "\u041a\u0456\u0448\u0456\u0433\u0456\u0440\u0456\u043c", "Medium": "\u041e\u0440\u0442\u0430\u0448\u0430", "Large": "\u0406\u0440\u0456", "ExtraLarge": "\u04e8\u0442\u0435 \u0456\u0440\u0456", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "\u0411\u0435\u0439\u043d\u0435\u043d\u0456\u04a3 \u0442\u0456\u0440\u0435\u043a \u043a\u0430\u0434\u0440\u043b\u0430\u0440 \u0441\u0430\u043d\u044b\u043d\u0430 \u049b\u043e\u043b\u0434\u0430\u0443 \u043a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u043c\u0435\u0439\u0434\u0456", "ErrorConnectServerUnreachable": "\u0421\u04b1\u0440\u0430\u043b\u0493\u0430\u043d \u04d9\u0440\u0435\u043a\u0435\u0442\u0442\u0456 \u043e\u0440\u044b\u043d\u0434\u0430\u0443\u0434\u0430 \u049b\u0430\u0442\u0435 \u043e\u0440\u044b\u043d \u0430\u043b\u0434\u044b. \u0421\u0435\u0440\u0432\u0435\u0440\u0456\u04a3\u0456\u0437 {0} \u043c\u0435\u043a\u0435\u043d\u0436\u0430\u0439\u044b\u043d\u0434\u0430\u0493\u044b Embo Connect Server \u0442\u0430\u0440\u0430\u043f\u044b\u043d\u0430 \u049b\u0430\u0442\u044b\u043d\u0430\u0441\u0430 \u0430\u043b\u043c\u0430\u0434\u044b. \u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0435 \u0431\u0435\u043b\u0441\u0435\u043d\u0434\u0456 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u049b\u043e\u0441\u044b\u043b\u044b\u043c\u044b \u0431\u0430\u0440 \u0435\u043a\u0435\u043d\u0456\u043d \u0436\u04d9\u043d\u0435 \u0431\u0430\u0439\u043b\u0430\u043d\u044b\u0441 \u049b\u0430\u0439 \u049b\u0430\u0439\u0441\u044b\u0441\u044b \u0431\u0440\u0430\u043d\u0434\u043c\u0430\u0443\u044d\u0440 \u043d\u0435\u043c\u0435\u0441\u0435 \u043e\u0440\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d \u049b\u0430\u0443\u0456\u043f\u0441\u0456\u0437\u0434\u0456\u043a \u0431\u0430\u0493\u0434\u0430\u0440\u043b\u0430\u043c\u0430\u043b\u044b\u049b \u0436\u0430\u0441\u0430\u049b\u0442\u0430\u043c\u0430 \u0430\u0440\u049b\u044b\u043b\u044b \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0456\u043b\u0443\u0456\u043d\u0435 \u043a\u04e9\u0437 \u0436\u0435\u0442\u043a\u0456\u0437\u0456\u04a3\u0456\u0437.", "StopRecording": "\u0416\u0430\u0437\u0443\u0434\u044b \u0442\u043e\u049b\u0442\u0430\u0442\u0443", + "HeaderStopRecording": "\u0416\u0430\u0437\u0443\u0434\u044b \u0442\u043e\u049b\u0442\u0430\u0442\u0443", "ManageRecording": "\u0416\u0430\u0437\u0443\u0434\u044b \u0440\u0435\u0442\u0442\u0435\u0443", "LabelDropImageHere": "\u0421\u0443\u0440\u0435\u0442\u0442\u0456 \u043c\u04b1\u043d\u0434\u0430 \u0441\u04af\u0439\u0440\u0435\u0442\u0456\u04a3\u0456\u0437 \u043d\u0435\u043c\u0435\u0441\u0435 \u0448\u0430\u0440\u043b\u0430\u0443 \u04af\u0448\u0456\u043d \u043d\u04b1\u049b\u044b\u04a3\u044b\u0437.", "MessageFileReadError": "\u0424\u0430\u0439\u043b \u043e\u049b\u0443 \u043a\u0435\u0437\u0456\u043d\u0434\u0435 \u049b\u0430\u0442\u0435 \u043e\u0440\u044b\u043d \u0430\u043b\u0434\u044b. \u04d8\u0440\u0435\u043a\u0435\u0442\u0442\u0456 \u043a\u0435\u0439\u0456\u043d \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u04a3\u044b\u0437.", @@ -623,15 +658,32 @@ "ShowYear": "\u041a\u04e9\u0440\u0441\u0435\u0442\u0456\u043c \u0436\u044b\u043b\u044b", "Filters": "\u0421\u04af\u0437\u0433\u0456\u043b\u0435\u0440", "Unplayed": "\u041e\u0439\u043d\u0430\u0442\u044b\u043b\u043c\u0430\u0493\u0430\u043d", - "LabelTVHomeScreen": "TV mode home screen:", - "Horizontal": "Horizontal", - "Vertical": "Vertical", - "GroupBySeries": "Group by series", - "HeaderVideoType": "Video Type", - "HeaderSeriesStatus": "Series Status", - "Features": "Features", - "Trailers": "Trailers", - "Extras": "Extras", - "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "LabelTVHomeScreen": "\u0422\u0414 \u0440\u0435\u0436\u0456\u043c\u0456\u043d\u0434\u0435\u0433\u0456 \u0431\u0430\u0441\u0442\u044b \u044d\u043a\u0440\u0430\u043d:", + "Horizontal": "\u041a\u04e9\u043b\u0434\u0435\u043d\u0435\u04a3", + "Vertical": "\u0422\u0456\u0433\u0456\u043d\u0435\u043d", + "GroupBySeries": "\u0422\u0435\u043b\u0435\u0445\u0438\u043a\u0430\u044f\u043b\u0430\u0440 \u0431\u043e\u0439\u044b\u043d\u0448\u0430 \u0442\u043e\u043f\u0442\u0430\u0441\u0442\u044b\u0440\u0443", + "HeaderVideoType": "\u0411\u0435\u0439\u043d\u0435 \u0442\u04af\u0440\u0456", + "HeaderSeriesStatus": "\u0422\u0435\u043b\u0435\u0445\u0438\u043a\u0430\u044f \u043a\u04af\u0439\u0456", + "Features": "\u0415\u0440\u0435\u043a\u0448\u0435\u043b\u0456\u043a\u0442\u0435\u0440", + "Trailers": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440\u043b\u0435\u0440", + "Extras": "\u049a\u043e\u0441\u044b\u043c\u0448\u0430\u043b\u0430\u0440", + "ThemeSongs": "\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0442\u044b\u049b \u04d9\u0443\u0435\u043d\u0434\u0435\u0440", + "ThemeVideos": "\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0442\u044b\u049b \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440", + "HeaderFavoriteMovies": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b \u0444\u0438\u043b\u044c\u043c\u0434\u0435\u0440", + "HeaderFavoriteShows": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b \u043a\u04e9\u0440\u0441\u0435\u0442\u0456\u043c\u0434\u0435\u0440", + "HeaderFavoriteEpisodes": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440", + "HeaderFavoriteVideos": "\u0422\u0430\u043d\u0434\u0430\u0443\u043b\u044b \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440", + "HeaderFavoriteGames": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b \u043e\u0439\u044b\u043d\u0434\u0430\u0440", + "HeaderFavoriteArtists": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b \u043e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440", + "HeaderFavoriteAlbums": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b \u0430\u043b\u044c\u0431\u043e\u043c\u0434\u0430\u0440", + "HeaderFavoriteSongs": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b \u04d9\u0443\u0435\u043d\u0434\u0435\u0440", + "Ascending": "\u0410\u0440\u0442\u0443\u044b \u0431\u043e\u0439\u044b\u043d\u0448\u0430", + "Descending": "\u041a\u0435\u043c\u0443\u0456 \u0431\u043e\u0439\u044b\u043d\u0448\u0430", + "ColorPrimaries": "\u0422\u04af\u0441 \u043d\u0435\u0433\u0456\u0437\u0433\u0456\u043b\u0435\u0440\u0456", + "ColorSpace": "\u0422\u04af\u0441 \u043a\u0435\u04a3\u0456\u0441\u0442\u0456\u0433\u0456", + "ColorTransfer": "\u0422\u04af\u0441 \u0430\u0443\u0441\u0442\u044b\u0440\u0443\u044b", + "VideoRange": "\u0411\u0435\u0439\u043d\u0435 \u0430\u0443\u049b\u044b\u043c\u044b", + "SeriesDisplayOrderHelp": "\u0411\u04e9\u043b\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u044d\u0444\u0438\u0440 \u043a\u04af\u043d\u0456\u043c\u0435\u043d, DVD \u0440\u0435\u0442\u0456\u043c\u0435\u043d \u043d\u0435\u043c\u0435\u0441\u0435 \u0442\u04af\u043f\u043d\u04b1\u0441\u049b\u0430\u043b\u044b\u049b \u043d\u04e9\u043c\u0456\u0440\u043b\u0435\u0443\u0456\u043c\u0435\u043d \u0440\u0435\u0442\u0442\u0435\u0443.", + "PlaybackSettingsIntro": "\u04d8\u0434\u0435\u043f\u043a\u0456 \u043e\u0439\u043d\u0430\u0442\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456\u043d \u0442\u0435\u04a3\u0448\u0435\u0443 \u04af\u0448\u0456\u043d \u0431\u0435\u0439\u043d\u0435 \u043e\u0439\u043d\u0430\u0442\u0443\u0434\u044b \u0442\u043e\u049b\u0442\u0430\u0442\u044b\u04a3\u044b\u0437, \u0441\u043e\u0434\u0430\u043d \u043a\u0435\u0439\u0456\u043d \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u043d\u044b\u04a3 \u0436\u043e\u0493\u0430\u0440\u0493\u044b \u043e\u04a3 \u0436\u0430\u049b \u0431\u04e9\u043b\u0456\u0433\u0456\u043d\u0434\u0435\u0433\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0431\u0435\u043b\u0433\u0456\u0448\u0435\u0441\u0456\u043d \u0431\u0430\u0441\u044b\u04a3\u044b\u0437.", + "SubtitleSettingsIntro": "\u04d8\u0434\u0435\u043f\u043a\u0456 \u0441\u0443\u0431\u0442\u0438\u0442\u0440 \u043a\u04e9\u0440\u0456\u043d\u0456\u0441\u0456\u043d \u0436\u04d9\u043d\u0435 \u0442\u0456\u043b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456\u043d \u0442\u0435\u04a3\u0448\u0435\u0443 \u04af\u0448\u0456\u043d \u0431\u0435\u0439\u043d\u0435 \u043e\u0439\u043d\u0430\u0442\u0443\u0434\u044b \u0442\u043e\u049b\u0442\u0430\u0442\u044b\u04a3\u044b\u0437, \u0441\u043e\u0434\u0430\u043d \u043a\u0435\u0439\u0456\u043d \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u043d\u044b\u04a3 \u0436\u043e\u0493\u0430\u0440\u0493\u044b \u043e\u04a3 \u0436\u0430\u049b \u0431\u04e9\u043b\u0456\u0433\u0456\u043d\u0434\u0435\u0433\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0431\u0435\u043b\u0433\u0456\u0448\u0435\u0441\u0456\u043d \u0431\u0430\u0441\u044b\u04a3\u044b\u0437." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ko.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ko.json index ebf7939dbb..f70b87f20e 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/ko.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ko.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", @@ -17,6 +19,7 @@ "EndsAtValue": "Ends at {0}", "HeaderSelectDate": "\ub0a0\uc9dc \uc120\ud0dd", "Watched": "\uc2dc\uccad\ud568", + "AirDate": "Air date", "Played": "\uc7ac\uc0dd\ud568", "ButtonOk": "OK", "ButtonCancel": "\ucde8\uc18c", @@ -28,6 +31,12 @@ "RecordingScheduled": "\ub179\ud654\uac00 \uc608\uc57d\ub418\uc5c8\uc2b5\ub2c8\ub2e4.", "SeriesRecordingScheduled": "\uc2dc\ub9ac\uc988 \ub179\ud654\uac00 \uc608\uc57d\ub418\uc5c8\uc2b5\ub2c8\ub2e4.", "HeaderNewRecording": "\uc2e0\uaddc \ub179\ud654", + "WakeServer": "Wake server", + "HeaderWakeServer": "Wake Server", + "AttemptingWakeServer": "Attempting to wake server. Please wait...", + "WakeServerSuccess": "Success!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "\uc77c\uc694\uc77c", "Monday": "\uc6d4\uc694\uc77c", "Tuesday": "\ud654\uc694\uc77c", @@ -36,6 +45,13 @@ "Friday": "\uae08\uc694\uc77c", "Saturday": "\ud1a0\uc694\uc77c", "Days": "\uc77c", + "SortByValue": "Sort by {0}", + "LabelSortBy": "Sort by:", + "LabelSortOrder": "Sort order:", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "Photos", + "HeaderAppearsOn": "Appears On", + "List": "List", "RecordSeries": "\uc2dc\ub9ac\uc988 \ub179\ud654", "HeaderCinemaMode": "Cinema Mode", "HeaderCloudSync": "Cloud Sync", @@ -138,7 +154,8 @@ "Shuffle": "Shuffle", "Identify": "Identify", "EditImages": "Edit images", - "EditInfo": "Edit info", + "EditMetadata": "Edit metadata", + "Convert": "Convert", "Sync": "Sync", "InstantMix": "\uc778\uc2a4\ud134\ud2b8 \ubbf9\uc2a4", "ViewAlbum": "\uc568\ubc94 \ubcf4\uae30", @@ -149,6 +166,7 @@ "ResumeAt": "Resume from {0}", "RemoveFromPlaylist": "\uc7ac\uc0dd\ubaa9\ub85d\uc5d0\uc11c \uc81c\uac70", "RemoveFromCollection": "Remove from collection", + "Sort": "Sort", "Trailer": "Trailer", "MarkPlayed": "Mark played", "MarkUnplayed": "Mark unplayed", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "Original title:", "LabelSortTitle": "Sort title:", "LabelDateAdded": "\ucd94\uac00\ud55c \ub0a0\uc9dc:", + "DateAdded": "Date added", + "DatePlayed": "Date played", "ConfigureDateAdded": "Configure how date added is determined in the Emby Server dashboard under Library settings", "LabelStatus": "\uc0c1\ud0dc:", "LabelArtists": "\uc544\ud2f0\uc2a4\ud2b8:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "\uc568\ubc94 \uc544\ud2f0\uc2a4\ud2b8:", "LabelAlbum": "\uc568\ubc94", "Artists": "Artists", + "ImdbRating": "IMDb rating", + "CommunityRating": "Community rating", "LabelCommunityRating": "\ucee4\ubba4\ub2c8\ud2f0 \ud3c9\uc810:", "LabelCriticRating": "Critic \ud3c9\uc810:", + "CriticRating": "Critic rating", "LabelWebsite": "\uc6f9\uc0ac\uc774\ud2b8:", "LabelTagline": "\ud0dc\uadf8\ub77c\uc778:", "LabelOverview": "\uc904\uac70\ub9ac:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "\uac1c\ubd09\uc77c:", "LabelYear": "Year:", "LabelPlaceOfBirth": "\ucd9c\uc0dd\uc9c0:", + "Aired": "Aired", "LabelAirDays": "\ubc29\uc601\uc77c:", "LabelAirTime": "\ubc29\uc601 \uc2dc\uac01:", "LabelRuntimeMinutes": "\uc0c1\uc601 \uc2dc\uac04 (\ubd84):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "\uc6d0 \ud654\uba74\ube44\uc728:", "Label3DFormat": "3D \ud615\uc2dd:", "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Perfect match", "EnableExternalVideoPlayers": "Enable external video players", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Alternate Episode Numbers", - "LabelDvdSeasonNumber": "DVD \uc2dc\uc98c \ubc88\ud638:", - "LabelDvdEpisodeNumber": "DVD \uc5d0\ud53c\uc18c\ub4dc \ubc88\ud638:", - "LabelAbsoluteEpisodeNumber": "Absolute episode number:", "HeaderSpecialEpisodeInfo": "\uc2a4\ud398\uc15c \uc5d0\ud53c\uc18c\ub4dc \uc815\ubcf4", "LabelAirsBeforeSeason": "Airs before season:", "LabelAirsAfterSeason": "Airs after season:", @@ -234,13 +254,14 @@ "Continuing": "Continuing", "Ended": "Ended", "HeaderEnabledFields": "Enabled Fields", - "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent it's data from being changed.", + "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent its data from being changed.", "Backdrops": "\ubc30\uacbd", "Images": "\uc774\ubbf8\uc9c0", "Runtime": "Runtime", "ProductionLocations": "Production locations", "BirthLocation": "Birth location", "ParentalRating": "Parental Rating", + "PlayCount": "Play count", "Name": "Name", "Overview": "Overview", "LabelType": "Type:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "Deleting these items will delete them from both the file system and your media library. Are you sure you wish to continue?", "PleaseRestartServerName": "Please restart Emby Server - {0}.", "LabelSyncJobName": "\ub3d9\uae30\ud654 \uc791\uc5c5 \uc774\ub984:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "\ud488\uc9c8:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", "DownloadingDots": "Downloading...", @@ -297,12 +319,17 @@ "LearnMore": "\ub354 \uc54c\uc544\ubcf4\uae30", "LabelProfile": "\ud504\ub85c\ud30c\uc77c:", "LabelBitrateMbps": "\ube44\ud2b8\ub808\uc774\ud2b8 (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "Download unwatched videos only", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", "AutomaticallySyncNewContent": "Automatically download new content", "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "\ud56d\ubaa9 \uc81c\ud55c:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "Please select a device to download to.", "Screenshots": "Screenshots", "MoveRight": "Move right", @@ -428,6 +455,7 @@ "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", "LabelSyncTo": "\ub3d9\uae30\ud654 \uc7a5\uce58:", + "LabelConvertTo": "Convert to:", "Next": "Next", "LabelSource": "Source:", "LabelVersion": "Version:", @@ -441,10 +469,10 @@ "More": "More", "Up": "Up", "Down": "Down", + "Home": "Home", + "Favorites": "Favorites", "HeaderHomeScreen": "Home Screen", - "HeaderHomeScreenContent": "Home Screen Content", "HeaderLatestChannelItems": "Latest Channel Items", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "Library Order", "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", "HeaderOnNow": "On Now", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.", "Guide": "Guide", "Suggestions": "Suggestions", - "Favorites": "Favorites", + "HeaderFavoriteCollections": "Favorite Collections", + "HeaderFavoritePlaylists": "Favorite Playlists", "Collections": "Collections", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", "Shows": "Shows", "HeaderLibraryFolders": "Library Folders", - "HeaderLandingScreens": "Landing Screens", - "LandingScreensHelp": "Select the default landing screen when clicking on a library.", "HeaderTermsOfPurchase": "Terms of Purchase", "PrivacyPolicy": "Privacy policy", "TermsOfUse": "Terms of use", "RepeatMode": "Repeat mode", "RepeatOne": "Repeat one", "RepeatAll": "\ubaa8\ub450 \ubc18\ubcf5", - "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", + "LabelDefaultScreen": "Default screen:", + "ConfirmEndPlayerSession": "Would you like to shutdown Emby on {0}?", "Yes": "Yes", "No": "No", "LiveTV": "Live TV", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video codec not supported", "AudioCodecNotSupported": "Audio codec not supported", "SubtitleCodecNotSupported": "Subtitle format not supported", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Container not supported", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "No subtitles", "Default": "Default", + "Absolute": "Absolute", "Smart": "Smart", "Small": "\uc791\uc74c", + "Smaller": "Smaller", "Medium": "Medium", "Large": "Large", "ExtraLarge": "Extra large", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Stop recording", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Manage recording", "LabelDropImageHere": "Drop image here, or click to browse.", "MessageFileReadError": "There was an error reading the file. Please try again.", @@ -633,5 +668,22 @@ "Trailers": "Trailers", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteVideos": "Favorite Videos", + "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteSongs": "Favorite Songs", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Color space", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/lt-lt.json b/dashboard-ui/bower_components/emby-webcomponents/strings/lt-lt.json index d13f8cfcc5..71e77a8625 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/lt-lt.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/lt-lt.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Atrakinkite \u0161i\u0105 funkcij\u0105 nedideliu vienkartiniu mokes\u010diu arba \u012fsigij\u0119 Emby Premiere prenumerat\u0105.", "MessageUnlockAppWithSupporter": "Atrakinkite \u0161i\u0105 funkcij\u0105 \u012fsigij\u0119 Emby Premiere prenumerat\u0105.", "MessageToValidateSupporter": "Jei turite aktyvi\u0105 Emby Premiere prenumerat\u0105, sutvarkykite Emby Premiere savo Emby Serverio skydelyje. Tai galite atlikti paspaud\u0117 Emby Premiere u\u017era\u0161\u0105 pagrindiniame meniu.", @@ -17,6 +19,7 @@ "EndsAtValue": "Baigiasi {0}", "HeaderSelectDate": "Pasirinkite dat\u0105", "Watched": "Watched", + "AirDate": "Air date", "Played": "Played", "ButtonOk": "OK", "ButtonCancel": "At\u0161aukti", @@ -28,6 +31,12 @@ "RecordingScheduled": "\u012era\u0161as numatytas.", "SeriesRecordingScheduled": "Laidos \u012fra\u0161as numatytas.", "HeaderNewRecording": "Naujas \u012fra\u0161as", + "WakeServer": "Wake server", + "HeaderWakeServer": "Wake Server", + "AttemptingWakeServer": "Attempting to wake server. Please wait...", + "WakeServerSuccess": "Success!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "Sekmadienis", "Monday": "Pirmadienis", "Tuesday": "Antradienis", @@ -36,6 +45,13 @@ "Friday": "Penktadienis", "Saturday": "\u0160e\u0161tadienis", "Days": "Dienos", + "SortByValue": "Sort by {0}", + "LabelSortBy": "Sort by:", + "LabelSortOrder": "Sort order:", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "Photos", + "HeaderAppearsOn": "Appears On", + "List": "List", "RecordSeries": "\u012era\u0161yti laid\u0105", "HeaderCinemaMode": "Kinoteatro re\u017eimas", "HeaderCloudSync": "Sinch. su debesimi", @@ -138,7 +154,8 @@ "Shuffle": "Atsitiktinai", "Identify": "Identifikuoti", "EditImages": "Redaguoti paveikslus", - "EditInfo": "Redaguoti info", + "EditMetadata": "Edit metadata", + "Convert": "Convert", "Sync": "Sinchronizuoti", "InstantMix": "Leisti miks\u0105", "ViewAlbum": "\u017di\u016br\u0117ti album\u0105", @@ -149,6 +166,7 @@ "ResumeAt": "T\u0119sti nuo {0}", "RemoveFromPlaylist": "Pa\u0161alinti i\u0161 grojara\u0161\u010dio", "RemoveFromCollection": "Pa\u0161alinti i\u0161 kolekcijos", + "Sort": "Sort", "Trailer": "Anonsas", "MarkPlayed": "\u017dym\u0117ti rodytu", "MarkUnplayed": "\u017dym\u0117ti nerodytu", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "Originalus pavadinimas:", "LabelSortTitle": "R\u016b\u0161iavimo pavadinimas:", "LabelDateAdded": "Prid\u0117jimo data:", + "DateAdded": "Date added", + "DatePlayed": "Date played", "ConfigureDateAdded": "Pakeisti, kaip nustatoma prid\u0117jimo data galima Emby Serveryje prie Bibliotekos nustatym\u0173", "LabelStatus": "B\u016bkl\u0117:", "LabelArtists": "Atlik\u0117jai:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "Albumo atlik\u0117jai:", "LabelAlbum": "Albumas:", "Artists": "Artists", + "ImdbRating": "IMDb rating", + "CommunityRating": "Community rating", "LabelCommunityRating": "Bendruomen\u0117s vertinimas:", "LabelCriticRating": "Kritik\u0173 vertinimas:", + "CriticRating": "Critic rating", "LabelWebsite": "Tinklapis:", "LabelTagline": "\u0160\u016bkis:", "LabelOverview": "Ap\u017evalga:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "I\u0161leidimo data:", "LabelYear": "Metai:", "LabelPlaceOfBirth": "Gimimo vieta:", + "Aired": "Aired", "LabelAirDays": "Eterio dienos:", "LabelAirTime": "Eterio laikas:", "LabelRuntimeMinutes": "Trukm\u0117 (min.):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Originalus formatas:", "Label3DFormat": "3D formatas:", "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Perfect match", "EnableExternalVideoPlayers": "Enable external video players", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Kitokia serij\u0173 numeracija", - "LabelDvdSeasonNumber": "DVD sezono numeris:", - "LabelDvdEpisodeNumber": "DVD serijos numeris:", - "LabelAbsoluteEpisodeNumber": "Absoliutus serijos numeris:", "HeaderSpecialEpisodeInfo": "Ypatingos serijos info", "LabelAirsBeforeSeason": "Rodoma prie\u0161 sezon\u0105:", "LabelAirsAfterSeason": "Rodoma po sezono:", @@ -241,6 +261,7 @@ "ProductionLocations": "Filmavimo vietos", "BirthLocation": "Gimimo vieta", "ParentalRating": "T\u0117v\u0173 reitingas", + "PlayCount": "Play count", "Name": "Vardas", "Overview": "Ap\u017evalga", "LabelType": "Tipas:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "Tai atlikus \u0161ie elementai bus i\u0161trinti ir i\u0161 bibliotekos, ir i\u0161 fail\u0173 sistemos. Ar tikrai norite t\u0119sti?", "PleaseRestartServerName": "Pra\u0161au paleisti Emby Server\u012f i\u0161 naujo - {0}.", "LabelSyncJobName": "Sinchronizavimo darbo pavadinimas:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "Kokyb\u0117:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", "DownloadingDots": "Downloading...", @@ -297,12 +319,17 @@ "LearnMore": "Su\u017einoti daugiau", "LabelProfile": "Profilis:", "LabelBitrateMbps": "Kokyb\u0117 (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "Download unwatched videos only", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", "AutomaticallySyncNewContent": "Automatically download new content", "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "Element\u0173 limitas:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "Please select a device to download to.", "Screenshots": "Ekrano nuotraukos", "MoveRight": "Perkelti de\u0161in\u0117n", @@ -428,6 +455,7 @@ "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", "LabelSyncTo": "Sinchronizuoti \u012f:", + "LabelConvertTo": "Convert to:", "Next": "Next", "LabelSource": "Source:", "LabelVersion": "Version:", @@ -441,10 +469,10 @@ "More": "More", "Up": "Up", "Down": "Down", + "Home": "Home", + "Favorites": "Favorites", "HeaderHomeScreen": "Home Screen", - "HeaderHomeScreenContent": "Home Screen Content", "HeaderLatestChannelItems": "Latest Channel Items", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "Library Order", "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", "HeaderOnNow": "On Now", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.", "Guide": "Guide", "Suggestions": "Suggestions", - "Favorites": "Favorites", + "HeaderFavoriteCollections": "Favorite Collections", + "HeaderFavoritePlaylists": "Favorite Playlists", "Collections": "Collections", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", "Shows": "Shows", "HeaderLibraryFolders": "Library Folders", - "HeaderLandingScreens": "Landing Screens", - "LandingScreensHelp": "Select the default landing screen when clicking on a library.", "HeaderTermsOfPurchase": "Terms of Purchase", "PrivacyPolicy": "Privacy policy", "TermsOfUse": "Terms of use", "RepeatMode": "Repeat mode", "RepeatOne": "Repeat one", "RepeatAll": "Repeat all", - "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", + "LabelDefaultScreen": "Default screen:", + "ConfirmEndPlayerSession": "Would you like to shutdown Emby on {0}?", "Yes": "Yes", "No": "No", "LiveTV": "Live TV", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video codec not supported", "AudioCodecNotSupported": "Audio codec not supported", "SubtitleCodecNotSupported": "Subtitle format not supported", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Container not supported", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "No subtitles", "Default": "Default", + "Absolute": "Absolute", "Smart": "Smart", "Small": "Small", + "Smaller": "Smaller", "Medium": "Medium", "Large": "Large", "ExtraLarge": "Extra large", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Stop recording", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Manage recording", "LabelDropImageHere": "Drop image here, or click to browse.", "MessageFileReadError": "There was an error reading the file. Please try again.", @@ -633,5 +668,22 @@ "Trailers": "Trailers", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteVideos": "Favorite Videos", + "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteSongs": "Favorite Songs", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Color space", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ms.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ms.json index 685e098de5..9c69093afb 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/ms.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ms.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", @@ -17,6 +19,7 @@ "EndsAtValue": "Ends at {0}", "HeaderSelectDate": "Select Date", "Watched": "Watched", + "AirDate": "Air date", "Played": "Played", "ButtonOk": "Ok", "ButtonCancel": "Cancel", @@ -28,6 +31,12 @@ "RecordingScheduled": "Recording scheduled.", "SeriesRecordingScheduled": "Series recording scheduled.", "HeaderNewRecording": "New Recording", + "WakeServer": "Wake server", + "HeaderWakeServer": "Wake Server", + "AttemptingWakeServer": "Attempting to wake server. Please wait...", + "WakeServerSuccess": "Success!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "Sunday", "Monday": "Monday", "Tuesday": "Tuesday", @@ -36,6 +45,13 @@ "Friday": "Friday", "Saturday": "Saturday", "Days": "Days", + "SortByValue": "Sort by {0}", + "LabelSortBy": "Sort by:", + "LabelSortOrder": "Sort order:", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "Photos", + "HeaderAppearsOn": "Appears On", + "List": "List", "RecordSeries": "Record series", "HeaderCinemaMode": "Cinema Mode", "HeaderCloudSync": "Cloud Sync", @@ -138,7 +154,8 @@ "Shuffle": "Shuffle", "Identify": "Identify", "EditImages": "Edit images", - "EditInfo": "Edit info", + "EditMetadata": "Edit metadata", + "Convert": "Convert", "Sync": "Sync", "InstantMix": "Instant mix", "ViewAlbum": "View album", @@ -149,6 +166,7 @@ "ResumeAt": "Resume from {0}", "RemoveFromPlaylist": "Remove from playlist", "RemoveFromCollection": "Remove from collection", + "Sort": "Sort", "Trailer": "Trailer", "MarkPlayed": "Mark played", "MarkUnplayed": "Mark unplayed", @@ -157,7 +175,7 @@ "TryMultiSelect": "Try Multi-Select", "TryMultiSelectMessage": "To edit multiple media items, just click and hold any poster and select the items you want to manage. Try it!", "HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation", - "MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?", + "MessageConfirmRecordingCancellation": "Cancel recording?", "Error": "Error", "VoiceInput": "Voice Input", "LabelContentType": "Content type:", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "Original title:", "LabelSortTitle": "Sort title:", "LabelDateAdded": "Date added:", + "DateAdded": "Date added", + "DatePlayed": "Date played", "ConfigureDateAdded": "Configure how date added is determined in the Emby Server dashboard under Library settings", "LabelStatus": "Status:", "LabelArtists": "Artists:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "Artists": "Artists", + "ImdbRating": "IMDb rating", + "CommunityRating": "Community rating", "LabelCommunityRating": "Community rating:", "LabelCriticRating": "Critic rating:", + "CriticRating": "Critic rating", "LabelWebsite": "Website:", "LabelTagline": "Tagline:", "LabelOverview": "Overview:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Release date:", "LabelYear": "Year:", "LabelPlaceOfBirth": "Place of birth:", + "Aired": "Aired", "LabelAirDays": "Air days:", "LabelAirTime": "Air time:", "LabelRuntimeMinutes": "Run time (minutes):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Original aspect ratio:", "Label3DFormat": "3D format:", "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Perfect match", "EnableExternalVideoPlayers": "Enable external video players", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Alternate Episode Numbers", - "LabelDvdSeasonNumber": "Dvd season number:", - "LabelDvdEpisodeNumber": "Dvd episode number:", - "LabelAbsoluteEpisodeNumber": "Absolute episode number:", "HeaderSpecialEpisodeInfo": "Special Episode Info", "LabelAirsBeforeSeason": "Airs before season:", "LabelAirsAfterSeason": "Airs after season:", @@ -234,13 +254,14 @@ "Continuing": "Continuing", "Ended": "Ended", "HeaderEnabledFields": "Enabled Fields", - "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent it's data from being changed.", + "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent its data from being changed.", "Backdrops": "Backdrops", "Images": "Images", "Runtime": "Runtime", "ProductionLocations": "Production locations", "BirthLocation": "Birth location", "ParentalRating": "Parental Rating", + "PlayCount": "Play count", "Name": "Name", "Overview": "Overview", "LabelType": "Type:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "Deleting these items will delete them from both the file system and your media library. Are you sure you wish to continue?", "PleaseRestartServerName": "Please restart Emby Server - {0}.", "LabelSyncJobName": "Sync job name:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "Quality:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", "DownloadingDots": "Downloading...", @@ -297,12 +319,17 @@ "LearnMore": "Learn more", "LabelProfile": "Profile:", "LabelBitrateMbps": "Bitrate (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "Download unwatched videos only", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", "AutomaticallySyncNewContent": "Automatically download new content", "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "Item limit:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "Please select a device to download to.", "Screenshots": "Screenshots", "MoveRight": "Move right", @@ -428,6 +455,7 @@ "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", "LabelSyncTo": "Sync to:", + "LabelConvertTo": "Convert to:", "Next": "Next", "LabelSource": "Source:", "LabelVersion": "Version:", @@ -441,10 +469,10 @@ "More": "More", "Up": "Up", "Down": "Down", + "Home": "Home", + "Favorites": "Favorites", "HeaderHomeScreen": "Home Screen", - "HeaderHomeScreenContent": "Home Screen Content", "HeaderLatestChannelItems": "Latest Channel Items", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "Library Order", "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", "HeaderOnNow": "On Now", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.", "Guide": "Guide", "Suggestions": "Suggestions", - "Favorites": "Favorites", + "HeaderFavoriteCollections": "Favorite Collections", + "HeaderFavoritePlaylists": "Favorite Playlists", "Collections": "Collections", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", "Shows": "Shows", "HeaderLibraryFolders": "Library Folders", - "HeaderLandingScreens": "Landing Screens", - "LandingScreensHelp": "Select the default landing screen when clicking on a library.", "HeaderTermsOfPurchase": "Terms of Purchase", "PrivacyPolicy": "Privacy policy", "TermsOfUse": "Terms of use", "RepeatMode": "Repeat mode", "RepeatOne": "Repeat one", "RepeatAll": "Repeat all", - "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", + "LabelDefaultScreen": "Default screen:", + "ConfirmEndPlayerSession": "Would you like to shutdown Emby on {0}?", "Yes": "Yes", "No": "No", "LiveTV": "Live TV", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video codec not supported", "AudioCodecNotSupported": "Audio codec not supported", "SubtitleCodecNotSupported": "Subtitle format not supported", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Container not supported", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "No subtitles", "Default": "Default", + "Absolute": "Absolute", "Smart": "Smart", "Small": "Small", + "Smaller": "Smaller", "Medium": "Medium", "Large": "Large", "ExtraLarge": "Extra large", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Stop recording", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Manage recording", "LabelDropImageHere": "Drop image here, or click to browse.", "MessageFileReadError": "There was an error reading the file. Please try again.", @@ -633,5 +668,22 @@ "Trailers": "Trailers", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteVideos": "Favorite Videos", + "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteSongs": "Favorite Songs", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Color space", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/nb.json b/dashboard-ui/bower_components/emby-webcomponents/strings/nb.json index 54acd1440a..bf6c1dff6f 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/nb.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/nb.json @@ -1,33 +1,42 @@ { - "MessageUnlockAppWithPurchaseOrSupporter": "L\u00e5s opp denne funksjonen med et engangskj\u00f8p, eller med et aktivt Emby Premiere abonnement.", - "MessageUnlockAppWithSupporter": "L\u00e5s opp denne funksjonen med et aktivt Emby Premiere abonnement.", + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", + "MessageUnlockAppWithPurchaseOrSupporter": "L\u00e5s opp denne funksjonen med et engangskj\u00f8p, eller med et aktivt Emby Premiere-abonnement.", + "MessageUnlockAppWithSupporter": "L\u00e5s opp denne funksjonen med et aktivt Emby Premiere-abonnement.", "MessageToValidateSupporter": "Hvis du har et aktivt Emby Premiere-abonnement, m\u00e5 du s\u00f8rge for at du har konfigurert Emby Premiere i Emby Server Dashboard, som du f\u00e5r tilgang til ved \u00e5 klikke Emby Premiere i hovedmenyen.", "ValueSpecialEpisodeName": "Spesial - {0}", "Share": "Del", "Add": "Legg til", "ServerUpdateNeeded": "Denne Emby serveren m\u00e5 oppdateres. For \u00e5 laste ned siste versjonen, vennligst bes\u00f8k: {0}", - "LiveTvRequiresUnlock": "Live TV requires an active Emby Premiere subscription.", + "LiveTvRequiresUnlock": "Live TV krever et aktivt Emby Premium-abonnement.", "AttributeNew": "Ny", "Premiere": "Premiere", "Live": "Direkte", "Repeat": "Gjenta", "TrackCount": "{0} spor", "ItemCount": "{0} elementer", - "OriginalAirDateValue": "Original utgivelse dato: {0}", - "EndsAtValue": "Ender p\u00e5 {0}", + "OriginalAirDateValue": "Original utgivelsedato: {0}", + "EndsAtValue": "Slutter klokken {0}", "HeaderSelectDate": "Velg dato", - "Watched": "Watched", - "Played": "Sett", + "Watched": "Sett", + "AirDate": "Air date", + "Played": "Spilt", "ButtonOk": "Ok", "ButtonCancel": "Avbryt", "AccessRestrictedTryAgainLater": "Access is currently restricted. Please try again later.", - "ButtonGotIt": "Har det", + "ButtonGotIt": "Skj\u00f8nner", "ButtonRestart": "Omstart", - "RecordingCancelled": "Opptak er Avbrutt.", - "SeriesCancelled": "Serie kansellert.", - "RecordingScheduled": "Opptak planlegger", - "SeriesRecordingScheduled": "Serie opptak planlagt.", + "RecordingCancelled": "Opptak er avbrutt.", + "SeriesCancelled": "Serie avbrutt.", + "RecordingScheduled": "Opptak planlagt.", + "SeriesRecordingScheduled": "Serieopptak planlagt.", "HeaderNewRecording": "Nye opptak:", + "WakeServer": "Vekk opp server", + "HeaderWakeServer": "Vekk opp server", + "AttemptingWakeServer": "Pr\u00f8ver \u00e5 vekke opp server. Vennligst vent,..", + "WakeServerSuccess": "Suksess!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN-pakker ble sendt til servermaskinen din, men tilkobling til din Emby Server mislyktes. Serveren din kan trenge litt mer tid til \u00e5 v\u00e5kne, eller s\u00e5 kj\u00f8rer ikke Emby Server p\u00e5 maskinen.", "Sunday": "S\u00f8ndag", "Monday": "Mandag", "Tuesday": "Tirsdag", @@ -36,12 +45,19 @@ "Friday": "Fredag", "Saturday": "L\u00f8rdag", "Days": "Dager", + "SortByValue": "Sort by {0}", + "LabelSortBy": "Sort by:", + "LabelSortOrder": "Sort order:", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "Photos", + "HeaderAppearsOn": "Appears On", + "List": "List", "RecordSeries": "Ta opp serien", - "HeaderCinemaMode": "Kino Modus", - "HeaderCloudSync": "Sky synkronisering", + "HeaderCinemaMode": "Kinomodus", + "HeaderCloudSync": "Sky-synkronisering", "Downloads": "Nedlastinger", - "HeaderMyDownloads": "My Downloads", - "HeaderOfflineDownloads": "Offline Media", + "HeaderMyDownloads": "Mine nedlastinger", + "HeaderOfflineDownloads": "Nedlastede media", "HeaderOfflineDownloadsDescription": "Last ned media til din enhet for enkel offline bruk", "CloudSyncFeatureDescription": "Synkroniser mediene til skyen for sikkerhetskopiering, arkivering og konvertering.", "LiveTvFeatureDescription": "Stream Live TV to any Emby app, with a compatible TV tuner device installed on your Emby Server.", @@ -51,11 +67,11 @@ "FreeAppsFeatureDescription": "Nyt gratis tilgang til Emby Applikasjoner p\u00e5 din enhet", "HeaderBecomeProjectSupporter": "Skaff Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "Et aktivt Emby Premiere abonnement er p\u00e5krevd for \u00e5 kunne automatisere serieopptak.", - "LabelEmailAddress": "Epost adresse:", + "LabelEmailAddress": "E-postadresse:", "PromoConvertRecordingsToStreamingFormat": "Konverter opptak automatisk til et streaming-vennlig format med Emby Premiere. Opptakene konverteres p\u00e5 rappen til MP4 eller MKV, basert p\u00e5 dine Emby-serverinnstillinger.", "FeatureRequiresEmbyPremiere": "Denne funksjonen krever et aktivt Emby Premiere abonnement.", "HeaderConvertYourRecordings": "Konverter dine opptak", - "Record": "Opptak", + "Record": "Ta opp", "Save": "Lagre", "Edit": "Rediger", "Download": "Nedlasting", @@ -64,7 +80,7 @@ "Advanced": "Avansert", "Delete": "Slett", "HeaderDeleteItem": "Slett element", - "ConfirmDeleteItem": "Sletter elementet fra b\u00e5de filsystemet og biblioteket. Er du sikker p\u00e5 at du vil fortsette?", + "ConfirmDeleteItem": "Sletting av elementet vil slette det fra b\u00e5de filsystemet og biblioteket. Er du sikker p\u00e5 at du vil fortsette?", "Refresh": "Oppdater", "RefreshQueued": "Oppdatering k\u00f8", "AddToCollection": "Legg til i samling", @@ -72,13 +88,13 @@ "NewCollection": "Ny Samling", "LabelCollection": "Samling:", "Help": "Hjelp", - "LabelDisplayMode": "Display mode:", + "LabelDisplayMode": "Visningsmodus:", "Desktop": "Desktop", "Mobile": "Mobile \/ Tablet", "TV": "TV", "DisplayModeHelp": "Select the type of screen you're running Emby on.", "LabelDisplayLanguage": "Display language:", - "LabelDisplayLanguageHelp": "Translating Emby is an ongoing project.", + "LabelDisplayLanguageHelp": "Oversettelse av Emby p\u00e5g\u00e5r.", "LearnHowYouCanContribute": "Learn how you can contribute.", "NewCollectionHelp": "Samlinger tillate deg \u00e5 lage personlige grupperinger av filmer og annet bibliotek innhold.", "SearchForCollectionInternetMetadata": "S\u00f8k p\u00e5 internet for artwork og metadata", @@ -115,7 +131,7 @@ "MessageDownloadQueued": "Nedlasting satt til i k\u00f8", "EditSubtitles": "Endre undertekster", "UnlockGuide": "L\u00e5s opp Guide", - "RefreshMetadata": "Refresh metadata", + "RefreshMetadata": "Frisk opp metadata", "ReplaceExistingImages": "Bytt ut eksisterende bilder", "ReplaceAllMetadata": "Erstatt all metadata", "SearchForMissingMetadata": "S\u00f8k etter manglende metadata", @@ -138,17 +154,19 @@ "Shuffle": "Shuffle", "Identify": "Identifiser", "EditImages": "Endre bilder", - "EditInfo": "Edit info", + "EditMetadata": "Edit metadata", + "Convert": "Convert", "Sync": "Synk", "InstantMix": "Direktemiks", "ViewAlbum": "Vis album", - "ViewArtist": "See artist", + "ViewArtist": "Vis artist", "QueueAllFromHere": "K\u00f8 alt herfra", "PlayAllFromHere": "Spill alt herfra", "PlayFromBeginning": "Start fra starten", "ResumeAt": "Forsett fra {0}", "RemoveFromPlaylist": "Fjern fra spilleliste", "RemoveFromCollection": "Fjern fra samling", + "Sort": "Sort", "Trailer": "Trailer", "MarkPlayed": "Merker som sett", "MarkUnplayed": "Merker som usett", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "Original tittel:", "LabelSortTitle": "Forkortet tittel:", "LabelDateAdded": "Dato lagt til:", + "DateAdded": "Date added", + "DatePlayed": "Date played", "ConfigureDateAdded": "Konfigurer hvordan dato er fastsatt i Emby Server sitt dashbord under Bibliotek innstillinger", "LabelStatus": "Status:", "LabelArtists": "Artister:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "Album artister:", "LabelAlbum": "Album:", "Artists": "Artister", + "ImdbRating": "IMDb rating", + "CommunityRating": "Community rating", "LabelCommunityRating": "Fellesskap anmeldelse:", "LabelCriticRating": "Kritiker anmeldelse:", + "CriticRating": "Critic rating", "LabelWebsite": "Nettsted:", "LabelTagline": "Slagord:", "LabelOverview": "Oversikt:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Utgivelsesdato:", "LabelYear": "Year:", "LabelPlaceOfBirth": "F\u00f8dested:", + "Aired": "Sendt tidligere", "LabelAirDays": "Sendings dager:", "LabelAirTime": "Sendings tid:", "LabelRuntimeMinutes": "Spilletid (minutter):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Originalt sideforhold:", "Label3DFormat": "3D format:", "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Perfect match", "EnableExternalVideoPlayers": "Enable external video players", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Alternativ Episode nummerering", - "LabelDvdSeasonNumber": "Dvd sesong nummer:", - "LabelDvdEpisodeNumber": "Dvd episode nummer:", - "LabelAbsoluteEpisodeNumber": "absolutt episode nummer:", "HeaderSpecialEpisodeInfo": "Spesial Episode info", "LabelAirsBeforeSeason": "Send f\u00f8r sesong:", "LabelAirsAfterSeason": "Sendt etter sesong:", @@ -230,7 +250,7 @@ "LabelDiscNumber": "Disc number:", "LabelParentNumber": "Parent number:", "SortName": "Sorterings navn", - "ReleaseDate": "Utgivelse dao", + "ReleaseDate": "Utgivelsesdato", "Continuing": "Fortsetter", "Ended": "Avsluttet", "HeaderEnabledFields": "Aktiverte felt", @@ -241,6 +261,7 @@ "ProductionLocations": "Produksjon lokasjoner", "BirthLocation": "F\u00f8delesested", "ParentalRating": "Parental Rating", + "PlayCount": "Play count", "Name": "Navn", "Overview": "Oversikt", "LabelType": "Type:", @@ -286,10 +307,11 @@ "ServerNameIsRestarting": "Emby Server - {0} starter om.", "ServerNameIsShuttingDown": "Emby Server - {0} avsluttes.", "HeaderDeleteItems": "Slett elementer", - "ConfirmDeleteItems": "Slette disse elementene vil slette dem fra b\u00e5de filsystemet og mediebiblioteket . Er du sikker p\u00e5 at du vil fortsette?", + "ConfirmDeleteItems": "Sletting av disse elementene vil slette dem fra b\u00e5de filsystemet og mediebiblioteket . Er du sikker p\u00e5 at du vil fortsette?", "PleaseRestartServerName": "Vennligst start gj\u00f8r en omstart av Emby Server - {0}", "LabelSyncJobName": "Navn p\u00e5 synkroniseringsjobb:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "Kvalitet:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", "DownloadingDots": "Downloading...", @@ -297,12 +319,17 @@ "LearnMore": "L\u00e6re mer", "LabelProfile": "Profil:", "LabelBitrateMbps": "Bitrate (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "Download unwatched videos only", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", "AutomaticallySyncNewContent": "Automatically download new content", "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "Begrenset antall:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "Please select a device to download to.", "Screenshots": "Skjermbilder", "MoveRight": "Flytt h\u00f8yere", @@ -325,7 +352,7 @@ "HeaderCancelSeries": "Avbryt serie", "HeaderKeepSeries": "Behold serie", "HeaderLearnMore": "L\u00e6r mere", - "DeleteMedia": "Slet media", + "DeleteMedia": "Slett elementet", "SeriesSettings": "Serie innstillinger", "HeaderRecordingOptions": "Opptak innstillinger", "CancelSeries": "Avbryt serie", @@ -421,13 +448,14 @@ "HeaderMyMedia": "Min Media", "HeaderMyMediaSmall": "Min Media (liten)", "LatestFromLibrary": "Siste {0}", - "ContinueWatching": "Continue watching", + "ContinueWatching": "Fortsett \u00e5 se p\u00e5", "HeaderLatestChannelMedia": "Siste kanalelementer", - "HeaderContinueWatching": "Forsett og see p\u00e5", + "HeaderContinueWatching": "Forsett og se p\u00e5", "HeaderContinueListening": "Forsett og h\u00f8re p\u00e5", "HeaderActiveRecordings": "Aktive opptak", "HeaderLatestRecordings": "Siste opptak", "LabelSyncTo": "Synkroniser til:", + "LabelConvertTo": "Convert to:", "Next": "Next", "LabelSource": "Source:", "LabelVersion": "Version:", @@ -441,11 +469,11 @@ "More": "Mere", "Up": "Opp", "Down": "Ned", + "Home": "Home", + "Favorites": "Favoritter", "HeaderHomeScreen": "Hjemskjerm", - "HeaderHomeScreenContent": "Home Screen Content", "HeaderLatestChannelItems": "Siste kanal elementer", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", - "HeaderLibraryOrder": "Bibliotek rekkef\u00f8lge", + "HeaderLibraryOrder": "Bibliotekenes rekkef\u00f8lge", "HideWatchedContentFromLatestMedia": "Skjul sett innhold fra nyeste media", "HeaderOnNow": "P\u00e5 N\u00e5", "HeaderPlaybackError": "Avspillingsfeil", @@ -454,20 +482,23 @@ "PlaybackErrorPlaceHolder": "Sett inn disken for \u00e5 spille av denne filmen.", "Guide": "Guide", "Suggestions": "Forslag", - "Favorites": "Favoritter", + "HeaderFavoriteCollections": "Favorite Collections", + "HeaderFavoritePlaylists": "Favorittspillelister", "Collections": "Samlinger", - "LabelSelectFolderGroups": "Grupper innhold automatisk etter f\u00f8lgende grupper til visninger som filmer, musikk og TV:", + "LabelSelectFolderGroups": "Grupp\u00e9r innhold automatisk etter f\u00f8lgende grupper til visninger som filmer, musikk og TV:", "LabelSelectFolderGroupsHelp": "Mapper som ikke er merket vil kun bli vist i sin egen visning.", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", "Shows": "Programmer", "HeaderLibraryFolders": "Bibliotek mapper", - "HeaderLandingScreens": "landingsskjerm", - "LandingScreensHelp": "Velg standard landingsskjerm n\u00e5r du klikker p\u00e5 et bibliotek.", "HeaderTermsOfPurchase": "Kj\u00f8ps betingelser", "PrivacyPolicy": "Personvern regler", "TermsOfUse": "Bruks betingelser", "RepeatMode": "Repetering modus", "RepeatOne": "Repetering en", "RepeatAll": "Repetering alle", + "LabelDefaultScreen": "Default screen:", "ConfirmEndPlayerSession": "Vill du stenge Emby p\u00e5 denne enheten?", "Yes": "Ja", "No": "Nei", @@ -475,7 +506,7 @@ "Schedule": "Planlegg", "Recordings": "Opptak", "MarkWatched": "Marker som sett", - "ScanForNewAndUpdatedFiles": "Scan for new and updated files", + "ScanForNewAndUpdatedFiles": "Se etter nye og oppdaterte filer", "DirectStreamHelp1": "The media is compatible with the device regarding resolution and media type (H.264, AC3, etc.), but is in an incompatible file container (.mkv, .avi, .wmv, etc.). The video will be re-packaged on the fly before streaming it to the device.", "DirectStreamHelp2": "Direct Streaming a file uses very little processing power without any loss in video quality.", "MediaIsBeingConverted": "The media is being converted into a format that is compatible with the device that is playing the media.", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video codec not supported", "AudioCodecNotSupported": "Audio codec not supported", "SubtitleCodecNotSupported": "Subtitle format not supported", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Container not supported", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "No subtitles", "Default": "Default", + "Absolute": "Absolutt", "Smart": "Smart", "Small": "Small", + "Smaller": "Smaller", "Medium": "Medium", "Large": "Large", "ExtraLarge": "Extra large", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Stop recording", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Manage recording", "LabelDropImageHere": "Drop image here, or click to browse.", "MessageFileReadError": "There was an error reading the file. Please try again.", @@ -604,7 +639,7 @@ "HeaderLatestMedia": "Nyeste media", "HeaderRestartingEmbyServer": "Restarting Emby Server", "RestartPleaseWaitMessage": "Please wait while Emby Server shuts down and restarts. This may take a minute or two.", - "PlayNext": "Play next", + "PlayNext": "Spill av neste", "AllowSeasonalThemes": "Allow automatic seasonal themes", "AllowSeasonalThemesHelp": "If enabled, seasonal themes will occasionally override your theme setting.", "AutoBasedOnLanguageSetting": "Auto (based on language setting)", @@ -633,5 +668,22 @@ "Trailers": "Trailers", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteVideos": "Favorite Videos", + "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteSongs": "Favorite Songs", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Prim\u00e6rfarger", + "ColorSpace": "Fargeutvalg", + "ColorTransfer": "Overf\u00f8ring av farger", + "VideoRange": "Videoomr\u00e5de", + "SeriesDisplayOrderHelp": "Sorter episoder etter sendt dato, DVD-rekkef\u00f8lge eller nummerering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/nl.json b/dashboard-ui/bower_components/emby-webcomponents/strings/nl.json index 8d73b44e55..b6f0f7307a 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/nl.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/nl.json @@ -1,7 +1,9 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Ontgrendel deze functie met een kleine eenmalige aankoop, of met een actief Emby Premiere abonnement.", - "MessageUnlockAppWithSupporter": "Ontgrendel deze functie met een actief Emby Premiere abonnement.", - "MessageToValidateSupporter": "Als u een actieve Emby Premiere abonnement heeft, zorg er dan voor dat u deze activeert in uw Emby Server Dashboard door te klikken op Emby Premiere in het hoofdmenu.", + "MessageUnlockAppWithSupporter": "Ontgrendel deze functie met een actief Emby Premi\u00e8re abonnement.", + "MessageToValidateSupporter": "Als u een actieve Emby Premi\u00e8re abonnement heeft, zorg er dan voor dat u deze activeert in uw Emby Server Dashboard door te klikken op Emby Premiere in het hoofdmenu.", "ValueSpecialEpisodeName": "Speciaal - {0}", "Share": "Delen", "Add": "Toevoegen", @@ -17,6 +19,7 @@ "EndsAtValue": "Eindigt om {0}", "HeaderSelectDate": "Selecteer Datum", "Watched": "Bekeken", + "AirDate": "Uitzenddatum", "Played": "Afgespeeld", "ButtonOk": "Ok", "ButtonCancel": "Annuleren", @@ -28,6 +31,12 @@ "RecordingScheduled": "Opname schema", "SeriesRecordingScheduled": "Serieopname gepland.", "HeaderNewRecording": "Nieuwe opname", + "WakeServer": "Server wekken", + "HeaderWakeServer": "Server Wekken", + "AttemptingWakeServer": "Proberen de server te wekken. Een moment geduld...", + "WakeServerSuccess": "Succesvol!", + "HeaderCustomizeHomeScreen": "Beginscherm aanpassen", + "WakeServerError": "Er zijn \"Wake On Lan\" pakketten naar de server verzonden, maar verbinding maken is mislukt. Het kan voorkomen dat de server wat meer tijd nodig heeft om op te starten, of misschien is Emby Server niet actief op de machine.", "Sunday": "Zondag", "Monday": "Maandag", "Tuesday": "Dinsdag", @@ -36,6 +45,13 @@ "Friday": "Vrijdag", "Saturday": "Zaterdag", "Days": "Dagen", + "SortByValue": "Sorteren op {0}", + "LabelSortBy": "Sorteren op:", + "LabelSortOrder": "Sorteervolgorde:", + "HeaderPhotoAlbums": "Foto-albums", + "Photos": "Foto's", + "HeaderAppearsOn": "Verschijnt op", + "List": "Lijst", "RecordSeries": "Series Opnemen", "HeaderCinemaMode": "Bioscoop mode", "HeaderCloudSync": "Cloud Synchronisatie", @@ -138,7 +154,8 @@ "Shuffle": "Willekeurig", "Identify": "Identificeer", "EditImages": "Bewerk afbeeldingen", - "EditInfo": "Bewerk Info", + "EditMetadata": "Metadata wijzigen", + "Convert": "Converteren", "Sync": "Synchronisatie", "InstantMix": "Instant mix", "ViewAlbum": "Bekijk album", @@ -149,6 +166,7 @@ "ResumeAt": "Hervatten vanaf {0}", "RemoveFromPlaylist": "Verwijderen uit afspeellijst", "RemoveFromCollection": "Verwijder uit collectie", + "Sort": "Sorteren", "Trailer": "Trailer", "MarkPlayed": "Markeren als Afgespeeld", "MarkUnplayed": "Markeren als Niet Afgespeeld", @@ -157,7 +175,7 @@ "TryMultiSelect": "Probeer multi-select", "TryMultiSelectMessage": "Als u meerdere media-items wilt bewerken, klikt u er op een poster en hou even vast, selecteer nu de items die u wilt beheren. Probeer maar!", "HeaderConfirmRecordingCancellation": "Bevestigen Annulering Opname", - "MessageConfirmRecordingCancellation": "Weet u zeker dat u deze opname wilt annuleren?", + "MessageConfirmRecordingCancellation": "Opnemen annuleren?", "Error": "Fout", "VoiceInput": "Spraak invoer", "LabelContentType": "Inhoud type:", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "Orginele titel:", "LabelSortTitle": "Sorteer titel:", "LabelDateAdded": "Datum toegevoegd:", + "DateAdded": "Datum toegevoegd", + "DatePlayed": "Datum afgespeeld", "ConfigureDateAdded": "Configureer hoe datum toegevoegd wordt bepaald in het Emby Server dashboard onder de instellingen van de documentbibliotheek", "LabelStatus": "Status:", "LabelArtists": "Artiest:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "Album artiesten:", "LabelAlbum": "Album:", "Artists": "Artiesten", + "ImdbRating": "IMDb-beoordeling", + "CommunityRating": "Community-beoordeling", "LabelCommunityRating": "Beoordeling gemeenschap:", "LabelCriticRating": "Beoordeling critici:", + "CriticRating": "Critici-beoordeling", "LabelWebsite": "Website:", "LabelTagline": "Tagline:", "LabelOverview": "Overzicht:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Uitgave datum:", "LabelYear": "Jaar:", "LabelPlaceOfBirth": "Geboorteplaats:", + "Aired": "Uitgezonden", "LabelAirDays": "Uitzend dagen:", "LabelAirTime": "Uitzend tijd:", "LabelRuntimeMinutes": "Speelduur (minuten):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Originele aspect ratio:", "Label3DFormat": "3D formaat", "FormatValue": "Formaat: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Perfecte match", "EnableExternalVideoPlayers": "Externe video spelers inschakelen", "EnableExternalVideoPlayersHelp": "Een menu voor externe spelers zal worden getoond bij het afspelen van video's", - "HeaderAlternateEpisodeNumbers": "Afwijkende afleveringsnummers", - "LabelDvdSeasonNumber": "Dvd seizoensnummer:", - "LabelDvdEpisodeNumber": "Dvd afleveringsnummer:", - "LabelAbsoluteEpisodeNumber": "Absoluut afleveringsnummer:", "HeaderSpecialEpisodeInfo": "Speciale afleveringsinformatie", "LabelAirsBeforeSeason": "Uitgezonden voor seizoen:", "LabelAirsAfterSeason": "Uitgezonden na seizoen:", @@ -215,7 +235,7 @@ "HeaderMetadataSettings": "Metagegevens instellingen", "People": "Personen", "LabelMetadataDownloadLanguage": "Voorkeurs taal:", - "LabelLockItemToPreventChanges": "Blokkeer dit item tegen wijzigingen", + "LabelLockItemToPreventChanges": "Vergrendel dit item om toekomstige wijzigingen te voorkomen", "MessageLeaveEmptyToInherit": "Leeg laten om instellingen van bovenliggend item of de algemene waarde over te nemen.", "LabelCountry": "Land:", "LabelDynamicExternalId": "{0} Id:", @@ -234,13 +254,14 @@ "Continuing": "Wordt vervolgd...", "Ended": "Gestopt", "HeaderEnabledFields": "Schakel velden in", - "HeaderEnabledFieldsHelp": "Schakel een veld uit om dit te blokkeren van wijzigingen.", + "HeaderEnabledFieldsHelp": "Verwijder een vinkje om het veld te vergrendelen en voorkom dat gegevens gewijzigd kunnen worden.", "Backdrops": "Achtergronden", "Images": "Afbeeldingen", "Runtime": "Speelduur", "ProductionLocations": "Productie Locaties", "BirthLocation": "Geboorte Locatie", "ParentalRating": "Kijkwijzer classificatie", + "PlayCount": "Aantal keer afsgespeeld", "Name": "Naam", "Overview": "Overzicht", "LabelType": "Type:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "Het verwijderen van deze items verwijdert ze van het bestandssysteem en uit uw bibliotheek. Weet u zeker dat u verder wilt gaan?", "PleaseRestartServerName": "Herstart Emby Server - {0} aub.", "LabelSyncJobName": "Naam synchroniseer taak:", - "SyncJobCreated": "Synchronisatie taak aangemaakt", + "SyncingDots": "Synchroniseren...", + "ConvertingDots": "Converteren...", "LabelQuality": "Kwaliteit", "LabelSyncNoTargetsHelp": "Het lijkt erop dat u momenteel geen apps heeft die offline downloaden ondersteunen.", "DownloadingDots": "Downloaden...", @@ -297,12 +319,17 @@ "LearnMore": "Meer informatie", "LabelProfile": "profiel:", "LabelBitrateMbps": "Bitrate (Mbps):", + "ConvertUnwatchedVideosOnly": "Alleen onbekeken video's converteren", "SyncUnwatchedVideosOnly": "Alleen niet bekeken video's downloaden", - "SyncUnwatchedVideosOnlyHelp": "Alleen niet bekeken video's zullen worden gedownload. En video's zullen van het apparaat worden verwijderd nadat deze zijn bekeken.", + "ConvertUnwatchedVideosOnlyHelp": "Alleen onbekeken video's worden geconverteerd.", + "SyncUnwatchedVideosOnlyHelp": "Alleen niet bekeken video's zullen worden gedownload en de video's worden van het apparaat verwijderd nadat deze zijn bekeken.", "AutomaticallySyncNewContent": "Nieuwe inhoud automatisch downloaden", "AutomaticallySyncNewContentHelp": "Aan deze map toegevoegde nieuwe inhoud automatisch naar het apparaat downloaden.", + "AutomaticallyConvertNewContent": "Nieuwe content automatisch converteren", + "AutomaticallyConvertNewContentHelp": "Nieuwe content toegevoegd aan deze map wordt automatisch geconverteerd.", "LabelItemLimit": "Item limiet:", - "LabelItemLimitHelp": "Optioneel. Stel een maximum aantal items in dat wordt gedownload.", + "ConvertItemLimitHelp": "Optioneel. Stel een maximum aantal items in dat wordt geconverteerd.", + "DownloadItemLimitHelp": "Optioneel. Stel een maximum aantal items in dat wordt gedownload.", "PleaseSelectDeviceToSyncTo": "Selecteer een apparaat om naar te downloaden", "Screenshots": "Screenshots", "MoveRight": "Naar rechts verplaatsen", @@ -383,7 +410,7 @@ "Items": "Items", "OneChannel": "E\u00e9n kanaal", "ConfirmRemoveDownload": "Download verwijderen?", - "RemoveDownload": "Download verijderen", + "RemoveDownload": "Download verwijderen", "KeepDownload": "Download bewaren", "AddedOnValue": "{0} Toegevoegd", "RemovingFromDevice": "Verwijderen van apparaat", @@ -421,13 +448,14 @@ "HeaderMyMedia": "Mijn Media", "HeaderMyMediaSmall": "Mijn Media (klein)", "LatestFromLibrary": "Laatste {0}", - "ContinueWatching": "Continue watching", + "ContinueWatching": "Kijken hervatten", "HeaderLatestChannelMedia": "Nieuwste Kanaal Items", "HeaderContinueWatching": "Kijken hervatten", "HeaderContinueListening": "Luisteren hervatten", "HeaderActiveRecordings": "Actieve Opnames", "HeaderLatestRecordings": "Nieuwste Opnames", "LabelSyncTo": "Synchroniseer naar:", + "LabelConvertTo": "Converteren naar:", "Next": "Volgende", "LabelSource": "Bron:", "LabelVersion": "Versie:", @@ -441,10 +469,10 @@ "More": "Meer", "Up": "Omhoog", "Down": "Omlaag", + "Home": "Start", + "Favorites": "Favorieten", "HeaderHomeScreen": "Begin Scherm", - "HeaderHomeScreenContent": "Begin scherm Inhoud", "HeaderLatestChannelItems": "Nieuwste Kanaal Items", - "LabelSelectHomeScreenItemsFolders": "Items verschijnen op mijn begin scherm van:", "HeaderLibraryOrder": "Bibliotheek Volgorde", "HideWatchedContentFromLatestMedia": "Verberg gekeken inhoud uit nieuwste media", "HeaderOnNow": "Aan het spelen", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "De gekozen content is niet af te spelen vanaf dit apparaat. Plaats de schijf.", "Guide": "Gids", "Suggestions": "Suggesties", - "Favorites": "Favorieten", + "HeaderFavoriteCollections": "Favoriete collecties", + "HeaderFavoritePlaylists": "Favoriete afspeellijsten", "Collections": "Collecties", "LabelSelectFolderGroups": "De inhoud van de volgende mappen automatisch groeperen in secties zoals Films, Muziek en TV:", "LabelSelectFolderGroupsHelp": "Mappen die niet aangevinkt zijn worden getoond in hun eigen weergave.", + "Folders": "Mappen", + "DisplayInOtherHomeScreenSections": "In secties van het startscherm weergeven, zoals \"Recente Media\" en \"Verder Kijken\"", + "DisplayInMyMedia": "Op het startscherm weergeven", "Shows": "Series", "HeaderLibraryFolders": "Bibliotheek Mappen", - "HeaderLandingScreens": "Standaard Secties", - "LandingScreensHelp": "Selecteer de standaard sectie wanneer op een bibliotheek wordt geklikt.", "HeaderTermsOfPurchase": "Aankoop Voorwaarden", "PrivacyPolicy": "Privacy beleid", "TermsOfUse": "Gebruiksvoorwaarden", "RepeatMode": "Herhaal mode", "RepeatOne": "E\u00e9n herhalen", "RepeatAll": "Alle herhalen", - "ConfirmEndPlayerSession": "Wilt u Emby op het apparaat afsluiten?", + "LabelDefaultScreen": "Standaard scherm:", + "ConfirmEndPlayerSession": "Wilt u Emby afsluiten op {0}?", "Yes": "Ja", "No": "Nee", "LiveTV": "Live TV", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video codec niet ondersteund", "AudioCodecNotSupported": "Audio codec niet ondersteund", "SubtitleCodecNotSupported": "Ondertitel formaat niet ondersteund", + "DirectPlayError": "Direct Afspelen fout", "ContainerNotSupported": "Container niet ondersteund", "VideoLevelNotSupported": "Video niveau niet ondersteund", "AudioBitrateNotSupported": "Audio bitrate niet ondersteund", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "Er was een probleem bij het verwijderen van het item in Emby Server. Controleer dat Emby Server schrijfrechten op de map heeft en probeer het opnieuw.", "NoSubtitles": "Geen ondertitels", "Default": "Standaard", + "Absolute": "Absoluut", "Smart": "Slim", "Small": "Klein", + "Smaller": "Kleiner", "Medium": "Gemiddeld", "Large": "Groot", "ExtraLarge": "Extra groot", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Aantal video reference frames niet ondersteund", "ErrorConnectServerUnreachable": "Er was een probleem bij het uitvoeren van deze bewerking. Uw server kan de Emby Connect Server op {0} niet bereiken. Controleer dat uw server een actieve internetverbinding heeft en dat de communicatie toegestaan wordt door de firewall en\/of security software die u gebruikt.", "StopRecording": "Stop opname", + "HeaderStopRecording": "Stop Opname", "ManageRecording": "Beheren opnames", "LabelDropImageHere": "Sleep de afbeelding hierheen of klik om te bladeren.", "MessageFileReadError": "Er is een fout opgetreden bij het lezen van het bestand. Probeer het opnieuw.", @@ -626,12 +661,29 @@ "LabelTVHomeScreen": "TV mode begin scherm", "Horizontal": "Horizontaal", "Vertical": "Verticaal", - "GroupBySeries": "Group by series", - "HeaderVideoType": "Video Type", - "HeaderSeriesStatus": "Series Status", - "Features": "Features", + "GroupBySeries": "Groeperen op serie", + "HeaderVideoType": "Videotype", + "HeaderSeriesStatus": "Seriestatus", + "Features": "Kenmerken", "Trailers": "Trailers", - "Extras": "Extras", - "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "Extras": "Extra's", + "ThemeSongs": "Themamuziek", + "ThemeVideos": "Themavideo's", + "HeaderFavoriteMovies": "Favoriete films", + "HeaderFavoriteShows": "Favoriete series", + "HeaderFavoriteEpisodes": "Favoriete afleveringen", + "HeaderFavoriteVideos": "Favoriete video's", + "HeaderFavoriteGames": "Favoriete games", + "HeaderFavoriteArtists": "Favoriete artiesten", + "HeaderFavoriteAlbums": "Favoriete albums", + "HeaderFavoriteSongs": "Favoriete nummers", + "Ascending": "Oplopend", + "Descending": "Aflopend", + "ColorPrimaries": "Primaire kleuren", + "ColorSpace": "Kleurbereik", + "ColorTransfer": "Kleuroverdracht", + "VideoRange": "Videobereik", + "SeriesDisplayOrderHelp": "Afleveringen sorteren op uitzenddatum, DVD-volgorde, of absolute nummering.", + "PlaybackSettingsIntro": "Om de standaard afspeelinstellingen te configureren, stopt u het afspelen van de video. Vervolgens klikt u op het gebruikersicoon in de rechterbovenhoek van de app.", + "SubtitleSettingsIntro": "Om de standaard ondertiteling- en taalinstellingen te configureren, stopt u het afspelen van de video. Vervolgens klikt u op het gebruikersicoon in de rechterbovenhoek van de app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/pl.json b/dashboard-ui/bower_components/emby-webcomponents/strings/pl.json index 3283325314..2681bc36ac 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/pl.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/pl.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Ustawienia odtwarzania", + "SubtitleSettings": "Ustawienia napis\u00f3w", "MessageUnlockAppWithPurchaseOrSupporter": "Odblokuj t\u0119 funkcj\u0119, za niewielk\u0105 jednorazow\u0105 op\u0142at\u0105 lub przy u\u017cyciu aktywnej subskrypcji Emby Premium.", "MessageUnlockAppWithSupporter": "Odblokuj t\u0119 funkcj\u0119 przy u\u017cyciu subskrypcji Emby Premium.", "MessageToValidateSupporter": "Je\u015bli posiadasz aktywn\u0105 subskrypcj\u0119 Emby Premium, upewnij si\u0119, \u017ce j\u0105 poprawnie skonfigurowa\u0142e\u015b przy pomocy Kokpitu serwera Emby, do kt\u00f3rego mo\u017cesz uzyska\u0107 dost\u0119p, klikaj\u0105c na pozycj\u0119 Premium menu startowego.", @@ -17,6 +19,7 @@ "EndsAtValue": "Koniec o {0}", "HeaderSelectDate": "Wybierz dat\u0119", "Watched": "Obejrzany", + "AirDate": "Data emisji", "Played": "Odtworzone", "ButtonOk": "Ok", "ButtonCancel": "Anuluj", @@ -28,6 +31,12 @@ "RecordingScheduled": "Zaplanowano nagranie.", "SeriesRecordingScheduled": "Zaplanowano nagranie seryjne.", "HeaderNewRecording": "Nowe nagranie", + "WakeServer": "Wybudzaj serwer", + "HeaderWakeServer": "Wybudzaj serwer", + "AttemptingWakeServer": "Trwa pr\u00f3ba wybudzenia serwera. Prosz\u0119 czeka\u0107...", + "WakeServerSuccess": "Powodzenie!", + "HeaderCustomizeHomeScreen": "Dostosuj ekran startowy", + "WakeServerError": "Wys\u0142ano pakiery Wake On LAN do maszyny serwera, ale po\u0142\u0105czenie z serwer Emby zako\u0144czy\u0142o si\u0119 niepowodzeniem. Twoja maszyna potrzebuje wi\u0119cej czasu do wybudzenia lub serwer Emby mo\u017ce nie dzia\u0142a\u0107 aktywnie na tej maszynie.", "Sunday": "Niedziela", "Monday": "Poniedzia\u0142ek", "Tuesday": "Wtorek", @@ -36,14 +45,21 @@ "Friday": "Pi\u0105tek", "Saturday": "Sobota", "Days": "Dni", + "SortByValue": "Sortowanie wg {0}", + "LabelSortBy": "Sortuj po:", + "LabelSortOrder": "Porz\u0105dek sortowania", + "HeaderPhotoAlbums": "Albumy fotografii", + "Photos": "Fotografie", + "HeaderAppearsOn": "Wyst\u0119puje", + "List": "Lista", "RecordSeries": "Nagraj seryjnie", "HeaderCinemaMode": "Tryb kinowy", - "HeaderCloudSync": "Synchronizacja z chmur\u0105", + "HeaderCloudSync": "Synchronizacja chmurowa", "Downloads": "Pobrane", "HeaderMyDownloads": "Moje pobrania", - "HeaderOfflineDownloads": "Media w trybie offline", - "HeaderOfflineDownloadsDescription": "Pobieraj media na swoje urz\u0105dzenia, aby z nich korzysta\u0107 w trybie offline.", - "CloudSyncFeatureDescription": "Synchronizuj media z chmur\u0105, w celu wykonywania kopii zapasowej, archiwizacji i konwersji.", + "HeaderOfflineDownloads": "Media dost\u0119pne lokalnie", + "HeaderOfflineDownloadsDescription": "Umo\u017cliwia pobieranie medi\u00f3w na urz\u0105dzenia klienckie, aby z nich korzysta\u0107 bez konieczno\u015bci po\u0142\u0105czenia z serwerem.", + "CloudSyncFeatureDescription": "Umo\u017cliwia synchronizowanie medi\u00f3w z chmur\u0105, w celu \u0142atwego wykonywania kopii zapasowej, archiwizacji i konwersji.", "LiveTvFeatureDescription": "Ogl\u0105daj transmisje telewizyjne z dowoln\u0105 aplikacj\u0105 Emby, za pomoc\u0105 zainstalowanego na serwerze Emby tunera telewizyjnego.", "DvrFeatureDescription": "Zaplanuj pojedyncze nagrania program\u00f3w telewizyjnych, nagrywanie seriali i wi\u0119cej za pomoc\u0105 nagrywarki Emby.", "CinemaModeFeatureDescription": "Tryb kinowy oferuje prawdziwie kinowe do\u015bwiadczenia, z mo\u017cliwo\u015bci\u0105 odtwarzania zwiastun\u00f3w i niestandardowych prezentacji przed seansem.", @@ -60,13 +76,13 @@ "Edit": "Edycja", "Download": "Pobierz", "Downloaded": "Pobrano", - "Downloading": "Trwa pobieranie", + "Downloading": "Pobieranie", "Advanced": "Zaawansowane", "Delete": "Usu\u0144", "HeaderDeleteItem": "Usu\u0144 pozycj\u0119", "ConfirmDeleteItem": "Usuni\u0119cie tej pozycji usunie j\u0105 zar\u00f3wno z systemu plik\u00f3w jak i z biblioteki medi\u00f3w. Czy chcesz kontynuowa\u0107?", "Refresh": "Od\u015bwie\u017c", - "RefreshQueued": "Dodano od\u015bwie\u017canie do kolejki", + "RefreshQueued": "Od\u015bwie\u017canie dodane do kolejki zada\u0144.", "AddToCollection": "Dodaj do kolekcji", "HeaderAddToCollection": "Dodaj do kolekcji", "NewCollection": "Nowa kolekcja", @@ -138,17 +154,19 @@ "Shuffle": "Wylosuj", "Identify": "Identyfikuj", "EditImages": "Edytuj obrazy", - "EditInfo": "Edytuj informacje", + "EditMetadata": "Edytuj metadane", + "Convert": "Konwertuj", "Sync": "Synchronizacja", "InstantMix": "Szybki remiks", - "ViewAlbum": "Podejrzyj album", - "ViewArtist": "Podejrzyj wykonawc\u0119", + "ViewAlbum": "Podgl\u0105d albumu", + "ViewArtist": "Podgl\u0105d wykonawcy", "QueueAllFromHere": "Kolejkuj wszystko z tej lokalizacji", "PlayAllFromHere": "Odtwarzaj wszystko z tej lokalizacji", "PlayFromBeginning": "Odtwarzaj od pocz\u0105tku", "ResumeAt": "Wzn\u00f3w odtwarzanie od {0}", "RemoveFromPlaylist": "Usu\u0144 z listy", "RemoveFromCollection": "Usu\u0144 z kolekcji", + "Sort": "Sortuj", "Trailer": "Zwiastun", "MarkPlayed": "Oznacz jako obejrzane", "MarkUnplayed": "Oznacz jako nieobejrzane", @@ -157,7 +175,7 @@ "TryMultiSelect": "Wypr\u00f3buj multi-zaznaczanie", "TryMultiSelectMessage": "Aby edytowa\u0107 kilka rzeczy naraz, po prostu kliknij i przytrzymaj jak\u0105kolwiek miniaturk\u0119 i zaznacz obiekty kt\u00f3rymi chesz zarz\u0105dza\u0107. To proste!", "HeaderConfirmRecordingCancellation": "Potwierd\u017a Anulowanie Nagrania", - "MessageConfirmRecordingCancellation": "Czy jeste\u015b pewien \u017ce chcesz anulowa\u0107 to nagranie?", + "MessageConfirmRecordingCancellation": "Anulowa\u0107 nagranie?", "Error": "B\u0142\u0105d", "VoiceInput": "Wej\u015bcie g\u0142osowe", "LabelContentType": "Typ zawarto\u015bci", @@ -167,7 +185,9 @@ "LabelOriginalTitle": "Tytu\u0142 oryginalny:", "LabelSortTitle": "Tytu\u0142 sortowania:", "LabelDateAdded": "Data dodania:", - "ConfigureDateAdded": "Skonfiguruj jak ustalana jest data dodania, w Kokpicie serwera Emby, w ustawieniach biblioteki", + "DateAdded": "Data dodania", + "DatePlayed": "Data odtwarzania", + "ConfigureDateAdded": "Spos\u00f3b ustalania daty dodania, mo\u017cna skonfigurowa\u0107, w ustawieniach biblioteki, w kokpicie serwera Emby.", "LabelStatus": "Stan:", "LabelArtists": "Wykonawcy:", "LabelArtistsHelp": "Oddzielaj u\u017cywaj\u0105c ;", @@ -175,15 +195,19 @@ "LabelAlbumArtists": "Wykonawcy album\u00f3w", "LabelAlbum": "Album", "Artists": "Wykonawcy", + "ImdbRating": "Ocena IMDb", + "CommunityRating": "Ocena spo\u0142eczno\u015bci", "LabelCommunityRating": "Ocena spo\u0142eczno\u015bci:", "LabelCriticRating": "Ocena krytyk\u00f3w:", + "CriticRating": "Ocena krytyk\u00f3w", "LabelWebsite": "Strona internetowa", - "LabelTagline": "Znaczniki", + "LabelTagline": "Motto:", "LabelOverview": "Opis:", "LabelShortOverview": "Streszczenie:", "LabelReleaseDate": "Data wydania:", "LabelYear": "Rok:", "LabelPlaceOfBirth": "Miejsce urodzenia:", + "Aired": "Premiera", "LabelAirDays": "Dni transmisji:", "LabelAirTime": "Czas transmisji:", "LabelRuntimeMinutes": "Czas (w minutach):", @@ -192,18 +216,14 @@ "LabelOriginalAspectRatio": "Oryginalny format obrazu:", "Label3DFormat": "Format 3D:", "FormatValue": "Format: {0}", - "DownloadsValue": "Pobrania: {0}", + "DownloadsValue": "{0} pobra\u0144", "PerfectMatch": "Perfekcyjne dopasowanie", "EnableExternalVideoPlayers": "Aktywuj obs\u0142ug\u0119 zewn\u0119trznych odtwarzaczy", "EnableExternalVideoPlayersHelp": "Menu wyboru zewn\u0119trznego odtwarzacza b\u0119dzie wy\u015bwietlane przed rozpocz\u0119ciem odtwarzania wideo.", - "HeaderAlternateEpisodeNumbers": "Alternatywna numeracja odcink\u00f3w", - "LabelDvdSeasonNumber": "Numer sezonu DVD:", - "LabelDvdEpisodeNumber": "Numer odcinka DVD:", - "LabelAbsoluteEpisodeNumber": "Bezwzgl\u0119dny numer odcinka:", "HeaderSpecialEpisodeInfo": "Specjalne informacje o odcinku", - "LabelAirsBeforeSeason": "Transmisja prze sezonem:", - "LabelAirsAfterSeason": "Transmisja po sezonie:", - "LabelAirsBeforeEpisode": "Transmisja przed odcinkiem:", + "LabelAirsBeforeSeason": "Emisja przed sezonem:", + "LabelAirsAfterSeason": "Emisja po sezonie:", + "LabelAirsBeforeEpisode": "Emisja przed odcinkiem:", "HeaderExternalIds": "Identyfikatory zewn\u0119trzne:", "HeaderDisplaySettings": "Ustawienia wy\u015bwietlania", "LabelDisplayOrder": "Kolejno\u015b\u0107 wy\u015bwietlania:", @@ -212,7 +232,7 @@ "Genres": "Gatunki", "Studios": "Wytw\u00f3rnie", "Tags": "Znaczniki", - "HeaderMetadataSettings": "Ustawienia Metadanych", + "HeaderMetadataSettings": "Ustawienia metadanych", "People": "Osoby", "LabelMetadataDownloadLanguage": "Preferowany j\u0119zyk pobierania:", "LabelLockItemToPreventChanges": "Zablokuj t\u0119 pozycj\u0119, aby zapobiec przysz\u0142ym zmianom", @@ -234,13 +254,14 @@ "Continuing": "Dalej wy\u015bwietlane", "Ended": "Zako\u0144czony", "HeaderEnabledFields": "Pola aktywne", - "HeaderEnabledFieldsHelp": "Odznacz pole aby zablokowa\u0107 i zapobiec zmianie danych.", + "HeaderEnabledFieldsHelp": "Odznacz pole, aby je zablokowa\u0107 i zapobiec zmianom danych w przysz\u0142o\u015bci.", "Backdrops": "Fototapety", "Images": "Obrazy", "Runtime": "Czas trwania", "ProductionLocations": "Kraje", "BirthLocation": "Miejsce urodzin", "ParentalRating": "Kategoria wiekowa", + "PlayCount": "Liczba odtworze\u0144", "Name": "Nazwa", "Overview": "Opis", "LabelType": "Typ:", @@ -252,13 +273,13 @@ "GuestStar": "Go\u015b\u0107 specjalny", "Producer": "Producent", "Writer": "Scenarzysta", - "MessageNoSyncJobsFound": "Brak pobranych plik\u00f3w. Utw\u00f3rz zadanie pobierania, u\u017cywaj\u0105c przycisk\u00f3w Pobierz, dost\u0119pnych w aplikacji.", - "MessageNoDownloadsFound": "Brak pobranych plik\u00f3w trybu offline. Pobierz media do u\u017cycia lokalnie, u\u017cywaj\u0105c przycisku Pobierz, dost\u0119pnego w aplikacji.", + "MessageNoSyncJobsFound": "Brak pobieranych plik\u00f3w. Utw\u00f3rz zadanie pobierania, u\u017cywaj\u0105c przycisku Pobierz, dost\u0119pnego w aplikacji.", + "MessageNoDownloadsFound": "Brak dost\u0119pnych lokalnie medi\u00f3w. Pobierz media do u\u017cycia lokalnie, u\u017cywaj\u0105c przycisku Pobierz, dost\u0119pnego w aplikacji.", "InstallingPackage": "Instalowanie {0}", "PackageInstallCompleted": "Instalacja {0} zako\u0144czona.", "PackageInstallFailed": "Instalacja {0} nieudana.", "PackageInstallCancelled": "Instalacja {0} anulowana.", - "SeriesYearToPresent": "{0} - Obecnych", + "SeriesYearToPresent": "{0} - Teraz", "ValueOneItem": "1 pozycja", "ValueOneSong": "1 utw\u00f3r", "ValueSongCount": "{0} utwory", @@ -288,21 +309,27 @@ "HeaderDeleteItems": "Usu\u0144 pliki", "ConfirmDeleteItems": "Usuni\u0119cie tej pozycji usunie j\u0105 zar\u00f3wno z systemu plik\u00f3w jak i z biblioteki medi\u00f3w. Czy chcesz kontynuowa\u0107?", "PleaseRestartServerName": "Prosz\u0119 ponownie uruchomi\u0107 serwer Emby - {0}", - "LabelSyncJobName": "Nazwa zadania synchronizacji", - "SyncJobCreated": "Utworzono zadanie synchronizacji", + "LabelSyncJobName": "Nazwa zadania:", + "SyncingDots": "Trwa synchronizacja...", + "ConvertingDots": "Trwa konwertowanie...", "LabelQuality": "Jako\u015b\u0107:", - "LabelSyncNoTargetsHelp": "Wygl\u0105da na to, \u017ce nie posiadasz \u017cadnych aplikacji obs\u0142uguj\u0105cych pobieranie w trybie offline.", + "LabelSyncNoTargetsHelp": "Wygl\u0105da na to, \u017ce nie posiadasz \u017cadnych aplikacji obs\u0142uguj\u0105cych pobrane media.", "DownloadingDots": "Trwa pobieranie...", "HeaderSyncRequiresSub": "Pobieranie wymaga aktywnej subskrypcji Emby Premium.", "LearnMore": "Dowiedz si\u0119 wi\u0119cej", "LabelProfile": "Profil:", "LabelBitrateMbps": "Przep\u0142ywno\u015b\u0107 (Mbps):", + "ConvertUnwatchedVideosOnly": "Konwertuj tylko nieobejrzane", "SyncUnwatchedVideosOnly": "Pobieraj tylko nieobejrzane wideo", + "ConvertUnwatchedVideosOnlyHelp": "Tylko nieobejrzane wideo b\u0119d\u0105 konwertowane.", "SyncUnwatchedVideosOnlyHelp": "Tylko filmy nieobejrzane zostan\u0105 pobrane, a obejrzane b\u0119d\u0105 sukcesywnie usuwane z urz\u0105dzenia.", "AutomaticallySyncNewContent": "Pobieraj now\u0105 zawarto\u015b\u0107 automatycznie", "AutomaticallySyncNewContentHelp": "Nowo dodana zawarto\u015b\u0107 zostanie automatycznie pobrana na urz\u0105dzenie.", + "AutomaticallyConvertNewContent": "Konwertuj automatycznie nowe media", + "AutomaticallyConvertNewContentHelp": "Nowe media dodane do tego folderu b\u0119d\u0105 konwertowane automatycznie.", "LabelItemLimit": "Limit pozycji:", - "LabelItemLimitHelp": "Opcjonalne. Ustaw limit liczby pozycji, kt\u00f3re zostan\u0105 pobrane.", + "ConvertItemLimitHelp": "Opcjonalne. Okre\u015bla maksymaln\u0105 liczb\u0119 konwertowanych pozycji.", + "DownloadItemLimitHelp": "Opcjonalne. Okre\u015bla maksymaln\u0105 liczb\u0119 pobieranych pozycji.", "PleaseSelectDeviceToSyncTo": "Wybierz urz\u0105dzenie, na kt\u00f3re chcesz pobra\u0107.", "Screenshots": "Zrzuty ekranu", "MoveRight": "Przesu\u0144 w prawo", @@ -420,31 +447,32 @@ "Connect": "Po\u0142acz", "HeaderMyMedia": "Moje media", "HeaderMyMediaSmall": "Moje media (ma\u0142e)", - "LatestFromLibrary": "Ostatnio dodane do {0}", + "LatestFromLibrary": "{0} ostatnio dodane", "ContinueWatching": "Kontynuuj odtwarzanie", "HeaderLatestChannelMedia": "Kana\u0142y ostatnio dodane", - "HeaderContinueWatching": "Kontynuuj ogl\u0105danie", + "HeaderContinueWatching": "Kontynuuj odtwarzanie", "HeaderContinueListening": "Kontynuuj s\u0142uchanie", "HeaderActiveRecordings": "Nagrania aktywne", "HeaderLatestRecordings": "Nagrania ostatnio dodane", - "LabelSyncTo": "Synchronizuj do:", + "LabelSyncTo": "Synchronizuj z:", + "LabelConvertTo": "Konwertuj do:", "Next": "Nast\u0119pny", "LabelSource": "\u0179r\u00f3d\u0142o:", "LabelVersion": "Wersja:", "AllLanguages": "Wszystkie j\u0119zyki", "Previous": "Poprzedni", "HeaderNextUp": "Do obejrzenia", - "HeaderLatestFrom": "Ostatnio dodane z {0}", + "HeaderLatestFrom": "{0} ostatnio dodane", "LabelHomeScreenSectionValue": "Sekcja ekranu startowego {0}:", "SettingsSaved": "Zapisano ustawienia", "None": "Brak", "More": "Wi\u0119cej", "Up": "W g\u00f3r\u0119", "Down": "W d\u00f3\u0142", + "Home": "Start", + "Favorites": "Ulubione", "HeaderHomeScreen": "Ekran startowy", - "HeaderHomeScreenContent": "Zawarto\u015b\u0107 ekranu startowego", "HeaderLatestChannelItems": "Kana\u0142y ostatnio odtwarzane", - "LabelSelectHomeScreenItemsFolders": "Zezwalaj na wy\u015bwietlanie na ekranie startowym pozycji z:", "HeaderLibraryOrder": "Kolejno\u015b\u0107 biblioteki", "HideWatchedContentFromLatestMedia": "Ukrywaj obejrzan\u0105 zawarto\u015b\u0107 na listach ostatnio dodanych", "HeaderOnNow": "Teraz", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Prosz\u0119 w\u0142o\u017cy\u0107 dysk, aby odtwarza\u0107 to wideo.", "Guide": "Przewodnik", "Suggestions": "Polecane", - "Favorites": "Ulubione", + "HeaderFavoriteCollections": "Kolekcje ulubione", + "HeaderFavoritePlaylists": "Listy ulubione", "Collections": "Kolekcje", "LabelSelectFolderGroups": "Grupuj zawarto\u015b\u0107 z nast\u0119puj\u0105cych folder\u00f3w w widokach taki, jak Filmy, Muzyka i Seriale:", "LabelSelectFolderGroupsHelp": "Foldery, kt\u00f3re nie zosta\u0142y zaznaczone, b\u0119d\u0105 wy\u015bwietlane w swoich w\u0142asnych, osobnych widokach.", + "Folders": "Foldery", + "DisplayInOtherHomeScreenSections": "Wy\u015bwietlaj na ekranie startowym sekcje Ostatnio dodane i Kontynuuj odtwarzanie", + "DisplayInMyMedia": "Wy\u015bwietlaj na ekranie startowym", "Shows": "Seriale", "HeaderLibraryFolders": "Foldery biblioteki", - "HeaderLandingScreens": "Ekrany pocz\u0105tkowe", - "LandingScreensHelp": "Okre\u015bla domy\u015blny,pocz\u0105tkowy ekran, wy\u015bwietlany po naci\u015bni\u0119ciu przycisku biblioteki.", "HeaderTermsOfPurchase": "Zasady zakupu", "PrivacyPolicy": "Polityka prywatno\u015bci", "TermsOfUse": "Zasady u\u017cytkowania", "RepeatMode": "Tryb powtarzania", "RepeatOne": "Powtarzaj jedno", "RepeatAll": "Powtarzaj wszystko", - "ConfirmEndPlayerSession": "Czy chcesz zamkn\u0105\u0107 Emby na tym urz\u0105dzeniu?", + "LabelDefaultScreen": "Ekran domy\u015blny:", + "ConfirmEndPlayerSession": "Czy chcesz zamkn\u0105\u0107 Emby na {0}?", "Yes": "Tak", "No": "Nie", "LiveTV": "Telewizja", @@ -476,7 +507,7 @@ "Recordings": "Nagrania", "MarkWatched": "Oznacz jako obejrzane", "ScanForNewAndUpdatedFiles": "Skanuj w poszukiwaniu nowych lub zaktualizowanych plik\u00f3w", - "DirectStreamHelp1": "Media s\u0105 kompatybilne z urz\u0105dzeniem w kwestii rozdzielczo\u015bci i typu (H.264, AC3, etc), ale kontener pliku jest niekompatybilny (.mkv, .avi, .wmv, etc). Wideo zostanie przepakowane w locie, przed rozpocz\u0119ciem transmisji do urz\u0105dzenia.", + "DirectStreamHelp1": "Media s\u0105 kompatybilne z urz\u0105dzeniem w kwestii rozdzielczo\u015bci i typu (H.264, AC3, etc), ale kontener pliku jest niekompatybilny (.mkv, .avi, .wmv, etc). Wideo zostanie przepakowane w locie przed rozpocz\u0119ciem transmisji do urz\u0105dzenia.", "DirectStreamHelp2": "Transmisja bezpo\u015brednia pliku u\u017cywa niewiele mocy przetwarzania, bez utraty jako\u015bci wideo.", "MediaIsBeingConverted": "Media b\u0119d\u0105 konwertowane do formatu kompatybilnego z urz\u0105dzeniem, na kt\u00f3ry b\u0119d\u0105 odtwarzane.", "StatsForNerds": "Statystyki dla maniak\u00f3w", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Nieobs\u0142ugiwany kodek wideo", "AudioCodecNotSupported": "Nieobs\u0142ugiwany kodek d\u017awi\u0119ku", "SubtitleCodecNotSupported": "Nieobs\u0142ugiwany format napis\u00f3w", + "DirectPlayError": "Nieudane odtwarzanie bezpo\u015brednie", "ContainerNotSupported": "Nieobs\u0142ugiwany format kontenera", "VideoLevelNotSupported": "Nieobs\u0142ugiwany poziom wideo", "AudioBitrateNotSupported": "Nieobs\u0142ugiwana przep\u0142ywno\u015b\u0107 d\u017awi\u0119ku", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "Podczas usuwania pozycji z serwera Emby wyst\u0105pi\u0142 b\u0142\u0105d. Upewnij si\u0119, \u017ce serwer ma uprawnienia do zapisu w folderze medi\u00f3w i spr\u00f3buj ponownie.", "NoSubtitles": "Brak napis\u00f3w", "Default": "Domy\u015blny", + "Absolute": "Bezwzgl\u0119dnie", "Smart": "Inteligentny", "Small": "Ma\u0142y", + "Smaller": "Mniejsze", "Medium": "\u015aredni", "Large": "Du\u017cy", "ExtraLarge": "Wielki", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Nieobs\u0142ugiwana liczba klatek referencyjnych wideo", "ErrorConnectServerUnreachable": "Podczas wykonywania \u017c\u0105danej operacji wyst\u0105pi\u0142 b\u0142\u0105d. Po\u0142\u0105czenie z Twojego serwera z serwerem Emby Connect z {0} by\u0142o niemo\u017cliwe. Upewnij si\u0119, \u017ce po\u0142\u0105czenie internetowe na Twoim serwerze jest aktywne i komunikacja jest dozwolona przez zapor\u0119 sieciow\u0105 i zainstalowane oprogramowanie antywirusowe.", "StopRecording": "Zatrzymaj nagrywanie", + "HeaderStopRecording": "Zatrzymaj nagrywanie", "ManageRecording": "Zarz\u0105dzaj nagrywaniem", "LabelDropImageHere": "Upu\u015b\u0107 obraz tutaj lub naci\u015bnij przycisk, aby przegl\u0105da\u0107.", "MessageFileReadError": "Podczas wczytywania plik\u00f3w wyst\u0105pi\u0142 b\u0142\u0105d. Spr\u00f3buj ponownie p\u00f3\u017aniej.", @@ -633,5 +668,22 @@ "Trailers": "Zwiastuny", "Extras": "Materia\u0142y dodatkowe", "ThemeSongs": "Motywy muzyczne", - "ThemeVideos": "Motywy wideo" + "ThemeVideos": "Motywy wideo", + "HeaderFavoriteMovies": "Filmy ulubione", + "HeaderFavoriteShows": "Seriale ulubione", + "HeaderFavoriteEpisodes": "Odcinki ulubione", + "HeaderFavoriteVideos": "Wideo ulubione", + "HeaderFavoriteGames": "Gry ulubione", + "HeaderFavoriteArtists": "Wykonawcy ulubieni", + "HeaderFavoriteAlbums": "Albumy ulubione", + "HeaderFavoriteSongs": "Utwory ulubione", + "Ascending": "Rosn\u0105co", + "Descending": "Malej\u0105co", + "ColorPrimaries": "Wzorce kolor\u00f3w", + "ColorSpace": "Przestrze\u0144 kolor\u00f3w", + "ColorTransfer": "Transfer kolor\u00f3w", + "VideoRange": "Zakres wideo", + "SeriesDisplayOrderHelp": "Sortuje odcinki po dacie emisji, kolejno\u015bci na DVD lub bezwzgl\u0119dnej numeracji.", + "PlaybackSettingsIntro": "W celu skonfigurowania domy\u015blnych ustawie\u0144 odtwarzania, zatrzymaj odtwarzanie, a nast\u0119pnie naci\u015bnij ikon\u0119 u\u017cytkownika w g\u00f3rnej prawej sekcji aplikacji.", + "SubtitleSettingsIntro": "W celu skonfigurowania domy\u015blnych ustawie\u0144 napis\u00f3w i j\u0119zyka, zatrzymaj odtwarzanie, a nast\u0119pnie naci\u015bnij ikon\u0119 u\u017cytkownika w g\u00f3rnej prawej sekcji aplikacji." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/pt-br.json b/dashboard-ui/bower_components/emby-webcomponents/strings/pt-br.json index 1a82436599..0afad2c90f 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/pt-br.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/pt-br.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Desbloqueie esta funcionalidade com uma pequena compra \u00fanica, ou com uma assinatura ativa do Emby Premiere.", "MessageUnlockAppWithSupporter": "Desbloqueie esta funcionalidade com uma assinatura ativa do Emby Premiere.", "MessageToValidateSupporter": "Se tiver uma assinatura ativa do Emby Premiere, assegure-se que configurou o Emby Premiere no Painel do Servidor Emby, que pode ser acessado clicando Emby Premiere no menu principal.", @@ -17,6 +19,7 @@ "EndsAtValue": "Termina \u00e0s {0}", "HeaderSelectDate": "Selecionar Data", "Watched": "Assistido(s)", + "AirDate": "Data da exibi\u00e7\u00e3o", "Played": "Reproduzido", "ButtonOk": "Ok", "ButtonCancel": "Cancelar", @@ -28,6 +31,12 @@ "RecordingScheduled": "Grava\u00e7\u00e3o agendada.", "SeriesRecordingScheduled": "Grava\u00e7\u00e3o de s\u00e9rie agendada.", "HeaderNewRecording": "Nova Grava\u00e7\u00e3o", + "WakeServer": "Acordar servidor", + "HeaderWakeServer": "Despertar Servidor", + "AttemptingWakeServer": "Tentando despertar o servidor. Por favor, aguarde...", + "WakeServerSuccess": "Deu certo!", + "HeaderCustomizeHomeScreen": "Personalizar Tela In\u00edcio", + "WakeServerError": "Pacotes de rede para despertar foram enviados para seu servidor, mas n\u00e3o foi poss\u00edvel conectar ao seu Servidor Emby. Sua m\u00e1quina pode necessitar um pouco mais de tempo para despertar, ou o Servidor Emby pode n\u00e3o estar rodando na m\u00e1quina.", "Sunday": "Domingo", "Monday": "Segunda-feira", "Tuesday": "Ter\u00e7a-feira", @@ -36,6 +45,13 @@ "Friday": "Sexta-feira", "Saturday": "S\u00e1bado", "Days": "Dias", + "SortByValue": "Classificar por {0}", + "LabelSortBy": "Classificar por:", + "LabelSortOrder": "Forma de classificar:", + "HeaderPhotoAlbums": "\u00c1lbuns de Fotos", + "Photos": "Fotos", + "HeaderAppearsOn": "Aparece em", + "List": "Lista", "RecordSeries": "Gravar s\u00e9rie", "HeaderCinemaMode": "Modo Cinema", "HeaderCloudSync": "Sincroniza\u00e7\u00e3o na Nuvem", @@ -138,7 +154,8 @@ "Shuffle": "Aleat\u00f3rio", "Identify": "Identificar", "EditImages": "Editar imagens", - "EditInfo": "Editar informa\u00e7\u00f5es", + "EditMetadata": "Editar metadados", + "Convert": "Converter", "Sync": "Sincronizar", "InstantMix": "Mix inst\u00e2ntaneo", "ViewAlbum": "Ver \u00e1lbum", @@ -149,6 +166,7 @@ "ResumeAt": "Retomar de {0}", "RemoveFromPlaylist": "Remover da lista de reprodu\u00e7\u00e3o", "RemoveFromCollection": "Remover da cole\u00e7\u00e3o", + "Sort": "Ordenar", "Trailer": "Trailer", "MarkPlayed": "Marcar como reproduzido", "MarkUnplayed": "Marcar como n\u00e3o-reproduzido", @@ -157,7 +175,7 @@ "TryMultiSelect": "Experimentar a Sele\u00e7\u00e3o M\u00faltipla", "TryMultiSelectMessage": "Para editar itens m\u00faltiplos de m\u00eddia, basta clicar e segurar qualquer capa e selecionar os itens que gostaria de gerenciar. Experimente!", "HeaderConfirmRecordingCancellation": "Confirmar Cancelamento da Grava\u00e7\u00e3o", - "MessageConfirmRecordingCancellation": "Deseja realmente cancelar esta grava\u00e7\u00e3o?", + "MessageConfirmRecordingCancellation": "Cancelar grava\u00e7\u00e3o?", "Error": "Erro", "VoiceInput": "Entrada de voz", "LabelContentType": "Tipo de conte\u00fado:", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "T\u00edtulo original:", "LabelSortTitle": "T\u00edtulo para ordena\u00e7\u00e3o:", "LabelDateAdded": "Data de adi\u00e7\u00e3o:", + "DateAdded": "Data da adi\u00e7\u00e3o", + "DatePlayed": "Data da reprodu\u00e7\u00e3o", "ConfigureDateAdded": "Configure como a data de adi\u00e7\u00e3o \u00e9 determinada no painel do Servidor Emby nas defini\u00e7\u00f5es de Biblioteca", "LabelStatus": "Status:", "LabelArtists": "Artistas:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "Artistas do \u00c1lbum:", "LabelAlbum": "\u00c1lbum:", "Artists": "Artistas", + "ImdbRating": "Avalia\u00e7\u00e3o IMDb", + "CommunityRating": "Avalia\u00e7\u00e3o da Comunidade", "LabelCommunityRating": "Avalia\u00e7\u00e3o da comunidade:", "LabelCriticRating": "Avalia\u00e7\u00e3o da cr\u00edtica:", + "CriticRating": "Avalia\u00e7\u00e3o da Cr\u00edtica", "LabelWebsite": "Website:", "LabelTagline": "Slogan:", "LabelOverview": "Sinopse:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Data do lan\u00e7amento:", "LabelYear": "Ano:", "LabelPlaceOfBirth": "Local de nascimento:", + "Aired": "Exibido", "LabelAirDays": "Dias da exibi\u00e7\u00e3o:", "LabelAirTime": "Hor\u00e1rio:", "LabelRuntimeMinutes": "Dura\u00e7\u00e3o (minutos):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Propor\u00e7\u00e3o da imagem original:", "Label3DFormat": "Formato 3D:", "FormatValue": "Formato: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Combina\u00e7\u00e3o perfeita", "EnableExternalVideoPlayers": "Ativar reprodutores de v\u00eddeo externos", "EnableExternalVideoPlayersHelp": "Um menu do reprodutor externo ser\u00e1 exibido ao iniciar a reprodu\u00e7\u00e3o do v\u00eddeo.", - "HeaderAlternateEpisodeNumbers": "N\u00fameros de Epis\u00f3dios Alternativos", - "LabelDvdSeasonNumber": "N\u00famero da temporada do Dvd:", - "LabelDvdEpisodeNumber": "N\u00famero do epis\u00f3dio do Dvd:", - "LabelAbsoluteEpisodeNumber": "N\u00famero absoluto do epis\u00f3dio:", "HeaderSpecialEpisodeInfo": "Informa\u00e7\u00e3o do Epis\u00f3dio Especial", "LabelAirsBeforeSeason": "Exibido antes da temporada:", "LabelAirsAfterSeason": "Exibido depois da temporada:", @@ -241,6 +261,7 @@ "ProductionLocations": "Locais de produ\u00e7\u00e3o", "BirthLocation": "Local de nascimento", "ParentalRating": "Classifica\u00e7\u00e3o Et\u00e1ria", + "PlayCount": "N\u00famero de Reprodu\u00e7\u00f5es", "Name": "Nome", "Overview": "Sinopse", "LabelType": "Tipo:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "Ao excluir estes itens voc\u00ea os excluir\u00e1 do sistema de arquivos e de sua biblioteca de m\u00eddias. Deseja realmente continuar?", "PleaseRestartServerName": "Por favor reinicie o Servidor Emby - {0}.", "LabelSyncJobName": "Nome da tarefa de sincroniza\u00e7\u00e3o:", - "SyncJobCreated": "Tarefa de sincroniza\u00e7\u00e3o criada", + "SyncingDots": "Sincronizando...", + "ConvertingDots": "Convertendo...", "LabelQuality": "Qualidade:", "LabelSyncNoTargetsHelp": "Parece que voc\u00ea n\u00e3o possui nenhuma app que suporta o download offline.", "DownloadingDots": "Transferindo...", @@ -297,12 +319,17 @@ "LearnMore": "Saiba mais", "LabelProfile": "Perfil:", "LabelBitrateMbps": "Taxa (Mbps):", + "ConvertUnwatchedVideosOnly": "Converter apenas v\u00eddeos n\u00e3o assistidos", "SyncUnwatchedVideosOnly": "Transferir apenas v\u00eddeos n\u00e3o assistidos", + "ConvertUnwatchedVideosOnlyHelp": "Apenas v\u00eddeos n\u00e3o assistidos ser\u00e3o convertidos.", "SyncUnwatchedVideosOnlyHelp": "Apenas v\u00eddeos n\u00e3o assistidos ser\u00e3o transferidos, e os v\u00eddeos ser\u00e3o removidos do dispositivo assim que forem assistidos.", "AutomaticallySyncNewContent": "Transferir novo conte\u00fado automaticamente", "AutomaticallySyncNewContentHelp": "Novo conte\u00fado adicionado a esta pasta ser\u00e1 automaticamente transferido para o dispositivo.", + "AutomaticallyConvertNewContent": "Converter novo conte\u00fado automaticamente", + "AutomaticallyConvertNewContentHelp": "Novo conte\u00fado adicionado a esta pasta ser\u00e1 automaticamente convertido.", "LabelItemLimit": "Limite de itens:", - "LabelItemLimitHelp": "Opcional. Defina o n\u00famero limite de itens que ser\u00e3o transferidos.", + "ConvertItemLimitHelp": "Opcional. Definir um limite para o n\u00famero de itens que ser\u00e3o convertidos.", + "DownloadItemLimitHelp": "Opcional. Definir um limite para o n\u00famero de itens que ser\u00e3o baixados.", "PleaseSelectDeviceToSyncTo": "Por favor, selecione um dispositivo para transferir.", "Screenshots": "Screenshots", "MoveRight": "Mover para direita", @@ -421,13 +448,14 @@ "HeaderMyMedia": "Minha M\u00eddia", "HeaderMyMediaSmall": "Minha M\u00eddia (pequeno)", "LatestFromLibrary": "Mais Recentes {0}", - "ContinueWatching": "Continue watching", + "ContinueWatching": "Continuar assistindo", "HeaderLatestChannelMedia": "Itens de Canais Recentes", "HeaderContinueWatching": "Continuar Assistindo", "HeaderContinueListening": "Continuar Escutando", "HeaderActiveRecordings": "Grava\u00e7\u00f5es Ativas", "HeaderLatestRecordings": "Grava\u00e7\u00f5es Recentes", "LabelSyncTo": "Sincronizar para:", + "LabelConvertTo": "Converter para:", "Next": "Pr\u00f3ximo", "LabelSource": "Fonte:", "LabelVersion": "Vers\u00e3o:", @@ -441,10 +469,10 @@ "More": "Mais", "Up": "Para cima", "Down": "Para baixo", + "Home": "In\u00edcio", + "Favorites": "Favoritos", "HeaderHomeScreen": "Tela In\u00edcio", - "HeaderHomeScreenContent": "Conte\u00fado fa Tela In\u00edcio", "HeaderLatestChannelItems": "Itens de Canais Recentes", - "LabelSelectHomeScreenItemsFolders": "Permitir aos itens aparecer na minha tela in\u00edcio de:", "HeaderLibraryOrder": "Ordem da Biblioteca", "HideWatchedContentFromLatestMedia": "Ocultar conte\u00fado assistido das m\u00eddias recentes", "HeaderOnNow": "Em Exibi\u00e7\u00e3o", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Por favor, insira o disco para reproduzir este v\u00eddeo.", "Guide": "Guia", "Suggestions": "Sugest\u00f5es", - "Favorites": "Favoritos", + "HeaderFavoriteCollections": "Colet\u00e2neas Favoritas", + "HeaderFavoritePlaylists": "Listas de Reprodu\u00e7\u00e3o Favoritas", "Collections": "Colet\u00e2neas", "LabelSelectFolderGroups": "Agrupar automaticamente o conte\u00fado das seguintes pastas dentro das visualiza\u00e7\u00f5es como Filmes, M\u00fasicas e TV:", "LabelSelectFolderGroupsHelp": "Pastas que n\u00e3o est\u00e3o marcadas ser\u00e3o exibidas em sua pr\u00f3pria visualiza\u00e7\u00e3o.", + "Folders": "Pastas", + "DisplayInOtherHomeScreenSections": "Exibir nas se\u00e7\u00f5es da tela in\u00edcio como m\u00eddia recente e continuar assistindo", + "DisplayInMyMedia": "Exibir na tela in\u00edcio", "Shows": "S\u00e9ries", "HeaderLibraryFolders": "Pastas da Biblioteca", - "HeaderLandingScreens": "Telas de Entrada", - "LandingScreensHelp": "Selecione a tela de entrada padr\u00e3o quando clicar em uma biblioteca.", "HeaderTermsOfPurchase": "Termos de Compra", "PrivacyPolicy": "Pol\u00edtica de privacidade", "TermsOfUse": "Termos de uso", "RepeatMode": "Modo de repeti\u00e7\u00e3o", "RepeatOne": "Repetir uma", "RepeatAll": "Repetir todas", - "ConfirmEndPlayerSession": "Deseja realmente fechar o Emby no dispositivo?", + "LabelDefaultScreen": "Tela padr\u00e3o:", + "ConfirmEndPlayerSession": "Deseja realmente desligar o Emby em {0}?", "Yes": "Sim", "No": "N\u00e3o", "LiveTV": "TV ao Vivo", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Codec de v\u00eddeo n\u00e3o suportado", "AudioCodecNotSupported": "Codec de \u00e1udio n\u00e3o suportado", "SubtitleCodecNotSupported": "Formato da legenda n\u00e3o suportado", + "DirectPlayError": "Erro de reprodu\u00e7\u00e3o direta", "ContainerNotSupported": "Container n\u00e3o suportado", "VideoLevelNotSupported": "N\u00edvel do v\u00eddeo n\u00e3o suportado", "AudioBitrateNotSupported": "Taxa de \u00e1udio n\u00e3o suportada", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "Ocorreu um erro ao excluir o item do Servidor Emby. Por favor, verifique se o Servidor Emby possui acesso de grava\u00e7\u00e3o na pasta de m\u00eddia e tente novamente,", "NoSubtitles": "Sem Legenda", "Default": "Padr\u00e3o", + "Absolute": "Absoluto", "Smart": "Inteligente", "Small": "Pequena", + "Smaller": "Menor", "Medium": "M\u00e9dia", "Large": "Grande", "ExtraLarge": "Extra grande", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "N\u00famero de quadros de refer\u00eancia de v\u00eddeo n\u00e3o suportado", "ErrorConnectServerUnreachable": "Ocorreu um erro ao executar a opera\u00e7\u00e3o solicitada. Seu servidor n\u00e3o pode contactar nosso Emby Connect Server em {0}. Por favor, verifique se seu servidor possui uma conex\u00e3o de internet ativa e se as comunica\u00e7\u00f5es est\u00e3o liberadas pelo firewall ou software de seguran\u00e7a instalados.", "StopRecording": "Parar grava\u00e7\u00e3o", + "HeaderStopRecording": "Parar Grava\u00e7\u00e3o", "ManageRecording": "Gerenciar grava\u00e7\u00e3o", "LabelDropImageHere": "Soltar a imagem aqui, ou clicar para procurar.", "MessageFileReadError": "Ocorreu um erro ao ler o arquivo. Por favor, tente novamente.", @@ -623,15 +658,32 @@ "ShowYear": "Exibir ano", "Filters": "Filtros", "Unplayed": "N\u00e3o Reproduzido", - "LabelTVHomeScreen": "TV mode home screen:", + "LabelTVHomeScreen": "Tela in\u00edcio do modo TV:", "Horizontal": "Horizontal", "Vertical": "Vertical", - "GroupBySeries": "Group by series", - "HeaderVideoType": "Video Type", - "HeaderSeriesStatus": "Series Status", - "Features": "Features", + "GroupBySeries": "Agrupar por s\u00e9ries", + "HeaderVideoType": "Tipo de V\u00eddeo", + "HeaderSeriesStatus": "Status das S\u00e9ries", + "Features": "Recursos", "Trailers": "Trailers", "Extras": "Extras", - "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeSongs": "M\u00fasicas Tema", + "ThemeVideos": "V\u00eddeos Tema", + "HeaderFavoriteMovies": "Filmes Favoritos", + "HeaderFavoriteShows": "S\u00e9ries Favoritas", + "HeaderFavoriteEpisodes": "Epis\u00f3dios Favoritos", + "HeaderFavoriteVideos": "V\u00eddeos Favoritos", + "HeaderFavoriteGames": "Jogos Favoritos", + "HeaderFavoriteArtists": "Artistas Favoritos", + "HeaderFavoriteAlbums": "\u00c1lbuns Favoritos", + "HeaderFavoriteSongs": "M\u00fasicas Favoritas", + "Ascending": "Ascendente", + "Descending": "Descendente", + "ColorPrimaries": "Cores prim\u00e1rias", + "ColorSpace": "Espa\u00e7o da cor", + "ColorTransfer": "Transfer\u00eancia da cor", + "VideoRange": "Faixa de v\u00eddeo", + "SeriesDisplayOrderHelp": "Ordenar epis\u00f3dios por data de exibi\u00e7\u00e3o, ordem de dvd ou n\u00fameros absolutos.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/pt-pt.json b/dashboard-ui/bower_components/emby-webcomponents/strings/pt-pt.json index 76d2d47988..8aa5b73615 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/pt-pt.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/pt-pt.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", @@ -17,6 +19,7 @@ "EndsAtValue": "Ends at {0}", "HeaderSelectDate": "Selecionar Data", "Watched": "Watched", + "AirDate": "Air date", "Played": "Played", "ButtonOk": "Ok", "ButtonCancel": "Cancelar", @@ -28,6 +31,12 @@ "RecordingScheduled": "Grava\u00e7\u00e3o agendada.", "SeriesRecordingScheduled": "Series recording scheduled.", "HeaderNewRecording": "Nova Grava\u00e7\u00e3o", + "WakeServer": "Wake server", + "HeaderWakeServer": "Wake Server", + "AttemptingWakeServer": "Attempting to wake server. Please wait...", + "WakeServerSuccess": "Success!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "Domingo", "Monday": "Segunda", "Tuesday": "Ter\u00e7a", @@ -36,6 +45,13 @@ "Friday": "Sexta", "Saturday": "S\u00e1bado", "Days": "Dias", + "SortByValue": "Sort by {0}", + "LabelSortBy": "Sort by:", + "LabelSortOrder": "Sort order:", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "Photos", + "HeaderAppearsOn": "Appears On", + "List": "List", "RecordSeries": "Record series", "HeaderCinemaMode": "Cinema Mode", "HeaderCloudSync": "Cloud Sync", @@ -138,7 +154,8 @@ "Shuffle": "Aleat\u00f3rio", "Identify": "Identificar", "EditImages": "Edit images", - "EditInfo": "Edit info", + "EditMetadata": "Edit metadata", + "Convert": "Convert", "Sync": "Sync", "InstantMix": "Mix inst\u00e2ntaneo", "ViewAlbum": "View album", @@ -149,6 +166,7 @@ "ResumeAt": "Resume from {0}", "RemoveFromPlaylist": "Remove from playlist", "RemoveFromCollection": "Remove from collection", + "Sort": "Sort", "Trailer": "Trailer", "MarkPlayed": "Mark played", "MarkUnplayed": "Mark unplayed", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "Original title:", "LabelSortTitle": "Sort title:", "LabelDateAdded": "Data adicionado:", + "DateAdded": "Date added", + "DatePlayed": "Date played", "ConfigureDateAdded": "Configure how date added is determined in the Emby Server dashboard under Library settings", "LabelStatus": "Estado:", "LabelArtists": "Artistas:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "Artistas do \u00c1lbum:", "LabelAlbum": "\u00c1lbum:", "Artists": "Artists", + "ImdbRating": "IMDb rating", + "CommunityRating": "Community rating", "LabelCommunityRating": "Avalia\u00e7\u00e3o da comunidade:", "LabelCriticRating": "Avalia\u00e7\u00e3o da cr\u00edtica:", + "CriticRating": "Critic rating", "LabelWebsite": "Website:", "LabelTagline": "Slogan:", "LabelOverview": "Sinopse:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Data do lan\u00e7amento:", "LabelYear": "Year:", "LabelPlaceOfBirth": "Local de nascimento:", + "Aired": "Aired", "LabelAirDays": "Dias da exibi\u00e7\u00e3o:", "LabelAirTime": "Hor\u00e1rio:", "LabelRuntimeMinutes": "Dura\u00e7\u00e3o (minutos):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Propor\u00e7\u00e3o da imagem original:", "Label3DFormat": "Formato 3D:", "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Perfect match", "EnableExternalVideoPlayers": "Enable external video players", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "N\u00fameros de Epis\u00f3dios Alternativos", - "LabelDvdSeasonNumber": "N\u00famero da temporada do DVD:", - "LabelDvdEpisodeNumber": "N\u00famero do epis\u00f3dio do DVD:", - "LabelAbsoluteEpisodeNumber": "N\u00famero absoluto do epis\u00f3dio:", "HeaderSpecialEpisodeInfo": "Informa\u00e7\u00e3o do Epis\u00f3dio Especial", "LabelAirsBeforeSeason": "Exibido antes da temporada:", "LabelAirsAfterSeason": "Exibido depois da temporada:", @@ -241,6 +261,7 @@ "ProductionLocations": "Production locations", "BirthLocation": "Birth location", "ParentalRating": "Parental Rating", + "PlayCount": "Play count", "Name": "Name", "Overview": "Overview", "LabelType": "Tipo:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "Ao excluir estes itens voc\u00ea os excluir\u00e1 do sistema de arquivos e de sua biblioteca multim\u00e9dia. Deseja realmente continuar?", "PleaseRestartServerName": "Please restart Emby Server - {0}.", "LabelSyncJobName": "Sync job name:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "Quality:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", "DownloadingDots": "Downloading...", @@ -297,12 +319,17 @@ "LearnMore": "Saiba mais", "LabelProfile": "Profile:", "LabelBitrateMbps": "Bitrate (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "Download unwatched videos only", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", "AutomaticallySyncNewContent": "Automatically download new content", "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "Item limit:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "Please select a device to download to.", "Screenshots": "Screenshots", "MoveRight": "Move right", @@ -428,6 +455,7 @@ "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", "LabelSyncTo": "Sync to:", + "LabelConvertTo": "Convert to:", "Next": "Next", "LabelSource": "Source:", "LabelVersion": "Version:", @@ -441,10 +469,10 @@ "More": "Mais", "Up": "Up", "Down": "Down", + "Home": "Home", + "Favorites": "Favorites", "HeaderHomeScreen": "Home Screen", - "HeaderHomeScreenContent": "Home Screen Content", "HeaderLatestChannelItems": "Latest Channel Items", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "Library Order", "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", "HeaderOnNow": "On Now", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.", "Guide": "Guide", "Suggestions": "Suggestions", - "Favorites": "Favorites", + "HeaderFavoriteCollections": "Favorite Collections", + "HeaderFavoritePlaylists": "Favorite Playlists", "Collections": "Collections", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", "Shows": "Shows", "HeaderLibraryFolders": "Library Folders", - "HeaderLandingScreens": "Landing Screens", - "LandingScreensHelp": "Select the default landing screen when clicking on a library.", "HeaderTermsOfPurchase": "Terms of Purchase", "PrivacyPolicy": "Privacy policy", "TermsOfUse": "Terms of use", "RepeatMode": "Repeat mode", "RepeatOne": "Repeat one", "RepeatAll": "Repeat all", - "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", + "LabelDefaultScreen": "Default screen:", + "ConfirmEndPlayerSession": "Would you like to shutdown Emby on {0}?", "Yes": "Yes", "No": "No", "LiveTV": "Live TV", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video codec not supported", "AudioCodecNotSupported": "Audio codec not supported", "SubtitleCodecNotSupported": "Subtitle format not supported", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Container not supported", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "No subtitles", "Default": "Default", + "Absolute": "Absolute", "Smart": "Smart", "Small": "Small", + "Smaller": "Smaller", "Medium": "Medium", "Large": "Large", "ExtraLarge": "Extra large", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Stop recording", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Manage recording", "LabelDropImageHere": "Drop image here, or click to browse.", "MessageFileReadError": "There was an error reading the file. Please try again.", @@ -633,5 +668,22 @@ "Trailers": "Trailers", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteVideos": "Favorite Videos", + "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteSongs": "Favorite Songs", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Color space", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ro.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ro.json index 7237fff4e9..78ddc92edc 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/ro.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ro.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", @@ -17,6 +19,7 @@ "EndsAtValue": "Ends at {0}", "HeaderSelectDate": "Select Date", "Watched": "Watched", + "AirDate": "Air date", "Played": "Played", "ButtonOk": "Ok", "ButtonCancel": "Anuleaza", @@ -28,6 +31,12 @@ "RecordingScheduled": "Recording scheduled.", "SeriesRecordingScheduled": "Series recording scheduled.", "HeaderNewRecording": "New Recording", + "WakeServer": "Wake server", + "HeaderWakeServer": "Wake Server", + "AttemptingWakeServer": "Attempting to wake server. Please wait...", + "WakeServerSuccess": "Success!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "Duminica", "Monday": "Luni", "Tuesday": "Marti", @@ -36,6 +45,13 @@ "Friday": "Vineri", "Saturday": "Sambata", "Days": "Days", + "SortByValue": "Sort by {0}", + "LabelSortBy": "Sort by:", + "LabelSortOrder": "Sort order:", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "Photos", + "HeaderAppearsOn": "Appears On", + "List": "List", "RecordSeries": "Record series", "HeaderCinemaMode": "Cinema Mode", "HeaderCloudSync": "Cloud Sync", @@ -138,7 +154,8 @@ "Shuffle": "Shuffle", "Identify": "Identify", "EditImages": "Edit images", - "EditInfo": "Edit info", + "EditMetadata": "Edit metadata", + "Convert": "Convert", "Sync": "Sync", "InstantMix": "Instant mix", "ViewAlbum": "View album", @@ -149,6 +166,7 @@ "ResumeAt": "Resume from {0}", "RemoveFromPlaylist": "Remove from playlist", "RemoveFromCollection": "Remove from collection", + "Sort": "Sort", "Trailer": "Trailer", "MarkPlayed": "Mark played", "MarkUnplayed": "Mark unplayed", @@ -157,7 +175,7 @@ "TryMultiSelect": "Try Multi-Select", "TryMultiSelectMessage": "To edit multiple media items, just click and hold any poster and select the items you want to manage. Try it!", "HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation", - "MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?", + "MessageConfirmRecordingCancellation": "Cancel recording?", "Error": "Error", "VoiceInput": "Voice Input", "LabelContentType": "Tip continut:", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "Original title:", "LabelSortTitle": "Sort title:", "LabelDateAdded": "Date added:", + "DateAdded": "Date added", + "DatePlayed": "Date played", "ConfigureDateAdded": "Configure how date added is determined in the Emby Server dashboard under Library settings", "LabelStatus": "Status:", "LabelArtists": "Artisti:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "Artists": "Artists", + "ImdbRating": "IMDb rating", + "CommunityRating": "Community rating", "LabelCommunityRating": "Community rating:", "LabelCriticRating": "Critic rating:", + "CriticRating": "Critic rating", "LabelWebsite": "Website:", "LabelTagline": "Tagline:", "LabelOverview": "Overview:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Release date:", "LabelYear": "Year:", "LabelPlaceOfBirth": "Place of birth:", + "Aired": "Aired", "LabelAirDays": "Air days:", "LabelAirTime": "Air time:", "LabelRuntimeMinutes": "Run time (minutes):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Original aspect ratio:", "Label3DFormat": "3D format:", "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Perfect match", "EnableExternalVideoPlayers": "Enable external video players", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Alternate Episode Numbers", - "LabelDvdSeasonNumber": "Dvd season number:", - "LabelDvdEpisodeNumber": "Dvd episode number:", - "LabelAbsoluteEpisodeNumber": "Absolute episode number:", "HeaderSpecialEpisodeInfo": "Special Episode Info", "LabelAirsBeforeSeason": "Airs before season:", "LabelAirsAfterSeason": "Airs after season:", @@ -234,13 +254,14 @@ "Continuing": "Continua", "Ended": "S-a sfarsit", "HeaderEnabledFields": "Enabled Fields", - "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent it's data from being changed.", + "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent its data from being changed.", "Backdrops": "Backdrops", "Images": "Images", "Runtime": "Runtime", "ProductionLocations": "Production locations", "BirthLocation": "Birth location", "ParentalRating": "Parental Rating", + "PlayCount": "Play count", "Name": "Name", "Overview": "Overview", "LabelType": "Type:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "Deleting these items will delete them from both the file system and your media library. Are you sure you wish to continue?", "PleaseRestartServerName": "Please restart Emby Server - {0}.", "LabelSyncJobName": "Sync job name:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "Quality:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", "DownloadingDots": "Downloading...", @@ -297,12 +319,17 @@ "LearnMore": "Learn more", "LabelProfile": "Profile:", "LabelBitrateMbps": "Bitrate (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "Download unwatched videos only", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", "AutomaticallySyncNewContent": "Automatically download new content", "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "Item limit:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "Please select a device to download to.", "Screenshots": "Screenshots", "MoveRight": "Move right", @@ -428,6 +455,7 @@ "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", "LabelSyncTo": "Sync to:", + "LabelConvertTo": "Convert to:", "Next": "Next", "LabelSource": "Source:", "LabelVersion": "Version:", @@ -441,10 +469,10 @@ "More": "More", "Up": "Up", "Down": "Down", + "Home": "Home", + "Favorites": "Favorites", "HeaderHomeScreen": "Home Screen", - "HeaderHomeScreenContent": "Home Screen Content", "HeaderLatestChannelItems": "Latest Channel Items", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "Library Order", "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", "HeaderOnNow": "On Now", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.", "Guide": "Guide", "Suggestions": "Suggestions", - "Favorites": "Favorites", + "HeaderFavoriteCollections": "Favorite Collections", + "HeaderFavoritePlaylists": "Favorite Playlists", "Collections": "Collections", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", "Shows": "Shows", "HeaderLibraryFolders": "Library Folders", - "HeaderLandingScreens": "Landing Screens", - "LandingScreensHelp": "Select the default landing screen when clicking on a library.", "HeaderTermsOfPurchase": "Terms of Purchase", "PrivacyPolicy": "Privacy policy", "TermsOfUse": "Terms of use", "RepeatMode": "Repeat mode", "RepeatOne": "Repeat one", "RepeatAll": "Repeat all", - "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", + "LabelDefaultScreen": "Default screen:", + "ConfirmEndPlayerSession": "Would you like to shutdown Emby on {0}?", "Yes": "Yes", "No": "No", "LiveTV": "Live TV", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video codec not supported", "AudioCodecNotSupported": "Audio codec not supported", "SubtitleCodecNotSupported": "Subtitle format not supported", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Container not supported", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "No subtitles", "Default": "Default", + "Absolute": "Absolute", "Smart": "Smart", "Small": "Small", + "Smaller": "Smaller", "Medium": "Medium", "Large": "Large", "ExtraLarge": "Extra large", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Stop recording", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Manage recording", "LabelDropImageHere": "Drop image here, or click to browse.", "MessageFileReadError": "There was an error reading the file. Please try again.", @@ -633,5 +668,22 @@ "Trailers": "Trailers", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteVideos": "Favorite Videos", + "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteSongs": "Favorite Songs", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Color space", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ 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 f08b02e256..dfa4876926 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "\u0420\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0439\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u0434\u043d\u043e\u043a\u0440\u0430\u0442\u043d\u043e\u0439 \u043e\u043f\u043b\u0430\u0442\u044b, \u0438\u043b\u0438 \u0441 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u043e\u0439 Emby Premiere .", "MessageUnlockAppWithSupporter": "\u0420\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0439\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0441 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u043e\u0439 Emby Premiere.", "MessageToValidateSupporter": "\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0430\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0430 Emby Premiere, \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e Emby Premiere \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0432 \u0432\u0430\u0448\u0435\u0439 \u041f\u0430\u043d\u0435\u043b\u0438 Emby Server, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043f\u043e \u0449\u0435\u043b\u0447\u043a\u0443 \u043f\u043e Emby Premiere \u0432 \u0433\u043b\u0430\u0432\u043d\u043e\u043c \u043c\u0435\u043d\u044e.", @@ -17,6 +19,7 @@ "EndsAtValue": "\u041a\u043e\u043d\u0435\u0446 \u0432 {0}", "HeaderSelectDate": "\u0412\u044b\u0431\u043e\u0440 \u0434\u0430\u0442\u044b", "Watched": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e", + "AirDate": "\u0414\u0430\u0442\u0430 \u044d\u0444\u0438\u0440\u0430", "Played": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u043e", "ButtonOk": "\u041e\u043a", "ButtonCancel": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c", @@ -28,6 +31,12 @@ "RecordingScheduled": "\u0417\u0430\u043f\u0438\u0441\u044c \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430.", "SeriesRecordingScheduled": "\u0417\u0430\u043f\u0438\u0441\u044c \u0441\u0435\u0440\u0438\u0430\u043b\u0430 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430.", "HeaderNewRecording": "\u041d\u043e\u0432\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c", + "WakeServer": "\u0420\u0430\u0437\u0431\u0443\u0434\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440", + "HeaderWakeServer": "\u041f\u0440\u043e\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430", + "AttemptingWakeServer": "\u0418\u0434\u0451\u0442 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0440\u0430\u0437\u0431\u0443\u0434\u0438\u0442\u044c \u0432\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440. \u0416\u0434\u0438\u0442\u0435...", + "WakeServerSuccess": "\u0423\u0441\u043f\u0435\u0448\u043d\u043e!", + "HeaderCustomizeHomeScreen": "\u041f\u043e\u0434\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0430", + "WakeServerError": "\u041f\u0430\u043a\u0435\u0442\u044b Wake On LAN \u0431\u044b\u043b\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u043d\u0430 \u0432\u0430\u0448\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443, \u043e\u0434\u043d\u0430\u043a\u043e, \u043c\u044b \u043d\u0435 \u0441\u043c\u043e\u0433\u043b\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u0441 Emby Server. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u0430\u0448\u0435\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u044f, \u0438\u043b\u0438 Emby Server \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435.", "Sunday": "\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435", "Monday": "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a", "Tuesday": "\u0432\u0442\u043e\u0440\u043d\u0438\u043a", @@ -36,6 +45,13 @@ "Friday": "\u043f\u044f\u0442\u043d\u0438\u0446\u0430", "Saturday": "\u0441\u0443\u0431\u0431\u043e\u0442\u0430", "Days": "\u0414\u043d\u0438", + "SortByValue": "\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u043e {0}", + "LabelSortBy": "\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u043e:", + "LabelSortOrder": "\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438:", + "HeaderPhotoAlbums": "\u0424\u043e\u0442\u043e\u0430\u043b\u044c\u0431\u043e\u043c\u044b", + "Photos": "\u0424\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438", + "HeaderAppearsOn": "\u0424\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u0442 \u0432", + "List": "\u0421\u043f\u0438\u0441\u043e\u043a", "RecordSeries": "\u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0435\u0440\u0438\u0430\u043b", "HeaderCinemaMode": "\u0420\u0435\u0436\u0438\u043c \u043a\u0438\u043d\u043e\u0437\u0430\u043b\u0430", "HeaderCloudSync": "\u041e\u0431\u043b\u0430\u0447\u043d\u0430\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f", @@ -57,7 +73,7 @@ "HeaderConvertYourRecordings": "\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0430\u0448\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439", "Record": "\u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c", "Save": "\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c", - "Edit": "\u041f\u0440\u0430\u0432\u0438\u0442\u044c", + "Edit": "\u041f\u0440\u0430\u0432\u043a\u0430", "Download": "\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c", "Downloaded": "\u0417\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0435", "Downloading": "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f", @@ -65,8 +81,8 @@ "Delete": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c", "HeaderDeleteItem": "\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430", "ConfirmDeleteItem": "\u041f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u043e\u043d \u0443\u0434\u0430\u043b\u0438\u0442\u0441\u044f \u0438 \u0438\u0437 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0438 \u0438\u0437 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438. \u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c?", - "Refresh": "\u041f\u043e\u0434\u043d\u043e\u0432\u0438\u0442\u044c", - "RefreshQueued": "\u041f\u043e\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438.", + "Refresh": "\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c", + "RefreshQueued": "\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438.", "AddToCollection": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e", "HeaderAddToCollection": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e", "NewCollection": "\u041d\u043e\u0432\u0430\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f", @@ -84,8 +100,8 @@ "SearchForCollectionInternetMetadata": "\u0418\u0441\u043a\u0430\u0442\u044c \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435", "DisplayMissingEpisodesWithinSeasons": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0441\u0435\u0437\u043e\u043d\u043e\u0432", "DisplayMissingEpisodesWithinSeasonsHelp": "\u042d\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0434\u043b\u044f \u0422\u0412-\u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 Emby Server.", - "EnableThemeSongs": "\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0439", - "EnableBackdrops": "\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u043d\u0438\u043a\u043e\u0432", + "EnableThemeSongs": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438", + "EnableBackdrops": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0437\u0430\u0434\u043d\u0438\u043a\u0438", "EnableThemeSongsHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0444\u043e\u043d\u043e\u043c \u043f\u0440\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438.", "EnableBackdropsHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u0437\u0430\u0434\u043d\u0438\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0444\u043e\u043d\u043e\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043f\u0440\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438.", "EnableThemeVideos": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u0438\u0434\u0435\u043e", @@ -115,30 +131,31 @@ "MessageDownloadQueued": "\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438.", "EditSubtitles": "\u041f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044b", "UnlockGuide": "\u0420\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043b\u0435\u0433\u0438\u0434", - "RefreshMetadata": "\u041f\u043e\u0434\u043d\u043e\u0432\u0438\u0442\u044c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435", + "RefreshMetadata": "\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435", "ReplaceExistingImages": "\u0417\u0430\u043c\u0435\u043d\u0430 \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432", "ReplaceAllMetadata": "\u0417\u0430\u043c\u0435\u043d\u0430 \u0432\u0441\u0435\u0445 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445", "SearchForMissingMetadata": "\u041f\u043e\u0438\u0441\u043a \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445", - "LabelRefreshMode": "\u0420\u0435\u0436\u0438\u043c \u043f\u043e\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f:", + "LabelRefreshMode": "\u0420\u0435\u0436\u0438\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f:", "NoItemsFound": "\u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e.", "HeaderSaySomethingLike": "\u0421\u043a\u0430\u0436\u0438\u0442\u0435 \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435...", "ButtonTryAgain": "\u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043f\u043e\u043f\u044b\u0442\u043a\u0443", "HeaderYouSaid": "\u0412\u044b \u0441\u043a\u0430\u0437\u0430\u043b\u0438...", "MessageWeDidntRecognizeCommand": "\u0414\u0430\u043d\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043d\u0435 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u043d\u0430.", - "MessageIfYouBlockedVoice": "\u0415\u0441\u043b\u0438 \u043e\u0442\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e, \u043f\u0435\u0440\u0435\u0434 \u043d\u043e\u0432\u043e\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u043e\u0439 \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 \u043f\u0435\u0440\u0435\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430.", + "MessageIfYouBlockedVoice": "\u0415\u0441\u043b\u0438 \u043e\u0442\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e, \u043f\u0435\u0440\u0435\u0434 \u043d\u043e\u0432\u043e\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u043e\u0439 \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.", "ValueDiscNumber": "\u0414\u0438\u0441\u043a {0}", "Unrated": "\u0411\u0435\u0437 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438", "Favorite": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u043e\u0435", "Like": "\u041d\u0440\u0430\u0432\u0438\u0442\u0441\u044f", "Dislike": "\u041d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f", - "RefreshDialogHelp": "\u041f\u043e\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0438 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0443\u0441\u043b\u0443\u0433\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432 \u041f\u0430\u043d\u0435\u043b\u0438 Emby Server.", + "RefreshDialogHelp": "\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0438 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0443\u0441\u043b\u0443\u0433\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432 \u041f\u0430\u043d\u0435\u043b\u0438 Emby Server.", "Open": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c", "Play": "\u0412\u043e\u0441\u043f\u0440.", "AddToPlayQueue": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f", "Shuffle": "\u041f\u0435\u0440\u0435\u043c\u0435\u0448\u0430\u0442\u044c", "Identify": "\u0420\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0442\u044c", "EditImages": "\u041f\u0440\u0430\u0432\u0438\u0442\u044c \u0440\u0438\u0441\u0443\u043d\u043a\u0438", - "EditInfo": "\u041f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f", + "EditMetadata": "\u041f\u0440\u0430\u0432\u0438\u0442\u044c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435", + "Convert": "\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c", "Sync": "\u0421\u0438\u043d\u0445\u0440\u043e", "InstantMix": "\u0410\u0432\u0442\u043e\u043c\u0438\u043a\u0441...", "ViewAlbum": "\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0430\u043b\u044c\u0431\u043e\u043c", @@ -149,6 +166,7 @@ "ResumeAt": "\u0412\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441 {0}", "RemoveFromPlaylist": "\u0418\u0437\u044a\u044f\u0442\u044c \u0438\u0437 \u043f\u043b\u0435\u0439-\u043b\u0438\u0441\u0442\u0430", "RemoveFromCollection": "\u0418\u0437\u044a\u044f\u0442\u044c \u0438\u0437 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438", + "Sort": "\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c", "Trailer": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440", "MarkPlayed": "\u041e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u043a\u0430\u043a \u0432\u043e\u0441\u043f\u0440-\u043e\u0435", "MarkUnplayed": "\u041e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u043a\u0430\u043a \u043d\u0435\u0432\u043e\u0441\u043f\u0440-\u043e\u0435", @@ -157,7 +175,7 @@ "TryMultiSelect": "\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043d\u0435\u0441\u0432\u044f\u0437\u043d\u043e\u0435 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435", "TryMultiSelectMessage": "\u0427\u0442\u043e\u0431\u044b \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u0440\u043e\u0441\u0442\u043e \u0449\u0451\u043b\u043a\u043d\u0438\u0442\u0435 \u0438 \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0439\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u043c\u044b\u0448\u0438 \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u043f\u043e\u0441\u0442\u0435\u0440\u0435 \u0438 \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u0435 \u0442\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u044d\u0442\u043e!", "HeaderConfirmRecordingCancellation": "\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043e\u0442\u043c\u0435\u043d\u044b \u0437\u0430\u043f\u0438\u0441\u0438", - "MessageConfirmRecordingCancellation": "\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c?", + "MessageConfirmRecordingCancellation": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c?", "Error": "\u041e\u0448\u0438\u0431\u043a\u0430", "VoiceInput": "\u0413\u043e\u043b\u043e\u0441\u043e\u0432\u043e\u0439 \u0432\u0432\u043e\u0434", "LabelContentType": "\u0422\u0438\u043f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f:", @@ -167,7 +185,9 @@ "LabelOriginalTitle": "\u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435:", "LabelSortTitle": "\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e:", "LabelDateAdded": "\u0414\u0430\u0442\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f:", - "ConfigureDateAdded": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u0430\u0442\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u041f\u0430\u043d\u0435\u043b\u0438 Emby Server \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445 \u041c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438", + "DateAdded": "\u0414\u0430\u0442\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f", + "DatePlayed": "\u0414\u0430\u0442\u0430 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f", + "ConfigureDateAdded": "\u041a\u0430\u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u0442\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u041f\u0430\u043d\u0435\u043b\u0438 Emby Server \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445 \u041c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438", "LabelStatus": "\u0421\u0442\u0430\u0442\u0443\u0441:", "LabelArtists": "\u0418\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0438:", "LabelArtistsHelp": "\u0414\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0442\u043e\u0447\u043a\u0443 \u0441 \u0437\u0430\u043f\u044f\u0442\u043e\u0439 (;)", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "\u0418\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0438 \u0430\u043b\u044c\u0431\u043e\u043c\u0430:", "LabelAlbum": "\u0410\u043b\u044c\u0431\u043e\u043c", "Artists": "\u0418\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0438", + "ImdbRating": "\u041e\u0446\u0435\u043d\u043a\u0430 IMDb", + "CommunityRating": "\u041e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430", "LabelCommunityRating": "\u041e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430:", "LabelCriticRating": "\u041e\u0446\u0435\u043d\u043a\u0430 \u043a\u0440\u0438\u0442\u0438\u043a\u043e\u0432:", + "CriticRating": "\u041e\u0446\u0435\u043d\u043a\u0430 \u043a\u0440\u0438\u0442\u0438\u043a\u043e\u0432", "LabelWebsite": "\u0412\u0435\u0431\u0441\u0430\u0439\u0442:", "LabelTagline": "\u041a\u043b\u044e\u0447\u0435\u0432\u0430\u044f \u0444\u0440\u0430\u0437\u0430:", "LabelOverview": "\u041e\u0431\u0437\u043e\u0440:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "\u0414\u0430\u0442\u0430 \u0432\u044b\u043f\u0443\u0441\u043a\u0430:", "LabelYear": "\u0413\u043e\u0434:", "LabelPlaceOfBirth": "\u041c\u0435\u0441\u0442\u043e \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f:", + "Aired": "\u042d\u0444\u0438\u0440\u043d\u044b\u0439", "LabelAirDays": "\u0414\u043d\u0438 \u044d\u0444\u0438\u0440\u0430:", "LabelAirTime": "\u0412\u0440\u0435\u043c\u044f \u044d\u0444\u0438\u0440\u0430:", "LabelRuntimeMinutes": "\u0414\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043c\u0438\u043d:", @@ -196,10 +220,6 @@ "PerfectMatch": "\u041f\u043e\u043b\u043d\u043e\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435", "EnableExternalVideoPlayers": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u0438 \u0432\u0438\u0434\u0435\u043e", "EnableExternalVideoPlayersHelp": "\u041c\u0435\u043d\u044e \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0435\u043e.", - "HeaderAlternateEpisodeNumbers": "\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 \u044d\u043f\u0438\u0437\u043e\u0434\u043e\u0432", - "LabelDvdSeasonNumber": "\u041d\u043e\u043c\u0435\u0440 DVD-\u0441\u0435\u0437\u043e\u043d\u0430:", - "LabelDvdEpisodeNumber": "\u041d\u043e\u043c\u0435\u0440 DVD-\u044d\u043f\u0438\u0437\u043e\u0434\u0430:", - "LabelAbsoluteEpisodeNumber": "\u0410\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u044d\u043f\u0438\u0437\u043e\u0434\u0430:", "HeaderSpecialEpisodeInfo": "\u041e \u0441\u043f\u0435\u0446\u044d\u043f\u0438\u0437\u043e\u0434\u0435", "LabelAirsBeforeSeason": "\u0421\u0435\u0437\u043e\u043d airs_before:", "LabelAirsAfterSeason": "\u0421\u0435\u0437\u043e\u043d airs_after:", @@ -229,7 +249,7 @@ "LabelNumber": "\u041d\u043e\u043c\u0435\u0440:", "LabelDiscNumber": "\u041d\u043e\u043c\u0435\u0440 \u0434\u0438\u0441\u043a\u0430:", "LabelParentNumber": "\u0420\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043d\u043e\u043c\u0435\u0440:", - "SortName": "\u0418\u043c\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438", + "SortName": "\u0421\u043e\u0440\u0442. \u043f\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e", "ReleaseDate": "\u0414\u0430\u0442\u0430 \u0432\u044b\u043f\u0443\u0441\u043a\u0430", "Continuing": "\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e\u0449\u0435\u0435\u0441\u044f", "Ended": "\u041f\u0440\u0435\u043a\u0440\u0430\u0449\u0451\u043d\u043d\u043e\u0435", @@ -241,6 +261,7 @@ "ProductionLocations": "\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434-\u043d\u044b\u0435 \u043f\u043b\u043e\u0449\u0430\u0434\u043a\u0438", "BirthLocation": "\u041c\u0435\u0441\u0442\u043e \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f", "ParentalRating": "\u0412\u043e\u0437\u0440. \u043a\u0430\u0442.", + "PlayCount": "\u041a\u043e\u043b. \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0439", "Name": "\u0418\u043c\u044f", "Overview": "\u041e\u0431\u0437\u043e\u0440", "LabelType": "\u0422\u0438\u043f:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "\u041f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043e\u043d \u0443\u0434\u0430\u043b\u0438\u0442\u0441\u044f \u0438 \u0438\u0437 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0438 \u0438\u0437 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438. \u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c?", "PleaseRestartServerName": "\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 Emby Server - {0}.", "LabelSyncJobName": "\u0418\u043c\u044f \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0441\u0438\u043d\u0445\u0440-\u0438\u0438:", - "SyncJobCreated": "\u0417\u0430\u0434\u0430\u043d\u0438\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u043e", + "SyncingDots": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f...", + "ConvertingDots": "\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f...", "LabelQuality": "\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e:", "LabelSyncNoTargetsHelp": "\u041f\u043e\u0445\u043e\u0436\u0435, \u0447\u0442\u043e \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430, \u043d\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f.", "DownloadingDots": "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f...", @@ -297,12 +319,17 @@ "LearnMore": "\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435...", "LabelProfile": "\u041f\u0440\u043e\u0444\u0438\u043b\u044c:", "LabelBitrateMbps": "\u041f\u043e\u0442\u043e\u043a\u043e\u0432\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c, \u041c\u0431\u0438\u0442\/\u0441:", + "ConvertUnwatchedVideosOnly": "\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u0435 \u0432\u0438\u0434\u0435\u043e", "SyncUnwatchedVideosOnly": "\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043d\u0435\u043f\u0440\u043e\u0441\u043c-\u044b\u0435 \u0432\u0438\u0434\u0435\u043e", + "ConvertUnwatchedVideosOnlyHelp": "\u0422\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u0435 \u0432\u0438\u0434\u0435\u043e \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u044b", "SyncUnwatchedVideosOnlyHelp": "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043f\u0440\u043e\u0441\u043c-\u044b\u0435 \u0432\u0438\u0434\u0435\u043e, \u0430 \u043f\u0440\u043e\u0441\u043c-\u044b\u0435 \u0438\u0437\u044b\u043c\u0430\u044e\u0442\u0441\u044f \u0441 \u0443\u0441\u0442\u0440-\u0432\u0430.", "AutomaticallySyncNewContent": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435", "AutomaticallySyncNewContentHelp": "\u041d\u043e\u0432\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u0432 \u044d\u0442\u0443 \u043f\u0430\u043f\u043a\u0443, \u0430\u0432\u0442\u043e-\u043a\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0443\u0441\u0442\u0440-\u0432\u043e.", + "AutomaticallyConvertNewContent": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435", + "AutomaticallyConvertNewContentHelp": "\u041d\u043e\u0432\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u0432 \u0434\u0430\u043d\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443, \u0431\u0443\u0434\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043e.", "LabelItemLimit": "\u041b\u0438\u043c\u0438\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432:", - "LabelItemLimitHelp": "\u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e. \u041b\u0438\u043c\u0438\u0442 \u0447\u0438\u0441\u043b\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f.", + "ConvertItemLimitHelp": "\u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c\u0441\u044f.", + "DownloadItemLimitHelp": "\u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f.", "PleaseSelectDeviceToSyncTo": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u043a\u0443\u0434\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c.", "Screenshots": "\u0421\u043d\u0438\u043c\u043a\u0438 \u044d\u043a\u0440\u0430\u043d\u0430", "MoveRight": "\u0414\u0432\u0438\u0433\u0430\u0442\u044c \u0432\u043f\u0440\u0430\u0432\u043e", @@ -421,13 +448,14 @@ "HeaderMyMedia": "\u041c\u043e\u0438 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0435", "HeaderMyMediaSmall": "\u041c\u043e\u0438 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0435 (\u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e)", "LatestFromLibrary": "\u041d\u043e\u0432\u0435\u0439\u0448\u0435\u0435: {0}", - "ContinueWatching": "Continue watching", + "ContinueWatching": "\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430", "HeaderLatestChannelMedia": "\u041d\u043e\u0432\u0435\u0439\u0448\u0435\u0435 \u0438\u0437 \u043a\u0430\u043d\u0430\u043b\u043e\u0432", "HeaderContinueWatching": "\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430", "HeaderContinueListening": "\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u043d\u0438\u044f", "HeaderActiveRecordings": "\u0410\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438", "HeaderLatestRecordings": "\u041d\u043e\u0432\u0435\u0439\u0448\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438", "LabelSyncTo": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0441:", + "LabelConvertTo": "\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0432:", "Next": "\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435", "LabelSource": "\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a:", "LabelVersion": "\u0412\u0435\u0440\u0441\u0438\u044f:", @@ -441,10 +469,10 @@ "More": "\u0415\u0449\u0451...", "Up": "\u0412\u0432\u0435\u0440\u0445", "Down": "\u0412\u043d\u0438\u0437", + "Home": "\u0413\u043b\u0430\u0432\u043d\u043e\u0435", + "Favorites": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u043e\u0435", "HeaderHomeScreen": "\u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d", - "HeaderHomeScreenContent": "\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0430", "HeaderLatestChannelItems": "\u041d\u043e\u0432\u0435\u0439\u0448\u0435\u0435 \u0438\u0437 \u043a\u0430\u043d\u0430\u043b\u043e\u0432", - "LabelSelectHomeScreenItemsFolders": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u043c \u044d\u043a\u0440\u0430\u043d\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u0437:", "HeaderLibraryOrder": "\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a", "HideWatchedContentFromLatestMedia": "\u0421\u043a\u0440\u044b\u0442\u044c \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0438\u0437 \u041d\u043e\u0432\u0435\u0439\u0448\u0438\u0445 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445", "HeaderOnNow": "\u0412 \u044d\u0444\u0438\u0440\u0435", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "\u0412\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0434\u0438\u0441\u043a, \u0447\u0442\u043e\u0431\u044b \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u043e\u0435 \u0432\u0438\u0434\u0435\u043e.", "Guide": "\u0422\u0435\u043b\u0435\u0433\u0438\u0434", "Suggestions": "\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c\u043e\u0435", - "Favorites": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u043e\u0435", + "HeaderFavoriteCollections": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438", + "HeaderFavoritePlaylists": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043f\u043b\u0435\u0439-\u043b\u0438\u0441\u0442\u044b", "Collections": "\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438", "LabelSelectFolderGroups": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u043d\u0443\u0442\u0440\u044c \u0430\u0441\u043f\u0435\u043a\u0442\u043e\u0432 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: \u041a\u0438\u043d\u043e, \u041c\u0443\u0437\u044b\u043a\u0430 \u0438 \u0422\u0412) \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0430\u043f\u043e\u043a:", "LabelSelectFolderGroupsHelp": "\u041f\u0430\u043f\u043a\u0438, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043d\u044f\u0442\u044b \u0444\u043b\u0430\u0436\u043a\u0438, \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0432 \u0438\u0445 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0430\u0441\u043f\u0435\u043a\u0442\u0430\u0445.", + "Folders": "\u041f\u0430\u043f\u043a\u0438", + "DisplayInOtherHomeScreenSections": "\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0430\u0445 \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0430 (\u043d\u043f\u0440., \u043d\u043e\u0432\u0435\u0439\u0448\u0438\u0435 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0435, \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0438 \u0442.\u043f.)", + "DisplayInMyMedia": "\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u043c \u044d\u043a\u0440\u0430\u043d\u0435", "Shows": "\u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0438", "HeaderLibraryFolders": "\u041c\u0435\u0434\u0438\u0430\u0442\u0435\u0447\u043d\u044b\u0435 \u043f\u0430\u043f\u043a\u0438", - "HeaderLandingScreens": "\u0426\u0435\u043b\u0435\u0432\u044b\u0435 \u044d\u043a\u0440\u0430\u043d\u044b", - "LandingScreensHelp": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u044d\u043a\u0440\u0430\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0449\u0435\u043b\u0447\u043a\u0435 \u043f\u043e \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435.", "HeaderTermsOfPurchase": "\u0423\u0441\u043b\u043e\u0432\u0438\u044f \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0435\u0442\u0435\u043d\u0438\u044f", "PrivacyPolicy": "\u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438", "TermsOfUse": "\u0423\u0441\u043b\u043e\u0432\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f", "RepeatMode": "\u0420\u0435\u0436\u0438\u043c \u043f\u043e\u0432\u0442\u043e\u0440\u0430", "RepeatOne": "\u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u0440\u0430\u0437", "RepeatAll": "\u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u0432\u0441\u0435", - "ConfirmEndPlayerSession": "\u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u044c Emby \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435?", + "LabelDefaultScreen": "\u042d\u043a\u0440\u0430\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e:", + "ConfirmEndPlayerSession": "\u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 Emby \u043d\u0430 {0}?", "Yes": "\u0414\u0430", "No": "\u041d\u0435\u0442", "LiveTV": "\u042d\u0444\u0438\u0440", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "\u0412\u0438\u0434\u0435\u043e\u043a\u043e\u0434\u0435\u043a \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f", "AudioCodecNotSupported": "\u0410\u0443\u0434\u0438\u043e\u043a\u043e\u0434\u0435\u043a \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f", "SubtitleCodecNotSupported": "\u0424\u043e\u0440\u043c\u0430\u0442 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f", + "DirectPlayError": "\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f", "ContainerNotSupported": "\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f", "VideoLevelNotSupported": "\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u0432\u0438\u0434\u0435\u043e \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f", "AudioBitrateNotSupported": "\u041f\u043e\u0442\u043e\u043a\u043e\u0432\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0430\u0443\u0434\u0438\u043e \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0441 Emby Server. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0447\u0442\u043e \u0443 Emby Server \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043a\u0443 \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443.", "NoSubtitles": "\u0411\u0435\u0437 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432", "Default": "\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u0435", + "Absolute": "\u0410\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0439", "Smart": "\u0423\u043c\u043d\u044b\u0439", "Small": "\u041c\u0435\u043b\u043a\u0438\u0439", + "Smaller": "\u041f\u043e\u043c\u0435\u043d\u044c\u0448\u0435", "Medium": "\u0421\u0440\u0435\u0434\u043d\u0438\u0439", "Large": "\u041a\u0440\u0443\u043f\u043d\u044b\u0439", "ExtraLarge": "\u041e\u0447\u0435\u043d\u044c \u043a\u0440\u0443\u043f\u043d\u044b\u0439", @@ -545,10 +579,10 @@ "DropShadow": "\u0422\u0435\u043d\u0435\u0432\u0430\u044f", "SmallCaps": "\u041c\u0430\u043b\u044b\u0435 \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u044b\u0435", "SubtitleAppearanceSettingsDisclaimer": "\u0414\u0430\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u044b \u043a \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0430\u043c (PGS, DVD \u0438 \u0442.\u0434.) \u0438\u043b\u0438 \u043a \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043c\u0435\u044e\u0442 \u0432\u043d\u0435\u0434\u0440\u0451\u043d\u043d\u044b\u0435 \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0441\u0442\u0438\u043b\u0438 (ASS\/SSA).", - "LabelBurnSubtitles": "\u0417\u0430\u043f\u0438\u0441\u044c \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432:", + "LabelBurnSubtitles": "\u0412\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432:", "OnlyImageFormats": "\u0422\u043e\u043b\u044c\u043a\u043e \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u044b (VOBSUB, PGS, SUB\/IDX \u0438 \u0442.\u0434.)", "Normal": "\u041e\u0431\u044b\u0447\u043d\u044b\u0439", - "BurnSubtitlesHelp": "\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f, \u0434\u043e\u043b\u0436\u0435\u043d \u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044b \u043f\u0440\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0432\u0438\u0434\u0435\u043e \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432. \u0418\u0437\u0431\u0435\u0433\u0430\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432 \u0443\u043b\u0443\u0447\u0448\u0438\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u00ab\u0410\u0432\u0442\u043e\u00bb \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 (\u043d\u043f\u0440, VOBSUB, PGS, SUB\/IDX \u0438 \u0442.\u0434.), \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445\u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432 ASS\/SSA.", + "BurnSubtitlesHelp": "\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f, \u0434\u043e\u043b\u0436\u0435\u043d \u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u0432\u043d\u0435\u0434\u0440\u044f\u0442\u044c \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044b \u043f\u0440\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0432\u0438\u0434\u0435\u043e \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432. \u0418\u0437\u0431\u0435\u0433\u0430\u043d\u0438\u0435 \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432 \u0443\u043b\u0443\u0447\u0448\u0438\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u00ab\u0410\u0432\u0442\u043e\u00bb \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, VOBSUB, PGS, SUB\/IDX \u0438 \u0442.\u043f.), \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432 ASS\/SSA.", "AllComplexFormats": "\u0412\u0441\u0435 \u043a\u043e\u043c\u043b\u0435\u043a\u0441\u043d\u044b\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u044b (ASS, SSA, VOBSUB, PGS, SUB\/IDX \u0438 \u0442.\u0434.)", "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "\u042d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u044b \u043a \u043b\u044e\u0431\u043e\u043c\u0443 Chromecast-\u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044e \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u043c\u0443 \u0434\u0430\u043d\u043d\u044b\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c.", "HeaderWaitingForWifi": "\u0412 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0438 WiFi", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "\u0427\u0438\u0441\u043b\u043e \u043e\u043f\u043e\u0440\u043d\u044b\u0445 \u043a\u0430\u0434\u0440\u043e\u0432 \u0432\u0438\u0434\u0435\u043e \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f", "ErrorConnectServerUnreachable": "\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. \u0412\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u0432\u044f\u0437\u0430\u0442\u044c\u0441\u044f \u0441 \u043d\u0430\u0448\u0438\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c Emby Connect \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 {0}. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438\u043c\u0435\u0435\u0442 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0438 \u0447\u0442\u043e \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u0432 \u0431\u0440\u0430\u043d\u0434\u043c\u0430\u0443\u044d\u0440\u0435 \u0438\u043b\u0438 \u041f\u041e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0443 \u0432\u0430\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e.", "StopRecording": "\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c", + "HeaderStopRecording": "\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u043f\u0438\u0441\u0438", "ManageRecording": "\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c\u044e", "LabelDropImageHere": "\u041f\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435 \u0440\u0438\u0441\u0443\u043d\u043e\u043a \u0441\u044e\u0434\u0430 \u0438\u043b\u0438 \u0449\u0451\u043b\u043a\u043d\u0438\u0442\u0435 \u0434\u043b\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438", "MessageFileReadError": "\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0438 \u0444\u0430\u0439\u043b\u0430. \u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u043f\u043e\u0437\u0436\u0435.", @@ -595,8 +630,8 @@ "EnableNextVideoInfoOverlayHelp": "\u0412 \u043a\u043e\u043d\u0446\u0435 \u0432\u0438\u0434\u0435\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0432\u0438\u0434\u0435\u043e \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043f\u043b\u0435\u0439-\u043b\u0438\u0441\u0442\u0435.", "PlayNextEpisodeAutomatically": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u044d\u043f\u0438\u0437\u043e\u0434 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438", "LabelMaxChromecastBitrate": "\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438 Chromecast:", - "LabelSkipBackLength": "\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430 \u043d\u0430\u0437\u0430\u0434:", - "LabelSkipForwardLength": "\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430 \u0432\u043f\u0435\u0440\u0451\u0434:", + "LabelSkipBackLength": "\u0412\u0440\u0435\u043c\u044f \u043e\u0442\u043c\u043e\u0442\u043a\u0438:", + "LabelSkipForwardLength": "\u0412\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u043c\u043e\u0442\u043a\u0438:", "EnableCinemaMode": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u0435\u0436\u0438\u043c \u043a\u0438\u043d\u043e\u0437\u0430\u043b\u0430", "LabelInternetQuality": "\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435:", "HeaderMusicQuality": "\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043c\u0443\u0437\u044b\u043a\u0438", @@ -627,11 +662,28 @@ "Horizontal": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e", "Vertical": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e", "GroupBySeries": "\u0413\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u0441\u0435\u0440\u0438\u0430\u043b\u0430\u043c", - "HeaderVideoType": "Video Type", - "HeaderSeriesStatus": "Series Status", - "Features": "Features", - "Trailers": "Trailers", - "Extras": "Extras", - "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "HeaderVideoType": "\u0422\u0438\u043f \u0432\u0438\u0434\u0435\u043e", + "HeaderSeriesStatus": "\u0421\u0442\u0430\u0442\u0443\u0441 \u0441\u0435\u0440\u0438\u0430\u043b\u0430", + "Features": "\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b", + "Trailers": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440\u044b", + "Extras": "\u0414\u043e\u043f\u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b", + "ThemeSongs": "\u0422\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u0435\u043b\u043e\u0434\u0438\u0438", + "ThemeVideos": "\u0422\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u0438\u0434\u0435\u043e", + "HeaderFavoriteMovies": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0444\u0438\u043b\u044c\u043c\u044b", + "HeaderFavoriteShows": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438", + "HeaderFavoriteEpisodes": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b", + "HeaderFavoriteVideos": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0432\u0438\u0434\u0435\u043e", + "HeaderFavoriteGames": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0438\u0433\u0440\u044b", + "HeaderFavoriteArtists": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0438", + "HeaderFavoriteAlbums": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0430\u043b\u044c\u0431\u043e\u043c\u044b", + "HeaderFavoriteSongs": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438", + "Ascending": "\u041f\u043e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u043d\u0438\u044e", + "Descending": "\u041f\u043e \u0443\u0431\u044b\u0432\u0430\u043d\u0438\u044e", + "ColorPrimaries": "\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u0430", + "ColorSpace": "\u0426\u0432\u0435\u0442\u043e\u0432\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e", + "ColorTransfer": "\u0426\u0432\u0435\u0442\u043e\u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430", + "VideoRange": "\u0414\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0432\u0438\u0434\u0435\u043e", + "SeriesDisplayOrderHelp": "\u0423\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0432\u0430\u043d\u0438\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u043e\u0432 \u043f\u043e \u0434\u0430\u0442\u0435 \u044d\u0444\u0438\u0440\u0430, \u043f\u043e\u0440\u044f\u0434\u043a\u0443 \u043d\u0430 DVD \u0438\u043b\u0438 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u0439 \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u0438.", + "PlaybackSettingsIntro": "\u0427\u0442\u043e\u0431\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u043e, \u0437\u0430\u0442\u0435\u043c \u0449\u0435\u043b\u043a\u043d\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u043e\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u043f\u0440\u0430\u0432\u043e\u0439 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.", + "SubtitleSettingsIntro": "\u0427\u0442\u043e\u0431\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432 \u0438 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u043e, \u0437\u0430\u0442\u0435\u043c \u0449\u0435\u043b\u043a\u043d\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u043e\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u043f\u0440\u0430\u0432\u043e\u0439 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/sk.json b/dashboard-ui/bower_components/emby-webcomponents/strings/sk.json index 4b66ee7411..57e36f6a51 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/sk.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/sk.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", @@ -6,10 +8,10 @@ "Share": "Zdie\u013ea\u0165", "Add": "Prida\u0165", "ServerUpdateNeeded": "Tento Emby server treba aktualizova\u0165. Najnov\u0161iu verziu n\u00e1jdete na {0}", - "LiveTvRequiresUnlock": "Live TV requires an active Emby Premiere subscription.", + "LiveTvRequiresUnlock": "\u017div\u00e1 TV vy\u017eaduje akt\u00edvne predplatn\u00e9 Emby Premiere.", "AttributeNew": "Nov\u00e9", "Premiere": "Premi\u00e9ra", - "Live": "Live", + "Live": "Na\u017eivo", "Repeat": "Opakova\u0165", "TrackCount": "{0} st\u00f4p", "ItemCount": "{0} polo\u017eiek", @@ -17,6 +19,7 @@ "EndsAtValue": "Kon\u010d\u00ed o {0}", "HeaderSelectDate": "Vyberte d\u00e1tum", "Watched": "Watched", + "AirDate": "Air date", "Played": "Prehran\u00e9", "ButtonOk": "Ok", "ButtonCancel": "Zru\u0161i\u0165", @@ -28,6 +31,12 @@ "RecordingScheduled": "Pl\u00e1n nahr\u00e1vania.", "SeriesRecordingScheduled": "Series recording scheduled.", "HeaderNewRecording": "New Recording", + "WakeServer": "Zobudi\u0165 server", + "HeaderWakeServer": "Zobudi\u0165 server", + "AttemptingWakeServer": "Pok\u00fa\u0161am sa zobudi\u0165 server. Pros\u00edm po\u010dkajte...", + "WakeServerSuccess": "Vy\u0161lo to!", + "HeaderCustomizeHomeScreen": "Prisp\u00f4sobi\u0165 domovsk\u00fa obrazovku", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "Nede\u013ea", "Monday": "Pondelok", "Tuesday": "Utorok", @@ -36,6 +45,13 @@ "Friday": "Piatok", "Saturday": "Sobota", "Days": "Dni", + "SortByValue": "Zoradi\u0165 pod\u013ea {0}", + "LabelSortBy": "Zoradi\u0165 pod\u013ea:", + "LabelSortOrder": "Sort order:", + "HeaderPhotoAlbums": "Albumy fotografi\u00ed", + "Photos": "Fotky", + "HeaderAppearsOn": "Appears On", + "List": "List", "RecordSeries": "Record series", "HeaderCinemaMode": "Cinema Mode", "HeaderCloudSync": "Cloud Sync", @@ -65,7 +81,7 @@ "Delete": "Zmaza\u0165", "HeaderDeleteItem": "Zmaza\u0165 polo\u017eku", "ConfirmDeleteItem": "Deleting this item will delete it from both the file system and your media library. Are you sure you wish to continue?", - "Refresh": "Refresh", + "Refresh": "Obnovi\u0165", "RefreshQueued": "Refresh queued.", "AddToCollection": "Prida\u0165 do zbierky", "HeaderAddToCollection": "Prida\u0165 do zbierky", @@ -110,7 +126,7 @@ "NoSubtitleSearchResultsFound": "\u017diadne v\u00fdsledky.", "File": "S\u00fabor", "MessageAreYouSureDeleteSubtitles": "Ste si ist\u00fd, \u017ee chcete zmaza\u0165 s\u00fabor s titulkami?", - "ConfirmDeletion": "Confirm Deletion", + "ConfirmDeletion": "Potvrdi\u0165 zmazanie", "MySubtitles": "Moje titulky", "MessageDownloadQueued": "Download queued.", "EditSubtitles": "Upravi\u0165 titulky", @@ -127,28 +143,30 @@ "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", "ValueDiscNumber": "Disk {0}", - "Unrated": "Unrated", + "Unrated": "Nehodnoten\u00e9", "Favorite": "Ob\u013e\u00faben\u00e9", - "Like": "Like", - "Dislike": "Dislike", + "Like": "P\u00e1\u010di sa mi to", + "Dislike": "Nep\u00e1\u010di sa mi to", "RefreshDialogHelp": "Metadata is refreshed based on settings and internet services that are enabled in the Emby Server dashboard.", "Open": "Otvori\u0165", "Play": "Prehra\u0165", "AddToPlayQueue": "Add to play queue", "Shuffle": "Zamie\u0161a\u0165", - "Identify": "Identify", + "Identify": "Identifikova\u0165", "EditImages": "Upravi\u0165 obr\u00e1zky", - "EditInfo": "Edit info", + "EditMetadata": "Upravi\u0165 metad\u00e1ta", + "Convert": "Konvertova\u0165", "Sync": "Sync", "InstantMix": "Instant mix", - "ViewAlbum": "View album", - "ViewArtist": "View artist", + "ViewAlbum": "Zobrazi\u0165 album", + "ViewArtist": "Zobrazi\u0165 umelca", "QueueAllFromHere": "Queue all from here", "PlayAllFromHere": "Play all from here", "PlayFromBeginning": "Prehra\u0165 od za\u010diatku", "ResumeAt": "Pokra\u010dova\u0165 od {0}", "RemoveFromPlaylist": "Remove from playlist", "RemoveFromCollection": "Odobra\u0165 zo zbierky", + "Sort": "Zoradi\u0165", "Trailer": "Uk\u00e1\u017eka", "MarkPlayed": "Ozna\u010di\u0165 ako prehran\u00e9", "MarkUnplayed": "Ozna\u010di\u0165 ako neprehran\u00e9", @@ -157,16 +175,18 @@ "TryMultiSelect": "Try Multi-Select", "TryMultiSelectMessage": "To edit multiple media items, just click and hold any poster and select the items you want to manage. Try it!", "HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation", - "MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?", + "MessageConfirmRecordingCancellation": "Zru\u0161i\u0165 nahr\u00e1vanie?", "Error": "Chyba", "VoiceInput": "Hlasov\u00fd vstup", "LabelContentType": "Typ obsahu:", "LabelPath": "Cesta:", "Playlists": "Playlists", - "LabelTitle": "Title:", - "LabelOriginalTitle": "Original title:", + "LabelTitle": "N\u00e1zov:", + "LabelOriginalTitle": "P\u00f4vodn\u00fd n\u00e1zov:", "LabelSortTitle": "Sort title:", "LabelDateAdded": "D\u00e1tum pridania:", + "DateAdded": "D\u00e1tum pridania", + "DatePlayed": "D\u00e1tum prehrania", "ConfigureDateAdded": "Configure how date added is determined in the Emby Server dashboard under Library settings", "LabelStatus": "Status:", "LabelArtists": "Umelci:", @@ -175,31 +195,31 @@ "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "Artists": "Umelci", + "ImdbRating": "IMDb hodnotenie", + "CommunityRating": "Hodnotenie komunity", "LabelCommunityRating": "Hodnotenie komunity:", "LabelCriticRating": "Hodnotenie kritikov:", + "CriticRating": "Hodnotenie kritikov", "LabelWebsite": "Website:", "LabelTagline": "Tagline:", - "LabelOverview": "Overview:", - "LabelShortOverview": "Short overview:", + "LabelOverview": "Preh\u013ead:", + "LabelShortOverview": "Kr\u00e1tky preh\u013ead:", "LabelReleaseDate": "D\u00e1tum vydania:", "LabelYear": "Rok:", "LabelPlaceOfBirth": "Miesto narodenia:", + "Aired": "Aired", "LabelAirDays": "Air days:", "LabelAirTime": "Air time:", - "LabelRuntimeMinutes": "Run time (minutes):", - "LabelParentalRating": "Parental rating:", + "LabelRuntimeMinutes": "D\u013a\u017eka (min\u00faty):", + "LabelParentalRating": "Rodi\u010dovsk\u00e9 hodnotenie", "LabelCustomRating": "Custom rating:", "LabelOriginalAspectRatio": "P\u00f4vodn\u00fd pomer str\u00e1n:", "Label3DFormat": "3D form\u00e1t:", "FormatValue": "Form\u00e1t: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} stiahnut\u00ed", "PerfectMatch": "Perfektn\u00e1 zhoda", "EnableExternalVideoPlayers": "Povoli\u0165 extern\u00e9 video prehr\u00e1va\u010de", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Alternate Episode Numbers", - "LabelDvdSeasonNumber": "Dvd season number:", - "LabelDvdEpisodeNumber": "Dvd episode number:", - "LabelAbsoluteEpisodeNumber": "Absolute episode number:", "HeaderSpecialEpisodeInfo": "Special Episode Info", "LabelAirsBeforeSeason": "Airs before season:", "LabelAirsAfterSeason": "Airs after season:", @@ -225,7 +245,7 @@ "LabelEndDate": "End date:", "LabelSeasonNumber": "\u010c\u00edslo sez\u00f3ny:", "LabelEpisodeNumber": "\u010c\u00edslo epiz\u00f3dy:", - "LabelTrackNumber": "Track number:", + "LabelTrackNumber": "\u010c\u00edslo stopy:", "LabelNumber": "\u010c\u00edslo:", "LabelDiscNumber": "\u010c\u00edslo disku:", "LabelParentNumber": "Parent number:", @@ -234,13 +254,14 @@ "Continuing": "Continuing", "Ended": "Ended", "HeaderEnabledFields": "Enabled Fields", - "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent it's data from being changed.", - "Backdrops": "Backdrops", + "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent its data from being changed.", + "Backdrops": "Pozadie", "Images": "Obr\u00e1zky", "Runtime": "Runtime", "ProductionLocations": "Miesta produkcie", "BirthLocation": "Miesto narodenia", "ParentalRating": "Parental Rating", + "PlayCount": "Po\u010det prehran\u00ed", "Name": "Meno", "Overview": "Preh\u013ead", "LabelType": "Typ:", @@ -261,11 +282,11 @@ "SeriesYearToPresent": "{0} - Present", "ValueOneItem": "1 polo\u017eka", "ValueOneSong": "1 skladba", - "ValueSongCount": "{0} songs", + "ValueSongCount": "{0} skladieb", "ValueOneMovie": "1 film", "ValueMovieCount": "{0} filmov", - "ValueOneSeries": "1 series", - "ValueSeriesCount": "{0} series", + "ValueOneSeries": "1 s\u00e9ria", + "ValueSeriesCount": "{0} s\u00e9ri\u00ed", "ValueOneEpisode": "1 epiz\u00f3da", "ValueEpisodeCount": "{0} epiz\u00f3d", "ValueOneGame": "1 hra", @@ -273,7 +294,7 @@ "ValueOneAlbum": "1 album", "ValueAlbumCount": "{0} albumov", "ValueOneMusicVideo": "1 hudobn\u00e9 video", - "ValueMusicVideoCount": "{0} music videos", + "ValueMusicVideoCount": "{0} hudobn\u00fdch vide\u00ed", "ValueMinutes": "{0} min", "Albums": "Albumy", "Songs": "Skladby", @@ -289,22 +310,28 @@ "ConfirmDeleteItems": "Deleting these items will delete them from both the file system and your media library. Are you sure you wish to continue?", "PleaseRestartServerName": "Pros\u00edm re\u0161tartujte Emby Server - {0}.", "LabelSyncJobName": "Sync job name:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "Kvalita:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", - "DownloadingDots": "Downloading...", + "DownloadingDots": "S\u0165ahuje sa\u2026", "HeaderSyncRequiresSub": "Downloading requires an active Emby Premiere subscription.", "LearnMore": "Zisti\u0165 viac", "LabelProfile": "Profil:", "LabelBitrateMbps": "D\u00e1tov\u00fd tok (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "Download unwatched videos only", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", "AutomaticallySyncNewContent": "Automaticky s\u0165ahova\u0165 nov\u00fd obsah", "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "AutomaticallyConvertNewContent": "Automaticky konvertova\u0165 nov\u00fd obsah", + "AutomaticallyConvertNewContentHelp": "Nov\u00fd obsah pridan\u00fd do tohto prie\u010dinka bude automaticky skonvertovan\u00fd.", "LabelItemLimit": "Item limit:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Volite\u013en\u00e9. Nastavi\u0165 limit polo\u017eiek, ktor\u00e9 bud\u00fa konvertovan\u00e9.", + "DownloadItemLimitHelp": "Volite\u013en\u00e9. Nastavi\u0165 limit polo\u017eiek, ktor\u00e9 bud\u00fa stiahnut\u00e9.", "PleaseSelectDeviceToSyncTo": "Please select a device to download to.", - "Screenshots": "Screenshots", + "Screenshots": "Sn\u00edmky obrazovky", "MoveRight": "Posun\u00fa\u0165 vpravo", "MoveLeft": "Posun\u00fa\u0165 v\u013eavo", "ConfirmDeleteImage": "Zmaza\u0165 obr\u00e1zok?", @@ -326,7 +353,7 @@ "HeaderKeepSeries": "Keep Series", "HeaderLearnMore": "Learn More", "DeleteMedia": "Delete media", - "SeriesSettings": "Series settings", + "SeriesSettings": "Nastavenia s\u00e9rie", "HeaderRecordingOptions": "Recording Options", "CancelSeries": "Cancel series", "DoNotRecord": "Nenahr\u00e1va\u0165", @@ -345,11 +372,11 @@ "LabelStopWhenPossible": "Stop when possible:", "MinutesBefore": "min\u00fat pred", "MinutesAfter": "min\u00fat po", - "SkipEpisodesAlreadyInMyLibrary": "Don't record episodes that are already in my library", + "SkipEpisodesAlreadyInMyLibrary": "Nenahr\u00e1va\u0165 epiz\u00f3dy, ktor\u00e9 u\u017e s\u00fa v mojej kni\u017enici", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", - "LabelKeepUpTo": "Keep up to:", - "AsManyAsPossible": "As many as possible", - "DefaultErrorMessage": "There was an error processing the request. Please try again later.", + "LabelKeepUpTo": "Ponecha\u0165 najviac:", + "AsManyAsPossible": "Najviac ako je mo\u017en\u00e9", + "DefaultErrorMessage": "Pri sprac\u00favan\u00ed po\u017eiadavky do\u0161lo k chybe. Sk\u00faste pros\u00edm nesk\u00f4r znova.", "LabelKeep:": "Ponecha\u0165:", "UntilIDelete": "Until I delete", "UntilSpaceNeeded": "Until space needed", @@ -386,14 +413,14 @@ "RemoveDownload": "Remove download", "KeepDownload": "Keep download", "AddedOnValue": "Added {0}", - "RemovingFromDevice": "Removing from device", - "KeepOnDevice": "Keep on device", + "RemovingFromDevice": "Odstra\u0148uje sa zo zariadenia", + "KeepOnDevice": "Ponecha\u0165 na zariaden\u00ed", "CancelDownload": "Zru\u0161i\u0165 s\u0165ahovanie", "SyncJobItemStatusReadyToTransfer": "Ready to Transfer", - "SyncJobItemStatusSyncedMarkForRemoval": "Removing from device", + "SyncJobItemStatusSyncedMarkForRemoval": "Odstra\u0148uje sa zo zariadenia", "SyncJobItemStatusQueued": "Queued", "SyncJobItemStatusConverting": "Converting", - "SyncJobItemStatusTransferring": "Transferring", + "SyncJobItemStatusTransferring": "Pren\u00e1\u0161a sa", "SyncJobItemStatusSynced": "Stiahnut\u00e9", "SyncJobItemStatusFailed": "Failed", "SyncJobItemStatusRemovedFromDevice": "Odstr\u00e1nen\u00e9 zo zariadenia", @@ -419,32 +446,33 @@ "Reject": "Odmietnu\u0165", "Connect": "Pripoji\u0165", "HeaderMyMedia": "Moje m\u00e9dia", - "HeaderMyMediaSmall": "My Media (small)", - "LatestFromLibrary": "Latest {0}", - "ContinueWatching": "Continue watching", + "HeaderMyMediaSmall": "Moje m\u00e9di\u00e1 (mal\u00e9)", + "LatestFromLibrary": "Najnov\u0161ie {0}", + "ContinueWatching": "Pokra\u010dova\u0165 v pozeran\u00ed", "HeaderLatestChannelMedia": "Latest Channel Items", "HeaderContinueWatching": "Pokra\u010dova\u0165 v pozeran\u00ed", "HeaderContinueListening": "Pokra\u010dova\u0165 v po\u010d\u00favan\u00ed", "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", "LabelSyncTo": "Sync to:", + "LabelConvertTo": "Konvertova\u0165 do:", "Next": "\u010eal\u0161ie", "LabelSource": "Zdroj:", "LabelVersion": "Verzia:", "AllLanguages": "V\u0161etky jazyky", "Previous": "Predch\u00e1dzaj\u00face", "HeaderNextUp": "Nasleduje", - "HeaderLatestFrom": "Latest from {0}", - "LabelHomeScreenSectionValue": "Home screen section {0}:", + "HeaderLatestFrom": "Najnov\u0161ie od {0}", + "LabelHomeScreenSectionValue": "Sekcia dom\u00e1cej obrazovky {0}:", "SettingsSaved": "Nastavenia ulo\u017een\u00e9.", "None": "\u017diadne", "More": "Viac", "Up": "Hore", "Down": "Dole", + "Home": "Domov", + "Favorites": "Ob\u013e\u00faben\u00e9", "HeaderHomeScreen": "Dom\u00e1ca obrazovka", - "HeaderHomeScreenContent": "Obsah dom\u00e1cej obrazovky", "HeaderLatestChannelItems": "Latest Channel Items", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "Poradie kni\u017enice", "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", "HeaderOnNow": "On Now", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.", "Guide": "Sprievodca", "Suggestions": "N\u00e1vrhy", - "Favorites": "Ob\u013e\u00faben\u00e9", + "HeaderFavoriteCollections": "Ob\u013e\u00faben\u00e9 zbierky", + "HeaderFavoritePlaylists": "Favorite Playlists", "Collections": "Zbierky", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Zobrazi\u0165 na dom\u00e1cej obrazovke", "Shows": "Seri\u00e1ly", "HeaderLibraryFolders": "Prie\u010dinky kni\u017enice", - "HeaderLandingScreens": "Vstupn\u00e9 obrazovky", - "LandingScreensHelp": "Select the default landing screen when clicking on a library.", "HeaderTermsOfPurchase": "Terms of Purchase", "PrivacyPolicy": "Z\u00e1sady ochrany osobn\u00fdch \u00fadajov", "TermsOfUse": "Podmienky pou\u017eitia", "RepeatMode": "Repeat mode", "RepeatOne": "Opakova\u0165 jedno", "RepeatAll": "Opakova\u0165 v\u0161etko", - "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", + "LabelDefaultScreen": "Predvolen\u00e1 obrazovka:", + "ConfirmEndPlayerSession": "Chcete vypn\u00fa\u0165 Emby na {0}?", "Yes": "\u00c1no", "No": "Nie", "LiveTV": "\u017div\u00fd TV prenos", @@ -488,12 +519,13 @@ "VideoCodecNotSupported": "Video kodek nie je podporovan\u00fd", "AudioCodecNotSupported": "Audio kodek nie je podporovan\u00fd", "SubtitleCodecNotSupported": "Form\u00e1t titulkov nie je podporovan\u00fd", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Kontajner nie je podporovan\u00fd", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", - "AudioChannelsNotSupported": "Audio channels not supported", + "AudioChannelsNotSupported": "Audio kan\u00e1ly nie s\u00fa podporovan\u00e9", "VideoResolutionNotSupported": "Nepodporovan\u00e9 rozl\u00ed\u0161enie videa", - "AudioProfileNotSupported": "Audio profile not supported", + "AudioProfileNotSupported": "Audio profil nie je podporovan\u00fd", "AudioSampleRateNotSupported": "Audio sample rate not supported", "AnamorphicVideoNotSupported": "Anamorphic video not supported", "InterlacedVideoNotSupported": "Interlaced video not supported", @@ -512,13 +544,15 @@ "ErrorAddingGuestAccount2": "If you're still having an issue, please send an email to {0}, and include your email address as well as theirs.", "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "MessagePendingEmbyAccountAdded": "The Emby account has been added to this user. An email will be sent to the owner of the account. The invitation will need to be confirmed by clicking a link within the email.", - "HeaderEmbyAccountAdded": "Emby Account Added", + "HeaderEmbyAccountAdded": "Emby \u00fa\u010det pridan\u00fd", "LabelSubtitlePlaybackMode": "Subtitle mode:", "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "\u017diadne titulky", "Default": "Default", + "Absolute": "Absolute", "Smart": "Smart", "Small": "Mal\u00e9", + "Smaller": "Smaller", "Medium": "Stredn\u00e9", "Large": "Ve\u013ek\u00e9", "ExtraLarge": "Ve\u013emi ve\u013ek\u00e9", @@ -560,20 +594,21 @@ "HeaderNextEpisodePlayingInValue": "\u010eal\u0161ia epiz\u00f3da sa spust\u00ed o {0}", "HeaderSecondsValue": "{0} sek\u00fand", "AudioBitDepthNotSupported": "Audio bit depth not supported", - "VideoProfileNotSupported": "Video profile not supported", + "VideoProfileNotSupported": "Video profil nie je podporovan\u00fd", "VideoFramerateNotSupported": "Video framerate not supported", "VideoBitDepthNotSupported": "Video bit depth not supported", "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Zastavi\u0165 nahr\u00e1vanie", + "HeaderStopRecording": "Zastavi\u0165 nahr\u00e1vanie", "ManageRecording": "Spravova\u0165 nahr\u00e1vanie", "LabelDropImageHere": "Drop image here, or click to browse.", "MessageFileReadError": "There was an error reading the file. Please try again.", "Browse": "Browse", "HeaderUploadImage": "Nahra\u0165 obr\u00e1zok", - "HeaderAddUpdateImage": "Add\/Update Image", - "LabelImageType": "Image type:", - "Upload": "Upload", + "HeaderAddUpdateImage": "Prida\u0165\/nahra\u0165 obr\u00e1zok", + "LabelImageType": "Typ obr\u00e1zku:", + "Upload": "Nahra\u0165", "Primary": "Primary", "Art": "Art", "Backdrop": "Backdrop", @@ -595,8 +630,8 @@ "EnableNextVideoInfoOverlayHelp": "At the end of a video, display info about the next video coming up in the current playlist.", "PlayNextEpisodeAutomatically": "Automaticky prehra\u0165 \u010fal\u0161iu epiz\u00f3du", "LabelMaxChromecastBitrate": "Maxim\u00e1lny d\u00e1tov\u00fd tok pre Chromecast:", - "LabelSkipBackLength": "Skip back length:", - "LabelSkipForwardLength": "Skip forward length:", + "LabelSkipBackLength": "D\u013a\u017eka skoku dozadu:", + "LabelSkipForwardLength": "D\u013a\u017eka skoku dopredu:", "EnableCinemaMode": "Enable cinema mode", "LabelInternetQuality": "Internet quality:", "HeaderMusicQuality": "Kvalita hudby", @@ -607,7 +642,7 @@ "PlayNext": "Prehra\u0165 \u010fal\u0161ie", "AllowSeasonalThemes": "Allow automatic seasonal themes", "AllowSeasonalThemesHelp": "If enabled, seasonal themes will occasionally override your theme setting.", - "AutoBasedOnLanguageSetting": "Auto (based on language setting)", + "AutoBasedOnLanguageSetting": "Automaticky (na z\u00e1klade nastavenia jazyka)", "LabelDateTimeLocale": "Date time locale:", "DirectorValue": "Re\u017eis\u00e9r: {0}", "DirectorsValue": "Re\u017eis\u00e9ri: {0}", @@ -621,8 +656,8 @@ "Off": "Off", "ShowTitle": "Show title", "ShowYear": "Zobraz rok", - "Filters": "Filters", - "Unplayed": "Unplayed", + "Filters": "Filtre", + "Unplayed": "Neprehran\u00e9", "LabelTVHomeScreen": "TV mode home screen:", "Horizontal": "Horizont\u00e1lne", "Vertical": "Vertik\u00e1lne", @@ -630,8 +665,25 @@ "HeaderVideoType": "Video Type", "HeaderSeriesStatus": "Series Status", "Features": "Features", - "Trailers": "Trailers", + "Trailers": "Uk\u00e1\u017eky", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Ob\u013e\u00faben\u00e9 filmy", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Ob\u013e\u00faben\u00e9 epiz\u00f3dy", + "HeaderFavoriteVideos": "Ob\u013e\u00faben\u00e9 vide\u00e1", + "HeaderFavoriteGames": "Ob\u013e\u00faben\u00e9 hry", + "HeaderFavoriteArtists": "Ob\u013e\u00faben\u00ed umelci", + "HeaderFavoriteAlbums": "Ob\u013e\u00faben\u00e9 albumy", + "HeaderFavoriteSongs": "Ob\u013e\u00faben\u00e9 skladby", + "Ascending": "Vzostupne", + "Descending": "Zostupne", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Farebn\u00fd priestor", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/sl-si.json b/dashboard-ui/bower_components/emby-webcomponents/strings/sl-si.json index fdbff20a2e..d3f180d2ee 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/sl-si.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/sl-si.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", @@ -17,6 +19,7 @@ "EndsAtValue": "Ends at {0}", "HeaderSelectDate": "Select Date", "Watched": "Watched", + "AirDate": "Air date", "Played": "Played", "ButtonOk": "Ok", "ButtonCancel": "Cancel", @@ -28,6 +31,12 @@ "RecordingScheduled": "Recording scheduled.", "SeriesRecordingScheduled": "Series recording scheduled.", "HeaderNewRecording": "New Recording", + "WakeServer": "Wake server", + "HeaderWakeServer": "Wake Server", + "AttemptingWakeServer": "Attempting to wake server. Please wait...", + "WakeServerSuccess": "Success!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "Sunday", "Monday": "Monday", "Tuesday": "Tuesday", @@ -36,6 +45,13 @@ "Friday": "Friday", "Saturday": "Saturday", "Days": "Days", + "SortByValue": "Sort by {0}", + "LabelSortBy": "Sort by:", + "LabelSortOrder": "Sort order:", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "Photos", + "HeaderAppearsOn": "Appears On", + "List": "List", "RecordSeries": "Record series", "HeaderCinemaMode": "Cinema Mode", "HeaderCloudSync": "Cloud Sync", @@ -138,7 +154,8 @@ "Shuffle": "Shuffle", "Identify": "Identify", "EditImages": "Edit images", - "EditInfo": "Edit info", + "EditMetadata": "Edit metadata", + "Convert": "Convert", "Sync": "Sync", "InstantMix": "Instant mix", "ViewAlbum": "View album", @@ -149,6 +166,7 @@ "ResumeAt": "Resume from {0}", "RemoveFromPlaylist": "Remove from playlist", "RemoveFromCollection": "Remove from collection", + "Sort": "Sort", "Trailer": "Trailer", "MarkPlayed": "Mark played", "MarkUnplayed": "Mark unplayed", @@ -157,7 +175,7 @@ "TryMultiSelect": "Try Multi-Select", "TryMultiSelectMessage": "To edit multiple media items, just click and hold any poster and select the items you want to manage. Try it!", "HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation", - "MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?", + "MessageConfirmRecordingCancellation": "Cancel recording?", "Error": "Error", "VoiceInput": "Voice Input", "LabelContentType": "Tip vsebine:", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "Original title:", "LabelSortTitle": "Sort title:", "LabelDateAdded": "Date added:", + "DateAdded": "Date added", + "DatePlayed": "Date played", "ConfigureDateAdded": "Configure how date added is determined in the Emby Server dashboard under Library settings", "LabelStatus": "Status:", "LabelArtists": "Izvajalci:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "Artists": "Artists", + "ImdbRating": "IMDb rating", + "CommunityRating": "Community rating", "LabelCommunityRating": "Community rating:", "LabelCriticRating": "Critic rating:", + "CriticRating": "Critic rating", "LabelWebsite": "Website:", "LabelTagline": "Tagline:", "LabelOverview": "Overview:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Release date:", "LabelYear": "Year:", "LabelPlaceOfBirth": "Place of birth:", + "Aired": "Aired", "LabelAirDays": "Air days:", "LabelAirTime": "Air time:", "LabelRuntimeMinutes": "Run time (minutes):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Original aspect ratio:", "Label3DFormat": "3D format:", "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Perfect match", "EnableExternalVideoPlayers": "Enable external video players", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Alternate Episode Numbers", - "LabelDvdSeasonNumber": "Dvd season number:", - "LabelDvdEpisodeNumber": "Dvd episode number:", - "LabelAbsoluteEpisodeNumber": "Absolute episode number:", "HeaderSpecialEpisodeInfo": "Special Episode Info", "LabelAirsBeforeSeason": "Airs before season:", "LabelAirsAfterSeason": "Airs after season:", @@ -234,13 +254,14 @@ "Continuing": "Continuing", "Ended": "Ended", "HeaderEnabledFields": "Enabled Fields", - "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent it's data from being changed.", + "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent its data from being changed.", "Backdrops": "Backdrops", "Images": "Images", "Runtime": "Runtime", "ProductionLocations": "Production locations", "BirthLocation": "Birth location", "ParentalRating": "Parental Rating", + "PlayCount": "Play count", "Name": "Name", "Overview": "Overview", "LabelType": "Type:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "Deleting these items will delete them from both the file system and your media library. Are you sure you wish to continue?", "PleaseRestartServerName": "Please restart Emby Server - {0}.", "LabelSyncJobName": "Sync job name:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "Kvaliteta:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", "DownloadingDots": "Downloading...", @@ -297,12 +319,17 @@ "LearnMore": "Learn more", "LabelProfile": "Profile:", "LabelBitrateMbps": "Bitrate (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "Download unwatched videos only", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", "AutomaticallySyncNewContent": "Automatically download new content", "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "Item limit:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "Please select a device to download to.", "Screenshots": "Screenshots", "MoveRight": "Move right", @@ -428,6 +455,7 @@ "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", "LabelSyncTo": "Sync to:", + "LabelConvertTo": "Convert to:", "Next": "Next", "LabelSource": "Source:", "LabelVersion": "Version:", @@ -441,10 +469,10 @@ "More": "More", "Up": "Up", "Down": "Down", + "Home": "Home", + "Favorites": "Favorites", "HeaderHomeScreen": "Home Screen", - "HeaderHomeScreenContent": "Home Screen Content", "HeaderLatestChannelItems": "Latest Channel Items", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "Library Order", "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", "HeaderOnNow": "On Now", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.", "Guide": "Guide", "Suggestions": "Suggestions", - "Favorites": "Favorites", + "HeaderFavoriteCollections": "Favorite Collections", + "HeaderFavoritePlaylists": "Favorite Playlists", "Collections": "Collections", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", "Shows": "Shows", "HeaderLibraryFolders": "Library Folders", - "HeaderLandingScreens": "Landing Screens", - "LandingScreensHelp": "Select the default landing screen when clicking on a library.", "HeaderTermsOfPurchase": "Terms of Purchase", "PrivacyPolicy": "Privacy policy", "TermsOfUse": "Terms of use", "RepeatMode": "Repeat mode", "RepeatOne": "Repeat one", "RepeatAll": "Repeat all", - "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", + "LabelDefaultScreen": "Default screen:", + "ConfirmEndPlayerSession": "Would you like to shutdown Emby on {0}?", "Yes": "Yes", "No": "No", "LiveTV": "Live TV", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video codec not supported", "AudioCodecNotSupported": "Audio codec not supported", "SubtitleCodecNotSupported": "Subtitle format not supported", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Container not supported", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "No subtitles", "Default": "Default", + "Absolute": "Absolute", "Smart": "Smart", "Small": "Small", + "Smaller": "Smaller", "Medium": "Medium", "Large": "Large", "ExtraLarge": "Extra large", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Stop recording", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Manage recording", "LabelDropImageHere": "Drop image here, or click to browse.", "MessageFileReadError": "There was an error reading the file. Please try again.", @@ -633,5 +668,22 @@ "Trailers": "Trailers", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteVideos": "Favorite Videos", + "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteSongs": "Favorite Songs", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Color space", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/sv.json b/dashboard-ui/bower_components/emby-webcomponents/strings/sv.json index 1e7507cbe5..c3e17dad83 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/sv.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/sv.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "L\u00e5s upp denna feature med ett eng\u00e5ngsk\u00f6p, eller med ett aktivt Emby Premium-medlemskap.", "MessageUnlockAppWithSupporter": "L\u00e5s upp den h\u00e4r funktionen med en aktiv Emby Premium prenumeration.", "MessageToValidateSupporter": "Om du har ett aktivt Emby Premium-medlemskap, se till att du har st\u00e4llt in Emby Premium i Emby Server Dashboard, som du kommer \u00e5t genom att klicka p\u00e5 Emby Premium i huvudmenyn.", @@ -6,7 +8,7 @@ "Share": "Dela", "Add": "L\u00e4gg till", "ServerUpdateNeeded": "Den h\u00e4r Emby servern beh\u00f6ver uppdateras. F\u00f6r att ladda ner senaste versionen, g\u00e5 till {0}", - "LiveTvRequiresUnlock": "Live TV requires an active Emby Premiere subscription.", + "LiveTvRequiresUnlock": "Live TV kr\u00e4ver ett aktivt Emby Premium-medlemskap.", "AttributeNew": "Ny", "Premiere": "Premi\u00e4r", "Live": "Live", @@ -16,18 +18,25 @@ "OriginalAirDateValue": "Ursprungligt s\u00e4ndningsdatum: {0}", "EndsAtValue": "Slutar vid: {0}", "HeaderSelectDate": "V\u00e4lj datum", - "Watched": "Watched", + "Watched": "Sedd", + "AirDate": "S\u00e4ndningstid", "Played": "Visad", "ButtonOk": "Ok", "ButtonCancel": "Avbryt", - "AccessRestrictedTryAgainLater": "Access is currently restricted. Please try again later.", - "ButtonGotIt": "F\u00f6rst\u00e5tt", + "AccessRestrictedTryAgainLater": "\u00c5tkomst \u00e4r begr\u00e4nsad. F\u00f6rs\u00f6k igen senare.", + "ButtonGotIt": "Ok", "ButtonRestart": "Starta om", "RecordingCancelled": "Inspelning avbruten.", "SeriesCancelled": "Serieinspelningen har avbokats.", "RecordingScheduled": "Inspelning schemalagd", "SeriesRecordingScheduled": "Serieinspelning schemalagd.", "HeaderNewRecording": "Ny inspelning", + "WakeServer": "V\u00e4ck server", + "HeaderWakeServer": "V\u00e4ck Server", + "AttemptingWakeServer": "F\u00f6rs\u00f6ker v\u00e4cka servern. V\u00e4nligen v\u00e4nta....", + "WakeServerSuccess": "Lyckades!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "S\u00f6ndag", "Monday": "M\u00e5ndag", "Tuesday": "Tisdag", @@ -36,6 +45,13 @@ "Friday": "Fredag", "Saturday": "L\u00f6rdag", "Days": "Dagar", + "SortByValue": "Sortera efter {0}", + "LabelSortBy": "Sortera efter:", + "LabelSortOrder": "Sortering", + "HeaderPhotoAlbums": "Fotoalbum", + "Photos": "Foton", + "HeaderAppearsOn": "Appears On", + "List": "Lista", "RecordSeries": "Spela in serie", "HeaderCinemaMode": "Biol\u00e4ge", "HeaderCloudSync": "Molnsynkronisering", @@ -44,7 +60,7 @@ "HeaderOfflineDownloads": "Offlinemedia", "HeaderOfflineDownloadsDescription": "Ladda ner media till dina enheter f\u00f6r att sen spela upp dom enkelt offline.", "CloudSyncFeatureDescription": "Synka din media till molnet f\u00f6r l\u00e4tttillg\u00e4ngligt backup, arkivering och konvertering.", - "LiveTvFeatureDescription": "Stream Live TV to any Emby app, with a compatible TV tuner device installed on your Emby Server.", + "LiveTvFeatureDescription": "Str\u00f6mma Live TV till vilken Emby app du vill, med en kompatibel TV-tuner enhet som \u00e4r installerad p\u00e5 din Emby Server.", "DvrFeatureDescription": "Schemal\u00e4gg individuella LiveTV-inspelningar, serie-inspelningar och mer med Emby DVR.", "CinemaModeFeatureDescription": "Biol\u00e4get ger dig en bioupplevelse med trailers och anpassade intros f\u00f6re varje film.", "HeaderFreeApps": "Gratis Emby appar", @@ -64,7 +80,7 @@ "Advanced": "Avancerat", "Delete": "Ta bort", "HeaderDeleteItem": "Radera objekt", - "ConfirmDeleteItem": "Tar du bort det h\u00e4r objeketet tas det ocks\u00e5 bort fr\u00e5n bpde ditt filsystem och mediabibliotek. \u00c4r du s\u00e4ker p\u00e5 att du vill forts\u00e4tta?", + "ConfirmDeleteItem": "Tar du bort det h\u00e4r objeketet s\u00e5 tas det bort fr\u00e5n b\u00e5de ditt filsystem och mediabibliotek. \u00c4r du s\u00e4ker p\u00e5 att du vill forts\u00e4tta?", "Refresh": "Uppdatera", "RefreshQueued": "Uppdatering k\u00f6ad.", "AddToCollection": "L\u00e4gg till samling", @@ -72,12 +88,12 @@ "NewCollection": "Ny samling", "LabelCollection": "Samling:", "Help": "Hj\u00e4lp", - "LabelDisplayMode": "Display mode:", - "Desktop": "Desktop", - "Mobile": "Mobile \/ Tablet", + "LabelDisplayMode": "Visningsl\u00e4ge:", + "Desktop": "Skrivbord", + "Mobile": "Mobil \/ Platta", "TV": "TV", - "DisplayModeHelp": "Select the type of screen you're running Emby on.", - "LabelDisplayLanguage": "Display language:", + "DisplayModeHelp": "V\u00e4lj vilken typ av sk\u00e4rm som du k\u00f6r Emby p\u00e5.", + "LabelDisplayLanguage": "Visningsspr\u00e5k:", "LabelDisplayLanguageHelp": "Att \u00f6vers\u00e4tta Emby \u00e4r ett p\u00e5g\u00e5ende projekt.", "LearnHowYouCanContribute": "Se hur du kan hj\u00e4lpa till.", "NewCollectionHelp": "Samlingar g\u00f6r det m\u00f6jligt att skapa personanpassade grupperingar av filmer eller annat inneh\u00e5ll.", @@ -88,12 +104,12 @@ "EnableBackdrops": "Aktivera fondbilder", "EnableThemeSongsHelp": "Om aktiverat spelas ledmotiv upp vid bl\u00e4ddring i biblioteket.", "EnableBackdropsHelp": "Om aktiverat visas fondbilder i bakgrunden av vissa sidor vid bl\u00e4ddring i biblioteket.", - "EnableThemeVideos": "Enable theme videos", - "EnableThemeVideosHelp": "If enabled, theme videos will be played in the background while browsing the library.", - "RunAtStartup": "Run at startup", + "EnableThemeVideos": "Aktivera tema-videos", + "EnableThemeVideosHelp": "Visar tema-videos i bakgrunden n\u00e4r man bl\u00e4ddrar i biblioteket.", + "RunAtStartup": "K\u00f6r vid uppstart", "LabelScreensaver": "Sk\u00e4rmsl\u00e4ckare:", "LabelSoundEffects": "Ljudeffekter:", - "LabelSkin": "Skin:", + "LabelSkin": "Skal:", "LabelName": "Namn:", "NewCollectionNameExample": "Exemple: Star Wars-samling", "MessageItemsAdded": "Objekt tillagda.", @@ -102,8 +118,8 @@ "AddToPlaylist": "L\u00e4gg till i spellista", "HeaderAddToPlaylist": "L\u00e4gg till i Spellista", "Subtitles": "Undertexter", - "LabelTheme": "Theme:", - "LabelDashboardTheme": "Server dashboard theme:", + "LabelTheme": "Tema:", + "LabelDashboardTheme": "Kontrollpanelstema:", "SearchForSubtitles": "S\u00f6k efter undertexter", "LabelLanguage": "Spr\u00e5k:", "Search": "S\u00f6k", @@ -115,7 +131,7 @@ "MessageDownloadQueued": "Nedladdning k\u00f6ad.", "EditSubtitles": "\u00c4ndra undertexter", "UnlockGuide": "L\u00e5s upp guide", - "RefreshMetadata": "Refresh metadata", + "RefreshMetadata": "Uppdatera metadata", "ReplaceExistingImages": "Skriv \u00f6ver befintliga bilder", "ReplaceAllMetadata": "Ers\u00e4tt all metadata", "SearchForMissingMetadata": "S\u00f6k efter saknad metadata", @@ -138,7 +154,8 @@ "Shuffle": "Blanda", "Identify": "Identifiera", "EditImages": "\u00c4ndra bilder", - "EditInfo": "Redigera info", + "EditMetadata": "Redigera metadata", + "Convert": "Konvertera", "Sync": "Synk", "InstantMix": "Omedelbar mix", "ViewAlbum": "Bl\u00e4ddra album", @@ -149,6 +166,7 @@ "ResumeAt": "\u00c5teruppta fr\u00e5n {0}", "RemoveFromPlaylist": "Ta bort fr\u00e5n spellista", "RemoveFromCollection": "Ta bort fr\u00e5n samling", + "Sort": "Sortera", "Trailer": "Trailer", "MarkPlayed": "Markera som spelad", "MarkUnplayed": "Markera som ospelad", @@ -162,21 +180,26 @@ "VoiceInput": "R\u00f6stinspelning", "LabelContentType": "Inneh\u00e5llstyp:", "LabelPath": "S\u00f6kv\u00e4g:", - "Playlists": "Playlists", + "Playlists": "Spellistor", "LabelTitle": "Titel:", "LabelOriginalTitle": "Original titel:", "LabelSortTitle": "Sorteringstitel:", "LabelDateAdded": "Inlagd den:", + "DateAdded": "Inlagd den", + "DatePlayed": "Senast visad", "ConfigureDateAdded": "Konfigurera hur tillagt datum best\u00e4ms i Emby servern under Biblioteksinst\u00e4llningar", "LabelStatus": "Status:", "LabelArtists": "Artister:", "LabelArtistsHelp": "Separera med ; vid flera", - "HeaderAlbumArtists": "Album Artists", + "HeaderAlbumArtists": "Albumartister", "LabelAlbumArtists": "Albumartist:", "LabelAlbum": "Album:", "Artists": "Artister", + "ImdbRating": "IMDb-betyg", + "CommunityRating": "Anv\u00e4ndaromd\u00f6me", "LabelCommunityRating": "Anv\u00e4ndaromd\u00f6me:", "LabelCriticRating": "Kritikerbetyg:", + "CriticRating": "Kritikerbetyg", "LabelWebsite": "Hemsida:", "LabelTagline": "Slogan:", "LabelOverview": "Synopsis:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Premi\u00e4rdatum:", "LabelYear": "\u00c5r:", "LabelPlaceOfBirth": "F\u00f6delseort:", + "Aired": "S\u00e4ndes", "LabelAirDays": "S\u00e4ndningsdagar:", "LabelAirTime": "S\u00e4ndningstid:", "LabelRuntimeMinutes": "Speltid (min):", @@ -194,12 +218,8 @@ "FormatValue": "Format: {0}", "DownloadsValue": "Nedladdningar: {0}", "PerfectMatch": "Perfekt matchning", - "EnableExternalVideoPlayers": "Enable external video players", - "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Alternativ avsnittsnumrering", - "LabelDvdSeasonNumber": "S\u00e4songsnummer p\u00e5 DVD:", - "LabelDvdEpisodeNumber": "Avsnittsnummer p\u00e5 DVD:", - "LabelAbsoluteEpisodeNumber": "Avsnittsnummer fr\u00e5n start:", + "EnableExternalVideoPlayers": "Aktivera externa videospelare", + "EnableExternalVideoPlayersHelp": "En extern uppspelningsmeny kommer att visas n\u00e4r man startar en videouppspelning.", "HeaderSpecialEpisodeInfo": "Information om specialavsnitt", "LabelAirsBeforeSeason": "S\u00e4nds f\u00f6re s\u00e4song:", "LabelAirsAfterSeason": "S\u00e4nds efter s\u00e4song:", @@ -207,7 +227,7 @@ "HeaderExternalIds": "Externa ID'n:", "HeaderDisplaySettings": "Visningsinst\u00e4llningar", "LabelDisplayOrder": "Visningsordning:", - "Display": "Display", + "Display": "Visning", "Countries": "L\u00e4nder", "Genres": "Genrer", "Studios": "Studior", @@ -241,6 +261,7 @@ "ProductionLocations": "Produktionsplatser", "BirthLocation": "F\u00f6delseort", "ParentalRating": "Parental Rating", + "PlayCount": "Antal visningar", "Name": "Namn", "Overview": "\u00d6versikt", "LabelType": "Typ:", @@ -252,8 +273,8 @@ "GuestStar": "G\u00e4stmedverkande", "Producer": "Producent", "Writer": "Manusf\u00f6rfattare", - "MessageNoSyncJobsFound": "No downloads found. Create download jobs using the Download buttons found throughout the app.", - "MessageNoDownloadsFound": "No offline downloads. Download your media for offline use by clicking Download throughout the app.", + "MessageNoSyncJobsFound": "Inga nedladdningar hittades. Ladda ner genom trycka p\u00e5 Ladda ner i appen.", + "MessageNoDownloadsFound": "Inga offline-nedladdningar. Ladda ner media offline genom att klicka p\u00e5 Ladda ner i appen.", "InstallingPackage": "Installerar {0}", "PackageInstallCompleted": "Installationen av {0} slutf\u00f6rdes.", "PackageInstallFailed": "Installationen av {0} misslyckades.", @@ -289,21 +310,27 @@ "ConfirmDeleteItems": "Tar du bort dessa objekt tas dom ocks\u00e5 bort ifr\u00e5n b\u00e5de ditt filsystem och mediabibliotek. \u00c4r du s\u00e4ker p\u00e5 att du vill forts\u00e4tta?", "PleaseRestartServerName": "V\u00e4nligen starta om Emby Server - {0}.", "LabelSyncJobName": "Synkjobb:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "Kvalitet", - "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", - "DownloadingDots": "Downloading...", - "HeaderSyncRequiresSub": "Downloading requires an active Emby Premiere subscription.", + "LabelSyncNoTargetsHelp": "Det verkar inte som att du k\u00f6r n\u00e5gra appar med st\u00f6d f\u00f6r offline-nedladdning.", + "DownloadingDots": "Laddar ner...", + "HeaderSyncRequiresSub": "Nedladdning kr\u00e4ver en aktiv Emby Premiere-prenumeration.", "LearnMore": "L\u00e4s mer", "LabelProfile": "Profil:", - "LabelBitrateMbps": "Hastighet (Mbps)", - "SyncUnwatchedVideosOnly": "Download unwatched videos only", - "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", - "AutomaticallySyncNewContent": "Automatically download new content", - "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "LabelBitrateMbps": "Bithastighet (Mbps):", + "ConvertUnwatchedVideosOnly": "Konvertera endast osedda videos", + "SyncUnwatchedVideosOnly": "Ladda ned endast osedda videor", + "ConvertUnwatchedVideosOnlyHelp": "Endast osedda videos kommer att konverteras.", + "SyncUnwatchedVideosOnlyHelp": "Endast osedda videor kommer att laddas ned, och videorna kommer tas bort fr\u00e5n enheten n\u00e4r de har setts.", + "AutomaticallySyncNewContent": "Ladda ned nytt inneh\u00e5ll automatiskt", + "AutomaticallySyncNewContentHelp": "Nytt inneh\u00e5ll till den h\u00e4r mappen kommer automatiskt att laddas ned till enheten.", + "AutomaticallyConvertNewContent": "Konvertera nytt inneh\u00e5ll automatiskt", + "AutomaticallyConvertNewContentHelp": "Nytt inneh\u00e5ll till den h\u00e4r mappen kommer automatiskt att konverteras.", "LabelItemLimit": "Max antal objekt:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", - "PleaseSelectDeviceToSyncTo": "Please select a device to download to.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "PleaseSelectDeviceToSyncTo": "V\u00e4lj en enhet att ladda ned till.", "Screenshots": "Sk\u00e4rmbilder", "MoveRight": "H\u00f6ger", "MoveLeft": "V\u00e4nster", @@ -334,9 +361,9 @@ "LabelChannels": "Kanaler:", "ChannelNameOnly": "Endast kanal {0}", "Anytime": "N\u00e4r som helst", - "AnyLanguage": "Any language", + "AnyLanguage": "Vilket spr\u00e5k som helst", "AroundTime": "Runt {0}", - "All": "All", + "All": "Alla", "AllChannels": "Alla kanaler", "LabelRecord": "Spela in:", "NewEpisodesOnly": "Endast nya avsnitt", @@ -385,7 +412,7 @@ "ConfirmRemoveDownload": "Ta bort nedladdning?", "RemoveDownload": "Ta bort nedladdning", "KeepDownload": "Beh\u00e5ll nedladdning", - "AddedOnValue": "{0} tillagd", + "AddedOnValue": "Tillagd {0}", "RemovingFromDevice": "Tar bort fr\u00e5n enhet", "KeepOnDevice": "Beh\u00e5ll p\u00e5 enhet", "CancelDownload": "Avbryt nedladdning", @@ -421,18 +448,19 @@ "HeaderMyMedia": "Min Media", "HeaderMyMediaSmall": "Min Media (liten)", "LatestFromLibrary": "Senaste {0}", - "ContinueWatching": "Continue watching", + "ContinueWatching": "Forts\u00e4tt titta p\u00e5", "HeaderLatestChannelMedia": "Senaste nytt i Kanaler", "HeaderContinueWatching": "Forts\u00e4tt kolla p\u00e5", "HeaderContinueListening": "Forts\u00e4tt lyssna p\u00e5", "HeaderActiveRecordings": "P\u00e5g\u00e5ende inspelningar", "HeaderLatestRecordings": "Senaste inspelningar", "LabelSyncTo": "Synka till:", - "Next": "Next", - "LabelSource": "Source:", + "LabelConvertTo": "Konvertera till:", + "Next": "N\u00e4sta", + "LabelSource": "K\u00e4lla:", "LabelVersion": "Version:", - "AllLanguages": "All languages", - "Previous": "Previous", + "AllLanguages": "Alla spr\u00e5k", + "Previous": "F\u00f6reg\u00e5ende", "HeaderNextUp": "N\u00e4sta p\u00e5 tur", "HeaderLatestFrom": "Senaste fr\u00e5n {0}", "LabelHomeScreenSectionValue": "Hemsk\u00e4rmsdel {0}:", @@ -441,10 +469,10 @@ "More": "Mer", "Up": "Upp", "Down": "Ner", + "Home": "Hem", + "Favorites": "Favoriter", "HeaderHomeScreen": "Hemsk\u00e4rm", - "HeaderHomeScreenContent": "Home Screen Content", "HeaderLatestChannelItems": "Senaste nytt i Kanaler", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "Biblioteksordning", "HideWatchedContentFromLatestMedia": "D\u00f6lj visat inneh\u00e5ll ifr\u00e5n senaste media", "HeaderOnNow": "Visas nu", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "S\u00e4tt in skivan f\u00f6r att kunna spela upp den h\u00e4r videon.", "Guide": "Guide", "Suggestions": "F\u00f6rslag", - "Favorites": "Favoriter", + "HeaderFavoriteCollections": "Favorite Collections", + "HeaderFavoritePlaylists": "Favorite Playlists", "Collections": "Samlingar", "LabelSelectFolderGroups": "Gruppera automatiskt inneh\u00e5ll fr\u00e5n dessa mappar i vyer, t ex Filmer, Musik eller TV:", "LabelSelectFolderGroupsHelp": "Ej valda mappar kommer att visas f\u00f6r sig sj\u00e4lva i en egen vy.", + "Folders": "Mappar", + "DisplayInOtherHomeScreenSections": "Visa sektioner p\u00e5 hemsk\u00e4rmen som till exempel senast media och forts\u00e4tt kolla p\u00e5", + "DisplayInMyMedia": "Visa p\u00e5 hemsk\u00e4rmen", "Shows": "Serier", "HeaderLibraryFolders": "Biblioteksmappar", - "HeaderLandingScreens": "Landningssidor", - "LandingScreensHelp": "V\u00e4lj landningssidan som ska visas n\u00e4r man v\u00e4ljer ett bibliotek.", "HeaderTermsOfPurchase": "K\u00f6pvillkor", "PrivacyPolicy": "Sekretesspolicy", "TermsOfUse": "Anv\u00e4ndarvillkor", "RepeatMode": "Repeat-l\u00e4ge", "RepeatOne": "Upprepa en g\u00e5ng", "RepeatAll": "Upprepa alla", - "ConfirmEndPlayerSession": "Vill du st\u00e4nga ner Emby p\u00e5 enheten?", + "LabelDefaultScreen": "F\u00f6rvald sektion:", + "ConfirmEndPlayerSession": "Vill du st\u00e4nga ner Emby p\u00e5 {0}?", "Yes": "Ja", "No": "Nej", "LiveTV": "Live-TV", @@ -484,13 +515,14 @@ "DirectPlaying": "Direktuppspelning", "DirectStreaming": "Direktstr\u00f6mning", "Transcoding": "Omkodning", - "ContainerBitrateExceedsLimit": "Media bitrate exceeds limit.", + "ContainerBitrateExceedsLimit": "Medians bithastighet \u00f6verskrider begr\u00e4nsningen", "VideoCodecNotSupported": "Video codec st\u00f6ds inte", "AudioCodecNotSupported": "Ljud codec st\u00f6ds inte", "SubtitleCodecNotSupported": "Undertextsformatet st\u00f6ds inte", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Kontainern st\u00f6ds inte", "VideoLevelNotSupported": "Videoniv\u00e5n st\u00f6ds inte", - "AudioBitrateNotSupported": "Ljudbitrate st\u00f6ds inte", + "AudioBitrateNotSupported": "Ljudbithastigheten st\u00f6ds inte", "AudioChannelsNotSupported": "Ljudkanaler st\u00f6ds inte", "VideoResolutionNotSupported": "Bilduppl\u00f6sning st\u00f6ds inte", "AudioProfileNotSupported": "Ljudprofil st\u00f6ds inte", @@ -507,9 +539,9 @@ "GuestUserNotFound": "Anv\u00e4ndaren kunde inte hittas. Se till s\u00e5 att namnet \u00e4r korrekt och f\u00f6rs\u00f6k igen, eller pr\u00f6va att ange emailadressen ist\u00e4llet.", "ErrorReachingEmbyConnect": "Ett fel uppstod n\u00e4r Emby Connect f\u00f6rs\u00f6kte n\u00e5s. Se till att du har en aktiv internetuppkoppling och f\u00f6rs\u00f6k igen.", "ErrorAddingEmbyConnectAccount1": "Det gick inte att l\u00e4gga till ditt Emby Connect-konto. Har du ett Emby Connect-konto? Du kan skapa ett p\u00e5 {0}", - "ErrorAddingEmbyConnectAccount2": "If you're still having an issue, please send an email to {0} from the email address used with the Emby account.", + "ErrorAddingEmbyConnectAccount2": "Om du fortfarande upplever problem, v\u00e4nligen skicka ett mail till {0} fr\u00e5n emailadressen som \u00e4r kopplat till Emby-kontot.", "ErrorAddingGuestAccount1": "Det gick inte att l\u00e4gga till Emby Connect-kontot. Har din g\u00e4st ett Emby-konto? Dom kan skapa ett p\u00e5 {0}", - "ErrorAddingGuestAccount2": "If you're still having an issue, please send an email to {0}, and include your email address as well as theirs.", + "ErrorAddingGuestAccount2": "Om du fortfarande upplever problem, v\u00e4nligen skicka ett mail till {0}, och inkludera din emailadress tillsammans med deras.", "MessageEmbyAccountAdded": "Embykontot har lagts till f\u00f6r den h\u00e4r anv\u00e4ndaren.", "MessagePendingEmbyAccountAdded": "Emby-kontot har lagts till den h\u00e4r anv\u00e4ndaren. Ett mail har skickats ut till \u00e4gren av kontot. Inbjudan bekr\u00e4ftas genom att klicka p\u00e5 l\u00e4nken i mailet.", "HeaderEmbyAccountAdded": "Embykontot har lagts till", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "Det gick inte att ta bort det h\u00e4r objektet fr\u00e5n Emby-servern. Kontrollera att Emby-servern har skrivr\u00e4ttigheter till media-mappen och f\u00f6rs\u00f6k igen.", "NoSubtitles": "Inga undertexter", "Default": "Standard", + "Absolute": "Absolute", "Smart": "Smart", "Small": "Liten", + "Smaller": "Smaller", "Medium": "Medium", "Large": "Stor", "ExtraLarge": "Extra stor", @@ -551,24 +585,25 @@ "BurnSubtitlesHelp": "Avg\u00f6r ifall servern ska \"br\u00e4nna in\" undertexterna under videokonverteringen, beroende p\u00e5 undertextsformatet. Att undvika inbr\u00e4nning av undertexter kommer att f\u00f6rb\u00e4ttra prestandan p\u00e5 servern. V\u00e4lj Auto f\u00f6r att br\u00e4nna image-baserade formats (ex. VOBSUB, PGS, SUB\/IDX, etc.) as well as certain ASS\/SSA undertexter.", "AllComplexFormats": "Alla komplexa format (ASS, SSA, VOBSUB, PGS, SUB\/IDX, etc.)", "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "Dessa inst\u00e4llningar g\u00e4ller ocks\u00e5 f\u00f6r alla uppspelningar p\u00e5 Chromecast som startas av den h\u00e4r enheten.", - "HeaderWaitingForWifi": "Waiting for Wifi", - "WifiRequiredToDownload": "A Wifi connection is required to continue downloading.", - "HeaderDownloadSettings": "Download Settings", - "Hide": "Hide", + "HeaderWaitingForWifi": "V\u00e4ntar p\u00e5 Wifi", + "WifiRequiredToDownload": "En Wifi-anslutning kr\u00e4vs f\u00f6r att forts\u00e4tta nedladdningen.", + "HeaderDownloadSettings": "Nedladdningsinst\u00e4llningar", + "Hide": "D\u00f6lj", "HeaderStartNow": "Starta nu", "HeaderNextVideoPlayingInValue": "N\u00e4sta video b\u00f6rjar om {0}", "HeaderNextEpisodePlayingInValue": "N\u00e4sta avsnitt b\u00f6rjar om {0}", "HeaderSecondsValue": "{0} sekunder", - "AudioBitDepthNotSupported": "Audio bit depth not supported", - "VideoProfileNotSupported": "Video profile not supported", - "VideoFramerateNotSupported": "Video framerate not supported", - "VideoBitDepthNotSupported": "Video bit depth not supported", - "RefFramesNotSupported": "Number of video reference frames not supported", + "AudioBitDepthNotSupported": "Ljudets bitdjup st\u00f6ds inte", + "VideoProfileNotSupported": "Videoprofilen st\u00f6ds inte", + "VideoFramerateNotSupported": "Videons framerate st\u00f6ds inte", + "VideoBitDepthNotSupported": "Videons bitdjup st\u00f6ds inte", + "RefFramesNotSupported": "Antal video reference frames som inte st\u00f6ds", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", - "StopRecording": "Stop recording", - "ManageRecording": "Manage recording", + "StopRecording": "Avbryt inspelning", + "HeaderStopRecording": "Stop Recording", + "ManageRecording": "Hantera inspelning", "LabelDropImageHere": "Sl\u00e4pp en bild h\u00e4r, eller klicka f\u00f6r att bl\u00e4ddra.", - "MessageFileReadError": "There was an error reading the file. Please try again.", + "MessageFileReadError": "Ett fel uppstod n\u00e4r filen l\u00e4stes in. Var god f\u00f6rs\u00f6k igen.", "Browse": "Bl\u00e4ddra", "HeaderUploadImage": "Ladda upp bild", "HeaderAddUpdateImage": "L\u00e4gg till\/uppdatera bild", @@ -598,40 +633,57 @@ "LabelSkipBackLength": "'Hoppa bak\u00e5t'-l\u00e4ngd:", "LabelSkipForwardLength": "'Hoppa fram\u00e5t'-l\u00e4ngd:", "EnableCinemaMode": "Aktivera biol\u00e4ge", - "LabelInternetQuality": "Internet quality:", - "HeaderMusicQuality": "Music Quality", + "LabelInternetQuality": "Internetkvalitet:", + "HeaderMusicQuality": "Musikkvalitet:", "LabelHomeNetworkQuality": "Hemn\u00e4tverkskvalitet:", "HeaderLatestMedia": "Nytillkommet", "HeaderRestartingEmbyServer": "Startar om Emby-servern", "RestartPleaseWaitMessage": "V\u00e4nligen v\u00e4nta medan Emby-servern st\u00e4ngs av och startar om. Detta kan ta en minut eller tv\u00e5.", - "PlayNext": "Play next", + "PlayNext": "Spela n\u00e4sta", "AllowSeasonalThemes": "Till\u00e5t automatiska s\u00e4songsbaserade teman", "AllowSeasonalThemesHelp": "Om aktiverat kommer s\u00e4songsteman emellan\u00e5t kringg\u00e5 din temainst\u00e4llning.", "AutoBasedOnLanguageSetting": "Automatisk (baserad p\u00e5 spr\u00e5kinst\u00e4llning)", - "LabelDateTimeLocale": "Date time locale:", - "DirectorValue": "Regiss\u00f6r: {0}", - "DirectorsValue": "Regiss\u00f6rer: {0}", + "LabelDateTimeLocale": "Spr\u00e5ktidsformat:", + "DirectorValue": "Regi: {0}", + "DirectorsValue": "Regi: {0}", "GenreValue": "Genre: {0}", "GenresValue": "Genrer: {0}", "LinksValue": "L\u00e4nkar: {0}", "TagsValue": "Etiketter: {0}", - "LabelAudio": "Audio:", + "LabelAudio": "Ljud:", "LabelVideo": "Video:", - "LabelSubtitles": "Subtitles:", - "Off": "Off", - "ShowTitle": "Show title", - "ShowYear": "Show year", - "Filters": "Filters", - "Unplayed": "Unplayed", - "LabelTVHomeScreen": "TV mode home screen:", - "Horizontal": "Horizontal", - "Vertical": "Vertical", - "GroupBySeries": "Group by series", - "HeaderVideoType": "Video Type", - "HeaderSeriesStatus": "Series Status", - "Features": "Features", + "LabelSubtitles": "Undertexter:", + "Off": "Av", + "ShowTitle": "Visa titel", + "ShowYear": "Visa \u00e5r", + "Filters": "Filter", + "Unplayed": "Inte spelad", + "LabelTVHomeScreen": "Hemsk\u00e4rm i TV-l\u00e4ge:", + "Horizontal": "Horisontell", + "Vertical": "Vertikal", + "GroupBySeries": "Gruppera efter serie", + "HeaderVideoType": "Videotyp", + "HeaderSeriesStatus": "Seriestatus", + "Features": "Inneh\u00e5ll", "Trailers": "Trailers", "Extras": "Extras", - "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeSongs": "Vinjetter", + "ThemeVideos": "Temavideos", + "HeaderFavoriteMovies": "Favoritfilmer", + "HeaderFavoriteShows": "Favoritserier", + "HeaderFavoriteEpisodes": "Favoritavsnitt", + "HeaderFavoriteVideos": "Favoritvideos", + "HeaderFavoriteGames": "Favoritspel", + "HeaderFavoriteArtists": "Favoritartister", + "HeaderFavoriteAlbums": "Favoritalbum", + "HeaderFavoriteSongs": "Favoritl\u00e5tar", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Color space", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/tr.json b/dashboard-ui/bower_components/emby-webcomponents/strings/tr.json index b94f262daa..1f6742fb1b 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/tr.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/tr.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", @@ -17,6 +19,7 @@ "EndsAtValue": "Ends at {0}", "HeaderSelectDate": "Tarihi Se\u00e7in", "Watched": "Watched", + "AirDate": "Air date", "Played": "Played", "ButtonOk": "Tamam", "ButtonCancel": "\u0130ptal", @@ -28,6 +31,12 @@ "RecordingScheduled": "Recording scheduled.", "SeriesRecordingScheduled": "Series recording scheduled.", "HeaderNewRecording": "New Recording", + "WakeServer": "Wake server", + "HeaderWakeServer": "Wake Server", + "AttemptingWakeServer": "Attempting to wake server. Please wait...", + "WakeServerSuccess": "Success!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "Pazar", "Monday": "Pazartesi", "Tuesday": "Sal\u0131", @@ -36,6 +45,13 @@ "Friday": "Cuma", "Saturday": "Cumartesi", "Days": "G\u00fcnler", + "SortByValue": "Sort by {0}", + "LabelSortBy": "Sort by:", + "LabelSortOrder": "Sort order:", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "Photos", + "HeaderAppearsOn": "Appears On", + "List": "List", "RecordSeries": "Record series", "HeaderCinemaMode": "Cinema Mode", "HeaderCloudSync": "Cloud Sync", @@ -138,7 +154,8 @@ "Shuffle": "Shuffle", "Identify": "Identify", "EditImages": "Edit images", - "EditInfo": "Edit info", + "EditMetadata": "Edit metadata", + "Convert": "Convert", "Sync": "Sync", "InstantMix": "Instant mix", "ViewAlbum": "View album", @@ -149,6 +166,7 @@ "ResumeAt": "Resume from {0}", "RemoveFromPlaylist": "Remove from playlist", "RemoveFromCollection": "Remove from collection", + "Sort": "Sort", "Trailer": "Trailer", "MarkPlayed": "Mark played", "MarkUnplayed": "Mark unplayed", @@ -157,7 +175,7 @@ "TryMultiSelect": "Try Multi-Select", "TryMultiSelectMessage": "To edit multiple media items, just click and hold any poster and select the items you want to manage. Try it!", "HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation", - "MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?", + "MessageConfirmRecordingCancellation": "Cancel recording?", "Error": "Error", "VoiceInput": "Voice Input", "LabelContentType": "Content type:", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "Original title:", "LabelSortTitle": "Sort title:", "LabelDateAdded": "Date added:", + "DateAdded": "Date added", + "DatePlayed": "Date played", "ConfigureDateAdded": "Configure how date added is determined in the Emby Server dashboard under Library settings", "LabelStatus": "Status:", "LabelArtists": "Artists:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "Artists": "Artists", + "ImdbRating": "IMDb rating", + "CommunityRating": "Community rating", "LabelCommunityRating": "Community rating:", "LabelCriticRating": "Critic rating:", + "CriticRating": "Critic rating", "LabelWebsite": "Website:", "LabelTagline": "Tagline:", "LabelOverview": "Overview:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Release date:", "LabelYear": "Y\u0131l:", "LabelPlaceOfBirth": "Place of birth:", + "Aired": "Aired", "LabelAirDays": "Air days:", "LabelAirTime": "Air time:", "LabelRuntimeMinutes": "Run time (minutes):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Original aspect ratio:", "Label3DFormat": "3D format:", "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Perfect match", "EnableExternalVideoPlayers": "Enable external video players", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Alternate Episode Numbers", - "LabelDvdSeasonNumber": "Dvd season number:", - "LabelDvdEpisodeNumber": "Dvd episode number:", - "LabelAbsoluteEpisodeNumber": "Absolute episode number:", "HeaderSpecialEpisodeInfo": "Special Episode Info", "LabelAirsBeforeSeason": "Airs before season:", "LabelAirsAfterSeason": "Airs after season:", @@ -234,13 +254,14 @@ "Continuing": "Devam ediyor", "Ended": "Sonland\u0131", "HeaderEnabledFields": "Enabled Fields", - "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent it's data from being changed.", + "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent its data from being changed.", "Backdrops": "Backdrops", "Images": "Images", "Runtime": "Runtime", "ProductionLocations": "Production locations", "BirthLocation": "Birth location", "ParentalRating": "Ebeveyn de\u011feri", + "PlayCount": "Play count", "Name": "Name", "Overview": "Overview", "LabelType": "T\u00fcr:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "Deleting these items will delete them from both the file system and your media library. Are you sure you wish to continue?", "PleaseRestartServerName": "Please restart Emby Server - {0}.", "LabelSyncJobName": "Sync job name:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "Quality:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", "DownloadingDots": "Downloading...", @@ -297,12 +319,17 @@ "LearnMore": "Learn more", "LabelProfile": "Profile:", "LabelBitrateMbps": "Bitrate (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "Download unwatched videos only", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", "AutomaticallySyncNewContent": "Automatically download new content", "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "Item limit:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "Please select a device to download to.", "Screenshots": "Screenshots", "MoveRight": "Move right", @@ -428,6 +455,7 @@ "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", "LabelSyncTo": "Sync to:", + "LabelConvertTo": "Convert to:", "Next": "Next", "LabelSource": "Source:", "LabelVersion": "Version:", @@ -441,10 +469,10 @@ "More": "More", "Up": "Up", "Down": "Down", + "Home": "Home", + "Favorites": "Favorites", "HeaderHomeScreen": "Home Screen", - "HeaderHomeScreenContent": "Home Screen Content", "HeaderLatestChannelItems": "Latest Channel Items", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "Library Order", "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", "HeaderOnNow": "On Now", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.", "Guide": "Guide", "Suggestions": "Suggestions", - "Favorites": "Favorites", + "HeaderFavoriteCollections": "Favorite Collections", + "HeaderFavoritePlaylists": "Favorite Playlists", "Collections": "Collections", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", "Shows": "Shows", "HeaderLibraryFolders": "Library Folders", - "HeaderLandingScreens": "Landing Screens", - "LandingScreensHelp": "Select the default landing screen when clicking on a library.", "HeaderTermsOfPurchase": "Terms of Purchase", "PrivacyPolicy": "Privacy policy", "TermsOfUse": "Terms of use", "RepeatMode": "Repeat mode", "RepeatOne": "Repeat one", "RepeatAll": "Repeat all", - "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", + "LabelDefaultScreen": "Default screen:", + "ConfirmEndPlayerSession": "Would you like to shutdown Emby on {0}?", "Yes": "Yes", "No": "No", "LiveTV": "Live TV", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video codec not supported", "AudioCodecNotSupported": "Audio codec not supported", "SubtitleCodecNotSupported": "Subtitle format not supported", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Container not supported", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "No subtitles", "Default": "Default", + "Absolute": "Absolute", "Smart": "Smart", "Small": "Small", + "Smaller": "Smaller", "Medium": "Medium", "Large": "Large", "ExtraLarge": "Extra large", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Stop recording", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Manage recording", "LabelDropImageHere": "Drop image here, or click to browse.", "MessageFileReadError": "There was an error reading the file. Please try again.", @@ -633,5 +668,22 @@ "Trailers": "Trailers", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteVideos": "Favorite Videos", + "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteSongs": "Favorite Songs", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Color space", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/uk.json b/dashboard-ui/bower_components/emby-webcomponents/strings/uk.json index 573351212f..fb3b9afe5d 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/uk.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/uk.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", @@ -17,6 +19,7 @@ "EndsAtValue": "Ends at {0}", "HeaderSelectDate": "Select Date", "Watched": "Watched", + "AirDate": "Air date", "Played": "Played", "ButtonOk": "Ok", "ButtonCancel": "\u0421\u043a\u0430\u0441\u0443\u0432\u0430\u0442\u0438", @@ -28,6 +31,12 @@ "RecordingScheduled": "Recording scheduled.", "SeriesRecordingScheduled": "Series recording scheduled.", "HeaderNewRecording": "New Recording", + "WakeServer": "Wake server", + "HeaderWakeServer": "Wake Server", + "AttemptingWakeServer": "Attempting to wake server. Please wait...", + "WakeServerSuccess": "Success!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "Sunday", "Monday": "Monday", "Tuesday": "Tuesday", @@ -36,6 +45,13 @@ "Friday": "Friday", "Saturday": "Saturday", "Days": "Days", + "SortByValue": "Sort by {0}", + "LabelSortBy": "Sort by:", + "LabelSortOrder": "Sort order:", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "Photos", + "HeaderAppearsOn": "Appears On", + "List": "List", "RecordSeries": "Record series", "HeaderCinemaMode": "Cinema Mode", "HeaderCloudSync": "Cloud Sync", @@ -138,7 +154,8 @@ "Shuffle": "Shuffle", "Identify": "Identify", "EditImages": "Edit images", - "EditInfo": "Edit info", + "EditMetadata": "Edit metadata", + "Convert": "Convert", "Sync": "Sync", "InstantMix": "Instant mix", "ViewAlbum": "View album", @@ -149,6 +166,7 @@ "ResumeAt": "Resume from {0}", "RemoveFromPlaylist": "Remove from playlist", "RemoveFromCollection": "Remove from collection", + "Sort": "Sort", "Trailer": "Trailer", "MarkPlayed": "Mark played", "MarkUnplayed": "Mark unplayed", @@ -157,7 +175,7 @@ "TryMultiSelect": "Try Multi-Select", "TryMultiSelectMessage": "To edit multiple media items, just click and hold any poster and select the items you want to manage. Try it!", "HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation", - "MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?", + "MessageConfirmRecordingCancellation": "Cancel recording?", "Error": "Error", "VoiceInput": "Voice Input", "LabelContentType": "Content type:", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "Original title:", "LabelSortTitle": "Sort title:", "LabelDateAdded": "Date added:", + "DateAdded": "Date added", + "DatePlayed": "Date played", "ConfigureDateAdded": "Configure how date added is determined in the Emby Server dashboard under Library settings", "LabelStatus": "Status:", "LabelArtists": "Artists:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "Artists": "Artists", + "ImdbRating": "IMDb rating", + "CommunityRating": "Community rating", "LabelCommunityRating": "Community rating:", "LabelCriticRating": "Critic rating:", + "CriticRating": "Critic rating", "LabelWebsite": "Website:", "LabelTagline": "Tagline:", "LabelOverview": "Overview:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Release date:", "LabelYear": "Year:", "LabelPlaceOfBirth": "Place of birth:", + "Aired": "Aired", "LabelAirDays": "Air days:", "LabelAirTime": "Air time:", "LabelRuntimeMinutes": "Run time (minutes):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Original aspect ratio:", "Label3DFormat": "3D format:", "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Perfect match", "EnableExternalVideoPlayers": "Enable external video players", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Alternate Episode Numbers", - "LabelDvdSeasonNumber": "Dvd season number:", - "LabelDvdEpisodeNumber": "Dvd episode number:", - "LabelAbsoluteEpisodeNumber": "Absolute episode number:", "HeaderSpecialEpisodeInfo": "Special Episode Info", "LabelAirsBeforeSeason": "Airs before season:", "LabelAirsAfterSeason": "Airs after season:", @@ -234,13 +254,14 @@ "Continuing": "Continuing", "Ended": "Ended", "HeaderEnabledFields": "Enabled Fields", - "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent it's data from being changed.", + "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent its data from being changed.", "Backdrops": "Backdrops", "Images": "Images", "Runtime": "Runtime", "ProductionLocations": "Production locations", "BirthLocation": "Birth location", "ParentalRating": "Parental Rating", + "PlayCount": "Play count", "Name": "Name", "Overview": "Overview", "LabelType": "Type:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "Deleting these items will delete them from both the file system and your media library. Are you sure you wish to continue?", "PleaseRestartServerName": "Please restart Emby Server - {0}.", "LabelSyncJobName": "Sync job name:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "Quality:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", "DownloadingDots": "Downloading...", @@ -297,12 +319,17 @@ "LearnMore": "Learn more", "LabelProfile": "Profile:", "LabelBitrateMbps": "Bitrate (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "Download unwatched videos only", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", "AutomaticallySyncNewContent": "Automatically download new content", "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "Item limit:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "Please select a device to download to.", "Screenshots": "Screenshots", "MoveRight": "Move right", @@ -428,6 +455,7 @@ "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", "LabelSyncTo": "Sync to:", + "LabelConvertTo": "Convert to:", "Next": "Next", "LabelSource": "Source:", "LabelVersion": "Version:", @@ -441,10 +469,10 @@ "More": "More", "Up": "Up", "Down": "Down", + "Home": "Home", + "Favorites": "Favorites", "HeaderHomeScreen": "Home Screen", - "HeaderHomeScreenContent": "Home Screen Content", "HeaderLatestChannelItems": "Latest Channel Items", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "Library Order", "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", "HeaderOnNow": "On Now", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.", "Guide": "Guide", "Suggestions": "Suggestions", - "Favorites": "Favorites", + "HeaderFavoriteCollections": "Favorite Collections", + "HeaderFavoritePlaylists": "Favorite Playlists", "Collections": "Collections", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", "Shows": "Shows", "HeaderLibraryFolders": "Library Folders", - "HeaderLandingScreens": "Landing Screens", - "LandingScreensHelp": "Select the default landing screen when clicking on a library.", "HeaderTermsOfPurchase": "Terms of Purchase", "PrivacyPolicy": "Privacy policy", "TermsOfUse": "Terms of use", "RepeatMode": "Repeat mode", "RepeatOne": "Repeat one", "RepeatAll": "Repeat all", - "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", + "LabelDefaultScreen": "Default screen:", + "ConfirmEndPlayerSession": "Would you like to shutdown Emby on {0}?", "Yes": "Yes", "No": "No", "LiveTV": "Live TV", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video codec not supported", "AudioCodecNotSupported": "Audio codec not supported", "SubtitleCodecNotSupported": "Subtitle format not supported", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Container not supported", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "No subtitles", "Default": "Default", + "Absolute": "Absolute", "Smart": "Smart", "Small": "Small", + "Smaller": "Smaller", "Medium": "Medium", "Large": "Large", "ExtraLarge": "Extra large", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Stop recording", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Manage recording", "LabelDropImageHere": "Drop image here, or click to browse.", "MessageFileReadError": "There was an error reading the file. Please try again.", @@ -633,5 +668,22 @@ "Trailers": "Trailers", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteVideos": "Favorite Videos", + "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteSongs": "Favorite Songs", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Color space", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/vi.json b/dashboard-ui/bower_components/emby-webcomponents/strings/vi.json index 2a6118fbea..d18888a4cb 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/vi.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/vi.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", @@ -17,6 +19,7 @@ "EndsAtValue": "Ends at {0}", "HeaderSelectDate": "Select Date", "Watched": "Watched", + "AirDate": "Air date", "Played": "Played", "ButtonOk": "Ok", "ButtonCancel": "Tho\u00e1t", @@ -28,6 +31,12 @@ "RecordingScheduled": "Recording scheduled.", "SeriesRecordingScheduled": "Series recording scheduled.", "HeaderNewRecording": "New Recording", + "WakeServer": "Wake server", + "HeaderWakeServer": "Wake Server", + "AttemptingWakeServer": "Attempting to wake server. Please wait...", + "WakeServerSuccess": "Success!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "Ch\u1ee7 Nh\u1eadt", "Monday": "Th\u1ee9 Hai", "Tuesday": "Tuesday", @@ -36,6 +45,13 @@ "Friday": "Friday", "Saturday": "Th\u1ee9 B\u1ea3y", "Days": "Days", + "SortByValue": "Sort by {0}", + "LabelSortBy": "Sort by:", + "LabelSortOrder": "Sort order:", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "Photos", + "HeaderAppearsOn": "Appears On", + "List": "List", "RecordSeries": "Record series", "HeaderCinemaMode": "Cinema Mode", "HeaderCloudSync": "Cloud Sync", @@ -138,7 +154,8 @@ "Shuffle": "Shuffle", "Identify": "Identify", "EditImages": "Edit images", - "EditInfo": "Edit info", + "EditMetadata": "Edit metadata", + "Convert": "Convert", "Sync": "Sync", "InstantMix": "Instant mix", "ViewAlbum": "View album", @@ -149,6 +166,7 @@ "ResumeAt": "Resume from {0}", "RemoveFromPlaylist": "Remove from playlist", "RemoveFromCollection": "Remove from collection", + "Sort": "Sort", "Trailer": "Trailer", "MarkPlayed": "Mark played", "MarkUnplayed": "Mark unplayed", @@ -157,7 +175,7 @@ "TryMultiSelect": "Try Multi-Select", "TryMultiSelectMessage": "To edit multiple media items, just click and hold any poster and select the items you want to manage. Try it!", "HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation", - "MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?", + "MessageConfirmRecordingCancellation": "Cancel recording?", "Error": "Error", "VoiceInput": "Voice Input", "LabelContentType": "Content type:", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "Original title:", "LabelSortTitle": "Sort title:", "LabelDateAdded": "Date added:", + "DateAdded": "Date added", + "DatePlayed": "Date played", "ConfigureDateAdded": "Configure how date added is determined in the Emby Server dashboard under Library settings", "LabelStatus": "Status:", "LabelArtists": "Artists:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "Artists": "Artists", + "ImdbRating": "IMDb rating", + "CommunityRating": "Community rating", "LabelCommunityRating": "Community rating:", "LabelCriticRating": "Critic rating:", + "CriticRating": "Critic rating", "LabelWebsite": "Website:", "LabelTagline": "Tagline:", "LabelOverview": "Overview:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Release date:", "LabelYear": "Year:", "LabelPlaceOfBirth": "Place of birth:", + "Aired": "Aired", "LabelAirDays": "Air days:", "LabelAirTime": "Air time:", "LabelRuntimeMinutes": "Run time (minutes):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Original aspect ratio:", "Label3DFormat": "3D format:", "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Perfect match", "EnableExternalVideoPlayers": "Enable external video players", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Alternate Episode Numbers", - "LabelDvdSeasonNumber": "Dvd season number:", - "LabelDvdEpisodeNumber": "Dvd episode number:", - "LabelAbsoluteEpisodeNumber": "Absolute episode number:", "HeaderSpecialEpisodeInfo": "Special Episode Info", "LabelAirsBeforeSeason": "Airs before season:", "LabelAirsAfterSeason": "Airs after season:", @@ -234,13 +254,14 @@ "Continuing": "Continuing", "Ended": "Ended", "HeaderEnabledFields": "Enabled Fields", - "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent it's data from being changed.", + "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent its data from being changed.", "Backdrops": "Backdrops", "Images": "Images", "Runtime": "Runtime", "ProductionLocations": "Production locations", "BirthLocation": "Birth location", "ParentalRating": "Parental Rating", + "PlayCount": "Play count", "Name": "Name", "Overview": "Overview", "LabelType": "Type:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "Deleting these items will delete them from both the file system and your media library. Are you sure you wish to continue?", "PleaseRestartServerName": "Please restart Emby Server - {0}.", "LabelSyncJobName": "Sync job name:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "Quality:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", "DownloadingDots": "Downloading...", @@ -297,12 +319,17 @@ "LearnMore": "Learn more", "LabelProfile": "Profile:", "LabelBitrateMbps": "Bitrate (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "Download unwatched videos only", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", "AutomaticallySyncNewContent": "Automatically download new content", "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "Item limit:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "Please select a device to download to.", "Screenshots": "Screenshots", "MoveRight": "Move right", @@ -428,6 +455,7 @@ "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", "LabelSyncTo": "Sync to:", + "LabelConvertTo": "Convert to:", "Next": "Next", "LabelSource": "Source:", "LabelVersion": "Version:", @@ -441,10 +469,10 @@ "More": "More", "Up": "Up", "Down": "Down", + "Home": "Home", + "Favorites": "Favorites", "HeaderHomeScreen": "Home Screen", - "HeaderHomeScreenContent": "Home Screen Content", "HeaderLatestChannelItems": "Latest Channel Items", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "Library Order", "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", "HeaderOnNow": "On Now", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.", "Guide": "Guide", "Suggestions": "Suggestions", - "Favorites": "Favorites", + "HeaderFavoriteCollections": "Favorite Collections", + "HeaderFavoritePlaylists": "Favorite Playlists", "Collections": "Collections", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", "Shows": "Shows", "HeaderLibraryFolders": "Library Folders", - "HeaderLandingScreens": "Landing Screens", - "LandingScreensHelp": "Select the default landing screen when clicking on a library.", "HeaderTermsOfPurchase": "Terms of Purchase", "PrivacyPolicy": "Privacy policy", "TermsOfUse": "Terms of use", "RepeatMode": "Repeat mode", "RepeatOne": "Repeat one", "RepeatAll": "Repeat all", - "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", + "LabelDefaultScreen": "Default screen:", + "ConfirmEndPlayerSession": "Would you like to shutdown Emby on {0}?", "Yes": "Yes", "No": "No", "LiveTV": "Live TV", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video codec not supported", "AudioCodecNotSupported": "Audio codec not supported", "SubtitleCodecNotSupported": "Subtitle format not supported", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Container not supported", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "No subtitles", "Default": "Default", + "Absolute": "Absolute", "Smart": "Smart", "Small": "Small", + "Smaller": "Smaller", "Medium": "Medium", "Large": "Large", "ExtraLarge": "Extra large", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Stop recording", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Manage recording", "LabelDropImageHere": "Drop image here, or click to browse.", "MessageFileReadError": "There was an error reading the file. Please try again.", @@ -633,5 +668,22 @@ "Trailers": "Trailers", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteVideos": "Favorite Videos", + "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteSongs": "Favorite Songs", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Color space", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-cn.json b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-cn.json index 3b19e2edea..e792e30cc4 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-cn.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-cn.json @@ -1,33 +1,42 @@ { - "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", - "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", - "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", + "MessageUnlockAppWithPurchaseOrSupporter": "\u901a\u8fc7\u4e00\u6b21\u6027\u4ed8\u8d39\u6216\u4e00\u4e2a\u6709\u6548\u7684 Emby Premiere \u8ba2\u9605\u6765\u89e3\u9501\u8fd9\u9879\u529f\u80fd\u3002", + "MessageUnlockAppWithSupporter": "\u901a\u8fc7\u4e00\u4e2a\u6709\u6548\u7684 Emby Premiere \u8ba2\u9605\u6765\u89e3\u9501\u8fd9\u9879\u529f\u80fd\u3002", + "MessageToValidateSupporter": "\u5982\u679c\u4f60\u5df2\u7ecf\u62e5\u6709\u4e00\u4e2a\u6709\u6548\u7684 Emby Premiere \u8ba2\u9605\uff0c\u8bf7\u786e\u4fdd\u4f60\u5df2\u7ecf\u5728\u4f60 Emby \u670d\u52a1\u5668\u63a7\u5236\u53f0\u7684\u201cEmby Premiere\u201d\u9009\u9879\u4e2d\u914d\u7f6e\u4e86\u4f60\u7684 Emby Premiere\uff0c\u4f60\u53ef\u4ee5\u5728 Emby \u670d\u52a1\u5668\u63a7\u5236\u53f0\u4e3b\u83dc\u5355\u4e2d\u627e\u5230\u201cEmby Premiere\u201d\u9009\u9879\u3002", "ValueSpecialEpisodeName": "\u7279\u5178 - {0}", "Share": "\u5171\u4eab", "Add": "\u6dfb\u52a0", - "ServerUpdateNeeded": "This Emby Server needs to be updated. To download the latest version, please visit {0}", - "LiveTvRequiresUnlock": "Live TV requires an active Emby Premiere subscription.", - "AttributeNew": "New", + "ServerUpdateNeeded": "Emby \u670d\u52a1\u5668\u9700\u8981\u66f4\u65b0\uff0c\u8bf7\u8bbf\u95ee {0} \u4ee5\u4e0b\u8f7d\u6700\u65b0\u7684\u7248\u672c\u3002", + "LiveTvRequiresUnlock": "\u7535\u89c6\u76f4\u64ad\u9700\u8981\u4e00\u4e2a\u6709\u6548\u7684 Emby Premiere \u8ba2\u9605\u3002", + "AttributeNew": "\u65b0\u589e", "Premiere": "\u9996\u6620", "Live": "\u76f4\u64ad", - "Repeat": "Repeat", - "TrackCount": "{0} tracks", - "ItemCount": "{0} items", - "OriginalAirDateValue": "Original air date: {0}", + "Repeat": "\u91cd\u64ad", + "TrackCount": "{0} \u4e2a\u97f3\u8f68", + "ItemCount": "{0} \u9879", + "OriginalAirDateValue": "\u9996\u6620\u65e5\u671f\uff1a{0}", "EndsAtValue": "\u7ed3\u675f\u4e8e {0}", "HeaderSelectDate": "\u9009\u62e9\u65e5\u671f", - "Watched": "Watched", + "Watched": "\u5df2\u89c2\u770b", + "AirDate": "\u64ad\u51fa\u65e5\u671f", "Played": "\u5df2\u64ad\u653e", "ButtonOk": "\u786e\u5b9a", "ButtonCancel": "\u53d6\u6d88", - "AccessRestrictedTryAgainLater": "Access is currently restricted. Please try again later.", + "AccessRestrictedTryAgainLater": "\u8bbf\u95ee\u76ee\u524d\u53d7\u9650\u3002\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002", "ButtonGotIt": "\u77e5\u9053\u4e86", "ButtonRestart": "\u91cd\u542f", "RecordingCancelled": "\u5f55\u5236\u5df2\u53d6\u6d88\u3002", - "SeriesCancelled": "Series cancelled.", - "RecordingScheduled": "Recording scheduled.", - "SeriesRecordingScheduled": "Series recording scheduled.", + "SeriesCancelled": "\u7535\u89c6\u5267\u5df2\u53d6\u6d88", + "RecordingScheduled": "\u5f55\u5236\u8ba1\u5212", + "SeriesRecordingScheduled": "\u7535\u89c6\u5267\u5f55\u5236\u8ba1\u5212", "HeaderNewRecording": "\u65b0\u5f55\u5236", + "WakeServer": "\u5524\u9192\u670d\u52a1\u5668", + "HeaderWakeServer": "\u5524\u9192\u670d\u52a1\u5668", + "AttemptingWakeServer": "\u5c1d\u8bd5\u5524\u9192\u670d\u52a1\u5668\u4e2d\uff0c\u8bf7\u8010\u5fc3\u7b49\u5f85...", + "WakeServerSuccess": "\u6210\u529f\uff01", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN \u6570\u636e\u5305\u5df2\u7ecf\u53d1\u9001\u5230\u4f60\u7684\u670d\u52a1\u5668\u6240\u5728\u673a\u5668\u4e0a\uff0c\u4f46\u6211\u4eec\u4e0d\u80fd\u8fde\u63a5\u5230\u4f60\u7684 Emby \u670d\u52a1\u5668\u3002\u4f60\u7684\u673a\u5668\u53ef\u80fd\u8fd8\u9700\u8981\u4e00\u4e9b\u65f6\u95f4\u624d\u80fd\u88ab\u5524\u9192\uff0c\u6216\u8005\n Emby \u670d\u52a1\u5668\u6ca1\u6709\u6b63\u786e\u7684\u5728\u673a\u5668\u4e0a\u542f\u52a8\u3002", "Sunday": "\u661f\u671f\u5929", "Monday": "\u661f\u671f\u4e00", "Tuesday": "\u661f\u671f\u4e8c", @@ -36,15 +45,22 @@ "Friday": "\u661f\u671f\u4e94", "Saturday": "\u661f\u671f\u516d", "Days": "\u5929", - "RecordSeries": "Record series", - "HeaderCinemaMode": "Cinema Mode", - "HeaderCloudSync": "Cloud Sync", - "Downloads": "Downloads", - "HeaderMyDownloads": "My Downloads", + "SortByValue": "\u6392\u5e8f\u65b9\u5f0f\uff1a{0}", + "LabelSortBy": "\u6392\u5e8f\u65b9\u5f0f", + "LabelSortOrder": "\u6392\u5e8f\u987a\u5e8f", + "HeaderPhotoAlbums": "\u76f8\u518c", + "Photos": "\u7167\u7247", + "HeaderAppearsOn": "Appears On", + "List": "\u5217\u8868", + "RecordSeries": "\u5f55\u5236\u7535\u89c6\u5267", + "HeaderCinemaMode": "\u5f71\u9662\u6a21\u5f0f", + "HeaderCloudSync": "\u4e91\u540c\u6b65", + "Downloads": "\u4e0b\u8f7d", + "HeaderMyDownloads": "\u6211\u7684\u4e0b\u8f7d", "HeaderOfflineDownloads": "\u79bb\u7ebf\u5a92\u4f53", - "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", - "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", - "LiveTvFeatureDescription": "Stream Live TV to any Emby app, with a compatible TV tuner device installed on your Emby Server.", + "HeaderOfflineDownloadsDescription": "\u4e0b\u8f7d\u5a92\u4f53\u5230\u4f60\u7684\u8bbe\u5907\u4e0a\u4ee5\u4fbf\u4e8e\u79bb\u7ebf\u4f7f\u7528\u3002", + "CloudSyncFeatureDescription": "\u540c\u6b65\u4f60\u7684\u5a92\u4f53\u5230\u4e91\u4ee5\u4fbf\u4e8e\u5907\u4efd\uff0c\u5b58\u6863\u548c\u8f6c\u6362\u3002", + "LiveTvFeatureDescription": "\u901a\u8fc7\u4e00\u4e2a\u5b89\u88c5\u5728\u4f60\u7684 Emby \u670d\u52a1\u5668\u4e0a\u7684\u53d7\u517c\u5bb9\u7684\u7535\u89c6\u534f\u8c03\u5668\u6765\u4e32\u6d41\u4f60\u7684\u7535\u89c6\u76f4\u64ad\u81f3\u4efb\u4f55\u5176\u4ed6 Emby \u5e94\u7528\u7a0b\u5e8f\u3002", "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.", "CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.", "HeaderFreeApps": "\u514d\u8d39 Emby \u5e94\u7528", @@ -53,57 +69,57 @@ "MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.", "LabelEmailAddress": "\u90ae\u7bb1\u5730\u5740\uff1a", "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", - "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", + "FeatureRequiresEmbyPremiere": "\u8fd9\u9879\u529f\u80fd\u9700\u8981\u4e00\u4e2a\u6709\u6548\u7684 Emby Premiere \u8ba2\u9605\u3002", "HeaderConvertYourRecordings": "\u8f6c\u6362\u60a8\u7684\u5f55\u5236", "Record": "\u5f55\u5236", "Save": "\u50a8\u5b58", "Edit": "\u7f16\u8f91", "Download": "\u4e0b\u8f7d", - "Downloaded": "Downloaded", - "Downloading": "Downloading", + "Downloaded": "\u5df2\u4e0b\u8f7d", + "Downloading": "\u4e0b\u8f7d\u4e2d", "Advanced": "\u9ad8\u7ea7", "Delete": "\u5220\u9664", "HeaderDeleteItem": "\u5220\u9664\u9879\u76ee", "ConfirmDeleteItem": "Deleting this item will delete it from both the file system and your media library. Are you sure you wish to continue?", "Refresh": "\u5237\u65b0", "RefreshQueued": "\u5217\u961f\u5df2\u5237\u65b0\u3002", - "AddToCollection": "\u52a0\u5165\u5408\u96c6", - "HeaderAddToCollection": "\u52a0\u5165\u5408\u96c6", - "NewCollection": "\u65b0\u5408\u96c6", - "LabelCollection": "\u5408\u96c6\uff1a", + "AddToCollection": "\u52a0\u5165\u6536\u85cf", + "HeaderAddToCollection": "\u52a0\u5165\u6536\u85cf", + "NewCollection": "\u65b0\u6536\u85cf", + "LabelCollection": "\u6536\u85cf\uff1a", "Help": "\u5e2e\u52a9", - "LabelDisplayMode": "Display mode:", - "Desktop": "Desktop", - "Mobile": "Mobile \/ Tablet", - "TV": "TV", + "LabelDisplayMode": "\u663e\u793a\u6a21\u5f0f\uff1a", + "Desktop": "\u684c\u9762", + "Mobile": "\u624b\u673a\/\u5e73\u677f", + "TV": "\u7535\u89c6", "DisplayModeHelp": "Select the type of screen you're running Emby on.", - "LabelDisplayLanguage": "Display language:", - "LabelDisplayLanguageHelp": "Translating Emby is an ongoing project.", - "LearnHowYouCanContribute": "Learn how you can contribute.", - "NewCollectionHelp": "Collections allow you to create personalized groupings of movies and other library content.", + "LabelDisplayLanguage": "\u663e\u793a\u7684\u8bed\u8a00\uff1a", + "LabelDisplayLanguageHelp": "Emby\u7684\u7ffb\u8bd1\u5de5\u4f5c\u662f\u4e00\u4e2a\u4e0d\u65ad\u63a8\u8fdb\u7684\u5de5\u7a0b\u9879\u76ee\u3002", + "LearnHowYouCanContribute": "\u5b66\u4e60\u5982\u4f55\u6784\u5efa\u3002", + "NewCollectionHelp": "\u201c\u6536\u85cf\u201d\u5141\u8bb8\u4f60\u4e3a\u7535\u5f71\u548c\u5176\u4ed6\u5a92\u4f53\u5e93\u5185\u5bb9\u521b\u5efa\u4e2a\u6027\u5316\u5206\u7ec4\u3002", "SearchForCollectionInternetMetadata": "\u5728\u4e92\u8054\u7f51\u4e0a\u641c\u7d22\u5a92\u4f53\u56fe\u50cf\u548c\u8d44\u6599", - "DisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", - "DisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", - "EnableThemeSongs": "Enable theme songs", - "EnableBackdrops": "Enable backdrops", - "EnableThemeSongsHelp": "If enabled, theme songs will be played in the background while browsing the library.", - "EnableBackdropsHelp": "If enabled, backdrops will be displayed in the background of some pages while browsing the library.", - "EnableThemeVideos": "Enable theme videos", - "EnableThemeVideosHelp": "If enabled, theme videos will be played in the background while browsing the library.", - "RunAtStartup": "Run at startup", - "LabelScreensaver": "Screensaver:", - "LabelSoundEffects": "Sound effects:", - "LabelSkin": "Skin:", + "DisplayMissingEpisodesWithinSeasons": "\u663e\u793a\u6bcf\u5b63\u91cc\u7f3a\u5c11\u7684\u5267\u96c6", + "DisplayMissingEpisodesWithinSeasonsHelp": "\u5fc5\u987b\u5728 Emby \u670d\u52a1\u5668\u7684 TV \u5a92\u4f53\u5e93\u8bbe\u7f6e\u4e2d\u4e5f\u542f\u7528\u8be5\u529f\u80fd\u3002", + "EnableThemeSongs": "\u542f\u7528\u4e3b\u9898\u66f2", + "EnableBackdrops": "\u542f\u7528\u80cc\u666f\u56fe", + "EnableThemeSongsHelp": "\u5982\u679c\u542f\u7528\uff0c\u5f53\u6d4f\u89c8\u5a92\u4f53\u5e93\u65f6\u4e3b\u9898\u66f2\u5c06\u4f5c\u4e3a\u80cc\u666f\u97f3\u4e50\u64ad\u653e\u3002", + "EnableBackdropsHelp": "\u5982\u679c\u542f\u7528\uff0c\u5f53\u6d4f\u89c8\u5a92\u4f53\u5e93\u65f6\u80cc\u666f\u56fe\u5c06\u4f5c\u4e3a\u4e00\u4e9b\u9875\u9762\u7684\u80cc\u666f\u663e\u793a\u3002", + "EnableThemeVideos": "\u542f\u7528\u4e3b\u9898\u89c6\u9891", + "EnableThemeVideosHelp": "\u5982\u679c\u542f\u7528\uff0c\u5f53\u6d4f\u89c8\u5a92\u4f53\u5e93\u65f6\u4e3b\u9898\u89c6\u9891\u5c06\u4f5c\u4e3a\u80cc\u666f\u89c6\u9891\u64ad\u653e\u3002", + "RunAtStartup": "\u5f00\u673a\u65f6\u542f\u52a8", + "LabelScreensaver": "\u5c4f\u5e55\u4fdd\u62a4\uff1a", + "LabelSoundEffects": "\u97f3\u6548\uff1a", + "LabelSkin": "\u76ae\u80a4\uff1a", "LabelName": "\u540d\u5b57\uff1a", - "NewCollectionNameExample": "\u4f8b\u5982\uff1a\u661f\u7403\u5927\u6218\u5408\u96c6", + "NewCollectionNameExample": "\u4f8b\u5982\uff1a\u661f\u7403\u5927\u6218\u6536\u85cf", "MessageItemsAdded": "\u9879\u76ee\u5df2\u6dfb\u52a0\u3002", "OptionNew": "\u66f4\u65b0...", "LabelPlaylist": "\u64ad\u653e\u5217\u8868\uff1a", "AddToPlaylist": "\u6dfb\u52a0\u5230\u64ad\u653e\u5217\u8868", "HeaderAddToPlaylist": "\u6dfb\u52a0\u5230\u64ad\u653e\u5217\u8868", "Subtitles": "\u5b57\u5e55", - "LabelTheme": "Theme:", - "LabelDashboardTheme": "Server dashboard theme:", + "LabelTheme": "\u4e3b\u9898\uff1a", + "LabelDashboardTheme": "\u63a7\u5236\u53f0\u4e3b\u9898\uff1a", "SearchForSubtitles": "\u641c\u7d22\u5b57\u5e55", "LabelLanguage": "\u8bed\u8a00\uff1a", "Search": "\u641c\u7d22", @@ -117,28 +133,29 @@ "UnlockGuide": "\u89e3\u9501\u6307\u5357", "RefreshMetadata": "\u5237\u65b0\u5143\u6570\u636e", "ReplaceExistingImages": "\u66ff\u6362\u73b0\u6709\u56fe\u7247", - "ReplaceAllMetadata": "\u8986\u76d6\u6240\u6709\u5a92\u4f53\u8d44\u6599", - "SearchForMissingMetadata": "Search for missing metadata", + "ReplaceAllMetadata": "\u8986\u76d6\u6240\u6709\u5143\u6570\u636e", + "SearchForMissingMetadata": "\u641c\u7d22\u7f3a\u5c11\u7684\u5143\u6570\u636e", "LabelRefreshMode": "\u5237\u65b0\u6a21\u5f0f\uff1a", "NoItemsFound": "\u672a\u627e\u5230\u9879\u76ee\u3002", - "HeaderSaySomethingLike": "Say Something Like...", + "HeaderSaySomethingLike": "\u8bf7\u8bf4\u4e9b\u4ec0\u4e48\uff0c\u6bd4\u5982...", "ButtonTryAgain": "\u91cd\u8bd5", "HeaderYouSaid": "\u60a8\u8bf4\u4e86...", - "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageWeDidntRecognizeCommand": "\u5f88\u62b1\u6b49\uff0c\u6211\u4eec\u65e0\u6cd5\u8bc6\u522b\u8fd9\u4e2a\u6307\u4ee4\u3002", "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", "ValueDiscNumber": "\u76d8 {0}", - "Unrated": "Unrated", + "Unrated": "\u672a\u5206\u7ea7", "Favorite": "\u6211\u7684\u6700\u7231", "Like": "\u559c\u6b22", "Dislike": "\u4e0d\u559c\u6b22", "RefreshDialogHelp": "Metadata is refreshed based on settings and internet services that are enabled in the Emby Server dashboard.", "Open": "\u6253\u5f00", "Play": "\u64ad\u653e", - "AddToPlayQueue": "Add to play queue", + "AddToPlayQueue": "\u6dfb\u52a0\u81f3\u64ad\u653e\u961f\u5217", "Shuffle": "\u968f\u673a\u64ad\u653e", "Identify": "\u8bc6\u522b", "EditImages": "\u4fee\u6539\u56fe\u7247", - "EditInfo": "\u7f16\u8f91\u4fe1\u606f", + "EditMetadata": "\u7f16\u8f91\u5143\u6570\u636e", + "Convert": "\u8f6c\u6362", "Sync": "\u540c\u6b65", "InstantMix": "\u5373\u65f6\u6df7\u97f3", "ViewAlbum": "\u67e5\u770b\u4e13\u8f91", @@ -148,7 +165,8 @@ "PlayFromBeginning": "\u4ece\u5934\u64ad\u653e", "ResumeAt": "\u6062\u590d\u64ad\u653e\u4e8e{0}", "RemoveFromPlaylist": "\u4ece\u64ad\u653e\u5217\u8868\u4e2d\u79fb\u9664", - "RemoveFromCollection": "Remove from collection", + "RemoveFromCollection": "\u4ece\u6536\u85cf\u4e2d\u79fb\u9664", + "Sort": "\u6392\u5e8f", "Trailer": "\u9884\u544a\u7247", "MarkPlayed": "\u6807\u4e3a\u5df2\u64ad\u653e", "MarkUnplayed": "\u6807\u4e3a\u672a\u64ad\u653e", @@ -157,26 +175,31 @@ "TryMultiSelect": "Try Multi-Select", "TryMultiSelectMessage": "To edit multiple media items, just click and hold any poster and select the items you want to manage. Try it!", "HeaderConfirmRecordingCancellation": "\u786e\u8ba4\u53d6\u6d88\u5f55\u5236", - "MessageConfirmRecordingCancellation": "\u4f60\u786e\u5b9a\u5e0c\u671b\u53d6\u6d88\u5f55\u5236\uff1f", + "MessageConfirmRecordingCancellation": "\u53d6\u6d88\u5f55\u5236\uff1f", "Error": "\u9519\u8bef", "VoiceInput": "\u8bed\u97f3\u8f93\u5165", "LabelContentType": "\u5185\u5bb9\u7c7b\u578b", "LabelPath": "\u8def\u5f84\uff1a", - "Playlists": "Playlists", + "Playlists": "\u64ad\u653e\u5217\u8868", "LabelTitle": "\u6807\u9898\uff1a", "LabelOriginalTitle": "\u539f\u6807\u9898\uff1a", "LabelSortTitle": "\u77ed\u6807\u9898\uff1a", "LabelDateAdded": "\u52a0\u5165\u65e5\u671f\uff1a", + "DateAdded": "\u52a0\u5165\u65e5\u671f", + "DatePlayed": "\u64ad\u653e\u65e5\u671f", "ConfigureDateAdded": "Configure how date added is determined in the Emby Server dashboard under Library settings", "LabelStatus": "\u72b6\u6001\uff1a", "LabelArtists": "\u827a\u672f\u5bb6\uff1a", "LabelArtistsHelp": "\u72ec\u7acb\u591a\u529f\u80fd\uff1b", - "HeaderAlbumArtists": "Album Artists", + "HeaderAlbumArtists": "\u4e13\u8f91\u827a\u672f\u5bb6", "LabelAlbumArtists": "\u4e13\u8f91\u4f5c\u5bb6\uff1a", "LabelAlbum": "\u4e13\u8f91\uff1a", - "Artists": "Artists", + "Artists": "\u827a\u672f\u5bb6", + "ImdbRating": "IMDb \u8bc4\u5206", + "CommunityRating": "\u516c\u4f17\u8bc4\u5206", "LabelCommunityRating": "\u516c\u4f17\u8bc4\u5206\uff1a", "LabelCriticRating": "\u5f71\u8bc4\u4eba\u8bc4\u5206\uff1a", + "CriticRating": "\u5f71\u8bc4\u4eba\u8bc4\u5206", "LabelWebsite": "\u7f51\u7ad9\uff1a", "LabelTagline": "\u53e3\u53f7\uff1a", "LabelOverview": "\u5185\u5bb9\u6982\u8ff0\uff1a", @@ -184,6 +207,7 @@ "LabelReleaseDate": "\u53d1\u884c\u65e5\u671f\uff1a", "LabelYear": "\u5e74\u4efd\uff1a", "LabelPlaceOfBirth": "\u51fa\u751f\u5730\uff1a", + "Aired": "\u5df2\u53d1\u5e03", "LabelAirDays": "\u64ad\u51fa\u65e5\u671f\uff1a", "LabelAirTime": "\u64ad\u51fa\u65f6\u95f4\uff1a", "LabelRuntimeMinutes": "\u64ad\u653e\u65f6\u957f\uff08\u5206\u949f\uff09\uff1a", @@ -191,15 +215,11 @@ "LabelCustomRating": "\u81ea\u5b9a\u4e49\u5206\u7ea7\uff1a", "LabelOriginalAspectRatio": "\u539f\u59cb\u957f\u5bbd\u6bd4\uff1a", "Label3DFormat": "3D\u683c\u5f0f\uff1a", - "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", - "PerfectMatch": "Perfect match", - "EnableExternalVideoPlayers": "Enable external video players", - "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "\u5907\u9009\u7684\u5267\u96c6\u6570", - "LabelDvdSeasonNumber": "Dvd \u5b63\u6570\uff1a", - "LabelDvdEpisodeNumber": "Dvd \u96c6\u6570\uff1a", - "LabelAbsoluteEpisodeNumber": "\u7edd\u5bf9\u96c6\u6570\uff1a", + "FormatValue": "\u683c\u5f0f\uff1a{0}", + "DownloadsValue": "{0} \u4e0b\u8f7d", + "PerfectMatch": "\u6700\u4f73\u5339\u914d", + "EnableExternalVideoPlayers": "\u542f\u7528\u5916\u90e8\u64ad\u653e\u5668", + "EnableExternalVideoPlayersHelp": "\u5f53\u4f60\u5f00\u59cb\u64ad\u653e\u89c6\u9891\u65f6\uff0c\u5c06\u4f1a\u663e\u793a\u4e00\u4e2a\u5916\u90e8\u64ad\u653e\u5668\u83dc\u5355\u3002", "HeaderSpecialEpisodeInfo": "\u7279\u522b\u5267\u96c6\u4fe1\u606f", "LabelAirsBeforeSeason": "\u5b63\u64ad\u51fa\u524d\uff1a", "LabelAirsAfterSeason": "\u5b63\u64ad\u51fa\u540e\uff1a", @@ -207,12 +227,12 @@ "HeaderExternalIds": "\u5916\u90e8 Ids\uff1a", "HeaderDisplaySettings": "\u663e\u793a\u8bbe\u7f6e", "LabelDisplayOrder": "\u663e\u793a\u987a\u5e8f\uff1a", - "Display": "Display", + "Display": "\u663e\u793a", "Countries": "\u56fd\u5bb6", "Genres": "\u98ce\u683c", "Studios": "\u5de5\u4f5c\u5ba4", "Tags": "\u6807\u7b7e", - "HeaderMetadataSettings": "\u5a92\u4f53\u8d44\u6599\u8bbe\u7f6e", + "HeaderMetadataSettings": "\u5143\u6570\u636e\u8bbe\u7f6e", "People": "\u4eba\u7269", "LabelMetadataDownloadLanguage": "\u9996\u9009\u4e0b\u8f7d\u8bed\u8a00\uff1a", "LabelLockItemToPreventChanges": "\u9501\u5b9a\u6b64\u9879\u76ee\u9632\u6b62\u6539\u52a8", @@ -238,9 +258,10 @@ "Backdrops": "\u80cc\u666f", "Images": "\u56fe\u7247", "Runtime": "\u64ad\u653e\u65f6\u957f", - "ProductionLocations": "Production locations", + "ProductionLocations": "\u4ea7\u5730", "BirthLocation": "\u51fa\u751f\u5730", "ParentalRating": "\u5bb6\u957f\u5206\u7ea7", + "PlayCount": "\u64ad\u653e\u6b21\u6570", "Name": "\u540d\u79f0", "Overview": "\u6982\u8ff0", "LabelType": "\u7c7b\u578b\uff1a", @@ -275,34 +296,40 @@ "ValueOneMusicVideo": "1\u4e2a\u97f3\u4e50\u89c6\u9891", "ValueMusicVideoCount": "{0} \u4e2a\u97f3\u4e50\u89c6\u9891", "ValueMinutes": "{0} \u5206\u949f", - "Albums": "Albums", - "Songs": "Songs", - "Books": "Books", - "HeaderAudioBooks": "Audio Books", + "Albums": "\u4e13\u8f91", + "Songs": "\u6b4c\u66f2", + "Books": "\u4e66\u7c4d", + "HeaderAudioBooks": "\u6709\u58f0\u8bfb\u7269", "HeaderIdentifyItemHelp": "\u8f93\u5165\u4e00\u4e2a\u6216\u591a\u4e2a\u641c\u7d22\u6761\u4ef6\u3002\u5220\u9664\u6761\u4ef6\u53ef\u5f97\u5230\u66f4\u591a\u641c\u7d22\u7ed3\u679c\u3002", "PleaseEnterNameOrId": "\u8bf7\u8f93\u5165\u4e00\u4e2a\u540d\u79f0\u6216\u4e00\u4e2a\u5916\u90e8ID\u3002", "MessageItemSaved": "\u9879\u76ee\u5df2\u4fdd\u5b58\u3002", "SearchResults": "\u641c\u7d22\u7ed3\u679c", "ServerNameIsRestarting": "Emby Server - {0} \u91cd\u542f\u4e2d\u3002", - "ServerNameIsShuttingDown": "Emby Server - {0} is shutting down.", + "ServerNameIsShuttingDown": "Emby \u670d\u52a1\u5668 - {0} \u6b63\u5728\u5173\u95ed\u3002", "HeaderDeleteItems": "\u5220\u9664\u9879\u76ee", "ConfirmDeleteItems": "Deleting these items will delete them from both the file system and your media library. Are you sure you wish to continue?", - "PleaseRestartServerName": "Please restart Emby Server - {0}.", - "LabelSyncJobName": "Sync job name:", - "SyncJobCreated": "Sync job created", + "PleaseRestartServerName": "\u8bf7\u91cd\u542f Emby \u670d\u52a1\u5668 - {0}\u3002", + "LabelSyncJobName": "\u540c\u6b65\u4efb\u52a1\u540d\u79f0\uff1a", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "\u8d28\u91cf\uff1a", - "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", - "DownloadingDots": "Downloading...", - "HeaderSyncRequiresSub": "Downloading requires an active Emby Premiere subscription.", + "LabelSyncNoTargetsHelp": "\u770b\u8d77\u6765\u60a8\u76ee\u524d\u8fd8\u6ca1\u6709\u4efb\u4f55\u5e94\u7528\u7a0b\u5e8f\u652f\u6301\u79bb\u7ebf\u4e0b\u8f7d\u3002", + "DownloadingDots": "\u6b63\u5728\u4e0b\u8f7d...", + "HeaderSyncRequiresSub": "\u4e0b\u8f7d\u9700\u8981\u4e00\u4e2a\u6709\u6548\u7684 Emby Premiere \u8ba2\u9605\u3002", "LearnMore": "\u4e86\u89e3\u66f4\u591a", - "LabelProfile": "Profile:", - "LabelBitrateMbps": "Bitrate (Mbps):", - "SyncUnwatchedVideosOnly": "Download unwatched videos only", - "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", - "AutomaticallySyncNewContent": "Automatically download new content", - "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "LabelProfile": "\u914d\u7f6e\uff1a", + "LabelBitrateMbps": "\u6bd4\u7279\u7387 (Mbps)\uff1a", + "ConvertUnwatchedVideosOnly": "\u4ec5\u8f6c\u6362\u672a\u89c2\u770b\u7684\u89c6\u9891", + "SyncUnwatchedVideosOnly": "\u4ec5\u4e0b\u8f7d\u672a\u89c2\u770b\u7684\u89c6\u9891", + "ConvertUnwatchedVideosOnlyHelp": "\u53ea\u6709\u672a\u89c2\u770b\u7684\u89c6\u9891\u4f1a\u88ab\u8f6c\u6362\u3002", + "SyncUnwatchedVideosOnlyHelp": "\u53ea\u6709\u672a\u89c2\u770b\u7684\u89c6\u9891\u4f1a\u88ab\u4e0b\u8f7d\uff0c\u5e76\u4e14\u5df2\u7ecf\u89c2\u770b\u8fc7\u7684\u89c6\u9891\u4f1a\u4ece\u8be5\u8bbe\u5907\u4e0a\u79fb\u9664\u3002", + "AutomaticallySyncNewContent": "\u81ea\u52a8\u4e0b\u8f7d\u65b0\u5185\u5bb9", + "AutomaticallySyncNewContentHelp": "\u6dfb\u52a0\u5230\u8fd9\u4e2a\u6587\u4ef6\u5939\u7684\u65b0\u5185\u5bb9\u5c06\u4f1a\u88ab\u81ea\u52a8\u4e0b\u8f7d\u5230\u8bbe\u5907\u4e0a\u3002", + "AutomaticallyConvertNewContent": "\u81ea\u52a8\u8f6c\u6362\u65b0\u5185\u5bb9", + "AutomaticallyConvertNewContentHelp": "\u6dfb\u52a0\u5230\u8fd9\u4e2a\u6587\u4ef6\u5939\u7684\u65b0\u5185\u5bb9\u5c06\u4f1a\u88ab\u81ea\u52a8\u8f6c\u6362\u3002", "LabelItemLimit": "Item limit:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "\u8bf7\u9009\u62e9\u8981\u4e0b\u8f7d\u7684\u8bbe\u5907\u3002", "Screenshots": "\u622a\u56fe", "MoveRight": "\u53f3\u79fb", @@ -311,8 +338,8 @@ "HeaderEditImages": "\u4fee\u6539\u56fe\u7247", "Settings": "\u8bbe\u7f6e", "ShowIndicatorsFor": "Show indicators for:", - "NewEpisodes": "New episodes", - "Episodes": "Episodes", + "NewEpisodes": "\u65b0\u5267\u96c6", + "Episodes": "\u5267\u96c6", "HDPrograms": "\u9ad8\u6e05\u8282\u76ee", "Programs": "Programs", "LiveBroadcasts": "Live broadcasts", @@ -341,8 +368,8 @@ "LabelRecord": "\u5f55\u5236\uff1a", "NewEpisodesOnly": "\u53ea\u65b0\u96c6", "AllEpisodes": "\u6240\u6709\u96c6", - "LabelStartWhenPossible": "Start when possible:", - "LabelStopWhenPossible": "Stop when possible:", + "LabelStartWhenPossible": "\u5f53\u53ef\u80fd\u65f6\u81ea\u52a8\u5f00\u59cb\uff1a", + "LabelStopWhenPossible": "\u5f53\u53ef\u80fd\u65f6\u81ea\u52a8\u505c\u6b62\uff1a", "MinutesBefore": "\u5206\u949f\u524d", "MinutesAfter": "\u5206\u949f\u540e", "SkipEpisodesAlreadyInMyLibrary": "\u4e0d\u5f55\u5236\u6211\u7684\u5a92\u4f53\u5e93\u91cc\u5df2\u5b58\u5728\u7684\u5267\u96c6", @@ -359,7 +386,7 @@ "Movies": "\u7535\u5f71", "Kids": "\u513f\u7ae5", "EnableColorCodedBackgrounds": "Enable color coded backgrounds", - "SortChannelsBy": "Sort channels by:", + "SortChannelsBy": "\u9891\u9053\u6392\u5e8f\u65b9\u5f0f\uff1a", "RecentlyWatched": "\u6700\u8fd1\u89c2\u770b", "ChannelNumber": "Channel number", "HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere", @@ -379,7 +406,7 @@ "MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?", "MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.", "HeaderPlayMyMedia": "\u64ad\u653e\u6211\u7684\u5a92\u4f53", - "HeaderDiscoverEmbyPremiere": "Discover Emby Premiere", + "HeaderDiscoverEmbyPremiere": "\u53d1\u73b0 Emby Premiere", "Items": "Items", "OneChannel": "\u4e00\u4e2a\u9891\u9053", "ConfirmRemoveDownload": "\u5220\u9664\u4e0b\u8f7d\uff1f", @@ -399,98 +426,103 @@ "SyncJobItemStatusRemovedFromDevice": "\u5df2\u4ece\u8bbe\u5907\u79fb\u9664", "SyncJobItemStatusCancelled": "\u5df2\u53d6\u6d88", "Retry": "\u91cd\u8bd5", - "HeaderMyDevice": "My Device", - "Continue": "Continue", + "HeaderMyDevice": "\u6211\u7684\u8bbe\u5907", + "Continue": "\u7ee7\u7eed", "ContinueInSecondsValue": "Continue in {0} seconds.", - "HeaderRemoteControl": "Remote Control", - "Disconnect": "Disconnect", - "EnableDisplayMirroring": "Enable display mirroring", + "HeaderRemoteControl": "\u8fdc\u7a0b\u63a7\u5236", + "Disconnect": "\u65ad\u5f00\u8fde\u63a5", + "EnableDisplayMirroring": "\u5f00\u542f\u663e\u793a\u955c\u50cf", "HeaderPlayOn": "Play On", - "Quality": "Quality", - "Auto": "Auto", + "Quality": "\u8d28\u91cf", + "Auto": "\u81ea\u52a8", "AndroidUnlockRestoreHelp": "To restore your previous purchase, please ensure you're signed into the device with the same Google (or Amazon) account that originally made the purchase. Make sure the app store is enabled and not restricted by any parental controls, and ensure you have an active internet connection. You'll only have to do this once to restore your previous purchase.", "AspectRatio": "Aspect ratio", - "Original": "Original", + "Original": "\u539f\u59cb\u7684", "Fill": "Fill", "BestFit": "Best fit", "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.", "MessagePlayAccessRestricted": "Playback of this content is currently restricted. Please contact your Emby Server administrator for more information.", - "Accept": "Accept", - "Reject": "Reject", - "Connect": "Connect", - "HeaderMyMedia": "My Media", - "HeaderMyMediaSmall": "My Media (small)", - "LatestFromLibrary": "Latest {0}", - "ContinueWatching": "Continue watching", - "HeaderLatestChannelMedia": "Latest Channel Items", - "HeaderContinueWatching": "Continue Watching", - "HeaderContinueListening": "Continue Listening", + "Accept": "\u63a5\u53d7", + "Reject": "\u62d2\u7edd", + "Connect": "\u8fde\u63a5", + "HeaderMyMedia": "\u6211\u7684\u5a92\u4f53", + "HeaderMyMediaSmall": "\u6211\u7684\u5a92\u4f53 (\u5c0f)", + "LatestFromLibrary": "\u6700\u65b0\u7684{0}", + "ContinueWatching": "\u7ee7\u7eed\u89c2\u770b", + "HeaderLatestChannelMedia": "\u6700\u65b0\u9891\u9053\u9879\u76ee", + "HeaderContinueWatching": "\u7ee7\u7eed\u89c2\u770b", + "HeaderContinueListening": "\u7ee7\u7eed\u542c", "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", "LabelSyncTo": "\u540c\u6b65\u5230\uff1a", - "Next": "Next", - "LabelSource": "Source:", - "LabelVersion": "Version:", - "AllLanguages": "All languages", - "Previous": "Previous", - "HeaderNextUp": "Next Up", - "HeaderLatestFrom": "Latest from {0}", - "LabelHomeScreenSectionValue": "Home screen section {0}:", - "SettingsSaved": "Settings saved.", - "None": "None", - "More": "More", - "Up": "Up", - "Down": "Down", - "HeaderHomeScreen": "Home Screen", - "HeaderHomeScreenContent": "Home Screen Content", - "HeaderLatestChannelItems": "Latest Channel Items", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", - "HeaderLibraryOrder": "Library Order", - "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "LabelConvertTo": "\u8f6c\u6362\u4e3a\uff1a", + "Next": "\u4e0b\u4e00\u4e2a", + "LabelSource": "\u6765\u6e90\uff1a", + "LabelVersion": "\u7248\u672c\uff1a", + "AllLanguages": "\u6240\u6709\u8bed\u8a00", + "Previous": "\u4e0a\u4e00\u4e2a", + "HeaderNextUp": "\u4e0b\u4e00\u4e2a", + "HeaderLatestFrom": "\u6700\u65b0\u7684 {0}", + "LabelHomeScreenSectionValue": "\u4e3b\u5c4f\u5e55\u6a21\u5757{0}:", + "SettingsSaved": "\u8bbe\u7f6e\u5df2\u4fdd\u5b58\u3002", + "None": "\u65e0", + "More": "\u66f4\u591a", + "Up": "\u4e0a", + "Down": "\u4e0b", + "Home": "\u9996\u9875", + "Favorites": "\u6211\u7684\u6700\u7231", + "HeaderHomeScreen": "\u4e3b\u5c4f\u5e55", + "HeaderLatestChannelItems": "\u6700\u65b0\u9891\u9053\u9879\u76ee", + "HeaderLibraryOrder": "\u5a92\u4f53\u5e93\u987a\u5e8f", + "HideWatchedContentFromLatestMedia": "\u4ece\u6700\u65b0\u5a92\u4f53\u4e2d\u9690\u85cf\u5df2\u89c2\u770b\u7684\u5185\u5bb9", "HeaderOnNow": "On Now", - "HeaderPlaybackError": "Playback Error", + "HeaderPlaybackError": "\u64ad\u653e\u9519\u8bef", "PlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", "PlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", - "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.", + "PlaybackErrorPlaceHolder": "\u8bf7\u63d2\u5165\u5149\u76d8\u4ee5\u64ad\u653e\u6b64\u89c6\u9891\u3002", "Guide": "Guide", - "Suggestions": "Suggestions", - "Favorites": "Favorites", - "Collections": "Collections", + "Suggestions": "\u5efa\u8bae", + "HeaderFavoriteCollections": "\u6700\u7231\u7684\u6536\u85cf", + "HeaderFavoritePlaylists": "\u6700\u7231\u7684\u64ad\u653e\u5217\u8868", + "Collections": "\u6536\u85cf", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", + "Folders": "\u6587\u4ef6\u5939", + "DisplayInOtherHomeScreenSections": "\u5728\u201c\u6700\u65b0\u7684\u5a92\u4f53\u201d\u548c\u201c\u7ee7\u7eed\u89c2\u770b\u201c\u7b49\u4e3b\u5c4f\u5e55\u6a21\u5757\u4e2d\u663e\u793a", + "DisplayInMyMedia": "\u5728\u4e3b\u5c4f\u5e55\u663e\u793a", "Shows": "Shows", "HeaderLibraryFolders": "Library Folders", - "HeaderLandingScreens": "Landing Screens", - "LandingScreensHelp": "Select the default landing screen when clicking on a library.", "HeaderTermsOfPurchase": "Terms of Purchase", "PrivacyPolicy": "Privacy policy", "TermsOfUse": "Terms of use", - "RepeatMode": "Repeat mode", - "RepeatOne": "Repeat one", - "RepeatAll": "Repeat all", - "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", - "Yes": "Yes", - "No": "No", + "RepeatMode": "\u5faa\u73af\u6a21\u5f0f", + "RepeatOne": "\u5355\u9879\u5faa\u73af", + "RepeatAll": "\u5168\u90e8\u5faa\u73af", + "LabelDefaultScreen": "\u9ed8\u8ba4\u5206\u9875\uff1a", + "ConfirmEndPlayerSession": "Would you like to shutdown Emby on {0}?", + "Yes": "\u662f", + "No": "\u5426", "LiveTV": "Live TV", "Schedule": "Schedule", "Recordings": "Recordings", - "MarkWatched": "Mark watched", - "ScanForNewAndUpdatedFiles": "Scan for new and updated files", + "MarkWatched": "\u6807\u8bb0\u4e3a\u5df2\u89c2\u770b", + "ScanForNewAndUpdatedFiles": "\u626b\u63cf\u65b0\u7684\u548c\u6709\u4fee\u6539\u7684\u6587\u4ef6", "DirectStreamHelp1": "The media is compatible with the device regarding resolution and media type (H.264, AC3, etc.), but is in an incompatible file container (.mkv, .avi, .wmv, etc.). The video will be re-packaged on the fly before streaming it to the device.", - "DirectStreamHelp2": "Direct Streaming a file uses very little processing power without any loss in video quality.", - "MediaIsBeingConverted": "The media is being converted into a format that is compatible with the device that is playing the media.", + "DirectStreamHelp2": "\u76f4\u63a5\u4e32\u6d41\u4e00\u4e2a\u6587\u4ef6\u4ec5\u4ec5\u4f1a\u5360\u7528\u975e\u5e38\u5c11\u7684\u5904\u7406\u80fd\u529b\u5e76\u4e14\u89c6\u9891\u7684\u54c1\u8d28\u4e0d\u4f1a\u6709\u4efb\u4f55\u635f\u5931\u3002", + "MediaIsBeingConverted": "\u5a92\u4f53\u6b63\u5728\u88ab\u8f6c\u6362\u6210\u4e0e\u6b63\u5728\u64ad\u653e\u8be5\u5a92\u4f53\u7684\u8bbe\u5907\u517c\u5bb9\u7684\u683c\u5f0f\u3002", "StatsForNerds": "Stats for nerds", - "LabelReasonForTranscoding": "Reason for transcoding:", - "DirectPlaying": "Direct playing", - "DirectStreaming": "Direct streaming", - "Transcoding": "Transcoding", - "ContainerBitrateExceedsLimit": "Media bitrate exceeds limit.", - "VideoCodecNotSupported": "Video codec not supported", - "AudioCodecNotSupported": "Audio codec not supported", - "SubtitleCodecNotSupported": "Subtitle format not supported", + "LabelReasonForTranscoding": "\u8f6c\u7801\u7684\u539f\u56e0\uff1a", + "DirectPlaying": "\u76f4\u63a5\u64ad\u653e", + "DirectStreaming": "\u76f4\u63a5\u4e32\u6d41", + "Transcoding": "\u8f6c\u7801", + "ContainerBitrateExceedsLimit": "\u5a92\u4f53\u6bd4\u7279\u7387\u8d85\u8fc7\u9650\u5236\u3002", + "VideoCodecNotSupported": "\u89c6\u9891\u7f16\u7801\u4e0d\u53d7\u652f\u6301", + "AudioCodecNotSupported": "\u97f3\u9891\u7f16\u7801\u4e0d\u53d7\u652f\u6301", + "SubtitleCodecNotSupported": "\u5b57\u5e55\u683c\u5f0f\u4e0d\u88ab\u652f\u6301", + "DirectPlayError": "\u76f4\u63a5\u64ad\u653e\u53d1\u751f\u9519\u8bef", "ContainerNotSupported": "Container not supported", "VideoLevelNotSupported": "Video level not supported", - "AudioBitrateNotSupported": "Audio bitrate not supported", + "AudioBitrateNotSupported": "\u97f3\u9891\u6bd4\u7279\u7387\u4e0d\u53d7\u652f\u6301", "AudioChannelsNotSupported": "Audio channels not supported", "VideoResolutionNotSupported": "Video resolution not supported", "AudioProfileNotSupported": "Audio profile not supported", @@ -512,53 +544,55 @@ "ErrorAddingGuestAccount2": "If you're still having an issue, please send an email to {0}, and include your email address as well as theirs.", "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "MessagePendingEmbyAccountAdded": "The Emby account has been added to this user. An email will be sent to the owner of the account. The invitation will need to be confirmed by clicking a link within the email.", - "HeaderEmbyAccountAdded": "Emby Account Added", - "LabelSubtitlePlaybackMode": "Subtitle mode:", + "HeaderEmbyAccountAdded": "Emby \u8d26\u6237\u5df2\u6dfb\u52a0", + "LabelSubtitlePlaybackMode": "\u5b57\u5e55\u6a21\u5f0f\uff1a", "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", - "NoSubtitles": "No subtitles", - "Default": "Default", - "Smart": "Smart", - "Small": "Small", - "Medium": "Medium", - "Large": "Large", - "ExtraLarge": "Extra large", - "OnlyForcedSubtitles": "Only forced subtitles", - "AlwaysPlaySubtitles": "Always play subtitles", - "DefaultSubtitlesHelp": "Subtitles are loaded based on the default and forced flags in the embedded metadata. Language preferences are considered when multiple options are available.", - "SmartSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", - "HeaderSubtitleSettings": "Subtitle Settings", - "HeaderSubtitleAppearance": "Subtitle Appearance", - "OnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "AlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", - "NoSubtitlesHelp": "Subtitles will not be loaded by default. They can still be turned on manually during playback.", - "LabelPreferredSubtitleLanguage": "Preferred subtitle language:", - "LabelTextSize": "Text size:", - "TheseSettingsAffectSubtitlesOnThisDevice": "These settings affect subtitles on this device", - "LabelDropShadow": "Drop shadow:", - "LabelTextBackgroundColor": "Text background color:", - "LabelWindowBackgroundColor": "Text background color:", - "LabelFont": "Font:", - "LabelTextColor": "Text color:", + "NoSubtitles": "\u65e0\u5b57\u5e55", + "Default": "\u9ed8\u8ba4", + "Absolute": "Absolute", + "Smart": "\u667a\u80fd\u6a21\u5f0f", + "Small": "\u5c0f", + "Smaller": "Smaller", + "Medium": "\u6807\u51c6", + "Large": "\u5927", + "ExtraLarge": "\u7279\u5927", + "OnlyForcedSubtitles": "\u53ea\u663e\u793a\u5f3a\u5236\u5b57\u5e55", + "AlwaysPlaySubtitles": "\u603b\u662f\u663e\u793a\u5b57\u5e55", + "DefaultSubtitlesHelp": "\u5b57\u5e55\u5c06\u57fa\u4e8e\u5185\u5d4c\u5143\u6570\u636e\u4e2d\u7684\u201c\u9ed8\u8ba4\u201d\u6807\u5fd7\u548c\u201c\u5f3a\u5236\u201d\u6807\u5fd7\u6765\u8f7d\u5165\u3002\u5f53\u591a\u4e2a\u9009\u9879\u53ef\u7528\u65f6\uff0c\u5c06\u6839\u636e\u8bed\u8a00\u504f\u597d\u51b3\u5b9a\u3002", + "SmartSubtitlesHelp": "\u5f53\u97f3\u9891\u4e3a\u5916\u8bed\u65f6\uff0c\u5c06\u52a0\u8f7d\u4e0e\u8bed\u8a00\u504f\u597d\u5339\u914d\u7684\u5b57\u5e55\u3002", + "HeaderSubtitleSettings": "\u5b57\u5e55\u8bbe\u7f6e", + "HeaderSubtitleAppearance": "\u5b57\u5e55\u5916\u89c2", + "OnlyForcedSubtitlesHelp": "\u53ea\u6709\u88ab\u6807\u8bb0\u4e3a\u201c\u5f3a\u5236\u201d\u7684\u5b57\u5e55\u4f1a\u88ab\u52a0\u8f7d\u3002", + "AlwaysPlaySubtitlesHelp": "\u65e0\u8bba\u97f3\u9891\u4e3a\u4f55\u79cd\u8bed\u8a00\uff0c\u90fd\u5c06\u52a0\u8f7d\u4e0e\u8bed\u8a00\u504f\u597d\u5339\u914d\u7684\u5b57\u5e55\u3002", + "NoSubtitlesHelp": "\u5b57\u5e55\u5c06\u9ed8\u8ba4\u4e0d\u88ab\u52a0\u8f7d\uff0c\u4f46\u4f60\u4ecd\u7136\u53ef\u4ee5\u5728\u64ad\u653e\u65f6\u624b\u52a8\u6253\u5f00\u5b57\u5e55\u3002", + "LabelPreferredSubtitleLanguage": "\u5b57\u5e55\u8bed\u8a00\u504f\u597d\uff1a", + "LabelTextSize": "\u6587\u672c\u5927\u5c0f\uff1a", + "TheseSettingsAffectSubtitlesOnThisDevice": "\u8fd9\u4e9b\u8bbe\u7f6e\u4ec5\u5f71\u54cd\u8be5\u8bbe\u5907\u7684\u5b57\u5e55\u663e\u793a", + "LabelDropShadow": "\u9634\u5f71\uff1a", + "LabelTextBackgroundColor": "\u6587\u672c\u80cc\u666f\u8272\uff1a", + "LabelWindowBackgroundColor": "\u6587\u672c\u80cc\u666f\u8272\uff1a", + "LabelFont": "\u5b57\u4f53\uff1a", + "LabelTextColor": "\u6587\u672c\u989c\u8272\uff1a", "Raised": "Raised", "Depressed": "Depressed", "Uniform": "Uniform", - "DropShadow": "Drop shadow", + "DropShadow": "\u9634\u5f71", "SmallCaps": "Small caps", - "SubtitleAppearanceSettingsDisclaimer": "These settings will not apply to graphical subtitles (PGS, DVD, etc), or subtitles that have their own styles embedded (ASS\/SSA).", - "LabelBurnSubtitles": "Burn subtitles:", - "OnlyImageFormats": "Only image formats (VOBSUB, PGS, SUB\/IDX, etc.)", - "Normal": "Normal", - "BurnSubtitlesHelp": "Determines if the server should burn in subtitles when converting video depending on the subtitles format. Avoiding burning in subtitles will improve server performance. Select Auto to burn image based formats (e.g. VOBSUB, PGS, SUB\/IDX, etc.) as well as certain ASS\/SSA subtitles", - "AllComplexFormats": "All complex formats (ASS, SSA, VOBSUB, PGS, SUB\/IDX, etc.)", - "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "These settings also apply to any Chromecast playback started by this device.", - "HeaderWaitingForWifi": "Waiting for Wifi", - "WifiRequiredToDownload": "A Wifi connection is required to continue downloading.", - "HeaderDownloadSettings": "Download Settings", - "Hide": "Hide", - "HeaderStartNow": "Start Now", + "SubtitleAppearanceSettingsDisclaimer": "\u8fd9\u4e9b\u8bbe\u7f6e\u5c06\u4e0d\u4f1a\u5e94\u7528\u4e8e\u56fe\u5f62\u5b57\u5e55\uff08\u5982 PGS,DVD \u7b49\uff09\uff0c\u6216\u8005\u4e00\u4e9b\u6709\u7740\u81ea\u5df1\u7684\u5185\u7f6e\u5f0f\u6837\u7684\u5b57\u5e55\uff08ASS\/SSA)\u3002", + "LabelBurnSubtitles": "\u70e7\u5f55\u5b57\u5e55\uff1a", + "OnlyImageFormats": "\u4ec5\u56fe\u50cf\u683c\u5f0f\uff08VOBSUB, PGS, SUB\/IDX \u7b49\uff09", + "Normal": "\u666e\u901a", + "BurnSubtitlesHelp": "\u6839\u636e\u5b57\u5e55\u683c\u5f0f\u786e\u5b9a\u670d\u52a1\u5668\u5728\u8f6c\u6362\u89c6\u9891\u65f6\u662f\u5426\u5e94\u70e7\u5f55\u5b57\u5e55\u3002\u907f\u514d\u70e7\u5f55\u5b57\u5e55\u4f1a\u63d0\u9ad8\u670d\u52a1\u5668\u6027\u80fd\u3002\u9009\u62e9\u201c\u81ea\u52a8\u201d\u4ee5\u70e7\u5f55\u57fa\u4e8e\u56fe\u50cf\u7684\u5b57\u5e55\u683c\u5f0f\uff08\u5982 VOBSUB, PGS, SUB\/IDX \u7b49\uff09\u548c\u4e00\u4e9b\u590d\u6742\u7684 ASS\/SSA \u5b57\u5e55\u3002", + "AllComplexFormats": "\u6240\u6709\u590d\u6742\u7684\u683c\u5f0f\uff08ASS, SSA, VOBSUB, PGS, SUB\/IDX \u7b49\uff09", + "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "\u8fd9\u4e9b\u8bbe\u5b9a\u4e5f\u4f1a\u88ab\u5e94\u7528\u4e8e\u4efb\u4f55\u901a\u8fc7\u6b64\u8bbe\u5907\u53d1\u8d77\u7684 Chromecast \u64ad\u653e\u3002", + "HeaderWaitingForWifi": "\u7b49\u5f85 Wifi \u8fde\u63a5", + "WifiRequiredToDownload": "\u9700\u8981\u8fde\u63a5 Wifi \u624d\u80fd\u7ee7\u7eed\u4e0b\u8f7d\u3002", + "HeaderDownloadSettings": "\u4e0b\u8f7d\u8bbe\u7f6e", + "Hide": "\u9690\u85cf", + "HeaderStartNow": "\u73b0\u5728\u5f00\u59cb", "HeaderNextVideoPlayingInValue": "Next Video Playing in {0}", "HeaderNextEpisodePlayingInValue": "Next Episode Playing in {0}", - "HeaderSecondsValue": "{0} Seconds", + "HeaderSecondsValue": "{0} \u79d2", "AudioBitDepthNotSupported": "Audio bit depth not supported", "VideoProfileNotSupported": "Video profile not supported", "VideoFramerateNotSupported": "Video framerate not supported", @@ -566,25 +600,26 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Stop recording", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Manage recording", "LabelDropImageHere": "Drop image here, or click to browse.", "MessageFileReadError": "There was an error reading the file. Please try again.", - "Browse": "Browse", - "HeaderUploadImage": "Upload Image", - "HeaderAddUpdateImage": "Add\/Update Image", - "LabelImageType": "Image type:", - "Upload": "Upload", - "Primary": "Primary", + "Browse": "\u6d4f\u89c8", + "HeaderUploadImage": "\u4e0a\u4f20\u56fe\u7247", + "HeaderAddUpdateImage": "\u6dfb\u52a0\/\u66f4\u65b0 \u56fe\u7247", + "LabelImageType": "\u56fe\u7247\u7c7b\u578b\uff1a", + "Upload": "\u4e0a\u4f20", + "Primary": "\u5c01\u9762\u56fe", "Art": "Art", - "Backdrop": "Backdrop", - "Banner": "Banner", + "Backdrop": "\u80cc\u666f", + "Banner": "\u6a2a\u5e45", "Box": "Box", "BoxRear": "Box (rear)", - "Disc": "Disc", + "Disc": "\u5149\u76d8", "Logo": "Logo", "Menu": "Menu", "Screenshot": "Screenshot", - "Thumb": "Thumb", + "Thumb": "\u7f29\u7565\u56fe", "ValueSeconds": "{0} seconds", "HeaderAudioSettings": "Audio Settings", "LabelAudioLanguagePreference": "\u9996\u9009\u97f3\u9891\u8bed\u8a00\uff1a", @@ -600,15 +635,15 @@ "EnableCinemaMode": "\u542f\u7528\u5f71\u9662\u6a21\u5f0f", "LabelInternetQuality": "\u7f51\u7edc\u8d28\u91cf\uff1a", "HeaderMusicQuality": "Music Quality", - "LabelHomeNetworkQuality": "Home network quality:", - "HeaderLatestMedia": "Latest Media", + "LabelHomeNetworkQuality": "\u5bb6\u5ead\u7f51\u7edc\u8d28\u91cf\uff1a", + "HeaderLatestMedia": "\u6700\u65b0\u5a92\u4f53", "HeaderRestartingEmbyServer": "Restarting Emby Server", "RestartPleaseWaitMessage": "Please wait while Emby Server shuts down and restarts. This may take a minute or two.", "PlayNext": "Play next", - "AllowSeasonalThemes": "Allow automatic seasonal themes", - "AllowSeasonalThemesHelp": "If enabled, seasonal themes will occasionally override your theme setting.", - "AutoBasedOnLanguageSetting": "Auto (based on language setting)", - "LabelDateTimeLocale": "Date time locale:", + "AllowSeasonalThemes": "\u5141\u8bb8\u81ea\u52a8\u5207\u6362\u5b63\u8282\u6027\u4e3b\u9898", + "AllowSeasonalThemesHelp": "\u5982\u679c\u542f\u7528\uff0c\u5f53\u5b63\u8282\u6027\u4e3b\u9898\u4f7f\u7528\u65f6\u4f1a\u8986\u76d6\u4f60\u7684\u4e3b\u9898\u8bbe\u7f6e\u3002", + "AutoBasedOnLanguageSetting": "\u81ea\u52a8\uff08\u53d6\u51b3\u4e8e\u8bed\u8a00\u8bbe\u7f6e\uff09", + "LabelDateTimeLocale": "\u65f6\u533a\u8bbe\u7f6e\uff1a", "DirectorValue": "Director: {0}", "DirectorsValue": "Directors: {0}", "GenreValue": "Genre: {0}", @@ -617,21 +652,38 @@ "TagsValue": "Tags: {0}", "LabelAudio": "Audio:", "LabelVideo": "Video:", - "LabelSubtitles": "Subtitles:", + "LabelSubtitles": "\u5b57\u5e55\uff1a", "Off": "Off", - "ShowTitle": "Show title", + "ShowTitle": "\u663e\u793a\u6807\u9898", "ShowYear": "Show year", - "Filters": "Filters", - "Unplayed": "Unplayed", - "LabelTVHomeScreen": "TV mode home screen:", + "Filters": "\u7b5b\u9009", + "Unplayed": "\u672a\u64ad\u653e", + "LabelTVHomeScreen": "TV \u6a21\u5f0f\u4e3b\u5c4f\u5e55\uff1a", "Horizontal": "Horizontal", "Vertical": "Vertical", "GroupBySeries": "Group by series", "HeaderVideoType": "Video Type", "HeaderSeriesStatus": "Series Status", "Features": "Features", - "Trailers": "Trailers", - "Extras": "Extras", - "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "Trailers": "\u9884\u544a\u7247", + "Extras": "\u989d\u5916", + "ThemeSongs": "\u4e3b\u9898\u66f2", + "ThemeVideos": "\u4e3b\u9898\u89c6\u9891", + "HeaderFavoriteMovies": "\u6700\u7231\u7684\u7535\u5f71", + "HeaderFavoriteShows": "\u6700\u7231\u7684\u8282\u76ee", + "HeaderFavoriteEpisodes": "\u6700\u7231\u7684\u5267\u96c6", + "HeaderFavoriteVideos": "\u6700\u7231\u7684\u89c6\u9891", + "HeaderFavoriteGames": "\u6700\u7231\u7684\u6e38\u620f", + "HeaderFavoriteArtists": "\u6700\u7231\u7684\u827a\u672f\u5bb6", + "HeaderFavoriteAlbums": "\u6700\u7231\u7684\u4e13\u8f91", + "HeaderFavoriteSongs": "\u6700\u7231\u7684\u6b4c\u66f2", + "Ascending": "\u5347\u5e8f", + "Descending": "\u964d\u5e8f", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Color space", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-hk.json b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-hk.json index 2966e0f57e..e21d2509bd 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-hk.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-hk.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", @@ -17,6 +19,7 @@ "EndsAtValue": "Ends at {0}", "HeaderSelectDate": "\u9078\u64c7\u65e5\u671f", "Watched": "Watched", + "AirDate": "Air date", "Played": "Played", "ButtonOk": "Ok", "ButtonCancel": "\u53d6\u6d88", @@ -28,6 +31,12 @@ "RecordingScheduled": "Recording scheduled.", "SeriesRecordingScheduled": "Series recording scheduled.", "HeaderNewRecording": "New Recording", + "WakeServer": "Wake server", + "HeaderWakeServer": "Wake Server", + "AttemptingWakeServer": "Attempting to wake server. Please wait...", + "WakeServerSuccess": "Success!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "\u661f\u671f\u65e5", "Monday": "\u661f\u671f\u4e00", "Tuesday": "\u661f\u671f\u4e8c", @@ -36,6 +45,13 @@ "Friday": "\u661f\u671f\u4e94", "Saturday": "\u661f\u671f\u516d", "Days": "\u9304\u5f71\u65e5", + "SortByValue": "Sort by {0}", + "LabelSortBy": "Sort by:", + "LabelSortOrder": "Sort order:", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "Photos", + "HeaderAppearsOn": "Appears On", + "List": "List", "RecordSeries": "Record series", "HeaderCinemaMode": "Cinema Mode", "HeaderCloudSync": "Cloud Sync", @@ -138,7 +154,8 @@ "Shuffle": "Shuffle", "Identify": "Identify", "EditImages": "Edit images", - "EditInfo": "Edit info", + "EditMetadata": "Edit metadata", + "Convert": "Convert", "Sync": "Sync", "InstantMix": "Instant mix", "ViewAlbum": "View album", @@ -149,6 +166,7 @@ "ResumeAt": "Resume from {0}", "RemoveFromPlaylist": "Remove from playlist", "RemoveFromCollection": "Remove from collection", + "Sort": "Sort", "Trailer": "Trailer", "MarkPlayed": "Mark played", "MarkUnplayed": "Mark unplayed", @@ -157,7 +175,7 @@ "TryMultiSelect": "Try Multi-Select", "TryMultiSelectMessage": "To edit multiple media items, just click and hold any poster and select the items you want to manage. Try it!", "HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation", - "MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?", + "MessageConfirmRecordingCancellation": "Cancel recording?", "Error": "Error", "VoiceInput": "Voice Input", "LabelContentType": "\u5167\u5bb9\u985e\u578b\uff1a", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "Original title:", "LabelSortTitle": "Sort title:", "LabelDateAdded": "Date added:", + "DateAdded": "Date added", + "DatePlayed": "Date played", "ConfigureDateAdded": "Configure how date added is determined in the Emby Server dashboard under Library settings", "LabelStatus": "\u72c0\u614b\uff1a", "LabelArtists": "\u85dd\u4eba\uff1a", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "Artists": "Artists", + "ImdbRating": "IMDb rating", + "CommunityRating": "Community rating", "LabelCommunityRating": "\u8a0e\u8ad6\u5340\u8a55\u5206", "LabelCriticRating": "Critic rating:", + "CriticRating": "Critic rating", "LabelWebsite": "Website:", "LabelTagline": "Tagline:", "LabelOverview": "Overview:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Release date:", "LabelYear": "Year:", "LabelPlaceOfBirth": "Place of birth:", + "Aired": "Aired", "LabelAirDays": "Air days:", "LabelAirTime": "Air time:", "LabelRuntimeMinutes": "Run time (minutes):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Original aspect ratio:", "Label3DFormat": "3D format:", "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Perfect match", "EnableExternalVideoPlayers": "Enable external video players", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Alternate Episode Numbers", - "LabelDvdSeasonNumber": "DVD \u5287\u96c6\u5b63\u5ea6\u6578\u76ee\uff1a", - "LabelDvdEpisodeNumber": "Dvd episode number:", - "LabelAbsoluteEpisodeNumber": "Absolute episode number:", "HeaderSpecialEpisodeInfo": "Special Episode Info", "LabelAirsBeforeSeason": "\u5c1a\u672a\u64ad\u653e\u5287\u96c6\u5b63\u5ea6\uff1a", "LabelAirsAfterSeason": "\u5df2\u64ad\u653e\u5287\u96c6\u5b63\u5ea6\uff1a", @@ -234,13 +254,14 @@ "Continuing": "\u7e7c\u7e8c", "Ended": "\u5b8c\u6210", "HeaderEnabledFields": "Enabled Fields", - "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent it's data from being changed.", + "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent its data from being changed.", "Backdrops": "Backdrops", "Images": "Images", "Runtime": "Runtime", "ProductionLocations": "Production locations", "BirthLocation": "Birth location", "ParentalRating": "Parental Rating", + "PlayCount": "Play count", "Name": "Name", "Overview": "Overview", "LabelType": "Type:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "Deleting these items will delete them from both the file system and your media library. Are you sure you wish to continue?", "PleaseRestartServerName": "Please restart Emby Server - {0}.", "LabelSyncJobName": "Sync job name:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "Quality:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", "DownloadingDots": "Downloading...", @@ -297,12 +319,17 @@ "LearnMore": "Learn more", "LabelProfile": "Profile:", "LabelBitrateMbps": "Bitrate (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "Download unwatched videos only", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", "AutomaticallySyncNewContent": "Automatically download new content", "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "Item limit:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "Please select a device to download to.", "Screenshots": "Screenshots", "MoveRight": "Move right", @@ -428,6 +455,7 @@ "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", "LabelSyncTo": "Sync to:", + "LabelConvertTo": "Convert to:", "Next": "Next", "LabelSource": "Source:", "LabelVersion": "Version:", @@ -441,10 +469,10 @@ "More": "More", "Up": "Up", "Down": "Down", + "Home": "Home", + "Favorites": "Favorites", "HeaderHomeScreen": "Home Screen", - "HeaderHomeScreenContent": "Home Screen Content", "HeaderLatestChannelItems": "Latest Channel Items", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "Library Order", "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", "HeaderOnNow": "On Now", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.", "Guide": "Guide", "Suggestions": "Suggestions", - "Favorites": "Favorites", + "HeaderFavoriteCollections": "Favorite Collections", + "HeaderFavoritePlaylists": "Favorite Playlists", "Collections": "Collections", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", "Shows": "Shows", "HeaderLibraryFolders": "Library Folders", - "HeaderLandingScreens": "Landing Screens", - "LandingScreensHelp": "Select the default landing screen when clicking on a library.", "HeaderTermsOfPurchase": "Terms of Purchase", "PrivacyPolicy": "Privacy policy", "TermsOfUse": "Terms of use", "RepeatMode": "Repeat mode", "RepeatOne": "Repeat one", "RepeatAll": "Repeat all", - "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", + "LabelDefaultScreen": "Default screen:", + "ConfirmEndPlayerSession": "Would you like to shutdown Emby on {0}?", "Yes": "Yes", "No": "No", "LiveTV": "Live TV", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video codec not supported", "AudioCodecNotSupported": "Audio codec not supported", "SubtitleCodecNotSupported": "Subtitle format not supported", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Container not supported", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "No subtitles", "Default": "Default", + "Absolute": "Absolute", "Smart": "Smart", "Small": "Small", + "Smaller": "Smaller", "Medium": "Medium", "Large": "Large", "ExtraLarge": "Extra large", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Stop recording", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Manage recording", "LabelDropImageHere": "Drop image here, or click to browse.", "MessageFileReadError": "There was an error reading the file. Please try again.", @@ -633,5 +668,22 @@ "Trailers": "Trailers", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteVideos": "Favorite Videos", + "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteSongs": "Favorite Songs", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Color space", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-tw.json b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-tw.json index 489e352c51..bca8be2e00 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-tw.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-tw.json @@ -1,4 +1,6 @@ { + "PlaybackSettings": "Playback settings", + "SubtitleSettings": "Subtitle settings", "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", @@ -17,6 +19,7 @@ "EndsAtValue": "\u5b8c\u7d50\u65bc{0}", "HeaderSelectDate": "\u9078\u64c7\u65e5\u671f", "Watched": "Watched", + "AirDate": "Air date", "Played": "Played", "ButtonOk": "\u78ba\u5b9a", "ButtonCancel": "\u53d6\u6d88", @@ -28,6 +31,12 @@ "RecordingScheduled": "\u5df2\u6392\u7a0b\u9304\u88fd", "SeriesRecordingScheduled": "\u5df2\u6392\u7a0b\u9304\u88fd\u6574\u500b\u7cfb\u5217", "HeaderNewRecording": "\u65b0\u9304\u88fd", + "WakeServer": "Wake server", + "HeaderWakeServer": "Wake Server", + "AttemptingWakeServer": "Attempting to wake server. Please wait...", + "WakeServerSuccess": "Success!", + "HeaderCustomizeHomeScreen": "Customize Home Screen", + "WakeServerError": "Wake On LAN packets were sent to your server machine, but we're unable to connect to your Emby Server. Your machine may need a little more time to wake, or Emby Server may not be actively running on the machine.", "Sunday": "\u661f\u671f\u5929", "Monday": "\u661f\u671f\u4e00", "Tuesday": "\u661f\u671f\u4e8c", @@ -36,6 +45,13 @@ "Friday": "\u661f\u671f\u4e94", "Saturday": "\u661f\u671f\u516d", "Days": "\u9304\u5f71\u65e5", + "SortByValue": "Sort by {0}", + "LabelSortBy": "Sort by:", + "LabelSortOrder": "Sort order:", + "HeaderPhotoAlbums": "Photo Albums", + "Photos": "Photos", + "HeaderAppearsOn": "Appears On", + "List": "List", "RecordSeries": "\u9304\u88fd\u6574\u500b\u7cfb\u5217", "HeaderCinemaMode": "Cinema Mode", "HeaderCloudSync": "Cloud Sync", @@ -138,7 +154,8 @@ "Shuffle": "Shuffle", "Identify": "Identify", "EditImages": "\u7de8\u8f2f\u5716\u7247", - "EditInfo": "Edit info", + "EditMetadata": "Edit metadata", + "Convert": "Convert", "Sync": "Sync", "InstantMix": "Instant mix", "ViewAlbum": "View album", @@ -149,6 +166,7 @@ "ResumeAt": "Resume from {0}", "RemoveFromPlaylist": "Remove from playlist", "RemoveFromCollection": "Remove from collection", + "Sort": "Sort", "Trailer": "Trailer", "MarkPlayed": "Mark played", "MarkUnplayed": "Mark unplayed", @@ -157,7 +175,7 @@ "TryMultiSelect": "Try Multi-Select", "TryMultiSelectMessage": "To edit multiple media items, just click and hold any poster and select the items you want to manage. Try it!", "HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation", - "MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?", + "MessageConfirmRecordingCancellation": "Cancel recording?", "Error": "Error", "VoiceInput": "Voice Input", "LabelContentType": "Content type:", @@ -167,6 +185,8 @@ "LabelOriginalTitle": "Original title:", "LabelSortTitle": "Sort title:", "LabelDateAdded": "Date added:", + "DateAdded": "Date added", + "DatePlayed": "Date played", "ConfigureDateAdded": "Configure how date added is determined in the Emby Server dashboard under Library settings", "LabelStatus": "Status:", "LabelArtists": "Artists:", @@ -175,8 +195,11 @@ "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "Artists": "Artists", + "ImdbRating": "IMDb rating", + "CommunityRating": "Community rating", "LabelCommunityRating": "Community rating:", "LabelCriticRating": "Critic rating:", + "CriticRating": "Critic rating", "LabelWebsite": "Website:", "LabelTagline": "Tagline:", "LabelOverview": "Overview:", @@ -184,6 +207,7 @@ "LabelReleaseDate": "Release date:", "LabelYear": "Year:", "LabelPlaceOfBirth": "Place of birth:", + "Aired": "Aired", "LabelAirDays": "Air days:", "LabelAirTime": "Air time:", "LabelRuntimeMinutes": "Run time (minutes):", @@ -192,14 +216,10 @@ "LabelOriginalAspectRatio": "Original aspect ratio:", "Label3DFormat": "3D format:", "FormatValue": "Format: {0}", - "DownloadsValue": "Downloads: {0}", + "DownloadsValue": "{0} downloads", "PerfectMatch": "Perfect match", "EnableExternalVideoPlayers": "Enable external video players", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", - "HeaderAlternateEpisodeNumbers": "Alternate Episode Numbers", - "LabelDvdSeasonNumber": "Dvd season number:", - "LabelDvdEpisodeNumber": "Dvd episode number:", - "LabelAbsoluteEpisodeNumber": "Absolute episode number:", "HeaderSpecialEpisodeInfo": "Special Episode Info", "LabelAirsBeforeSeason": "Airs before season:", "LabelAirsAfterSeason": "Airs after season:", @@ -234,13 +254,14 @@ "Continuing": "\u6301\u7e8c", "Ended": "\u5b8c\u7d50", "HeaderEnabledFields": "Enabled Fields", - "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent it's data from being changed.", + "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent its data from being changed.", "Backdrops": "Backdrops", "Images": "Images", "Runtime": "Runtime", "ProductionLocations": "Production locations", "BirthLocation": "Birth location", "ParentalRating": "Parental Rating", + "PlayCount": "Play count", "Name": "Name", "Overview": "Overview", "LabelType": "Type:", @@ -289,7 +310,8 @@ "ConfirmDeleteItems": "Deleting these items will delete them from both the file system and your media library. Are you sure you wish to continue?", "PleaseRestartServerName": "Please restart Emby Server - {0}.", "LabelSyncJobName": "Sync job name:", - "SyncJobCreated": "Sync job created", + "SyncingDots": "Syncing...", + "ConvertingDots": "Converting...", "LabelQuality": "Quality:", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support offline downloading.", "DownloadingDots": "Downloading...", @@ -297,12 +319,17 @@ "LearnMore": "Learn more", "LabelProfile": "Profile:", "LabelBitrateMbps": "Bitrate (Mbps):", + "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "SyncUnwatchedVideosOnly": "Download unwatched videos only", + "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", "SyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be downloaded, and videos will be removed from the device as they are watched.", "AutomaticallySyncNewContent": "Automatically download new content", "AutomaticallySyncNewContentHelp": "New content added to this folder will be automatically downloaded to the device.", + "AutomaticallyConvertNewContent": "Automatically convert new content", + "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", "LabelItemLimit": "Item limit:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", + "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", "PleaseSelectDeviceToSyncTo": "Please select a device to download to.", "Screenshots": "Screenshots", "MoveRight": "Move right", @@ -428,6 +455,7 @@ "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", "LabelSyncTo": "Sync to:", + "LabelConvertTo": "Convert to:", "Next": "Next", "LabelSource": "Source:", "LabelVersion": "Version:", @@ -441,10 +469,10 @@ "More": "More", "Up": "Up", "Down": "Down", + "Home": "Home", + "Favorites": "Favorites", "HeaderHomeScreen": "Home Screen", - "HeaderHomeScreenContent": "Home Screen Content", "HeaderLatestChannelItems": "Latest Channel Items", - "LabelSelectHomeScreenItemsFolders": "Allow items to appear on my home screen from:", "HeaderLibraryOrder": "Library Order", "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", "HeaderOnNow": "On Now", @@ -454,21 +482,24 @@ "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.", "Guide": "Guide", "Suggestions": "Suggestions", - "Favorites": "Favorites", + "HeaderFavoriteCollections": "Favorite Collections", + "HeaderFavoritePlaylists": "Favorite Playlists", "Collections": "Collections", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", + "Folders": "Folders", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", + "DisplayInMyMedia": "Display on home screen", "Shows": "Shows", "HeaderLibraryFolders": "Library Folders", - "HeaderLandingScreens": "Landing Screens", - "LandingScreensHelp": "Select the default landing screen when clicking on a library.", "HeaderTermsOfPurchase": "Terms of Purchase", "PrivacyPolicy": "Privacy policy", "TermsOfUse": "Terms of use", "RepeatMode": "Repeat mode", "RepeatOne": "Repeat one", "RepeatAll": "Repeat all", - "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", + "LabelDefaultScreen": "Default screen:", + "ConfirmEndPlayerSession": "Would you like to shutdown Emby on {0}?", "Yes": "Yes", "No": "No", "LiveTV": "Live TV", @@ -488,6 +519,7 @@ "VideoCodecNotSupported": "Video codec not supported", "AudioCodecNotSupported": "Audio codec not supported", "SubtitleCodecNotSupported": "Subtitle format not supported", + "DirectPlayError": "Direct play error", "ContainerNotSupported": "Container not supported", "VideoLevelNotSupported": "Video level not supported", "AudioBitrateNotSupported": "Audio bitrate not supported", @@ -517,8 +549,10 @@ "ErrorDeletingItem": "There was an error deleting the item from Emby Server. Please check that Emby Server has write access to the media folder and try again.", "NoSubtitles": "No subtitles", "Default": "Default", + "Absolute": "Absolute", "Smart": "Smart", "Small": "Small", + "Smaller": "Smaller", "Medium": "Medium", "Large": "Large", "ExtraLarge": "Extra large", @@ -566,6 +600,7 @@ "RefFramesNotSupported": "Number of video reference frames not supported", "ErrorConnectServerUnreachable": "There was an error performing the requested operation. Your server is unable to contact our Emby Connect Server at {0}. Please ensure your server has an active internet connection and that the communications are being allowed by any firewall or security software you have installed.", "StopRecording": "Stop recording", + "HeaderStopRecording": "Stop Recording", "ManageRecording": "Manage recording", "LabelDropImageHere": "Drop image here, or click to browse.", "MessageFileReadError": "There was an error reading the file. Please try again.", @@ -633,5 +668,22 @@ "Trailers": "Trailers", "Extras": "Extras", "ThemeSongs": "Theme songs", - "ThemeVideos": "Theme videos" + "ThemeVideos": "Theme videos", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteVideos": "Favorite Videos", + "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteSongs": "Favorite Songs", + "Ascending": "Ascending", + "Descending": "Descending", + "ColorPrimaries": "Color primaries", + "ColorSpace": "Color space", + "ColorTransfer": "Color transfer", + "VideoRange": "Video range", + "SeriesDisplayOrderHelp": "Order episodes by air date, dvd order, or absolute numbering.", + "PlaybackSettingsIntro": "To configure default playback settings, stop video playback, then click your user icon in the top right section of the app.", + "SubtitleSettingsIntro": "To configure default subtitle appearance and language settings, stop video playback, then click your user icon in the top right section of the app." } \ 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 a8e3077b31..257ce0f39a 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+="
    ",html+=subs.map(function(s){var itemHtml="",tagName=layoutManager.tv?"button":"div",className=layoutManager.tv&&s.Path?"listItem listItem-border btnDelete":"listItem listItem-border";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+"

    ",layoutManager.tv,html+="
    ",lastProvider=provider);var tagName=layoutManager.tv?"button":"div",className=layoutManager.tv?"listItem listItem-border btnOptions":"listItem listItem-border";layoutManager.tv&&(className+=" listItem-focusscale listItem-button"),html+="<"+tagName+' class="'+className+'" data-subid="'+result.Id+'">',html+='closed_caption';html+='
    ',html+="
    "+result.Name+"
    ",html+='
    ',result.Format&&(html+=''+globalize.translate("sharedcomponents#FormatValue",result.Format)+""),null!=result.DownloadCount&&(html+=""+globalize.translate("sharedcomponents#DownloadsValue",result.DownloadCount)+""),html+="
    ",result.Comment&&(html+='
    '+result.Comment+"
    "),result.IsHashMatch&&(html+='
    '+globalize.translate("sharedcomponents#PerfectMatch")+"
    "),html+="
    ",layoutManager.tv||(html+=''),html+=""}results.length&&(html+="
    "),context.querySelector(".subtitleResults").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");deleteLocalSubtitle(dom.parentWithClass(btnDelete,"subtitleEditorDialog"),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/subtitlesettings/subtitleappearancehelper.js b/dashboard-ui/bower_components/emby-webcomponents/subtitlesettings/subtitleappearancehelper.js index b0e2e1c59a..f3fc5b9b4f 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/subtitlesettings/subtitleappearancehelper.js +++ b/dashboard-ui/bower_components/emby-webcomponents/subtitlesettings/subtitleappearancehelper.js @@ -1 +1 @@ -define([],function(){"use strict";function getTextStyles(settings,isCue){var list=[];if(isCue)switch(settings.textSize||""){case"small":list.push({name:"font-size",value:".7em"});break;case"large":list.push({name:"font-size",value:"1.3em"});break;case"larger":list.push({name:"font-size",value:"1.72em"});break;case"extralarge":list.push({name:"font-size",value:"2em"});break;default:case"medium":}else switch(settings.textSize||""){case"small":list.push({name:"font-size",value:"inherit"});break;case"larger":list.push({name:"font-size",value:"2em"});break;case"extralarge":list.push({name:"font-size",value:"2.2em"});break;case"large":list.push({name:"font-size",value:"1.72em"});break;default:case"medium":list.push({name:"font-size",value:"1.36em"})}switch(settings.dropShadow||""){case"raised":list.push({name:"text-shadow",value:"-1px -1px white, 0px -1px white, -1px 0px white, 1px 1px black, 0px 1px black, 1px 0px black"});break;case"depressed":list.push({name:"text-shadow",value:"1px 1px white, 0px 1px white, 1px 0px white, -1px -1px black, 0px -1px black, -1px 0px black"});break;case"uniform":list.push({name:"text-shadow",value:"-1px 0px #000000, 0px 1px #000000, 1px 0px #000000, 0px -1px #000000"});break;case"none":list.push({name:"text-shadow",value:"none"});break;default:case"dropshadow":list.push({name:"text-shadow",value:"#000000 0px 0px 7px"})}var background=settings.textBackground||"transparent";background&&list.push({name:"background-color",value:background});var textColor=settings.textColor||"#ffffff";switch(textColor&&list.push({name:"color",value:textColor}),settings.font||""){case"typewriter":list.push({name:"font-family",value:'"Courier New",monospace'}),list.push({name:"font-variant",value:"none"});break;case"print":list.push({name:"font-family",value:"Georgia,Times New Roman,Arial,Helvetica,serif"}),list.push({name:"font-variant",value:"none"});break;case"console":list.push({name:"font-family",value:"Consolas,Lucida Console,Menlo,Monaco,monospace"}),list.push({name:"font-variant",value:"none"});break;case"cursive":list.push({name:"font-family",value:"Lucida Handwriting,Brush Script MT,Segoe Script,cursive,Quintessential,system-ui,-apple-system,BlinkMacSystemFont,sans-serif"}),list.push({name:"font-variant",value:"none"});break;case"casual":list.push({name:"font-family",value:"Gabriola,Segoe Print,Comic Sans MS,Chalkboard,Short Stack,system-ui,-apple-system,BlinkMacSystemFont,sans-serif"}),list.push({name:"font-variant",value:"none"});break;case"smallcaps":list.push({name:"font-family",value:"Copperplate Gothic,Copperplate Gothic Bold,Copperplate,system-ui,-apple-system,BlinkMacSystemFont,sans-serif"}),list.push({name:"font-variant",value:"small-caps"});break;default:list.push({name:"font-family",value:"inherit"}),list.push({name:"font-variant",value:"none"})}return list}function getWindowStyles(settings){return[]}function getStyles(settings,isCue){return{text:getTextStyles(settings,isCue),window:getWindowStyles(settings)}}function applyStyleList(styles,elem){for(var i=0,length=styles.length;i
    -
    +
    ${TheseSettingsAffectSubtitlesOnThisDevice} @@ -53,6 +53,7 @@
    ',html+="
    "):(html+='
    ',html+='",targets.length||(html+='
    '+globalize.translate("sharedcomponents#LabelSyncNoTargetsHelp")+"
    "),appHost.supports("externallinks")&&(html+='"),html+="
    "),html+='
    ',html+='",html+='
    ',html+="
    ",html+='
    ',html+='",html+='
    ',html+="
    ",html+='
    ',html+='',html+="
    ",dialogOptions.Options.indexOf("UnwatchedOnly")!==-1&&(html+='
    ',html+="",html+='
    '+globalize.translate("sharedcomponents#SyncUnwatchedVideosOnlyHelp")+"
    ",html+="
    "),dialogOptions.Options.indexOf("SyncNewContent")!==-1&&(html+='
    ',html+="",html+='
    '+globalize.translate("sharedcomponents#AutomaticallySyncNewContentHelp")+"
    ",html+="
    "),dialogOptions.Options.indexOf("ItemLimit")!==-1&&(html+='
    ',html+='',html+='
    '+globalize.translate("sharedcomponents#LabelItemLimitHelp")+"
    ",html+="
    "),elem.innerHTML=html;var selectSyncTarget=elem.querySelector("#selectSyncTarget");selectSyncTarget&&(selectSyncTarget.addEventListener("change",function(){loadQualityOptions(elem,this.value,options.dialogOptionsFn).then(resolve)}),selectSyncTarget.dispatchEvent(new CustomEvent("change",{bubbles:!0})));var selectProfile=elem.querySelector("#selectProfile");selectProfile&&(selectProfile.addEventListener("change",function(){onProfileChange(elem,this.value)}),dialogOptions.ProfileOptions.length&&selectProfile.dispatchEvent(new CustomEvent("change",{bubbles:!0})));var selectQuality=elem.querySelector("#selectQuality");selectQuality&&(selectQuality.addEventListener("change",function(){onQualityChange(elem,this.value)}),selectQuality.dispatchEvent(new CustomEvent("change",{bubbles:!0}))),setTimeout(function(){focusManager.autoFocus(elem)},100)}function showWifiMessage(){require(["dialog","appRouter"],function(dialog,appRouter){var options={title:globalize.translate("sharedcomponents#HeaderWaitingForWifi"),text:globalize.translate("sharedcomponents#WifiRequiredToDownload")},items=[];items.push({name:options.confirmText||globalize.translate("sharedcomponents#ButtonOk"),id:"ok",type:"submit"}),items.push({name:options.cancelText||globalize.translate("sharedcomponents#HeaderDownloadSettings"),id:"downloadsettings",type:"cancel"}),options.buttons=items,dialog(options).then(function(result){return"ok"===result?Promise.resolve():"downloadsettings"===result?(appRouter.show(appRouter.getRouteUrl("downloadsettings")),Promise.resolve()):Promise.reject()})})}function validateNetwork(){var network=navigator.connection?navigator.connection.type:null;switch(network){case"cellular":case"bluetooth":return showWifiMessage(),!1;default:return!0}}function showSyncMenu(options){return options.isLocalSync&&appSettings.syncOnlyOnWifi()&&!validateNetwork()?Promise.reject():registrationServices.validateFeature("sync").then(function(){return showSyncMenuInternal(options)})}function enableAutoSync(options){if(!options.isLocalSync)return!1;var firstItem=(options.items||[])[0]||{};return"Audio"===firstItem.Type||("MusicAlbum"===firstItem.Type||("MusicArtist"===firstItem.Type||("MusicGenre"===firstItem.Type||"Playlist"===firstItem.Type&&"Audio"===firstItem.MediaType)))}function showSyncMenuInternal(options){var apiClient=connectionManager.getApiClient(options.serverId),userId=apiClient.getCurrentUserId();if(enableAutoSync(options))return submitQuickSyncJob(apiClient,userId,apiClient.deviceId(),{items:options.items,Quality:"custom",Bitrate:appSettings.maxStaticMusicBitrate()});var dialogOptionsFn=getTargetDialogOptionsFn(apiClient,{UserId:userId,ItemIds:(options.items||[]).map(function(i){return i.Id||i}).join(","),ParentId:options.ParentId,Category:options.Category});return dialogOptionsFn().then(function(dialogOptions){currentDialogOptions=dialogOptions;var dlgElementOptions={removeOnClose:!0,scrollY:!1,autoFocus:!1};layoutManager.tv?dlgElementOptions.size="fullscreen":dlgElementOptions.size="small";var dlg=dialogHelper.createDialog(dlgElementOptions);dlg.classList.add("formDialog");var html="";html+='
    ',html+='',html+='

    ';var syncButtonLabel=options.isLocalSync?globalize.translate("sharedcomponents#Download"):globalize.translate("sharedcomponents#Sync");html+=syncButtonLabel,html+="

    ",appHost.supports("externallinks")&&(html+='info'+globalize.translate("sharedcomponents#Help")+""),html+="
    ",html+='
    ',html+='
    ',html+='
    ',html+='
    ',html+='
    ',html+='",html+="
    ",html+="
    ",html+="
    ",html+="
    ",dlg.innerHTML=html;var submitted=!1;dlg.querySelector("form").addEventListener("submit",function(e){return submitted=submitJob(dlg,apiClient,userId,options,this),e.preventDefault(),!1}),dlg.querySelector(".btnCancel").addEventListener("click",function(){dialogHelper.close(dlg)}),layoutManager.tv&&scrollHelper.centerFocus.on(dlg.querySelector(".formDialogContent"),!1);var promise=dialogHelper.open(dlg);return renderForm({elem:dlg.querySelector(".formFields"),dialogOptions:dialogOptions,dialogOptionsFn:dialogOptionsFn,isLocalSync:options.isLocalSync}),promise.then(function(){return layoutManager.tv&&scrollHelper.centerFocus.off(dlg.querySelector(".formDialogContent"),!1),submitted?Promise.resolve():Promise.reject()})})}function getTargetDialogOptionsFn(apiClient,query){return function(targetId){return query.TargetId=targetId,apiClient.getJSON(apiClient.getUrl("Sync/Options",query))}}function setQualityFieldVisible(form,visible){var fldQuality=form.querySelector(".fldQuality"),selectQuality=form.querySelector("#selectQuality");visible?(fldQuality&&fldQuality.classList.remove("hide"),selectQuality&&selectQuality.removeAttribute("required")):(fldQuality&&fldQuality.classList.add("hide"),selectQuality&&selectQuality.removeAttribute("required"))}function onProfileChange(form,profileId){var options=currentDialogOptions||{},profileOptions=options.ProfileOptions||[];if(profileOptions.length){var option=profileOptions.filter(function(o){return o.Id===profileId})[0],qualityOptions=options.QualityOptions||[];option?(form.querySelector(".profileDescription").innerHTML=option.Description||"",setQualityFieldVisible(form,qualityOptions.length>0&&option.EnableQualityOptions&&options.Options.indexOf("Quality")!==-1)):(form.querySelector(".profileDescription").innerHTML="",setQualityFieldVisible(form,qualityOptions.length>0&&options.Options.indexOf("Quality")!==-1))}}function onQualityChange(form,qualityId){var options=currentDialogOptions||{},option=(options.QualityOptions||[]).filter(function(o){return o.Id===qualityId})[0],qualityDescription=form.querySelector(".qualityDescription");option?qualityDescription.innerHTML=option.Description||"":qualityDescription.innerHTML="";var fldBitrate=form.querySelector(".fldBitrate"),txtBitrate=form.querySelector("#txtBitrate");"custom"===qualityId?(fldBitrate&&fldBitrate.classList.remove("hide"),txtBitrate&&txtBitrate.setAttribute("required","required")):(fldBitrate&&fldBitrate.classList.add("hide"),txtBitrate&&txtBitrate.removeAttribute("required"))}function renderTargetDialogOptions(form,options){currentDialogOptions=options;var fldProfile=form.querySelector(".fldProfile"),selectProfile=form.querySelector("#selectProfile");options.ProfileOptions.length&&options.Options.indexOf("Profile")!==-1?(fldProfile&&fldProfile.classList.remove("hide"),selectProfile&&selectProfile.setAttribute("required","required")):(fldProfile&&fldProfile.classList.add("hide"),selectProfile&&selectProfile.removeAttribute("required")),setQualityFieldVisible(form,options.QualityOptions.length>0),selectProfile&&(selectProfile.innerHTML=options.ProfileOptions.map(function(o){var selectedAttribute=o.IsDefault?' selected="selected"':"";return'"}).join(""),selectProfile.dispatchEvent(new CustomEvent("change",{bubbles:!0})));var selectQuality=form.querySelector("#selectQuality");if(selectQuality){selectQuality.innerHTML=options.QualityOptions.map(function(o){var selectedAttribute=o.IsDefault?' selected="selected"':"";return'"}).join("");var lastQuality=appSettings.get("sync-lastquality");lastQuality&&options.QualityOptions.filter(function(i){return i.Id===lastQuality}).length&&(selectQuality.value=lastQuality),selectQuality.dispatchEvent(new CustomEvent("change",{bubbles:!0}))}}function loadQualityOptions(form,targetId,dialogOptionsFn){return dialogOptionsFn(targetId).then(function(options){return renderTargetDialogOptions(form,options)})}var currentDialogOptions;return{showMenu:showSyncMenu,renderForm:renderForm,setJobValues:setJobValues}}); \ No newline at end of file +define(["apphost","globalize","connectionManager","layoutManager","focusManager","scrollHelper","appSettings","registrationServices","dialogHelper","paper-icon-button-light","formDialogStyle"],function(appHost,globalize,connectionManager,layoutManager,focusManager,scrollHelper,appSettings,registrationServices,dialogHelper){"use strict";function submitJob(dlg,apiClient,userId,syncOptions,form){if(!userId)throw new Error("userId cannot be null");if(!syncOptions)throw new Error("syncOptions cannot be null");if(!form)throw new Error("form cannot be null");var selectSyncTarget=form.querySelector("#selectSyncTarget"),target=selectSyncTarget?selectSyncTarget.value:null;if(!target)return require(["toast"],function(toast){toast(globalize.translate("sharedcomponents#PleaseSelectDeviceToSyncTo"))}),!1;var options={userId:userId,TargetId:target,ParentId:syncOptions.ParentId,Category:syncOptions.Category};return setJobValues(options,form),syncOptions.items&&syncOptions.items.length&&(options.ItemIds=(syncOptions.items||[]).map(function(i){return i.Id||i}).join(",")),apiClient.ajax({type:"POST",url:apiClient.getUrl("Sync/Jobs"),data:JSON.stringify(options),contentType:"application/json",dataType:"json"}).then(function(){dialogHelper.close(dlg),require(["toast"],function(toast){showSubmissionToast(target,apiClient),"download"===syncOptions.mode&&syncNow()})}),!0}function showSubmissionToast(targetId,apiClient){require(["toast"],function(toast){toast(targetId===apiClient.deviceId()?globalize.translate("sharedcomponents#DownloadingDots"):globalize.translate("sharedcomponents#SyncingDots"))})}function syncNow(){require(["localsync"],function(localSync){localSync.sync()})}function submitQuickSyncJob(apiClient,userId,targetId,syncOptions){if(!userId)throw new Error("userId cannot be null");if(!syncOptions)throw new Error("syncOptions cannot be null");if(!targetId)throw new Error("targetId cannot be null");var options={userId:userId,TargetId:targetId,ParentId:syncOptions.ParentId,Category:syncOptions.Category,Quality:syncOptions.Quality,Bitrate:syncOptions.Bitrate};return syncOptions.items&&syncOptions.items.length&&(options.ItemIds=(syncOptions.items||[]).map(function(i){return i.Id||i}).join(",")),apiClient.ajax({type:"POST",url:apiClient.getUrl("Sync/Jobs"),data:JSON.stringify(options),contentType:"application/json",dataType:"json"}).then(function(){require(["toast"],function(toast){showSubmissionToast(targetId,apiClient),"download"===syncOptions.mode&&syncNow()})})}function setJobValues(job,form){var txtBitrate=form.querySelector("#txtBitrate"),bitrate=txtBitrate?txtBitrate.value:null;bitrate&&(bitrate=1e6*parseFloat(bitrate)),job.Bitrate=bitrate;var selectQuality=form.querySelector("#selectQuality");selectQuality&&(job.Quality=selectQuality.value,appSettings.set("sync-lastquality",job.Quality||""));var selectProfile=form.querySelector("#selectProfile");selectProfile&&(job.Profile=selectProfile.value);var txtItemLimit=form.querySelector("#txtItemLimit");txtItemLimit&&(job.ItemLimit=txtItemLimit.value||null);var chkSyncNewContent=form.querySelector("#chkSyncNewContent");chkSyncNewContent&&(job.SyncNewContent=chkSyncNewContent.checked);var chkUnwatchedOnly=form.querySelector("#chkUnwatchedOnly");chkUnwatchedOnly&&(job.UnwatchedOnly=chkUnwatchedOnly.checked)}function renderForm(options){return new Promise(function(resolve,reject){require(["emby-checkbox","emby-input","emby-select"],function(){renderFormInternal(options,connectionManager.deviceId(),resolve)})})}function renderFormInternal(options,defaultTargetId,resolve){var elem=options.elem,dialogOptions=options.dialogOptions,targets=dialogOptions.Targets,html="",mode=options.mode,targetContainerClass="download"===mode?" hide":"",syncTargetLabel="convert"===mode?globalize.translate("sharedcomponents#LabelConvertTo"):globalize.translate("sharedcomponents#LabelSyncTo");options.readOnlySyncTarget?(html+='
    ',html+='',html+="
    "):(html+='
    ',html+='",targets.length||(html+='
    '+globalize.translate("sharedcomponents#LabelSyncNoTargetsHelp")+"
    "),appHost.supports("externallinks")&&(html+='"),html+="
    "),html+='
    ',html+='",html+='
    ',html+="
    ",html+='
    ',html+='",html+='
    ',html+="
    ",html+='
    ',html+='',html+="
    ",-1!==dialogOptions.Options.indexOf("UnwatchedOnly")&&(html+='
    ',html+="",html+="convert"===mode?'
    '+globalize.translate("sharedcomponents#ConvertUnwatchedVideosOnlyHelp")+"
    ":'
    '+globalize.translate("sharedcomponents#SyncUnwatchedVideosOnlyHelp")+"
    ",html+="
    "),-1!==dialogOptions.Options.indexOf("SyncNewContent")&&(html+='
    ',html+="",html+="convert"===mode?'
    '+globalize.translate("sharedcomponents#AutomaticallyConvertNewContentHelp")+"
    ":'
    '+globalize.translate("sharedcomponents#AutomaticallySyncNewContentHelp")+"
    ",html+="
    "),-1!==dialogOptions.Options.indexOf("ItemLimit")&&(html+='
    ',html+='',html+="convert"===mode?'
    '+globalize.translate("sharedcomponents#ConvertItemLimitHelp")+"
    ":'
    '+globalize.translate("sharedcomponents#DownloadItemLimitHelp")+"
    ",html+="
    "),elem.innerHTML=html;var selectSyncTarget=elem.querySelector("#selectSyncTarget");selectSyncTarget&&(selectSyncTarget.addEventListener("change",function(){loadQualityOptions(elem,this.value,options.dialogOptionsFn).then(resolve)}),selectSyncTarget.dispatchEvent(new CustomEvent("change",{bubbles:!0})));var selectProfile=elem.querySelector("#selectProfile");selectProfile&&(selectProfile.addEventListener("change",function(){onProfileChange(elem,this.value)}),dialogOptions.ProfileOptions.length&&selectProfile.dispatchEvent(new CustomEvent("change",{bubbles:!0})));var selectQuality=elem.querySelector("#selectQuality");selectQuality&&(selectQuality.addEventListener("change",function(){onQualityChange(elem,this.value)}),selectQuality.dispatchEvent(new CustomEvent("change",{bubbles:!0}))),setTimeout(function(){focusManager.autoFocus(elem)},100)}function showWifiMessage(){require(["dialog","appRouter"],function(dialog,appRouter){var options={title:globalize.translate("sharedcomponents#HeaderWaitingForWifi"),text:globalize.translate("sharedcomponents#WifiRequiredToDownload")},items=[];items.push({name:options.confirmText||globalize.translate("sharedcomponents#ButtonOk"),id:"ok",type:"submit"}),items.push({name:options.cancelText||globalize.translate("sharedcomponents#HeaderDownloadSettings"),id:"downloadsettings",type:"cancel"}),options.buttons=items,dialog(options).then(function(result){return"ok"===result?Promise.resolve():"downloadsettings"===result?(appRouter.show(appRouter.getRouteUrl("downloadsettings")),Promise.resolve()):Promise.reject()})})}function validateNetwork(){switch(navigator.connection?navigator.connection.type:null){case"cellular":case"bluetooth":return showWifiMessage(),!1;default:return!0}}function showSyncMenu(options){return"download"===options.mode&&appSettings.syncOnlyOnWifi()&&!validateNetwork()?Promise.reject():registrationServices.validateFeature("sync").then(function(){return showSyncMenuInternal(options)})}function enableAutoSync(options){if("download"!==options.mode)return!1;var firstItem=(options.items||[])[0]||{};return"Audio"===firstItem.Type||("MusicAlbum"===firstItem.Type||("MusicArtist"===firstItem.Type||("MusicGenre"===firstItem.Type||"Playlist"===firstItem.Type&&"Audio"===firstItem.MediaType)))}function showSyncMenuInternal(options){var apiClient=connectionManager.getApiClient(options.serverId),userId=apiClient.getCurrentUserId();if(enableAutoSync(options))return submitQuickSyncJob(apiClient,userId,apiClient.deviceId(),{items:options.items,Quality:"custom",Bitrate:appSettings.maxStaticMusicBitrate()});var dialogOptionsFn=getTargetDialogOptionsFn(apiClient,{UserId:userId,ItemIds:(options.items||[]).map(function(i){return i.Id||i}).join(","),ParentId:options.ParentId,Category:options.Category,IncludeProviders:"convert"===options.mode?"ConvertSyncProvider":null,ExcludeProviders:"convert"===options.mode?null:"ConvertSyncProvider"});return dialogOptionsFn().then(function(dialogOptions){currentDialogOptions=dialogOptions;var dlgElementOptions={removeOnClose:!0,scrollY:!1,autoFocus:!1};layoutManager.tv?dlgElementOptions.size="fullscreen":dlgElementOptions.size="small";var dlg=dialogHelper.createDialog(dlgElementOptions);dlg.classList.add("formDialog");var html="";html+='
    ',html+='',html+='

    ';var syncButtonLabel="download"===options.mode?globalize.translate("sharedcomponents#Download"):"convert"===options.mode?globalize.translate("sharedcomponents#Convert"):globalize.translate("sharedcomponents#Sync");html+=syncButtonLabel,html+="

    ",appHost.supports("externallinks")&&(html+='info'+globalize.translate("sharedcomponents#Help")+""),html+="
    ",html+='
    ',html+='
    ',html+='
    ',html+='
    ',html+='
    ',html+='",html+="
    ",html+="
    ",html+="
    ",html+="
    ",dlg.innerHTML=html;var submitted=!1;dlg.querySelector("form").addEventListener("submit",function(e){return submitted=submitJob(dlg,apiClient,userId,options,this),e.preventDefault(),!1}),dlg.querySelector(".btnCancel").addEventListener("click",function(){dialogHelper.close(dlg)}),layoutManager.tv&&scrollHelper.centerFocus.on(dlg.querySelector(".formDialogContent"),!1);var promise=dialogHelper.open(dlg);return renderForm({elem:dlg.querySelector(".formFields"),dialogOptions:dialogOptions,dialogOptionsFn:dialogOptionsFn,mode:options.mode}),promise.then(function(){return layoutManager.tv&&scrollHelper.centerFocus.off(dlg.querySelector(".formDialogContent"),!1),submitted?Promise.resolve():Promise.reject()})})}function getTargetDialogOptionsFn(apiClient,query){return function(targetId){return query.TargetId=targetId,apiClient.getJSON(apiClient.getUrl("Sync/Options",query))}}function setQualityFieldVisible(form,visible){var fldQuality=form.querySelector(".fldQuality"),selectQuality=form.querySelector("#selectQuality");visible?(fldQuality&&fldQuality.classList.remove("hide"),selectQuality&&selectQuality.removeAttribute("required")):(fldQuality&&fldQuality.classList.add("hide"),selectQuality&&selectQuality.removeAttribute("required"))}function onProfileChange(form,profileId){var options=currentDialogOptions||{},profileOptions=options.ProfileOptions||[];if(profileOptions.length){var option=profileOptions.filter(function(o){return o.Id===profileId})[0],qualityOptions=options.QualityOptions||[];option?(form.querySelector(".profileDescription").innerHTML=option.Description||"",setQualityFieldVisible(form,qualityOptions.length>0&&option.EnableQualityOptions&&-1!==options.Options.indexOf("Quality"))):(form.querySelector(".profileDescription").innerHTML="",setQualityFieldVisible(form,qualityOptions.length>0&&-1!==options.Options.indexOf("Quality")))}}function onQualityChange(form,qualityId){var options=currentDialogOptions||{},option=(options.QualityOptions||[]).filter(function(o){return o.Id===qualityId})[0],qualityDescription=form.querySelector(".qualityDescription");qualityDescription.innerHTML=option?option.Description||"":"";var fldBitrate=form.querySelector(".fldBitrate"),txtBitrate=form.querySelector("#txtBitrate");"custom"===qualityId?(fldBitrate&&fldBitrate.classList.remove("hide"),txtBitrate&&txtBitrate.setAttribute("required","required")):(fldBitrate&&fldBitrate.classList.add("hide"),txtBitrate&&txtBitrate.removeAttribute("required"))}function renderTargetDialogOptions(form,options){currentDialogOptions=options;var fldProfile=form.querySelector(".fldProfile"),selectProfile=form.querySelector("#selectProfile");options.ProfileOptions.length&&-1!==options.Options.indexOf("Profile")?(fldProfile&&fldProfile.classList.remove("hide"),selectProfile&&selectProfile.setAttribute("required","required")):(fldProfile&&fldProfile.classList.add("hide"),selectProfile&&selectProfile.removeAttribute("required")),setQualityFieldVisible(form,options.QualityOptions.length>0),selectProfile&&(selectProfile.innerHTML=options.ProfileOptions.map(function(o){var selectedAttribute=o.IsDefault?' selected="selected"':"";return'"}).join(""),selectProfile.dispatchEvent(new CustomEvent("change",{bubbles:!0})));var selectQuality=form.querySelector("#selectQuality");if(selectQuality){selectQuality.innerHTML=options.QualityOptions.map(function(o){var selectedAttribute=o.IsDefault?' selected="selected"':"";return'"}).join("");var lastQuality=appSettings.get("sync-lastquality");lastQuality&&options.QualityOptions.filter(function(i){return i.Id===lastQuality}).length&&(selectQuality.value=lastQuality),selectQuality.dispatchEvent(new CustomEvent("change",{bubbles:!0}))}}function loadQualityOptions(form,targetId,dialogOptionsFn){return dialogOptionsFn(targetId).then(function(options){return renderTargetDialogOptions(form,options)})}var currentDialogOptions;return{showMenu:showSyncMenu,renderForm:renderForm,setJobValues:setJobValues}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/sync/syncjobeditor.js b/dashboard-ui/bower_components/emby-webcomponents/sync/syncjobeditor.js index 8ceec9ea9a..42e6d32445 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/sync/syncjobeditor.js +++ b/dashboard-ui/bower_components/emby-webcomponents/sync/syncjobeditor.js @@ -1 +1 @@ -define(["connectionManager","serverNotifications","events","datetime","dom","imageLoader","loading","globalize","apphost","layoutManager","scrollHelper","dialogHelper","listViewStyle","paper-icon-button-light","emby-button","formDialogStyle","emby-linkbutton"],function(connectionManager,serverNotifications,events,datetime,dom,imageLoader,loading,globalize,appHost,layoutManager,scrollHelper,dialogHelper){"use strict";function syncNow(){require(["localsync"],function(localSync){localSync.sync()})}function renderJob(context,job,dialogOptions){require(["syncDialog"],function(syncDialog){syncDialog.renderForm({elem:context.querySelector(".syncJobFormContent"),dialogOptions:dialogOptions,dialogOptionsFn:getTargetDialogOptionsFn(dialogOptions),readOnlySyncTarget:!0}).then(function(){fillJobValues(context,job,dialogOptions)})})}function getTargetDialogOptionsFn(dialogOptions){return function(targetId){return Promise.resolve(dialogOptions)}}function getJobItemHtml(jobItem,apiClient,index){var nextAction,html="",status=jobItem.Status;"Failed"===status?nextAction="retry":"Cancelled"===status?nextAction="retry":"Queued"===status||"Transferring"===status||"Converting"===status||"ReadyToTransfer"===status?nextAction="cancel":"Synced"!==status||jobItem.IsMarkedForRemoval||(nextAction="remove");var listItemClass="listItem listItem-shaded";layoutManager.tv&&nextAction&&(listItemClass+=" btnJobItemMenu"),layoutManager.tv&&(listItemClass+=" listItem-button");var tagName=layoutManager.tv?"button":"div";html+="<"+tagName+' type="button" class="'+listItemClass+'" data-itemid="'+jobItem.Id+'" data-status="'+jobItem.Status+'" data-action="'+nextAction+'">';var imgUrl;jobItem.PrimaryImageItemId&&(imgUrl=apiClient.getImageUrl(jobItem.PrimaryImageItemId,{type:"Primary",width:80,tag:jobItem.PrimaryImageTag,minScale:1.5})),html+=imgUrl?'
    ":'sync',html+='
    ',html+='

    ',html+=jobItem.ItemName,html+="

    ",html+="Failed"===jobItem.Status?'
    ':'
    ',html+=globalize.translate("sharedcomponents#SyncJobItemStatus"+jobItem.Status),"Synced"===jobItem.Status&&jobItem.IsMarkedForRemoval&&(html+="
    ",html+=globalize.translate("sharedcomponents#RemovingFromDevice")),html+="
    ",html+='
    ',html+='
    ',html+="
    ",html+="
    ";"dots-horiz"===appHost.moreIcon?"":"";return layoutManager.tv||("retry"===nextAction?html+='':"cancel"===nextAction?html+='':"remove"===nextAction&&(html+='')),html+=""}function renderJobItems(context,items,apiClient){var html="";html+="

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

    ",html+='
    ';var index=0;html+=items.map(function(i){return getJobItemHtml(i,apiClient,index++)}).join(""),html+="
    ";var elem=context.querySelector(".jobItems");elem.innerHTML=html,imageLoader.lazyChildren(elem)}function parentWithClass(elem,className){for(;!elem.classList||!elem.classList.contains(className);)if(elem=elem.parentNode,!elem)return null;return elem}function showJobItemMenu(elem,jobId,apiClient){var action=elem.getAttribute("data-action"),context=parentWithClass(elem,"formDialog"),listItem=parentWithClass(elem,"listItem"),jobItemId=listItem.getAttribute("data-itemid");"retry"===action?retryJobItem(context,jobId,jobItemId,apiClient):"cancel"!==action&&"remove"!==action||cancelJobItem(context,jobId,jobItemId,apiClient)}function cancelJobItem(context,jobId,jobItemId,apiClient){showRemoveConfirm(function(){loading.show(),apiClient.ajax({type:"DELETE",url:apiClient.getUrl("Sync/JobItems/"+jobItemId)}).then(function(){appHost.supports("sync")&&syncNow(),loadJob(context,jobId,apiClient)})})}function retryJobItem(context,jobId,jobItemId,apiClient){showRetryConfirm(function(){apiClient.ajax({type:"POST",url:apiClient.getUrl("Sync/JobItems/"+jobItemId+"/Enable")}).then(function(){appHost.supports("sync")&&syncNow(),loadJob(context,jobId,apiClient)})})}function showRetryConfirm(callback){require(["confirm"],function(confirm){confirm({text:globalize.translate("sharedcomponents#ConfirmRemoveDownload"),confirmText:globalize.translate("sharedcomponents#RemoveDownload"),cancelText:globalize.translate("sharedcomponents#KeepDownload"),primary:"cancel"}).then(callback)})}function showRemoveConfirm(callback){require(["confirm"],function(confirm){confirm({text:globalize.translate("sharedcomponents#ConfirmRemoveDownload"),confirmText:globalize.translate("sharedcomponents#RemoveDownload"),cancelText:globalize.translate("sharedcomponents#KeepDownload"),primary:"cancel"}).then(callback)})}function fillJobValues(context,job,editOptions){var selectProfile=context.querySelector("#selectProfile");selectProfile&&(selectProfile.value=job.Profile||"");var selectQuality=context.querySelector("#selectQuality");selectQuality&&(selectQuality.value=job.Quality||"");var chkUnwatchedOnly=context.querySelector("#chkUnwatchedOnly");chkUnwatchedOnly&&(chkUnwatchedOnly.checked=job.UnwatchedOnly);var chkSyncNewContent=context.querySelector("#chkSyncNewContent");chkSyncNewContent&&(chkSyncNewContent.checked=job.SyncNewContent);var txtItemLimit=context.querySelector("#txtItemLimit");txtItemLimit&&(txtItemLimit.value=job.ItemLimit);var txtBitrate=context.querySelector("#txtBitrate");job.Bitrate?txtBitrate.value=job.Bitrate/1e6:txtBitrate.value="";var target=editOptions.Targets.filter(function(t){return t.Id===job.TargetId})[0],targetName=target?target.Name:"",selectSyncTarget=context.querySelector("#selectSyncTarget");selectSyncTarget&&(selectSyncTarget.value=targetName)}function loadJob(context,id,apiClient){loading.show(),apiClient.getJSON(apiClient.getUrl("Sync/Jobs/"+id)).then(function(job){apiClient.getJSON(apiClient.getUrl("Sync/Options",{UserId:job.UserId,ItemIds:job.RequestedItemIds&&job.RequestedItemIds.length?job.RequestedItemIds.join(""):null,ParentId:job.ParentId,Category:job.Category,TargetId:job.TargetId})).then(function(options){_jobOptions=options,renderJob(context,job,options),loading.hide()})}),apiClient.getJSON(apiClient.getUrl("Sync/JobItems",{JobId:id,AddMetadata:!0})).then(function(result){renderJobItems(context,result.Items,apiClient),loading.hide()})}function loadJobInfo(context,job,jobItems,apiClient){renderJobItems(context,jobItems,apiClient),loading.hide()}function saveJob(context,id,apiClient){loading.show(),apiClient.getJSON(apiClient.getUrl("Sync/Jobs/"+id)).then(function(job){require(["syncDialog"],function(syncDialog){syncDialog.setJobValues(job,context),apiClient.ajax({url:apiClient.getUrl("Sync/Jobs/"+id),type:"POST",data:JSON.stringify(job),contentType:"application/json"}).then(function(){appHost.supports("sync")&&syncNow(),loading.hide(),dialogHelper.close(context)})})})}function startListening(apiClient,jobId){var startParams="0,1500";startParams+=","+jobId,apiClient.isWebSocketOpen()&&apiClient.sendWebSocketMessage("SyncJobStart",startParams)}function stopListening(apiClient){apiClient.isWebSocketOpen()&&apiClient.sendWebSocketMessage("SyncJobStop","")}function bindEvents(context,jobId,apiClient){context.querySelector(".jobItems").addEventListener("click",function(e){var btnJobItemMenu=dom.parentWithClass(e.target,"btnJobItemMenu");btnJobItemMenu&&showJobItemMenu(btnJobItemMenu,jobId,apiClient)})}function showEditor(options){function onSyncJobMessage(e,apiClient,msg){loadJobInfo(dlg,msg.Job,msg.JobItems,apiClient)}var apiClient=connectionManager.getApiClient(options.serverId),id=options.jobId,dlgElementOptions={removeOnClose:!0,scrollY:!1,autoFocus:!1};layoutManager.tv?dlgElementOptions.size="fullscreen":dlgElementOptions.size="medium";var dlg=dialogHelper.createDialog(dlgElementOptions);dlg.classList.add("formDialog");var html="";html+='
    ',html+='',html+='

    ',html+=globalize.translate("sharedcomponents#Sync"),html+="

    ",appHost.supports("externallinks")&&(html+='info'+globalize.translate("sharedcomponents#Help")+""),html+="
    ",html+='
    ',html+='
    ',html+='
    ',html+='
    ',html+='
    ',html+='
    ',html+='",html+="
    ",html+="
    ",html+="
    ",html+="
    ",dlg.innerHTML=html;var submitted=!1;dlg.querySelector("form").addEventListener("submit",function(e){return saveJob(dlg,id,apiClient),e.preventDefault(),!1}),dlg.querySelector(".btnCancel").addEventListener("click",function(){dialogHelper.close(dlg)}),layoutManager.tv&&scrollHelper.centerFocus.on(dlg.querySelector(".formDialogContent"),!1),loadJob(dlg,id,apiClient),bindEvents(dlg,id,apiClient);var promise=dialogHelper.open(dlg);return startListening(apiClient,id),events.on(serverNotifications,"SyncJob",onSyncJobMessage),promise.then(function(){return stopListening(apiClient),events.off(serverNotifications,"SyncJob",onSyncJobMessage),layoutManager.tv&&scrollHelper.centerFocus.off(dlg.querySelector(".formDialogContent"),!1),submitted?Promise.resolve():Promise.reject()})}var _jobOptions;return{show:showEditor}}); \ No newline at end of file +define(["connectionManager","serverNotifications","events","datetime","dom","imageLoader","loading","globalize","apphost","layoutManager","scrollHelper","dialogHelper","listViewStyle","paper-icon-button-light","emby-button","formDialogStyle","emby-linkbutton"],function(connectionManager,serverNotifications,events,datetime,dom,imageLoader,loading,globalize,appHost,layoutManager,scrollHelper,dialogHelper){"use strict";function syncNow(){require(["localsync"],function(localSync){localSync.sync()})}function renderJob(context,job,dialogOptions){require(["syncDialog"],function(syncDialog){syncDialog.renderForm({elem:context.querySelector(".syncJobFormContent"),dialogOptions:dialogOptions,dialogOptionsFn:getTargetDialogOptionsFn(dialogOptions),readOnlySyncTarget:!0}).then(function(){fillJobValues(context,job,dialogOptions)})})}function getTargetDialogOptionsFn(dialogOptions){return function(targetId){return Promise.resolve(dialogOptions)}}function getJobItemHtml(jobItem,apiClient,index){var nextAction,html="",status=jobItem.Status;"Failed"===status?nextAction="retry":"Cancelled"===status?nextAction="retry":"Queued"===status||"Transferring"===status||"Converting"===status||"ReadyToTransfer"===status?nextAction="cancel":"Synced"!==status||jobItem.IsMarkedForRemoval||(nextAction="remove");var listItemClass="listItem listItem-border";layoutManager.tv&&nextAction&&(listItemClass+=" btnJobItemMenu"),layoutManager.tv&&(listItemClass+=" listItem-button");var tagName=layoutManager.tv?"button":"div";html+="<"+tagName+' type="button" class="'+listItemClass+'" data-itemid="'+jobItem.Id+'" data-status="'+jobItem.Status+'" data-action="'+nextAction+'">';var imgUrl;jobItem.PrimaryImageItemId&&(imgUrl=apiClient.getImageUrl(jobItem.PrimaryImageItemId,{type:"Primary",width:80,tag:jobItem.PrimaryImageTag,minScale:1.5})),html+=imgUrl?'
    ":'sync',html+='
    ',html+='

    ',html+=jobItem.ItemName,html+="

    ","Failed"===jobItem.Status?html+='
    ':html+='
    ',html+=globalize.translate("sharedcomponents#SyncJobItemStatus"+jobItem.Status),"Synced"===jobItem.Status&&jobItem.IsMarkedForRemoval&&(html+="
    ",html+=globalize.translate("sharedcomponents#RemovingFromDevice")),html+="
    ",html+='
    ',html+='
    ',html+="
    ",html+="
    ";return layoutManager.tv||("retry"===nextAction?html+='':"cancel"===nextAction?html+='':"remove"===nextAction&&(html+='')),html+=""}function renderJobItems(context,items,apiClient){var html="";html+="

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

    ",html+='
    ';var index=0;html+=items.map(function(i){return getJobItemHtml(i,apiClient,index++)}).join(""),html+="
    ";var elem=context.querySelector(".jobItems");elem.innerHTML=html,imageLoader.lazyChildren(elem)}function parentWithClass(elem,className){for(;!elem.classList||!elem.classList.contains(className);)if(!(elem=elem.parentNode))return null;return elem}function showJobItemMenu(elem,jobId,apiClient){var action=elem.getAttribute("data-action"),context=parentWithClass(elem,"formDialog"),listItem=parentWithClass(elem,"listItem"),jobItemId=listItem.getAttribute("data-itemid");"retry"===action?retryJobItem(context,jobId,jobItemId,apiClient):"cancel"!==action&&"remove"!==action||cancelJobItem(context,jobId,jobItemId,apiClient)}function cancelJobItem(context,jobId,jobItemId,apiClient){showRemoveConfirm(function(){loading.show(),apiClient.ajax({type:"DELETE",url:apiClient.getUrl("Sync/JobItems/"+jobItemId)}).then(function(){appHost.supports("sync")&&syncNow(),loadJob(context,jobId,apiClient)})})}function retryJobItem(context,jobId,jobItemId,apiClient){showRetryConfirm(function(){apiClient.ajax({type:"POST",url:apiClient.getUrl("Sync/JobItems/"+jobItemId+"/Enable")}).then(function(){appHost.supports("sync")&&syncNow(),loadJob(context,jobId,apiClient)})})}function showRetryConfirm(callback){require(["confirm"],function(confirm){confirm({text:globalize.translate("sharedcomponents#ConfirmRemoveDownload"),confirmText:globalize.translate("sharedcomponents#RemoveDownload"),cancelText:globalize.translate("sharedcomponents#KeepDownload"),primary:"cancel"}).then(callback)})}function showRemoveConfirm(callback){require(["confirm"],function(confirm){confirm({text:globalize.translate("sharedcomponents#ConfirmRemoveDownload"),confirmText:globalize.translate("sharedcomponents#RemoveDownload"),cancelText:globalize.translate("sharedcomponents#KeepDownload"),primary:"cancel"}).then(callback)})}function fillJobValues(context,job,editOptions){var selectProfile=context.querySelector("#selectProfile");selectProfile&&(selectProfile.value=job.Profile||"");var selectQuality=context.querySelector("#selectQuality");selectQuality&&(selectQuality.value=job.Quality||"");var chkUnwatchedOnly=context.querySelector("#chkUnwatchedOnly");chkUnwatchedOnly&&(chkUnwatchedOnly.checked=job.UnwatchedOnly);var chkSyncNewContent=context.querySelector("#chkSyncNewContent");chkSyncNewContent&&(chkSyncNewContent.checked=job.SyncNewContent);var txtItemLimit=context.querySelector("#txtItemLimit");txtItemLimit&&(txtItemLimit.value=job.ItemLimit);var txtBitrate=context.querySelector("#txtBitrate");job.Bitrate?txtBitrate.value=job.Bitrate/1e6:txtBitrate.value="";var target=editOptions.Targets.filter(function(t){return t.Id===job.TargetId})[0],targetName=target?target.Name:"",selectSyncTarget=context.querySelector("#selectSyncTarget");selectSyncTarget&&(selectSyncTarget.value=targetName)}function loadJob(context,id,apiClient){loading.show(),apiClient.getJSON(apiClient.getUrl("Sync/Jobs/"+id)).then(function(job){apiClient.getJSON(apiClient.getUrl("Sync/Options",{UserId:job.UserId,ItemIds:job.RequestedItemIds&&job.RequestedItemIds.length?job.RequestedItemIds.join(""):null,ParentId:job.ParentId,Category:job.Category,TargetId:job.TargetId})).then(function(options){_jobOptions=options,renderJob(context,job,options),loading.hide()})}),apiClient.getJSON(apiClient.getUrl("Sync/JobItems",{JobId:id,AddMetadata:!0})).then(function(result){renderJobItems(context,result.Items,apiClient),loading.hide()})}function loadJobInfo(context,job,jobItems,apiClient){renderJobItems(context,jobItems,apiClient),loading.hide()}function saveJob(context,id,apiClient){loading.show(),apiClient.getJSON(apiClient.getUrl("Sync/Jobs/"+id)).then(function(job){require(["syncDialog"],function(syncDialog){syncDialog.setJobValues(job,context),apiClient.ajax({url:apiClient.getUrl("Sync/Jobs/"+id),type:"POST",data:JSON.stringify(job),contentType:"application/json"}).then(function(){appHost.supports("sync")&&syncNow(),loading.hide(),dialogHelper.close(context)})})})}function startListening(apiClient,jobId){var startParams="0,1500";startParams+=","+jobId,apiClient.sendMessage("SyncJobStart",startParams)}function stopListening(apiClient){apiClient.sendMessage("SyncJobStop","")}function bindEvents(context,jobId,apiClient){context.querySelector(".jobItems").addEventListener("click",function(e){var btnJobItemMenu=dom.parentWithClass(e.target,"btnJobItemMenu");btnJobItemMenu&&showJobItemMenu(btnJobItemMenu,jobId,apiClient)})}function showEditor(options){function onSyncJobMessage(e,apiClient,msg){loadJobInfo(dlg,msg.Job,msg.JobItems,apiClient)}var apiClient=connectionManager.getApiClient(options.serverId),id=options.jobId,dlgElementOptions={removeOnClose:!0,scrollY:!1,autoFocus:!1};layoutManager.tv?dlgElementOptions.size="fullscreen":dlgElementOptions.size="medium";var dlg=dialogHelper.createDialog(dlgElementOptions);dlg.classList.add("formDialog");var html="";html+='
    ',html+='',html+='

    ',html+=globalize.translate("sharedcomponents#Sync"),html+="

    ",appHost.supports("externallinks")&&(html+='info'+globalize.translate("sharedcomponents#Help")+""),html+="
    ",html+='
    ',html+='
    ',html+='
    ',html+='
    ',html+='
    ',html+='
    ',html+='",html+="
    ",html+="
    ",html+="
    ",html+="
    ",dlg.innerHTML=html;dlg.querySelector("form").addEventListener("submit",function(e){return saveJob(dlg,id,apiClient),e.preventDefault(),!1}),dlg.querySelector(".btnCancel").addEventListener("click",function(){dialogHelper.close(dlg)}),layoutManager.tv&&scrollHelper.centerFocus.on(dlg.querySelector(".formDialogContent"),!1),loadJob(dlg,id,apiClient),bindEvents(dlg,id,apiClient);var promise=dialogHelper.open(dlg);return startListening(apiClient,id),events.on(serverNotifications,"SyncJob",onSyncJobMessage),promise.then(function(){return stopListening(apiClient),events.off(serverNotifications,"SyncJob",onSyncJobMessage),layoutManager.tv&&scrollHelper.centerFocus.off(dlg.querySelector(".formDialogContent"),!1),Promise.reject()})}var _jobOptions;return{show:showEditor}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/sync/syncjoblist.js b/dashboard-ui/bower_components/emby-webcomponents/sync/syncjoblist.js index cc58ff7a95..0208990a9a 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/sync/syncjoblist.js +++ b/dashboard-ui/bower_components/emby-webcomponents/sync/syncjoblist.js @@ -1 +1 @@ -define(["serverNotifications","events","loading","connectionManager","imageLoader","dom","globalize","registrationServices","layoutManager","listViewStyle"],function(serverNotifications,events,loading,connectionManager,imageLoader,dom,globalize,registrationServices,layoutManager){"use strict";function onSyncJobsUpdated(e,apiClient,data){var listInstance=this;renderList(listInstance,data,apiClient)}function refreshList(listInstance,jobs){for(var i=0,length=jobs.length;i0&&progress<100&&(progress=progress.toFixed(1)),html+=progress+"%"}return html}function getSyncJobHtml(listInstance,job,apiClient){var html="",tagName=layoutManager.tv?"button":"div",typeAttribute="button"===tagName?' type="button"':"",listItemClass="listItem listItem-shaded";layoutManager.tv&&(listItemClass+=" listItem-button listItem-focusscale",listItemClass+=" btnJobMenu");var canEdit=(job.ItemCount||1)>1||"Queued"===job.Status;html+="<"+tagName+typeAttribute+' class="'+listItemClass+'" data-canedit="'+canEdit+'" data-id="'+job.Id+'" data-status="'+job.Status+'">';var imgUrl;job.PrimaryImageItemId&&(imgUrl=apiClient.getImageUrl(job.PrimaryImageItemId,{type:"Primary",width:80,tag:job.PrimaryImageTag,minScale:1.5})),imgUrl?(html+='
    ',html+="
    "):html+='file_download';var textLines=[],name=job.Name;job.ParentName&&(name+=" - "+job.ParentName),textLines.push(name),1===job.ItemCount||textLines.push(globalize.translate("sharedcomponents#ItemCount",job.ItemCount)),html+='
    ';for(var i=0,length=textLines.length;i',html+=textLines[i],html+=""):(html+='
    ',html+=textLines[i],html+="
    ");return html+='
    ',html+=getProgressText(job),html+="
    ",html+="
    ",layoutManager.tv||(html+=canEdit?'':''),html+=""}function renderList(listInstance,jobs,apiClient){if((new Date).getTime()-listInstance.lastDataLoad<6e4)return void refreshList(listInstance,jobs);listInstance.lastDataLoad=(new Date).getTime();for(var html="",lastTargetName="",isLocalSync=listInstance.options.isLocalSync,showTargetName=!isLocalSync,hasOpenSection=!1,i=0,length=jobs.length;i",html+="
    ",hasOpenSection=!1),lastTargetName=targetName,html+='
    ',html+='
    ',html+='

    '+targetName+"

    ",html+="
    ",html+='
    ',hasOpenSection=!0)}html+=getSyncJobHtml(listInstance,job,apiClient)}hasOpenSection&&(html+="
    ",html+="
    ");var elem=listInstance.options.element.querySelector(".syncJobListContent");html||(html=isLocalSync?'
    '+globalize.translate("sharedcomponents#MessageNoDownloadsFound")+"
    ":'
    '+globalize.translate("sharedcomponents#MessageNoSyncJobsFound")+"
    "),elem.innerHTML=html,imageLoader.lazyChildren(elem)}function fetchData(listInstance){listInstance.lastDataLoad=0,loading.show();var options={},apiClient=getApiClient(listInstance);return listInstance.options.userId&&(options.UserId=listInstance.options.userId),listInstance.options.isLocalSync&&(options.TargetId=apiClient.deviceId()),apiClient.getJSON(apiClient.getUrl("Sync/Jobs",options)).then(function(response){renderList(listInstance,response.Items,apiClient),loading.hide()})}function startListening(listInstance){var startParams="0,1500",apiClient=getApiClient(listInstance);listInstance.options.userId&&(startParams+=","+listInstance.options.userId),listInstance.options.isLocalSync?startParams+=","+apiClient.deviceId():listInstance.options.enableRemoteSyncManagement===!1&&(startParams+=",true"),apiClient.isWebSocketOpen()&&apiClient.sendWebSocketMessage("SyncJobsStart",startParams)}function stopListening(listInstance){var apiClient=getApiClient(listInstance);apiClient.isWebSocketOpen()&&apiClient.sendWebSocketMessage("SyncJobsStop","")}function getApiClient(listInstance){return connectionManager.getApiClient(listInstance.options.serverId)}function showJobMenu(listInstance,elem){var item=dom.parentWithClass(elem,"listItem"),jobId=item.getAttribute("data-id"),menuItems=(item.getAttribute("data-status"),[]);"true"===item.getAttribute("data-canedit")&&menuItems.push({name:globalize.translate("sharedcomponents#Edit"),id:"edit"});var txt=globalize.translate("sharedcomponents#RemoveDownload");menuItems.push({name:txt,id:"cancel"}),require(["actionsheet"],function(actionsheet){actionsheet.show({items:menuItems,positionTo:elem,callback:function(id){switch(id){case"delete":cancelJob(listInstance,jobId);break;case"cancel":cancelJob(listInstance,jobId);break;case"edit":showJobEditor(listInstance,elem)}}})})}function onElementClick(e){var listInstance=this,btnJobMenu=dom.parentWithClass(e.target,"btnJobMenu");if(btnJobMenu)return void showJobMenu(listInstance,btnJobMenu);var btnCancelJob=dom.parentWithClass(e.target,"btnCancelJob");if(btnCancelJob){var listItem=dom.parentWithClass(btnCancelJob,"listItem");if(listItem){var jobId=listItem.getAttribute("data-id");cancelJob(listInstance,jobId)}}else showJobEditor(listInstance,e.target)}function showJobEditor(listInstance,elem){var listItem=dom.parentWithClass(elem,"listItem");if(listItem&&"true"===listItem.getAttribute("data-canedit")){var jobId=listItem.getAttribute("data-id");require(["syncJobEditor"],function(syncJobEditor){syncJobEditor.show({serverId:listInstance.options.serverId,jobId:jobId,isLocalSync:listInstance.options.isLocalSync}).then(function(){fetchData(listInstance)})})}}function syncJobList(options){this.options=options;var onSyncJobsUpdatedHandler=onSyncJobsUpdated.bind(this);this.onSyncJobsUpdatedHandler=onSyncJobsUpdatedHandler,events.on(serverNotifications,"SyncJobs",onSyncJobsUpdatedHandler);var onClickHandler=onElementClick.bind(this);options.element.addEventListener("click",onClickHandler),this.onClickHandler=onClickHandler,options.element.innerHTML='
    ',fetchData(this),startListening(this),initSupporterInfo(options.element,getApiClient(this))}function showSupporterInfo(context){var html='':''),html+=""}function renderList(listInstance,jobs,apiClient){if((new Date).getTime()-listInstance.lastDataLoad<6e4)return void refreshList(listInstance,jobs);listInstance.lastDataLoad=(new Date).getTime();for(var html="",lastTargetName="",mode=listInstance.options.mode,showTargetName="download"!==mode,hasOpenSection=!1,i=0,length=jobs.length;i",html+="
    ",hasOpenSection=!1),lastTargetName=targetName,html+='
    ',html+='
    ',html+='

    '+targetName+"

    ",html+="
    ",html+='
    ',hasOpenSection=!0)}html+=getSyncJobHtml(listInstance,job,apiClient)}hasOpenSection&&(html+="
    ",html+="
    ");var elem=listInstance.options.element.querySelector(".syncJobListContent");html||(html="download"===mode?'
    '+globalize.translate("sharedcomponents#MessageNoDownloadsFound")+"
    ":'
    '+globalize.translate("sharedcomponents#MessageNoSyncJobsFound")+"
    "),elem.innerHTML=html,imageLoader.lazyChildren(elem)}function fetchData(listInstance){listInstance.lastDataLoad=0,loading.show();var options={},apiClient=getApiClient(listInstance);return listInstance.options.userId&&(options.UserId=listInstance.options.userId),"download"===listInstance.options.mode&&(options.TargetId=apiClient.deviceId()),apiClient.getJSON(apiClient.getUrl("Sync/Jobs",options)).then(function(response){renderList(listInstance,response.Items,apiClient),loading.hide()})}function getApiClient(listInstance){return connectionManager.getApiClient(listInstance.options.serverId)}function showJobMenu(listInstance,elem){var item=dom.parentWithClass(elem,"listItem"),jobId=item.getAttribute("data-id"),menuItems=(item.getAttribute("data-status"),[]);"true"===item.getAttribute("data-canedit")&&menuItems.push({name:globalize.translate("sharedcomponents#Edit"),id:"edit"});var txt=globalize.translate("sharedcomponents#RemoveDownload");menuItems.push({name:txt,id:"cancel"}),require(["actionsheet"],function(actionsheet){actionsheet.show({items:menuItems,positionTo:elem,callback:function(id){switch(id){case"delete":case"cancel":cancelJob(listInstance,jobId);break;case"edit":showJobEditor(listInstance,elem)}}})})}function onElementClick(e){var listInstance=this,btnJobMenu=dom.parentWithClass(e.target,"btnJobMenu");if(btnJobMenu)return void showJobMenu(listInstance,btnJobMenu);var btnCancelJob=dom.parentWithClass(e.target,"btnCancelJob");if(btnCancelJob){var listItem=dom.parentWithClass(btnCancelJob,"listItem");if(listItem){cancelJob(listInstance,listItem.getAttribute("data-id"))}}else showJobEditor(listInstance,e.target)}function showJobEditor(listInstance,elem){var listItem=dom.parentWithClass(elem,"listItem");if(listItem&&"true"===listItem.getAttribute("data-canedit")){var jobId=listItem.getAttribute("data-id");require(["syncJobEditor"],function(syncJobEditor){syncJobEditor.show({serverId:listInstance.options.serverId,jobId:jobId,mode:listInstance.options.mode}).then(function(){fetchData(listInstance)})})}}function syncJobList(options){this.options=options;var onSyncJobCreatedHandler=onSyncJobCreated.bind(this);this.onSyncJobCreatedHandler=onSyncJobCreatedHandler,events.on(serverNotifications,"SyncJobCreated",onSyncJobCreatedHandler);var onSyncJobCancelledHandler=onSyncJobCancelled.bind(this);this.onSyncJobCancelledHandler=onSyncJobCancelledHandler,events.on(serverNotifications,"SyncJobCancelled",onSyncJobCancelledHandler);var onSyncJobUpdatedHandler=onSyncJobUpdated.bind(this);this.onSyncJobUpdatedHandler=onSyncJobUpdatedHandler,events.on(serverNotifications,"SyncJobUpdated",onSyncJobUpdatedHandler);var onClickHandler=onElementClick.bind(this);options.element.addEventListener("click",onClickHandler),this.onClickHandler=onClickHandler,options.element.innerHTML='
    ',fetchData(this),initSupporterInfo(options.element,getApiClient(this))}function showSupporterInfo(context){var html='
    '),btnFilter.classList.add("btnFilterWithBubble"),bubble=btnFilter.querySelector(".filterButtonBubble")}hasFilters?bubble.classList.remove("hide"):bubble.classList.add("hide")}},ItemsTab.prototype.onPause=function(){var scroller=this.scroller;scroller&&scroller.pause();var alphaNumericShortcuts=this.alphaNumericShortcuts;alphaNumericShortcuts&&(alphaNumericShortcuts.destroy(),this.alphaNumericShortcuts=null)},ItemsTab.prototype.destroy=function(){this.view=null,this.itemsContainer=null,this.params=null,this.apiClient=null,this.scroller=null,this.btnFilter=null,this.alphaPicker&&(this.alphaPicker.destroy(),this.alphaPicker=null)},ItemsTab}); \ No newline at end of file +define(["playbackManager","userSettings","alphaPicker","alphaNumericShortcuts","connectionManager","focusManager","loading","globalize"],function(playbackManager,userSettings,AlphaPicker,AlphaNumericShortcuts,connectionManager,focusManager,loading,globalize){"use strict";function trySelectValue(instance,scroller,view,value){var card;if("#"===value&&(card=view.querySelector(".card")))return void scroller.toStart(card,!1);if(card=view.querySelector(".card[data-prefix^='"+value+"']"))return void scroller.toStart(card,!1);var values=instance.alphaPicker.values(),index=values.indexOf(value);if(index!
    '),btnFilter.classList.add("btnFilterWithBubble"),bubble=btnFilter.querySelector(".filterButtonBubble")}hasFilters?bubble.classList.remove("hide"):bubble.classList.add("hide")}},ItemsTab.prototype.onPause=function(){var scroller=this.scroller;scroller&&scroller.pause&&scroller.pause();var alphaNumericShortcuts=this.alphaNumericShortcuts;alphaNumericShortcuts&&(alphaNumericShortcuts.destroy(),this.alphaNumericShortcuts=null)},ItemsTab.prototype.destroy=function(){this.view=null,this.itemsContainer=null,this.params=null,this.apiClient=null,this.scroller=null,this.filterButtons=null,this.alphaPicker&&(this.alphaPicker.destroy(),this.alphaPicker=null),this.sortButtons=null,this.btnSortText=null,this.btnSortIcon=null,this.alphaPickerElement=null},ItemsTab}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/tabbedview/tabbedview.js b/dashboard-ui/bower_components/emby-webcomponents/tabbedview/tabbedview.js index c59c8f0cc2..ac0041dd38 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/tabbedview/tabbedview.js +++ b/dashboard-ui/bower_components/emby-webcomponents/tabbedview/tabbedview.js @@ -1 +1 @@ -define(["backdrop","mainTabsManager","emby-tabs"],function(backdrop,mainTabsManager){"use strict";function onViewDestroy(e){var tabControllers=this.tabControllers;tabControllers&&(tabControllers.forEach(function(t){t.destroy&&t.destroy()}),this.tabControllers=null),this.view=null,this.params=null}function onBeforeTabChange(){}function TabbedView(view,params){function validateTabLoad(index){return self.validateTabLoad?self.validateTabLoad(index):Promise.resolve()}function loadTab(index){validateTabLoad(index).then(function(){self.getTabController(index).then(function(controller){var refresh=!controller.refreshed;controller.onResume({autoFocus:null!=initialTabIndex,refresh:refresh}),controller.refreshed=!0,initialTabIndex=null,currentTabIndex=index,currentTabController=controller})})}function getTabContainers(){return view.querySelectorAll(".tabContent")}function onTabChange(e){var newIndex=parseInt(e.detail.selectedTabIndex),previousTabController=null==e.detail.previousIndex?null:self.tabControllers[e.detail.previousIndex];previousTabController&&previousTabController.onPause&&previousTabController.onPause(),loadTab(newIndex)}this.tabControllers=[],this.view=view,this.params=params;var currentTabController,self=this,currentTabIndex=parseInt(params.tab||this.getDefaultTabIndex(params.parentId)),initialTabIndex=currentTabIndex;view.addEventListener("viewbeforehide",function(e){currentTabController&¤tTabController.onPause&¤tTabController.onPause()}),view.addEventListener("viewbeforeshow",function(e){mainTabsManager.setTabs(view,currentTabIndex,self.getTabs,getTabContainers,onBeforeTabChange,onTabChange,!1)}),view.addEventListener("viewshow",function(e){var isViewRestored=e.detail.isRestored;self.setTitle(),backdrop.clear(),isViewRestored?currentTabController&¤tTabController.onResume&¤tTabController.onResume({}):mainTabsManager.selectedTabIndex(initialTabIndex)}),view.addEventListener("viewdestroy",onViewDestroy.bind(this))}return TabbedView.prototype.setTitle=function(){Emby.Page.setTitle("")},TabbedView}); \ No newline at end of file +define(["backdrop","mainTabsManager","layoutManager","emby-tabs"],function(backdrop,mainTabsManager,layoutManager){"use strict";function onViewDestroy(e){var tabControllers=this.tabControllers;tabControllers&&(tabControllers.forEach(function(t){t.destroy&&t.destroy()}),this.tabControllers=null),this.view=null,this.params=null,this.currentTabController=null,this.initialTabIndex=null}function onBeforeTabChange(){}function TabbedView(view,params){function validateTabLoad(index){return self.validateTabLoad?self.validateTabLoad(index):Promise.resolve()}function loadTab(index,previousIndex){validateTabLoad(index).then(function(){self.getTabController(index).then(function(controller){var refresh=!controller.refreshed;controller.onResume({autoFocus:null==previousIndex&&layoutManager.tv,refresh:refresh}),controller.refreshed=!0,currentTabIndex=index,self.currentTabController=controller})})}function getTabContainers(){return view.querySelectorAll(".tabContent")}function onTabChange(e){var newIndex=parseInt(e.detail.selectedTabIndex),previousIndex=e.detail.previousIndex,previousTabController=null==previousIndex?null:self.tabControllers[previousIndex];previousTabController&&previousTabController.onPause&&previousTabController.onPause(),loadTab(newIndex,previousIndex)}this.tabControllers=[],this.view=view,this.params=params;var self=this,currentTabIndex=parseInt(params.tab||this.getDefaultTabIndex(params.parentId));this.initialTabIndex=currentTabIndex,view.addEventListener("viewbeforehide",this.onPause.bind(this)),view.addEventListener("viewbeforeshow",function(e){mainTabsManager.setTabs(view,currentTabIndex,self.getTabs,getTabContainers,onBeforeTabChange,onTabChange,!1)}),view.addEventListener("viewshow",function(e){self.onResume(e.detail)}),view.addEventListener("viewdestroy",onViewDestroy.bind(this))}return TabbedView.prototype.onResume=function(options){this.setTitle(),backdrop.clear();var currentTabController=this.currentTabController;currentTabController?currentTabController&¤tTabController.onResume&¤tTabController.onResume({}):mainTabsManager.selectedTabIndex(this.initialTabIndex)},TabbedView.prototype.onPause=function(){var currentTabController=this.currentTabController;currentTabController&¤tTabController.onPause&¤tTabController.onPause()},TabbedView.prototype.setTitle=function(){Emby.Page.setTitle("")},TabbedView}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/thememediaplayer.js b/dashboard-ui/bower_components/emby-webcomponents/thememediaplayer.js index 69b0d7c6fb..b2132ff727 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/thememediaplayer.js +++ b/dashboard-ui/bower_components/emby-webcomponents/thememediaplayer.js @@ -1 +1 @@ -define(["playbackManager","userSettings","connectionManager"],function(playbackManager,userSettings,connectionManager){"use strict";function playThemeMedia(items,ownerId){var currentThemeItems=items.filter(function(i){return enabled(i.MediaType)});if(currentThemeItems.length){if(!currentOwnerId&&playbackManager.isPlaying())return;currentThemeIds=currentThemeItems.map(function(i){return i.Id}),playbackManager.play({items:currentThemeItems,fullscreen:!1,enableRemotePlayers:!1}).then(function(){currentOwnerId=ownerId})}else currentOwnerId&&playbackManager.stop(),currentOwnerId=null}function enabled(mediaType){return"Video"===mediaType?userSettings.enableThemeVideos():userSettings.enableThemeSongs()}function loadThemeMedia(item){if(!item.CollectionType&&excludeTypes.indexOf(item.Type)===-1){var apiClient=connectionManager.getApiClient(item.ServerId);apiClient.getThemeMedia(apiClient.getCurrentUserId(),item.Id,!0).then(function(themeMediaResult){var ownerId=themeMediaResult.ThemeVideosResult.Items.length?themeMediaResult.ThemeVideosResult.OwnerId:themeMediaResult.ThemeSongsResult.OwnerId;if(ownerId!==currentOwnerId){var items=themeMediaResult.ThemeVideosResult.Items.length?themeMediaResult.ThemeVideosResult.Items:themeMediaResult.ThemeSongsResult.Items;playThemeMedia(items,ownerId)}})}}var currentOwnerId,currentThemeIds=[],excludeTypes=["CollectionFolder","UserView","Program","SeriesTimer","Person","TvChannel","Channel"];document.addEventListener("viewshow",function(e){var state=e.detail.state||{},item=state.item;if(item&&item.ServerId)return void loadThemeMedia(item);var viewOptions=e.detail.options||{};viewOptions.supportsThemeMedia||playThemeMedia([],null)},!0)}); \ No newline at end of file +define(["playbackManager","userSettings","connectionManager"],function(playbackManager,userSettings,connectionManager){"use strict";function playThemeMedia(items,ownerId){var currentThemeItems=items.filter(function(i){return enabled(i.MediaType)});if(currentThemeItems.length){if(!currentOwnerId&&playbackManager.isPlaying())return;currentThemeIds=currentThemeItems.map(function(i){return i.Id}),playbackManager.play({items:currentThemeItems,fullscreen:!1,enableRemotePlayers:!1}).then(function(){currentOwnerId=ownerId})}else stopIfPlaying()}function stopIfPlaying(){currentOwnerId&&playbackManager.stop(),currentOwnerId=null}function enabled(mediaType){return"Video"===mediaType?userSettings.enableThemeVideos():userSettings.enableThemeSongs()}function loadThemeMedia(item){if(item.CollectionType)return void stopIfPlaying();if(-1!==excludeTypes.indexOf(item.Type))return void stopIfPlaying();var apiClient=connectionManager.getApiClient(item.ServerId);apiClient.getThemeMedia(apiClient.getCurrentUserId(),item.Id,!0).then(function(themeMediaResult){var ownerId=themeMediaResult.ThemeVideosResult.Items.length?themeMediaResult.ThemeVideosResult.OwnerId:themeMediaResult.ThemeSongsResult.OwnerId;if(ownerId!==currentOwnerId){playThemeMedia(themeMediaResult.ThemeVideosResult.Items.length?themeMediaResult.ThemeVideosResult.Items:themeMediaResult.ThemeSongsResult.Items,ownerId)}})}var currentOwnerId,currentThemeIds=[],excludeTypes=["CollectionFolder","UserView","Program","SeriesTimer","Person","TvChannel","Channel"];document.addEventListener("viewshow",function(e){var state=e.detail.state||{},item=state.item;if(item&&item.ServerId)return void loadThemeMedia(item);(e.detail.options||{}).supportsThemeMedia||playThemeMedia([],null)},!0)}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/themes/appletv/theme.css b/dashboard-ui/bower_components/emby-webcomponents/themes/appletv/theme.css index 7cf1dce788..11932eb081 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/themes/appletv/theme.css +++ b/dashboard-ui/bower_components/emby-webcomponents/themes/appletv/theme.css @@ -1 +1 @@ -.skinHeader,html{color:#222;color:rgba(0,0,0,.87)}.emby-collapsible-button{border-color:#ccc;border-color:rgba(0,0,0,.158)}.collapseContent{background-color:#eaeaea}.formDialogHeader:not(.formDialogHeader-clear),.skinHeader-withBackground{color:rgba(0,0,0,.7);background:#303030;background:-webkit-gradient(linear,left top,right top,from(#BCBCBC),color-stop(#A7B4B7),color-stop(#BEB5A5),color-stop(#ADBEC2),to(#B9C7CB));background:-webkit-linear-gradient(left,#BCBCBC,#A7B4B7,#BEB5A5,#ADBEC2,#B9C7CB);background:-o-linear-gradient(left,#BCBCBC,#A7B4B7,#BEB5A5,#ADBEC2,#B9C7CB);background:linear-gradient(to right,#BCBCBC,#A7B4B7,#BEB5A5,#ADBEC2,#B9C7CB)}@supports (backdrop-filter:blur(1.5em)) or (-webkit-backdrop-filter:blur(1.5em)){.skinHeader-blurred{background:-webkit-gradient(linear,left top,right top,from(rgba(188,188,188,.7)),color-stop(rgba(167,180,183,.7)),color-stop(rgba(190,181,165,.7)),color-stop(rgba(173,190,194,.7)),to(rgba(185,199,203,.7)));background:-webkit-linear-gradient(left,rgba(188,188,188,.7),rgba(167,180,183,.7),rgba(190,181,165,.7),rgba(173,190,194,.7),rgba(185,199,203,.7));background:-o-linear-gradient(left,rgba(188,188,188,.7),rgba(167,180,183,.7),rgba(190,181,165,.7),rgba(173,190,194,.7),rgba(185,199,203,.7));background:linear-gradient(to right,rgba(188,188,188,.7),rgba(167,180,183,.7),rgba(190,181,165,.7),rgba(173,190,194,.7),rgba(185,199,203,.7));-webkit-backdrop-filter:blur(1.5em);backdrop-filter:blur(1.5em)}}.skinHeader.semiTransparent{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}.pageTitleWithDefaultLogo{background-image:url(logo.png)}.backgroundContainer,.dialog{background:url(https://github.com/MediaBrowser/Emby.Resources/raw/master/images/wallpaper/atv1-1080.png) center center no-repeat #D5E9F2;-webkit-background-size:100% 100%;background-size:100% 100%}.backgroundContainer.withBackdrop{background:-webkit-gradient(linear,left top,left bottom,from(rgba(192,212,222,.94)),color-stop(rgba(235,250,254,.94)),color-stop(rgba(227,220,212,.94)),color-stop(rgba(206,214,216,.94)),to(rgba(192,211,218,.94)));background:-webkit-linear-gradient(top,rgba(192,212,222,.94),rgba(235,250,254,.94),rgba(227,220,212,.94),rgba(206,214,216,.94),rgba(192,211,218,.94));background:-o-linear-gradient(top,rgba(192,212,222,.94),rgba(235,250,254,.94),rgba(227,220,212,.94),rgba(206,214,216,.94),rgba(192,211,218,.94));background:linear-gradient(to bottom,rgba(192,212,222,.94),rgba(235,250,254,.94),rgba(227,220,212,.94),rgba(206,214,216,.94),rgba(192,211,218,.94))}.actionSheet{background:#f0f0f0}.paper-icon-button-light:focus{color:#52B54B}.fab,.raised{background:#fff;background:rgba(0,0,0,.14);color:inherit}.button-submit{background:#52B54B;color:#fff}.button-cancel{background:#fff;color:inherit}.button-accent{background:#52B54B;color:#fff}.checkboxLabel{color:inherit}.checkboxListLabel,.inputLabel,.inputLabelUnfocused,.paperListLabel,.textareaLabelUnfocused{color:#555;color:rgba(0,0,0,.7)}.button-link,.inputLabelFocused,.selectLabelFocused,.textareaLabelFocused{color:green}.checkboxOutline{border-color:currentColor}.paperList,.visualCardBox{background-color:#fff;background-color:rgba(0,0,0,.1)}.formDialogFooter:not(.formDialogFooter-clear){border-top:1px solid #ddd;border-top:1px solid rgba(0,0,0,.08)}.cardText-secondary,.fieldDescription,.guide-programNameCaret,.listItem .secondary,.nowPlayingBarSecondaryText,.programSecondaryTitle,.secondaryText{color:#888;color:rgba(0,0,0,.5)}.actionsheetDivider{background:#ddd;background:rgba(0,0,0,.14)}.cardFooter-vibrant .cardText-secondary{color:inherit;opacity:.5}.formDialogHeader a,.toast{color:#fff}.actionSheetMenuItem:hover{background-color:#ddd}.toast{background:#303030;color:rgba(255,255,255,.87)}.appfooter,.formDialogFooter:not(.formDialogFooter-clear){color:rgba(0,0,0,.7);background:#303030;background:-webkit-gradient(linear,left top,right top,from(#BCBCBC),color-stop(#A7B4B7),color-stop(#BEB5A5),color-stop(#ADBEC2),to(#B9C7CB));background:-webkit-linear-gradient(left,#BCBCBC,#A7B4B7,#BEB5A5,#ADBEC2,#B9C7CB);background:-o-linear-gradient(left,#BCBCBC,#A7B4B7,#BEB5A5,#ADBEC2,#B9C7CB);background:linear-gradient(to right,#BCBCBC,#A7B4B7,#BEB5A5,#ADBEC2,#B9C7CB)}@supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)){.appfooter-blurred{background:rgba(24,24,24,.7);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.nowPlayingBarSecondaryText{color:#999}.itemSelectionPanel{border:1px solid #52B54B}.selectionCommandsPanel{background:#52B54B;color:#fff}.upNextDialog-countdownText{color:#52B54B}.alphaPickerButton{color:#555;color:rgba(0,0,0,.7);background-color:transparent}.alphaPickerButton-selected,.alphaPickerButton-tv:focus{background-color:#52B54B;color:#fff!important}.detailTableBodyRow-shaded:nth-child(even),.listItem-shaded:nth-child(even){background:#f8f8f8;background:rgba(0,0,0,.1)}.listItem:focus{background:rgba(0,0,0,.2)}.progressring-spiner{border-color:#52B54B}.mediaInfoText{color:#333;background:#fff}.mediaInfoTimerIcon,.starIcon{color:#CB272A}.emby-input,.emby-textarea{color:inherit;background:rgba(255,255,255,.9);border:.07em solid rgba(0,0,0,.158);-webkit-border-radius:.15em;border-radius:.15em}.emby-input:focus,.emby-textarea:focus{border-color:#52B54B}.emby-select-withcolor{color:inherit;background:rgba(255,255,255,.9);border:.07em solid rgba(0,0,0,.158)}.emby-checkbox:checked+span+span+.checkboxOutline,.emby-select-withcolor:focus{border-color:#52B54B}.emby-select-withcolor>option{color:#000;background:#fff}.emby-select-tv-withcolor:focus{background-color:#52B54B;color:#fff}.emby-checkbox:focus+span+.emby-checkbox-focushelper{background-color:rgba(82,181,75,.26)}.emby-checkbox:checked+span+span+.checkboxOutline>.checkboxOutlineTick,.itemProgressBarForeground{background-color:#52B54B}.itemProgressBarForeground-recording{background-color:#CB272A}.countIndicator,.fullSyncIndicator,.playedIndicator{background:#52B54B}.fullSyncIndicator{color:#fff}.mainDrawer{background:#fff}.navMenuDivider{background:#eaeaea;background:rgba(0,0,0,.12)}.navMenuOption:hover{background:#f2f2f2}.navMenuOption-selected{background:#52B54B!important;color:#fff}.emby-tab-button{color:#999;color:rgba(0,0,0,.5)}.emby-tab-button-active,.emby-tab-button-active.emby-button-tv,.emby-tab-button.emby-button-tv:focus{color:#fff}.channelPrograms,.guide-channelHeaderCell,.programCell{border-color:#555;border-color:rgba(0,0,0,.1)}.programCell-sports{background:#3949AB!important}.programCell-movie{background:#5E35B1!important}.programCell-kids{background:#039BE5!important}.programCell-news{background:#43A047!important}.guide-channelHeaderCell:focus,.programCell:focus{background-color:#555!important}.guide-programTextIcon{color:#1e1e1e;background:#555}.guide-currentTimeIndicatorArrow,.guide-currentTimeIndicatorBar{background-color:#52B54B}.guide-headerTimeslots{color:inherit}.guide-date-tab-button{color:#555;color:rgba(0,0,0,.54)}.guide-date-tab-button.emby-tab-button-active,.guide-date-tab-button:focus{color:#52B54B}.guide-date-tab-button.emby-button-tv:focus{background-color:#52B54B;color:#fff}.itemBackdropFader{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#E4E2DC));background:-webkit-linear-gradient(rgba(0,0,0,0),#E4E2DC);background:-o-linear-gradient(rgba(0,0,0,0),#E4E2DC);background:linear-gradient(rgba(0,0,0,0),#E4E2DC)}@media all and (min-width:62.5em){.detailButton-mobile{background:rgba(0,0,0,.14)!important;backdrop-filter:blur(10px)}}.infoBanner{color:#000;background:#fff3a5;padding:1em;-webkit-border-radius:.25em;border-radius:.25em}.ratingbutton-icon-withrating{color:#c33}.downloadbutton-icon-complete,.downloadbutton-icon-on{color:#4285F4}.playstatebutton-icon-played{color:#c33}.repeatButton-active{color:#4285F4}.card:focus .card-focuscontent{border-color:#52B54B} \ No newline at end of file +.skinHeader,html{color:#222;color:rgba(0,0,0,.87)}.emby-collapsible-button{border-color:#ccc;border-color:rgba(0,0,0,.158)}.collapseContent{background-color:#eaeaea}.formDialogHeader:not(.formDialogHeader-clear),.skinHeader-withBackground{color:rgba(0,0,0,.7);background:#303030;background:-webkit-gradient(linear,left top,right top,from(#BCBCBC),color-stop(#A7B4B7),color-stop(#BEB5A5),color-stop(#ADBEC2),to(#B9C7CB));background:-webkit-linear-gradient(left,#BCBCBC,#A7B4B7,#BEB5A5,#ADBEC2,#B9C7CB);background:-o-linear-gradient(left,#BCBCBC,#A7B4B7,#BEB5A5,#ADBEC2,#B9C7CB);background:linear-gradient(to right,#BCBCBC,#A7B4B7,#BEB5A5,#ADBEC2,#B9C7CB)}@supports (backdrop-filter:blur(1.5em)) or (-webkit-backdrop-filter:blur(1.5em)){.skinHeader-blurred{background:-webkit-gradient(linear,left top,right top,from(rgba(188,188,188,.7)),color-stop(rgba(167,180,183,.7)),color-stop(rgba(190,181,165,.7)),color-stop(rgba(173,190,194,.7)),to(rgba(185,199,203,.7)));background:-webkit-linear-gradient(left,rgba(188,188,188,.7),rgba(167,180,183,.7),rgba(190,181,165,.7),rgba(173,190,194,.7),rgba(185,199,203,.7));background:-o-linear-gradient(left,rgba(188,188,188,.7),rgba(167,180,183,.7),rgba(190,181,165,.7),rgba(173,190,194,.7),rgba(185,199,203,.7));background:linear-gradient(to right,rgba(188,188,188,.7),rgba(167,180,183,.7),rgba(190,181,165,.7),rgba(173,190,194,.7),rgba(185,199,203,.7));-webkit-backdrop-filter:blur(1.5em);backdrop-filter:blur(1.5em)}}.skinHeader.semiTransparent{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}.pageTitleWithDefaultLogo{background-image:url(../logodark.png)}html{background:#D5E9F2}.backgroundContainer,.dialog{background:url(https://github.com/MediaBrowser/Emby.Resources/raw/master/images/wallpaper/atv1-1080.png) center center no-repeat #D5E9F2;-webkit-background-size:100% 100%;background-size:100% 100%}.backgroundContainer.withBackdrop{background:-webkit-gradient(linear,left top,left bottom,from(rgba(192,212,222,.94)),color-stop(rgba(235,250,254,.94)),color-stop(rgba(227,220,212,.94)),color-stop(rgba(206,214,216,.94)),to(rgba(192,211,218,.94)));background:-webkit-linear-gradient(top,rgba(192,212,222,.94),rgba(235,250,254,.94),rgba(227,220,212,.94),rgba(206,214,216,.94),rgba(192,211,218,.94));background:-o-linear-gradient(top,rgba(192,212,222,.94),rgba(235,250,254,.94),rgba(227,220,212,.94),rgba(206,214,216,.94),rgba(192,211,218,.94));background:linear-gradient(to bottom,rgba(192,212,222,.94),rgba(235,250,254,.94),rgba(227,220,212,.94),rgba(206,214,216,.94),rgba(192,211,218,.94))}.actionSheet{background:#f0f0f0}.paper-icon-button-light:focus{color:#52B54B;background-color:rgba(82,181,75,.2)}.fab,.raised{background:#fff;background:rgba(0,0,0,.14);color:inherit}.fab:focus,.raised:focus{background:rgba(0,0,0,.24)}.button-submit{background:#52B54B;color:#fff}.button-submit:focus{background:#5EC157}.checkboxLabel{color:inherit}.checkboxListLabel,.inputLabel,.inputLabelUnfocused,.paperListLabel,.textareaLabelUnfocused{color:#555;color:rgba(0,0,0,.7)}.button-link,.inputLabelFocused,.selectLabelFocused,.textareaLabelFocused{color:green}.checkboxOutline{border-color:currentColor}.paperList,.visualCardBox{background-color:#fff;background-color:rgba(0,0,0,.1)}.defaultCardBackground1{background-color:#009688}.defaultCardBackground2{background-color:#D32F2F}.defaultCardBackground3{background-color:#0288D1}.defaultCardBackground4{background-color:#388E3C}.defaultCardBackground5{background-color:#F57F17}.formDialogFooter:not(.formDialogFooter-clear){border-top:1px solid #ddd;border-top:1px solid rgba(0,0,0,.08)}.cardText-secondary,.fieldDescription,.guide-programNameCaret,.listItem .secondary,.nowPlayingBarSecondaryText,.programSecondaryTitle,.secondaryText{color:#888;color:rgba(0,0,0,.5)}.actionsheetDivider{background:#ddd;background:rgba(0,0,0,.14)}.cardFooter-vibrant .cardText-secondary{color:inherit;opacity:.5}.formDialogHeader a,.toast{color:#fff}.actionSheetMenuItem:hover{background-color:#ddd}.toast{background:#303030;color:rgba(255,255,255,.87)}.appfooter,.formDialogFooter:not(.formDialogFooter-clear){color:rgba(0,0,0,.7);background:#303030;background:-webkit-gradient(linear,left top,right top,from(#BCBCBC),color-stop(#A7B4B7),color-stop(#BEB5A5),color-stop(#ADBEC2),to(#B9C7CB));background:-webkit-linear-gradient(left,#BCBCBC,#A7B4B7,#BEB5A5,#ADBEC2,#B9C7CB);background:-o-linear-gradient(left,#BCBCBC,#A7B4B7,#BEB5A5,#ADBEC2,#B9C7CB);background:linear-gradient(to right,#BCBCBC,#A7B4B7,#BEB5A5,#ADBEC2,#B9C7CB)}@supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)){.appfooter-blurred{background:rgba(24,24,24,.7);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.nowPlayingBarSecondaryText{color:#999}.itemSelectionPanel{border:1px solid #52B54B}.selectionCommandsPanel{background:#52B54B;color:#fff}.upNextDialog-countdownText{color:#52B54B}.alphaPickerButton{color:#555;color:rgba(0,0,0,.7);background-color:transparent}.alphaPickerButton-selected,.alphaPickerButton-tv:focus{background-color:#52B54B;color:#fff!important}.detailTableBodyRow-shaded:nth-child(even){background:#f8f8f8;background:rgba(0,0,0,.1)}.listItem-border{border-color:rgba(0,0,0,.1)!important}.listItem:focus{background:rgba(0,0,0,.2)}.progressring-spiner{border-color:#52B54B}.mediaInfoText{color:#333;background:#fff}.mediaInfoTimerIcon,.starIcon{color:#CB272A}.emby-input,.emby-textarea{color:inherit;background:rgba(255,255,255,.9);border:.07em solid rgba(0,0,0,.158);-webkit-border-radius:.15em;border-radius:.15em}.emby-input:focus,.emby-textarea:focus{border-color:#52B54B}.emby-select-withcolor{color:inherit;background:rgba(255,255,255,.9);border:.07em solid rgba(0,0,0,.158)}.emby-checkbox:checked+span+span+.checkboxOutline,.emby-select-withcolor:focus{border-color:#52B54B}.emby-select-withcolor>option{color:#000;background:#fff}.emby-select-tv-withcolor:focus{background-color:#52B54B;color:#fff}.emby-checkbox:focus+span+.emby-checkbox-focushelper{background-color:rgba(82,181,75,.26)}.emby-checkbox:checked+span+span+.checkboxOutline,.itemProgressBarForeground{background-color:#52B54B}.itemProgressBarForeground-recording{background-color:#CB272A}.countIndicator,.fullSyncIndicator,.playedIndicator{background:#52B54B}.fullSyncIndicator{color:#fff}.mainDrawer{background:#fff}.navMenuOption:hover{background:#f2f2f2}.navMenuOption-selected{background:#52B54B!important;color:#fff}.emby-button-focusscale:focus{background:#52B54B;color:#fff}.emby-tab-button{color:#999;color:rgba(0,0,0,.5)}.emby-tab-button-active,.emby-tab-button-active.emby-button-tv{color:#fff}.emby-tab-button.emby-button-tv:focus{color:#fff;background:0 0}.channelPrograms,.guide-channelHeaderCell,.programCell{border-color:#555;border-color:rgba(0,0,0,.1)}.programCell-sports{background:#3949AB!important}.programCell-movie{background:#5E35B1!important}.programCell-kids{background:#039BE5!important}.programCell-news{background:#43A047!important}.programCell-active{background:rgba(0,0,0,.1)!important}.guide-channelHeaderCell:focus,.programCell:focus{background-color:#52B54B!important;color:#fff!important}.guide-programTextIcon{color:#1e1e1e;background:#555}.guide-headerTimeslots{color:inherit}.guide-date-tab-button{color:#555;color:rgba(0,0,0,.54)}.guide-date-tab-button.emby-tab-button-active,.guide-date-tab-button:focus{color:#52B54B}.guide-date-tab-button.emby-button-tv:focus{background-color:#52B54B;color:#fff}.itemBackdropFader{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#E4E2DC));background:-webkit-linear-gradient(rgba(0,0,0,0),#E4E2DC);background:-o-linear-gradient(rgba(0,0,0,0),#E4E2DC);background:linear-gradient(rgba(0,0,0,0),#E4E2DC)}.infoBanner{color:#000;background:#fff3a5;padding:1em;-webkit-border-radius:.25em;border-radius:.25em}.ratingbutton-icon-withrating{color:#c33}.downloadbutton-icon-complete,.downloadbutton-icon-on{color:#4285F4}.playstatebutton-icon-played{color:#c33}.repeatButton-active{color:#4285F4}.card:focus .card-focuscontent{border-color:#52B54B} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/themes/blueradiance/bg.jpg b/dashboard-ui/bower_components/emby-webcomponents/themes/blueradiance/bg.jpg new file mode 100644 index 0000000000..0cbe85caf7 Binary files /dev/null and b/dashboard-ui/bower_components/emby-webcomponents/themes/blueradiance/bg.jpg differ diff --git a/dashboard-ui/bower_components/emby-webcomponents/themes/blueradiance/theme.css b/dashboard-ui/bower_components/emby-webcomponents/themes/blueradiance/theme.css new file mode 100644 index 0000000000..1769a12076 --- /dev/null +++ b/dashboard-ui/bower_components/emby-webcomponents/themes/blueradiance/theme.css @@ -0,0 +1 @@ +html{color:#ddd;color:rgba(255,255,255,.8)}.emby-collapsible-button{border-color:#383838;border-color:rgba(255,255,255,.135)}.skinHeader-withBackground{background:#303030;background:-webkit-gradient(linear,left top,right top,from(#291A31),color-stop(#033664),color-stop(#011432),color-stop(#141A3A),to(#291A31));background:-webkit-linear-gradient(left,#291A31,#033664,#011432,#141A3A,#291A31);background:-o-linear-gradient(left,#291A31,#033664,#011432,#141A3A,#291A31);background:linear-gradient(to right,#291A31,#033664,#011432,#141A3A,#291A31)}.skinHeader.semiTransparent{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background-color:rgba(0,0,0,.3);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.6)),to(rgba(0,0,0,0)));background:-webkit-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:-o-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0))}.pageTitleWithDefaultLogo{background-image:url(../logowhite.png)}.dialog,html{background-color:#033361}.backgroundContainer{background:url(bg.jpg) center top no-repeat #033361;-webkit-background-size:cover;background-size:cover}.backgroundContainer.withBackdrop{opacity:.93}@media (orientation:portrait){.backgroundContainer{background-position:30% top}}.paper-icon-button-light:focus{color:#52B54B;background-color:rgba(82,181,75,.2)}.fab,.raised{background:rgba(0,0,0,.5);color:rgba(255,255,255,.87)}.fab:focus,.raised:focus{background:rgba(0,0,0,.7)}.button-submit{background:#52B54B;color:#fff}.button-submit:focus{background:#5EC157;color:#fff}.checkboxLabel{color:inherit}.checkboxListLabel,.inputLabel,.inputLabelUnfocused,.paperListLabel,.textareaLabelUnfocused{color:#bbb;color:rgba(255,255,255,.7)}.inputLabelFocused,.selectLabelFocused,.textareaLabelFocused{color:#52B54B}.checkboxOutline{border-color:currentColor}.collapseContent,.formDialogFooter:not(.formDialogFooter-clear),.formDialogHeader:not(.formDialogHeader-clear),.paperList,.visualCardBox{background-color:rgba(0,0,0,.5)}.defaultCardBackground1{background-color:#d2b019}.defaultCardBackground2{background-color:#338abb}.defaultCardBackground3{background-color:#6b689d}.defaultCardBackground4{background-color:#dd452b}.defaultCardBackground5{background-color:#5ccea9}.cardText-secondary,.fieldDescription,.guide-programNameCaret,.listItem .secondary,.nowPlayingBarSecondaryText,.programSecondaryTitle,.secondaryText{color:#999;color:rgba(255,255,255,.5)}.actionsheetDivider{background:#444;background:rgba(255,255,255,.14)}.cardFooter-vibrant .cardText-secondary{color:inherit;opacity:.5}.actionSheetMenuItem:hover{background-color:rgba(0,0,0,.5)}.toast{background:#303030;color:#fff;color:rgba(255,255,255,.87)}.appfooter{background:#033664;color:#ccc;color:rgba(255,255,255,.78)}@supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)){.appfooter-blurred{background:rgba(24,24,24,.7);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.itemSelectionPanel{border:1px solid #52B54B}.selectionCommandsPanel{background:#52B54B;color:#fff}.upNextDialog-countdownText{color:#52B54B}.alphaPickerButton{color:#999;color:rgba(255,255,255,.5);background-color:transparent}.alphaPickerButton-selected{color:#fff}.alphaPickerButton-tv:focus{background-color:#52B54B;color:#fff!important}.detailTableBodyRow-shaded:nth-child(even){background:#1c1c1c;background:rgba(30,30,30,.9)}.listItem-border{border-color:rgba(255,255,255,.1)!important}.listItem:focus{background:rgba(0,0,0,.3)}.progressring-spiner{border-color:#52B54B}.button-flat-accent,.button-link{color:#52B54B}.mediaInfoText{color:#ddd;background:rgba(170,170,190,.2)}.mediaInfoTimerIcon,.starIcon{color:#CB272A}.emby-input,.emby-textarea{color:inherit;background:rgba(0,0,0,.5);border:.07em solid transparent;-webkit-border-radius:.15em;border-radius:.15em}.emby-input:focus,.emby-textarea:focus{border-color:#52B54B}.emby-select-withcolor{color:inherit;background:rgba(0,0,0,.5);border:.07em solid transparent}.emby-select-withcolor>option{color:inherit;background:#222}.emby-select-withcolor:focus{border-color:#52B54B!important}.emby-select-tv-withcolor:focus{background-color:#52B54B!important;color:#fff!important}.emby-checkbox:checked+span+span+.checkboxOutline{border-color:#52B54B}.emby-checkbox:focus+span+.emby-checkbox-focushelper{background-color:rgba(82,181,75,.26)}.emby-checkbox:checked+span+span+.checkboxOutline,.itemProgressBarForeground{background-color:#52B54B}.itemProgressBarForeground-recording{background-color:#CB272A}.countIndicator,.fullSyncIndicator,.playedIndicator{background:#52B54B}.fullSyncIndicator{color:#fff}.mainDrawer{background-color:#1c1c1c}.navMenuOption:hover{background:#252528}.navMenuOption-selected{background:#52B54B!important;color:#fff}.emby-button-focusscale:focus{background:#52B54B;color:#fff}.emby-tab-button{color:#999;color:rgba(255,255,255,.4)}.emby-tab-button-active{color:#52B54B}.emby-tab-button-active.emby-button-tv{color:#fff}.emby-tab-button.emby-button-tv:focus{color:#52B54B;background:0 0}.channelPrograms,.guide-channelHeaderCell,.programCell{border-color:rgba(255,255,255,.05)}.programCell-sports{background:#3949AB!important}.programCell-movie{background:#5E35B1!important}.programCell-kids{background:#039BE5!important}.programCell-news{background:#43A047!important}.programCell-active{background:rgba(0,0,0,.4)!important}.guide-channelHeaderCell:focus,.programCell:focus{background-color:#52B54B!important;color:#fff!important}.guide-programTextIcon{color:#1e1e1e;background:#555}.guide-headerTimeslots{color:inherit}.guide-date-tab-button{color:#555;color:rgba(255,255,255,.3)}.guide-date-tab-button.emby-tab-button-active,.guide-date-tab-button:focus{color:#52B54B}.guide-date-tab-button.emby-button-tv:focus{background-color:#52B54B;color:#fff}.itemBackdropFader{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#181818));background:-webkit-linear-gradient(rgba(0,0,0,0),#181818);background:-o-linear-gradient(rgba(0,0,0,0),#181818);background:linear-gradient(rgba(0,0,0,0),#181818)}.infoBanner{color:#ddd;background:#111;padding:1em;-webkit-border-radius:.25em;border-radius:.25em}.ratingbutton-icon-withrating{color:#c33}.downloadbutton-icon-complete,.downloadbutton-icon-on{color:#4285F4}.playstatebutton-icon-played{color:#c33}.repeatButton-active{color:#4285F4}.card:focus .card-focuscontent{border-color:#52B54B}.layout-desktop ::-webkit-scrollbar{width:1em;height:1em}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3)}::-webkit-scrollbar-track-piece{background-color:#3b3b3b}::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-thumb:vertical{-webkit-border-radius:2px;background:center no-repeat #888}.timeslotHeaders-desktop::-webkit-scrollbar{height:.7em} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/themes/dark-green/theme.css b/dashboard-ui/bower_components/emby-webcomponents/themes/dark-green/theme.css index 34246f19f6..fdc2ce0e52 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/themes/dark-green/theme.css +++ b/dashboard-ui/bower_components/emby-webcomponents/themes/dark-green/theme.css @@ -1 +1 @@ -html{color:#eee;color:rgba(255,255,255,.87)}.emby-collapsible-button{border-color:#383838;border-color:rgba(255,255,255,.135)}.skinHeader{color:#ccc;color:rgba(255,255,255,.78)}.skinHeader-withBackground{background-color:#52B54B;-webkit-box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37)}.osdHeader{-webkit-box-shadow:none!important;box-shadow:none!important}.skinHeader.semiTransparent{backdrop-filter:none!important;background-color:rgba(0,0,0,.3);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.6)),to(rgba(0,0,0,0)));background:-webkit-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:-o-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));-webkit-box-shadow:none;box-shadow:none}.pageTitleWithDefaultLogo{background-image:url(logo.png)}.backgroundContainer,.dialog{background-color:#282828}.backgroundContainer.withBackdrop{background-color:rgba(12,12,12,.9)}.paper-icon-button-light:focus{color:#52B54B}.skinHeader-withBackground .paper-icon-button-light:focus{color:#fff}.fab,.raised{background:#404040;color:#fff}.button-accent,.button-submit{background:#52B54B;color:#fff}.checkboxLabel{color:inherit}.checkboxListLabel,.inputLabel,.inputLabelUnfocused,.paperListLabel,.textareaLabelUnfocused{color:#bbb;color:rgba(255,255,255,.7)}.inputLabelFocused,.selectLabelFocused,.textareaLabelFocused{color:#52B54B}.checkboxOutline{border-color:currentColor}.collapseContent,.formDialogFooter:not(.formDialogFooter-clear),.formDialogHeader:not(.formDialogHeader-clear),.paperList,.visualCardBox{background-color:#222}.cardText-secondary,.fieldDescription,.guide-programNameCaret,.listItem .secondary,.nowPlayingBarSecondaryText,.programSecondaryTitle,.secondaryText{color:#999;color:rgba(255,255,255,.5)}.actionsheetDivider{background:#444;background:rgba(255,255,255,.14)}.cardFooter-vibrant .cardText-secondary{color:inherit;opacity:.5}.actionSheetMenuItem:hover{background-color:#222}.toast{background:#303030;color:#fff;color:rgba(255,255,255,.87)}.appfooter{background:#101010;color:#ccc;color:rgba(255,255,255,.78)}@supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)){.appfooter-blurred{background:rgba(24,24,24,.7);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.itemSelectionPanel{border:1px solid #52B54B}.selectionCommandsPanel{background:#52B54B;color:#fff}.upNextDialog-countdownText{color:#52B54B}.alphaPickerButton{color:#999;color:rgba(255,255,255,.5);background-color:transparent}.alphaPickerButton-selected{color:#fff}.alphaPickerButton-tv:focus{background-color:#52B54B;color:#fff!important}.detailTableBodyRow-shaded:nth-child(even),.listItem-shaded:nth-child(even){background:#1c1c1c;background:rgba(30,30,30,.9)}.listItem:focus{background:#333}.progressring-spiner{border-color:#52B54B}.button-flat-accent,.button-link{color:#52B54B}.mediaInfoText{color:#ddd;background:rgba(170,170,190,.2)}.mediaInfoTimerIcon,.starIcon{color:#CB272A}.emby-input,.emby-textarea{color:inherit;background:#1c1c1c;border:.07em solid #1c1c1c;-webkit-border-radius:.15em;border-radius:.15em}.emby-input:focus,.emby-textarea:focus{border-color:#52B54B}.emby-select-withcolor{color:inherit;background:#1c1c1c;border:.07em solid #1c1c1c}.emby-select-withcolor>option{color:inherit;background:#222}.emby-select-withcolor:focus{border-color:#52B54B!important}.emby-select-tv-withcolor:focus{background-color:#52B54B!important;color:#fff!important}.emby-checkbox:checked+span+span+.checkboxOutline{border-color:#52B54B}.emby-checkbox:focus+span+.emby-checkbox-focushelper{background-color:rgba(82,181,75,.26)}.emby-checkbox:checked+span+span+.checkboxOutline>.checkboxOutlineTick,.itemProgressBarForeground{background-color:#52B54B}.itemProgressBarForeground-recording{background-color:#CB272A}.countIndicator,.fullSyncIndicator,.playedIndicator{background:#52B54B}.fullSyncIndicator{color:#fff}.mainDrawer{background-color:#1c1c1f;color:#ccc;color:rgba(255,255,255,.7)}.navMenuDivider{background:#202020;background:rgba(255,255,255,.12)}.navMenuOption:hover{background:#252528}.navMenuOption-selected{background:#52B54B!important;color:#fff}.emby-tab-button{color:#999;color:rgba(255,255,255,.5)}.emby-tab-button-active,.emby-tab-button-active.emby-button-tv,.emby-tab-button.emby-button-tv:focus{color:#fff}.channelPrograms,.guide-channelHeaderCell,.programCell{border-color:#383838}.programCell-sports{background:#3949AB!important}.programCell-movie{background:#5E35B1!important}.programCell-kids{background:#039BE5!important}.programCell-news{background:#43A047!important}.guide-channelHeaderCell:focus,.programCell:focus{background-color:#555!important}.guide-programTextIcon{color:#1e1e1e;background:#555}.guide-currentTimeIndicatorArrow,.guide-currentTimeIndicatorBar{background-color:#52B54B}.guide-headerTimeslots{color:inherit}.guide-date-tab-button{color:#555;color:rgba(255,255,255,.3)}.guide-date-tab-button.emby-tab-button-active,.guide-date-tab-button:focus{color:#52B54B}.guide-date-tab-button.emby-button-tv:focus{background-color:#52B54B;color:#fff}.itemBackdropFader{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#191919));background:-webkit-linear-gradient(rgba(0,0,0,0),#191919);background:-o-linear-gradient(rgba(0,0,0,0),#191919);background:linear-gradient(rgba(0,0,0,0),#191919)}@media all and (min-width:62.5em){.detailButton-mobile{background:#444!important}.detailTrackSelect.emby-select-withcolor{background:#444;border-color:#444}}.infoBanner{color:#ddd;background:#111;padding:1em;-webkit-border-radius:.25em;border-radius:.25em}.ratingbutton-icon-withrating{color:#c33}.downloadbutton-icon-complete,.downloadbutton-icon-on{color:#4285F4}.playstatebutton-icon-played{color:#c33}.repeatButton-active{color:#4285F4}.card:focus .card-focuscontent{border-color:#52B54B}.layout-desktop ::-webkit-scrollbar{width:1em;height:1em}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3)}::-webkit-scrollbar-track-piece{background-color:#3b3b3b}::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-thumb:vertical{-webkit-border-radius:2px;background:center no-repeat #888} \ No newline at end of file +html{color:#eee;color:rgba(255,255,255,.87)}.emby-collapsible-button{border-color:#383838;border-color:rgba(255,255,255,.135)}.skinHeader{color:#ccc;color:rgba(255,255,255,.78)}.skinHeader-withBackground{background-color:#52B54B;-webkit-box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37)}.osdHeader{-webkit-box-shadow:none!important;box-shadow:none!important}.skinHeader.semiTransparent{backdrop-filter:none!important;background-color:rgba(0,0,0,.3);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.6)),to(rgba(0,0,0,0)));background:-webkit-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:-o-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));-webkit-box-shadow:none;box-shadow:none}.pageTitleWithDefaultLogo{background-image:url(../logowhite.png)}.backgroundContainer,.dialog,html{background-color:#282828}.backgroundContainer.withBackdrop{background-color:rgba(0,0,0,.86)}.paper-icon-button-light:focus{color:#52B54B;background-color:rgba(82,181,75,.2)}.skinHeader-withBackground .paper-icon-button-light:focus{color:#fff;background-color:rgba(255,255,255,.2)}.fab,.raised{background:#404040;color:#fff}.fab:focus,.raised:focus{background:#505050}.button-submit{background:#52B54B;color:#fff}.button-submit:focus{background:#5EC157;color:#fff}.checkboxLabel{color:inherit}.checkboxListLabel,.inputLabel,.inputLabelUnfocused,.paperListLabel,.textareaLabelUnfocused{color:#bbb;color:rgba(255,255,255,.7)}.inputLabelFocused,.selectLabelFocused,.textareaLabelFocused{color:#52B54B}.checkboxOutline{border-color:currentColor}.collapseContent,.formDialogFooter:not(.formDialogFooter-clear),.formDialogHeader:not(.formDialogHeader-clear),.paperList,.visualCardBox{background-color:#222}.defaultCardBackground1{background-color:#d2b019}.defaultCardBackground2{background-color:#338abb}.defaultCardBackground3{background-color:#6b689d}.defaultCardBackground4{background-color:#dd452b}.defaultCardBackground5{background-color:#5ccea9}.cardText-secondary,.fieldDescription,.guide-programNameCaret,.listItem .secondary,.nowPlayingBarSecondaryText,.programSecondaryTitle,.secondaryText{color:#999;color:rgba(255,255,255,.5)}.actionsheetDivider{background:#444;background:rgba(255,255,255,.14)}.cardFooter-vibrant .cardText-secondary{color:inherit;opacity:.5}.actionSheetMenuItem:hover{background-color:#222}.toast{background:#303030;color:#fff;color:rgba(255,255,255,.87)}.appfooter{background:#101010;color:#ccc;color:rgba(255,255,255,.78)}@supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)){.appfooter-blurred{background:rgba(24,24,24,.7);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.itemSelectionPanel{border:1px solid #52B54B}.selectionCommandsPanel{background:#52B54B;color:#fff}.upNextDialog-countdownText{color:#52B54B}.alphaPickerButton{color:#999;color:rgba(255,255,255,.5);background-color:transparent}.alphaPickerButton-selected{color:#fff}.alphaPickerButton-tv:focus{background-color:#52B54B;color:#fff!important}.detailTableBodyRow-shaded:nth-child(even){background:#1c1c1c;background:rgba(30,30,30,.9)}.listItem-border{border-color:rgba(30,30,30,.9)!important}.listItem:focus{background:#333}.progressring-spiner{border-color:#52B54B}.button-flat-accent,.button-link{color:#52B54B}.mediaInfoText{color:#ddd;background:rgba(170,170,190,.2)}.mediaInfoTimerIcon,.starIcon{color:#CB272A}.emby-input,.emby-textarea{color:inherit;background:#1c1c1c;border:.07em solid #1c1c1c;-webkit-border-radius:.15em;border-radius:.15em}.emby-input:focus,.emby-textarea:focus{border-color:#52B54B}.emby-select-withcolor{color:inherit;background:#1c1c1c;border:.07em solid #1c1c1c}.emby-select-withcolor>option{color:inherit;background:#222}.emby-select-withcolor:focus{border-color:#52B54B!important}.emby-select-tv-withcolor:focus{background-color:#52B54B!important;color:#fff!important}.emby-checkbox:checked+span+span+.checkboxOutline{border-color:#52B54B}.emby-checkbox:focus+span+.emby-checkbox-focushelper{background-color:rgba(82,181,75,.26)}.emby-checkbox:checked+span+span+.checkboxOutline,.itemProgressBarForeground{background-color:#52B54B}.itemProgressBarForeground-recording{background-color:#CB272A}.countIndicator,.fullSyncIndicator,.playedIndicator{background:#52B54B}.fullSyncIndicator{color:#fff}.mainDrawer{background-color:#1c1c1f;color:#ccc;color:rgba(255,255,255,.7)}.navMenuOption:hover{background:#252528}.navMenuOption-selected{background:#52B54B!important;color:#fff}.emby-button-focusscale:focus{background:#52B54B;color:#fff}.emby-tab-button{color:#999;color:rgba(255,255,255,.5)}.emby-tab-button-active,.emby-tab-button-active.emby-button-tv{color:#fff}.emby-tab-button.emby-button-tv:focus{color:#fff;background:0 0}.channelPrograms,.guide-channelHeaderCell,.programCell{border-color:#383838}.programCell-sports{background:#3949AB!important}.programCell-movie{background:#5E35B1!important}.programCell-kids{background:#039BE5!important}.programCell-news{background:#43A047!important}.programCell-active{background:#1e1e1e!important}.guide-channelHeaderCell:focus,.programCell:focus{background-color:#52B54B!important;color:#fff!important}.guide-programTextIcon{color:#1e1e1e;background:#555}.guide-headerTimeslots{color:inherit}.guide-date-tab-button{color:#555;color:rgba(255,255,255,.3)}.guide-date-tab-button.emby-tab-button-active,.guide-date-tab-button:focus{color:#52B54B}.guide-date-tab-button.emby-button-tv:focus{background-color:#52B54B;color:#fff}.itemBackdropFader{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#191919));background:-webkit-linear-gradient(rgba(0,0,0,0),#191919);background:-o-linear-gradient(rgba(0,0,0,0),#191919);background:linear-gradient(rgba(0,0,0,0),#191919)}.infoBanner{color:#ddd;background:#111;padding:1em;-webkit-border-radius:.25em;border-radius:.25em}.ratingbutton-icon-withrating{color:#c33}.downloadbutton-icon-complete,.downloadbutton-icon-on{color:#4285F4}.playstatebutton-icon-played{color:#c33}.repeatButton-active{color:#4285F4}.card:focus .card-focuscontent{border-color:#52B54B}.layout-desktop ::-webkit-scrollbar{width:1em;height:1em}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3)}::-webkit-scrollbar-track-piece{background-color:#3b3b3b}::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-thumb:vertical{-webkit-border-radius:2px;background:center no-repeat #888} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/themes/dark-red/logo.png b/dashboard-ui/bower_components/emby-webcomponents/themes/dark-red/logo.png deleted file mode 100644 index 7e55e0449d..0000000000 Binary files a/dashboard-ui/bower_components/emby-webcomponents/themes/dark-red/logo.png and /dev/null differ diff --git a/dashboard-ui/bower_components/emby-webcomponents/themes/dark-red/theme.css b/dashboard-ui/bower_components/emby-webcomponents/themes/dark-red/theme.css index daaad9763c..c2948fc398 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/themes/dark-red/theme.css +++ b/dashboard-ui/bower_components/emby-webcomponents/themes/dark-red/theme.css @@ -1 +1 @@ -html{color:#eee;color:rgba(255,255,255,.87)}.emby-collapsible-button{border-color:#383838;border-color:rgba(255,255,255,.135)}.skinHeader{color:#ccc;color:rgba(255,255,255,.78)}.skinHeader-withBackground{background-color:#c33;-webkit-box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37)}.osdHeader{-webkit-box-shadow:none!important;box-shadow:none!important}.skinHeader.semiTransparent{backdrop-filter:none!important;background-color:rgba(0,0,0,.3);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.6)),to(rgba(0,0,0,0)));background:-webkit-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:-o-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));-webkit-box-shadow:none;box-shadow:none}.pageTitleWithDefaultLogo{background-image:url(logo.png)}.backgroundContainer,.dialog{background-color:#282828}.backgroundContainer.withBackdrop{background-color:rgba(12,12,12,.9)}.paper-icon-button-light:focus{color:#c33}.skinHeader-withBackground .paper-icon-button-light:focus{color:#fff}.fab,.raised{background:#404040;color:#fff}.button-accent,.button-submit{background:#c33;color:#fff}.checkboxLabel{color:inherit}.checkboxListLabel,.inputLabel,.inputLabelUnfocused,.paperListLabel,.textareaLabelUnfocused{color:#bbb;color:rgba(255,255,255,.7)}.inputLabelFocused,.selectLabelFocused,.textareaLabelFocused{color:#c33}.checkboxOutline{border-color:currentColor}.collapseContent,.formDialogFooter:not(.formDialogFooter-clear),.formDialogHeader:not(.formDialogHeader-clear),.paperList,.visualCardBox{background-color:#222}.cardText-secondary,.fieldDescription,.guide-programNameCaret,.listItem .secondary,.nowPlayingBarSecondaryText,.programSecondaryTitle,.secondaryText{color:#999;color:rgba(255,255,255,.5)}.actionsheetDivider{background:#444;background:rgba(255,255,255,.14)}.cardFooter-vibrant .cardText-secondary{color:inherit;opacity:.5}.actionSheetMenuItem:hover{background-color:#222}.toast{background:#303030;color:#fff;color:rgba(255,255,255,.87)}.appfooter{background:#101010;color:#ccc;color:rgba(255,255,255,.78)}@supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)){.appfooter-blurred{background:rgba(24,24,24,.7);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.itemSelectionPanel{border:1px solid #c33}.selectionCommandsPanel{background:#c33;color:#fff}.upNextDialog-countdownText{color:#c33}.alphaPickerButton{color:#999;color:rgba(255,255,255,.5);background-color:transparent}.alphaPickerButton-selected{color:#fff}.alphaPickerButton-tv:focus{background-color:#c33;color:#fff!important}.detailTableBodyRow-shaded:nth-child(even),.listItem-shaded:nth-child(even){background:#1c1c1c;background:rgba(30,30,30,.9)}.listItem:focus{background:#333}.progressring-spiner{border-color:#c33}.button-flat-accent,.button-link{color:#c33}.mediaInfoText{color:#ddd;background:rgba(170,170,190,.2)}.mediaInfoTimerIcon,.starIcon{color:#CB272A}.emby-input,.emby-textarea{color:inherit;background:#1c1c1c;border:.07em solid #1c1c1c;-webkit-border-radius:.15em;border-radius:.15em}.emby-input:focus,.emby-textarea:focus{border-color:#c33}.emby-select-withcolor{color:inherit;background:#1c1c1c;border:.07em solid #1c1c1c}.emby-select-withcolor>option{color:inherit;background:#222}.emby-select-withcolor:focus{border-color:#c33!important}.emby-select-tv-withcolor:focus{background-color:#c33!important;color:#fff!important}.emby-checkbox:checked+span+span+.checkboxOutline{border-color:#c33}.emby-checkbox:focus+span+.emby-checkbox-focushelper{background-color:rgba(204,51,51,.26)}.emby-checkbox:checked+span+span+.checkboxOutline>.checkboxOutlineTick,.itemProgressBarForeground{background-color:#c33}.itemProgressBarForeground-recording{background-color:#CB272A}.countIndicator,.playedIndicator{background:#c33}.fullSyncIndicator{background:#c33;color:#fff}.mainDrawer{background-color:#1c1c1f;color:#ccc;color:rgba(255,255,255,.7)}.navMenuDivider{background:#202020;background:rgba(255,255,255,.12)}.navMenuOption:hover{background:#252528}.navMenuOption-selected{background:#c33!important;color:#fff}.emby-tab-button{color:#999;color:rgba(255,255,255,.5)}.emby-tab-button-active,.emby-tab-button-active.emby-button-tv,.emby-tab-button.emby-button-tv:focus{color:#fff}.channelPrograms,.guide-channelHeaderCell,.programCell{border-color:#383838}.programCell-sports{background:#3949AB!important}.programCell-movie{background:#5E35B1!important}.programCell-kids{background:#039BE5!important}.programCell-news{background:#43A047!important}.guide-channelHeaderCell:focus,.programCell:focus{background-color:#555!important}.guide-programTextIcon{color:#1e1e1e;background:#555}.guide-currentTimeIndicatorArrow,.guide-currentTimeIndicatorBar{background-color:#c33}.guide-headerTimeslots{color:inherit}.guide-date-tab-button{color:#555;color:rgba(255,255,255,.3)}.guide-date-tab-button.emby-tab-button-active,.guide-date-tab-button:focus{color:#c33}.guide-date-tab-button.emby-button-tv:focus{background-color:#c33;color:#fff}.itemBackdropFader{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#191919));background:-webkit-linear-gradient(rgba(0,0,0,0),#191919);background:-o-linear-gradient(rgba(0,0,0,0),#191919);background:linear-gradient(rgba(0,0,0,0),#191919)}@media all and (min-width:62.5em){.detailButton-mobile{background:#444!important}.detailTrackSelect.emby-select-withcolor{background:#444;border-color:#444}}.infoBanner{color:#ddd;background:#111;padding:1em;-webkit-border-radius:.25em;border-radius:.25em}.ratingbutton-icon-withrating{color:#c33}.downloadbutton-icon-complete,.downloadbutton-icon-on{color:#4285F4}.playstatebutton-icon-played{color:#c33}.repeatButton-active{color:#4285F4}.card:focus .card-focuscontent{border-color:#c33}.layout-desktop ::-webkit-scrollbar{width:1em;height:1em}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3)}::-webkit-scrollbar-track-piece{background-color:#3b3b3b}::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-thumb:vertical{-webkit-border-radius:2px;background:center no-repeat #888} \ No newline at end of file +html{color:#eee;color:rgba(255,255,255,.87)}.emby-collapsible-button{border-color:#383838;border-color:rgba(255,255,255,.135)}.skinHeader{color:#ccc;color:rgba(255,255,255,.78)}.skinHeader-withBackground{background-color:#c33;-webkit-box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37)}.osdHeader{-webkit-box-shadow:none!important;box-shadow:none!important}.skinHeader.semiTransparent{backdrop-filter:none!important;background-color:rgba(0,0,0,.3);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.6)),to(rgba(0,0,0,0)));background:-webkit-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:-o-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));-webkit-box-shadow:none;box-shadow:none}.pageTitleWithDefaultLogo{background-image:url(../logowhite.png)}.backgroundContainer,.dialog,html{background-color:#282828}.backgroundContainer.withBackdrop{background-color:rgba(0,0,0,.86)}.paper-icon-button-light:focus{color:#c33;background-color:rgba(204,51,51,.2)}.skinHeader-withBackground .paper-icon-button-light:focus{color:#fff;background-color:rgba(255,255,255,.2)}.fab,.raised{background:#404040;color:#fff}.fab:focus,.raised:focus{background:#505050}.button-submit{background:#c33}.button-submit:focus{background:#D83F3F}.checkboxLabel{color:inherit}.checkboxListLabel,.inputLabel,.inputLabelUnfocused,.paperListLabel,.textareaLabelUnfocused{color:#bbb;color:rgba(255,255,255,.7)}.inputLabelFocused,.selectLabelFocused,.textareaLabelFocused{color:#c33}.checkboxOutline{border-color:currentColor}.collapseContent,.formDialogFooter:not(.formDialogFooter-clear),.formDialogHeader:not(.formDialogHeader-clear),.paperList,.visualCardBox{background-color:#222}.defaultCardBackground1{background-color:#d2b019}.defaultCardBackground2{background-color:#338abb}.defaultCardBackground3{background-color:#6b689d}.defaultCardBackground4{background-color:#dd452b}.defaultCardBackground5{background-color:#5ccea9}.cardText-secondary,.fieldDescription,.guide-programNameCaret,.listItem .secondary,.nowPlayingBarSecondaryText,.programSecondaryTitle,.secondaryText{color:#999;color:rgba(255,255,255,.5)}.actionsheetDivider{background:#444;background:rgba(255,255,255,.14)}.cardFooter-vibrant .cardText-secondary{color:inherit;opacity:.5}.actionSheetMenuItem:hover{background-color:#222}.toast{background:#303030;color:#fff;color:rgba(255,255,255,.87)}.appfooter{background:#101010;color:#ccc;color:rgba(255,255,255,.78)}@supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)){.appfooter-blurred{background:rgba(24,24,24,.7);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.itemSelectionPanel{border:1px solid #c33}.selectionCommandsPanel{background:#c33;color:#fff}.upNextDialog-countdownText{color:#c33}.alphaPickerButton{color:#999;color:rgba(255,255,255,.5);background-color:transparent}.alphaPickerButton-selected{color:#fff}.alphaPickerButton-tv:focus{background-color:#c33;color:#fff!important}.detailTableBodyRow-shaded:nth-child(even){background:#1c1c1c;background:rgba(30,30,30,.9)}.listItem-border{border-color:rgba(30,30,30,.9)!important}.listItem:focus{background:#333}.progressring-spiner{border-color:#c33}.button-flat-accent,.button-link{color:#c33}.mediaInfoText{color:#ddd;background:rgba(170,170,190,.2)}.mediaInfoTimerIcon,.starIcon{color:#CB272A}.emby-input,.emby-textarea{color:inherit;background:#1c1c1c;border:.07em solid #1c1c1c;-webkit-border-radius:.15em;border-radius:.15em}.emby-input:focus,.emby-textarea:focus{border-color:#c33}.emby-select-withcolor{color:inherit;background:#1c1c1c;border:.07em solid #1c1c1c}.emby-select-withcolor>option{color:inherit;background:#222}.emby-select-withcolor:focus{border-color:#c33!important}.emby-select-tv-withcolor:focus{background-color:#c33!important;color:#fff!important}.emby-checkbox:checked+span+span+.checkboxOutline{border-color:#c33}.emby-checkbox:focus+span+.emby-checkbox-focushelper{background-color:rgba(204,51,51,.26)}.emby-checkbox:checked+span+span+.checkboxOutline,.itemProgressBarForeground{background-color:#c33}.itemProgressBarForeground-recording{background-color:#CB272A}.countIndicator,.playedIndicator{background:#c33}.fullSyncIndicator{background:#c33;color:#fff}.mainDrawer{background-color:#1c1c1f;color:#ccc;color:rgba(255,255,255,.7)}.navMenuOption:hover{background:#252528}.navMenuOption-selected{background:#c33!important;color:#fff}.emby-button-focusscale:focus{background:#c33;color:#fff}.emby-tab-button{color:#999;color:rgba(255,255,255,.5)}.emby-tab-button-active,.emby-tab-button-active.emby-button-tv{color:#fff}.emby-tab-button.emby-button-tv:focus{color:#fff;background:0 0}.channelPrograms,.guide-channelHeaderCell,.programCell{border-color:#383838}.programCell-sports{background:#3949AB!important}.programCell-movie{background:#5E35B1!important}.programCell-kids{background:#039BE5!important}.programCell-news{background:#43A047!important}.programCell-active{background:#1e1e1e!important}.guide-channelHeaderCell:focus,.programCell:focus{background-color:#c33!important;color:#fff!important}.guide-programTextIcon{color:#1e1e1e;background:#555}.guide-headerTimeslots{color:inherit}.guide-date-tab-button{color:#555;color:rgba(255,255,255,.3)}.guide-date-tab-button.emby-tab-button-active,.guide-date-tab-button:focus{color:#c33}.guide-date-tab-button.emby-button-tv:focus{background-color:#c33;color:#fff}.itemBackdropFader{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#191919));background:-webkit-linear-gradient(rgba(0,0,0,0),#191919);background:-o-linear-gradient(rgba(0,0,0,0),#191919);background:linear-gradient(rgba(0,0,0,0),#191919)}.infoBanner{color:#ddd;background:#111;padding:1em;-webkit-border-radius:.25em;border-radius:.25em}.ratingbutton-icon-withrating{color:#c33}.downloadbutton-icon-complete,.downloadbutton-icon-on{color:#4285F4}.playstatebutton-icon-played{color:#c33}.repeatButton-active{color:#4285F4}.card:focus .card-focuscontent{border-color:#c33}.layout-desktop ::-webkit-scrollbar{width:1em;height:1em}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3)}::-webkit-scrollbar-track-piece{background-color:#3b3b3b}::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-thumb:vertical{-webkit-border-radius:2px;background:center no-repeat #888} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/themes/dark/logo.png b/dashboard-ui/bower_components/emby-webcomponents/themes/dark/logo.png deleted file mode 100644 index 7e55e0449d..0000000000 Binary files a/dashboard-ui/bower_components/emby-webcomponents/themes/dark/logo.png and /dev/null differ diff --git a/dashboard-ui/bower_components/emby-webcomponents/themes/dark/theme.css b/dashboard-ui/bower_components/emby-webcomponents/themes/dark/theme.css index e000017c87..b7b84859d2 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/themes/dark/theme.css +++ b/dashboard-ui/bower_components/emby-webcomponents/themes/dark/theme.css @@ -1 +1 @@ -html{color:#eee;color:rgba(255,255,255,.87)}.emby-collapsible-button{border-color:#383838;border-color:rgba(255,255,255,.135)}.skinHeader{color:#ccc;color:rgba(255,255,255,.78)}.skinHeader-withBackground{background-color:#181818;-webkit-box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37)}.osdHeader{-webkit-box-shadow:none!important;box-shadow:none!important}.skinHeader.semiTransparent{backdrop-filter:none!important;background-color:rgba(0,0,0,.3);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.6)),to(rgba(0,0,0,0)));background:-webkit-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:-o-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));-webkit-box-shadow:none;box-shadow:none}.pageTitleWithDefaultLogo{background-image:url(logo.png)}.backgroundContainer,.dialog{background-color:#282828}.backgroundContainer.withBackdrop{background-color:rgba(12,12,12,.9)}.paper-icon-button-light:focus{color:#52B54B}.fab,.raised{background:#404040;color:#fff}.button-accent,.button-submit{background:#52B54B;color:#fff}.checkboxLabel{color:inherit}.checkboxListLabel,.inputLabel,.inputLabelUnfocused,.paperListLabel,.textareaLabelUnfocused{color:#bbb;color:rgba(255,255,255,.7)}.inputLabelFocused,.selectLabelFocused,.textareaLabelFocused{color:#52B54B}.checkboxOutline{border-color:currentColor}.collapseContent,.formDialogFooter:not(.formDialogFooter-clear),.formDialogHeader:not(.formDialogHeader-clear),.paperList,.visualCardBox{background-color:#222}.cardText-secondary,.fieldDescription,.guide-programNameCaret,.listItem .secondary,.nowPlayingBarSecondaryText,.programSecondaryTitle,.secondaryText{color:#999;color:rgba(255,255,255,.5)}.actionsheetDivider{background:#444;background:rgba(255,255,255,.14)}.cardFooter-vibrant .cardText-secondary{color:inherit;opacity:.5}.actionSheetMenuItem:hover{background-color:#222}.toast{background:#303030;color:#fff;color:rgba(255,255,255,.87)}.appfooter{background:#101010;color:#ccc;color:rgba(255,255,255,.78)}@supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)){.appfooter-blurred{background:rgba(24,24,24,.7);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.itemSelectionPanel{border:1px solid #52B54B}.selectionCommandsPanel{background:#52B54B;color:#fff}.upNextDialog-countdownText{color:#52B54B}.alphaPickerButton{color:#999;color:rgba(255,255,255,.5);background-color:transparent}.alphaPickerButton-selected{color:#fff}.alphaPickerButton-tv:focus{background-color:#52B54B;color:#fff!important}.detailTableBodyRow-shaded:nth-child(even),.listItem-shaded:nth-child(even){background:#1c1c1c;background:rgba(30,30,30,.9)}.listItem:focus{background:#333}.progressring-spiner{border-color:#52B54B}.button-flat-accent,.button-link{color:#52B54B}.mediaInfoText{color:#ddd;background:rgba(170,170,190,.2)}.mediaInfoTimerIcon,.starIcon{color:#CB272A}.emby-input,.emby-textarea{color:inherit;background:#1c1c1c;border:.07em solid #1c1c1c;-webkit-border-radius:.15em;border-radius:.15em}.emby-input:focus,.emby-textarea:focus{border-color:#52B54B}.emby-select-withcolor{color:inherit;background:#1c1c1c;border:.07em solid #1c1c1c}.emby-select-withcolor>option{color:inherit;background:#222}.emby-select-withcolor:focus{border-color:#52B54B!important}.emby-select-tv-withcolor:focus{background-color:#52B54B!important;color:#fff!important}.emby-checkbox:checked+span+span+.checkboxOutline{border-color:#52B54B}.emby-checkbox:focus+span+.emby-checkbox-focushelper{background-color:rgba(82,181,75,.26)}.emby-checkbox:checked+span+span+.checkboxOutline>.checkboxOutlineTick,.itemProgressBarForeground{background-color:#52B54B}.itemProgressBarForeground-recording{background-color:#CB272A}.countIndicator,.fullSyncIndicator,.playedIndicator{background:#52B54B}.fullSyncIndicator{color:#fff}.mainDrawer{background-color:#1c1c1f;color:#ccc;color:rgba(255,255,255,.7)}.navMenuDivider{background:#202020;background:rgba(255,255,255,.12)}.navMenuOption:hover{background:#252528}.navMenuOption-selected{background:#52B54B!important;color:#fff}.emby-tab-button{color:#999;color:rgba(255,255,255,.4)}.emby-tab-button-active{color:#52B54B}.emby-tab-button-active.emby-button-tv{color:#fff}.emby-tab-button.emby-button-tv:focus{color:#52B54B}.channelPrograms,.guide-channelHeaderCell,.programCell{border-color:#383838}.programCell-sports{background:#3949AB!important}.programCell-movie{background:#5E35B1!important}.programCell-kids{background:#039BE5!important}.programCell-news{background:#43A047!important}.guide-channelHeaderCell:focus,.programCell:focus{background-color:#555!important}.guide-programTextIcon{color:#1e1e1e;background:#555}.guide-currentTimeIndicatorArrow,.guide-currentTimeIndicatorBar{background-color:#52B54B}.guide-headerTimeslots{color:inherit}.guide-date-tab-button{color:#555;color:rgba(255,255,255,.3)}.guide-date-tab-button.emby-tab-button-active,.guide-date-tab-button:focus{color:#52B54B}.guide-date-tab-button.emby-button-tv:focus{background-color:#52B54B;color:#fff}.itemBackdropFader{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#191919));background:-webkit-linear-gradient(rgba(0,0,0,0),#191919);background:-o-linear-gradient(rgba(0,0,0,0),#191919);background:linear-gradient(rgba(0,0,0,0),#191919)}@media all and (min-width:62.5em){.detailButton-mobile{background:#444!important}.detailTrackSelect.emby-select-withcolor{background:#444;border-color:#444}}.infoBanner{color:#ddd;background:#111;padding:1em;-webkit-border-radius:.25em;border-radius:.25em}.ratingbutton-icon-withrating{color:#c33}.downloadbutton-icon-complete,.downloadbutton-icon-on{color:#4285F4}.playstatebutton-icon-played{color:#c33}.repeatButton-active{color:#4285F4}.card:focus .card-focuscontent{border-color:#52B54B}.layout-desktop ::-webkit-scrollbar{width:1em;height:1em}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3)}::-webkit-scrollbar-track-piece{background-color:#3b3b3b}::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-thumb:vertical{-webkit-border-radius:2px;background:center no-repeat #888} \ No newline at end of file +html{color:#ddd;color:rgba(255,255,255,.8)}.emby-collapsible-button{border-color:#383838;border-color:rgba(255,255,255,.135)}.skinHeader-withBackground{background-color:#1f1f1f}.skinHeader.semiTransparent{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background-color:rgba(0,0,0,.3);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.6)),to(rgba(0,0,0,0)));background:-webkit-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:-o-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0))}.pageTitleWithDefaultLogo{background-image:url(../logowhite.png)}.backgroundContainer,.dialog,html{background-color:#1a1a1a}.backgroundContainer.withBackdrop{background-color:rgba(0,0,0,.86)}.paper-icon-button-light:focus{color:#52B54B;background-color:rgba(82,181,75,.2)}.fab,.raised{background:#303030;color:rgba(255,255,255,.87)}.fab:focus,.raised:focus{background:#383838}.button-submit{background:#52B54B;color:#fff}.button-submit:focus{background:#5EC157;color:#fff}.checkboxLabel{color:inherit}.checkboxListLabel,.inputLabel,.inputLabelUnfocused,.paperListLabel,.textareaLabelUnfocused{color:#bbb;color:rgba(255,255,255,.7)}.inputLabelFocused,.selectLabelFocused,.textareaLabelFocused{color:#52B54B}.checkboxOutline{border-color:currentColor}.collapseContent,.formDialogFooter:not(.formDialogFooter-clear),.formDialogHeader:not(.formDialogHeader-clear),.paperList,.visualCardBox{background-color:#242424}.defaultCardBackground1{background-color:#d2b019}.defaultCardBackground2{background-color:#338abb}.defaultCardBackground3{background-color:#6b689d}.defaultCardBackground4{background-color:#dd452b}.defaultCardBackground5{background-color:#5ccea9}.cardText-secondary,.fieldDescription,.guide-programNameCaret,.listItem .secondary,.nowPlayingBarSecondaryText,.programSecondaryTitle,.secondaryText{color:#999;color:rgba(255,255,255,.5)}.actionsheetDivider{background:#444;background:rgba(255,255,255,.14)}.cardFooter-vibrant .cardText-secondary{color:inherit;opacity:.5}.actionSheetMenuItem:hover{background-color:#242424}.toast{background:#303030;color:#fff;color:rgba(255,255,255,.87)}.appfooter{background:#101010;color:#ccc;color:rgba(255,255,255,.78)}@supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)){.appfooter-blurred{background:rgba(24,24,24,.7);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.itemSelectionPanel{border:1px solid #52B54B}.selectionCommandsPanel{background:#52B54B;color:#fff}.upNextDialog-countdownText{color:#52B54B}.alphaPickerButton{color:#999;color:rgba(255,255,255,.5);background-color:transparent}.alphaPickerButton-selected{color:#fff}.alphaPickerButton-tv:focus{background-color:#52B54B;color:#fff!important}.detailTableBodyRow-shaded:nth-child(even){background:#1c1c1c;background:rgba(30,30,30,.9)}.listItem-border{border-color:rgba(34,34,34,.9)!important}.listItem:focus{background:#333}.progressring-spiner{border-color:#52B54B}.button-flat-accent,.button-link{color:#52B54B}.mediaInfoText{color:#ddd;background:rgba(170,170,190,.2)}.mediaInfoTimerIcon,.starIcon{color:#CB272A}.emby-input,.emby-textarea{color:inherit;background:#292929;border:.07em solid #292929;-webkit-border-radius:.15em;border-radius:.15em}.emby-input:focus,.emby-textarea:focus{border-color:#52B54B}.emby-select-withcolor{color:inherit;background:#292929;border:.07em solid #292929}.emby-select-withcolor>option{color:inherit;background:#222}.emby-select-withcolor:focus{border-color:#52B54B!important}.emby-select-tv-withcolor:focus{background-color:#52B54B!important;color:#fff!important}.emby-checkbox:checked+span+span+.checkboxOutline{border-color:#52B54B}.emby-checkbox:focus+span+.emby-checkbox-focushelper{background-color:rgba(82,181,75,.26)}.emby-checkbox:checked+span+span+.checkboxOutline,.itemProgressBarForeground{background-color:#52B54B}.itemProgressBarForeground-recording{background-color:#CB272A}.countIndicator,.fullSyncIndicator,.playedIndicator{background:#52B54B}.fullSyncIndicator{color:#fff}.mainDrawer{background-color:#1c1c1c}.navMenuOption:hover{background:#252528}.navMenuOption-selected{background:#52B54B!important;color:#fff}.emby-button-focusscale:focus{background:#52B54B;color:#fff}.emby-tab-button{color:#999;color:rgba(255,255,255,.4)}.emby-tab-button-active{color:#52B54B}.emby-tab-button-active.emby-button-tv{color:#fff}.emby-tab-button.emby-button-tv:focus{color:#52B54B;background:0 0}.channelPrograms,.guide-channelHeaderCell,.programCell{border-color:rgba(255,255,255,.05)}.programCell-sports{background:#3949AB!important}.programCell-movie{background:#5E35B1!important}.programCell-kids{background:#039BE5!important}.programCell-news{background:#43A047!important}.programCell-active{background:#1e1e1e!important}.guide-channelHeaderCell:focus,.programCell:focus{background-color:#52B54B!important;color:#fff!important}.guide-programTextIcon{color:#1e1e1e;background:#555}.guide-headerTimeslots{color:inherit}.guide-date-tab-button{color:#555;color:rgba(255,255,255,.3)}.guide-date-tab-button.emby-tab-button-active,.guide-date-tab-button:focus{color:#52B54B}.guide-date-tab-button.emby-button-tv:focus{background-color:#52B54B;color:#fff}.itemBackdropFader{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#1a1a1a));background:-webkit-linear-gradient(rgba(0,0,0,0),#1a1a1a);background:-o-linear-gradient(rgba(0,0,0,0),#1a1a1a);background:linear-gradient(rgba(0,0,0,0),#1a1a1a)}.infoBanner{color:#ddd;background:#111;padding:1em;-webkit-border-radius:.25em;border-radius:.25em}.ratingbutton-icon-withrating{color:#c33}.downloadbutton-icon-complete,.downloadbutton-icon-on{color:#4285F4}.playstatebutton-icon-played{color:#c33}.repeatButton-active{color:#4285F4}.card:focus .card-focuscontent{border-color:#52B54B}.layout-desktop ::-webkit-scrollbar{width:1em;height:1em}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3)}::-webkit-scrollbar-track-piece{background-color:#3b3b3b}::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-thumb:vertical{-webkit-border-radius:2px;background:center no-repeat #888}.timeslotHeaders-desktop::-webkit-scrollbar{height:.7em} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/themes/halloween/logo.png b/dashboard-ui/bower_components/emby-webcomponents/themes/halloween/logo.png deleted file mode 100644 index 7e55e0449d..0000000000 Binary files a/dashboard-ui/bower_components/emby-webcomponents/themes/halloween/logo.png and /dev/null differ diff --git a/dashboard-ui/bower_components/emby-webcomponents/themes/halloween/theme.css b/dashboard-ui/bower_components/emby-webcomponents/themes/halloween/theme.css index c8cb84638c..a1cabd5f90 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/themes/halloween/theme.css +++ b/dashboard-ui/bower_components/emby-webcomponents/themes/halloween/theme.css @@ -1 +1 @@ -@import url(https://fonts.googleapis.com/css?family=Eater);h1,h2{font-family:Eater;font-weight:400!important}h1{font-size:1.566em!important}h2{font-size:1.305em!important}.sectionTabs button,.userViewNames .btnUserViewHeader{font-family:Eater!important;font-size:87%!important}html{color:#eee;color:rgba(255,255,255,.87)}.emby-collapsible-button{border-color:#383838;border-color:rgba(255,255,255,.135)}.skinHeader{color:#ccc;color:rgba(255,255,255,.78)}.skinHeader-withBackground{background-color:#202020}.osdHeader{-webkit-box-shadow:none!important;box-shadow:none!important}.skinHeader.semiTransparent{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background-color:rgba(0,0,0,.3);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.6)),to(rgba(0,0,0,0)));background:-webkit-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:-o-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0))}.pageTitleWithDefaultLogo{background-image:url(logo.png)}.backgroundContainer,.dialog{background-color:#1a1a1a}.backgroundContainer.withBackdrop{background-color:rgba(12,12,12,.9)}.paper-icon-button-light:focus{color:#FF9100}.skinHeader-withBackground .paper-icon-button-light:focus{color:#fff}.fab,.raised{background:#404040;color:#fff}.button-accent,.button-submit{background:#FF9100;color:#fff}.checkboxLabel{color:inherit}.checkboxListLabel,.inputLabel,.inputLabelUnfocused,.paperListLabel,.textareaLabelUnfocused{color:#bbb;color:rgba(255,255,255,.7)}.inputLabelFocused,.selectLabelFocused,.textareaLabelFocused{color:#FF9100}.checkboxOutline{border-color:currentColor}.collapseContent,.formDialogFooter:not(.formDialogFooter-clear),.formDialogHeader:not(.formDialogHeader-clear),.paperList,.visualCardBox{background-color:#222}.cardText-secondary,.fieldDescription,.guide-programNameCaret,.listItem .secondary,.nowPlayingBarSecondaryText,.programSecondaryTitle,.secondaryText{color:#999;color:rgba(255,255,255,.5)}.actionsheetDivider{background:#444;background:rgba(255,255,255,.14)}.cardFooter-vibrant .cardText-secondary{color:inherit;opacity:.5}.actionSheetMenuItem:hover{background-color:#222}.toast{background:#303030;color:#fff;color:rgba(255,255,255,.87)}.appfooter{background:#101010;color:#ccc;color:rgba(255,255,255,.78)}@supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)){.appfooter-blurred{background:rgba(24,24,24,.7);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.itemSelectionPanel{border:1px solid #FF9100}.selectionCommandsPanel{background:#FF9100;color:#fff}.upNextDialog-countdownText{color:#FF9100}.alphaPickerButton{color:#999;color:rgba(255,255,255,.5);background-color:transparent}.alphaPickerButton-selected{color:#fff}.alphaPickerButton-tv:focus{background-color:#FF9100;color:#fff!important}.detailTableBodyRow-shaded:nth-child(even),.listItem-shaded:nth-child(even){background:#1c1c1c;background:rgba(30,30,30,.9)}.listItem:focus{background:#333}.progressring-spiner{border-color:#FF9100}.button-flat-accent,.button-link{color:#FF9100}.mediaInfoText{color:#ddd;background:rgba(170,170,190,.2)}.mediaInfoTimerIcon,.starIcon{color:#CB272A}.emby-input,.emby-textarea{color:inherit;background:#262626;border:.07em solid #262626;-webkit-border-radius:.15em;border-radius:.15em}.emby-input:focus,.emby-textarea:focus{border-color:#FF9100}.emby-select-withcolor{color:inherit;background:#262626;border:.07em solid #262626}.emby-select-withcolor>option{color:inherit;background:#222}.emby-select-withcolor:focus{border-color:#FF9100!important}.emby-select-tv-withcolor:focus{background-color:#FF9100!important;color:#fff!important}.emby-checkbox:checked+span+span+.checkboxOutline{border-color:#FF9100}.emby-checkbox:focus+span+.emby-checkbox-focushelper{background-color:rgba(204,51,51,.26)}.emby-checkbox:checked+span+span+.checkboxOutline>.checkboxOutlineTick,.itemProgressBarForeground{background-color:#FF9100}.itemProgressBarForeground-recording{background-color:#CB272A}.countIndicator,.fullSyncIndicator,.playedIndicator{background:#FF9100}.fullSyncIndicator{color:#fff}.mainDrawer{background-color:#1c1c1f;color:#ccc;color:rgba(255,255,255,.7)}.navMenuDivider{background:#262626;background:rgba(255,255,255,.12)}.navMenuOption:hover{background:#252528}.navMenuOption-selected{background:#FF9100!important;color:#fff}.emby-tab-button{color:#999;color:rgba(255,255,255,.5)}.emby-tab-button-active{color:#FF9100}.emby-tab-button-active.emby-button-tv{color:#fff}.emby-tab-button.emby-button-tv:focus{color:#FF9100}.channelPrograms,.guide-channelHeaderCell,.programCell{border-color:#282828}.programCell-sports{background:#3949AB!important}.programCell-movie{background:#5E35B1!important}.programCell-kids{background:#039BE5!important}.programCell-news{background:#43A047!important}.guide-channelHeaderCell:focus,.programCell:focus{background-color:#555!important}.guide-programTextIcon{color:#1e1e1e;background:#555}.guide-currentTimeIndicatorArrow,.guide-currentTimeIndicatorBar{background-color:#52B54B}.guide-headerTimeslots{color:inherit}.guide-date-tab-button{color:#555;color:rgba(255,255,255,.3)}.guide-date-tab-button.emby-tab-button-active,.guide-date-tab-button:focus{color:#52B54B}.guide-date-tab-button.emby-button-tv:focus{background-color:#52B54B;color:#fff}.itemBackdropFader{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#191919));background:-webkit-linear-gradient(rgba(0,0,0,0),#191919);background:-o-linear-gradient(rgba(0,0,0,0),#191919);background:linear-gradient(rgba(0,0,0,0),#191919)}@media all and (min-width:62.5em){.detailButton-mobile{background:#444!important}.detailTrackSelect.emby-select-withcolor{background:#444;border-color:#444}}.infoBanner{color:#ddd;background:#111;padding:1em;-webkit-border-radius:.25em;border-radius:.25em}.ratingbutton-icon-withrating{color:#FF9100}.downloadbutton-icon-complete,.downloadbutton-icon-on{color:#4285F4}.playstatebutton-icon-played{color:#FF9100}.repeatButton-active{color:#4285F4}.card:focus .card-focuscontent{border-color:#FF9100}.layout-desktop ::-webkit-scrollbar{width:1em;height:1em}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3)}::-webkit-scrollbar-track-piece{background-color:#3b3b3b}::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-thumb:vertical{-webkit-border-radius:2px;background:center no-repeat #888}.btnUserViewHeader:focus{color:#FF9100!important}.btnUserViewHeader:focus .userViewButtonText{border-bottom-color:#FF9100!important}.emby-button:focus:not(.btnUserViewHeader):not(.emby-tab-button){background:#FF9100} \ No newline at end of file +@import url(https://fonts.googleapis.com/css?family=Eater);h1,h2{font-family:Eater;font-weight:400!important}h1{font-size:1.566em!important}h2{font-size:1.305em!important}.sectionTabs button,.userViewNames .btnUserViewHeader{font-family:Eater!important;font-size:87%!important}html{color:#eee;color:rgba(255,255,255,.87)}.emby-collapsible-button{border-color:#383838;border-color:rgba(255,255,255,.135)}.skinHeader{color:#ccc;color:rgba(255,255,255,.78)}.skinHeader-withBackground{background-color:#202020}.osdHeader{-webkit-box-shadow:none!important;box-shadow:none!important}.skinHeader.semiTransparent{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background-color:rgba(0,0,0,.3);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.6)),to(rgba(0,0,0,0)));background:-webkit-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:-o-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0))}.pageTitleWithDefaultLogo{background-image:url(../logowhite.png)}.backgroundContainer,.dialog,html{background-color:#1a1a1a}.backgroundContainer.withBackdrop{background-color:rgba(12,12,12,.9)}.paper-icon-button-light:focus{color:#FF9100;background-color:rgba(255,145,0,.2)}.skinHeader-withBackground .paper-icon-button-light:focus{color:#fff;background-color:rgba(255,255,255,.2)}.fab,.raised{background:#404040;color:#fff}.fab:focus,.raised:focus{background:#505050}.button-submit{background:#FF9100;color:#fff}.button-submit:focus{background:#FF9D0C;color:#fff}.checkboxLabel{color:inherit}.checkboxListLabel,.inputLabel,.inputLabelUnfocused,.paperListLabel,.textareaLabelUnfocused{color:#bbb;color:rgba(255,255,255,.7)}.inputLabelFocused,.selectLabelFocused,.textareaLabelFocused{color:#FF9100}.checkboxOutline{border-color:currentColor}.collapseContent,.formDialogFooter:not(.formDialogFooter-clear),.formDialogHeader:not(.formDialogHeader-clear),.paperList,.visualCardBox{background-color:#222}.defaultCardBackground1{background-color:#d2b019}.defaultCardBackground2{background-color:#338abb}.defaultCardBackground3{background-color:#6b689d}.defaultCardBackground4{background-color:#dd452b}.defaultCardBackground5{background-color:#5ccea9}.cardText-secondary,.fieldDescription,.guide-programNameCaret,.listItem .secondary,.nowPlayingBarSecondaryText,.programSecondaryTitle,.secondaryText{color:#999;color:rgba(255,255,255,.5)}.actionsheetDivider{background:#444;background:rgba(255,255,255,.14)}.cardFooter-vibrant .cardText-secondary{color:inherit;opacity:.5}.actionSheetMenuItem:hover{background-color:#222}.toast{background:#303030;color:#fff;color:rgba(255,255,255,.87)}.appfooter{background:#101010;color:#ccc;color:rgba(255,255,255,.78)}@supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)){.appfooter-blurred{background:rgba(24,24,24,.7);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.itemSelectionPanel{border:1px solid #FF9100}.selectionCommandsPanel{background:#FF9100;color:#fff}.upNextDialog-countdownText{color:#FF9100}.alphaPickerButton{color:#999;color:rgba(255,255,255,.5);background-color:transparent}.alphaPickerButton-selected{color:#fff}.alphaPickerButton-tv:focus{background-color:#FF9100;color:#fff!important}.detailTableBodyRow-shaded:nth-child(even){background:#1c1c1c;background:rgba(30,30,30,.9)}.listItem-border{border-color:rgba(30,30,30,.9)!important}.listItem:focus{background:#333}.progressring-spiner{border-color:#FF9100}.button-flat-accent,.button-link{color:#FF9100}.mediaInfoText{color:#ddd;background:rgba(170,170,190,.2)}.mediaInfoTimerIcon,.starIcon{color:#CB272A}.emby-input,.emby-textarea{color:inherit;background:#262626;border:.07em solid #262626;-webkit-border-radius:.15em;border-radius:.15em}.emby-input:focus,.emby-textarea:focus{border-color:#FF9100}.emby-select-withcolor{color:inherit;background:#262626;border:.07em solid #262626}.emby-select-withcolor>option{color:inherit;background:#222}.emby-select-withcolor:focus{border-color:#FF9100!important}.emby-select-tv-withcolor:focus{background-color:#FF9100!important;color:#fff!important}.emby-checkbox:checked+span+span+.checkboxOutline{border-color:#FF9100}.emby-checkbox:focus+span+.emby-checkbox-focushelper{background-color:rgba(204,51,51,.26)}.emby-checkbox:checked+span+span+.checkboxOutline,.itemProgressBarForeground{background-color:#FF9100}.itemProgressBarForeground-recording{background-color:#CB272A}.countIndicator,.fullSyncIndicator,.playedIndicator{background:#FF9100}.fullSyncIndicator{color:#fff}.mainDrawer{background-color:#1c1c1f;color:#ccc;color:rgba(255,255,255,.7)}.navMenuOption:hover{background:#252528}.navMenuOption-selected{background:#FF9100!important;color:#fff}.emby-button-focusscale:focus{background:#FF9100;color:#fff}.emby-tab-button{color:#999;color:rgba(255,255,255,.5)}.emby-tab-button-active{color:#FF9100}.emby-tab-button-active.emby-button-tv{color:#fff}.emby-tab-button.emby-button-tv:focus{color:#FF9100;background:0 0}.channelPrograms,.guide-channelHeaderCell,.programCell{border-color:#282828}.programCell-sports{background:#3949AB!important}.programCell-movie{background:#5E35B1!important}.programCell-kids{background:#039BE5!important}.programCell-news{background:#43A047!important}.programCell-active{background:#1e1e1e!important}.guide-channelHeaderCell:focus,.programCell:focus{background-color:#FF9100!important;color:#fff!important}.guide-programTextIcon{color:#1e1e1e;background:#555}.guide-headerTimeslots{color:inherit}.guide-date-tab-button{color:#555;color:rgba(255,255,255,.3)}.guide-date-tab-button.emby-tab-button-active,.guide-date-tab-button:focus{color:#52B54B}.guide-date-tab-button.emby-button-tv:focus{background-color:#52B54B;color:#fff}.itemBackdropFader{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#191919));background:-webkit-linear-gradient(rgba(0,0,0,0),#191919);background:-o-linear-gradient(rgba(0,0,0,0),#191919);background:linear-gradient(rgba(0,0,0,0),#191919)}.infoBanner{color:#ddd;background:#111;padding:1em;-webkit-border-radius:.25em;border-radius:.25em}.ratingbutton-icon-withrating{color:#FF9100}.downloadbutton-icon-complete,.downloadbutton-icon-on{color:#4285F4}.playstatebutton-icon-played{color:#FF9100}.repeatButton-active{color:#4285F4}.card:focus .card-focuscontent{border-color:#FF9100}.layout-desktop ::-webkit-scrollbar{width:1em;height:1em}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3)}::-webkit-scrollbar-track-piece{background-color:#3b3b3b}::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-thumb:vertical{-webkit-border-radius:2px;background:center no-repeat #888}.btnUserViewHeader:focus{color:#FF9100!important}.btnUserViewHeader:focus .userViewButtonText{border-bottom-color:#FF9100!important}.emby-button:focus:not(.btnUserViewHeader):not(.emby-tab-button){background:#FF9100} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/themes/light-blue/logo.png b/dashboard-ui/bower_components/emby-webcomponents/themes/light-blue/logo.png deleted file mode 100644 index 7e55e0449d..0000000000 Binary files a/dashboard-ui/bower_components/emby-webcomponents/themes/light-blue/logo.png and /dev/null differ diff --git a/dashboard-ui/bower_components/emby-webcomponents/themes/light-blue/theme.css b/dashboard-ui/bower_components/emby-webcomponents/themes/light-blue/theme.css index befc49098b..43eaa6f1fb 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/themes/light-blue/theme.css +++ b/dashboard-ui/bower_components/emby-webcomponents/themes/light-blue/theme.css @@ -1 +1 @@ -.skinHeader,html{color:#222;color:rgba(0,0,0,.87)}.emby-collapsible-button{border-color:#ccc;border-color:rgba(0,0,0,.158)}.collapseContent{background-color:#eaeaea}.skinHeader-withBackground{background-color:#2196F3;-webkit-box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);color:#fff}.osdHeader{-webkit-box-shadow:none!important;box-shadow:none!important}.skinHeader.semiTransparent{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background-color:rgba(0,0,0,.3);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.6)),to(rgba(0,0,0,0)));background:-webkit-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:-o-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0))}.pageTitleWithDefaultLogo{background-image:url(logo.png)}.backgroundContainer{background-color:#f2f2f2}.backgroundContainer.withBackdrop{background-color:rgba(255,255,255,.94)}.dialog{background-color:#f0f0f0}.paper-icon-button-light:focus{color:#2196F3}.skinHeader-withBackground .paper-icon-button-light:focus{color:#fff}.fab,.raised{background:#fff;color:inherit}.button-submit{background:#2196F3;color:#fff}.button-cancel{background:#fff;color:inherit}.button-accent{background:#2196F3;color:#fff}.checkboxLabel{color:inherit}.checkboxListLabel,.inputLabel,.inputLabelUnfocused,.paperListLabel,.textareaLabelUnfocused{color:#555}.button-link,.inputLabelFocused,.selectLabelFocused,.textareaLabelFocused{color:#2196F3}.checkboxOutline{border-color:currentColor}.paperList,.visualCardBox{background-color:#fff}.formDialogHeader:not(.formDialogHeader-clear){background-color:#2196F3;color:#fff}.formDialogFooter:not(.formDialogFooter-clear){background-color:#f0f0f0;border-top:1px solid rgba(0,0,0,.08);color:inherit}.cardText-secondary,.fieldDescription,.guide-programNameCaret,.listItem .secondary,.nowPlayingBarSecondaryText,.programSecondaryTitle,.secondaryText{color:#888}.cardFooter-vibrant .cardText-secondary{color:inherit;opacity:.5}.formDialogHeader a,.toast{color:#fff}.actionSheetMenuItem:hover{background-color:#ddd}.toast{background:#303030;color:rgba(255,255,255,.87)}.appfooter{background:#282828;color:#ccc;color:rgba(255,255,255,.78)}@supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)){.appfooter-blurred{background:rgba(24,24,24,.7);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.nowPlayingBarSecondaryText{color:#999}.itemSelectionPanel{border:1px solid #2196F3}.selectionCommandsPanel{background:#2196F3;color:#fff}.upNextDialog-countdownText{color:#2196F3}.alphaPickerButton{color:#555;color:rgba(0,0,0,.7);background-color:transparent}.alphaPickerButton-selected,.alphaPickerButton-tv:focus{background-color:#2196F3;color:#fff!important}.detailTableBodyRow-shaded:nth-child(even),.listItem-shaded:nth-child(even){background:#f8f8f8}.listItem:focus{background:#ddd}.progressring-spiner{border-color:#2196F3}.mediaInfoText{color:#333;background:#fff}.mediaInfoTimerIcon,.starIcon{color:#CB272A}.emby-input,.emby-textarea{color:inherit;background:#fff;border:.07em solid rgba(0,0,0,.158);-webkit-border-radius:.15em;border-radius:.15em}.emby-input:focus,.emby-textarea:focus{border-color:#2196F3}.emby-select-withcolor{color:inherit;background:#fff;border:.07em solid rgba(0,0,0,.158)}.emby-checkbox:checked+span+span+.checkboxOutline,.emby-select-withcolor:focus{border-color:#2196F3}.emby-select-withcolor>option{color:#000;background:#fff}.emby-select-tv-withcolor:focus{background-color:#2196F3;color:#fff}.emby-checkbox:focus+span+.emby-checkbox-focushelper{background-color:rgba(33,150,243,.26)}.emby-checkbox:checked+span+span+.checkboxOutline>.checkboxOutlineTick,.itemProgressBarForeground{background-color:#2196F3}.itemProgressBarForeground-recording{background-color:#CB272A}.countIndicator,.fullSyncIndicator,.playedIndicator{background:#2196F3}.fullSyncIndicator{color:#fff}.mainDrawer{background:#fff}.navMenuDivider{background:#eaeaea;background:rgba(0,0,0,.14)}.navMenuOption:hover{background:#f2f2f2}.navMenuOption-selected{background:#2196F3!important;color:#fff}.emby-tab-button{color:#fff;color:rgba(255,255,255,.5)}.emby-tab-button-active,.emby-tab-button-active.emby-button-tv,.emby-tab-button.emby-button-tv:focus{color:#fff;color:rgba(255,255,255,1)}.channelPrograms,.guide-channelHeaderCell,.programCell{border-color:rgba(0,0,0,.12)}.programCell-sports{background:#3949AB!important}.programCell-movie{background:#5E35B1!important}.programCell-kids{background:#039BE5!important}.programCell-news{background:#43A047!important}.guide-channelHeaderCell:focus,.programCell:focus{background-color:#555!important}.guide-programTextIcon{color:#1e1e1e;background:#555}.guide-currentTimeIndicatorArrow,.guide-currentTimeIndicatorBar{background-color:#2196F3}.guide-headerTimeslots{color:inherit}.guide-date-tab-button{color:#555;color:rgba(0,0,0,.54)}.guide-date-tab-button.emby-tab-button-active,.guide-date-tab-button:focus{color:#2196F3}.guide-date-tab-button.emby-button-tv:focus{background-color:#2196F3;color:#fff}.itemBackdropFader{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#f2f2f2));background:-webkit-linear-gradient(rgba(0,0,0,0),#f2f2f2);background:-o-linear-gradient(rgba(0,0,0,0),#f2f2f2);background:linear-gradient(rgba(0,0,0,0),#f2f2f2)}@media all and (min-width:62.5em){.detailButton-mobile{background:rgba(0,0,0,.14)!important;backdrop-filter:blur(10px)}}.infoBanner{color:#000;background:#fff3a5;padding:1em;-webkit-border-radius:.25em;border-radius:.25em}.ratingbutton-icon-withrating{color:#c33}.downloadbutton-icon-complete,.downloadbutton-icon-on{color:#4285F4}.playstatebutton-icon-played{color:#c33}.repeatButton-active{color:#4285F4}.card:focus .card-focuscontent{border-color:#2196F3} \ No newline at end of file +.skinHeader,html{color:#222;color:rgba(0,0,0,.87)}.emby-collapsible-button{border-color:#ccc;border-color:rgba(0,0,0,.158)}.collapseContent{background-color:#eaeaea}.skinHeader-withBackground{background-color:#2196F3;-webkit-box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);color:#fff}.osdHeader{-webkit-box-shadow:none!important;box-shadow:none!important}.skinHeader.semiTransparent{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background-color:rgba(0,0,0,.3);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.6)),to(rgba(0,0,0,0)));background:-webkit-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:-o-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0))}.pageTitleWithDefaultLogo{background-image:url(../logowhite.png)}.backgroundContainer,html{background-color:#f2f2f2}.backgroundContainer.withBackdrop{background-color:rgba(255,255,255,.94)}.dialog{background-color:#f0f0f0}.paper-icon-button-light:focus{color:#2196F3;background-color:rgba(33,150,243,.2)}.skinHeader-withBackground .paper-icon-button-light:focus{color:#fff;background-color:rgba(255,255,255,.2)}.fab,.raised{background:#d8d8d8;color:inherit}.fab:focus,.raised:focus{background:#ccc;color:inherit}.button-submit{background:#2196F3;color:#fff}.button-submit:focus{background:#2DA2FF;color:#fff}.checkboxLabel{color:inherit}.checkboxListLabel,.inputLabel,.inputLabelUnfocused,.paperListLabel,.textareaLabelUnfocused{color:#555}.button-link,.inputLabelFocused,.selectLabelFocused,.textareaLabelFocused{color:#2196F3}.checkboxOutline{border-color:currentColor}.paperList,.visualCardBox{background-color:#fff}.defaultCardBackground1{background-color:#009688}.defaultCardBackground2{background-color:#D32F2F}.defaultCardBackground3{background-color:#0288D1}.defaultCardBackground4{background-color:#388E3C}.defaultCardBackground5{background-color:#F57F17}.formDialogHeader:not(.formDialogHeader-clear){background-color:#2196F3;color:#fff}.formDialogFooter:not(.formDialogFooter-clear){background-color:#f0f0f0;border-top:1px solid rgba(0,0,0,.08);color:inherit}.cardText-secondary,.fieldDescription,.guide-programNameCaret,.listItem .secondary,.nowPlayingBarSecondaryText,.programSecondaryTitle,.secondaryText{color:#888}.cardFooter-vibrant .cardText-secondary{color:inherit;opacity:.5}.formDialogHeader a,.toast{color:#fff}.actionSheetMenuItem:hover{background-color:#ddd}.toast{background:#303030;color:rgba(255,255,255,.87)}.appfooter{background:#282828;color:#ccc;color:rgba(255,255,255,.78)}@supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)){.appfooter-blurred{background:rgba(24,24,24,.7);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.nowPlayingBarSecondaryText{color:#999}.itemSelectionPanel{border:1px solid #2196F3}.selectionCommandsPanel{background:#2196F3;color:#fff}.upNextDialog-countdownText{color:#2196F3}.alphaPickerButton{color:#555;color:rgba(0,0,0,.7);background-color:transparent}.alphaPickerButton-selected,.alphaPickerButton-tv:focus{background-color:#2196F3;color:#fff!important}.detailTableBodyRow-shaded:nth-child(even){background:#f8f8f8}.listItem-border{border-color:#f0f0f0!important}.listItem:focus{background:#ddd}.progressring-spiner{border-color:#2196F3}.mediaInfoText{color:#333;background:#fff}.mediaInfoTimerIcon,.starIcon{color:#CB272A}.emby-input,.emby-textarea{color:inherit;background:#fff;border:.07em solid rgba(0,0,0,.158);-webkit-border-radius:.15em;border-radius:.15em}.emby-input:focus,.emby-textarea:focus{border-color:#2196F3}.emby-select-withcolor{color:inherit;background:#fff;border:.07em solid rgba(0,0,0,.158)}.emby-checkbox:checked+span+span+.checkboxOutline,.emby-select-withcolor:focus{border-color:#2196F3}.emby-select-withcolor>option{color:#000;background:#fff}.emby-select-tv-withcolor:focus{background-color:#2196F3;color:#fff}.emby-checkbox:focus+span+.emby-checkbox-focushelper{background-color:rgba(33,150,243,.26)}.emby-checkbox:checked+span+span+.checkboxOutline,.itemProgressBarForeground{background-color:#2196F3}.itemProgressBarForeground-recording{background-color:#CB272A}.countIndicator,.fullSyncIndicator,.playedIndicator{background:#2196F3}.fullSyncIndicator{color:#fff}.mainDrawer{background:#fff}.navMenuOption:hover{background:#f2f2f2}.navMenuOption-selected{background:#2196F3!important;color:#fff}.emby-button-focusscale:focus{background:#2196F3;color:#fff}.emby-tab-button{color:#fff;color:rgba(255,255,255,.5)}.emby-tab-button-active,.emby-tab-button-active.emby-button-tv{color:#fff;color:rgba(255,255,255,1)}.emby-tab-button.emby-button-tv:focus{color:#fff;color:rgba(255,255,255,1);background:0 0}.channelPrograms,.guide-channelHeaderCell,.programCell{border-color:rgba(0,0,0,.12)}.programCell-sports{background:#3949AB!important}.programCell-movie{background:#5E35B1!important}.programCell-kids{background:#039BE5!important}.programCell-news{background:#43A047!important}.programCell-active{background:rgba(0,0,0,.1)!important}.guide-channelHeaderCell:focus,.programCell:focus{background-color:#2196F3!important;color:#fff!important}.guide-programTextIcon{color:#1e1e1e;background:#555}.guide-headerTimeslots{color:inherit}.guide-date-tab-button{color:#555;color:rgba(0,0,0,.54)}.guide-date-tab-button.emby-tab-button-active,.guide-date-tab-button:focus{color:#2196F3}.guide-date-tab-button.emby-button-tv:focus{background-color:#2196F3;color:#fff}.itemBackdropFader{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#f2f2f2));background:-webkit-linear-gradient(rgba(0,0,0,0),#f2f2f2);background:-o-linear-gradient(rgba(0,0,0,0),#f2f2f2);background:linear-gradient(rgba(0,0,0,0),#f2f2f2)}.infoBanner{color:#000;background:#fff3a5;padding:1em;-webkit-border-radius:.25em;border-radius:.25em}.ratingbutton-icon-withrating{color:#c33}.downloadbutton-icon-complete,.downloadbutton-icon-on{color:#4285F4}.playstatebutton-icon-played{color:#c33}.repeatButton-active{color:#4285F4}.card:focus .card-focuscontent{border-color:#2196F3} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/themes/light-green/logo.png b/dashboard-ui/bower_components/emby-webcomponents/themes/light-green/logo.png deleted file mode 100644 index 7e55e0449d..0000000000 Binary files a/dashboard-ui/bower_components/emby-webcomponents/themes/light-green/logo.png and /dev/null differ diff --git a/dashboard-ui/bower_components/emby-webcomponents/themes/light-green/theme.css b/dashboard-ui/bower_components/emby-webcomponents/themes/light-green/theme.css index c80e3689ed..a4f1c1c94c 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/themes/light-green/theme.css +++ b/dashboard-ui/bower_components/emby-webcomponents/themes/light-green/theme.css @@ -1 +1 @@ -.skinHeader,html{color:#222;color:rgba(0,0,0,.87)}.emby-collapsible-button{border-color:#ccc;border-color:rgba(0,0,0,.158)}.collapseContent{background-color:#eaeaea}.skinHeader-withBackground{background-color:#52B54B;-webkit-box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);color:#fff}.osdHeader{-webkit-box-shadow:none!important;box-shadow:none!important}.skinHeader.semiTransparent{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background-color:rgba(0,0,0,.3);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.6)),to(rgba(0,0,0,0)));background:-webkit-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:-o-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0))}.pageTitleWithDefaultLogo{background-image:url(logo.png)}.backgroundContainer{background-color:#f2f2f2}.backgroundContainer.withBackdrop{background-color:rgba(255,255,255,.94)}.dialog{background-color:#f0f0f0}.paper-icon-button-light:focus{color:#52B54B}.skinHeader-withBackground .button-link,.skinHeader-withBackground .paper-icon-button-light:focus{color:#fff}.fab,.raised{background:#fff;color:inherit}.button-submit{background:#52B54B;color:#fff}.button-cancel{background:#fff;color:inherit}.button-accent{background:#52B54B;color:#fff}.checkboxLabel{color:inherit}.checkboxListLabel,.inputLabel,.inputLabelUnfocused,.paperListLabel,.textareaLabelUnfocused{color:#555}.button-link,.inputLabelFocused,.selectLabelFocused,.textareaLabelFocused{color:green}.checkboxOutline{border-color:currentColor}.paperList,.visualCardBox{background-color:#fff}.formDialogHeader:not(.formDialogHeader-clear){background-color:#52B54B;color:#fff}.formDialogFooter:not(.formDialogFooter-clear){background-color:#f0f0f0;border-top:1px solid #ddd;border-top:1px solid rgba(0,0,0,.08);color:inherit}.cardText-secondary,.fieldDescription,.guide-programNameCaret,.listItem .secondary,.nowPlayingBarSecondaryText,.programSecondaryTitle,.secondaryText{color:#888}.actionsheetDivider{background:#ddd;background:rgba(0,0,0,.14)}.cardFooter-vibrant .cardText-secondary{color:inherit;opacity:.5}.formDialogHeader a,.toast{color:#fff}.actionSheetMenuItem:hover{background-color:#ddd}.toast{background:#303030;color:rgba(255,255,255,.87)}.appfooter{background:#282828;color:#ccc;color:rgba(255,255,255,.78)}@supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)){.appfooter-blurred{background:rgba(24,24,24,.7);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.nowPlayingBarSecondaryText{color:#999}.itemSelectionPanel{border:1px solid #52B54B}.selectionCommandsPanel{background:#52B54B;color:#fff}.upNextDialog-countdownText{color:#52B54B}.alphaPickerButton{color:#555;color:rgba(0,0,0,.7);background-color:transparent}.alphaPickerButton-selected,.alphaPickerButton-tv:focus{background-color:#52B54B;color:#fff!important}.detailTableBodyRow-shaded:nth-child(even),.listItem-shaded:nth-child(even){background:#f8f8f8}.listItem:focus{background:#ddd}.progressring-spiner{border-color:#52B54B}.mediaInfoText{color:#333;background:#fff}.mediaInfoTimerIcon,.starIcon{color:#CB272A}.emby-input,.emby-textarea{color:inherit;background:#fff;border:.07em solid rgba(0,0,0,.158);-webkit-border-radius:.15em;border-radius:.15em}.emby-input:focus,.emby-textarea:focus{border-color:#52B54B}.emby-select-withcolor{color:inherit;background:#fff;border:.07em solid rgba(0,0,0,.158)}.emby-checkbox:checked+span+span+.checkboxOutline,.emby-select-withcolor:focus{border-color:#52B54B}.emby-select-withcolor>option{color:#000;background:#fff}.emby-select-tv-withcolor:focus{background-color:#52B54B;color:#fff}.emby-checkbox:focus+span+.emby-checkbox-focushelper{background-color:rgba(82,181,75,.26)}.emby-checkbox:checked+span+span+.checkboxOutline>.checkboxOutlineTick,.itemProgressBarForeground{background-color:#52B54B}.itemProgressBarForeground-recording{background-color:#CB272A}.countIndicator,.fullSyncIndicator,.playedIndicator{background:#52B54B}.fullSyncIndicator{color:#fff}.mainDrawer{background:#fff}.navMenuDivider{background:#eaeaea;background:rgba(0,0,0,.12)}.navMenuOption:hover{background:#f2f2f2}.navMenuOption-selected{background:#52B54B!important;color:#fff}.emby-tab-button{color:#fff;color:rgba(255,255,255,.5)}.emby-tab-button-active,.emby-tab-button-active.emby-button-tv,.emby-tab-button.emby-button-tv:focus{color:#fff;color:rgba(255,255,255,1)}.channelPrograms,.guide-channelHeaderCell,.programCell{border-color:rgba(0,0,0,.12)}.programCell-sports{background:#3949AB!important}.programCell-movie{background:#5E35B1!important}.programCell-kids{background:#039BE5!important}.programCell-news{background:#43A047!important}.guide-channelHeaderCell:focus,.programCell:focus{background-color:#555!important}.guide-programTextIcon{color:#1e1e1e;background:#555}.guide-currentTimeIndicatorArrow,.guide-currentTimeIndicatorBar{background-color:#52B54B}.guide-headerTimeslots{color:inherit}.guide-date-tab-button{color:#555;color:rgba(0,0,0,.54)}.guide-date-tab-button.emby-tab-button-active,.guide-date-tab-button:focus{color:#52B54B}.guide-date-tab-button.emby-button-tv:focus{background-color:#52B54B;color:#fff}.itemBackdropFader{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#f2f2f2));background:-webkit-linear-gradient(rgba(0,0,0,0),#f2f2f2);background:-o-linear-gradient(rgba(0,0,0,0),#f2f2f2);background:linear-gradient(rgba(0,0,0,0),#f2f2f2)}@media all and (min-width:62.5em){.detailButton-mobile{background:rgba(0,0,0,.14)!important;backdrop-filter:blur(10px)}}.infoBanner{color:#000;background:#fff3a5;padding:1em;-webkit-border-radius:.25em;border-radius:.25em}.ratingbutton-icon-withrating{color:#c33}.downloadbutton-icon-complete,.downloadbutton-icon-on{color:#4285F4}.playstatebutton-icon-played{color:#c33}.repeatButton-active{color:#4285F4}.card:focus .card-focuscontent{border-color:#52B54B} \ No newline at end of file +.skinHeader,html{color:#222;color:rgba(0,0,0,.87)}.emby-collapsible-button{border-color:#ccc;border-color:rgba(0,0,0,.158)}.collapseContent{background-color:#eaeaea}.skinHeader-withBackground{background-color:#52B54B;-webkit-box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);color:#fff}.osdHeader{-webkit-box-shadow:none!important;box-shadow:none!important}.skinHeader.semiTransparent{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background-color:rgba(0,0,0,.3);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.6)),to(rgba(0,0,0,0)));background:-webkit-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:-o-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0))}.pageTitleWithDefaultLogo{background-image:url(../logowhite.png)}.backgroundContainer,html{background-color:#f2f2f2}.backgroundContainer.withBackdrop{background-color:rgba(255,255,255,.94)}.dialog{background-color:#f0f0f0}.paper-icon-button-light:focus{color:#52B54B;background-color:rgba(82,181,75,.2)}.skinHeader-withBackground .paper-icon-button-light:focus{color:#fff;background-color:rgba(255,255,255,.2)}.skinHeader-withBackground .button-link{color:#fff}.fab,.raised{background:#d8d8d8;color:inherit}.fab:focus,.raised:focus{background:#ccc;color:inherit}.button-submit{background:#52B54B;color:#fff}.button-submit:focus{background:#5EC157;color:#fff}.checkboxLabel{color:inherit}.checkboxListLabel,.inputLabel,.inputLabelUnfocused,.paperListLabel,.textareaLabelUnfocused{color:#555}.button-link,.inputLabelFocused,.selectLabelFocused,.textareaLabelFocused{color:green}.checkboxOutline{border-color:currentColor}.paperList,.visualCardBox{background-color:#fff}.defaultCardBackground1{background-color:#009688}.defaultCardBackground2{background-color:#D32F2F}.defaultCardBackground3{background-color:#0288D1}.defaultCardBackground4{background-color:#388E3C}.defaultCardBackground5{background-color:#F57F17}.formDialogHeader:not(.formDialogHeader-clear){background-color:#52B54B;color:#fff}.formDialogFooter:not(.formDialogFooter-clear){background-color:#f0f0f0;border-top:1px solid #ddd;border-top:1px solid rgba(0,0,0,.08);color:inherit}.cardText-secondary,.fieldDescription,.guide-programNameCaret,.listItem .secondary,.nowPlayingBarSecondaryText,.programSecondaryTitle,.secondaryText{color:#888}.actionsheetDivider{background:#ddd;background:rgba(0,0,0,.14)}.cardFooter-vibrant .cardText-secondary{color:inherit;opacity:.5}.formDialogHeader a,.toast{color:#fff}.actionSheetMenuItem:hover{background-color:#ddd}.toast{background:#303030;color:rgba(255,255,255,.87)}.appfooter{background:#282828;color:#ccc;color:rgba(255,255,255,.78)}@supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)){.appfooter-blurred{background:rgba(24,24,24,.7);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.nowPlayingBarSecondaryText{color:#999}.itemSelectionPanel{border:1px solid #52B54B}.selectionCommandsPanel{background:#52B54B;color:#fff}.upNextDialog-countdownText{color:#52B54B}.alphaPickerButton{color:#555;color:rgba(0,0,0,.7);background-color:transparent}.alphaPickerButton-selected,.alphaPickerButton-tv:focus{background-color:#52B54B;color:#fff!important}.detailTableBodyRow-shaded:nth-child(even){background:#f8f8f8}.listItem-border{border-color:#f0f0f0!important}.listItem:focus{background:#ddd}.progressring-spiner{border-color:#52B54B}.mediaInfoText{color:#333;background:#fff}.mediaInfoTimerIcon,.starIcon{color:#CB272A}.emby-input,.emby-textarea{color:inherit;background:#fff;border:.07em solid rgba(0,0,0,.158);-webkit-border-radius:.15em;border-radius:.15em}.emby-input:focus,.emby-textarea:focus{border-color:#52B54B}.emby-select-withcolor{color:inherit;background:#fff;border:.07em solid rgba(0,0,0,.158)}.emby-checkbox:checked+span+span+.checkboxOutline,.emby-select-withcolor:focus{border-color:#52B54B}.emby-select-withcolor>option{color:#000;background:#fff}.emby-select-tv-withcolor:focus{background-color:#52B54B;color:#fff}.emby-checkbox:focus+span+.emby-checkbox-focushelper{background-color:rgba(82,181,75,.26)}.emby-checkbox:checked+span+span+.checkboxOutline,.itemProgressBarForeground{background-color:#52B54B}.itemProgressBarForeground-recording{background-color:#CB272A}.countIndicator,.fullSyncIndicator,.playedIndicator{background:#52B54B}.fullSyncIndicator{color:#fff}.mainDrawer{background:#fff}.navMenuOption:hover{background:#f2f2f2}.navMenuOption-selected{background:#52B54B!important;color:#fff}.emby-button-focusscale:focus{background:#52B54B;color:#fff}.emby-tab-button{color:#fff;color:rgba(255,255,255,.5)}.emby-tab-button-active,.emby-tab-button-active.emby-button-tv{color:#fff;color:rgba(255,255,255,1)}.emby-tab-button.emby-button-tv:focus{color:#fff;color:rgba(255,255,255,1);background:0 0}.channelPrograms,.guide-channelHeaderCell,.programCell{border-color:rgba(0,0,0,.12)}.programCell-sports{background:#3949AB!important}.programCell-movie{background:#5E35B1!important}.programCell-kids{background:#039BE5!important}.programCell-news{background:#43A047!important}.programCell-active{background:rgba(0,0,0,.1)!important}.guide-channelHeaderCell:focus,.programCell:focus{background-color:#52B54B!important;color:#fff!important}.guide-programTextIcon{color:#1e1e1e;background:#555}.guide-headerTimeslots{color:inherit}.guide-date-tab-button{color:#555;color:rgba(0,0,0,.54)}.guide-date-tab-button.emby-tab-button-active,.guide-date-tab-button:focus{color:#52B54B}.guide-date-tab-button.emby-button-tv:focus{background-color:#52B54B;color:#fff}.itemBackdropFader{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#f2f2f2));background:-webkit-linear-gradient(rgba(0,0,0,0),#f2f2f2);background:-o-linear-gradient(rgba(0,0,0,0),#f2f2f2);background:linear-gradient(rgba(0,0,0,0),#f2f2f2)}.infoBanner{color:#000;background:#fff3a5;padding:1em;-webkit-border-radius:.25em;border-radius:.25em}.ratingbutton-icon-withrating{color:#c33}.downloadbutton-icon-complete,.downloadbutton-icon-on{color:#4285F4}.playstatebutton-icon-played{color:#c33}.repeatButton-active{color:#4285F4}.card:focus .card-focuscontent{border-color:#52B54B} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/themes/light-pink/logo.png b/dashboard-ui/bower_components/emby-webcomponents/themes/light-pink/logo.png deleted file mode 100644 index 7e55e0449d..0000000000 Binary files a/dashboard-ui/bower_components/emby-webcomponents/themes/light-pink/logo.png and /dev/null differ diff --git a/dashboard-ui/bower_components/emby-webcomponents/themes/light-pink/theme.css b/dashboard-ui/bower_components/emby-webcomponents/themes/light-pink/theme.css index bb041a80b0..a8db5e3bba 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/themes/light-pink/theme.css +++ b/dashboard-ui/bower_components/emby-webcomponents/themes/light-pink/theme.css @@ -1 +1 @@ -.skinHeader,html{color:#222;color:rgba(0,0,0,.87)}.emby-collapsible-button{border-color:#ccc;border-color:rgba(0,0,0,.158)}.collapseContent{background-color:#eaeaea}.skinHeader-withBackground{background-color:#E91E63;-webkit-box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);color:#fff}.osdHeader{-webkit-box-shadow:none!important;box-shadow:none!important}.skinHeader.semiTransparent{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background-color:rgba(0,0,0,.3);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.6)),to(rgba(0,0,0,0)));background:-webkit-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:-o-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0))}.pageTitleWithDefaultLogo{background-image:url(logo.png)}.backgroundContainer{background-color:#f2f2f2}.backgroundContainer.withBackdrop{background-color:rgba(255,255,255,.94)}.dialog{background-color:#f0f0f0}.paper-icon-button-light:focus{color:#E91E63}.skinHeader-withBackground .paper-icon-button-light:focus{color:#fff}.fab,.raised{background:#fff;color:inherit}.button-submit{background:#E91E63;color:#fff}.button-cancel{background:#fff;color:inherit}.button-accent{background:#E91E63;color:#fff}.checkboxLabel{color:inherit}.checkboxListLabel,.inputLabel,.inputLabelUnfocused,.paperListLabel,.textareaLabelUnfocused{color:#555;color:rgba(0,0,0,.7)}.button-link,.inputLabelFocused,.selectLabelFocused,.textareaLabelFocused{color:#E91E63}.checkboxOutline{border-color:currentColor}.paperList,.visualCardBox{background-color:#F8BBD0}.formDialogHeader:not(.formDialogHeader-clear){background-color:#E91E63;color:#fff}.formDialogFooter:not(.formDialogFooter-clear){background-color:#f0f0f0;border-top:1px solid rgba(0,0,0,.08);color:inherit}.cardText-secondary,.fieldDescription,.guide-programNameCaret,.listItem .secondary,.nowPlayingBarSecondaryText,.programSecondaryTitle,.secondaryText{color:#888;color:rgba(0,0,0,.54)}.actionsheetDivider{background:#ddd;background:rgba(0,0,0,.14)}.cardFooter-vibrant .cardText-secondary{color:inherit;opacity:.5}.formDialogHeader a,.toast{color:#fff}.actionSheetMenuItem:hover{background-color:#ddd}.toast{background:#303030;color:rgba(255,255,255,.87)}.appfooter{background:#282828;color:#ccc;color:rgba(255,255,255,.78)}@supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)){.appfooter-blurred{background:rgba(24,24,24,.7);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.nowPlayingBarSecondaryText{color:#999}.itemSelectionPanel{border:1px solid #E91E63}.selectionCommandsPanel{background:#E91E63;color:#fff}.upNextDialog-countdownText{color:#E91E63}.alphaPickerButton{color:#555;color:rgba(0,0,0,.7);background-color:transparent}.alphaPickerButton-selected,.alphaPickerButton-tv:focus{background-color:#E91E63;color:#fff!important}.detailTableBodyRow-shaded:nth-child(even),.listItem-shaded:nth-child(even){background:#f8f8f8}.listItem:focus{background:#ddd}.progressring-spiner{border-color:#E91E63}.mediaInfoText{color:#333;background:#fff}.mediaInfoTimerIcon,.starIcon{color:#CB272A}.emby-input,.emby-textarea{color:inherit;background:#fff;border:.07em solid rgba(0,0,0,.158);-webkit-border-radius:.15em;border-radius:.15em}.emby-input:focus,.emby-textarea:focus{border-color:#E91E63}.emby-select-withcolor{color:inherit;background:#fff;border:.07em solid rgba(0,0,0,.158)}.emby-checkbox:checked+span+span+.checkboxOutline,.emby-select-withcolor:focus{border-color:#E91E63}.emby-select-withcolor>option{color:#000;background:#fff}.emby-select-tv-withcolor:focus{background-color:#E91E63;color:#fff}.emby-checkbox:focus+span+.emby-checkbox-focushelper{background-color:rgba(233,30,99,.26)}.emby-checkbox:checked+span+span+.checkboxOutline>.checkboxOutlineTick,.itemProgressBarForeground{background-color:#E91E63}.itemProgressBarForeground-recording{background-color:#CB272A}.countIndicator,.fullSyncIndicator,.playedIndicator{background:#E91E63}.fullSyncIndicator{color:#fff}.mainDrawer{background:#fff}.navMenuDivider{background:#eaeaea;background:rgba(0,0,0,.12)}.navMenuOption:hover{background:#f2f2f2}.navMenuOption-selected{background:#E91E63!important;color:#fff}.emby-tab-button{color:#fff;color:rgba(255,255,255,.5)}.emby-tab-button-active,.emby-tab-button-active.emby-button-tv,.emby-tab-button.emby-button-tv:focus{color:#fff;color:rgba(255,255,255,1)}.channelPrograms,.guide-channelHeaderCell,.programCell{border-color:rgba(0,0,0,.12)}.programCell-sports{background:#3949AB!important}.programCell-movie{background:#5E35B1!important}.programCell-kids{background:#039BE5!important}.programCell-news{background:#43A047!important}.guide-channelHeaderCell:focus,.programCell:focus{background-color:#555!important}.guide-programTextIcon{color:#1e1e1e;background:#555}.guide-currentTimeIndicatorArrow,.guide-currentTimeIndicatorBar{background-color:#E91E63}.guide-headerTimeslots{color:inherit}.guide-date-tab-button{color:#555;color:rgba(0,0,0,.54)}.guide-date-tab-button.emby-tab-button-active,.guide-date-tab-button:focus{color:#E91E63}.guide-date-tab-button.emby-button-tv:focus{background-color:#E91E63;color:#fff}.itemBackdropFader{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#f2f2f2));background:-webkit-linear-gradient(rgba(0,0,0,0),#f2f2f2);background:-o-linear-gradient(rgba(0,0,0,0),#f2f2f2);background:linear-gradient(rgba(0,0,0,0),#f2f2f2)}@media all and (min-width:62.5em){.detailButton-mobile{background:rgba(0,0,0,.14)!important;backdrop-filter:blur(10px)}}.infoBanner{color:#000;background:#fff3a5;padding:1em;-webkit-border-radius:.25em;border-radius:.25em}.ratingbutton-icon-withrating{color:#c33}.downloadbutton-icon-complete,.downloadbutton-icon-on{color:#4285F4}.playstatebutton-icon-played{color:#c33}.repeatButton-active{color:#4285F4}.card:focus .card-focuscontent{border-color:#E91E63} \ No newline at end of file +.skinHeader,html{color:#222;color:rgba(0,0,0,.87)}.emby-collapsible-button{border-color:#ccc;border-color:rgba(0,0,0,.158)}.collapseContent{background-color:#eaeaea}.skinHeader-withBackground{background-color:#E91E63;-webkit-box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);color:#fff}.osdHeader{-webkit-box-shadow:none!important;box-shadow:none!important}.skinHeader.semiTransparent{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background-color:rgba(0,0,0,.3);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.6)),to(rgba(0,0,0,0)));background:-webkit-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:-o-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0))}.pageTitleWithDefaultLogo{background-image:url(../logowhite.png)}.backgroundContainer,html{background-color:#f2f2f2}.backgroundContainer.withBackdrop{background-color:rgba(255,255,255,.94)}.dialog{background-color:#f0f0f0}.paper-icon-button-light:focus{color:#E91E63;background-color:rgba(233,30,99,.2)}.skinHeader-withBackground .paper-icon-button-light:focus{color:#fff;background-color:rgba(255,255,255,.2)}.fab,.raised{background:#d8d8d8;color:inherit}.fab:focus,.raised:focus{background:#ccc;color:inherit}.button-submit{background:#E91E63;color:#fff}.button-submit:focus{background:#F52A6F;color:#fff}.checkboxLabel{color:inherit}.checkboxListLabel,.inputLabel,.inputLabelUnfocused,.paperListLabel,.textareaLabelUnfocused{color:#555;color:rgba(0,0,0,.7)}.button-link,.inputLabelFocused,.selectLabelFocused,.textareaLabelFocused{color:#E91E63}.checkboxOutline{border-color:currentColor}.paperList,.visualCardBox{background-color:#F8BBD0}.defaultCardBackground1{background-color:#009688}.defaultCardBackground2{background-color:#D32F2F}.defaultCardBackground3{background-color:#0288D1}.defaultCardBackground4{background-color:#388E3C}.defaultCardBackground5{background-color:#F57F17}.formDialogHeader:not(.formDialogHeader-clear){background-color:#E91E63;color:#fff}.formDialogFooter:not(.formDialogFooter-clear){background-color:#f0f0f0;border-top:1px solid rgba(0,0,0,.08);color:inherit}.cardText-secondary,.fieldDescription,.guide-programNameCaret,.listItem .secondary,.nowPlayingBarSecondaryText,.programSecondaryTitle,.secondaryText{color:#888;color:rgba(0,0,0,.54)}.actionsheetDivider{background:#ddd;background:rgba(0,0,0,.14)}.cardFooter-vibrant .cardText-secondary{color:inherit;opacity:.5}.formDialogHeader a,.toast{color:#fff}.actionSheetMenuItem:hover{background-color:#ddd}.toast{background:#303030;color:rgba(255,255,255,.87)}.appfooter{background:#282828;color:#ccc;color:rgba(255,255,255,.78)}@supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)){.appfooter-blurred{background:rgba(24,24,24,.7);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.nowPlayingBarSecondaryText{color:#999}.itemSelectionPanel{border:1px solid #E91E63}.selectionCommandsPanel{background:#E91E63;color:#fff}.upNextDialog-countdownText{color:#E91E63}.alphaPickerButton{color:#555;color:rgba(0,0,0,.7);background-color:transparent}.alphaPickerButton-selected,.alphaPickerButton-tv:focus{background-color:#E91E63;color:#fff!important}.detailTableBodyRow-shaded:nth-child(even){background:#f8f8f8}.listItem-border{border-color:#f0f0f0!important}.listItem:focus{background:#ddd}.progressring-spiner{border-color:#E91E63}.mediaInfoText{color:#333;background:#fff}.mediaInfoTimerIcon,.starIcon{color:#CB272A}.emby-input,.emby-textarea{color:inherit;background:#fff;border:.07em solid rgba(0,0,0,.158);-webkit-border-radius:.15em;border-radius:.15em}.emby-input:focus,.emby-textarea:focus{border-color:#E91E63}.emby-select-withcolor{color:inherit;background:#fff;border:.07em solid rgba(0,0,0,.158)}.emby-checkbox:checked+span+span+.checkboxOutline,.emby-select-withcolor:focus{border-color:#E91E63}.emby-select-withcolor>option{color:#000;background:#fff}.emby-select-tv-withcolor:focus{background-color:#E91E63;color:#fff}.emby-checkbox:focus+span+.emby-checkbox-focushelper{background-color:rgba(233,30,99,.26)}.emby-checkbox:checked+span+span+.checkboxOutline,.itemProgressBarForeground{background-color:#E91E63}.itemProgressBarForeground-recording{background-color:#CB272A}.countIndicator,.fullSyncIndicator,.playedIndicator{background:#E91E63}.fullSyncIndicator{color:#fff}.mainDrawer{background:#fff}.navMenuOption:hover{background:#f2f2f2}.navMenuOption-selected{background:#E91E63!important;color:#fff}.emby-button-focusscale:focus{background:#E91E63;color:#fff}.emby-tab-button{color:#fff;color:rgba(255,255,255,.5)}.emby-tab-button-active,.emby-tab-button-active.emby-button-tv{color:#fff;color:rgba(255,255,255,1)}.emby-tab-button.emby-button-tv:focus{color:#fff;color:rgba(255,255,255,1);background:0 0}.channelPrograms,.guide-channelHeaderCell,.programCell{border-color:rgba(0,0,0,.12)}.programCell-sports{background:#3949AB!important}.programCell-movie{background:#5E35B1!important}.programCell-kids{background:#039BE5!important}.programCell-news{background:#43A047!important}.programCell-active{background:rgba(0,0,0,.1)!important}.guide-channelHeaderCell:focus,.programCell:focus{background-color:#E91E63!important;color:#fff!important}.guide-programTextIcon{color:#1e1e1e;background:#555}.guide-headerTimeslots{color:inherit}.guide-date-tab-button{color:#555;color:rgba(0,0,0,.54)}.guide-date-tab-button.emby-tab-button-active,.guide-date-tab-button:focus{color:#E91E63}.guide-date-tab-button.emby-button-tv:focus{background-color:#E91E63;color:#fff}.itemBackdropFader{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#f2f2f2));background:-webkit-linear-gradient(rgba(0,0,0,0),#f2f2f2);background:-o-linear-gradient(rgba(0,0,0,0),#f2f2f2);background:linear-gradient(rgba(0,0,0,0),#f2f2f2)}.infoBanner{color:#000;background:#fff3a5;padding:1em;-webkit-border-radius:.25em;border-radius:.25em}.ratingbutton-icon-withrating{color:#c33}.downloadbutton-icon-complete,.downloadbutton-icon-on{color:#4285F4}.playstatebutton-icon-played{color:#c33}.repeatButton-active{color:#4285F4}.card:focus .card-focuscontent{border-color:#E91E63} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/themes/light-purple/logo.png b/dashboard-ui/bower_components/emby-webcomponents/themes/light-purple/logo.png deleted file mode 100644 index 7e55e0449d..0000000000 Binary files a/dashboard-ui/bower_components/emby-webcomponents/themes/light-purple/logo.png and /dev/null differ diff --git a/dashboard-ui/bower_components/emby-webcomponents/themes/light-purple/theme.css b/dashboard-ui/bower_components/emby-webcomponents/themes/light-purple/theme.css index 00ae19fb88..ba36e58cd4 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/themes/light-purple/theme.css +++ b/dashboard-ui/bower_components/emby-webcomponents/themes/light-purple/theme.css @@ -1 +1 @@ -.skinHeader,html{color:#222;color:rgba(0,0,0,.87)}.emby-collapsible-button{border-color:#ccc;border-color:rgba(0,0,0,.158)}.collapseContent{background-color:#eaeaea}.skinHeader-withBackground{background-color:#673AB7;-webkit-box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);color:#fff}.osdHeader{-webkit-box-shadow:none!important;box-shadow:none!important}.skinHeader.semiTransparent{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background-color:rgba(0,0,0,.3);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.6)),to(rgba(0,0,0,0)));background:-webkit-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:-o-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0))}.pageTitleWithDefaultLogo{background-image:url(logo.png)}.backgroundContainer{background-color:#EDE7F6}.backgroundContainer.withBackdrop{background-color:rgba(237,241,236,.94)}.dialog{background-color:#f0f0f0}.paper-icon-button-light:focus{color:#673AB7}.skinHeader-withBackground .paper-icon-button-light:focus{color:#fff}.fab,.raised{background:#fff;color:inherit}.button-submit{background:#673AB7;color:#fff}.button-cancel{background:#fff;color:inherit}.button-accent{background:#673AB7;color:#fff}.checkboxLabel{color:inherit}.checkboxListLabel,.inputLabel,.inputLabelUnfocused,.paperListLabel,.textareaLabelUnfocused{color:#555;color:rgba(0,0,0,.7)}.button-link,.inputLabelFocused,.selectLabelFocused,.textareaLabelFocused{color:#673AB7}.checkboxOutline{border-color:currentColor}.paperList,.visualCardBox{background-color:#D1C4E9}.formDialogHeader:not(.formDialogHeader-clear){background-color:#673AB7;color:#fff}.formDialogFooter:not(.formDialogFooter-clear){background-color:#f0f0f0;border-top:1px solid #ddd;border-top:1px solid rgba(0,0,0,.08);color:inherit}.cardText-secondary,.fieldDescription,.guide-programNameCaret,.listItem .secondary,.nowPlayingBarSecondaryText,.programSecondaryTitle,.secondaryText{color:#888;color:rgba(0,0,0,.54)}.actionsheetDivider{background:#ddd;background:rgba(0,0,0,.14)}.listItem:focus{background:#ddd}.cardFooter-vibrant .cardText-secondary{color:inherit;opacity:.5}.formDialogHeader a,.toast{color:#fff}.actionSheetMenuItem:hover{background-color:#ddd}.toast{background:#303030;color:rgba(255,255,255,.87)}.appfooter{background:#282828;color:#ccc;color:rgba(255,255,255,.78)}@supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)){.appfooter-blurred{background:rgba(24,24,24,.7);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.nowPlayingBarSecondaryText{color:#999}.itemSelectionPanel{border:1px solid #673AB7}.selectionCommandsPanel{background:#673AB7;color:#fff}.upNextDialog-countdownText{color:#673AB7}.alphaPickerButton{color:#555;color:rgba(0,0,0,.7);background-color:transparent}.alphaPickerButton-selected,.alphaPickerButton-tv:focus{background-color:#673AB7;color:#fff!important}.detailTableBodyRow-shaded:nth-child(even),.listItem-shaded:nth-child(even){background:#f8f8f8}.progressring-spiner{border-color:#673AB7}.mediaInfoText{color:#333;background:#fff}.mediaInfoTimerIcon,.starIcon{color:#CB272A}.emby-input,.emby-textarea{color:inherit;background:#fff;border:.07em solid rgba(0,0,0,.158);-webkit-border-radius:.15em;border-radius:.15em}.emby-input:focus,.emby-textarea:focus{border-color:#673AB7}.emby-select-withcolor{color:inherit;background:#fff;border:.07em solid rgba(0,0,0,.158)}.emby-checkbox:checked+span+span+.checkboxOutline,.emby-select-withcolor:focus{border-color:#673AB7}.emby-select-withcolor>option{color:#000;background:#fff}.emby-select-tv-withcolor:focus{background-color:#673AB7;color:#fff}.emby-checkbox:focus+span+.emby-checkbox-focushelper{background-color:rgba(103,58,183,.26)}.emby-checkbox:checked+span+span+.checkboxOutline>.checkboxOutlineTick,.itemProgressBarForeground{background-color:#673AB7}.itemProgressBarForeground-recording{background-color:#CB272A}.countIndicator,.fullSyncIndicator,.playedIndicator{background:#673AB7}.fullSyncIndicator{color:#fff}.mainDrawer{background:#fff}.navMenuDivider{background:#eaeaea;background:rgba(0,0,0,.12)}.navMenuOption:hover{background:#f2f2f2}.navMenuOption-selected{background:#673AB7!important;color:#fff}.emby-tab-button{color:#fff;color:rgba(255,255,255,.54)}.emby-tab-button-active,.emby-tab-button-active.emby-button-tv,.emby-tab-button.emby-button-tv:focus{color:#fff;color:rgba(255,255,255,1)}.channelPrograms,.guide-channelHeaderCell,.programCell{border-color:rgba(0,0,0,.12)}.programCell-sports{background:#3949AB!important}.programCell-movie{background:#5E35B1!important}.programCell-kids{background:#039BE5!important}.programCell-news{background:#43A047!important}.guide-channelHeaderCell:focus,.programCell:focus{background-color:#555!important}.guide-programTextIcon{color:#1e1e1e;background:#555}.guide-currentTimeIndicatorArrow,.guide-currentTimeIndicatorBar{background-color:#673AB7}.guide-headerTimeslots{color:inherit}.guide-date-tab-button{color:#555;color:rgba(0,0,0,.54)}.guide-date-tab-button.emby-tab-button-active,.guide-date-tab-button:focus{color:#673AB7}.guide-date-tab-button.emby-button-tv:focus{background-color:#673AB7;color:#fff}.itemBackdropFader{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#EDE7F6));background:-webkit-linear-gradient(rgba(0,0,0,0),#EDE7F6);background:-o-linear-gradient(rgba(0,0,0,0),#EDE7F6);background:linear-gradient(rgba(0,0,0,0),#EDE7F6)}@media all and (min-width:62.5em){.detailButton-mobile{background:rgba(0,0,0,.14)!important;backdrop-filter:blur(10px)}}.infoBanner{color:#000;background:#fff3a5;padding:1em;-webkit-border-radius:.25em;border-radius:.25em}.ratingbutton-icon-withrating{color:#c33}.downloadbutton-icon-complete,.downloadbutton-icon-on{color:#4285F4}.playstatebutton-icon-played{color:#c33}.repeatButton-active{color:#4285F4}.card:focus .card-focuscontent{border-color:#673AB7} \ No newline at end of file +.skinHeader,html{color:#222;color:rgba(0,0,0,.87)}.emby-collapsible-button{border-color:#ccc;border-color:rgba(0,0,0,.158)}.collapseContent{background-color:#eaeaea}.skinHeader-withBackground{background-color:#673AB7;-webkit-box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);color:#fff}.osdHeader{-webkit-box-shadow:none!important;box-shadow:none!important}.skinHeader.semiTransparent{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background-color:rgba(0,0,0,.3);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.6)),to(rgba(0,0,0,0)));background:-webkit-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:-o-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0))}.pageTitleWithDefaultLogo{background-image:url(../logowhite.png)}.backgroundContainer,html{background-color:#EDE7F6}.backgroundContainer.withBackdrop{background-color:rgba(237,241,236,.94)}.dialog{background-color:#f0f0f0}.paper-icon-button-light:focus{color:#673AB7;background-color:rgba(103,58,183,.2)}.skinHeader-withBackground .paper-icon-button-light:focus{color:#fff;background-color:rgba(255,255,255,.2)}.fab,.raised{background:#d8d8d8;color:inherit}.fab:focus,.raised:focus{background:#ccc;color:inherit}.button-submit{background:#673AB7;color:#fff}.button-submit:focus{background:#7346C3;color:#fff}.checkboxLabel{color:inherit}.checkboxListLabel,.inputLabel,.inputLabelUnfocused,.paperListLabel,.textareaLabelUnfocused{color:#555;color:rgba(0,0,0,.7)}.button-link,.inputLabelFocused,.selectLabelFocused,.textareaLabelFocused{color:#673AB7}.checkboxOutline{border-color:currentColor}.paperList,.visualCardBox{background-color:#D1C4E9}.defaultCardBackground1{background-color:#009688}.defaultCardBackground2{background-color:#D32F2F}.defaultCardBackground3{background-color:#0288D1}.defaultCardBackground4{background-color:#388E3C}.defaultCardBackground5{background-color:#F57F17}.formDialogHeader:not(.formDialogHeader-clear){background-color:#673AB7;color:#fff}.formDialogFooter:not(.formDialogFooter-clear){background-color:#f0f0f0;border-top:1px solid #ddd;border-top:1px solid rgba(0,0,0,.08);color:inherit}.cardText-secondary,.fieldDescription,.guide-programNameCaret,.listItem .secondary,.nowPlayingBarSecondaryText,.programSecondaryTitle,.secondaryText{color:#888;color:rgba(0,0,0,.54)}.actionsheetDivider{background:#ddd;background:rgba(0,0,0,.14)}.listItem:focus{background:#ddd}.cardFooter-vibrant .cardText-secondary{color:inherit;opacity:.5}.formDialogHeader a,.toast{color:#fff}.actionSheetMenuItem:hover{background-color:#ddd}.toast{background:#303030;color:rgba(255,255,255,.87)}.appfooter{background:#282828;color:#ccc;color:rgba(255,255,255,.78)}@supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)){.appfooter-blurred{background:rgba(24,24,24,.7);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.nowPlayingBarSecondaryText{color:#999}.itemSelectionPanel{border:1px solid #673AB7}.selectionCommandsPanel{background:#673AB7;color:#fff}.upNextDialog-countdownText{color:#673AB7}.alphaPickerButton{color:#555;color:rgba(0,0,0,.7);background-color:transparent}.alphaPickerButton-selected,.alphaPickerButton-tv:focus{background-color:#673AB7;color:#fff!important}.detailTableBodyRow-shaded:nth-child(even){background:#f8f8f8}.listItem-border{border-color:#f0f0f0!important}.progressring-spiner{border-color:#673AB7}.mediaInfoText{color:#333;background:#fff}.mediaInfoTimerIcon,.starIcon{color:#CB272A}.emby-input,.emby-textarea{color:inherit;background:#fff;border:.07em solid rgba(0,0,0,.158);-webkit-border-radius:.15em;border-radius:.15em}.emby-input:focus,.emby-textarea:focus{border-color:#673AB7}.emby-select-withcolor{color:inherit;background:#fff;border:.07em solid rgba(0,0,0,.158)}.emby-checkbox:checked+span+span+.checkboxOutline,.emby-select-withcolor:focus{border-color:#673AB7}.emby-select-withcolor>option{color:#000;background:#fff}.emby-select-tv-withcolor:focus{background-color:#673AB7;color:#fff}.emby-checkbox:focus+span+.emby-checkbox-focushelper{background-color:rgba(103,58,183,.26)}.emby-checkbox:checked+span+span+.checkboxOutline,.itemProgressBarForeground{background-color:#673AB7}.itemProgressBarForeground-recording{background-color:#CB272A}.countIndicator,.fullSyncIndicator,.playedIndicator{background:#673AB7}.fullSyncIndicator{color:#fff}.mainDrawer{background:#fff}.navMenuOption:hover{background:#f2f2f2}.navMenuOption-selected{background:#673AB7!important;color:#fff}.emby-button-focusscale:focus{background:#673AB7;color:#fff}.emby-tab-button{color:#fff;color:rgba(255,255,255,.54)}.emby-tab-button-active,.emby-tab-button-active.emby-button-tv{color:#fff;color:rgba(255,255,255,1)}.emby-tab-button.emby-button-tv:focus{color:#fff;color:rgba(255,255,255,1);background:0 0}.channelPrograms,.guide-channelHeaderCell,.programCell{border-color:rgba(0,0,0,.12)}.programCell-sports{background:#3949AB!important}.programCell-movie{background:#5E35B1!important}.programCell-kids{background:#039BE5!important}.programCell-news{background:#43A047!important}.programCell-active{background:rgba(0,0,0,.1)!important}.guide-channelHeaderCell:focus,.programCell:focus{background-color:#673AB7!important;color:#fff!important}.guide-programTextIcon{color:#1e1e1e;background:#555}.guide-headerTimeslots{color:inherit}.guide-date-tab-button{color:#555;color:rgba(0,0,0,.54)}.guide-date-tab-button.emby-tab-button-active,.guide-date-tab-button:focus{color:#673AB7}.guide-date-tab-button.emby-button-tv:focus{background-color:#673AB7;color:#fff}.itemBackdropFader{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#EDE7F6));background:-webkit-linear-gradient(rgba(0,0,0,0),#EDE7F6);background:-o-linear-gradient(rgba(0,0,0,0),#EDE7F6);background:linear-gradient(rgba(0,0,0,0),#EDE7F6)}.infoBanner{color:#000;background:#fff3a5;padding:1em;-webkit-border-radius:.25em;border-radius:.25em}.ratingbutton-icon-withrating{color:#c33}.downloadbutton-icon-complete,.downloadbutton-icon-on{color:#4285F4}.playstatebutton-icon-played{color:#c33}.repeatButton-active{color:#4285F4}.card:focus .card-focuscontent{border-color:#673AB7} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/themes/light-red/logo.png b/dashboard-ui/bower_components/emby-webcomponents/themes/light-red/logo.png deleted file mode 100644 index 7e55e0449d..0000000000 Binary files a/dashboard-ui/bower_components/emby-webcomponents/themes/light-red/logo.png and /dev/null differ diff --git a/dashboard-ui/bower_components/emby-webcomponents/themes/light-red/theme.css b/dashboard-ui/bower_components/emby-webcomponents/themes/light-red/theme.css index a43e597f8e..b3824a9d11 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/themes/light-red/theme.css +++ b/dashboard-ui/bower_components/emby-webcomponents/themes/light-red/theme.css @@ -1 +1 @@ -.skinHeader,html{color:#222;color:rgba(0,0,0,.87)}.emby-collapsible-button{border-color:#ccc;border-color:rgba(0,0,0,.158)}.collapseContent{background-color:#eaeaea}.skinHeader-withBackground{background-color:#c33;-webkit-box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);color:#fff}.osdHeader{-webkit-box-shadow:none!important;box-shadow:none!important}.skinHeader.semiTransparent{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background-color:rgba(0,0,0,.3);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.6)),to(rgba(0,0,0,0)));background:-webkit-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:-o-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0))}.pageTitleWithDefaultLogo{background-image:url(logo.png)}.backgroundContainer{background-color:#f2f2f2}.backgroundContainer.withBackdrop{background-color:rgba(255,255,255,.94)}.dialog{background-color:#f0f0f0}.paper-icon-button-light:focus{color:#c33}.skinHeader-withBackground .paper-icon-button-light:focus{color:#fff}.fab,.raised{background:#fff;color:inherit}.button-submit{background:#c33;color:#fff}.button-cancel{background:#fff;color:inherit}.button-accent{background:#c33;color:#fff}.checkboxLabel{color:inherit}.checkboxListLabel,.inputLabel,.inputLabelUnfocused,.paperListLabel,.textareaLabelUnfocused{color:#555}.button-link,.inputLabelFocused,.selectLabelFocused,.textareaLabelFocused{color:#c33}.checkboxOutline{border-color:currentColor}.paperList,.visualCardBox{background-color:#fff}.formDialogHeader:not(.formDialogHeader-clear){background-color:#c33;color:#fff}.formDialogFooter:not(.formDialogFooter-clear){background-color:#f0f0f0;border-top:1px solid #ddd;border-top:1px solid rgba(0,0,0,.08);color:inherit}.cardText-secondary,.fieldDescription,.guide-programNameCaret,.listItem .secondary,.nowPlayingBarSecondaryText,.programSecondaryTitle,.secondaryText{color:#888}.actionsheetDivider{background:#ddd;background:rgba(0,0,0,.14)}.cardFooter-vibrant .cardText-secondary{color:inherit;opacity:.5}.formDialogHeader a,.toast{color:#fff}.actionSheetMenuItem:hover{background-color:#ddd}.toast{background:#303030;color:rgba(255,255,255,.87)}.appfooter{background:#282828;color:#ccc;color:rgba(255,255,255,.78)}@supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)){.appfooter-blurred{background:rgba(24,24,24,.7);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.nowPlayingBarSecondaryText{color:#999}.itemSelectionPanel{border:1px solid #c33}.selectionCommandsPanel{background:#c33;color:#fff}.upNextDialog-countdownText{color:#c33}.alphaPickerButton{color:#555;color:rgba(0,0,0,.7);background-color:transparent}.alphaPickerButton-selected,.alphaPickerButton-tv:focus{background-color:#c33;color:#fff!important}.detailTableBodyRow-shaded:nth-child(even),.listItem-shaded:nth-child(even){background:#f8f8f8}.listItem:focus{background:#ddd}.progressring-spiner{border-color:#c33}.mediaInfoText{color:#333;background:#fff}.mediaInfoTimerIcon,.starIcon{color:#CB272A}.emby-input,.emby-textarea{color:inherit;background:#fff;border:.07em solid rgba(0,0,0,.158);-webkit-border-radius:.15em;border-radius:.15em}.emby-input:focus,.emby-textarea:focus{border-color:#c33}.emby-select-withcolor{color:inherit;background:#fff;border:.07em solid rgba(0,0,0,.158)}.emby-checkbox:checked+span+span+.checkboxOutline,.emby-select-withcolor:focus{border-color:#c33}.emby-select-withcolor>option{color:#000;background:#fff}.emby-select-tv-withcolor:focus{background-color:#c33;color:#fff}.emby-checkbox:focus+span+.emby-checkbox-focushelper{background-color:rgba(204,51,51,.26)}.emby-checkbox:checked+span+span+.checkboxOutline>.checkboxOutlineTick,.itemProgressBarForeground{background-color:#c33}.itemProgressBarForeground-recording{background-color:#CB272A}.countIndicator,.playedIndicator{background:#c33}.fullSyncIndicator{background:#c33;color:#fff}.mainDrawer{background:#fff}.navMenuDivider{background:#eaeaea;background:rgba(0,0,0,.12)}.navMenuOption:hover{background:#f2f2f2}.navMenuOption-selected{background:#c33!important;color:#fff}.emby-tab-button{color:#fff;color:rgba(255,255,255,.5)}.emby-tab-button-active,.emby-tab-button-active.emby-button-tv,.emby-tab-button.emby-button-tv:focus{color:#fff;color:rgba(255,255,255,1)}.channelPrograms,.guide-channelHeaderCell,.programCell{border-color:rgba(0,0,0,.12)}.programCell-sports{background:#3949AB!important}.programCell-movie{background:#5E35B1!important}.programCell-kids{background:#039BE5!important}.programCell-news{background:#43A047!important}.guide-channelHeaderCell:focus,.programCell:focus{background-color:#555!important}.guide-programTextIcon{color:#1e1e1e;background:#555}.guide-currentTimeIndicatorArrow,.guide-currentTimeIndicatorBar{background-color:#52B54B}.guide-headerTimeslots{color:inherit}.guide-date-tab-button{color:#555;color:rgba(0,0,0,.54)}.guide-date-tab-button.emby-tab-button-active,.guide-date-tab-button:focus{color:#52B54B}.guide-date-tab-button.emby-button-tv:focus{background-color:#52B54B;color:#fff}.itemBackdropFader{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#f2f2f2));background:-webkit-linear-gradient(rgba(0,0,0,0),#f2f2f2);background:-o-linear-gradient(rgba(0,0,0,0),#f2f2f2);background:linear-gradient(rgba(0,0,0,0),#f2f2f2)}@media all and (min-width:62.5em){.detailButton-mobile{background:rgba(0,0,0,.14)!important;backdrop-filter:blur(10px)}}.infoBanner{color:#000;background:#fff3a5;padding:1em;-webkit-border-radius:.25em;border-radius:.25em}.ratingbutton-icon-withrating{color:#c33}.downloadbutton-icon-complete,.downloadbutton-icon-on{color:#4285F4}.playstatebutton-icon-played{color:#c33}.repeatButton-active{color:#4285F4}.card:focus .card-focuscontent{border-color:#c33} \ No newline at end of file +.skinHeader,html{color:#222;color:rgba(0,0,0,.87)}.emby-collapsible-button{border-color:#ccc;border-color:rgba(0,0,0,.158)}.collapseContent{background-color:#eaeaea}.skinHeader-withBackground{background-color:#c33;-webkit-box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);color:#fff}.osdHeader{-webkit-box-shadow:none!important;box-shadow:none!important}.skinHeader.semiTransparent{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background-color:rgba(0,0,0,.3);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.6)),to(rgba(0,0,0,0)));background:-webkit-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:-o-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0))}.pageTitleWithDefaultLogo{background-image:url(../logowhite.png)}.backgroundContainer,html{background-color:#f2f2f2}.backgroundContainer.withBackdrop{background-color:rgba(255,255,255,.94)}.dialog{background-color:#f0f0f0}.paper-icon-button-light:focus{color:#c33;background-color:rgba(204,51,51,.2)}.skinHeader-withBackground .paper-icon-button-light:focus{color:#fff;background-color:rgba(255,255,255,.2)}.fab,.raised{background:#d8d8d8;color:inherit}.fab:focus,.raised:focus{background:#ccc;color:inherit}.button-submit{background:#c33;color:#fff}.button-submit:focus{background:#D83F3F;color:#fff}.checkboxLabel{color:inherit}.checkboxListLabel,.inputLabel,.inputLabelUnfocused,.paperListLabel,.textareaLabelUnfocused{color:#555}.button-link,.inputLabelFocused,.selectLabelFocused,.textareaLabelFocused{color:#c33}.checkboxOutline{border-color:currentColor}.paperList,.visualCardBox{background-color:#fff}.defaultCardBackground1{background-color:#009688}.defaultCardBackground2{background-color:#D32F2F}.defaultCardBackground3{background-color:#0288D1}.defaultCardBackground4{background-color:#388E3C}.defaultCardBackground5{background-color:#F57F17}.formDialogHeader:not(.formDialogHeader-clear){background-color:#c33;color:#fff}.formDialogFooter:not(.formDialogFooter-clear){background-color:#f0f0f0;border-top:1px solid #ddd;border-top:1px solid rgba(0,0,0,.08);color:inherit}.cardText-secondary,.fieldDescription,.guide-programNameCaret,.listItem .secondary,.nowPlayingBarSecondaryText,.programSecondaryTitle,.secondaryText{color:#888}.actionsheetDivider{background:#ddd;background:rgba(0,0,0,.14)}.cardFooter-vibrant .cardText-secondary{color:inherit;opacity:.5}.formDialogHeader a,.toast{color:#fff}.actionSheetMenuItem:hover{background-color:#ddd}.toast{background:#303030;color:rgba(255,255,255,.87)}.appfooter{background:#282828;color:#ccc;color:rgba(255,255,255,.78)}@supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)){.appfooter-blurred{background:rgba(24,24,24,.7);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.nowPlayingBarSecondaryText{color:#999}.itemSelectionPanel{border:1px solid #c33}.selectionCommandsPanel{background:#c33;color:#fff}.upNextDialog-countdownText{color:#c33}.alphaPickerButton{color:#555;color:rgba(0,0,0,.7);background-color:transparent}.alphaPickerButton-selected,.alphaPickerButton-tv:focus{background-color:#c33;color:#fff!important}.detailTableBodyRow-shaded:nth-child(even){background:#f8f8f8}.listItem-border{border-color:#f0f0f0!important}.listItem:focus{background:#ddd}.progressring-spiner{border-color:#c33}.mediaInfoText{color:#333;background:#fff}.mediaInfoTimerIcon,.starIcon{color:#CB272A}.emby-input,.emby-textarea{color:inherit;background:#fff;border:.07em solid rgba(0,0,0,.158);-webkit-border-radius:.15em;border-radius:.15em}.emby-input:focus,.emby-textarea:focus{border-color:#c33}.emby-select-withcolor{color:inherit;background:#fff;border:.07em solid rgba(0,0,0,.158)}.emby-checkbox:checked+span+span+.checkboxOutline,.emby-select-withcolor:focus{border-color:#c33}.emby-select-withcolor>option{color:#000;background:#fff}.emby-select-tv-withcolor:focus{background-color:#c33;color:#fff}.emby-checkbox:focus+span+.emby-checkbox-focushelper{background-color:rgba(204,51,51,.26)}.emby-checkbox:checked+span+span+.checkboxOutline,.itemProgressBarForeground{background-color:#c33}.itemProgressBarForeground-recording{background-color:#CB272A}.countIndicator,.playedIndicator{background:#c33}.fullSyncIndicator{background:#c33;color:#fff}.mainDrawer{background:#fff}.navMenuOption:hover{background:#f2f2f2}.navMenuOption-selected{background:#c33!important;color:#fff}.emby-button-focusscale:focus{background:#c33;color:#fff}.emby-tab-button{color:#fff;color:rgba(255,255,255,.5)}.emby-tab-button-active,.emby-tab-button-active.emby-button-tv{color:#fff;color:rgba(255,255,255,1)}.emby-tab-button.emby-button-tv:focus{color:#fff;color:rgba(255,255,255,1);background:0 0}.channelPrograms,.guide-channelHeaderCell,.programCell{border-color:rgba(0,0,0,.12)}.programCell-sports{background:#3949AB!important}.programCell-movie{background:#5E35B1!important}.programCell-kids{background:#039BE5!important}.programCell-news{background:#43A047!important}.programCell-active{background:rgba(0,0,0,.1)!important}.guide-channelHeaderCell:focus,.programCell:focus{background-color:#c33!important;color:#fff!important}.guide-programTextIcon{color:#1e1e1e;background:#555}.guide-headerTimeslots{color:inherit}.guide-date-tab-button{color:#555;color:rgba(0,0,0,.54)}.guide-date-tab-button.emby-tab-button-active,.guide-date-tab-button:focus{color:#52B54B}.guide-date-tab-button.emby-button-tv:focus{background-color:#52B54B;color:#fff}.itemBackdropFader{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#f2f2f2));background:-webkit-linear-gradient(rgba(0,0,0,0),#f2f2f2);background:-o-linear-gradient(rgba(0,0,0,0),#f2f2f2);background:linear-gradient(rgba(0,0,0,0),#f2f2f2)}.infoBanner{color:#000;background:#fff3a5;padding:1em;-webkit-border-radius:.25em;border-radius:.25em}.ratingbutton-icon-withrating{color:#c33}.downloadbutton-icon-complete,.downloadbutton-icon-on{color:#4285F4}.playstatebutton-icon-played{color:#c33}.repeatButton-active{color:#4285F4}.card:focus .card-focuscontent{border-color:#c33} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/themes/light/logo.png b/dashboard-ui/bower_components/emby-webcomponents/themes/light/logo.png deleted file mode 100644 index 7e55e0449d..0000000000 Binary files a/dashboard-ui/bower_components/emby-webcomponents/themes/light/logo.png and /dev/null differ diff --git a/dashboard-ui/bower_components/emby-webcomponents/themes/light/theme.css b/dashboard-ui/bower_components/emby-webcomponents/themes/light/theme.css index 6063ebcf2a..36bec4b922 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/themes/light/theme.css +++ b/dashboard-ui/bower_components/emby-webcomponents/themes/light/theme.css @@ -1 +1 @@ -.skinHeader,html{color:#222;color:rgba(0,0,0,.87)}.emby-collapsible-button{border-color:#ccc;border-color:rgba(0,0,0,.158)}.collapseContent{background-color:#eaeaea}.skinHeader-withBackground{background-color:#303030;color:#ccc;color:rgba(255,255,255,.87);-webkit-box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37)}.osdHeader{-webkit-box-shadow:none!important;box-shadow:none!important}.skinHeader.semiTransparent{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background-color:rgba(0,0,0,.3);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.6)),to(rgba(0,0,0,0)));background:-webkit-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:-o-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0))}.pageTitleWithDefaultLogo{background-image:url(logo.png)}.backgroundContainer{background-color:#f2f2f2}.backgroundContainer.withBackdrop{background-color:rgba(255,255,255,.94)}.dialog{background-color:#f0f0f0}.paper-icon-button-light:focus{color:#52B54B}.fab,.raised{background:#fff;color:inherit}.button-submit{background:#52B54B;color:#fff}.button-cancel{background:#fff;color:inherit}.button-accent{background:#52B54B;color:#fff}.checkboxLabel{color:inherit}.checkboxListLabel,.inputLabel,.inputLabelUnfocused,.paperListLabel,.textareaLabelUnfocused{color:#555}.button-link,.inputLabelFocused,.selectLabelFocused,.textareaLabelFocused{color:green}.checkboxOutline{border-color:currentColor}.paperList,.visualCardBox{background-color:#fff}.formDialogHeader:not(.formDialogHeader-clear){background-color:#52B54B;color:#fff}.formDialogFooter:not(.formDialogFooter-clear){background-color:#f0f0f0;border-top:1px solid #ddd;border-top:1px solid rgba(0,0,0,.08);color:inherit}.cardText-secondary,.fieldDescription,.guide-programNameCaret,.listItem .secondary,.nowPlayingBarSecondaryText,.programSecondaryTitle,.secondaryText{color:#888}.actionsheetDivider{background:#ddd;background:rgba(0,0,0,.14)}.cardFooter-vibrant .cardText-secondary{color:inherit;opacity:.5}.formDialogHeader a,.toast{color:#fff}.actionSheetMenuItem:hover{background-color:#ddd}.toast{background:#303030;color:rgba(255,255,255,.87)}.appfooter{background:#282828;color:#ccc;color:rgba(255,255,255,.78)}@supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)){.appfooter-blurred{background:rgba(24,24,24,.7);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.nowPlayingBarSecondaryText{color:#999}.itemSelectionPanel{border:1px solid #52B54B}.selectionCommandsPanel{background:#52B54B;color:#fff}.upNextDialog-countdownText{color:#52B54B}.alphaPickerButton{color:#555;color:rgba(0,0,0,.7);background-color:transparent}.alphaPickerButton-selected,.alphaPickerButton-tv:focus{background-color:#52B54B;color:#fff!important}.detailTableBodyRow-shaded:nth-child(even),.listItem-shaded:nth-child(even){background:#f8f8f8}.listItem:focus{background:#ddd}.progressring-spiner{border-color:#52B54B}.mediaInfoText{color:#333;background:#fff}.mediaInfoTimerIcon,.starIcon{color:#CB272A}.emby-input,.emby-textarea{color:inherit;background:#fff;border:.07em solid rgba(0,0,0,.158);-webkit-border-radius:.15em;border-radius:.15em}.emby-input:focus,.emby-textarea:focus{border-color:#52B54B}.emby-select-withcolor{color:inherit;background:#fff;border:.07em solid rgba(0,0,0,.158)}.emby-checkbox:checked+span+span+.checkboxOutline,.emby-select-withcolor:focus{border-color:#52B54B}.emby-select-withcolor>option{color:#000;background:#fff}.emby-select-tv-withcolor:focus{background-color:#52B54B;color:#fff}.emby-checkbox:focus+span+.emby-checkbox-focushelper{background-color:rgba(82,181,75,.26)}.emby-checkbox:checked+span+span+.checkboxOutline>.checkboxOutlineTick,.itemProgressBarForeground{background-color:#52B54B}.itemProgressBarForeground-recording{background-color:#CB272A}.countIndicator,.fullSyncIndicator,.playedIndicator{background:#52B54B}.fullSyncIndicator{color:#fff}.mainDrawer{background:#fff}.navMenuDivider{background:#eaeaea;background:rgba(0,0,0,.12)}.navMenuOption:hover{background:#f2f2f2}.navMenuOption-selected{background:#52B54B!important;color:#fff}.emby-tab-button{color:#999;color:rgba(255,255,255,.5)}.emby-tab-button-active{color:#52B54B}.emby-tab-button-active.emby-button-tv{color:#fff}.emby-tab-button.emby-button-tv:focus{color:#52B54B}.channelPrograms,.guide-channelHeaderCell,.programCell{border-color:rgba(0,0,0,.12)}.programCell-sports{background:#3949AB!important}.programCell-movie{background:#5E35B1!important}.programCell-kids{background:#039BE5!important}.programCell-news{background:#43A047!important}.guide-channelHeaderCell:focus,.programCell:focus{background-color:#555!important}.guide-programTextIcon{color:#1e1e1e;background:#555}.guide-currentTimeIndicatorArrow,.guide-currentTimeIndicatorBar{background-color:#52B54B}.guide-headerTimeslots{color:inherit}.guide-date-tab-button{color:#555;color:rgba(0,0,0,.54)}.guide-date-tab-button.emby-tab-button-active,.guide-date-tab-button:focus{color:#52B54B}.guide-date-tab-button.emby-button-tv:focus{background-color:#52B54B;color:#fff}.itemBackdropFader{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#f2f2f2));background:-webkit-linear-gradient(rgba(0,0,0,0),#f2f2f2);background:-o-linear-gradient(rgba(0,0,0,0),#f2f2f2);background:linear-gradient(rgba(0,0,0,0),#f2f2f2)}@media all and (min-width:62.5em){.detailButton-mobile{background:rgba(0,0,0,.14)!important;backdrop-filter:blur(10px)}}.infoBanner{color:#000;background:#fff3a5;padding:1em;-webkit-border-radius:.25em;border-radius:.25em}.ratingbutton-icon-withrating{color:#c33}.downloadbutton-icon-complete,.downloadbutton-icon-on{color:#4285F4}.playstatebutton-icon-played{color:#c33}.repeatButton-active{color:#4285F4}.card:focus .card-focuscontent{border-color:#52B54B} \ No newline at end of file +.skinHeader,html{color:#222;color:rgba(0,0,0,.87)}.emby-collapsible-button{border-color:#ccc;border-color:rgba(0,0,0,.158)}.collapseContent{background-color:#eaeaea}.skinHeader-withBackground{background-color:#303030;color:#ccc;color:rgba(255,255,255,.87);-webkit-box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37)}.osdHeader{-webkit-box-shadow:none!important;box-shadow:none!important}.skinHeader.semiTransparent{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background-color:rgba(0,0,0,.3);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.6)),to(rgba(0,0,0,0)));background:-webkit-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:-o-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0))}.pageTitleWithDefaultLogo{background-image:url(../logowhite.png)}.backgroundContainer,html{background-color:#f2f2f2}.backgroundContainer.withBackdrop{background-color:rgba(255,255,255,.94)}.dialog{background-color:#f0f0f0}.paper-icon-button-light:focus{color:#52B54B;background-color:rgba(82,181,75,.2)}.fab,.raised{background:#d8d8d8;color:inherit}.fab:focus,.raised:focus{background:#ccc}.button-submit{background:#52B54B;color:#fff}.button-submit:focus{background:#5EC157}.checkboxLabel{color:inherit}.checkboxListLabel,.inputLabel,.inputLabelUnfocused,.paperListLabel,.textareaLabelUnfocused{color:#555}.button-link,.inputLabelFocused,.selectLabelFocused,.textareaLabelFocused{color:green}.checkboxOutline{border-color:currentColor}.paperList,.visualCardBox{background-color:#fff}.defaultCardBackground1{background-color:#009688}.defaultCardBackground2{background-color:#D32F2F}.defaultCardBackground3{background-color:#0288D1}.defaultCardBackground4{background-color:#388E3C}.defaultCardBackground5{background-color:#F57F17}.formDialogHeader:not(.formDialogHeader-clear){background-color:#52B54B;color:#fff}.formDialogFooter:not(.formDialogFooter-clear){background-color:#f0f0f0;border-top:1px solid #ddd;border-top:1px solid rgba(0,0,0,.08);color:inherit}.cardText-secondary,.fieldDescription,.guide-programNameCaret,.listItem .secondary,.nowPlayingBarSecondaryText,.programSecondaryTitle,.secondaryText{color:#888}.actionsheetDivider{background:#ddd;background:rgba(0,0,0,.14)}.cardFooter-vibrant .cardText-secondary{color:inherit;opacity:.5}.formDialogHeader a,.toast{color:#fff}.actionSheetMenuItem:hover{background-color:#ddd}.toast{background:#303030;color:rgba(255,255,255,.87)}.appfooter{background:#282828;color:#ccc;color:rgba(255,255,255,.78)}@supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)){.appfooter-blurred{background:rgba(24,24,24,.7);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.nowPlayingBarSecondaryText{color:#999}.itemSelectionPanel{border:1px solid #52B54B}.selectionCommandsPanel{background:#52B54B;color:#fff}.upNextDialog-countdownText{color:#52B54B}.alphaPickerButton{color:#555;color:rgba(0,0,0,.7);background-color:transparent}.alphaPickerButton-selected,.alphaPickerButton-tv:focus{background-color:#52B54B;color:#fff!important}.detailTableBodyRow-shaded:nth-child(even){background:#f8f8f8}.listItem-border{border-color:#f0f0f0!important}.listItem:focus{background:#ddd}.progressring-spiner{border-color:#52B54B}.mediaInfoText{color:#333;background:#fff}.mediaInfoTimerIcon,.starIcon{color:#CB272A}.emby-input,.emby-textarea{color:inherit;background:#fff;border:.07em solid rgba(0,0,0,.158);-webkit-border-radius:.15em;border-radius:.15em}.emby-input:focus,.emby-textarea:focus{border-color:#52B54B}.emby-select-withcolor{color:inherit;background:#fff;border:.07em solid rgba(0,0,0,.158)}.emby-checkbox:checked+span+span+.checkboxOutline,.emby-select-withcolor:focus{border-color:#52B54B}.emby-select-withcolor>option{color:#000;background:#fff}.emby-select-tv-withcolor:focus{background-color:#52B54B;color:#fff}.emby-checkbox:focus+span+.emby-checkbox-focushelper{background-color:rgba(82,181,75,.26)}.emby-checkbox:checked+span+span+.checkboxOutline,.itemProgressBarForeground{background-color:#52B54B}.itemProgressBarForeground-recording{background-color:#CB272A}.countIndicator,.fullSyncIndicator,.playedIndicator{background:#52B54B}.fullSyncIndicator{color:#fff}.mainDrawer{background:#fff}.navMenuOption:hover{background:#f2f2f2}.navMenuOption-selected{background:#52B54B!important;color:#fff}.emby-button-focusscale:focus{background:#52B54B;color:#fff}.emby-tab-button{color:#999;color:rgba(255,255,255,.5)}.emby-tab-button-active{color:#52B54B}.emby-tab-button-active.emby-button-tv{color:#fff}.emby-tab-button.emby-button-tv:focus{color:#52B54B;background:0 0}.channelPrograms,.guide-channelHeaderCell,.programCell{border-color:rgba(0,0,0,.12)}.programCell-sports{background:#3949AB!important}.programCell-movie{background:#5E35B1!important}.programCell-kids{background:#039BE5!important}.programCell-news{background:#43A047!important}.programCell-active{background:rgba(0,0,0,.1)!important}.guide-channelHeaderCell:focus,.programCell:focus{background-color:#52B54B!important;color:#fff!important}.guide-programTextIcon{color:#1e1e1e;background:#555}.guide-headerTimeslots{color:inherit}.guide-date-tab-button{color:#555;color:rgba(0,0,0,.54)}.guide-date-tab-button.emby-tab-button-active,.guide-date-tab-button:focus{color:#52B54B}.guide-date-tab-button.emby-button-tv:focus{background-color:#52B54B;color:#fff}.itemBackdropFader{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#f2f2f2));background:-webkit-linear-gradient(rgba(0,0,0,0),#f2f2f2);background:-o-linear-gradient(rgba(0,0,0,0),#f2f2f2);background:linear-gradient(rgba(0,0,0,0),#f2f2f2)}.infoBanner{color:#000;background:#fff3a5;padding:1em;-webkit-border-radius:.25em;border-radius:.25em}.ratingbutton-icon-withrating{color:#c33}.downloadbutton-icon-complete,.downloadbutton-icon-on{color:#4285F4}.playstatebutton-icon-played{color:#c33}.repeatButton-active{color:#4285F4}.card:focus .card-focuscontent{border-color:#52B54B} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/themes/appletv/logo.png b/dashboard-ui/bower_components/emby-webcomponents/themes/logodark.png similarity index 100% rename from dashboard-ui/bower_components/emby-webcomponents/themes/appletv/logo.png rename to dashboard-ui/bower_components/emby-webcomponents/themes/logodark.png diff --git a/dashboard-ui/bower_components/emby-webcomponents/themes/dark-green/logo.png b/dashboard-ui/bower_components/emby-webcomponents/themes/logowhite.png similarity index 100% rename from dashboard-ui/bower_components/emby-webcomponents/themes/dark-green/logo.png rename to dashboard-ui/bower_components/emby-webcomponents/themes/logowhite.png diff --git a/dashboard-ui/bower_components/emby-webcomponents/themes/verydark/logo.png b/dashboard-ui/bower_components/emby-webcomponents/themes/verydark/logo.png deleted file mode 100644 index 7e55e0449d..0000000000 Binary files a/dashboard-ui/bower_components/emby-webcomponents/themes/verydark/logo.png and /dev/null differ diff --git a/dashboard-ui/bower_components/emby-webcomponents/themes/verydark/theme.css b/dashboard-ui/bower_components/emby-webcomponents/themes/verydark/theme.css deleted file mode 100644 index 31a5641a35..0000000000 --- a/dashboard-ui/bower_components/emby-webcomponents/themes/verydark/theme.css +++ /dev/null @@ -1 +0,0 @@ -html{color:#ddd;color:rgba(255,255,255,.73)}.emby-collapsible-button{border-color:#383838;border-color:rgba(255,255,255,.135)}.skinHeader-withBackground{background-color:#1a1a1a;color:rgba(255,255,255,.7)}@supports (backdrop-filter:blur(1.5em)) or (-webkit-backdrop-filter:blur(1.5em)){.skinHeader-blurred{background-color:#1f1f1f;color:rgba(255,255,255,.7)}}.skinHeader.semiTransparent{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background-color:rgba(0,0,0,.3);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.6)),to(rgba(0,0,0,0)));background:-webkit-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:-o-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0))}.pageTitleWithDefaultLogo{background-image:url(logo.png)}.backgroundContainer,.dialog{background-color:#141414}.backgroundContainer.withBackdrop{background-color:rgba(6,6,6,.88)}.paper-icon-button-light:focus{color:#52B54B}.fab,.raised{background:#282828;color:#fff}.button-accent,.button-submit{background:#52B54B;color:#fff}.checkboxLabel{color:inherit}.checkboxListLabel,.inputLabel,.inputLabelUnfocused,.paperListLabel,.textareaLabelUnfocused{color:#bbb;color:rgba(255,255,255,.7)}.inputLabelFocused,.selectLabelFocused,.textareaLabelFocused{color:#52B54B}.checkboxOutline{border-color:currentColor}.collapseContent,.formDialogFooter:not(.formDialogFooter-clear),.formDialogHeader:not(.formDialogHeader-clear),.paperList,.visualCardBox{background-color:#222326}.cardText-secondary,.fieldDescription,.guide-programNameCaret,.listItem .secondary,.nowPlayingBarSecondaryText,.programSecondaryTitle,.secondaryText{color:#999;color:rgba(255,255,255,.5)}.actionsheetDivider{background:#444;background:rgba(255,255,255,.14)}.cardFooter-vibrant .cardText-secondary{color:inherit;opacity:.5}.actionSheetMenuItem:hover{background-color:#222}.toast{background:#303030;color:#fff;color:rgba(255,255,255,.87)}.appfooter{background:#101010;color:#ccc;color:rgba(255,255,255,.78)}@supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)){.appfooter-blurred{background:rgba(24,24,24,.7);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.itemSelectionPanel{border:1px solid #52B54B}.selectionCommandsPanel{background:#52B54B;color:#fff}.upNextDialog-countdownText{color:#52B54B}.alphaPickerButton{color:#999;color:rgba(255,255,255,.5);background-color:transparent}.alphaPickerButton-selected{color:#fff}.alphaPickerButton-tv:focus{background-color:#52B54B;color:#fff!important}.detailTableBodyRow-shaded:nth-child(even),.listItem-shaded:nth-child(even){background:#1c1c1c;background:rgba(30,30,30,.9)}.listItem:focus{background:#333}.progressring-spiner{border-color:#52B54B}.button-flat-accent,.button-link{color:#52B54B}.mediaInfoText{color:#ddd;background:rgba(170,170,190,.2)}.mediaInfoTimerIcon,.starIcon{color:#CB272A}.emby-input,.emby-textarea{color:inherit;background:#242424;border:.07em solid #242424;-webkit-border-radius:.15em;border-radius:.15em}.emby-input:focus,.emby-textarea:focus{border-color:#52B54B}.emby-select-withcolor{color:inherit;background:#242424;border:.07em solid #242424}.emby-select-withcolor>option{color:inherit;background:#222}.emby-select-withcolor:focus{border-color:#52B54B!important}.emby-select-tv-withcolor:focus{background-color:#52B54B!important;color:#fff!important}.emby-checkbox:checked+span+span+.checkboxOutline{border-color:#52B54B}.emby-checkbox:focus+span+.emby-checkbox-focushelper{background-color:rgba(82,181,75,.26)}.emby-checkbox:checked+span+span+.checkboxOutline>.checkboxOutlineTick,.itemProgressBarForeground{background-color:#52B54B}.itemProgressBarForeground-recording{background-color:#CB272A}.countIndicator,.fullSyncIndicator,.playedIndicator{background:#52B54B}.fullSyncIndicator{color:#fff}.mainDrawer{background-color:#1c1c1f;color:#ccc;color:rgba(255,255,255,.7)}.navMenuDivider{background:#222326;background:rgba(255,255,255,.12)}.navMenuOption:hover{background:#252528}.navMenuOption-selected{background:#52B54B!important;color:#fff}.emby-tab-button{color:#999;color:rgba(255,255,255,.4)}.emby-tab-button-active{color:#52B54B}.emby-tab-button-active.emby-button-tv{color:#fff}.emby-tab-button.emby-button-tv:focus{color:#52B54B}.channelPrograms,.guide-channelHeaderCell,.programCell{border-color:#282828}.programCell-sports{background:#3949AB!important}.programCell-movie{background:#5E35B1!important}.programCell-kids{background:#039BE5!important}.programCell-news{background:#43A047!important}.guide-channelHeaderCell:focus,.programCell:focus{background-color:#555!important}.guide-programTextIcon{color:#1e1e1e;background:#555}.guide-currentTimeIndicatorArrow,.guide-currentTimeIndicatorBar{background-color:#52B54B}.guide-headerTimeslots{color:inherit}.guide-date-tab-button{color:#555;color:rgba(255,255,255,.3)}.guide-date-tab-button.emby-tab-button-active,.guide-date-tab-button:focus{color:#52B54B}.guide-date-tab-button.emby-button-tv:focus{background-color:#52B54B;color:#fff}.itemBackdropFader{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#141414));background:-webkit-linear-gradient(rgba(0,0,0,0),#141414);background:-o-linear-gradient(rgba(0,0,0,0),#141414);background:linear-gradient(rgba(0,0,0,0),#141414)}@media all and (min-width:62.5em){.detailButton-mobile{background:#444!important}.detailTrackSelect.emby-select-withcolor{background:#444;border-color:#444}}.infoBanner{color:#ddd;background:#111;padding:1em;-webkit-border-radius:.25em;border-radius:.25em}.ratingbutton-icon-withrating{color:#c33}.downloadbutton-icon-complete,.downloadbutton-icon-on{color:#4285F4}.playstatebutton-icon-played{color:#c33}.repeatButton-active{color:#4285F4}.card:focus .card-focuscontent{border-color:#52B54B}.layout-desktop ::-webkit-scrollbar{width:1em;height:1em}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3)}::-webkit-scrollbar-track-piece{background-color:#3b3b3b}::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-thumb:vertical{-webkit-border-radius:2px;background:center no-repeat #888}.timeslotHeaders-desktop::-webkit-scrollbar{height:.7em} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/themes/wmc/logo.png b/dashboard-ui/bower_components/emby-webcomponents/themes/wmc/logo.png deleted file mode 100644 index 7e55e0449d..0000000000 Binary files a/dashboard-ui/bower_components/emby-webcomponents/themes/wmc/logo.png and /dev/null differ diff --git a/dashboard-ui/bower_components/emby-webcomponents/themes/wmc/theme.css b/dashboard-ui/bower_components/emby-webcomponents/themes/wmc/theme.css index d016040d5b..7f559579e6 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/themes/wmc/theme.css +++ b/dashboard-ui/bower_components/emby-webcomponents/themes/wmc/theme.css @@ -1 +1 @@ -html{color:#eee;color:rgba(255,255,255,.9)}.emby-collapsible-button{border-color:#383838;border-color:rgba(255,255,255,.135)}.skinHeader{color:#ccc;color:rgba(255,255,255,.78)}.formDialogHeader:not(.formDialogHeader-clear),.skinHeader-withBackground{background-color:#0C2450;background:-webkit-gradient(linear,left top,left bottom,from(#0C2450),to(#081B3B));background:-webkit-linear-gradient(top,#0C2450,#081B3B);background:-o-linear-gradient(top,#0C2450,#081B3B);background:linear-gradient(to bottom,#0C2450,#081B3B)}@supports (backdrop-filter:blur(1.5em)) or (-webkit-backdrop-filter:blur(1.5em)){.skinHeader-blurred{background:rgba(20,20,20,.7);-webkit-backdrop-filter:blur(1.5em);backdrop-filter:blur(1.5em)}}.skinHeader.semiTransparent{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background-color:rgba(0,0,0,.3);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.6)),to(rgba(0,0,0,0)));background:-webkit-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:-o-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0))}.pageTitleWithDefaultLogo{background-image:url(logo.png)}.backgroundContainer,.dialog{background-color:#0F3562;background:-webkit-gradient(linear,left top,left bottom,from(#0F3562),color-stop(#1162A4),to(#03215F));background:-webkit-linear-gradient(top,#0F3562,#1162A4,#03215F);background:-o-linear-gradient(top,#0F3562,#1162A4,#03215F);background:linear-gradient(to bottom,#0F3562,#1162A4,#03215F)}.backgroundContainer.withBackdrop{background:rgba(17,98,164,.9)}.paper-icon-button-light:focus{color:#52B54B}.fab,.raised{background:#082845;color:#fff}.button-accent,.button-submit{background:#52B54B;color:#fff}.checkboxLabel{color:inherit}.checkboxListLabel,.inputLabel,.inputLabelUnfocused,.paperListLabel,.textareaLabelUnfocused{color:#bbb;color:rgba(255,255,255,.7)}.inputLabelFocused,.selectLabelFocused,.textareaLabelFocused{color:#52B54B}.checkboxOutline{border-color:currentColor}.collapseContent,.paperList,.visualCardBox{background-color:#0F3562}.cardText-secondary,.fieldDescription,.guide-programNameCaret,.listItem .secondary,.nowPlayingBarSecondaryText,.programSecondaryTitle,.secondaryText{color:#999;color:rgba(255,255,255,.5)}.actionsheetDivider{background:#ddd;background:rgba(255,255,255,.14)}.cardFooter-vibrant .cardText-secondary{color:inherit;opacity:.5}.toast{background:#081B3B;color:#fff;color:rgba(255,255,255,.87)}.appfooter,.formDialogFooter:not(.formDialogFooter-clear){background:#0C2450;background:-webkit-gradient(linear,left bottom,left top,from(#0C2450),to(#081B3B));background:-webkit-linear-gradient(bottom,#0C2450,#081B3B);background:-o-linear-gradient(bottom,#0C2450,#081B3B);background:linear-gradient(to top,#0C2450,#081B3B);color:rgba(255,255,255,.78)}@supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)){.appfooter-blurred{background:rgba(24,24,24,.7);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.itemSelectionPanel{border:1px solid #52B54B}.selectionCommandsPanel{background:#52B54B;color:#fff}.upNextDialog-countdownText{color:#52B54B}.alphaPickerButton{color:#999;color:rgba(255,255,255,.5);background-color:transparent}.alphaPickerButton-selected,.alphaPickerButton-tv:focus{background-color:#52B54B;color:#fff!important}.detailTableBodyRow-shaded:nth-child(even),.listItem-shaded:nth-child(even){background:#1c1c1c;background:rgba(0,0,0,.3)}.listItem:focus{background:#333}.progressring-spiner{border-color:#52B54B}.button-flat-accent,.button-link{color:#52B54B}.mediaInfoText{color:#ddd;background:rgba(170,170,190,.2)}.mediaInfoTimerIcon,.starIcon{color:#CB272A}.emby-input,.emby-textarea{color:inherit;background:rgba(255,255,255,.2);border:.07em solid rgba(255,255,255,.135);-webkit-border-radius:.15em;border-radius:.15em}.emby-input:focus,.emby-textarea:focus{border-color:#52B54B}.emby-select-withcolor{color:inherit;background:rgba(255,255,255,.2);border:.07em solid rgba(255,255,255,.135)}.emby-checkbox:checked+span+span+.checkboxOutline,.emby-select-withcolor:focus{border-color:#52B54B}.emby-select-withcolor>option{color:#000;background:#fff}.emby-select-tv-withcolor:focus{background-color:#52B54B;color:#fff}.emby-checkbox:focus+span+.emby-checkbox-focushelper{background-color:rgba(82,181,75,.26)}.emby-checkbox:checked+span+span+.checkboxOutline>.checkboxOutlineTick,.itemProgressBarForeground{background-color:#52B54B}.itemProgressBarForeground-recording{background-color:#CB272A}.countIndicator,.fullSyncIndicator,.playedIndicator{background:#52B54B}.fullSyncIndicator{color:#fff}.mainDrawer{background-color:#0F3562;color:#ccc;color:rgba(255,255,255,.7)}.navMenuDivider{background:#262626;background:rgba(255,255,255,.12)}.actionSheetMenuItem:hover,.navMenuOption:hover{background:#252528;background:rgba(0,0,0,.2)}.navMenuOption-selected{background:#52B54B!important;color:#fff}.emby-tab-button{color:#999;color:rgba(255,255,255,.5)}.emby-tab-button-active,.emby-tab-button-active.emby-button-tv,.emby-tab-button.emby-button-tv:focus{color:#fff}.channelPrograms,.guide-channelHeaderCell,.programCell{border-color:#999;border-color:rgba(255,255,255,.1)}.programCell-sports{background:#3949AB!important}.programCell-movie{background:#5E35B1!important}.programCell-kids{background:#039BE5!important}.programCell-news{background:#43A047!important}.guide-channelHeaderCell:focus,.programCell:focus{background-color:#555!important}.guide-programTextIcon{color:#1e1e1e;background:#555}.guide-currentTimeIndicatorArrow,.guide-currentTimeIndicatorBar{background-color:#52B54B}.guide-headerTimeslots{color:inherit}.guide-date-tab-button{color:#555;color:rgba(255,255,255,.3)}.guide-date-tab-button.emby-tab-button-active,.guide-date-tab-button:focus{color:#52B54B}.guide-date-tab-button.emby-button-tv:focus{background-color:#52B54B;color:#fff}.itemBackdropFader{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#115E9E));background:-webkit-linear-gradient(rgba(0,0,0,0),#115E9E);background:-o-linear-gradient(rgba(0,0,0,0),#115E9E);background:linear-gradient(rgba(0,0,0,0),#115E9E)}@media all and (min-width:62.5em){.detailButton-mobile{background:rgba(0,0,0,.54)!important;backdrop-filter:blur(10px)}}.infoBanner{color:#000;background:#fff3a5;padding:1em;-webkit-border-radius:.25em;border-radius:.25em}.ratingbutton-icon-withrating{color:#c33}.downloadbutton-icon-complete,.downloadbutton-icon-on{color:#4285F4}.playstatebutton-icon-played{color:#c33}.repeatButton-active{color:#4285F4}.card:focus .card-focuscontent{border-color:#52B54B}.layout-desktop ::-webkit-scrollbar{width:1em;height:1em}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3)}::-webkit-scrollbar-track-piece{background-color:#081B3B}::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-thumb:vertical{-webkit-border-radius:2px;background:center no-repeat rgba(255,255,255,.7)} \ No newline at end of file +html{color:#eee;color:rgba(255,255,255,.9);background-color:#0F3562}.emby-collapsible-button{border-color:#383838;border-color:rgba(255,255,255,.135)}.skinHeader{color:#ccc;color:rgba(255,255,255,.78)}.formDialogHeader:not(.formDialogHeader-clear),.skinHeader-withBackground{background-color:#0C2450;background:-webkit-gradient(linear,left top,left bottom,from(#0C2450),to(#081B3B));background:-webkit-linear-gradient(top,#0C2450,#081B3B);background:-o-linear-gradient(top,#0C2450,#081B3B);background:linear-gradient(to bottom,#0C2450,#081B3B)}@supports (backdrop-filter:blur(1.5em)) or (-webkit-backdrop-filter:blur(1.5em)){.skinHeader-blurred{background:rgba(20,20,20,.7);-webkit-backdrop-filter:blur(1.5em);backdrop-filter:blur(1.5em)}}.skinHeader.semiTransparent{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background-color:rgba(0,0,0,.3);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.6)),to(rgba(0,0,0,0)));background:-webkit-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:-o-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0));background:linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0))}.pageTitleWithDefaultLogo{background-image:url(../logowhite.png)}.backgroundContainer,.dialog{background-color:#0F3562;background:-webkit-gradient(linear,left top,left bottom,from(#0F3562),color-stop(#1162A4),to(#03215F));background:-webkit-linear-gradient(top,#0F3562,#1162A4,#03215F);background:-o-linear-gradient(top,#0F3562,#1162A4,#03215F);background:linear-gradient(to bottom,#0F3562,#1162A4,#03215F)}.backgroundContainer.withBackdrop{background:rgba(17,98,164,.9)}.paper-icon-button-light:focus{color:#52B54B;background-color:rgba(82,181,75,.2)}.fab,.raised{background:#082845;color:#fff}.fab:focus,.raised:focus{background:#143451}.button-submit{background:#52B54B;color:#fff}.button-submit:focus{background:#5EC157;color:#fff}.checkboxLabel{color:inherit}.checkboxListLabel,.inputLabel,.inputLabelUnfocused,.paperListLabel,.textareaLabelUnfocused{color:#bbb;color:rgba(255,255,255,.7)}.inputLabelFocused,.selectLabelFocused,.textareaLabelFocused{color:#52B54B}.checkboxOutline{border-color:currentColor}.collapseContent,.paperList,.visualCardBox{background-color:#0F3562}.defaultCardBackground1{background-color:#d2b019}.defaultCardBackground2{background-color:#338abb}.defaultCardBackground3{background-color:#6b689d}.defaultCardBackground4{background-color:#dd452b}.defaultCardBackground5{background-color:#5ccea9}.cardText-secondary,.fieldDescription,.guide-programNameCaret,.listItem .secondary,.nowPlayingBarSecondaryText,.programSecondaryTitle,.secondaryText{color:#999;color:rgba(255,255,255,.5)}.actionsheetDivider{background:#ddd;background:rgba(255,255,255,.14)}.cardFooter-vibrant .cardText-secondary{color:inherit;opacity:.5}.toast{background:#081B3B;color:#fff;color:rgba(255,255,255,.87)}.appfooter,.formDialogFooter:not(.formDialogFooter-clear){background:#0C2450;background:-webkit-gradient(linear,left bottom,left top,from(#0C2450),to(#081B3B));background:-webkit-linear-gradient(bottom,#0C2450,#081B3B);background:-o-linear-gradient(bottom,#0C2450,#081B3B);background:linear-gradient(to top,#0C2450,#081B3B);color:rgba(255,255,255,.78)}@supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)){.appfooter-blurred{background:rgba(24,24,24,.7);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.itemSelectionPanel{border:1px solid #52B54B}.selectionCommandsPanel{background:#52B54B;color:#fff}.upNextDialog-countdownText{color:#52B54B}.alphaPickerButton{color:#999;color:rgba(255,255,255,.5);background-color:transparent}.alphaPickerButton-selected,.alphaPickerButton-tv:focus{background-color:#52B54B;color:#fff!important}.detailTableBodyRow-shaded:nth-child(even){background:#1c1c1c;background:rgba(0,0,0,.3)}.listItem-border{border-color:rgba(0,0,0,.3)!important}.listItem:focus{background:#333}.progressring-spiner{border-color:#52B54B}.button-flat-accent,.button-link{color:#52B54B}.mediaInfoText{color:#ddd;background:rgba(170,170,190,.2)}.mediaInfoTimerIcon,.starIcon{color:#CB272A}.emby-input,.emby-textarea{color:inherit;background:rgba(255,255,255,.2);border:.07em solid rgba(255,255,255,.135);-webkit-border-radius:.15em;border-radius:.15em}.emby-input:focus,.emby-textarea:focus{border-color:#52B54B}.emby-select-withcolor{color:inherit;background:rgba(255,255,255,.2);border:.07em solid rgba(255,255,255,.135)}.emby-checkbox:checked+span+span+.checkboxOutline,.emby-select-withcolor:focus{border-color:#52B54B}.emby-select-withcolor>option{color:#000;background:#fff}.emby-select-tv-withcolor:focus{background-color:#52B54B;color:#fff}.emby-checkbox:focus+span+.emby-checkbox-focushelper{background-color:rgba(82,181,75,.26)}.emby-checkbox:checked+span+span+.checkboxOutline,.itemProgressBarForeground{background-color:#52B54B}.itemProgressBarForeground-recording{background-color:#CB272A}.countIndicator,.fullSyncIndicator,.playedIndicator{background:#52B54B}.fullSyncIndicator{color:#fff}.mainDrawer{background-color:#0F3562;color:#ccc;color:rgba(255,255,255,.7)}.actionSheetMenuItem:hover,.navMenuOption:hover{background:#252528;background:rgba(0,0,0,.2)}.navMenuOption-selected{background:#52B54B!important;color:#fff}.emby-button-focusscale:focus{background:#52B54B;color:#fff}.emby-tab-button{color:#999;color:rgba(255,255,255,.5)}.emby-tab-button-active,.emby-tab-button-active.emby-button-tv{color:#fff}.emby-tab-button.emby-button-tv:focus{color:#fff;background:0 0}.channelPrograms,.guide-channelHeaderCell,.programCell{border-color:#999;border-color:rgba(255,255,255,.1)}.programCell-sports{background:#3949AB!important}.programCell-movie{background:#5E35B1!important}.programCell-kids{background:#039BE5!important}.programCell-news{background:#43A047!important}.programCell-active{background:rgba(0,0,0,.3)!important}.guide-channelHeaderCell:focus,.programCell:focus{background-color:#52B54B!important;color:#fff!important}.guide-programTextIcon{color:#1e1e1e;background:#555}.guide-headerTimeslots{color:inherit}.guide-date-tab-button{color:#555;color:rgba(255,255,255,.3)}.guide-date-tab-button.emby-tab-button-active,.guide-date-tab-button:focus{color:#52B54B}.guide-date-tab-button.emby-button-tv:focus{background-color:#52B54B;color:#fff}.itemBackdropFader{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#115E9E));background:-webkit-linear-gradient(rgba(0,0,0,0),#115E9E);background:-o-linear-gradient(rgba(0,0,0,0),#115E9E);background:linear-gradient(rgba(0,0,0,0),#115E9E)}.infoBanner{color:#000;background:#fff3a5;padding:1em;-webkit-border-radius:.25em;border-radius:.25em}.ratingbutton-icon-withrating{color:#c33}.downloadbutton-icon-complete,.downloadbutton-icon-on{color:#4285F4}.playstatebutton-icon-played{color:#c33}.repeatButton-active{color:#4285F4}.card:focus .card-focuscontent{border-color:#fff}.layout-desktop ::-webkit-scrollbar{width:1em;height:1em}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3)}::-webkit-scrollbar-track-piece{background-color:#081B3B}::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-thumb:vertical{-webkit-border-radius:2px;background:center no-repeat rgba(255,255,255,.7)} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/touchhelper.js b/dashboard-ui/bower_components/emby-webcomponents/touchhelper.js index 874a0c2263..c9f068c752 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/touchhelper.js +++ b/dashboard-ui/bower_components/emby-webcomponents/touchhelper.js @@ -1 +1 @@ -define(["dom","events"],function(dom,events){"use strict";function getTouches(e){return e.changedTouches||e.targetTouches||e.touches}function TouchHelper(elem,options){options=options||{};var touchTarget,touchStartX,touchStartY,lastDeltaX,lastDeltaY,thresholdYMet,self=this,swipeXThreshold=options.swipeXThreshold||50,swipeYThreshold=options.swipeYThreshold||50,swipeXMaxY=30,excludeTagNames=options.ignoreTagNames||[],touchStart=function(e){var touch=getTouches(e)[0];if(touchTarget=null,touchStartX=0,touchStartY=0,lastDeltaX=null,lastDeltaY=null,thresholdYMet=!1,touch){var currentTouchTarget=touch.target;if(dom.parentWithTag(currentTouchTarget,excludeTagNames))return;touchTarget=currentTouchTarget,touchStartX=touch.clientX,touchStartY=touch.clientY}},touchEnd=function(e){var isTouchMove="touchmove"===e.type;if(touchTarget){var deltaX,deltaY,clientX,clientY,touch=getTouches(e)[0];touch?(clientX=touch.clientX||0,clientY=touch.clientY||0,deltaX=clientX-(touchStartX||0),deltaY=clientY-(touchStartY||0)):(deltaX=0,deltaY=0);var currentDeltaX=null==lastDeltaX?deltaX:deltaX-lastDeltaX,currentDeltaY=null==lastDeltaY?deltaY:deltaY-lastDeltaY;lastDeltaX=deltaX,lastDeltaY=deltaY,deltaX>swipeXThreshold&&Math.abs(deltaY)swipeYThreshold||thresholdYMet)&&Math.abs(deltaX)swipeXThreshold&&Math.abs(deltaY)<30?events.trigger(self,"swiperight",[touchTarget]):deltaX<0-swipeXThreshold&&Math.abs(deltaY)<30?events.trigger(self,"swipeleft",[touchTarget]):(deltaY<0-swipeYThreshold||thresholdYMet)&&Math.abs(deltaX)<30?(thresholdYMet=!0,events.trigger(self,"swipeup",[touchTarget,{deltaY:deltaY,deltaX:deltaX,clientX:clientX,clientY:clientY,currentDeltaX:currentDeltaX,currentDeltaY:currentDeltaY}])):(deltaY>swipeYThreshold||thresholdYMet)&&Math.abs(deltaX)<30&&(thresholdYMet=!0,events.trigger(self,"swipedown",[touchTarget,{deltaY:deltaY,deltaX:deltaX,clientX:clientX,clientY:clientY,currentDeltaX:currentDeltaX,currentDeltaY:currentDeltaY}])),isTouchMove&&options.preventDefaultOnMove&&e.preventDefault()}isTouchMove||(touchTarget=null,touchStartX=0,touchStartY=0,lastDeltaX=null,lastDeltaY=null,thresholdYMet=!1)};this.touchStart=touchStart,this.touchEnd=touchEnd,dom.addEventListener(elem,"touchstart",touchStart,{passive:!0}),options.triggerOnMove&&dom.addEventListener(elem,"touchmove",touchEnd,{passive:!options.preventDefaultOnMove}),dom.addEventListener(elem,"touchend",touchEnd,{passive:!0}),dom.addEventListener(elem,"touchcancel",touchEnd,{passive:!0})}return TouchHelper.prototype.destroy=function(){var elem=this.elem;if(elem){var touchStart=this.touchStart,touchEnd=this.touchEnd;dom.removeEventListener(elem,"touchstart",touchStart,{passive:!0}),dom.removeEventListener(elem,"touchmove",touchEnd,{passive:!0}),dom.removeEventListener(elem,"touchend",touchEnd,{passive:!0}),dom.removeEventListener(elem,"touchcancel",touchEnd,{passive:!0})}this.touchStart=null,this.touchEnd=null,this.elem=null},TouchHelper}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/upnextdialog/upnextdialog.css b/dashboard-ui/bower_components/emby-webcomponents/upnextdialog/upnextdialog.css index 6b0913e958..7dd17779be 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/upnextdialog/upnextdialog.css +++ b/dashboard-ui/bower_components/emby-webcomponents/upnextdialog/upnextdialog.css @@ -1 +1 @@ -.upNextDialog{position:fixed;left:0;bottom:0;right:0;padding:1%;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;will-change:transform,opacity;-webkit-transition:opacity .3s ease-out;-o-transition:opacity .3s ease-out;transition:opacity .3s ease-out;background-color:rgba(0,0,0,.7);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.9)));background:-webkit-linear-gradient(rgba(0,0,0,.5),rgba(0,0,0,.9));background:-o-linear-gradient(rgba(0,0,0,.5),rgba(0,0,0,.9));background:linear-gradient(rgba(0,0,0,.5),rgba(0,0,0,.9));color:#fff}.upNextDialog-hidden{opacity:0}.upNextDialog-countdownText{font-weight:500}.upNextDialog-poster{max-width:40%;max-height:15%;position:relative;margin-right:1em;-webkit-flex-shrink:0;flex-shrink:0;margin-bottom:.5em}.upNextDialog-button{background:#404040;color:#fff}@media all and (orientation:landscape){.upNextDialog{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;flex-direction:row}.upNextDialog-poster{max-width:initial;max-height:initial;width:10%;margin-bottom:0}}@media all and (max-width:50em){.upNextDialog-overview{display:none!important}}.upNextDialog-poster-img{position:absolute;bottom:0;left:0;right:0;height:auto;width:100%;-webkit-box-shadow:0 0 1.9vh #000;box-shadow:0 0 1.9vh #000;border:1px solid #222;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none} \ No newline at end of file +.upNextDialog{position:fixed;left:0;bottom:0;right:0;padding:1%;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;will-change:transform,opacity;-webkit-transition:opacity .3s ease-out;-o-transition:opacity .3s ease-out;transition:opacity .3s ease-out;background-color:rgba(0,0,0,.7);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.9)));background:-webkit-linear-gradient(rgba(0,0,0,.5),rgba(0,0,0,.9));background:-o-linear-gradient(rgba(0,0,0,.5),rgba(0,0,0,.9));background:linear-gradient(rgba(0,0,0,.5),rgba(0,0,0,.9));color:#fff;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none}.upNextDialog-hidden{opacity:0}.upNextDialog-countdownText{font-weight:500}.upNextDialog-poster{max-width:40%;max-height:15%;position:relative;margin-right:1em;-webkit-flex-shrink:0;flex-shrink:0;margin-bottom:.5em}.upNextDialog-button{background:#404040;color:#fff}@media all and (orientation:landscape){.upNextDialog{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;flex-direction:row}.upNextDialog-poster{max-width:initial;max-height:initial;width:10%;margin-bottom:0}}@media all and (max-width:50em){.upNextDialog-overview{display:none!important}}.upNextDialog-poster-img{position:absolute;bottom:0;left:0;right:0;height:auto;width:100%;-webkit-box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);border:0;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/upnextdialog/upnextdialog.js b/dashboard-ui/bower_components/emby-webcomponents/upnextdialog/upnextdialog.js index 4890acca2c..d01a8ad1c6 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/upnextdialog/upnextdialog.js +++ b/dashboard-ui/bower_components/emby-webcomponents/upnextdialog/upnextdialog.js @@ -1 +1 @@ -define(["dom","playbackManager","connectionManager","events","mediaInfo","layoutManager","focusManager","globalize","itemHelper","css!./upnextdialog","emby-button","flexStyles"],function(dom,playbackManager,connectionManager,events,mediaInfo,layoutManager,focusManager,globalize,itemHelper){"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 setPoster(osdPoster,item,secondaryItem){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 getHtml(){var html="";return html+='
    ',html+="
    ",html+='
    ',html+='

     

    ',html+='

    ',html+='
    ',html+="
    ",html+='
    ',html+='
    ',html+='",html+='",html+="
    ",html+="
    "}function setNextVideoText(){var instance=this,elem=instance.options.parent,secondsRemaining=Math.max(Math.round(getTimeRemainingMs(instance)/1e3),0);console.log("up next seconds remaining: "+secondsRemaining);var timeText=''+globalize.translate("sharedcomponents#HeaderSecondsValue",secondsRemaining)+"",nextVideoText="Episode"===instance.itemType?globalize.translate("sharedcomponents#HeaderNextEpisodePlayingInValue",timeText):globalize.translate("sharedcomponents#HeaderNextVideoPlayingInValue",timeText);elem.querySelector(".upNextDialog-nextVideoText").innerHTML=nextVideoText}function fillItem(item){var instance=this,elem=instance.options.parent;setPoster(elem.querySelector(".upNextDialog-poster"),item),elem.querySelector(".upNextDialog-overview").innerHTML=item.Overview||"",elem.querySelector(".upNextDialog-mediainfo").innerHTML=mediaInfo.getPrimaryMediaInfoHtml(item,{});var title=itemHelper.getDisplayName(item);item.SeriesName&&(title=item.SeriesName+" - "+title),elem.querySelector(".upNextDialog-title").innerHTML=title||"",instance.itemType=item.Type,instance.show()}function clearCountdownTextTimeout(instance){instance._countdownTextTimeout&&(clearInterval(instance._countdownTextTimeout),instance._countdownTextTimeout=null)}function onStartNowClick(){var options=this.options;if(options){var player=options.player;this.hide(),playbackManager.nextTrack(player)}}function init(instance,options){options.parent.innerHTML=getHtml(),options.parent.classList.add("hide"),options.parent.classList.add("upNextDialog"),options.parent.classList.add("upNextDialog-hidden"),fillItem.call(instance,options.nextItem),options.parent.querySelector(".btnHide").addEventListener("click",instance.hide.bind(instance)),options.parent.querySelector(".btnStartNow").addEventListener("click",onStartNowClick.bind(instance))}function clearHideAnimationEventListeners(instance,elem){var fn=instance._onHideAnimationComplete;fn&&dom.removeEventListener(elem,transitionEndEventName,fn,{once:!0})}function onHideAnimationComplete(e){var instance=this,elem=e.target;elem.classList.add("hide"),clearHideAnimationEventListeners(instance,elem),events.trigger(instance,"hide")}function hideComingUpNext(){var instance=this;if(clearCountdownTextTimeout(this),instance.options){var elem=instance.options.parent;if(elem&&(clearHideAnimationEventListeners(this,elem),!elem.classList.contains("upNextDialog-hidden"))){void elem.offsetWidth,elem.classList.add("upNextDialog-hidden");var fn=onHideAnimationComplete.bind(instance);instance._onHideAnimationComplete=fn,dom.addEventListener(elem,transitionEndEventName,fn,{once:!0})}}}function getTimeRemainingMs(instance){var options=instance.options;if(options){var runtimeTicks=playbackManager.duration(options.player);if(runtimeTicks){var timeRemainingTicks=runtimeTicks-playbackManager.currentTime(options.player);return Math.round(timeRemainingTicks/1e4)}}return 0}function startComingUpNextHideTimer(instance){var timeRemainingMs=getTimeRemainingMs(instance);timeRemainingMs<=0||(setNextVideoText.call(instance),clearCountdownTextTimeout(instance),instance._countdownTextTimeout=setInterval(setNextVideoText.bind(instance),400))}function UpNextDialog(options){this.options=options,init(this,options)}var transitionEndEventName=dom.whichTransitionEvent();return UpNextDialog.prototype.show=function(){var elem=this.options.parent;clearHideAnimationEventListeners(this,elem),elem.classList.remove("hide"),void elem.offsetWidth,elem.classList.remove("upNextDialog-hidden"),layoutManager.tv&&setTimeout(function(){focusManager.focus(elem.querySelector(".btnStartNow"))},50),startComingUpNextHideTimer(this)},UpNextDialog.prototype.hide=function(){hideComingUpNext.call(this)},UpNextDialog.prototype.destroy=function(){hideComingUpNext.call(this),this.options=null,this.itemType=null},UpNextDialog}); \ No newline at end of file +define(["dom","playbackManager","connectionManager","events","mediaInfo","layoutManager","focusManager","globalize","itemHelper","css!./upnextdialog","emby-button","flexStyles"],function(dom,playbackManager,connectionManager,events,mediaInfo,layoutManager,focusManager,globalize,itemHelper){"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 setPoster(osdPoster,item,secondaryItem){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 getHtml(){var html="";return html+='
    ',html+="
    ",html+='
    ',html+='

     

    ',html+='

    ',html+='
    ',html+="
    ",html+='
    ',html+='
    ',html+='",html+='",html+="
    ",html+="
    "}function setNextVideoText(){var instance=this,elem=instance.options.parent,secondsRemaining=Math.max(Math.round(getTimeRemainingMs(instance)/1e3),0);console.log("up next seconds remaining: "+secondsRemaining);var timeText=''+globalize.translate("sharedcomponents#HeaderSecondsValue",secondsRemaining)+"",nextVideoText="Episode"===instance.itemType?globalize.translate("sharedcomponents#HeaderNextEpisodePlayingInValue",timeText):globalize.translate("sharedcomponents#HeaderNextVideoPlayingInValue",timeText);elem.querySelector(".upNextDialog-nextVideoText").innerHTML=nextVideoText}function fillItem(item){var instance=this,elem=instance.options.parent;setPoster(elem.querySelector(".upNextDialog-poster"),item),elem.querySelector(".upNextDialog-overview").innerHTML=item.Overview||"",elem.querySelector(".upNextDialog-mediainfo").innerHTML=mediaInfo.getPrimaryMediaInfoHtml(item,{});var title=itemHelper.getDisplayName(item);item.SeriesName&&(title=item.SeriesName+" - "+title),elem.querySelector(".upNextDialog-title").innerHTML=title||"",instance.itemType=item.Type,instance.show()}function clearCountdownTextTimeout(instance){instance._countdownTextTimeout&&(clearInterval(instance._countdownTextTimeout),instance._countdownTextTimeout=null)}function onStartNowClick(){var options=this.options;if(options){var player=options.player;this.hide(),playbackManager.nextTrack(player)}}function init(instance,options){options.parent.innerHTML=getHtml(),options.parent.classList.add("hide"),options.parent.classList.add("upNextDialog"),options.parent.classList.add("upNextDialog-hidden"),fillItem.call(instance,options.nextItem),options.parent.querySelector(".btnHide").addEventListener("click",instance.hide.bind(instance)),options.parent.querySelector(".btnStartNow").addEventListener("click",onStartNowClick.bind(instance))}function clearHideAnimationEventListeners(instance,elem){var fn=instance._onHideAnimationComplete;fn&&dom.removeEventListener(elem,transitionEndEventName,fn,{once:!0})}function onHideAnimationComplete(e){var instance=this,elem=e.target;elem.classList.add("hide"),clearHideAnimationEventListeners(instance,elem),events.trigger(instance,"hide")}function hideComingUpNext(){var instance=this;if(clearCountdownTextTimeout(this),instance.options){var elem=instance.options.parent;if(elem&&(clearHideAnimationEventListeners(this,elem),!elem.classList.contains("upNextDialog-hidden"))){elem.offsetWidth,elem.classList.add("upNextDialog-hidden");var fn=onHideAnimationComplete.bind(instance);instance._onHideAnimationComplete=fn,dom.addEventListener(elem,transitionEndEventName,fn,{once:!0})}}}function getTimeRemainingMs(instance){var options=instance.options;if(options){var runtimeTicks=playbackManager.duration(options.player);if(runtimeTicks){var timeRemainingTicks=runtimeTicks-playbackManager.currentTime(options.player);return Math.round(timeRemainingTicks/1e4)}}return 0}function startComingUpNextHideTimer(instance){getTimeRemainingMs(instance)<=0||(setNextVideoText.call(instance),clearCountdownTextTimeout(instance),instance._countdownTextTimeout=setInterval(setNextVideoText.bind(instance),400))}function UpNextDialog(options){this.options=options,init(this,options)}var transitionEndEventName=dom.whichTransitionEvent();return UpNextDialog.prototype.show=function(){var elem=this.options.parent;clearHideAnimationEventListeners(this,elem),elem.classList.remove("hide"),elem.offsetWidth,elem.classList.remove("upNextDialog-hidden"),layoutManager.tv&&setTimeout(function(){focusManager.focus(elem.querySelector(".btnStartNow"))},50),startComingUpNextHideTimer(this)},UpNextDialog.prototype.hide=function(){hideComingUpNext.call(this)},UpNextDialog.prototype.destroy=function(){hideComingUpNext.call(this),this.options=null,this.itemType=null},UpNextDialog}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/userdatabuttons/emby-playstatebutton.js b/dashboard-ui/bower_components/emby-webcomponents/userdatabuttons/emby-playstatebutton.js index dfcf8e0e41..6d09939206 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/userdatabuttons/emby-playstatebutton.js +++ b/dashboard-ui/bower_components/emby-webcomponents/userdatabuttons/emby-playstatebutton.js @@ -1 +1 @@ -define(["connectionManager","serverNotifications","events","globalize","emby-button"],function(connectionManager,serverNotifications,events,globalize,EmbyButtonPrototype){"use strict";function addNotificationEvent(instance,name,handler){var localHandler=handler.bind(instance);events.on(serverNotifications,name,localHandler),instance[name]=localHandler}function removeNotificationEvent(instance,name){var handler=instance[name];handler&&(events.off(serverNotifications,name,handler),instance[name]=null)}function onClick(e){var button=this,id=button.getAttribute("data-id"),serverId=button.getAttribute("data-serverid"),apiClient=connectionManager.getApiClient(serverId);button.classList.contains("playstatebutton-played")?(apiClient.markUnplayed(apiClient.getCurrentUserId(),id,new Date),setState(button,!1)):(apiClient.markPlayed(apiClient.getCurrentUserId(),id,new Date),setState(button,!0))}function onUserDataChanged(e,apiClient,userData){var button=this;userData.ItemId===button.getAttribute("data-id")&&setState(button,userData.Played)}function setState(button,played,updateAttribute){var icon=button.iconElement;icon||(button.iconElement=button.querySelector("i"),icon=button.iconElement),played?(button.classList.add("playstatebutton-played"),icon&&(icon.classList.add("playstatebutton-icon-played"),icon.classList.remove("playstatebutton-icon-unplayed"))):(button.classList.remove("playstatebutton-played"),icon&&(icon.classList.remove("playstatebutton-icon-played"),icon.classList.add("playstatebutton-icon-unplayed"))),updateAttribute!==!1&&button.setAttribute("data-played",played)}function setTitle(button,itemType){"AudioBook"!==itemType&&"AudioPodcast"!==itemType?button.title=globalize.translate("sharedcomponents#Watched"):button.title=globalize.translate("sharedcomponents#Played");var text=button.querySelector(".button-text");text&&(text.innerHTML=button.title)}function clearEvents(button){button.removeEventListener("click",onClick),removeNotificationEvent(button,"UserDataChanged")}function bindEvents(button){clearEvents(button),button.addEventListener("click",onClick),addNotificationEvent(button,"UserDataChanged",onUserDataChanged)}var EmbyPlaystateButtonPrototype=Object.create(EmbyButtonPrototype);EmbyPlaystateButtonPrototype.createdCallback=function(){EmbyButtonPrototype.createdCallback&&EmbyButtonPrototype.createdCallback.call(this)},EmbyPlaystateButtonPrototype.attachedCallback=function(){EmbyButtonPrototype.attachedCallback&&EmbyButtonPrototype.attachedCallback.call(this);var itemId=this.getAttribute("data-id"),serverId=this.getAttribute("data-serverid");itemId&&serverId&&(setState(this,"true"===this.getAttribute("data-played"),!1),bindEvents(this),setTitle(this,this.getAttribute("data-type")))},EmbyPlaystateButtonPrototype.detachedCallback=function(){EmbyButtonPrototype.detachedCallback&&EmbyButtonPrototype.detachedCallback.call(this),clearEvents(this),this.iconElement=null},EmbyPlaystateButtonPrototype.setItem=function(item){if(item){this.setAttribute("data-id",item.Id),this.setAttribute("data-serverid",item.ServerId);var played=item.UserData&&item.UserData.Played;setState(this,played),bindEvents(this),setTitle(this,item.Type)}else this.removeAttribute("data-id"),this.removeAttribute("data-serverid"),this.removeAttribute("data-played"),clearEvents(this)},document.registerElement("emby-playstatebutton",{prototype:EmbyPlaystateButtonPrototype,extends:"button"})}); \ No newline at end of file +define(["connectionManager","serverNotifications","events","globalize","emby-button"],function(connectionManager,serverNotifications,events,globalize,EmbyButtonPrototype){"use strict";function addNotificationEvent(instance,name,handler){var localHandler=handler.bind(instance);events.on(serverNotifications,name,localHandler),instance[name]=localHandler}function removeNotificationEvent(instance,name){var handler=instance[name];handler&&(events.off(serverNotifications,name,handler),instance[name]=null)}function onClick(e){var button=this,id=button.getAttribute("data-id"),serverId=button.getAttribute("data-serverid"),apiClient=connectionManager.getApiClient(serverId);button.classList.contains("playstatebutton-played")?(apiClient.markUnplayed(apiClient.getCurrentUserId(),id,new Date),setState(button,!1)):(apiClient.markPlayed(apiClient.getCurrentUserId(),id,new Date),setState(button,!0))}function onUserDataChanged(e,apiClient,userData){var button=this;userData.ItemId===button.getAttribute("data-id")&&setState(button,userData.Played)}function setState(button,played,updateAttribute){var icon=button.iconElement;icon||(button.iconElement=button.querySelector("i"),icon=button.iconElement),played?(button.classList.add("playstatebutton-played"),icon&&(icon.classList.add("playstatebutton-icon-played"),icon.classList.remove("playstatebutton-icon-unplayed"))):(button.classList.remove("playstatebutton-played"),icon&&(icon.classList.remove("playstatebutton-icon-played"),icon.classList.add("playstatebutton-icon-unplayed"))),!1!==updateAttribute&&button.setAttribute("data-played",played)}function setTitle(button,itemType){button.title="AudioBook"!==itemType&&"AudioPodcast"!==itemType?globalize.translate("sharedcomponents#Watched"):globalize.translate("sharedcomponents#Played");var text=button.querySelector(".button-text");text&&(text.innerHTML=button.title)}function clearEvents(button){button.removeEventListener("click",onClick),removeNotificationEvent(button,"UserDataChanged")}function bindEvents(button){clearEvents(button),button.addEventListener("click",onClick),addNotificationEvent(button,"UserDataChanged",onUserDataChanged)}var EmbyPlaystateButtonPrototype=Object.create(EmbyButtonPrototype);EmbyPlaystateButtonPrototype.createdCallback=function(){EmbyButtonPrototype.createdCallback&&EmbyButtonPrototype.createdCallback.call(this)},EmbyPlaystateButtonPrototype.attachedCallback=function(){EmbyButtonPrototype.attachedCallback&&EmbyButtonPrototype.attachedCallback.call(this);var itemId=this.getAttribute("data-id"),serverId=this.getAttribute("data-serverid");itemId&&serverId&&(setState(this,"true"===this.getAttribute("data-played"),!1),bindEvents(this),setTitle(this,this.getAttribute("data-type")))},EmbyPlaystateButtonPrototype.detachedCallback=function(){EmbyButtonPrototype.detachedCallback&&EmbyButtonPrototype.detachedCallback.call(this),clearEvents(this),this.iconElement=null},EmbyPlaystateButtonPrototype.setItem=function(item){if(item){this.setAttribute("data-id",item.Id),this.setAttribute("data-serverid",item.ServerId);setState(this,item.UserData&&item.UserData.Played),bindEvents(this),setTitle(this,item.Type)}else this.removeAttribute("data-id"),this.removeAttribute("data-serverid"),this.removeAttribute("data-played"),clearEvents(this)},document.registerElement("emby-playstatebutton",{prototype:EmbyPlaystateButtonPrototype,extends:"button"})}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/userdatabuttons/emby-ratingbutton.js b/dashboard-ui/bower_components/emby-webcomponents/userdatabuttons/emby-ratingbutton.js index e9f4f0ae26..f4dc1ee821 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/userdatabuttons/emby-ratingbutton.js +++ b/dashboard-ui/bower_components/emby-webcomponents/userdatabuttons/emby-ratingbutton.js @@ -1 +1 @@ -define(["connectionManager","serverNotifications","events","globalize","emby-button"],function(connectionManager,serverNotifications,events,globalize,EmbyButtonPrototype){"use strict";function addNotificationEvent(instance,name,handler){var localHandler=handler.bind(instance);events.on(serverNotifications,name,localHandler),instance[name]=localHandler}function removeNotificationEvent(instance,name){var handler=instance[name];handler&&(events.off(serverNotifications,name,handler),instance[name]=null)}function showPicker(button,apiClient,itemId,likes,isFavorite){return apiClient.updateFavoriteStatus(apiClient.getCurrentUserId(),itemId,!isFavorite)}function onClick(e){var button=this,id=button.getAttribute("data-id"),serverId=button.getAttribute("data-serverid"),apiClient=connectionManager.getApiClient(serverId),likes=this.getAttribute("data-likes"),isFavorite="true"===this.getAttribute("data-isfavorite");likes="true"===likes||"false"!==likes&&null,showPicker(button,apiClient,id,likes,isFavorite).then(function(userData){setState(button,userData.Likes,userData.IsFavorite)})}function onUserDataChanged(e,apiClient,userData){var button=this;userData.ItemId===button.getAttribute("data-id")&&setState(button,userData.Likes,userData.IsFavorite)}function setState(button,likes,isFavorite,updateAttribute){var icon=button.querySelector("i");isFavorite?(icon&&(icon.innerHTML="",icon.classList.add("ratingbutton-icon-withrating")),button.classList.add("ratingbutton-withrating")):likes?(icon&&(icon.innerHTML="",icon.classList.remove("ratingbutton-icon-withrating")),button.classList.remove("ratingbutton-withrating")):likes===!1?(icon&&(icon.innerHTML="",icon.classList.remove("ratingbutton-icon-withrating")),button.classList.remove("ratingbutton-withrating")):(icon&&(icon.innerHTML="",icon.classList.remove("ratingbutton-icon-withrating")),button.classList.remove("ratingbutton-withrating")),updateAttribute!==!1&&(button.setAttribute("data-isfavorite",isFavorite),button.setAttribute("data-likes",null===likes?"":likes))}function setTitle(button){button.title=globalize.translate("sharedcomponents#Favorite");var text=button.querySelector(".button-text");text&&(text.innerHTML=button.title)}function clearEvents(button){button.removeEventListener("click",onClick),removeNotificationEvent(button,"UserDataChanged")}function bindEvents(button){clearEvents(button),button.addEventListener("click",onClick),addNotificationEvent(button,"UserDataChanged",onUserDataChanged)}var EmbyRatingButtonPrototype=Object.create(EmbyButtonPrototype);EmbyRatingButtonPrototype.createdCallback=function(){EmbyButtonPrototype.createdCallback&&EmbyButtonPrototype.createdCallback.call(this)},EmbyRatingButtonPrototype.attachedCallback=function(){EmbyButtonPrototype.attachedCallback&&EmbyButtonPrototype.attachedCallback.call(this);var itemId=this.getAttribute("data-id"),serverId=this.getAttribute("data-serverid");if(itemId&&serverId){var likes=this.getAttribute("data-likes"),isFavorite="true"===this.getAttribute("data-isfavorite");likes="true"===likes||"false"!==likes&&null,setState(this,likes,isFavorite,!1),bindEvents(this)}setTitle(this)},EmbyRatingButtonPrototype.detachedCallback=function(){EmbyButtonPrototype.detachedCallback&&EmbyButtonPrototype.detachedCallback.call(this),clearEvents(this)},EmbyRatingButtonPrototype.setItem=function(item){if(item){this.setAttribute("data-id",item.Id),this.setAttribute("data-serverid",item.ServerId);var userData=item.UserData||{};setState(this,userData.Likes,userData.IsFavorite),bindEvents(this)}else this.removeAttribute("data-id"),this.removeAttribute("data-serverid"),this.removeAttribute("data-likes"),this.removeAttribute("data-isfavorite"),clearEvents(this)},document.registerElement("emby-ratingbutton",{prototype:EmbyRatingButtonPrototype,extends:"button"})}); \ No newline at end of file +define(["connectionManager","serverNotifications","events","globalize","emby-button"],function(connectionManager,serverNotifications,events,globalize,EmbyButtonPrototype){"use strict";function addNotificationEvent(instance,name,handler){var localHandler=handler.bind(instance);events.on(serverNotifications,name,localHandler),instance[name]=localHandler}function removeNotificationEvent(instance,name){var handler=instance[name];handler&&(events.off(serverNotifications,name,handler),instance[name]=null)}function showPicker(button,apiClient,itemId,likes,isFavorite){return apiClient.updateFavoriteStatus(apiClient.getCurrentUserId(),itemId,!isFavorite)}function onClick(e){var button=this,id=button.getAttribute("data-id"),serverId=button.getAttribute("data-serverid"),apiClient=connectionManager.getApiClient(serverId),likes=this.getAttribute("data-likes"),isFavorite="true"===this.getAttribute("data-isfavorite");likes="true"===likes||"false"!==likes&&null,showPicker(button,apiClient,id,likes,isFavorite).then(function(userData){setState(button,userData.Likes,userData.IsFavorite)})}function onUserDataChanged(e,apiClient,userData){var button=this;userData.ItemId===button.getAttribute("data-id")&&setState(button,userData.Likes,userData.IsFavorite)}function setState(button,likes,isFavorite,updateAttribute){var icon=button.querySelector("i");isFavorite?(icon&&(icon.innerHTML="",icon.classList.add("ratingbutton-icon-withrating")),button.classList.add("ratingbutton-withrating")):(icon&&(icon.innerHTML="",icon.classList.remove("ratingbutton-icon-withrating")),button.classList.remove("ratingbutton-withrating")),!1!==updateAttribute&&(button.setAttribute("data-isfavorite",isFavorite),button.setAttribute("data-likes",null===likes?"":likes))}function setTitle(button){button.title=globalize.translate("sharedcomponents#Favorite");var text=button.querySelector(".button-text");text&&(text.innerHTML=button.title)}function clearEvents(button){button.removeEventListener("click",onClick),removeNotificationEvent(button,"UserDataChanged")}function bindEvents(button){clearEvents(button),button.addEventListener("click",onClick),addNotificationEvent(button,"UserDataChanged",onUserDataChanged)}var EmbyRatingButtonPrototype=Object.create(EmbyButtonPrototype);EmbyRatingButtonPrototype.createdCallback=function(){EmbyButtonPrototype.createdCallback&&EmbyButtonPrototype.createdCallback.call(this)},EmbyRatingButtonPrototype.attachedCallback=function(){EmbyButtonPrototype.attachedCallback&&EmbyButtonPrototype.attachedCallback.call(this);var itemId=this.getAttribute("data-id"),serverId=this.getAttribute("data-serverid");if(itemId&&serverId){var likes=this.getAttribute("data-likes"),isFavorite="true"===this.getAttribute("data-isfavorite");likes="true"===likes||"false"!==likes&&null,setState(this,likes,isFavorite,!1),bindEvents(this)}setTitle(this)},EmbyRatingButtonPrototype.detachedCallback=function(){EmbyButtonPrototype.detachedCallback&&EmbyButtonPrototype.detachedCallback.call(this),clearEvents(this)},EmbyRatingButtonPrototype.setItem=function(item){if(item){this.setAttribute("data-id",item.Id),this.setAttribute("data-serverid",item.ServerId);var userData=item.UserData||{};setState(this,userData.Likes,userData.IsFavorite),bindEvents(this)}else this.removeAttribute("data-id"),this.removeAttribute("data-serverid"),this.removeAttribute("data-likes"),this.removeAttribute("data-isfavorite"),clearEvents(this)},document.registerElement("emby-ratingbutton",{prototype:EmbyRatingButtonPrototype,extends:"button"})}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/userdatabuttons/userdatabuttons.js b/dashboard-ui/bower_components/emby-webcomponents/userdatabuttons/userdatabuttons.js index 78825b1134..76aa83d176 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/userdatabuttons/userdatabuttons.js +++ b/dashboard-ui/bower_components/emby-webcomponents/userdatabuttons/userdatabuttons.js @@ -1 +1 @@ -define(["connectionManager","globalize","dom","itemHelper","paper-icon-button-light","material-icons","emby-button","css!./userdatabuttons"],function(connectionManager,globalize,dom,itemHelper){"use strict";function getUserDataButtonHtml(method,itemId,serverId,buttonCssClass,iconCssClass,icon,tooltip,style){"fab-mini"===style&&(style="fab",buttonCssClass=buttonCssClass?buttonCssClass+" mini":"mini");var is="fab"===style?"emby-button":"paper-icon-button-light",className="fab"===style?"autoSize fab":"autoSize";return buttonCssClass&&(className+=" "+buttonCssClass),iconCssClass?iconCssClass+=" ":iconCssClass="",iconCssClass+="md-icon",'"}function onContainerClick(e){var btnUserData=dom.parentWithClass(e.target,"btnUserData");if(btnUserData){var method=btnUserData.getAttribute("data-method");userDataMethods[method](btnUserData)}}function fill(options){var html=getIconsHtml(options);"insertAdjacent"===options.fillMode?options.element.insertAdjacentHTML(options.insertLocation||"beforeend",html):options.element.innerHTML=html,dom.removeEventListener(options.element,"click",onContainerClick,{passive:!0}),dom.addEventListener(options.element,"click",onContainerClick,{passive:!0})}function destroy(options){options.element.innerHTML="",dom.removeEventListener(options.element,"click",onContainerClick,{passive:!0})}function getIconsHtml(options){var item=options.item,includePlayed=options.includePlayed,cssClass=options.cssClass,style=options.style,html="",userData=item.UserData||{},itemId=item.Id;if(itemHelper.isLocalItem(item))return html;var btnCssClass="btnUserData";cssClass&&(btnCssClass+=" "+cssClass);var iconCssClass=options.iconCssClass,serverId=item.ServerId;if(includePlayed!==!1){var tooltipPlayed=globalize.translate("sharedcomponents#MarkPlayed");itemHelper.canMarkPlayed(item)&&(html+=userData.Played?getUserDataButtonHtml("markPlayed",itemId,serverId,btnCssClass+" btnUserDataOn",iconCssClass,"",tooltipPlayed,style):getUserDataButtonHtml("markPlayed",itemId,serverId,btnCssClass,iconCssClass,"",tooltipPlayed,style))}var tooltipFavorite=globalize.translate("sharedcomponents#Favorite");return html+=userData.IsFavorite?getUserDataButtonHtml("markFavorite",itemId,serverId,btnCssClass+" btnUserData btnUserDataOn",iconCssClass,"",tooltipFavorite,style):getUserDataButtonHtml("markFavorite",itemId,serverId,btnCssClass+" btnUserData",iconCssClass,"",tooltipFavorite,style)}function markFavorite(link){var id=link.getAttribute("data-itemid"),serverId=link.getAttribute("data-serverid"),markAsFavorite=!link.classList.contains("btnUserDataOn");favorite(id,serverId,markAsFavorite),markAsFavorite?link.classList.add("btnUserDataOn"):link.classList.remove("btnUserDataOn")}function markLike(link){var id=link.getAttribute("data-itemid"),serverId=link.getAttribute("data-serverid");link.classList.contains("btnUserDataOn")?(clearLike(id,serverId),link.classList.remove("btnUserDataOn")):(likes(id,serverId,!0),link.classList.add("btnUserDataOn")),link.parentNode.querySelector(".btnDislike").classList.remove("btnUserDataOn")}function markDislike(link){var id=link.getAttribute("data-itemid"),serverId=link.getAttribute("data-serverid");link.classList.contains("btnUserDataOn")?(clearLike(id,serverId),link.classList.remove("btnUserDataOn")):(likes(id,serverId,!1),link.classList.add("btnUserDataOn")),link.parentNode.querySelector(".btnLike").classList.remove("btnUserDataOn")}function markPlayed(link){var id=link.getAttribute("data-itemid"),serverId=link.getAttribute("data-serverid");link.classList.contains("btnUserDataOn")?(played(id,serverId,!1),link.classList.remove("btnUserDataOn")):(played(id,serverId,!0),link.classList.add("btnUserDataOn"))}function likes(id,serverId,isLiked){var apiClient=connectionManager.getApiClient(serverId);return apiClient.updateUserItemRating(apiClient.getCurrentUserId(),id,isLiked)}function played(id,serverId,isPlayed){var apiClient=connectionManager.getApiClient(serverId),method=isPlayed?"markPlayed":"markUnplayed";return apiClient[method](apiClient.getCurrentUserId(),id,new Date)}function favorite(id,serverId,isFavorite){var apiClient=connectionManager.getApiClient(serverId);return apiClient.updateFavoriteStatus(apiClient.getCurrentUserId(),id,isFavorite)}function clearLike(id,serverId){var apiClient=connectionManager.getApiClient(serverId);return apiClient.clearUserItemRating(apiClient.getCurrentUserId(),id)}var userDataMethods={markPlayed:markPlayed,markDislike:markDislike,markLike:markLike,markFavorite:markFavorite};return{fill:fill,destroy:destroy,getIconsHtml:getIconsHtml}}); \ No newline at end of file +define(["connectionManager","globalize","dom","itemHelper","paper-icon-button-light","material-icons","emby-button","css!./userdatabuttons"],function(connectionManager,globalize,dom,itemHelper){"use strict";function getUserDataButtonHtml(method,itemId,serverId,buttonCssClass,iconCssClass,icon,tooltip,style){"fab-mini"===style&&(style="fab",buttonCssClass=buttonCssClass?buttonCssClass+" mini":"mini");var is="fab"===style?"emby-button":"paper-icon-button-light",className="fab"===style?"autoSize fab":"autoSize";return buttonCssClass&&(className+=" "+buttonCssClass),iconCssClass?iconCssClass+=" ":iconCssClass="",iconCssClass+="md-icon",'"}function onContainerClick(e){var btnUserData=dom.parentWithClass(e.target,"btnUserData");if(btnUserData){var method=btnUserData.getAttribute("data-method");userDataMethods[method](btnUserData)}}function fill(options){var html=getIconsHtml(options);"insertAdjacent"===options.fillMode?options.element.insertAdjacentHTML(options.insertLocation||"beforeend",html):options.element.innerHTML=html,dom.removeEventListener(options.element,"click",onContainerClick,{passive:!0}),dom.addEventListener(options.element,"click",onContainerClick,{passive:!0})}function destroy(options){options.element.innerHTML="",dom.removeEventListener(options.element,"click",onContainerClick,{passive:!0})}function getIconsHtml(options){var item=options.item,includePlayed=options.includePlayed,cssClass=options.cssClass,style=options.style,html="",userData=item.UserData||{},itemId=item.Id;if(itemHelper.isLocalItem(item))return html;var btnCssClass="btnUserData";cssClass&&(btnCssClass+=" "+cssClass);var iconCssClass=options.iconCssClass,serverId=item.ServerId;if(!1!==includePlayed){var tooltipPlayed=globalize.translate("sharedcomponents#MarkPlayed");itemHelper.canMarkPlayed(item)&&(html+=userData.Played?getUserDataButtonHtml("markPlayed",itemId,serverId,btnCssClass+" btnUserDataOn",iconCssClass,"",tooltipPlayed,style):getUserDataButtonHtml("markPlayed",itemId,serverId,btnCssClass,iconCssClass,"",tooltipPlayed,style))}var tooltipFavorite=globalize.translate("sharedcomponents#Favorite");return html+=userData.IsFavorite?getUserDataButtonHtml("markFavorite",itemId,serverId,btnCssClass+" btnUserData btnUserDataOn",iconCssClass,"",tooltipFavorite,style):getUserDataButtonHtml("markFavorite",itemId,serverId,btnCssClass+" btnUserData",iconCssClass,"",tooltipFavorite,style)}function markFavorite(link){var id=link.getAttribute("data-itemid"),serverId=link.getAttribute("data-serverid"),markAsFavorite=!link.classList.contains("btnUserDataOn");favorite(id,serverId,markAsFavorite),markAsFavorite?link.classList.add("btnUserDataOn"):link.classList.remove("btnUserDataOn")}function markLike(link){var id=link.getAttribute("data-itemid"),serverId=link.getAttribute("data-serverid");link.classList.contains("btnUserDataOn")?(clearLike(id,serverId),link.classList.remove("btnUserDataOn")):(likes(id,serverId,!0),link.classList.add("btnUserDataOn")),link.parentNode.querySelector(".btnDislike").classList.remove("btnUserDataOn")}function markDislike(link){var id=link.getAttribute("data-itemid"),serverId=link.getAttribute("data-serverid");link.classList.contains("btnUserDataOn")?(clearLike(id,serverId),link.classList.remove("btnUserDataOn")):(likes(id,serverId,!1),link.classList.add("btnUserDataOn")),link.parentNode.querySelector(".btnLike").classList.remove("btnUserDataOn")}function markPlayed(link){var id=link.getAttribute("data-itemid"),serverId=link.getAttribute("data-serverid");link.classList.contains("btnUserDataOn")?(played(id,serverId,!1),link.classList.remove("btnUserDataOn")):(played(id,serverId,!0),link.classList.add("btnUserDataOn"))}function likes(id,serverId,isLiked){var apiClient=connectionManager.getApiClient(serverId);return apiClient.updateUserItemRating(apiClient.getCurrentUserId(),id,isLiked)}function played(id,serverId,isPlayed){var apiClient=connectionManager.getApiClient(serverId);return apiClient[isPlayed?"markPlayed":"markUnplayed"](apiClient.getCurrentUserId(),id,new Date)}function favorite(id,serverId,isFavorite){var apiClient=connectionManager.getApiClient(serverId);return apiClient.updateFavoriteStatus(apiClient.getCurrentUserId(),id,isFavorite)}function clearLike(id,serverId){var apiClient=connectionManager.getApiClient(serverId);return apiClient.clearUserItemRating(apiClient.getCurrentUserId(),id)}var userDataMethods={markPlayed:markPlayed,markDislike:markDislike,markLike:markLike,markFavorite:markFavorite};return{fill:fill,destroy:destroy,getIconsHtml:getIconsHtml}}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/usersettings/usersettingsbuilder.js b/dashboard-ui/bower_components/emby-webcomponents/usersettings/usersettingsbuilder.js index 450df5325f..a07cc82b3e 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/usersettings/usersettingsbuilder.js +++ b/dashboard-ui/bower_components/emby-webcomponents/usersettings/usersettingsbuilder.js @@ -1 +1 @@ -define(["appSettings","events"],function(appsettings,events){"use strict";function onSaveTimeout(){var self=this;self.saveTimeout=null,self.currentApiClient.updateDisplayPreferences("usersettings",self.displayPrefs,self.currentUserId,"emby")}function saveServerPreferences(instance){instance.saveTimeout&&clearTimeout(instance.saveTimeout),instance.saveTimeout=setTimeout(onSaveTimeout.bind(instance),50)}function UserSettings(){}return UserSettings.prototype.setUserInfo=function(userId,apiClient){if(this.saveTimeout&&clearTimeout(this.saveTimeout),this.currentUserId=userId,this.currentApiClient=apiClient,!userId)return this.displayPrefs=null,Promise.resolve();var self=this;return apiClient.getDisplayPreferences("usersettings",userId,"emby").then(function(result){result.CustomPrefs=result.CustomPrefs||{},self.displayPrefs=result})},UserSettings.prototype.getData=function(){return this.displayPrefs},UserSettings.prototype.importFrom=function(instance){this.displayPrefs=instance.getData()},UserSettings.prototype.set=function(name,value,enableOnServer){var userId=this.currentUserId;if(!userId)throw new Error("userId cannot be null");var currentValue=this.get(name,enableOnServer),result=appsettings.set(name,value,userId);return enableOnServer!==!1&&this.displayPrefs&&(this.displayPrefs.CustomPrefs[name]=null==value?value:value.toString(),saveServerPreferences(this)),currentValue!==value&&events.trigger(this,"change",[name]),result},UserSettings.prototype.get=function(name,enableOnServer){var userId=this.currentUserId;return userId?enableOnServer!==!1&&this.displayPrefs?this.displayPrefs.CustomPrefs[name]:appsettings.get(name,userId):null},UserSettings.prototype.serverConfig=function(config){var apiClient=this.currentApiClient;return config?apiClient.updateUserConfiguration(this.currentUserId,config):apiClient.getUser(this.currentUserId).then(function(user){return user.Configuration})},UserSettings.prototype.enableCinemaMode=function(val){return null!=val?this.set("enableCinemaMode",val.toString(),!1):(val=this.get("enableCinemaMode",!1),!val||"false"!==val)},UserSettings.prototype.enableNextVideoInfoOverlay=function(val){return null!=val?this.set("enableNextVideoInfoOverlay",val.toString()):(val=this.get("enableNextVideoInfoOverlay"),"false"!==val)},UserSettings.prototype.enableThemeSongs=function(val){return null!=val?this.set("enableThemeSongs",val.toString(),!1):(val=this.get("enableThemeSongs",!1),"false"!==val)},UserSettings.prototype.enableThemeVideos=function(val){return null!=val?this.set("enableThemeVideos",val.toString(),!1):(val=this.get("enableThemeVideos",!1),val?"false"!==val:UserSettings.defaults.enableThemeVideos)},UserSettings.prototype.enableBackdrops=function(val){return null!=val?this.set("enableBackdrops",val.toString(),!1):(val=this.get("enableBackdrops",!1),val?"false"!==val:UserSettings.defaults.enableBackdrops)},UserSettings.prototype.language=function(val){return null!=val?this.set("language",val.toString(),!1):this.get("language",!1)},UserSettings.prototype.dateTimeLocale=function(val){return null!=val?this.set("datetimelocale",val.toString(),!1):this.get("datetimelocale",!1)},UserSettings.prototype.skipBackLength=function(val){return null!=val?this.set("skipBackLength",val.toString()):parseInt(this.get("skipBackLength")||"10000")},UserSettings.prototype.skipForwardLength=function(val){return null!=val?this.set("skipForwardLength",val.toString()):parseInt(this.get("skipForwardLength")||"30000")},UserSettings.prototype.dashboardTheme=function(val){return null!=val?this.set("dashboardTheme",val):this.get("dashboardTheme")},UserSettings.prototype.skin=function(val){return null!=val?this.set("skin",val,!1):this.get("skin",!1)||UserSettings.defaults.skin},UserSettings.prototype.theme=function(val){return null!=val?this.set("appTheme",val,!1):this.get("appTheme",!1)||UserSettings.defaults.theme},UserSettings.prototype.enableSeasonalThemes=function(val){return null!=val?this.set("enableSeasonalThemes",val,!1):"false"!==this.get("enableSeasonalThemes",!1)},UserSettings.prototype.screensaver=function(val){return null!=val?this.set("screensaver",val,!1):this.get("screensaver",!1)||UserSettings.defaults.screensaver},UserSettings.prototype.soundEffects=function(val){return null!=val?this.set("soundeffects",val,!1):this.get("soundeffects",!1)||UserSettings.defaults.soundEffects},UserSettings.defaults={theme:null,enableThemeVideos:!0},UserSettings.prototype.loadQuerySettings=function(key,query){var values=this.get(key);return values?(values=JSON.parse(values),Object.assign(query,values)):query},UserSettings.prototype.saveQuerySettings=function(key,query){var values={};return query.SortBy&&(values.SortBy=query.SortBy),query.SortOrder&&(values.SortOrder=query.SortOrder),this.set(key,JSON.stringify(values))},UserSettings.prototype.getSubtitleAppearanceSettings=function(key){return key=key||"localplayersubtitleappearance3",JSON.parse(this.get(key,!1)||"{}")},UserSettings.prototype.setSubtitleAppearanceSettings=function(value,key){return key=key||"localplayersubtitleappearance3",this.set(key,JSON.stringify(value),!1)},UserSettings.prototype.setFilter=function(key,value){return this.set(key,value,!0)},UserSettings.prototype.getFilter=function(key){return this.get(key,!0)},UserSettings}); \ No newline at end of file +define(["appSettings","events"],function(appsettings,events){"use strict";function onSaveTimeout(){var self=this;self.saveTimeout=null,self.currentApiClient.updateDisplayPreferences("usersettings",self.displayPrefs,self.currentUserId,"emby")}function saveServerPreferences(instance){instance.saveTimeout&&clearTimeout(instance.saveTimeout),instance.saveTimeout=setTimeout(onSaveTimeout.bind(instance),50)}function UserSettings(){}return UserSettings.prototype.setUserInfo=function(userId,apiClient){if(this.saveTimeout&&clearTimeout(this.saveTimeout),this.currentUserId=userId,this.currentApiClient=apiClient,!userId)return this.displayPrefs=null,Promise.resolve();var self=this;return apiClient.getDisplayPreferences("usersettings",userId,"emby").then(function(result){result.CustomPrefs=result.CustomPrefs||{},self.displayPrefs=result})},UserSettings.prototype.getData=function(){return this.displayPrefs},UserSettings.prototype.importFrom=function(instance){this.displayPrefs=instance.getData()},UserSettings.prototype.set=function(name,value,enableOnServer){var userId=this.currentUserId;if(!userId)throw new Error("userId cannot be null");var currentValue=this.get(name,enableOnServer),result=appsettings.set(name,value,userId);return!1!==enableOnServer&&this.displayPrefs&&(this.displayPrefs.CustomPrefs[name]=null==value?value:value.toString(),saveServerPreferences(this)),currentValue!==value&&events.trigger(this,"change",[name]),result},UserSettings.prototype.get=function(name,enableOnServer){var userId=this.currentUserId;return userId?!1!==enableOnServer&&this.displayPrefs?this.displayPrefs.CustomPrefs[name]:appsettings.get(name,userId):null},UserSettings.prototype.serverConfig=function(config){var apiClient=this.currentApiClient;return config?apiClient.updateUserConfiguration(this.currentUserId,config):apiClient.getUser(this.currentUserId).then(function(user){return user.Configuration})},UserSettings.prototype.enableCinemaMode=function(val){return null!=val?this.set("enableCinemaMode",val.toString(),!1):!(val=this.get("enableCinemaMode",!1))||"false"!==val},UserSettings.prototype.enableNextVideoInfoOverlay=function(val){return null!=val?this.set("enableNextVideoInfoOverlay",val.toString()):"false"!==(val=this.get("enableNextVideoInfoOverlay"))},UserSettings.prototype.enableThemeSongs=function(val){return null!=val?this.set("enableThemeSongs",val.toString(),!1):"false"!==(val=this.get("enableThemeSongs",!1))},UserSettings.prototype.enableThemeVideos=function(val){return null!=val?this.set("enableThemeVideos",val.toString(),!1):(val=this.get("enableThemeVideos",!1),val?"false"!==val:UserSettings.defaults.enableThemeVideos)},UserSettings.prototype.enableBackdrops=function(val){return null!=val?this.set("enableBackdrops",val.toString(),!1):(val=this.get("enableBackdrops",!1),val?"false"!==val:UserSettings.defaults.enableBackdrops)},UserSettings.prototype.language=function(val){return null!=val?this.set("language",val.toString(),!1):this.get("language",!1)},UserSettings.prototype.dateTimeLocale=function(val){return null!=val?this.set("datetimelocale",val.toString(),!1):this.get("datetimelocale",!1)},UserSettings.prototype.skipBackLength=function(val){return null!=val?this.set("skipBackLength",val.toString()):parseInt(this.get("skipBackLength")||"10000")},UserSettings.prototype.skipForwardLength=function(val){return null!=val?this.set("skipForwardLength",val.toString()):parseInt(this.get("skipForwardLength")||"30000")},UserSettings.prototype.dashboardTheme=function(val){return null!=val?this.set("dashboardTheme",val):this.get("dashboardTheme")},UserSettings.prototype.skin=function(val){return null!=val?this.set("skin",val,!1):this.get("skin",!1)||UserSettings.defaults.skin},UserSettings.prototype.theme=function(val){return null!=val?this.set("appTheme",val,!1):this.get("appTheme",!1)||UserSettings.defaults.theme},UserSettings.prototype.enableSeasonalThemes=function(val){return null!=val?this.set("enableSeasonalThemes",val,!1):"false"!==this.get("enableSeasonalThemes",!1)},UserSettings.prototype.screensaver=function(val){return null!=val?this.set("screensaver",val,!1):this.get("screensaver",!1)||UserSettings.defaults.screensaver},UserSettings.prototype.soundEffects=function(val){return null!=val?this.set("soundeffects",val,!1):this.get("soundeffects",!1)||UserSettings.defaults.soundEffects},UserSettings.defaults={theme:null,enableThemeVideos:!0},UserSettings.prototype.loadQuerySettings=function(key,query){var values=this.get(key);return values?(values=JSON.parse(values),Object.assign(query,values)):query},UserSettings.prototype.saveQuerySettings=function(key,query){var values={};return query.SortBy&&(values.SortBy=query.SortBy),query.SortOrder&&(values.SortOrder=query.SortOrder),this.set(key,JSON.stringify(values))},UserSettings.prototype.getSubtitleAppearanceSettings=function(key){return key=key||"localplayersubtitleappearance3",JSON.parse(this.get(key,!1)||"{}")},UserSettings.prototype.setSubtitleAppearanceSettings=function(value,key){return key=key||"localplayersubtitleappearance3",this.set(key,JSON.stringify(value),!1)},UserSettings.prototype.setFilter=function(key,value){return this.set(key,value,!0)},UserSettings.prototype.getFilter=function(key){return this.get(key,!0)},UserSettings}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/viewmanager/viewcontainer-lite.js b/dashboard-ui/bower_components/emby-webcomponents/viewmanager/viewcontainer-lite.js index 09809225b8..fc20b90078 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/viewmanager/viewcontainer-lite.js +++ b/dashboard-ui/bower_components/emby-webcomponents/viewmanager/viewcontainer-lite.js @@ -1 +1 @@ -define(["browser","dom","layoutManager","css!./viewcontainer-lite"],function(browser,dom,layoutManager){"use strict";function enableAnimation(){return!browser.tv&&browser.supportsCssAnimation()}function findLastView(parent,className){for(var nodes=parent.childNodes,i=nodes.length-1;i>=0;i--){var node=nodes[i],classList=node.classList;if(classList&&classList.contains(className))return node}}function findViewBefore(elem,className){for(var node=elem.previousSibling;node;){var classList=node.classList;if(classList&&classList.contains(className))return node;node=node.previousSibling}}function loadView(options){if(!options.cancel){cancelActiveAnimations();var selected=selectedPageIndex,previousAnimatable=selected===-1?null:allPages[selected],pageIndex=selected+1;pageIndex>=pageContainerCount&&(pageIndex=0);var viewHtml=options.view,properties=[];options.fullscreen&&properties.push("fullscreen");var view,currentPage=allPages[pageIndex];return currentPage?(triggerDestroy(currentPage),currentPage.insertAdjacentHTML("beforebegin",viewHtml),view=findViewBefore(currentPage,"view"),mainAnimatedPages.removeChild(currentPage)):(mainAnimatedPages.insertAdjacentHTML("beforeend",viewHtml),view=findLastView(mainAnimatedPages,"view")),view.classList.add("mainAnimatedPage"),properties.length&&view.setAttribute("data-properties",properties.join(",")),options.type&&view.setAttribute("data-type",options.type),allPages[pageIndex]=view,onBeforeChange&&onBeforeChange(view,!1,options),beforeAnimate(allPages,pageIndex,selected),animate(view,previousAnimatable,options.transition,options.isBack).then(function(){return selectedPageIndex=pageIndex,currentUrls[pageIndex]=options.url,!options.cancel&&previousAnimatable&&afterAnimate(allPages,pageIndex),view})}}function beforeAnimate(allPages,newPageIndex,oldPageIndex){for(var i=0,length=allPages.length;i=0;i--){var node=nodes[i],classList=node.classList;if(classList&&classList.contains(className))return node}}function findViewBefore(elem,className){for(var node=elem.previousSibling;node;){var classList=node.classList;if(classList&&classList.contains(className))return node;node=node.previousSibling}}function loadView(options){if(!options.cancel){cancelActiveAnimations();var selected=selectedPageIndex,previousAnimatable=-1===selected?null:allPages[selected],pageIndex=selected+1;pageIndex>=pageContainerCount&&(pageIndex=0);var viewHtml=options.view,properties=[];options.fullscreen&&properties.push("fullscreen");var view,currentPage=allPages[pageIndex];return currentPage?(triggerDestroy(currentPage),currentPage.insertAdjacentHTML("beforebegin",viewHtml),view=findViewBefore(currentPage,"view"),mainAnimatedPages.removeChild(currentPage)):(mainAnimatedPages.insertAdjacentHTML("beforeend",viewHtml),view=findLastView(mainAnimatedPages,"view")),view.classList.add("mainAnimatedPage"),properties.length&&view.setAttribute("data-properties",properties.join(",")),options.type&&view.setAttribute("data-type",options.type),allPages[pageIndex]=view,onBeforeChange&&onBeforeChange(view,!1,options),beforeAnimate(allPages,pageIndex,selected),animate(view,previousAnimatable,options.transition,options.isBack).then(function(){return selectedPageIndex=pageIndex,currentUrls[pageIndex]=options.url,!options.cancel&&previousAnimatable&&afterAnimate(allPages,pageIndex),view})}}function beforeAnimate(allPages,newPageIndex,oldPageIndex){for(var i=0,length=allPages.length;i${Primary} + +
    -
    +
    -
    +
    @@ -89,10 +89,10 @@

    - - diff --git a/dashboard-ui/css/dashboard.css b/dashboard-ui/css/dashboard.css index 8aed57f14e..302af2fea5 100644 --- a/dashboard-ui/css/dashboard.css +++ b/dashboard-ui/css/dashboard.css @@ -1 +1 @@ -.dashboardColumn,.dashboardSections{-webkit-box-orient:vertical;-webkit-box-direction:normal}.dashboardFooter{margin-top:3.5em;text-align:center}.dashboardFooter a{text-decoration:none;font-weight:400;margin:0 .7em}.dashboardFooter .appLinks a{margin:.25em}progress{appearance:none;-moz-appearance:none;-webkit-appearance:none;border:2px solid #ccc;-webkit-border-radius:.3em;border-radius:.3em;margin:0;background:#ccc!important}progress[role]:after{background-image:none}progress::-webkit-progress-bar{background:#ccc}progress::-moz-progress-bar{border-radius:.4em;background-image:-moz-linear-gradient(center bottom,#2bc253 37%,#54f054 69%)}progress::-webkit-progress-value{-webkit-border-radius:.4em;border-radius:.4em;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0,#2bc253),color-stop(1,#54f054));background-image:-webkit-linear-gradient(center bottom,#2bc253 37%,#54f054 69%)}progress[aria-valuenow]:before{-webkit-border-radius:.4em;border-radius:.4em;background-image:-o-linear-gradient(center bottom,#2bc253 37%,#54f054 69%)}.localnav{margin-bottom:2.2em!important}@media all and (min-width:50em){.type-interior>.ui-panel-content-wrap>div[data-role=content],.type-interior>div[data-role=content]{padding-right:0;padding-left:0;padding-top:0;overflow:hidden}}.dashboardDocument .dashboardEntryHeaderButton,.dashboardDocument .lnkManageServer{display:none!important}.adminDrawerLogo{padding:1.5em 1em 1.2em;border-bottom:1px solid #e0e0e0;margin-bottom:1em;display:block}.adminDrawerLogo img{height:2.2em}div[data-role=controlgroup] a[data-role=button]{display:inline-block!important;margin:0!important;-webkit-box-shadow:none!important;box-shadow:none!important;-webkit-border-radius:0;border-radius:0}div[data-role=controlgroup] a[data-role=button]:first-child{-webkit-border-bottom-left-radius:.3125em;border-bottom-left-radius:.3125em;-webkit-border-top-left-radius:.3125em;border-top-left-radius:.3125em}div[data-role=controlgroup] a[data-role=button]:last-child{-webkit-border-bottom-right-radius:.3125em;border-bottom-right-radius:.3125em;-webkit-border-top-right-radius:.3125em;border-top-right-radius:.3125em}div[data-role=controlgroup] a[data-role=button]+a[data-role=button]{border-left-width:0!important;margin:0 0 0 -.4em!important}div[data-role=controlgroup] a.ui-btn-active{background:#38c!important;color:#fff!important}.header .imageLink{display:inline-block}.header .imageLink img{height:2.1em;vertical-align:middle}.content-primary{padding-top:6em;padding-right:1em;padding-left:1em}.withTabs .content-primary{padding-top:9em!important}@media all and (min-width:40em){.content-primary{padding-top:7em}.withTabs .content-primary{padding-top:10em!important}}@media all and (min-width:84em){.withTabs .content-primary{padding-top:7em!important}}.content-primary ul:first-child{margin-top:0}.dashboardSections{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column}.dashboardColumn{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;-webkit-flex-shrink:0;flex-shrink:0;-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1}.activeSession:not(.playingSession) .sessionNowPlayingContent,.supporterMembershipDisabled .tabSupporterMembership{display:none}.dashboardSection{-webkit-flex-shrink:0;flex-shrink:0;margin:0 0 2em}.dashboardSection h3{margin:.5em 0}.activeRecordingItems>.card{width:50%}@media all and (min-width:70em){.dashboardSections{-webkit-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;flex-direction:row}.dashboardColumn-2-60{width:46%}.dashboardColumn-2-40{width:27%}.dashboardSection{padding:0 1.25em}.activeRecordingItems>.card{width:25%}}@media all and (min-width:94em){.dashboardColumn-3-46{width:46%}.dashboardColumn-3-27{width:27%}.activeRecordingItems>.card{width:50%}}.premiumBanner img{position:absolute;text-align:right;top:0;right:0;width:4.4em;height:4.4em}.wizardContent{max-width:62em;padding:.5em 2em 1em;margin:0 auto;background:#fff}.wizardNavigation{text-align:right}.wizardContent form{max-width:100%}.wizardContent h2 img{height:2.5em;vertical-align:middle;margin-right:.5em;position:relative;top:-.3em}.scheduledTaskPaperIconItem{outline:0!important}.activeSession{width:100%!important}@media all and (min-width:40em){.activeSession{width:100%!important}}@media all and (min-width:50em){.activeSession{width:50%!important}}.sessionCardFooter{padding-top:.5em!important;padding-bottom:1em!important;border-top:1px solid #eee;text-align:center;position:relative}.sessionAppInfo,.sessionNowPlayingInfo{padding:.5em;overflow:hidden}.sessionCardButtons{min-height:2.7em}.sessionCardButton{margin:0}.sessionNowPlayingContent{-webkit-background-size:cover;background-size:cover;background-repeat:no-repeat;background-position:center center;position:absolute;top:0;left:0;right:0;bottom:0}.sessionNowPlayingInnerContent{position:absolute;top:0;left:0;right:0;bottom:0;font-weight:400}.sessionNowPlayingContent-withbackground+.sessionNowPlayingInnerContent{color:#fff!important;background:rgba(0,0,0,.7)}.sessionAppName{vertical-align:top;max-width:200px}.sessionNowPlayingInfo{position:absolute;left:0;bottom:11px;max-width:50%;-o-text-overflow:ellipsis;text-overflow:ellipsis}.sessionAppInfo img{max-width:32px;max-height:32px;margin-right:5px}.activeSession .playbackProgress{position:absolute;right:0;bottom:0;left:0;height:7px;width:100%;opacity:.95}.activeSession:not(.playingSession) .sessionNowPlayingInfo{bottom:0}.sessionNowPlayingTime{position:absolute;right:10px;bottom:19px}.sessionNowPlayingStreamInfo{white-space:nowrap;font-size:90%}.activeSession .transcodingProgress{right:0;bottom:0;left:0;height:5px;width:100%;opacity:.9;position:absolute}.playbackProgress,.transcodingProgress{appearance:none;-moz-appearance:none;-webkit-appearance:none;margin:0 5px 0 0;height:14px;border:0 solid #222;-webkit-border-radius:0;border-radius:0;width:50px;background:#000!important}.playbackProgress::-webkit-progress-bar,.transcodingProgress::-webkit-progress-bar{background:#000}.transcodingSession .playbackProgress{bottom:5px}.transcodingProgress::-moz-progress-bar{border-radius:0;background-image:-moz-linear-gradient(center bottom,#dd4919 37%,#dd4919 69%)!important}.transcodingProgress::-webkit-progress-value{-webkit-border-radius:0;border-radius:0;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0,#dd4919),color-stop(1,#dd4919))!important;background-image:-webkit-linear-gradient(center bottom,#dd4919 37%,#dd4919 69%)!important}.transcodingProgress[aria-valuenow]:before{-webkit-border-radius:0;border-radius:0;background-image:-o-linear-gradient(center bottom,#dd4919 37%,#dd4919 69%)!important}.playbackProgress::-moz-progress-bar{border-radius:0;background-image:none;background-color:#52B54B}.playbackProgress::-webkit-progress-value{-webkit-border-radius:0;border-radius:0;background-image:none;background-color:#52B54B}.playbackProgress[aria-valuenow]:before{-webkit-border-radius:0;border-radius:0;background-image:none;background-color:#52B54B}@media all and (max-width:34.375em){.sessionAppName{max-width:160px}}@media all and (max-width:31.25em){.sessionAppName{max-width:150px}}.disabledUser{-webkit-filter:grayscale(100%);filter:grayscale(100%)}.disabledUserBanner{margin:0 0 2em}.appLinks a{text-decoration:none!important}.appLinks a+a{margin-left:5px}.appLinks img{height:36px}a[data-role=button]{-webkit-font-smoothing:antialiased;-webkit-user-select:none;-webkit-background-clip:padding-box;-webkit-border-radius:.3125em;border-radius:.3125em;border:1px solid #ddd!important;color:#333!important;cursor:pointer!important;font-family:inherit!important;font-size:inherit!important;font-weight:500!important;margin:0 .25em!important;display:inline-block;padding:.8em 1em;text-align:center;text-decoration:none!important;background:#f6f6f6!important}@-webkit-keyframes rotating{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotating{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.rotatingCircle{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite} \ No newline at end of file +.dashboardColumn,.dashboardSections{-webkit-box-orient:vertical;-webkit-box-direction:normal}.dashboardFooter{margin-top:3.5em;text-align:center}.dashboardFooter a{margin:0 .7em}progress{appearance:none;-moz-appearance:none;-webkit-appearance:none;border:2px solid #ccc;-webkit-border-radius:.3em;border-radius:.3em;margin:0;background:#ccc!important}progress[role]:after{background-image:none}progress::-webkit-progress-bar{background:#ccc}progress::-moz-progress-bar{border-radius:.4em;background-image:-moz-linear-gradient(center bottom,#2bc253 37%,#54f054 69%)}progress::-webkit-progress-value{-webkit-border-radius:.4em;border-radius:.4em;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0,#2bc253),color-stop(1,#54f054));background-image:-webkit-linear-gradient(center bottom,#2bc253 37%,#54f054 69%)}progress[aria-valuenow]:before{-webkit-border-radius:.4em;border-radius:.4em;background-image:-o-linear-gradient(center bottom,#2bc253 37%,#54f054 69%)}.localnav{margin-bottom:2.2em!important}@media all and (min-width:50em){.type-interior>.ui-panel-content-wrap>div[data-role=content],.type-interior>div[data-role=content]{padding-right:0;padding-left:0;padding-top:0;overflow:hidden}}.dashboardDocument{font-size:94.1%}.dashboardDocument .dashboardEntryHeaderButton,.dashboardDocument .lnkManageServer{display:none!important}.adminDrawerLogo{padding:1.5em 1em 1.2em;border-bottom:1px solid #e0e0e0;margin-bottom:1em;display:block}.adminDrawerLogo img{height:2.2em}div[data-role=controlgroup] a[data-role=button]{display:inline-block!important;margin:0!important;-webkit-box-shadow:none!important;box-shadow:none!important;-webkit-border-radius:0;border-radius:0}div[data-role=controlgroup] a[data-role=button]:first-child{-webkit-border-bottom-left-radius:.3125em;border-bottom-left-radius:.3125em;-webkit-border-top-left-radius:.3125em;border-top-left-radius:.3125em}div[data-role=controlgroup] a[data-role=button]:last-child{-webkit-border-bottom-right-radius:.3125em;border-bottom-right-radius:.3125em;-webkit-border-top-right-radius:.3125em;border-top-right-radius:.3125em}div[data-role=controlgroup] a[data-role=button]+a[data-role=button]{border-left-width:0!important;margin:0 0 0 -.4em!important}div[data-role=controlgroup] a.ui-btn-active{background:#38c!important;color:#fff!important}.header .imageLink{display:inline-block}.header .imageLink img{height:2.1em;vertical-align:middle}.content-primary{padding-top:6em;padding-right:1em;padding-left:1em}.withTabs .content-primary{padding-top:9em!important}@media all and (min-width:40em){.content-primary{padding-top:7em}.withTabs .content-primary{padding-top:10em!important}}@media all and (min-width:84em){.withTabs .content-primary{padding-top:7em!important}}.content-primary ul:first-child{margin-top:0}.dashboardSections{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column}.dashboardColumn{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;-webkit-flex-shrink:0;flex-shrink:0;-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1}.activeSession:not(.playingSession) .sessionNowPlayingContent,.supporterMembershipDisabled .tabSupporterMembership{display:none}.dashboardSection{-webkit-flex-shrink:0;flex-shrink:0;margin:0 0 2em}.dashboardSection h3{margin-top:.5em;margin-bottom:.5em}.activeRecordingItems>.card{width:50%}@media all and (min-width:70em){.dashboardSections{-webkit-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;flex-direction:row}.dashboardColumn-2-60{width:46%}.dashboardColumn-2-40{width:27%}.dashboardSection{padding:0 1.5em}.activeRecordingItems>.card{width:25%}}@media all and (min-width:94em){.dashboardColumn-3-46{width:46%}.dashboardColumn-3-27{width:27%}.activeRecordingItems>.card{width:50%}}.premiumBanner img{position:absolute;text-align:right;top:0;right:0;width:4.4em;height:4.4em}.wizardContent{max-width:62em;padding:.5em 2em 1em;margin:0 auto;background:#fff}.wizardNavigation{text-align:right}.wizardContent form{max-width:100%}.wizardContent h2 img{height:2.5em;vertical-align:middle;margin-right:.5em;position:relative;top:-.3em}.scheduledTaskPaperIconItem{outline:0!important}.activeSession{width:100%!important}@media all and (min-width:40em){.activeSession{width:100%!important}}@media all and (min-width:50em){.activeSession{width:50%!important}}.sessionCardFooter{padding-top:.5em!important;padding-bottom:1em!important;border-top:1px solid #eee;text-align:center;position:relative}.sessionAppInfo,.sessionNowPlayingInfo{padding:.5em;overflow:hidden}.sessionCardButtons{min-height:2.7em}.sessionCardButton{margin:0}.sessionNowPlayingContent{-webkit-background-size:cover;background-size:cover;background-repeat:no-repeat;background-position:center center;position:absolute;top:0;left:0;right:0;bottom:0}.sessionNowPlayingInnerContent{position:absolute;top:0;left:0;right:0;bottom:0;font-weight:400}.sessionNowPlayingContent-withbackground+.sessionNowPlayingInnerContent{color:#fff!important;background:rgba(0,0,0,.7)}.sessionAppName{vertical-align:top;max-width:200px}.sessionNowPlayingInfo{position:absolute;left:0;bottom:11px;max-width:50%;-o-text-overflow:ellipsis;text-overflow:ellipsis}.sessionAppInfo img{max-width:32px;max-height:32px;margin-right:5px}.activeSession .playbackProgress{position:absolute;right:0;bottom:0;left:0;height:7px;width:100%;opacity:.95}.activeSession:not(.playingSession) .sessionNowPlayingInfo{bottom:0}.sessionNowPlayingTime{position:absolute;right:10px;bottom:19px}.sessionNowPlayingStreamInfo{white-space:nowrap}.activeSession .transcodingProgress{right:0;bottom:0;left:0;height:5px;width:100%;opacity:.9;position:absolute}.playbackProgress,.transcodingProgress{appearance:none;-moz-appearance:none;-webkit-appearance:none;margin:0 5px 0 0;height:14px;border:0 solid #222;-webkit-border-radius:0;border-radius:0;width:50px;background:#000!important}.playbackProgress::-webkit-progress-bar,.transcodingProgress::-webkit-progress-bar{background:#000}.transcodingSession .playbackProgress{bottom:5px}.transcodingProgress::-moz-progress-bar{border-radius:0;background-image:-moz-linear-gradient(center bottom,#dd4919 37%,#dd4919 69%)!important}.transcodingProgress::-webkit-progress-value{-webkit-border-radius:0;border-radius:0;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0,#dd4919),color-stop(1,#dd4919))!important;background-image:-webkit-linear-gradient(center bottom,#dd4919 37%,#dd4919 69%)!important}.transcodingProgress[aria-valuenow]:before{-webkit-border-radius:0;border-radius:0;background-image:-o-linear-gradient(center bottom,#dd4919 37%,#dd4919 69%)!important}.playbackProgress::-moz-progress-bar{border-radius:0;background-image:none;background-color:#52B54B}.playbackProgress::-webkit-progress-value{-webkit-border-radius:0;border-radius:0;background-image:none;background-color:#52B54B}.playbackProgress[aria-valuenow]:before{-webkit-border-radius:0;border-radius:0;background-image:none;background-color:#52B54B}@media all and (max-width:34.375em){.sessionAppName{max-width:160px}}@media all and (max-width:31.25em){.sessionAppName{max-width:150px}}.disabledUser{-webkit-filter:grayscale(100%);filter:grayscale(100%)}.disabledUserBanner{margin:0 0 2em}.appLinks a{text-decoration:none!important}.appLinks a+a{margin-left:5px}.appLinks img{height:36px}a[data-role=button]{-webkit-font-smoothing:antialiased;-webkit-user-select:none;-webkit-background-clip:padding-box;-webkit-border-radius:.3125em;border-radius:.3125em;border:1px solid #ddd!important;color:#333!important;cursor:pointer!important;font-family:inherit!important;font-weight:500!important;margin:0 .25em!important;display:inline-block;padding:.8em 1em;text-align:center;text-decoration:none!important;background:#f6f6f6!important}@-webkit-keyframes rotating{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotating{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.rotatingCircle{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.pluginPreviewImg{-webkit-box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37)} \ No newline at end of file diff --git a/dashboard-ui/css/images/ani_equalizer_black.gif b/dashboard-ui/css/images/ani_equalizer_black.gif deleted file mode 100644 index 91abce76fd..0000000000 Binary files a/dashboard-ui/css/images/ani_equalizer_black.gif and /dev/null differ diff --git a/dashboard-ui/css/images/checkmarkgreen.png b/dashboard-ui/css/images/checkmarkgreen.png deleted file mode 100644 index ac4915dc69..0000000000 Binary files a/dashboard-ui/css/images/checkmarkgreen.png and /dev/null differ diff --git a/dashboard-ui/css/images/clients/amazon.png b/dashboard-ui/css/images/clients/amazon.png deleted file mode 100644 index fb80a4e2df..0000000000 Binary files a/dashboard-ui/css/images/clients/amazon.png and /dev/null differ diff --git a/dashboard-ui/css/images/clients/android.png b/dashboard-ui/css/images/clients/android.png deleted file mode 100644 index 88e3b93e4f..0000000000 Binary files a/dashboard-ui/css/images/clients/android.png and /dev/null differ diff --git a/dashboard-ui/css/images/clients/androidtv-tile.png b/dashboard-ui/css/images/clients/androidtv-tile.png deleted file mode 100644 index b3dcc770c1..0000000000 Binary files a/dashboard-ui/css/images/clients/androidtv-tile.png and /dev/null differ diff --git a/dashboard-ui/css/images/clients/chrome.png b/dashboard-ui/css/images/clients/chrome.png deleted file mode 100644 index c5e612a4c4..0000000000 Binary files a/dashboard-ui/css/images/clients/chrome.png and /dev/null differ diff --git a/dashboard-ui/css/images/clients/chromecast.png b/dashboard-ui/css/images/clients/chromecast.png deleted file mode 100644 index 1d8ed5df83..0000000000 Binary files a/dashboard-ui/css/images/clients/chromecast.png and /dev/null differ diff --git a/dashboard-ui/css/images/clients/dlna.png b/dashboard-ui/css/images/clients/dlna.png deleted file mode 100644 index 0910220de1..0000000000 Binary files a/dashboard-ui/css/images/clients/dlna.png and /dev/null differ diff --git a/dashboard-ui/css/images/clients/html5.png b/dashboard-ui/css/images/clients/html5.png deleted file mode 100644 index 152730747e..0000000000 Binary files a/dashboard-ui/css/images/clients/html5.png and /dev/null differ diff --git a/dashboard-ui/css/images/clients/ios.png b/dashboard-ui/css/images/clients/ios.png deleted file mode 100644 index 1429af5dc9..0000000000 Binary files a/dashboard-ui/css/images/clients/ios.png and /dev/null differ diff --git a/dashboard-ui/css/images/clients/kodi.png b/dashboard-ui/css/images/clients/kodi.png deleted file mode 100644 index dcb4657ca3..0000000000 Binary files a/dashboard-ui/css/images/clients/kodi.png and /dev/null differ diff --git a/dashboard-ui/css/images/clients/mbc.png b/dashboard-ui/css/images/clients/mbc.png deleted file mode 100644 index 519f6bb438..0000000000 Binary files a/dashboard-ui/css/images/clients/mbc.png and /dev/null differ diff --git a/dashboard-ui/css/images/clients/playstore.png b/dashboard-ui/css/images/clients/playstore.png deleted file mode 100644 index 624dbdc41c..0000000000 Binary files a/dashboard-ui/css/images/clients/playstore.png and /dev/null differ diff --git a/dashboard-ui/css/images/clients/roku.jpg b/dashboard-ui/css/images/clients/roku.jpg deleted file mode 100644 index 63ddf0a350..0000000000 Binary files a/dashboard-ui/css/images/clients/roku.jpg and /dev/null differ diff --git a/dashboard-ui/css/images/clients/windowsphone.png b/dashboard-ui/css/images/clients/windowsphone.png deleted file mode 100644 index 1a31e55f61..0000000000 Binary files a/dashboard-ui/css/images/clients/windowsphone.png and /dev/null differ diff --git a/dashboard-ui/css/images/clients/windowsrt.png b/dashboard-ui/css/images/clients/windowsrt.png deleted file mode 100644 index 6a91da5e62..0000000000 Binary files a/dashboard-ui/css/images/clients/windowsrt.png and /dev/null differ diff --git a/dashboard-ui/css/images/editor/missing.png b/dashboard-ui/css/images/editor/missing.png deleted file mode 100644 index f4a7ff98a3..0000000000 Binary files a/dashboard-ui/css/images/editor/missing.png and /dev/null differ diff --git a/dashboard-ui/css/images/editor/missingbackdrop.png b/dashboard-ui/css/images/editor/missingbackdrop.png deleted file mode 100644 index 9d0916363f..0000000000 Binary files a/dashboard-ui/css/images/editor/missingbackdrop.png and /dev/null differ diff --git a/dashboard-ui/css/images/editor/missinglogo.png b/dashboard-ui/css/images/editor/missinglogo.png deleted file mode 100644 index cc83b76605..0000000000 Binary files a/dashboard-ui/css/images/editor/missinglogo.png and /dev/null differ diff --git a/dashboard-ui/css/images/editor/missingprimaryimage.png b/dashboard-ui/css/images/editor/missingprimaryimage.png deleted file mode 100644 index 7ad7756c23..0000000000 Binary files a/dashboard-ui/css/images/editor/missingprimaryimage.png and /dev/null differ diff --git a/dashboard-ui/css/images/empty.png b/dashboard-ui/css/images/empty.png deleted file mode 100644 index 42e2b375e5..0000000000 Binary files a/dashboard-ui/css/images/empty.png and /dev/null differ diff --git a/dashboard-ui/css/images/favicon.ico b/dashboard-ui/css/images/favicon.ico deleted file mode 100644 index 4d7e2ff432..0000000000 Binary files a/dashboard-ui/css/images/favicon.ico and /dev/null differ diff --git a/dashboard-ui/css/images/fresh.png b/dashboard-ui/css/images/fresh.png deleted file mode 100644 index e6be59c02e..0000000000 Binary files a/dashboard-ui/css/images/fresh.png and /dev/null differ diff --git a/dashboard-ui/css/images/items/detail/audio.png b/dashboard-ui/css/images/items/detail/audio.png deleted file mode 100644 index dfe3fe69c5..0000000000 Binary files a/dashboard-ui/css/images/items/detail/audio.png and /dev/null differ diff --git a/dashboard-ui/css/images/items/detail/game.png b/dashboard-ui/css/images/items/detail/game.png deleted file mode 100644 index e079184657..0000000000 Binary files a/dashboard-ui/css/images/items/detail/game.png and /dev/null differ diff --git a/dashboard-ui/css/images/items/detail/person.png b/dashboard-ui/css/images/items/detail/person.png deleted file mode 100644 index 89980f0b38..0000000000 Binary files a/dashboard-ui/css/images/items/detail/person.png and /dev/null differ diff --git a/dashboard-ui/css/images/items/detail/tv.png b/dashboard-ui/css/images/items/detail/tv.png deleted file mode 100644 index e32fc7f666..0000000000 Binary files a/dashboard-ui/css/images/items/detail/tv.png and /dev/null differ diff --git a/dashboard-ui/css/images/items/detail/video.png b/dashboard-ui/css/images/items/detail/video.png deleted file mode 100644 index cf2f8836e6..0000000000 Binary files a/dashboard-ui/css/images/items/detail/video.png and /dev/null differ diff --git a/dashboard-ui/css/images/items/list/chapter.png b/dashboard-ui/css/images/items/list/chapter.png deleted file mode 100644 index 282e914f8d..0000000000 Binary files a/dashboard-ui/css/images/items/list/chapter.png and /dev/null differ diff --git a/dashboard-ui/css/images/items/list/collection.png b/dashboard-ui/css/images/items/list/collection.png deleted file mode 100644 index afcebcf64f..0000000000 Binary files a/dashboard-ui/css/images/items/list/collection.png and /dev/null differ diff --git a/dashboard-ui/css/images/items/list/person.png b/dashboard-ui/css/images/items/list/person.png deleted file mode 100644 index d9036eff60..0000000000 Binary files a/dashboard-ui/css/images/items/list/person.png and /dev/null differ diff --git a/dashboard-ui/css/images/logo.png b/dashboard-ui/css/images/logo.png deleted file mode 100644 index 7e55e0449d..0000000000 Binary files a/dashboard-ui/css/images/logo.png and /dev/null differ diff --git a/dashboard-ui/css/images/mblogoicon.png b/dashboard-ui/css/images/mblogoicon.png deleted file mode 100644 index 4f3a92d5f7..0000000000 Binary files a/dashboard-ui/css/images/mblogoicon.png and /dev/null differ diff --git a/dashboard-ui/css/images/media/chapterflyout.png b/dashboard-ui/css/images/media/chapterflyout.png deleted file mode 100644 index 3e71abe95c..0000000000 Binary files a/dashboard-ui/css/images/media/chapterflyout.png and /dev/null differ diff --git a/dashboard-ui/css/images/media/pause.png b/dashboard-ui/css/images/media/pause.png deleted file mode 100644 index eb4c7831d5..0000000000 Binary files a/dashboard-ui/css/images/media/pause.png and /dev/null differ diff --git a/dashboard-ui/css/images/media/play.png b/dashboard-ui/css/images/media/play.png deleted file mode 100644 index d6fa91c641..0000000000 Binary files a/dashboard-ui/css/images/media/play.png and /dev/null differ diff --git a/dashboard-ui/css/images/rightarrow.png b/dashboard-ui/css/images/rightarrow.png deleted file mode 100644 index f5771d4199..0000000000 Binary files a/dashboard-ui/css/images/rightarrow.png and /dev/null differ diff --git a/dashboard-ui/css/images/rotten.png b/dashboard-ui/css/images/rotten.png deleted file mode 100644 index 84a4cc21fb..0000000000 Binary files a/dashboard-ui/css/images/rotten.png and /dev/null differ diff --git a/dashboard-ui/css/images/supporter/nonsupporterbadge.png b/dashboard-ui/css/images/supporter/nonsupporterbadge.png deleted file mode 100644 index 0d8a973308..0000000000 Binary files a/dashboard-ui/css/images/supporter/nonsupporterbadge.png and /dev/null differ diff --git a/dashboard-ui/css/images/throbber.gif b/dashboard-ui/css/images/throbber.gif deleted file mode 100644 index 1b5b2fde42..0000000000 Binary files a/dashboard-ui/css/images/throbber.gif and /dev/null differ diff --git a/dashboard-ui/css/images/tour/admin/chapters.png b/dashboard-ui/css/images/tour/admin/chapters.png deleted file mode 100644 index cc1ed9f2ad..0000000000 Binary files a/dashboard-ui/css/images/tour/admin/chapters.png and /dev/null differ diff --git a/dashboard-ui/css/images/tour/admin/cinemamode.png b/dashboard-ui/css/images/tour/admin/cinemamode.png deleted file mode 100644 index 6a9a42503d..0000000000 Binary files a/dashboard-ui/css/images/tour/admin/cinemamode.png and /dev/null differ diff --git a/dashboard-ui/css/images/tour/admin/dashboard.png b/dashboard-ui/css/images/tour/admin/dashboard.png deleted file mode 100644 index 79828727ba..0000000000 Binary files a/dashboard-ui/css/images/tour/admin/dashboard.png and /dev/null differ diff --git a/dashboard-ui/css/images/tour/admin/help.png b/dashboard-ui/css/images/tour/admin/help.png deleted file mode 100644 index 9984f2ad21..0000000000 Binary files a/dashboard-ui/css/images/tour/admin/help.png and /dev/null differ diff --git a/dashboard-ui/css/images/tour/admin/mobile.png b/dashboard-ui/css/images/tour/admin/mobile.png deleted file mode 100644 index ea36fdd8cc..0000000000 Binary files a/dashboard-ui/css/images/tour/admin/mobile.png and /dev/null differ diff --git a/dashboard-ui/css/images/tour/admin/notifications.png b/dashboard-ui/css/images/tour/admin/notifications.png deleted file mode 100644 index 1ba8eba5bd..0000000000 Binary files a/dashboard-ui/css/images/tour/admin/notifications.png and /dev/null differ diff --git a/dashboard-ui/css/images/tour/admin/plugins.png b/dashboard-ui/css/images/tour/admin/plugins.png deleted file mode 100644 index 3c2073cebc..0000000000 Binary files a/dashboard-ui/css/images/tour/admin/plugins.png and /dev/null differ diff --git a/dashboard-ui/css/images/tour/admin/scheduledtasks.png b/dashboard-ui/css/images/tour/admin/scheduledtasks.png deleted file mode 100644 index ea0a901a02..0000000000 Binary files a/dashboard-ui/css/images/tour/admin/scheduledtasks.png and /dev/null differ diff --git a/dashboard-ui/css/images/tour/admin/subtitles.png b/dashboard-ui/css/images/tour/admin/subtitles.png deleted file mode 100644 index 73473b193a..0000000000 Binary files a/dashboard-ui/css/images/tour/admin/subtitles.png and /dev/null differ diff --git a/dashboard-ui/css/images/tour/admin/sync.png b/dashboard-ui/css/images/tour/admin/sync.png deleted file mode 100644 index 28f80d4bf0..0000000000 Binary files a/dashboard-ui/css/images/tour/admin/sync.png and /dev/null differ diff --git a/dashboard-ui/css/images/tour/admin/users.png b/dashboard-ui/css/images/tour/admin/users.png deleted file mode 100644 index 3a4c610a16..0000000000 Binary files a/dashboard-ui/css/images/tour/admin/users.png and /dev/null differ diff --git a/dashboard-ui/css/images/tour/enjoy.jpg b/dashboard-ui/css/images/tour/enjoy.jpg deleted file mode 100644 index 4ebba4d7cc..0000000000 Binary files a/dashboard-ui/css/images/tour/enjoy.jpg and /dev/null differ diff --git a/dashboard-ui/css/images/tour/web/tourcollections.jpg b/dashboard-ui/css/images/tour/web/tourcollections.jpg deleted file mode 100644 index aa7161cd02..0000000000 Binary files a/dashboard-ui/css/images/tour/web/tourcollections.jpg and /dev/null differ diff --git a/dashboard-ui/css/images/tour/web/tourcontent.jpg b/dashboard-ui/css/images/tour/web/tourcontent.jpg deleted file mode 100644 index 7d9367e514..0000000000 Binary files a/dashboard-ui/css/images/tour/web/tourcontent.jpg and /dev/null differ diff --git a/dashboard-ui/css/images/tour/web/toureditor.png b/dashboard-ui/css/images/tour/web/toureditor.png deleted file mode 100644 index f1f4cc17bf..0000000000 Binary files a/dashboard-ui/css/images/tour/web/toureditor.png and /dev/null differ diff --git a/dashboard-ui/css/images/tour/web/tourmobile1.jpg b/dashboard-ui/css/images/tour/web/tourmobile1.jpg deleted file mode 100644 index b0890ea809..0000000000 Binary files a/dashboard-ui/css/images/tour/web/tourmobile1.jpg and /dev/null differ diff --git a/dashboard-ui/css/images/tour/web/tourmobile2.png b/dashboard-ui/css/images/tour/web/tourmobile2.png deleted file mode 100644 index 0bc6142be0..0000000000 Binary files a/dashboard-ui/css/images/tour/web/tourmobile2.png and /dev/null differ diff --git a/dashboard-ui/css/images/tour/web/tourmouseover.jpg b/dashboard-ui/css/images/tour/web/tourmouseover.jpg deleted file mode 100644 index e954dad677..0000000000 Binary files a/dashboard-ui/css/images/tour/web/tourmouseover.jpg and /dev/null differ diff --git a/dashboard-ui/css/images/tour/web/tourmovies.jpg b/dashboard-ui/css/images/tour/web/tourmovies.jpg deleted file mode 100644 index 1a04e1e812..0000000000 Binary files a/dashboard-ui/css/images/tour/web/tourmovies.jpg and /dev/null differ diff --git a/dashboard-ui/css/images/tour/web/tourmysync.png b/dashboard-ui/css/images/tour/web/tourmysync.png deleted file mode 100644 index e78587dcf9..0000000000 Binary files a/dashboard-ui/css/images/tour/web/tourmysync.png and /dev/null differ diff --git a/dashboard-ui/css/images/tour/web/tourplaylist.png b/dashboard-ui/css/images/tour/web/tourplaylist.png deleted file mode 100644 index 94df7a906d..0000000000 Binary files a/dashboard-ui/css/images/tour/web/tourplaylist.png and /dev/null differ diff --git a/dashboard-ui/css/images/tour/web/tourtaphold.jpg b/dashboard-ui/css/images/tour/web/tourtaphold.jpg deleted file mode 100644 index c032dcda93..0000000000 Binary files a/dashboard-ui/css/images/tour/web/tourtaphold.jpg and /dev/null differ diff --git a/dashboard-ui/css/images/tour/web/tourusersettings1.png b/dashboard-ui/css/images/tour/web/tourusersettings1.png deleted file mode 100644 index 09cc9a647c..0000000000 Binary files a/dashboard-ui/css/images/tour/web/tourusersettings1.png and /dev/null differ diff --git a/dashboard-ui/css/images/tour/web/tourusersettings2.png b/dashboard-ui/css/images/tour/web/tourusersettings2.png deleted file mode 100644 index 970eea499e..0000000000 Binary files a/dashboard-ui/css/images/tour/web/tourusersettings2.png and /dev/null differ diff --git a/dashboard-ui/css/images/tour/web/tourusersettings3.png b/dashboard-ui/css/images/tour/web/tourusersettings3.png deleted file mode 100644 index 65115569e7..0000000000 Binary files a/dashboard-ui/css/images/tour/web/tourusersettings3.png and /dev/null differ diff --git a/dashboard-ui/css/images/tour/web/tourusersettings4.png b/dashboard-ui/css/images/tour/web/tourusersettings4.png deleted file mode 100644 index ed9bd92a9c..0000000000 Binary files a/dashboard-ui/css/images/tour/web/tourusersettings4.png and /dev/null differ diff --git a/dashboard-ui/css/images/userdata/administrator.png b/dashboard-ui/css/images/userdata/administrator.png deleted file mode 100644 index cf6d67457a..0000000000 Binary files a/dashboard-ui/css/images/userdata/administrator.png and /dev/null differ diff --git a/dashboard-ui/css/images/userdata/password.png b/dashboard-ui/css/images/userdata/password.png deleted file mode 100644 index 3369809c60..0000000000 Binary files a/dashboard-ui/css/images/userdata/password.png and /dev/null differ diff --git a/dashboard-ui/css/images/userflyoutdefault.png b/dashboard-ui/css/images/userflyoutdefault.png deleted file mode 100644 index f27a4bcb34..0000000000 Binary files a/dashboard-ui/css/images/userflyoutdefault.png and /dev/null differ diff --git a/dashboard-ui/css/librarybrowser.css b/dashboard-ui/css/librarybrowser.css index 9af0507408..7e0c3290a2 100644 --- a/dashboard-ui/css/librarybrowser.css +++ b/dashboard-ui/css/librarybrowser.css @@ -1 +1 @@ -.headerUserImage,.navMenuOption,.pageTitle{vertical-align:middle}.detailButton-mobile,.itemLinks,.listPaging,.sectionTabs,.viewSettings{text-align:center}.headerSelectedPlayer,.itemMiscInfo{-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden}.libraryPage{padding-top:6em!important}.itemDetailPage{padding-top:4em!important}.standalonePage{padding-top:5.5em!important}.wizardPage{padding-top:7em!important}.libraryPage:not(.noSecondaryNavPage){padding-top:9.2em!important}.absolutePageTabContent{position:absolute;left:0;right:0;bottom:0;z-index:1;margin:0!important;top:6.9em!important;-webkit-transition:-webkit-transform .2s ease-out;-o-transition:transform .2s ease-out;transition:transform .2s ease-out}.pageTabContent:not(.is-active){display:none!important}.navMenuDivider{height:1px;margin:.5em 0;display:none}.headerUserImage{-webkit-background-size:contain;background-size:contain;background-repeat:no-repeat;background-position:center center;-webkit-border-radius:100em;border-radius:100em;display:inline-block}.headerUserButtonRound img{-webkit-border-radius:100em;border-radius:100em}.headerButton{-webkit-flex-shrink:0;flex-shrink:0;font-size:108%}.hideMainDrawer .mainDrawerButton{display:none}.noHeaderRight .headerRight,.noHomeButtonHeader .headerHomeButton{display:none!important}.pageTitle{display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;margin:0 0 0 .5em;height:1.7em;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-flex-shrink:1;flex-shrink:1}.detailButton-mobile,.skinHeader{-webkit-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal}.pageTitleWithLogo{background-position:left center;-webkit-background-size:contain;background-size:contain;background-repeat:no-repeat;width:13.2em}.pageTitleWithDefaultLogo{height:1.22em}.skinHeader{position:fixed;right:0;left:0;z-index:999;top:0;border:0;display:-webkit-box;display:-webkit-flex;display:flex;flex-direction:column;background-color:#121212;color:#ccc;contain:layout style paint}.mainAnimatedPages,.pageTabContent{contain:layout style}.hiddenViewMenuBar .skinHeader{display:none}.headerLeft,.headerRight{display:-webkit-box;display:-webkit-flex;-webkit-box-align:center}.headerTop{padding:.865em 0}.headerLeft{display:flex;-webkit-align-items:center;align-items:center;-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1;overflow:hidden}.sectionTabs{width:100%}.headerRight{display:flex;-webkit-align-items:center;align-items:center;-webkit-box-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.selectedMediaFolder{background-color:#f2f2f2!important}.navMenuOption{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;text-decoration:none;color:inherit;padding:.9em 0 .9em 2.4em;-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1}.layout-desktop .searchTabButton,.layout-mobile .searchTabButton,.layout-tv .headerSearchButton,body:not(.dashboardDocument) .btnNotifications{display:none!important}.navMenuOptionIcon{margin-right:1em;-webkit-flex-shrink:0;flex-shrink:0}.sidebarHeader{padding-left:1.2em;margin:1em 0 .5em}.dashboardDocument .skinBody{-webkit-transition:left ease-in-out .3s,padding ease-in-out .3s;-o-transition:left ease-in-out .3s,padding ease-in-out .3s;transition:left ease-in-out .3s,padding ease-in-out .3s;position:absolute;top:0;right:0;bottom:0;left:0}@media all and (max-width:40em){.navMenuOption{font-size:110%}}.mainDrawer-scrollContainer{padding-bottom:10vh}@media all and (min-width:40em){.dashboardDocument .adminDrawerLogo,.dashboardDocument .mainDrawerButton,.dashboardDocument .tmla-mask{display:none!important}.dashboardDocument .mainDrawer{z-index:inherit!important;left:0!important;top:0!important;-webkit-transform:none!important;transform:none!important;-webkit-box-shadow:none!important;box-shadow:none!important;width:20.07em!important;font-size:92%}.dashboardDocument .mainDrawer-scrollContainer{margin-top:5em!important}.dashboardDocument.withSectionTabs .mainDrawer-scrollContainer{margin-top:8.7em!important}.dashboardDocument .skinBody{left:20em}}@media all and (min-width:40em) and (max-width:84em){.dashboardDocument.withSectionTabs .mainDrawer-scrollContainer{margin-top:8.4em!important}}@media all and (max-width:84em){.withSectionTabs .headerTop{padding-bottom:.2em}.sectionTabs{font-size:83.5%}}@media all and (min-width:84em){.headerTop{padding:1.489em 0}.headerTabs{-webkit-align-self:center;align-self:center;width:auto;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;margin-top:-3.34em;position:relative;top:-1.1em}.libraryPage:not(.noSecondaryNavPage){padding-top:6.3em!important}.pageWithAbsoluteTabs:not(.noSecondaryNavPage){padding-top:8.4em!important}.absolutePageTabContent{top:5.7em!important}.dashboardDocument.withSectionTabs .mainDrawer-scrollContainer{margin-top:6.1em!important}.dashboardDocument .mainDrawer-scrollContainer{margin-top:6.3em!important}}.headerSelectedPlayer{max-width:10em;white-space:nowrap}@media all and (max-width:37.5em){.headerSelectedPlayer{display:none}}.hidingAnimatedTab{visibility:hidden}.headerArrowImage{height:20px;margin-left:.5em}.backdropContainer{position:fixed;top:0;left:0;right:0;bottom:0;z-index:-1}.libraryPage .header{padding-bottom:0}.flexPageTabContent.is-active{display:-webkit-box!important;display:-webkit-flex!important;display:flex!important}.viewSettings{margin:0 0 .25em}.viewControls+.listTopPaging{margin-left:.5em!important}.criticReview{margin:1.5em 0;background:#222;padding:.8em .8em .8em 3em;-webkit-border-radius:.3em;border-radius:.3em;position:relative}.detailLogo,.itemBackdrop{background-repeat:no-repeat;background-position:center center}.criticReview:first-child{margin-top:.5em}.criticReview img{width:2.4em}.criticRatingScore{margin-bottom:.5em}.itemTag{display:inline-block;margin-right:1em}.itemOverview{white-space:pre-wrap}.itemLinks{padding:0}.itemLinks p{margin:.5em 0}.reviewLink,.reviewerName{margin-top:.5em}.reviewerName{color:#ccc}.reviewDate{margin-left:1em}.reviewScore{position:absolute;left:.8em}.itemBackdrop{-webkit-background-size:cover;background-size:cover;height:50vh;position:relative}.itemBackdropProgressBar{position:absolute!important;bottom:0;left:0;right:0}.itemBackdropFader{position:absolute;bottom:-1px;left:0;right:0;height:15vh}.desktopMiscInfoContainer{position:absolute;bottom:.75em}.detailImageContainer{margin-right:2em;width:280px;-webkit-flex-shrink:0;flex-shrink:0}.detailPagePrimaryContent{position:relative;-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1}.detailLogo{width:21.3em;height:5em;position:absolute;top:13.5%;right:19.5%;-webkit-background-size:contain;background-size:contain}@media all and (max-width:87.5em){.detailLogo{right:5%}}@media all and (max-width:75em){.detailLogo{right:2%}}@media all and (max-width:68.75em){.detailLogo{width:14.91em;height:3.5em;right:5%;bottom:5%;top:auto;background-position:center right;display:none}}.itemDetailImage{width:100%}.thumbDetailImageContainer{width:400px}.itemDetailImage.loaded{-webkit-box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37)}@media all and (max-width:62.5em){.detailPageContent{position:relative}.detailImageContainer{position:absolute;top:-90px;left:5%;width:auto}.itemDetailImage{height:120px;width:auto!important}.btnPlaySimple{display:none!important}}@media all and (min-width:62.5em){.itemBackdrop{display:none}.detailPagePrimaryContainer{display:-webkit-box;display:-webkit-flex;display:flex;margin-bottom:3.6em}}@media all and (max-width:75em){.lnkSibling{display:none!important}}.parentName{display:block;margin-bottom:.5em}.emby-button.detailFloatingButton{position:absolute;background-color:rgba(0,0,0,.5)!important;z-index:1;top:50%;left:50%;margin:-2.2em 0 0 -2.2em;border:2.7px solid rgba(255,255,255,.6);padding:.38em!important;color:rgba(255,255,255,.76)}.emby-button.detailFloatingButton i{font-size:3.5em}@media all and (max-width:62.5em){.parentName{margin-bottom:1em}.itemDetailPage{padding-top:0!important}.detailimg-hidemobile{display:none}}@media all and (min-width:31.25em){.mobileDetails{display:none}}@media all and (max-width:31.25em){.desktopDetails{display:none!important}}.detailButton-mobile,.mainDetailButtons{display:-webkit-box;display:-webkit-flex}.itemName{margin:.5em 0}.empty{margin:0}.detailCollapsibleSection:not(.hide)+.detailCollapsibleSection{margin-top:-2em}.detailPageCollabsible{margin-top:0}.mainDetailButtons{display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-flex-wrap:wrap;flex-wrap:wrap;margin:1em 0}.recordingFields button{margin-left:0;margin-right:.5em;-webkit-flex-shrink:0;flex-shrink:0}.mainDetailButtons.hide+.recordingFields{margin-top:1.5em!important}.mainDetailButtons>.raised{-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.detailButton-mobile{display:flex;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;align-items:center;margin:0!important;padding-top:.5em!important;padding-bottom:.5em!important}@media all and (min-width:29em){.detailButton-mobile{margin-right:.1em!important}}@media all and (min-width:32em){.detailButton-mobile{margin-right:.2em!important}}@media all and (min-width:35em){.detailButton-mobile{margin-right:.3em!important}}.detailButton-mobile-content{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.detailButton-mobile-icon{font-size:1.6em!important;width:1em;height:1em}.detailImageProgressContainer{position:absolute;bottom:4px;right:1px;left:1px;text-align:center}@media all and (max-width:62.5em){.detailButton-mobile-text{margin-top:.7em;font-size:80%;font-weight:400}.mainDetailButtons{margin-left:-.5em}}@media all and (min-width:62.5em){.detailButton-mobile-icon:not(.always),.detailButton-mobile-text.texthide{display:none!important}.detailButton-mobile{padding-top:0!important;padding-bottom:0!important;height:3em}.mainDetailButtons{font-size:108%;margin:1.25em 0}.detailButton-mobile-icon:not(.notext){margin-right:.25em}.detailButton-mobile-icon.playstatebutton-icon-unplayed{opacity:.2}.detailButton-mobile-content{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;flex-direction:row}}.listTopPaging,.viewControls{display:inline-block}@media all and (max-width:50em){.editorMenuLink{display:none}.homeLibraryButton{width:46%!important}}.itemMiscInfo{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-webkit-align-items:center;align-items:center}@media all and (max-width:31.25em){.mobileDetails .itemMiscInfo{text-align:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.itemMiscInfo .endsAt{display:none}}.layout-tv .detailVerticalSection{margin-bottom:3.4em!important}.detailPageContent{border-spacing:0;border-collapse:collapse;padding-top:3em}@media all and (max-width:62.5em){.detailPageContent-nodetailimg{padding-top:0;margin-top:-3em}}@media all and (min-width:75em){.itemDetailPage .padded-left{padding-left:4%!important}.itemDetailPage .padded-right{padding-right:4%!important}}.mediaInfoContent{line-height:1.5em}.mediaInfoStream{margin:0 3em 0 0;display:inline-block;vertical-align:top}.mediaInfoStreamType{display:block;margin:1em 0}.mediaInfoAttribute,.mediaInfoLabel{display:inline-block}.mediaInfoLabel{margin-right:1em;font-weight:600}.recordingProgressBar::-moz-progress-bar{background-color:#c33}.recordingProgressBar::-webkit-progress-value{background-color:#c33}.recordingProgressBar[aria-valuenow]:before{background-color:#c33}.timelineHeader{margin-bottom:.25em;line-height:1.25em;line-height:initial}.itemsContainer{margin:0 auto}@media all and (max-height:31.25em){.itemBackdrop{height:52vh}}@media all and (max-width:75em){.listViewUserDataButtons{display:none!important}}@media all and (max-width:62.5em){.detailsHiddenOnMobile{display:none}}.btnSyncComplete{background:#673AB7!important}.btnSyncComplete i{-webkit-border-radius:1000px;border-radius:1000px}.bulletSeparator{margin:0 .35em}.mediaInfoIcons{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;margin:1em 0;-webkit-flex-wrap:wrap;flex-wrap:wrap}.sectionTitleButton,.sectionTitleIconButton{margin-right:0!important;display:inline-block;vertical-align:middle}.verticalSection{margin-bottom:1em}@media all and (max-width:500px),(max-height:720px){.verticalSection{margin-bottom:1em}}.verticalSection-extrabottompadding{margin-bottom:2.7em}.sectionTitleContainer{margin-bottom:.5em}.sectionTitle{margin-bottom:1em}.sectionTitle-cards{margin-bottom:.3em}.sectionTitleContainer>.sectionTitle{margin-top:0;margin-bottom:0;display:inline-block;vertical-align:middle}.sectionTitleButton{margin-left:1.5em!important;-webkit-flex-shrink:0;flex-shrink:0}.sectionTitleButton+.sectionTitleButton{margin-left:.5em!important}.sectionTitleIconButton{margin-left:1.5em!important;-webkit-flex-shrink:0;flex-shrink:0;color:#aaa!important;font-size:84%!important;padding:.5em!important}.sectionTitle-cards{margin-left:.12em;margin-top:0}.layout-tv .sectionTitle-cards{margin-left:.3em}.horizontalItemsContainer{display:-webkit-box;display:-webkit-flex;display:flex}.sectionTitleTextButton{margin:0!important;display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:inline-flex!important;color:inherit!important}.sectionTitleTextButton:not(.padded-left){padding:0!important}.sectionTitleTextButton.padded-left{padding-bottom:0!important;padding-right:0!important;padding-top:0!important}.sectionTitleTextButton>.sectionTitle{margin-bottom:0}.padded-left{padding-left:2%}.padded-right{padding-right:2%}.padded-top{padding-top:1em}.padded-bottom{padding-bottom:1em}.layout-tv .padded-top-focusscale{padding-top:1.6em;margin-top:-1.6em}.layout-tv .padded-bottom-focusscale{padding-bottom:1.6em;margin-bottom:-1.6em}@media all and (min-height:500px){.padded-left-withalphapicker{padding-left:7.5%}.padded-right-withalphapicker{padding-right:7.5%}}@media all and (min-height:500px) and (min-width:400px){.padded-left-withalphapicker{padding-left:7%}.padded-right-withalphapicker{padding-right:7%}}@media all and (min-width:500px){.padded-left{padding-left:6%}.padded-right{padding-right:6%}}@media all and (min-width:600px){.padded-left{padding-left:4%}.padded-right{padding-right:4%}}@media all and (min-width:800px){.padded-left{padding-left:3.2%}.padded-right{padding-right:3.2%}}@media all and (min-width:1280px){.padded-left{padding-left:3.6%}.padded-right{padding-right:3.6%}}@media all and (min-width:800px){.layout-tv .padded-left-withalphapicker{padding-left:4.5%}.layout-tv .padded-right-withalphapicker{padding-right:4.5%}}.homeLibraryButton{min-width:18%;margin:.5em!important}.searchfields-icon{color:#aaa}.button-accent-flat{color:#52B54B!important}.clearLink{text-decoration:none;font-weight:inherit!important;vertical-align:middle;color:inherit!important} \ No newline at end of file +.headerUserImage,.navMenuOption,.pageTitle{vertical-align:middle}.detailButton-mobile,.itemLinks,.listPaging,.sectionTabs,.viewSettings{text-align:center}.headerSelectedPlayer,.itemMiscInfo,.navMenuOptionText{-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden}.libraryPage{padding-top:7em!important}.itemDetailPage{padding-top:4em!important}.standalonePage{padding-top:4.5em!important}.wizardPage{padding-top:7em!important}.libraryPage:not(.noSecondaryNavPage){padding-top:7.5em!important}.absolutePageTabContent{position:absolute;left:0;right:0;bottom:0;z-index:1;margin:0!important;top:6.9em!important;-webkit-transition:-webkit-transform .2s ease-out;-o-transition:transform .2s ease-out;transition:transform .2s ease-out}.pageTabContent:not(.is-active){display:none!important}.headerUserImage{-webkit-background-size:contain;background-size:contain;background-repeat:no-repeat;background-position:center center;-webkit-border-radius:100em;border-radius:100em;display:inline-block}.headerUserButtonRound img{-webkit-border-radius:100em;border-radius:100em}.headerButton{-webkit-flex-shrink:0;flex-shrink:0}.hideMainDrawer .mainDrawerButton{display:none}.noHeaderRight .headerRight,.noHomeButtonHeader .headerHomeButton{display:none!important}.pageTitle{display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;margin:0 0 0 .5em;height:1.7em;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-flex-shrink:1;flex-shrink:1}.headerLeft,.skinHeader{display:-webkit-box;display:-webkit-flex}.detailButton-mobile,.skinHeader{-webkit-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal}.pageTitleWithLogo{background-position:left center;-webkit-background-size:contain;background-size:contain;background-repeat:no-repeat;width:13.2em}.pageTitleWithDefaultLogo{height:1.22em}.skinHeader{position:fixed;right:0;left:0;z-index:999;top:0;border:0;display:flex;flex-direction:column;contain:layout style paint}.headerLeft,.headerRight{-webkit-box-align:center}.mainAnimatedPages,.pageTabContent{contain:layout style}.hiddenViewMenuBar .skinHeader{display:none}.headerTop{padding:.54em 0}.headerLeft{display:flex;-webkit-align-items:center;align-items:center;-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1;overflow:hidden}.sectionTabs{width:100%}.headerRight{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-box-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.selectedMediaFolder{background-color:#f2f2f2!important}.navMenuOption{display:-webkit-box!important;display:-webkit-flex!important;display:flex!important;-webkit-box-align:center;-webkit-align-items:center;align-items:center;text-decoration:none;color:inherit;padding:.9em 0 .9em 2.4em!important;-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1;font-weight:400!important;margin:0!important;-webkit-border-radius:0!important;border-radius:0!important}.navMenuOptionIcon{margin-right:1.2em;-webkit-flex-shrink:0;flex-shrink:0}.navMenuOptionText{white-space:nowrap}.sidebarHeader{padding-left:1.2em;margin:1em 0 .5em}.dashboardDocument .skinBody{-webkit-transition:left ease-in-out .3s,padding ease-in-out .3s;-o-transition:left ease-in-out .3s,padding ease-in-out .3s;transition:left ease-in-out .3s,padding ease-in-out .3s;position:absolute;top:0;right:0;bottom:0;left:0}.layout-desktop .searchTabButton,.layout-mobile .searchTabButton,.layout-tv .headerSearchButton{display:none!important}.mainDrawer-scrollContainer{padding-bottom:10vh}@media all and (min-width:40em){.dashboardDocument .adminDrawerLogo,.dashboardDocument .mainDrawerButton{display:none!important}.dashboardDocument .mainDrawer{z-index:inherit!important;left:0!important;top:0!important;-webkit-transform:none!important;transform:none!important;-webkit-box-shadow:none!important;box-shadow:none!important;width:20.205em!important;font-size:94%}.dashboardDocument .mainDrawer-scrollContainer{margin-top:5em!important}.dashboardDocument withSectionTabs .mainDrawer-scrollContainer{margin-top:8.7em!important}.dashboardDocument .skinBody{left:20em}}@media all and (min-width:40em) and (max-width:84em){.dashboardDocument.withSectionTabs .mainDrawer-scrollContainer{margin-top:8.4em!important}}@media all and (max-width:60em){.libraryDocument .mainDrawerButton{display:none}}@media all and (max-width:84em){.withSectionTabs .headerTop{padding-bottom:.2em}.sectionTabs{font-size:83.5%}}@media all and (min-width:84em){.headerTop{padding:1.489em 0}.headerTabs{-webkit-align-self:center;align-self:center;width:auto;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;margin-top:-3.34em;position:relative;top:-1.05em}.libraryPage:not(.noSecondaryNavPage){padding-top:4.6em!important}.pageWithAbsoluteTabs:not(.noSecondaryNavPage){padding-top:6.7em!important}.absolutePageTabContent{top:5.7em!important}.dashboardDocument.withSectionTabs .mainDrawer-scrollContainer{margin-top:6.1em!important}.dashboardDocument .mainDrawer-scrollContainer{margin-top:6.3em!important}}.headerSelectedPlayer{max-width:10em;white-space:nowrap}@media all and (max-width:37.5em){.headerSelectedPlayer{display:none}}.hidingAnimatedTab{visibility:hidden}.headerArrowImage{height:20px;margin-left:.5em}.backdropContainer{position:fixed;top:0;left:0;right:0;bottom:0;z-index:-1}.libraryPage .header{padding-bottom:0}.flexPageTabContent.is-active{display:-webkit-box!important;display:-webkit-flex!important;display:flex!important}.viewSettings{margin:0 0 .25em}.viewControls+.listTopPaging{margin-left:.5em!important}.criticReview{margin:1.5em 0;background:#222;padding:.8em .8em .8em 3em;-webkit-border-radius:.3em;border-radius:.3em;position:relative}.detailLogo,.itemBackdrop{background-repeat:no-repeat;background-position:center center}.criticReview:first-child{margin-top:.5em}.criticReview img{width:2.4em}.criticRatingScore{margin-bottom:.5em}.itemTag{display:inline-block;margin-right:1em}.itemOverview{white-space:pre-wrap}.itemLinks{padding:0}.itemLinks p{margin:.5em 0}.reviewLink,.reviewerName{margin-top:.5em}.reviewerName{color:#ccc}.reviewDate{margin-left:1em}.reviewScore{position:absolute;left:.8em}.itemBackdrop{-webkit-background-size:cover;background-size:cover;height:50vh;position:relative}.itemBackdropProgressBar{position:absolute!important;bottom:0;left:0;right:0}.itemBackdropFader{position:absolute;bottom:-1px;left:0;right:0;height:15vh}.desktopMiscInfoContainer{position:absolute;bottom:.75em}.detailImageContainer{margin-right:2em;width:280px;-webkit-flex-shrink:0;flex-shrink:0;margin-left:.6em}.detailPagePrimaryContent{position:relative;-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1}.detailLogo{width:21.3em;height:5em;position:absolute;top:13.5%;right:19.5%;-webkit-background-size:contain;background-size:contain}@media all and (max-width:87.5em){.detailLogo{right:5%}}@media all and (max-width:75em){.detailLogo{right:2%}}@media all and (max-width:68.75em){.detailLogo{width:14.91em;height:3.5em;right:5%;bottom:5%;top:auto;background-position:center right;display:none}}.itemDetailImage{width:100%;-webkit-box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37);box-shadow:0 .0725em .29em 0 rgba(0,0,0,.37)}.thumbDetailImageContainer{width:400px}@media all and (max-width:62.5em){.detailPageContent{position:relative}.detailImageContainer{position:absolute;top:-90px;left:5%;width:auto}.itemDetailImage{height:120px;width:auto!important}.btnPlaySimple{display:none!important}}@media all and (min-width:62.5em){.itemBackdrop{display:none}.detailPagePrimaryContainer{display:-webkit-box;display:-webkit-flex;display:flex;margin-bottom:3em}}@media all and (max-width:75em){.lnkSibling{display:none!important}}.parentName{display:block;margin-bottom:.5em}.emby-button.detailFloatingButton{position:absolute;background-color:rgba(0,0,0,.5)!important;z-index:1;top:50%;left:50%;margin:-2.2em 0 0 -2.2em;border:2.7px solid rgba(255,255,255,.6);padding:.38em!important;color:rgba(255,255,255,.76)}.emby-button.detailFloatingButton i{font-size:3.5em}@media all and (max-width:62.5em){.parentName{margin-bottom:1em}.itemDetailPage{padding-top:0!important}.detailimg-hidemobile{display:none}}@media all and (min-width:31.25em){.mobileDetails{display:none}}@media all and (max-width:31.25em){.desktopDetails{display:none!important}}.detailButton-mobile,.mainDetailButtons{display:-webkit-box;display:-webkit-flex}.itemName{margin:.5em 0}.empty{margin:0}.detailCollapsibleSection:not(.hide)+.detailCollapsibleSection{margin-top:-2em}.detailPageCollabsible{margin-top:0}.mainDetailButtons{display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-flex-wrap:wrap;flex-wrap:wrap;margin:1em 0}.recordingFields button{margin-left:0;margin-right:.5em;-webkit-flex-shrink:0;flex-shrink:0}.mainDetailButtons.hide+.recordingFields{margin-top:1.5em!important}.detailButton-mobile{display:flex;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;align-items:center;margin:0!important;padding:.5em .7em!important}.detailButton{margin:0 .5em 0 0!important}@media all and (min-width:29em){.detailButton-mobile{padding-left:.75em!important;padding-right:.75em!important}}@media all and (min-width:32em){.detailButton-mobile{padding-left:.8em!important;padding-right:.8em!important}}@media all and (min-width:35em){.detailButton-mobile{padding-left:.85em!important;padding-right:.85em!important}}.detailButton-mobile-content{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.detailButton-mobile-icon{font-size:1.6em!important;width:1em;height:1em}.detailImageProgressContainer{position:absolute;bottom:4px;right:1px;left:1px;text-align:center}.detailButton-mobile-text{margin-top:.7em;font-size:80%;font-weight:400}@media all and (max-width:62.5em){.mainDetailButtons{margin-left:-.5em}.detailButton{display:none!important}}@media all and (min-width:62.5em){.detailButton-mobile{display:none!important}.mainDetailButtons{font-size:108%;margin:1.25em 0}}.listTopPaging,.viewControls{display:inline-block}@media all and (max-width:50em){.editorMenuLink{display:none}}.itemMiscInfo{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-webkit-align-items:center;align-items:center}@media all and (max-width:31.25em){.mobileDetails .itemMiscInfo{text-align:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.itemMiscInfo .endsAt{display:none}}.layout-tv .detailVerticalSection{margin-bottom:3.4em!important}.detailPageContent{border-spacing:0;border-collapse:collapse;padding-top:3em}@media all and (max-width:62.5em){.detailPageContent-nodetailimg{padding-top:0;margin-top:-3em}}.mediaInfoStream{margin:0 3em 0 0;display:inline-block;vertical-align:top}.mediaInfoStreamType{display:block;margin:1em 0}.mediaInfoAttribute,.mediaInfoLabel{display:inline-block}.mediaInfoLabel{margin-right:1em;font-weight:600}.recordingProgressBar::-moz-progress-bar{background-color:#c33}.recordingProgressBar::-webkit-progress-value{background-color:#c33}.recordingProgressBar[aria-valuenow]:before{background-color:#c33}.timelineHeader{margin-bottom:.25em;line-height:1.25em;line-height:initial}.itemsContainer{margin:0 auto}@media all and (max-height:31.25em){.itemBackdrop{height:52vh}}@media all and (max-width:75em){.listViewUserDataButtons{display:none!important}}@media all and (max-width:62.5em){.detailsHiddenOnMobile{display:none}}.btnSyncComplete{background:#673AB7!important}.btnSyncComplete i{-webkit-border-radius:100em;border-radius:100em}.bulletSeparator{margin:0 .35em}.mediaInfoIcons{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;margin:1em 0;-webkit-flex-wrap:wrap;flex-wrap:wrap}.verticalSection-extrabottompadding{margin-bottom:2.7em}.sectionTitleContainer{margin:1.25em 0}.sectionTitleButton,.sectionTitleIconButton{margin-right:0!important;display:inline-block;vertical-align:middle}.sectionTitleContainer-cards{margin-bottom:.1em}.sectionTitle{margin-bottom:1em}.sectionTitle-cards{margin-left:.28em;margin-bottom:0}@media all and (min-width:50em){.sectionTitle-cards{margin-left:.55em}}.sectionTitleContainer>.sectionTitle{margin-top:0;margin-bottom:0;display:inline-block;vertical-align:middle}.sectionTitleButton{margin-left:1.5em!important;-webkit-flex-shrink:0;flex-shrink:0}.sectionTitleButton+.sectionTitleButton{margin-left:.5em!important}.sectionTitleIconButton{margin-left:1.5em!important;-webkit-flex-shrink:0;flex-shrink:0;font-size:84%!important;padding:.5em!important}.horizontalItemsContainer{display:-webkit-box;display:-webkit-flex;display:flex}.sectionTitleTextButton{margin:0!important;display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:inline-flex!important;color:inherit!important}.sectionTitleTextButton:not(.padded-left){padding:0!important}.sectionTitleTextButton.padded-left{padding-bottom:0!important;padding-right:0!important;padding-top:0!important}.sectionTitleTextButton>.sectionTitle{margin-bottom:0;margin-top:0}.padded-left{padding-left:2%}.padded-right{padding-right:2%}.padded-top{padding-top:1em}.padded-bottom{padding-bottom:1em}.layout-tv .padded-top-focusscale{padding-top:1em;margin-top:-1em}.layout-tv .padded-bottom-focusscale{padding-bottom:1em;margin-bottom:-1em}@media all and (min-height:31.25em){.padded-left-withalphapicker{padding-left:7.5%}.padded-right-withalphapicker{padding-right:7.5%}}@media all and (min-width:31.25em){.padded-left{padding-left:6%}.padded-right{padding-right:6%}}@media all and (min-width:37.5em){.padded-left{padding-left:4%}.padded-right{padding-right:4%}}@media all and (min-width:50em){.padded-left{padding-left:3.2%}.padded-right{padding-right:3.2%}}@media all and (min-width:64em){.padded-left{padding-left:3.3%}.padded-right{padding-right:3.3%}}@media all and (min-width:50em){.layout-tv .padded-left-withalphapicker{padding-left:4.5%}.layout-tv .padded-right-withalphapicker{padding-right:4.5%}}.searchfields-icon{color:#aaa}.button-accent-flat{color:#52B54B!important}.clearLink{text-decoration:none;font-weight:inherit!important;vertical-align:middle;color:inherit!important}.itemsViewSettingsContainer{-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}@media all and (min-width:40em){.listIconButton-autohide{display:none!important}}@media all and (max-width:40em){.listTextButton-autohide{display:none!important}}.layout-tv .itemsViewSettingsContainer{-webkit-box-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;padding:1.5em .75em 1em 0;font-size:92%}.itemsViewSettingsContainer>.button-flat{margin:0} \ No newline at end of file diff --git a/dashboard-ui/css/metadataeditor.css b/dashboard-ui/css/metadataeditor.css index 7e7f3d671d..c9a2654589 100644 --- a/dashboard-ui/css/metadataeditor.css +++ b/dashboard-ui/css/metadataeditor.css @@ -1 +1 @@ -.editorTab{padding-bottom:200px}.editPageContent{padding:0}.editPageSidebar{display:block}.editPageSidebar-withcontent{display:none}.editPageName{margin:.5em 0 0}.libraryTree{margin-left:.25em}.offlineEditorNode{color:#c33}.editorfieldDescription,.remoteImageDetailText+.remoteImageDetailText{color:#ccc}.editorNode img{height:18px;margin:0 .35em;vertical-align:middle;position:relative;top:-2px}.remoteImageContainer{display:inline-block;margin:5px;vertical-align:top}.remoteImageDetails{text-align:left;background:#282828;position:relative;padding:5px 5px 2px}.remoteImage,.searchImage{background-position:center bottom;background-repeat:no-repeat;display:block}.remoteImageDetails paper-icon-button{position:absolute;bottom:0;right:0}.remoteImageDetailText{padding:5px}.remoteImage{-webkit-background-size:contain;background-size:contain;z-index:100000;position:relative}.remotePosterImage{width:140px;height:210px}.remoteBackdropImage{width:272px;height:153px}.remoteBannerImage{width:272px;height:50px}.remoteDiscImage{width:180px;height:180px}@media all and (min-width:37.5em){.remotePosterImage{width:160px;height:240px}}@media all and (min-width:75em){.remotePosterImage{width:200px;height:300px}.remoteBackdropImage{width:320px;height:180px}.remoteDiscImage{width:240px;height:240px}.remoteBannerImage{width:544px;height:100px}}.searchImage{-webkit-background-size:contain;background-size:contain}.searchBackdropImageContainer{width:160px}.searchDiscImageContainer{width:150px}.searchPosterImageContainer{width:140px}.searchBackdropImageContainer .searchImage{height:90px}.searchDiscImageContainer .searchImage{height:150px}.searchPosterImageContainer .searchImage{height:210px}.searchImageContainer .remoteImageDetails{overflow-x:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.jstree-anchor{font-weight:400!important}.jstree-wholerow-hovered{background:#38c!important;-webkit-border-radius:0!important;border-radius:0!important;-webkit-box-shadow:none!important;box-shadow:none!important}.jstree-default .jstree-hovered{background:0 0!important;-webkit-border-radius:0!important;border-radius:0!important;-webkit-box-shadow:none!important;box-shadow:none!important;color:#fff!important}.jstree-default .jstree-wholerow-clicked{background:#52B54B!important}@media all and (min-width:37.5em){.remoteBannerImage{width:450px;height:83px}}@media all and (min-width:50em){.editPageSidebar{position:fixed;top:5.2em;bottom:0;left:0;width:30%;border-right:1px solid #555;display:block}.editPageInnerContent{float:right;width:68.5%}}@media all and (min-width:112.5em){.editPageSidebar{width:25%}.editPageInnerContent{width:73.5%}} \ No newline at end of file +.editPageSidebar{display:block}.editPageSidebar-withcontent{display:none}.libraryTree{margin-left:.25em}.offlineEditorNode{color:#c33}.editorNode img{height:18px;margin:0 .35em;vertical-align:middle;position:relative;top:-2px}.jstree-anchor{font-weight:400!important}.jstree-wholerow-hovered{background:#38c!important;-webkit-border-radius:0!important;border-radius:0!important;-webkit-box-shadow:none!important;box-shadow:none!important}.jstree-default .jstree-hovered{background:0 0!important;-webkit-border-radius:0!important;border-radius:0!important;-webkit-box-shadow:none!important;box-shadow:none!important;color:#fff!important}.jstree-default .jstree-wholerow-clicked{background:#52B54B!important}@media all and (min-width:50em){.editPageSidebar{position:fixed;top:5.2em;bottom:0;left:0;width:30%;border-right:1px solid #555;display:block}.editPageInnerContent{float:right;width:68.5%}}@media all and (min-width:112.5em){.editPageSidebar{width:25%}.editPageInnerContent{width:73.5%}} \ No newline at end of file diff --git a/dashboard-ui/css/notifications.css b/dashboard-ui/css/notifications.css deleted file mode 100644 index 11e5ea52ae..0000000000 --- a/dashboard-ui/css/notifications.css +++ /dev/null @@ -1 +0,0 @@ -.btnNotifications{position:relative;-webkit-border-radius:0;border-radius:0}.btnNotificationsInner{color:#fff;position:absolute;background:#444;top:0;right:0;width:1.6em;height:1.6em;z-index:100000000;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;font-size:80%;-webkit-border-radius:100em;border-radius:100em;-webkit-box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2);box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2)}.levelNormal{background-color:#43A047}.levelWarning{background-color:#FF7537}.levelError{background-color:#d14836} \ No newline at end of file diff --git a/dashboard-ui/css/nowplaying.css b/dashboard-ui/css/nowplaying.css index 43bb8a129e..e950ca9ab3 100644 --- a/dashboard-ui/css/nowplaying.css +++ b/dashboard-ui/css/nowplaying.css @@ -1 +1 @@ -.nowPlayingInfoContainer{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;flex-direction:row}.nowPlayingPageTitle{margin:0 0 .5em .5em}.nowPlayingPositionSliderContainer{margin:.7em 0 .7em 1em}.nowPlayingInfoButtons{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-flex-wrap:wrap;flex-wrap:wrap;font-size:120%}.nowPlayingInfoControls,.nowPlayingTime{display:-webkit-box;display:-webkit-flex}.nowPlayingPageImageContainer{width:20%;margin-right:.25em;position:relative;-webkit-flex-shrink:0;flex-shrink:0}@media all and (min-width:50em){.nowPlayingPageImageContainer{width:16%}}.nowPlayingInfoControls{-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.nowPlayingPageImage{bottom:0;left:0;right:0;width:100%;-webkit-box-shadow:0 0 1.9vh #000;box-shadow:0 0 1.9vh #000;border:1px solid #222;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}@media all and (orientation:portrait) and (max-width:50em){.remoteControlContent{padding-top:0}.nowPlayingInfoContainer{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;flex-direction:column!important;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.nowPlayingPageTitle{text-align:center;margin:.5em 0 .75em}.nowPlayingPositionSliderContainer{margin:.7em 1em}.nowPlayingInfoButtons{-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.nowPlayingPageImageContainer{width:auto;margin-right:0}.nowPlayingInfoControls{margin-top:1em;max-width:100%}.nowPlayingPageImage{width:auto;height:36vh}}@media all and (orientation:portrait) and (max-width:40em){.nowPlayingPageImage{height:30vh}}.nowPlayingTime{display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;margin:0 1em}.nowPlayingSecondaryButtons{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}@media all and (min-width:50em){.nowPlayingSecondaryButtons{-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1;-webkit-box-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}}@media all and (min-width:80em){.nowPlayingPageImageContainer{margin-right:.75em}}.nowPlayingNavButtonContainer{width:30em}.smallBackdropPosterItem .cardOverlayInner>div{white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden}.playlistIndexIndicatorImage{-webkit-background-size:initial initial!important;background-size:initial!important;background-image:url(images/ani_equalizer_white.gif)!important}.hideVideoButtons .videoButton{display:none}.nowPlayingVolumeSliderContainer{width:6em}@media all and (max-width:25em){.playlist .listItemMediaInfo{display:none!important}}@media all and (max-width:40em){.btnNowPlayingFastForward,.btnNowPlayingRewind{display:none!important}} \ No newline at end of file +.nowPlayingInfoContainer{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;flex-direction:row}.nowPlayingPageTitle{margin:0 0 .5em .5em}.nowPlayingPositionSliderContainer{margin:.7em 0 .7em 1em}.nowPlayingInfoButtons{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-flex-wrap:wrap;flex-wrap:wrap}.nowPlayingInfoControls,.nowPlayingTime{display:-webkit-box;display:-webkit-flex}.nowPlayingPageImageContainer{width:20%;margin-right:.25em;position:relative;-webkit-flex-shrink:0;flex-shrink:0}@media all and (min-width:50em){.nowPlayingPageImageContainer{width:16%}}.nowPlayingInfoControls{-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.nowPlayingPageImage{bottom:0;left:0;right:0;width:100%;-webkit-box-shadow:0 0 1.9vh #000;box-shadow:0 0 1.9vh #000;border:.1em solid #222;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}@media all and (orientation:portrait) and (max-width:50em){.nowPlayingInfoContainer{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;flex-direction:column!important;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.nowPlayingPageTitle{text-align:center;margin:.5em 0 .75em}.nowPlayingPositionSliderContainer{margin:.7em 1em}.nowPlayingInfoButtons{-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.nowPlayingPageImageContainer{width:auto;margin-right:0}.nowPlayingInfoControls{margin-top:1em;max-width:100%}.nowPlayingPageImage{width:auto;height:36vh}}@media all and (orientation:portrait) and (max-width:40em){.nowPlayingPageImage{height:30vh}}.nowPlayingTime{display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;margin:0 1em}.nowPlayingSecondaryButtons{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}@media all and (min-width:50em){.nowPlayingSecondaryButtons{-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1;-webkit-box-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}}@media all and (min-width:80em){.nowPlayingPageImageContainer{margin-right:.75em}}.nowPlayingNavButtonContainer{width:30em}.smallBackdropPosterItem .cardOverlayInner>div{white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden}.playlistIndexIndicatorImage{-webkit-background-size:initial initial!important;background-size:initial!important;background-image:url(images/ani_equalizer_white.gif)!important}.hideVideoButtons .videoButton{display:none}.nowPlayingVolumeSliderContainer{width:6em}@media all and (max-width:34em){.btnNowPlayingFastForward,.btnNowPlayingRewind,.playlist .listItemMediaInfo{display:none!important}} \ No newline at end of file diff --git a/dashboard-ui/css/site.css b/dashboard-ui/css/site.css index ee3324d997..7a805b9094 100644 --- a/dashboard-ui/css/site.css +++ b/dashboard-ui/css/site.css @@ -1 +1 @@ -body,html{margin:0;padding:0;height:100%}.backgroundContainer{position:fixed;top:0;left:0;right:0;bottom:0;contain:strict}html{background-color:#242424;line-height:1.35}.smallerFontSize{font-size:82%}h1,h2,h3{margin-top:1em}body{overflow-y:scroll!important;overflow-x:hidden;background-color:transparent!important;-webkit-font-smoothing:antialiased}body.autoScrollY{overflow-y:auto!important}.mainAnimatedPage{contain:style size!important}.pageContainer{overflow-x:visible!important}.bodyWithPopupOpen{overflow-y:hidden!important}div[data-role=page]{outline:0}.pageTitle{margin-top:0;font-family:inherit}.fieldDescription{padding-left:.15em;font-weight:400;white-space:normal!important}.fieldDescription+.fieldDescription{margin-top:.3em}div[data-role=content]{border-width:0;overflow:visible;overflow-x:hidden;padding:1em}.content-primary,.padded-bottom-page,.page,.pageWithAbsoluteTabs .pageTabContent{padding-bottom:14em!important}.supporterPromotionContainer{margin:0 0 2em}@media all and (min-width:80em){.supporterPromotionContainer{position:fixed;top:120px;right:0}}.fullWidthContent .supporterPromotionContainer{position:static!important}@media all and (min-width:50em){.readOnlyContent,form{max-width:54em}.supporterPromotionContainer{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse}.supporterPromotion{text-align:center;padding:0 2em}.supporterPromotion button{padding-left:2em;padding-right:2em}}.imageDropZone{border:.2em dashed currentcolor;-webkit-border-radius:.25em;border-radius:.25em;text-align:center;position:relative;height:12em;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.squareImageDropZone{height:12em;width:12em} \ No newline at end of file +body,html{margin:0;padding:0;height:100%}.backgroundContainer{position:fixed;top:0;left:0;right:0;bottom:0;contain:strict}html{line-height:1.35}.layout-mobile,.layout-tv{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body{overflow-y:scroll!important;overflow-x:hidden;background-color:transparent!important;-webkit-font-smoothing:antialiased}body.autoScrollY{overflow-y:auto!important}.mainAnimatedPage{contain:style size!important}.pageContainer{overflow-x:visible!important}.bodyWithPopupOpen{overflow-y:hidden!important}div[data-role=page]{outline:0}.pageTitle{margin-top:0;font-family:inherit}.fieldDescription{padding-left:.15em;font-weight:400;white-space:normal!important}.fieldDescription+.fieldDescription{margin-top:.3em}.content-primary,.padded-bottom-page,.page,.pageWithAbsoluteTabs .pageTabContent{padding-bottom:14em!important}.supporterPromotionContainer{margin:0 0 2em}@media all and (min-width:80em){.supporterPromotionContainer{margin:0}}@media all and (min-width:50em){.readOnlyContent,form{max-width:54em}.supporterPromotionContainer{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse}.supporterPromotion{text-align:center;padding:0 2em}.supporterPromotion button{padding-left:2em;padding-right:2em}}.imageDropZone{border:.2em dashed currentcolor;-webkit-border-radius:.25em;border-radius:.25em;text-align:center;position:relative;height:12em;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.squareImageDropZone{height:12em;width:12em}.headerHelpButton{margin-left:1.25em!important;padding-bottom:.4em!important;padding-top:.4em!important} \ No newline at end of file diff --git a/dashboard-ui/css/videoosd.css b/dashboard-ui/css/videoosd.css index 05ef0ec8c3..a3599d1a78 100644 --- a/dashboard-ui/css/videoosd.css +++ b/dashboard-ui/css/videoosd.css @@ -1 +1 @@ -.osdPoster img,.pageContainer,.videoOsdBottom{bottom:0;left:0;right:0}.osdHeader{padding-bottom:3vh;-webkit-transition:opacity .3s ease-out;-o-transition:opacity .3s ease-out;transition:opacity .3s ease-out;position:relative;z-index:1;background-color:rgba(0,0,0,.3)!important;background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.6)),to(rgba(0,0,0,0)))!important;background:-webkit-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0))!important;background:-o-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0))!important;background:linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0))!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;color:#eee}.osdHeader-hidden{opacity:0}.osdHeader .headerButton:not(.headerBackButton){display:none}.chapterThumbContainer{-webkit-box-shadow:0 0 1.9vh #000;box-shadow:0 0 1.9vh #000;-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1;position:relative}.chapterThumb{background-position:center center;-webkit-background-size:contain;background-size:contain;background-repeat:no-repeat;border:0;height:20vh;min-width:20vh}@media all and (orientation:portrait){.chapterThumb{height:30vw;min-width:30vw}}@media all and (max-height:50em) and (orientation:landscape){.chapterThumb{height:30vh;min-width:30vh}}.chapterThumbTextContainer{position:absolute;bottom:0;left:0;right:0;background:rgba(0,0,0,.7);padding:.25em .5em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chapterThumbText{padding:.25em 0;margin:0;opacity:1}.chapterThumbText-dim{opacity:.6}.videoOsdBottom{position:fixed;background-color:rgba(0,0,0,.7);padding:1%;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;flex-direction:row;will-change:opacity;-webkit-transition:opacity .3s ease-out;-o-transition:opacity .3s ease-out;transition:opacity .3s ease-out;background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.8)));background:-webkit-linear-gradient(rgba(0,0,0,.5),rgba(0,0,0,.8));background:-o-linear-gradient(rgba(0,0,0,.5),rgba(0,0,0,.8));background:linear-gradient(rgba(0,0,0,.5),rgba(0,0,0,.8));color:#fff}.videoOsdBottom-hidden{opacity:0}.osdControls{-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1}.videoOsdBottom .buttons{padding:.25em 0 0;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.osdVolumeSliderContainer{width:6.5em;-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1}.osdMediaInfo,.volumeButtons{display:-webkit-box;display:-webkit-flex;-webkit-box-align:center}.volumeButtons{margin:0 .5em 0 auto;display:flex;-webkit-align-items:center;align-items:center}.osdTimeText{margin-left:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.osdPoster{width:10%;position:relative;margin-right:.5em}.osdPoster img{position:absolute;height:auto;width:100%;-webkit-box-shadow:0 0 1.9vh #000;box-shadow:0 0 1.9vh #000;border:1px solid #222;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}.osdTitle,.osdTitleSmall{margin:0 1em 0 0}.osdMediaInfo{display:flex;-webkit-align-items:center;align-items:center}.osdSecondaryMediaInfo{padding-left:.6em!important}.osdTextContainer{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-bottom:.7em;padding-left:.5em}.osdMainTextContainer{-webkit-box-align:baseline;-webkit-align-items:baseline;align-items:baseline}.pageContainer{top:0;position:fixed}@media all and (max-width:30em){.btnFastForward,.btnRewind,.osdMediaInfo,.osdPoster{display:none!important}}@media all and (max-width:33.75em){.videoOsdBottom .paper-icon-button-light{margin:0}}@media all and (max-width:37.5em){.videoOsdBottom .volumeButtons{display:none!important}}@media all and (max-width:75em){.videoOsdBottom .endsAtText{display:none!important}} \ No newline at end of file +.chapterThumbTextContainer,.videoOsdBottom{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.osdPoster img,.pageContainer,.videoOsdBottom{bottom:0;left:0;right:0}.osdHeader{padding-bottom:3vh;-webkit-transition:opacity .3s ease-out;-o-transition:opacity .3s ease-out;transition:opacity .3s ease-out;position:relative;z-index:1;background-color:rgba(0,0,0,.3)!important;background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.6)),to(rgba(0,0,0,0)))!important;background:-webkit-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0))!important;background:-o-linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0))!important;background:linear-gradient(rgba(0,0,0,.6),rgba(0,0,0,0))!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;color:#eee}.osdHeader-hidden{opacity:0}.osdHeader .headerButton:not(.headerBackButton):not(.headerCastButton){display:none}.chapterThumbContainer{-webkit-box-shadow:0 0 1.9vh #000;box-shadow:0 0 1.9vh #000;-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1;position:relative}.chapterThumb{background-position:center center;-webkit-background-size:contain;background-size:contain;background-repeat:no-repeat;border:0;height:20vh;min-width:20vh}@media all and (orientation:portrait){.chapterThumb{height:30vw;min-width:30vw}}@media all and (max-height:50em) and (orientation:landscape){.chapterThumb{height:30vh;min-width:30vh}}.chapterThumbTextContainer{position:absolute;bottom:0;left:0;right:0;background:rgba(0,0,0,.7);padding:.25em .5em;user-select:none}.chapterThumbText{padding:.25em 0;margin:0;opacity:1}.chapterThumbText-dim{opacity:.6}.videoOsdBottom{position:fixed;background-color:rgba(0,0,0,.7);padding:1%;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;flex-direction:row;will-change:opacity;-webkit-transition:opacity .3s ease-out;-o-transition:opacity .3s ease-out;transition:opacity .3s ease-out;background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.8)));background:-webkit-linear-gradient(rgba(0,0,0,.5),rgba(0,0,0,.8));background:-o-linear-gradient(rgba(0,0,0,.5),rgba(0,0,0,.8));background:linear-gradient(rgba(0,0,0,.5),rgba(0,0,0,.8));color:#fff;user-select:none;-webkit-touch-callout:none}.videoOsdBottom-hidden{opacity:0}.osdControls{-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1}.videoOsdBottom .buttons{padding:.25em 0 0;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.osdVolumeSliderContainer{width:6.5em;-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1}.osdMediaInfo,.volumeButtons{display:-webkit-box;display:-webkit-flex;-webkit-box-align:center}.volumeButtons{margin:0 .5em 0 auto;display:flex;-webkit-align-items:center;align-items:center}.osdTimeText{margin-left:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.osdPoster{width:10%;position:relative;margin-right:.5em}.osdPoster img{position:absolute;height:auto;width:100%;-webkit-box-shadow:0 0 1.9vh #000;box-shadow:0 0 1.9vh #000;border:.08em solid #222;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}.osdTitle,.osdTitleSmall{margin:0 1em 0 0}.osdMediaInfo{display:flex;-webkit-align-items:center;align-items:center}.osdSecondaryMediaInfo{padding-left:.6em!important}.osdTextContainer{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-bottom:.7em;padding-left:.5em}.osdMainTextContainer{-webkit-box-align:baseline;-webkit-align-items:baseline;align-items:baseline}.pageContainer{top:0;position:fixed}@media all and (max-width:30em){.btnFastForward,.btnRewind,.osdMediaInfo,.osdPoster{display:none!important}}@media all and (max-width:33.75em){.videoOsdBottom .paper-icon-button-light{margin:0}}@media all and (max-width:37.5em){.videoOsdBottom .volumeButtons{display:none!important}}@media all and (max-width:75em){.videoOsdBottom .endsAtText{display:none!important}} \ No newline at end of file diff --git a/dashboard-ui/dashboard.html b/dashboard-ui/dashboard.html index 0c75de65e1..2ea8970990 100644 --- a/dashboard-ui/dashboard.html +++ b/dashboard-ui/dashboard.html @@ -2,13 +2,6 @@
    - -
    @@ -20,6 +13,9 @@ mode_edit +
    +
    +

    @@ -28,13 +24,13 @@ check ${ServerUpToDate}

    -