diff --git a/dashboard-ui/bower_components/emby-apiclient/apiclientex.js b/dashboard-ui/bower_components/emby-apiclient/apiclientex.js index 468c0f1149..802c2db270 100644 --- a/dashboard-ui/bower_components/emby-apiclient/apiclientex.js +++ b/dashboard-ui/bower_components/emby-apiclient/apiclientex.js @@ -1 +1 @@ -define(["apiclientcore","localassetmanager","appStorage"],function(ApiClient,localassetmanager,appStorage){"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)||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.getCurrentUser=function(){var instance=this;return ApiClient.prototype.getCurrentUser.call(this).then(function(user){return appStorage.setItem("user-"+user.Id,JSON.stringify(user)),user},function(error){var userId=instance.getCurrentUserId();if(userId&&instance.accessToken()){var json=appStorage.getItem("user-"+userId);if(json)return Promise.resolve(JSON.parse(json))}return Promise.reject(error)})},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.ParentId=itemId,this.getItems(this.getCurrentUserId(),options)):ApiClient.prototype.getSeasons.call(this,itemId,options)},ApiClientEx.prototype.getEpisodes=function(itemId,options){return isLocalId(options.SeasonId)?(options.ParentId=options.SeasonId,this.getItems(this.getCurrentUserId(),options)):isLocalId(options.seasonId)?(options.ParentId=options.seasonId,this.getItems(this.getCurrentUserId(),options)):isLocalId(itemId)?(options.ParentId=itemId,options.Recursive=!0,this.getItems(this.getCurrentUserId(),options).then(function(items){var items2=items.Items.filter(function(item){return"episode"===item.Type.toLowerCase()}),result={Items:items2,TotalRecordCount:items2.length};return Promise.resolve(result)})):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.type,0)}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");return isLocalId(options.ItemId)?Promise.resolve():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","appStorage"],function(ApiClient,localassetmanager,appStorage){"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)||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.getCurrentUser=function(){var instance=this;return ApiClient.prototype.getCurrentUser.call(this).then(function(user){return appStorage.setItem("user-"+user.Id,JSON.stringify(user)),user},function(error){var userId=instance.getCurrentUserId();if(userId&&instance.accessToken()){var json=appStorage.getItem("user-"+userId);if(json)return Promise.resolve(JSON.parse(json))}return Promise.reject(error)})},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.ParentId=itemId,this.getItems(this.getCurrentUserId(),options)):ApiClient.prototype.getSeasons.call(this,itemId,options)},ApiClientEx.prototype.getEpisodes=function(itemId,options){return isLocalId(options.SeasonId)?(options.ParentId=options.SeasonId,this.getItems(this.getCurrentUserId(),options)):isLocalId(options.seasonId)?(options.ParentId=options.seasonId,this.getItems(this.getCurrentUserId(),options)):isLocalId(itemId)?(options.ParentId=itemId,options.Recursive=!0,this.getItems(this.getCurrentUserId(),options).then(function(items){var items2=items.Items.filter(function(item){return"episode"===item.Type.toLowerCase()}),result={Items:items2,TotalRecordCount:items2.length};return Promise.resolve(result)})):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.type,0)}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");return isLocalId(options.ItemId)?Promise.resolve():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-webcomponents/emby-button/emby-button.css b/dashboard-ui/bower_components/emby-webcomponents/emby-button/emby-button.css index ca7b5ef76f..e80d11e816 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/emby-button/emby-button.css +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-button/emby-button.css @@ -1 +1 @@ -.emby-button,.fab{-webkit-box-sizing:border-box}.emby-button,.paper-icon-button-light{font-family:inherit;cursor:pointer;overflow:hidden;font-weight:500;-webkit-tap-highlight-color:transparent;position:relative}.emby-button{display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;box-sizing:border-box;margin:0 .29em;text-align:center;font-size:inherit;color:inherit;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none;z-index:0;padding:1em .7em;border:0;vertical-align:middle;-webkit-border-radius:2px;border-radius:2px;outline:0!important;text-decoration:none}.emby-button.block,.fab{-webkit-box-align:center}.button-flat-accent,.button-link{color:#52B54B}.emby-button:focus{outline:0!important}.emby-button::-moz-focus-inner{border:0}.button-flat{background:0 0;-webkit-box-shadow:none;box-shadow:none}.button-flat:hover{opacity:.5}.button-link{background:0 0;-webkit-box-shadow:none;box-shadow:none;margin:0;padding:0;vertical-align:initial}.emby-button-focusscale{-webkit-transition:-webkit-transform 180ms ease-out!important;-o-transition:transform 180ms ease-out!important;transition:transform 180ms ease-out!important;-webkit-transform-origin:center center;transform-origin:center center}.emby-button-focusscale:focus{-webkit-transform:scale(1.16);transform:scale(1.16);z-index:1}.emby-button>i{font-size:1.36em;width:1em;height:1em}.button-link>i{font-size:1em}.fab{display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;-webkit-border-radius:50%;border-radius:50%;background-color:#404040;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;color:#fff;margin:0}.fab>i{height:1em;width:1em;vertical-align:middle;font-size:2.85em}.fab.mini{padding:8px}.fab.mini>i{height:1em;width:1em;font-size:1.72em}.emby-button.block{display:block;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;margin:.25em 0;width:100%}.fab,.raised{-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2);box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px 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 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.4);box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.4)}.raised-mini{padding:.44em .7em}.button-flat-mini{padding:.5em .7em}.emby-button>i+span,.emby-button>span+i{margin-left:.5em}.paper-icon-button-light{display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 .29em;background:0 0;text-align:center;font-size:inherit;color:inherit;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none;z-index:0;min-width:initial;min-height:initial;width:auto;height:auto;padding:8px;border:0;vertical-align:middle;outline:0!important;-webkit-border-radius:50%;border-radius:50%;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.paper-icon-button-light::-moz-focus-inner{border:0}.paper-icon-button-light[disabled]{opacity:.3}.paper-icon-button-light>i{width:1em;height:1em;font-size:1.6em;position:relative;z-index:1;vertical-align:middle}.paper-icon-button-light>img{width:1.72em;max-height:100%;position:relative;z-index:1;vertical-align:middle}.paper-icon-button-light:after{content:'';position:absolute;top:0;left:0;right:0;bottom:0;-webkit-transition:opacity .3s ease-out;-o-transition:opacity .3s ease-out;transition:opacity .3s ease-out;background:currentcolor;opacity:0}.paper-icon-button-light:focus{color:#52B54B}.paper-icon-button-light:focus:after{opacity:.2}.emby-button-ripple-effect,.paper-icon-button-light-ripple-effect{position:absolute;-webkit-border-radius:50%;border-radius:50%;width:50px;height:50px;top:50%;left:50%;background:currentcolor;-webkit-animation:ripple-animation .8s;animation:ripple-animation .8s;opacity:.25;-webkit-transform-origin:center center;transform-origin:center center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@-webkit-keyframes ripple-animation{from{-webkit-transform:none;transform:none;opacity:.5}to{-webkit-transform:scale(20);transform:scale(20);opacity:0}}@keyframes ripple-animation{from{-webkit-transform:none;transform:none;opacity:.5}to{-webkit-transform:scale(20);transform:scale(20);opacity:0}}.emby-button-foreground{position:relative;z-index:1}.icon-button-focusscale{-webkit-transition:-webkit-transform 180ms ease-out!important;-o-transition:transform 180ms ease-out!important;transition:transform 180ms ease-out!important;-webkit-transform-origin:center center;transform-origin:center center}.icon-button-focusscale:focus{-webkit-transform:scale(1.3);transform:scale(1.3);z-index:1} \ No newline at end of file +.emby-button,.fab{-webkit-box-sizing:border-box}.emby-button,.paper-icon-button-light{font-family:inherit;cursor:pointer;outline:0!important;overflow:hidden;position:relative}.emby-button{display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;box-sizing:border-box;margin:0 .29em;text-align:center;font-size:inherit;color:inherit;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none;z-index:0;padding:1em .7em;border:0;vertical-align:middle;-webkit-border-radius:2px;border-radius:2px;font-weight:500;-webkit-tap-highlight-color:transparent;text-decoration:none}.emby-button.block,.fab{-webkit-box-align:center}.button-flat-accent,.button-link{color:#52B54B}.emby-button:focus{outline:0!important}.emby-button::-moz-focus-inner{border:0}.button-flat{background:0 0;-webkit-box-shadow:none;box-shadow:none}.button-flat:hover{opacity:.5}.button-link{background:0 0;-webkit-box-shadow:none;box-shadow:none;margin:0;padding:0;vertical-align:initial;font-weight:400}.button-link:hover{text-decoration:underline}.emby-button-focusscale{-webkit-transition:-webkit-transform 180ms ease-out!important;-o-transition:transform 180ms ease-out!important;transition:transform 180ms ease-out!important;-webkit-transform-origin:center center;transform-origin:center center}.emby-button-focusscale:focus{-webkit-transform:scale(1.16);transform:scale(1.16);z-index:1}.emby-button>i{font-size:1.36em;width:1em;height:1em}.button-link>i{font-size:1em}.fab{display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;-webkit-border-radius:50%;border-radius:50%;background-color:#404040;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;color:#fff;margin:0}.fab>i{height:1em;width:1em;vertical-align:middle;font-size:2.85em}.fab.mini{padding:8px}.fab.mini>i{height:1em;width:1em;font-size:1.72em}.emby-button.block{display:block;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;margin:.25em 0;width:100%}.fab,.raised{-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2);box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px 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 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.4);box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.4)}.raised-mini{padding:.44em .7em}.button-flat-mini{padding:.5em .7em}.emby-button>i+span,.emby-button>span+i{margin-left:.5em}.paper-icon-button-light{display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 .29em;background:0 0;text-align:center;font-size:inherit;color: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;font-weight:500;-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.6em;position:relative;z-index:1;vertical-align:middle}.paper-icon-button-light>img{width:1.72em;max-height:100%;position:relative;z-index:1;vertical-align:middle}.paper-icon-button-light:after{content:'';position:absolute;top:0;left:0;right:0;bottom:0;-webkit-transition:opacity .3s ease-out;-o-transition:opacity .3s ease-out;transition:opacity .3s ease-out;background:currentcolor;opacity:0}.paper-icon-button-light:focus{color:#52B54B}.paper-icon-button-light:focus:after{opacity:.2}.emby-button-ripple-effect,.paper-icon-button-light-ripple-effect{position:absolute;-webkit-border-radius:50%;border-radius:50%;width:50px;height:50px;top:50%;left:50%;background:currentcolor;-webkit-animation:ripple-animation .8s;animation:ripple-animation .8s;opacity:.25;-webkit-transform-origin:center center;transform-origin:center center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@-webkit-keyframes ripple-animation{from{-webkit-transform:none;transform:none;opacity:.5}to{-webkit-transform:scale(20);transform:scale(20);opacity:0}}@keyframes ripple-animation{from{-webkit-transform:none;transform:none;opacity:.5}to{-webkit-transform:scale(20);transform:scale(20);opacity:0}}.emby-button-foreground{position:relative;z-index:1}.icon-button-focusscale{-webkit-transition:-webkit-transform 180ms ease-out!important;-o-transition:transform 180ms ease-out!important;transition:transform 180ms ease-out!important;-webkit-transform-origin:center center;transform-origin:center center}.icon-button-focusscale:focus{-webkit-transform:scale(1.3);transform:scale(1.3);z-index:1} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-button/emby-button.js b/dashboard-ui/bower_components/emby-webcomponents/emby-button/emby-button.js index 4dc8a4429a..70fd809b42 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","embyRouter","apphost","css!./emby-button","registerElement"],function(browser,dom,layoutManager,shell,embyRouter,appHost){"use strict";function animateButtonInternal(e,btn){for(var div=document.createElement("div"),i=0,length=btn.classList.length;i0&&offsetY>0&&(div.style.left=offsetX+"px",div.style.top=offsetY+"px");var firstChild=btn.firstChild;firstChild?btn.insertBefore(div,btn.firstChild):btn.appendChild(div),div.addEventListener(dom.whichAnimationEvent(),function(){div.parentNode.removeChild(div)},!1)}function animateButton(e,btn){requestAnimationFrame(function(){animateButtonInternal(e,btn)})}function onKeyDown(e){13===e.keyCode&&animateButton(e,this)}function onMouseDown(e){0===e.button&&animateButton(e,this)}function onClick(e){animateButton(e,this)}function enableAnimation(){return!browser.tv}function onAnchorClick(e){var href=this.getAttribute("href");"#"!==href?this.getAttribute("target")?appHost.supports("targetblank")||(e.preventDefault(),shell.openUrl(href)):embyRouter.handleAnchorClick(e):e.preventDefault()}var EmbyButtonPrototype=Object.create(HTMLButtonElement.prototype),EmbyLinkButtonPrototype=Object.create(HTMLAnchorElement.prototype);return EmbyButtonPrototype.createdCallback=function(){this.classList.contains("emby-button")||(this.classList.add("emby-button"),layoutManager.tv&&(this.classList.add("emby-button-focusscale"),this.classList.add("emby-button-tv")),enableAnimation()&&"false"!==this.getAttribute("data-ripple")&&(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","embyRouter","apphost","css!./emby-button","registerElement"],function(browser,dom,layoutManager,shell,embyRouter,appHost){"use strict";function animateButtonInternal(e,btn){for(var div=document.createElement("div"),i=0,length=btn.classList.length;i0&&offsetY>0&&(div.style.left=offsetX+"px",div.style.top=offsetY+"px");var firstChild=btn.firstChild;firstChild?btn.insertBefore(div,btn.firstChild):btn.appendChild(div),div.addEventListener(dom.whichAnimationEvent(),function(){div.parentNode.removeChild(div)},!1)}function animateButton(e,btn){requestAnimationFrame(function(){animateButtonInternal(e,btn)})}function onKeyDown(e){13===e.keyCode&&animateButton(e,this)}function onMouseDown(e){0===e.button&&animateButton(e,this)}function onClick(e){animateButton(e,this)}function enableAnimation(){return!browser.tv}function onAnchorClick(e){var href=this.getAttribute("href");"#"!==href?this.getAttribute("target")?appHost.supports("targetblank")||(e.preventDefault(),shell.openUrl(href)):embyRouter.handleAnchorClick(e):e.preventDefault()}var EmbyButtonPrototype=Object.create(HTMLButtonElement.prototype),EmbyLinkButtonPrototype=Object.create(HTMLAnchorElement.prototype);return EmbyButtonPrototype.createdCallback=function(){this.classList.contains("emby-button")||(this.classList.add("emby-button"),layoutManager.tv&&(this.classList.add("emby-button-focusscale"),this.classList.add("emby-button-tv")),enableAnimation()&&"false"!==this.getAttribute("data-ripple")&&!this.classList.contains("button-link")&&(dom.addEventListener(this,"keydown",onKeyDown,{passive:!0}),browser.safari||browser.firefox&&"A"===this.tagName?dom.addEventListener(this,"click",onClick,{passive:!0}):dom.addEventListener(this,"mousedown",onMouseDown,{passive:!0})))},EmbyButtonPrototype.attachedCallback=function(){"A"===this.tagName&&(dom.removeEventListener(this,"click",onAnchorClick,{}),dom.addEventListener(this,"click",onAnchorClick,{}),"true"===this.getAttribute("data-autohide")&&(appHost.supports("externallinks")?this.classList.remove("hide"):this.classList.add("hide")))},EmbyButtonPrototype.detachedCallback=function(){dom.removeEventListener(this,"click",onAnchorClick,{})},EmbyLinkButtonPrototype.createdCallback=EmbyButtonPrototype.createdCallback,EmbyLinkButtonPrototype.attachedCallback=EmbyButtonPrototype.attachedCallback,document.registerElement("emby-button",{prototype:EmbyButtonPrototype,extends:"button"}),document.registerElement("emby-linkbutton",{prototype:EmbyLinkButtonPrototype,extends:"a"}),EmbyButtonPrototype}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/homesections.js b/dashboard-ui/bower_components/emby-webcomponents/homesections.js index 4144b52796..0315be62c1 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/homesections.js +++ b/dashboard-ui/bower_components/emby-webcomponents/homesections.js @@ -1 +1 @@ -define(["cardBuilder","appSettings","dom","apphost","layoutManager","imageLoader","globalize","itemShortcuts","itemHelper","embyRouter","emby-button","paper-icon-button-light","emby-itemscontainer","emby-scroller","emby-linkbutton"],function(cardBuilder,appSettings,dom,appHost,layoutManager,imageLoader,globalize,itemShortcuts,itemHelper,embyRouter){"use strict";function getDefaultSection(index){switch(index){case 0:return"smalllibrarytiles";case 1:return"activerecordings";case 2:return"resume";case 3:return"resumeaudio";case 4:return"livetv";case 5:return"nextup";case 6:return"latestmedia";case 7:return"none";default:return""}}function loadSections(elem,apiClient,user,userSettings){return getUserViews(apiClient,user.Id).then(function(userViews){var i,length,sectionCount=7,html="";for(i=0,length=sectionCount;i';elem.innerHTML=html,elem.classList.add("homeSectionsContainer");var promises=[];for(i=0,length=sectionCount;i",layoutManager.tv||(html+=''),html+="",html+='
';for(var i=0,length=items.length;i'+icon+""+item.Name+""}return html+="
"}function loadlibraryButtons(elem,apiClient,userId,userSettings,userViews){var html=getLibraryButtonsHtml(userViews);return getAppInfo(apiClient).then(function(infoHtml){elem.innerHTML=html+infoHtml,bindHomeScreenSettingsIcon(elem,apiClient,userId,userSettings),infoHtml&&bindAppInfoEvents(elem)})}function bindAppInfoEvents(elem){getRequirePromise(["registrationServices"]).then(function(registrationServices){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=12;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(),supportsImageAnalysis=appHost.supports("imageanalysis");supportsImageAnalysis=!1;var cardLayout=supportsImageAnalysis&&("music"===viewType||"movies"===viewType||"tvshows"===viewType||"musicvideos"===viewType||!viewType);html+=cardBuilder.getCardsHtml({items:items,shape:shape,preferThumb:"movies"!==viewType&&"music"!==viewType,showUnplayedIndicator:!1,showChildCountIndicator:!0,context:"home",overlayText:!1,centerText:!cardLayout,overlayPlayButton:"photos"!==viewType,allowBottomPadding:!enableScrollX()&&!cardLayout,cardLayout:cardLayout,showTitle:"music"===viewType||"tvshows"===viewType||"movies"===viewType||!viewType||cardLayout,showYear:"movies"===viewType||"tvshows"===viewType||!viewType,showParentTitle:"music"===viewType||"tvshows"===viewType||!viewType||cardLayout&&"tvshows"===viewType,vibrant:supportsImageAnalysis&&cardLayout,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};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 loadLibraryTiles(elem,apiClient,user,userSettings,shape,userViews){var html="";if(html+="
",userViews.length){html+='
',html+='

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

",layoutManager.tv||(html+=''),html+="
";var scrollX=enableScrollX();html+=enableScrollX()?'
':'
',html+=cardBuilder.getCardsHtml({items:userViews,shape:scrollX?"overflowSmallBackdrop":shape,showTitle:!0,centerText:!0,overlayText:!1,lazy:!0,transition:!1,allowBottomPadding:!scrollX}),enableScrollX()&&(html+="
"),html+="
"}return html+="
",getAppInfo(apiClient).then(function(infoHtml){elem.innerHTML=html+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={SortBy:"DatePlayed",SortOrder:"Descending",Filters:"IsResumable",Limit:limit,Recursive:!0,Fields:"PrimaryImageAspectRatio,BasicSyncInfo",CollapseBoxSetItems:!1,ExcludeLocationTypes:"Virtual",ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Thumb",EnableTotalRecordCount:!1,MediaTypes:"Video"};return apiClient.getItems(userId,options).then(function(result){var html="";if(result.Items.length){html+='

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

",html+=enableScrollX()?'
':'
';var supportsImageAnalysis=appHost.supports("imageanalysis");supportsImageAnalysis=!1;var cardLayout=supportsImageAnalysis;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,vibrant:cardLayout&&supportsImageAnalysis}),enableScrollX()&&(html+="
"),html+="
"}elem.innerHTML=html,imageLoader.lazyChildren(elem)})}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={SortBy:"DatePlayed",SortOrder:"Descending",Filters:"IsResumable",Limit:limit,Recursive:!0,Fields:"PrimaryImageAspectRatio,BasicSyncInfo",CollapseBoxSetItems:!1,ExcludeLocationTypes:"Virtual",ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Thumb",EnableTotalRecordCount:!1,MediaTypes:"Audio"};return apiClient.getItems(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.innerHTML=html,imageLoader.lazyChildren(elem)})}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 supportsImageAnalysis=appHost.supports("imageanalysis");supportsImageAnalysis=!1;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}),enableScrollX()&&(html+="
"),html+="
"}elem.innerHTML=html,imageLoader.lazyChildren(elem)})}function loadOnNow(elem,apiClient,user){if(!user.Policy.EnableLiveTvAccess)return Promise.resolve("");elem.classList.remove("verticalSection");user.Id;return apiClient.getLiveTvRecommendedPrograms({userId:apiClient.getCurrentUserId(),IsAiring:!0,limit:enableScrollX()?18:8,ImageTypeLimit:1,EnableImageTypes:"Primary,Thumb,Backdrop",EnableTotalRecordCount:!1,Fields:"ChannelInfo,PrimaryImageAspectRatio"}).then(function(result){var html="";result.Items.length&&(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,overlayPlayButton:!0,allowBottomPadding:!enableScrollX(),showAirTime:!0,showChannelName:!1,showAirDateTime:!1,showAirEndTime:!0,defaultShape:getThumbShape()}),enableScrollX()&&(html+="
"),html+="
",html+="
"),elem.innerHTML=html,imageLoader.lazyChildren(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 supportsImageAnalysis=appHost.supports("imageanalysis");supportsImageAnalysis=!1,html+=cardBuilder.getCardsHtml({items:result.Items,preferThumb:!0,shape:getThumbShape(),overlayText:!1,showTitle:!0,showParentTitle:!0,lazy:!0,overlayPlayButton:!0,context:"home",centerText:!supportsImageAnalysis,allowBottomPadding:!enableScrollX(),cardLayout:supportsImageAnalysis,vibrant:supportsImageAnalysis}),enableScrollX()&&(html+="
"),html+="
"}elem.innerHTML=html,imageLoader.lazyChildren(elem)})}function loadLatestChannelItems(elem,apiClient,userId,options){return options=Object.assign(options||{},{UserId:userId,SupportsLatestItems:!0}),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};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",IsInProgress:!1,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(["cardBuilder","appSettings","dom","apphost","layoutManager","imageLoader","globalize","itemShortcuts","itemHelper","embyRouter","emby-button","paper-icon-button-light","emby-itemscontainer","emby-scroller","emby-linkbutton"],function(cardBuilder,appSettings,dom,appHost,layoutManager,imageLoader,globalize,itemShortcuts,itemHelper,embyRouter){"use strict";function getDefaultSection(index){switch(index){case 0:return"smalllibrarytiles";case 1:return"activerecordings";case 2:return"resume";case 3:return"resumeaudio";case 4:return"livetv";case 5:return"nextup";case 6:return"latestmedia";case 7:return"none";default:return""}}function loadSections(elem,apiClient,user,userSettings){return getUserViews(apiClient,user.Id).then(function(userViews){var i,length,sectionCount=7,html="";for(i=0,length=sectionCount;i
';elem.innerHTML=html,elem.classList.add("homeSectionsContainer");var promises=[];for(i=0,length=sectionCount;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)})}function bindAppInfoEvents(elem){getRequirePromise(["registrationServices"]).then(function(registrationServices){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=12;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(),supportsImageAnalysis=appHost.supports("imageanalysis");supportsImageAnalysis=!1;var cardLayout=supportsImageAnalysis&&("music"===viewType||"movies"===viewType||"tvshows"===viewType||"musicvideos"===viewType||!viewType);html+=cardBuilder.getCardsHtml({items:items,shape:shape,preferThumb:"movies"!==viewType&&"music"!==viewType,showUnplayedIndicator:!1,showChildCountIndicator:!0,context:"home",overlayText:!1,centerText:!cardLayout,overlayPlayButton:"photos"!==viewType,allowBottomPadding:!enableScrollX()&&!cardLayout,cardLayout:cardLayout,showTitle:"music"===viewType||"tvshows"===viewType||"movies"===viewType||!viewType||cardLayout,showYear:"movies"===viewType||"tvshows"===viewType||!viewType,showParentTitle:"music"===viewType||"tvshows"===viewType||!viewType||cardLayout&&"tvshows"===viewType,vibrant:supportsImageAnalysis&&cardLayout,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};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){var html="";return appHost.supports("sync")&&user.Policy.EnableContentDownloading?(html+='
',html+='
',html+='

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

",html+="
",enableScrollX()?(html+='
',html+='
'):html+='",enableScrollX()&&(html+="
"),html+="
",html+="
",Promise.resolve(html)):Promise.resolve(html)}function loadLibraryTiles(elem,apiClient,user,userSettings,shape,userViews){elem.classList.remove("verticalSection");var html="";if(userViews.length){html+='
',html+='
',html+='

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

",layoutManager.tv||(html+=''),html+="
";var scrollX=enableScrollX();html+=enableScrollX()?'
':'
',html+=cardBuilder.getCardsHtml({items:userViews,shape:scrollX?"overflowSmallBackdrop":shape,showTitle:!0,centerText:!0,overlayText:!1,lazy:!0,transition:!1,allowBottomPadding:!scrollX}),enableScrollX()&&(html+="
"),html+="
",html+="
"}return 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={SortBy:"DatePlayed",SortOrder:"Descending",Filters:"IsResumable",Limit:limit,Recursive:!0,Fields:"PrimaryImageAspectRatio,BasicSyncInfo",CollapseBoxSetItems:!1,ExcludeLocationTypes:"Virtual",ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Thumb",EnableTotalRecordCount:!1,MediaTypes:"Video"};return apiClient.getItems(userId,options).then(function(result){var html="";if(result.Items.length){html+='

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

",html+=enableScrollX()?'
':'
';var supportsImageAnalysis=appHost.supports("imageanalysis");supportsImageAnalysis=!1;var cardLayout=supportsImageAnalysis;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,vibrant:cardLayout&&supportsImageAnalysis}),enableScrollX()&&(html+="
"),html+="
"}elem.innerHTML=html,imageLoader.lazyChildren(elem)})}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={SortBy:"DatePlayed",SortOrder:"Descending",Filters:"IsResumable",Limit:limit,Recursive:!0,Fields:"PrimaryImageAspectRatio,BasicSyncInfo",CollapseBoxSetItems:!1,ExcludeLocationTypes:"Virtual",ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Thumb",EnableTotalRecordCount:!1,MediaTypes:"Audio"};return apiClient.getItems(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.innerHTML=html,imageLoader.lazyChildren(elem)})}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 supportsImageAnalysis=appHost.supports("imageanalysis");supportsImageAnalysis=!1;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}),enableScrollX()&&(html+="
"),html+="
"}elem.innerHTML=html,imageLoader.lazyChildren(elem)})}function loadOnNow(elem,apiClient,user){if(!user.Policy.EnableLiveTvAccess)return Promise.resolve("");elem.classList.remove("verticalSection");user.Id;return apiClient.getLiveTvRecommendedPrograms({userId:apiClient.getCurrentUserId(),IsAiring:!0,limit:enableScrollX()?18:8,ImageTypeLimit:1,EnableImageTypes:"Primary,Thumb,Backdrop",EnableTotalRecordCount:!1,Fields:"ChannelInfo,PrimaryImageAspectRatio"}).then(function(result){var html="";result.Items.length&&(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,overlayPlayButton:!0,allowBottomPadding:!enableScrollX(),showAirTime:!0,showChannelName:!1,showAirDateTime:!1,showAirEndTime:!0,defaultShape:getThumbShape()}),enableScrollX()&&(html+="
"),html+="
",html+="
"),elem.innerHTML=html,imageLoader.lazyChildren(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 supportsImageAnalysis=appHost.supports("imageanalysis");supportsImageAnalysis=!1,html+=cardBuilder.getCardsHtml({items:result.Items,preferThumb:!0,shape:getThumbShape(),overlayText:!1,showTitle:!0,showParentTitle:!0,lazy:!0,overlayPlayButton:!0,context:"home",centerText:!supportsImageAnalysis,allowBottomPadding:!enableScrollX(),cardLayout:supportsImageAnalysis,vibrant:supportsImageAnalysis}),enableScrollX()&&(html+="
"),html+="
"}elem.innerHTML=html,imageLoader.lazyChildren(elem)})}function loadLatestChannelItems(elem,apiClient,userId,options){return options=Object.assign(options||{},{UserId:userId,SupportsLatestItems:!0}),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};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",IsInProgress:!1,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 diff --git a/dashboard-ui/bower_components/emby-webcomponents/playback/playbackmanager.js b/dashboard-ui/bower_components/emby-webcomponents/playback/playbackmanager.js index 726555c50c..9e7f8e1906 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","serverNotifications","apphost","fullscreenManager","layoutManager"],function(events,datetime,appSettings,itemHelper,pluginManager,PlayQueueManager,userSettings,globalize,connectionManager,loading,serverNotifications,apphost,fullscreenManager,layoutManager){"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 backdropImageUrl(apiClient,item,options){return options=options||{},options.type=options.type||"Backdrop",options.maxWidth||options.width||options.maxHeight||options.height||(options.quality=100),item.BackdropImageTags&&item.BackdropImageTags.length?(options.tag=item.BackdropImageTags[0],apiClient.getScaledImageUrl(item.Id,options)):item.ParentBackdropImageTags&&item.ParentBackdropImageTags.length?(options.tag=item.ParentBackdropImageTags[0],apiClient.getScaledImageUrl(item.ParentBackdropItemId,options)):null}function getMimeType(type,container){if(container=(container||"").toLowerCase(),"audio"===type){if("opus"===container)return"audio/ogg";if("webma"===container)return"audio/webm";if("m4a"===container)return"audio/mp4"}else if("video"===type){if("mkv"===container)return"video/x-matroska";if("m4v"===container)return"video/mp4";if("mov"===container)return"video/quicktime";if("mpg"===container)return"video/mpeg";if("flv"===container)return"video/x-flv"}return type+"/"+container}function getParam(name,url){name=name.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var regexS="[\\?&]"+name+"=([^&#]*)",regex=new RegExp(regexS,"i"),results=regex.exec(url);return null==results?"":decodeURIComponent(results[1].replace(/\+/g," "))}function isAutomaticPlayer(player){return!!player.isLocalPlayer}function getAutomaticPlayers(instance){var player=instance._currentPlayer;return player&&!isAutomaticPlayer(player)?[player]:instance.getPlayers().filter(isAutomaticPlayer)}function isServerItem(item){return!!item.Id}function enableIntros(item){return"Video"===item.MediaType&&("TvChannel"!==item.Type&&("InProgress"!==item.Status&&isServerItem(item)))}function getIntros(firstItem,apiClient,options){return!options.startPositionTicks&&options.fullscreen!==!1&&enableIntros(firstItem)&&userSettings.enableCinemaMode()?apiClient.getIntros(firstItem.Id):Promise.resolve({Items:[]})}function getAudioMaxValues(deviceProfile){var maxAudioSampleRate=null,maxAudioBitDepth=null;return deviceProfile.CodecProfiles.map(function(codecProfile){"Audio"===codecProfile.Type&&(codecProfile.Conditions||[]).map(function(condition){"LessThanEqual"===condition.Condition&&"AudioBitDepth"===condition.Property&&(maxAudioBitDepth=condition.Value),"LessThanEqual"===condition.Condition&&"AudioSampleRate"===condition.Property&&(maxAudioSampleRate=condition.Value)})}),{maxAudioSampleRate:maxAudioSampleRate,maxAudioBitDepth:maxAudioBitDepth}}function getAudioStreamUrl(item,transcodingProfile,directPlayContainers,maxBitrate,apiClient,maxAudioSampleRate,maxAudioBitDepth,startPosition){var url="Audio/"+item.Id+"/universal";return startingPlaySession++,apiClient.getUrl(url,{UserId:apiClient.getCurrentUserId(),DeviceId:apiClient.deviceId(),MaxStreamingBitrate:maxBitrate||appSettings.maxStreamingBitrate(),Container:directPlayContainers,TranscodingContainer:transcodingProfile.Container||null,TranscodingProtocol:transcodingProfile.Protocol||null,AudioCodec:transcodingProfile.AudioCodec,MaxAudioSampleRate:maxAudioSampleRate,MaxAudioBitDepth:maxAudioBitDepth,api_key:apiClient.accessToken(),PlaySessionId:startingPlaySession,StartTimeTicks:startPosition||0,EnableRedirection:!0,EnableRemoteMedia:apphost.supports("remotemedia")})}function getAudioStreamUrlFromDeviceProfile(item,deviceProfile,maxBitrate,apiClient,startPosition){var transcodingProfile=deviceProfile.TranscodingProfiles.filter(function(p){return"Audio"===p.Type&&"Streaming"===p.Context})[0],directPlayContainers="";deviceProfile.DirectPlayProfiles.map(function(p){"Audio"===p.Type&&(directPlayContainers?directPlayContainers+=","+p.Container:directPlayContainers=p.Container)});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)});for(var maxValues=getAudioMaxValues(deviceProfile),supportsUniversalAudio=apiClient.isMinServerVersion("3.2.17.5"),streamUrls=[],i=0,length=items.length;i=interceptors.length)return void resolve();var interceptor=interceptors[index];interceptor.intercept(options).then(function(){runNextPrePlay(interceptors,index+1,options,resolve,reject)},reject)}function sendPlaybackListToPlayer(player,items,deviceProfile,maxBitrate,apiClient,startPosition){return setStreamUrls(items,deviceProfile,maxBitrate,apiClient,startPosition).then(function(){return loading.hide(),player.play({items:items})})}function playAfterBitrateDetect(connectionManager,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);return player&&!enableLocalPlaylistManagement(player)?sendPlaybackListToPlayer(player,playOptions.items,deviceProfile,maxBitrate,apiClient,startPosition):getPlaybackMediaSource(player,apiClient,deviceProfile,maxBitrate,item,startPosition).then(function(mediaSource){var streamInfo=createStreamInfo(apiClient,item.MediaType,item,mediaSource,startPosition);return streamInfo.fullscreen=playOptions.fullscreen,getPlayerData(player).isChangingStream=!1,getPlayerData(player).maxStreamingBitrate=maxBitrate,player.play(streamInfo).then(function(){loading.hide(),onPlaybackStartedFn(),onPlaybackStarted(player,playOptions,streamInfo,mediaSource)},function(){onPlaybackStartedFn(),onPlaybackStarted(player,playOptions,streamInfo,mediaSource),setTimeout(function(err){onPlaybackError.call(player,err,{type:"mediadecodeerror"})},100)})})}):promise.then(function(){var streamInfo=createStreamInfoFromUrlItem(item);return streamInfo.fullscreen=playOptions.fullscreen,getPlayerData(player).isChangingStream=!1,player.play(streamInfo).then(function(){loading.hide(),onPlaybackStartedFn(),onPlaybackStarted(player,playOptions,streamInfo)},function(){self.stop(player)})})}function createStreamInfo(apiClient,type,item,mediaSource,startPosition,forceTranscoding){var mediaUrl,contentType,directOptions,transcodingOffsetTicks=0,playerStartPositionTicks=startPosition,liveStreamId=mediaSource.LiveStreamId,playMethod="Transcode",mediaSourceContainer=(mediaSource.Container||"").toLowerCase();"Video"===type?(contentType=getMimeType("video",mediaSourceContainer),mediaSource.enableDirectPlay&&!forceTranscoding?(mediaUrl=mediaSource.Path,playMethod="DirectPlay"):mediaSource.SupportsDirectStream&&!forceTranscoding?(directOptions={Static:!0,mediaSourceId:mediaSource.Id,deviceId:apiClient.deviceId(),api_key:apiClient.accessToken()},mediaSource.ETag&&(directOptions.Tag=mediaSource.ETag),mediaSource.LiveStreamId&&(directOptions.LiveStreamId=mediaSource.LiveStreamId),mediaUrl=apiClient.getUrl("Videos/"+item.Id+"/stream."+mediaSourceContainer,directOptions),playMethod="DirectStream"):mediaSource.SupportsTranscoding&&(mediaUrl=apiClient.getUrl(mediaSource.TranscodingUrl),"hls"===mediaSource.TranscodingSubProtocol?contentType="application/x-mpegURL":(playerStartPositionTicks=null,contentType=getMimeType("video",mediaSource.TranscodingContainer),mediaUrl.toLowerCase().indexOf("copytimestamps=true")===-1&&(transcodingOffsetTicks=startPosition||0)))):"Audio"===type?(contentType=getMimeType("audio",mediaSourceContainer),mediaSource.enableDirectPlay&&!forceTranscoding?(mediaUrl=mediaSource.Path,playMethod="DirectPlay"):mediaSource.StreamUrl?(playMethod="Transcode",mediaUrl=mediaSource.StreamUrl):mediaSource.SupportsDirectStream&&!forceTranscoding?(directOptions={Static:!0,mediaSourceId:mediaSource.Id,deviceId:apiClient.deviceId(),api_key:apiClient.accessToken()},mediaSource.ETag&&(directOptions.Tag=mediaSource.ETag),mediaSource.LiveStreamId&&(directOptions.LiveStreamId=mediaSource.LiveStreamId),mediaUrl=apiClient.getUrl("Audio/"+item.Id+"/stream."+mediaSourceContainer,directOptions),playMethod="DirectStream"):mediaSource.SupportsTranscoding&&(mediaUrl=apiClient.getUrl(mediaSource.TranscodingUrl),"hls"===mediaSource.TranscodingSubProtocol?contentType="application/x-mpegURL":(transcodingOffsetTicks=startPosition||0,playerStartPositionTicks=null,contentType=getMimeType("audio",mediaSource.TranscodingContainer)))):"Game"===type&&(mediaUrl=mediaSource.Path,playMethod="DirectPlay"),!mediaUrl&&mediaSource.SupportsDirectPlay&&(mediaUrl=mediaSource.Path,playMethod="DirectPlay");var resultInfo={url:mediaUrl,mimeType:contentType,transcodingOffsetTicks:transcodingOffsetTicks,playMethod:playMethod,playerStartPositionTicks:playerStartPositionTicks,item:item,mediaSource:mediaSource,textTracks:getTextTracks(apiClient,mediaSource),tracks:getTextTracks(apiClient,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,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.changeAudioStreamIndex=function(player){if(player=player||self._currentPlayer,player&&!enableLocalPlaylistManagement(player))return player.changeAudioStreamIndex()},self.changeSubtitleStreamIndex=function(player){if(player=player||self._currentPlayer,player&&!enableLocalPlaylistManagement(player))return player.changeSubtitleStreamIndex()},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){return player=player||self._currentPlayer,player&&player.getMaxStreamingBitrate?player.getMaxStreamingBitrate():getPlayerData(player).maxStreamingBitrate||appSettings.maxStreamingBitrate()},self.enableAutomaticBitrateDetection=function(player){return player=player||self._currentPlayer,player&&player.enableAutomaticBitrateDetection?player.enableAutomaticBitrateDetection():appSettings.enableAutomaticBitrateDetection()},self.setMaxStreamingBitrate=function(options,player){if(player=player||self._currentPlayer,player&&player.setMaxStreamingBitrate)return player.setMaxStreamingBitrate(options);var promise;options.enableAutomaticBitrateDetection?(appSettings.enableAutomaticBitrateDetection(!0),promise=connectionManager.getApiClient(self.currentItem(player).ServerId).detectBitrate(!0)):(appSettings.enableAutomaticBitrateDetection(!1),promise=Promise.resolve(options.maxBitrate)),promise.then(function(bitrate){appSettings.maxStreamingBitrate(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"===currentStream.DeliveryMethod||"Embed"===currentStream.DeliveryMethod&&"Transcode"===currentPlayMethod)&&changeStream(player,getCurrentTicks(player),{SubtitleStreamIndex:-1}):!currentStream&&newStream?"External"===newStream.DeliveryMethod?selectedTrackElementIndex=index:"Embed"===newStream.DeliveryMethod&&"Transcode"!==currentPlayMethod?selectedTrackElementIndex=index:changeStream(player,getCurrentTicks(player),{SubtitleStreamIndex:index}):currentStream&&newStream&&("External"===newStream.DeliveryMethod||"Embed"===newStream.DeliveryMethod&&"Transcode"!==currentPlayMethod?(selectedTrackElementIndex=index,"External"!==currentStream.DeliveryMethod&&"Embed"!==currentStream.DeliveryMethod&&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.play=function(options){if(normalizePlayOptions(options),self._currentPlayer){if(options.enableRemotePlayers===!1&&!self._currentPlayer.isLocalPlayer)return Promise.reject();if(!self._currentPlayer.isLocalPlayer)return self._currentPlayer.play(options)}if(options.fullscreen&&loading.show(),options.items)return translateItemsForPlayback(options.items,options).then(function(items){return playWithIntros(items,options)});if(!options.serverId)throw new Error("serverId required!");return getItemsForPlayback(options.serverId,{Ids:options.ids.join(",")}).then(function(result){return translateItemsForPlayback(result.Items,options).then(function(items){return playWithIntros(items,options)})})},self.getPlayerState=function(player){if(player=player||self._currentPlayer,!player)throw new Error("player cannot be null");if(!enableLocalPlaylistManagement(player)&&player.getPlayerState)return player.getPlayerState();var item=player?self.currentItem(player):null,mediaSource=player?self.currentMediaSource(player):null,state={PlayState:{}};return player&&(state.PlayState.VolumeLevel=player.getVolume(),state.PlayState.IsMuted=player.isMuted(),state.PlayState.IsPaused=player.paused(),state.PlayState.RepeatMode=self.getRepeatMode(player),state.PlayState.MaxStreamingBitrate=self.getMaxStreamingBitrate(player),state.PlayState.PositionTicks=getCurrentTicks(player),state.PlayState.PlaybackStartTimeTicks=self.playbackStartTime(player),state.PlayState.SubtitleStreamIndex=self.getSubtitleStreamIndex(player),state.PlayState.AudioStreamIndex=self.getAudioStreamIndex(player),state.PlayState.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,Promise.resolve(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.setCurrentPlaylistItem=function(playlistItemId,player){if(player=player||self._currentPlayer,player&&!enableLocalPlaylistManagement(player))return player.setCurrentPlaylistItem(playlistItemId);for(var newItem,newItemIndex,playlist=self._playQueueManager.getPlaylist(),i=0,length=playlist.length;i=0){var playlist=self._playQueueManager.getPlaylist(),newItem=playlist[newIndex];if(newItem){var playOptions=Object.assign({},currentPlayOptions,{startPositionTicks:0});playInternal(newItem,playOptions,function(){setPlaylistState(newItem.PlaylistItemId,newIndex)})}}},self.queue=function(options,player){queue(options,"",player)},self.queueNext=function(options,player){queue(options,"next",player)},events.on(pluginManager,"registered",function(e,plugin){"mediaplayer"===plugin.type&&initMediaPlayer(plugin)}),pluginManager.ofType("mediaplayer").map(initMediaPlayer),window.addEventListener("beforeunload",function(e){var player=self._currentPlayer;player&&self.isPlaying(player)&&(self._playNextAfterEnded=!1,onPlaybackStopped.call(player))}),events.on(serverNotifications,"ServerShuttingDown",function(e,apiClient,data){self.setDefaultPlayerActive()}),events.on(serverNotifications,"ServerRestarting",function(e,apiClient,data){self.setDefaultPlayerActive()}),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}}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.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 ticks=this.getCurrentTicks(player);ticks+=1e4*userSettings.skipForwardLength();var runTimeTicks=this.duration(player)||0;ticks=interceptors.length)return void resolve();var interceptor=interceptors[index];interceptor.intercept(options).then(function(){runNextPrePlay(interceptors,index+1,options,resolve,reject)},reject)}function sendPlaybackListToPlayer(player,items,deviceProfile,maxBitrate,apiClient,startPosition){return setStreamUrls(items,deviceProfile,maxBitrate,apiClient,startPosition).then(function(){return loading.hide(),player.play({items:items})})}function playAfterBitrateDetect(connectionManager,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);return player&&!enableLocalPlaylistManagement(player)?sendPlaybackListToPlayer(player,playOptions.items,deviceProfile,maxBitrate,apiClient,startPosition):getPlaybackMediaSource(player,apiClient,deviceProfile,maxBitrate,item,startPosition).then(function(mediaSource){var streamInfo=createStreamInfo(apiClient,item.MediaType,item,mediaSource,startPosition);return streamInfo.fullscreen=playOptions.fullscreen,getPlayerData(player).isChangingStream=!1,getPlayerData(player).maxStreamingBitrate=maxBitrate,player.play(streamInfo).then(function(){loading.hide(),onPlaybackStartedFn(),onPlaybackStarted(player,playOptions,streamInfo,mediaSource)},function(){onPlaybackStartedFn(),onPlaybackStarted(player,playOptions,streamInfo,mediaSource),setTimeout(function(err){onPlaybackError.call(player,err,{type:"mediadecodeerror"})},100)})})}):promise.then(function(){var streamInfo=createStreamInfoFromUrlItem(item);return streamInfo.fullscreen=playOptions.fullscreen,getPlayerData(player).isChangingStream=!1,player.play(streamInfo).then(function(){loading.hide(),onPlaybackStartedFn(),onPlaybackStarted(player,playOptions,streamInfo)},function(){self.stop(player)})})}function createStreamInfo(apiClient,type,item,mediaSource,startPosition,forceTranscoding){var mediaUrl,contentType,directOptions,transcodingOffsetTicks=0,playerStartPositionTicks=startPosition,liveStreamId=mediaSource.LiveStreamId,playMethod="Transcode",mediaSourceContainer=(mediaSource.Container||"").toLowerCase();"Video"===type?(contentType=getMimeType("video",mediaSourceContainer),mediaSource.enableDirectPlay&&!forceTranscoding?(mediaUrl=mediaSource.Path,playMethod="DirectPlay"):mediaSource.SupportsDirectStream&&!forceTranscoding?(directOptions={Static:!0,mediaSourceId:mediaSource.Id,deviceId:apiClient.deviceId(),api_key:apiClient.accessToken()},mediaSource.ETag&&(directOptions.Tag=mediaSource.ETag),mediaSource.LiveStreamId&&(directOptions.LiveStreamId=mediaSource.LiveStreamId),mediaUrl=apiClient.getUrl("Videos/"+item.Id+"/stream."+mediaSourceContainer,directOptions),playMethod="DirectStream"):mediaSource.SupportsTranscoding&&(mediaUrl=apiClient.getUrl(mediaSource.TranscodingUrl),"hls"===mediaSource.TranscodingSubProtocol?contentType="application/x-mpegURL":(playerStartPositionTicks=null,contentType=getMimeType("video",mediaSource.TranscodingContainer),mediaUrl.toLowerCase().indexOf("copytimestamps=true")===-1&&(transcodingOffsetTicks=startPosition||0)))):"Audio"===type?(contentType=getMimeType("audio",mediaSourceContainer),mediaSource.enableDirectPlay&&!forceTranscoding?(mediaUrl=mediaSource.Path,playMethod="DirectPlay"):mediaSource.StreamUrl?(playMethod="Transcode",mediaUrl=mediaSource.StreamUrl):mediaSource.SupportsDirectStream&&!forceTranscoding?(directOptions={Static:!0,mediaSourceId:mediaSource.Id,deviceId:apiClient.deviceId(),api_key:apiClient.accessToken()},mediaSource.ETag&&(directOptions.Tag=mediaSource.ETag),mediaSource.LiveStreamId&&(directOptions.LiveStreamId=mediaSource.LiveStreamId),mediaUrl=apiClient.getUrl("Audio/"+item.Id+"/stream."+mediaSourceContainer,directOptions),playMethod="DirectStream"):mediaSource.SupportsTranscoding&&(mediaUrl=apiClient.getUrl(mediaSource.TranscodingUrl),"hls"===mediaSource.TranscodingSubProtocol?contentType="application/x-mpegURL":(transcodingOffsetTicks=startPosition||0,playerStartPositionTicks=null,contentType=getMimeType("audio",mediaSource.TranscodingContainer)))):"Game"===type&&(mediaUrl=mediaSource.Path,playMethod="DirectPlay"),!mediaUrl&&mediaSource.SupportsDirectPlay&&(mediaUrl=mediaSource.Path,playMethod="DirectPlay");var resultInfo={url:mediaUrl,mimeType:contentType,transcodingOffsetTicks:transcodingOffsetTicks,playMethod:playMethod,playerStartPositionTicks:playerStartPositionTicks,item:item,mediaSource:mediaSource,textTracks:getTextTracks(apiClient,mediaSource),tracks:getTextTracks(apiClient,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,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.changeAudioStreamIndex=function(player){if(player=player||self._currentPlayer,player&&!enableLocalPlaylistManagement(player))return player.changeAudioStreamIndex()},self.changeSubtitleStreamIndex=function(player){if(player=player||self._currentPlayer,player&&!enableLocalPlaylistManagement(player))return player.changeSubtitleStreamIndex()},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){return player=player||self._currentPlayer,player&&player.getMaxStreamingBitrate?player.getMaxStreamingBitrate():getPlayerData(player).maxStreamingBitrate||appSettings.maxStreamingBitrate()},self.enableAutomaticBitrateDetection=function(player){return player=player||self._currentPlayer,player&&player.enableAutomaticBitrateDetection?player.enableAutomaticBitrateDetection():appSettings.enableAutomaticBitrateDetection()},self.setMaxStreamingBitrate=function(options,player){if(player=player||self._currentPlayer,player&&player.setMaxStreamingBitrate)return player.setMaxStreamingBitrate(options);var promise;options.enableAutomaticBitrateDetection?(appSettings.enableAutomaticBitrateDetection(!0),promise=connectionManager.getApiClient(self.currentItem(player).ServerId).detectBitrate(!0)):(appSettings.enableAutomaticBitrateDetection(!1),promise=Promise.resolve(options.maxBitrate)),promise.then(function(bitrate){appSettings.maxStreamingBitrate(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"===currentStream.DeliveryMethod||"Embed"===currentStream.DeliveryMethod&&"Transcode"===currentPlayMethod)&&changeStream(player,getCurrentTicks(player),{SubtitleStreamIndex:-1}):!currentStream&&newStream?"External"===newStream.DeliveryMethod?selectedTrackElementIndex=index:"Embed"===newStream.DeliveryMethod&&"Transcode"!==currentPlayMethod?selectedTrackElementIndex=index:changeStream(player,getCurrentTicks(player),{SubtitleStreamIndex:index}):currentStream&&newStream&&("External"===newStream.DeliveryMethod||"Embed"===newStream.DeliveryMethod&&"Transcode"!==currentPlayMethod?(selectedTrackElementIndex=index,"External"!==currentStream.DeliveryMethod&&"Embed"!==currentStream.DeliveryMethod&&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.play=function(options){if(normalizePlayOptions(options),self._currentPlayer){if(options.enableRemotePlayers===!1&&!self._currentPlayer.isLocalPlayer)return Promise.reject();if(!self._currentPlayer.isLocalPlayer)return self._currentPlayer.play(options)}if(options.fullscreen&&loading.show(),options.items)return translateItemsForPlayback(options.items,options).then(function(items){return playWithIntros(items,options)});if(!options.serverId)throw new Error("serverId required!");return getItemsForPlayback(options.serverId,{Ids:options.ids.join(",")}).then(function(result){return translateItemsForPlayback(result.Items,options).then(function(items){return playWithIntros(items,options)})})},self.getPlayerState=function(player){if(player=player||self._currentPlayer,!player)throw new Error("player cannot be null");if(!enableLocalPlaylistManagement(player)&&player.getPlayerState)return player.getPlayerState();var item=player?self.currentItem(player):null,mediaSource=player?self.currentMediaSource(player):null,state={PlayState:{}};return player&&(state.PlayState.VolumeLevel=player.getVolume(),state.PlayState.IsMuted=player.isMuted(),state.PlayState.IsPaused=player.paused(),state.PlayState.RepeatMode=self.getRepeatMode(player),state.PlayState.MaxStreamingBitrate=self.getMaxStreamingBitrate(player),state.PlayState.PositionTicks=getCurrentTicks(player),state.PlayState.PlaybackStartTimeTicks=self.playbackStartTime(player),state.PlayState.SubtitleStreamIndex=self.getSubtitleStreamIndex(player),state.PlayState.AudioStreamIndex=self.getAudioStreamIndex(player),state.PlayState.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,Promise.resolve(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.setCurrentPlaylistItem=function(playlistItemId,player){if(player=player||self._currentPlayer,player&&!enableLocalPlaylistManagement(player))return player.setCurrentPlaylistItem(playlistItemId);for(var newItem,newItemIndex,playlist=self._playQueueManager.getPlaylist(),i=0,length=playlist.length;i=0){var playlist=self._playQueueManager.getPlaylist(),newItem=playlist[newIndex];if(newItem){var playOptions=Object.assign({},currentPlayOptions,{startPositionTicks:0});playInternal(newItem,playOptions,function(){setPlaylistState(newItem.PlaylistItemId,newIndex)})}}},self.queue=function(options,player){queue(options,"",player)},self.queueNext=function(options,player){queue(options,"next",player)},events.on(pluginManager,"registered",function(e,plugin){"mediaplayer"===plugin.type&&initMediaPlayer(plugin)}),pluginManager.ofType("mediaplayer").map(initMediaPlayer),window.addEventListener("beforeunload",function(e){var player=self._currentPlayer;player&&self.isPlaying(player)&&(self._playNextAfterEnded=!1,onPlaybackStopped.call(player))}),events.on(serverNotifications,"ServerShuttingDown",function(e,apiClient,data){self.setDefaultPlayerActive()}),events.on(serverNotifications,"ServerRestarting",function(e,apiClient,data){self.setDefaultPlayerActive()}),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}}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.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 ticks=this.getCurrentTicks(player);ticks+=1e4*userSettings.skipForwardLength();var runTimeTicks=this.duration(player)||0;ticks Emby Premiere.", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/da.json b/dashboard-ui/bower_components/emby-webcomponents/strings/da.json index cad943e12e..f27ab415bd 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/da.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/da.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/de.json b/dashboard-ui/bower_components/emby-webcomponents/strings/de.json index 228b91267a..64e97f70d5 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/de.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/de.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "Das Emby Konto wurde diesem Benutzer hinzugef\u00fcgt.", "ErrorAddingGuestAccount2": "Bitte stellen Sie sicher, dass Ihre G\u00e4ste die Aktivierung vervollst\u00e4ndigt haben, welche wir ihm in einer Email nach der Erstellung des Kontos zugesandt haben. Sollte diese Email nicht angekommen sein, senden Sie bitte eine Email an {0}. Bitte geben Sie Ihre Emailadresse und die des Gastes mit an.", "HeaderEmbyAccountAdded": "Emby Konto hinzugef\u00fcgt", + "Browse": "Bl\u00e4ttern", + "Manage": "Verwalten", + "HeaderMyDownloads": "Meine Downloads", "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).", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/el.json b/dashboard-ui/bower_components/emby-webcomponents/strings/el.json index 2a8156c7d2..99f0383c21 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/el.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/el.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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": "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.", 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 65ab653a77..d66340bf92 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/en-gb.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/en-gb.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", 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 b9e65f3a4b..66408d6368 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/en-us.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/en-us.json @@ -33,11 +33,14 @@ "Friday": "Friday", "Saturday": "Saturday", "Days": "Days", + "Browse": "Browse", + "Manage": "Manage", "RecordSeries": "Record series", "HeaderCinemaMode": "Cinema Mode", "HeaderCloudSync": "Cloud Sync", "HeaderDownloadedMedia": "Downloaded Media", "Downloads": "Downloads", + "HeaderMyDownloads": "My Downloads", "HeaderOfflineDownloads": "Offline Media", "HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.", "CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.", 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 6b4d3c6bf5..e3fde40b82 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/es-ar.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/es-ar.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", 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 d5e8ddb75d..b3a7a2cdf1 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/es-mx.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/es-mx.json @@ -1,19 +1,22 @@ { - "MessageEmbyAccontRemoved": "The Emby account has been removed from this user.", - "ErrorRemovingEmbyConnectAccount": "There was an error removing the Emby Connect account. Please ensure you have an active internet connection and try again.", - "HeaderInvitationSent": "Invitation Sent", - "HeaderEmbyAccountRemoved": "Emby Account Removed", - "GuestUserNotFound": "User not found. Please ensure the name is correct and try again, or try entering their email address.", - "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.", - "ErrorReachingEmbyConnect": "There was an error reaching the Emby Connect server. Please ensure you have an active internet connection and try again.", - "ErrorAddingEmbyConnectAccount1": "There was an error adding the Emby Connect account. Have you created an Emby account? Sign up at {0}.", - "ErrorAddingEmbyConnectAccount2": "Please ensure the Emby account has been activated by following the instructions in the email sent after creating the account. If you did not receive this email then please send an email to {0} from the email address used with the Emby account.", - "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.", - "ErrorAddingGuestAccount1": "There was an error adding the Emby Connect account. Has your guest created an Emby account? They can sign up at {0}.", - "MessageEmbyAccountAdded": "The Emby account has been added to this user.", - "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", - "HeaderEmbyAccountAdded": "Emby Account Added", + "MessageEmbyAccontRemoved": "La cuenta Emby ha sido eliminada de este usuario.", + "ErrorRemovingEmbyConnectAccount": "Hubo un error retirando la cuenta de Emby Connect. Por favor aseg\u00farese que su conexi\u00f3n a internet esta activa e intente de nuevo.", + "HeaderInvitationSent": "Invitaci\u00f3n Enviada", + "HeaderEmbyAccountRemoved": "Cuenta Emby Eliminada", + "GuestUserNotFound": "Usuario no encontrado. Por favor aseg\u00farese de que el nombre es correcto e intente de nuevo, o intente introducir la direcci\u00f3n de correo de su invitado.", + "MessageInvitationSentToUser": "Se ha enviado un correo electr\u00f3nico a {0}, invit\u00e1ndolo a aceptar tu invitaci\u00f3n para compartir.", + "MessageInvitationSentToNewUser": "Un correo electr\u00f3nico se ha enviado a {0} invit\u00e1ndolos a registrarse en Emby.", + "ErrorReachingEmbyConnect": "Hubo un error al tratar de contactar el servidor de Emby Connect. Por favor aseg\u00farese de que tiene una conexi\u00f3n activa de internet e intente de nuevo.", + "ErrorAddingEmbyConnectAccount1": "Hubo un error agregando la cuenta de Emby Connect. \u00bfYa ha creado una cuenta de Emby? Registrese en {0}.", + "ErrorAddingEmbyConnectAccount2": "Por favor aseg\u00farese que la cuenta Emby ha sido activada siguiendo las instrucciones incluidas en el correo electr\u00f3nico que recibi\u00f3 al crear la cuenta. Si no recibi\u00f3 dicho correo electr\u00f3nico por favor escriba uno a {0} desde la direcci\u00f3n de correo electr\u00f3nico usada con la cuenta Emby.", + "MessagePendingEmbyAccountAdded": "La cuenta Emby ha sido agregada a este usuario. Se enviara un correo electr\u00f3nico al propietario de la cuenta. La invitaci\u00f3n necesitara ser confirmada dando clic al enlace dentro del correo electr\u00f3nico.", + "ErrorAddingGuestAccount1": "Hubo un error agregando la cuenta de Emby Connect. \u00bfSu invitado ya ha creado una cuenta de Emby Connect? Puede registrarse en {0}.", + "MessageEmbyAccountAdded": "La cuenta Emby ha sido agregada a este usuario.", + "ErrorAddingGuestAccount2": "Por favor aseg\u00farese de que su invitado ha completado la activaci\u00f3n siguiendo las instrucciones que le fueron enviadas en el correo electr\u00f3nico despu\u00e9s de crear la cuenta. Si no recibi\u00f3 dicho correo entonces escriba un correo electr\u00f3nico a {0}, e incluya su direcci\u00f3n de correo electr\u00f3nico ademas de la de su invitado.", + "HeaderEmbyAccountAdded": "Cuenta Emby Agregada", + "Browse": "Navegar", + "Manage": "Administrar", + "HeaderMyDownloads": "Mis Descargas", "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.", @@ -471,6 +474,6 @@ "AudioBitrateNotSupported": "Tasa de bits de audio no soportado", "AudioChannelsNotSupported": "Canales de audio no soportados", "VideoResolutionNotSupported": "Resoluci\u00f3n de video no soportada", - "AudioProfileNotSupported": "Audio profile not supported", - "AudioSampleRateNotSupported": "Audio sample rate not supported" + "AudioProfileNotSupported": "Perfil de audio no soportado", + "AudioSampleRateNotSupported": "Muestreo (sample) de audio no soportado" } \ 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 60d1d193f1..7b646ecf3a 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/es.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/es.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/fi.json b/dashboard-ui/bower_components/emby-webcomponents/strings/fi.json index fe10168ccf..e468d50f4f 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/fi.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/fi.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", 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 4840201b84..a3f9484892 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/fr-ca.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/fr-ca.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/fr.json b/dashboard-ui/bower_components/emby-webcomponents/strings/fr.json index 527b461552..29a47a4b20 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/fr.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/fr.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "Le compte Emby a \u00e9t\u00e9 ajout\u00e9 \u00e0 cet utilisateur.", "ErrorAddingGuestAccount2": "Veuillez vous assurer que vos invit\u00e9s ont bien activ\u00e9 leur compte en suivant les instructions fournies dans le courriel envoy\u00e9 apr\u00e8s la cr\u00e9ation de leur compte. S'ils n'ont pas re\u00e7u ce courriel, veuillez envoyer un courriel \u00e0 {0} en pr\u00e9cisant votre adresse courriel ainsi que la leur.", "HeaderEmbyAccountAdded": "Compte Emby ajout\u00e9", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "MessageUnlockAppWithPurchaseOrSupporter": "D\u00e9verrouillez cette fonctionnalit\u00e9 avec un petit achat en une fois, ou avec une souscription Emby Premiere.", "MessageUnlockAppWithSupporter": "D\u00e9verrouillez cette fonctionnalit\u00e9 avec une souscription Emby Premiere.", "MessageToValidateSupporter": "Si vous avez un abonnement Emby Premiere, veuillez-vous assurer que vous avez configur\u00e9 Emby Premiere dans votre menu de gestion Emby Server auquel vous pouvez acc\u00e9der en cliquant sur Emby Premiere dans le menu principal", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/gsw.json b/dashboard-ui/bower_components/emby-webcomponents/strings/gsw.json index 3fd11d4c1b..456e0f8154 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/gsw.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/gsw.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/he.json b/dashboard-ui/bower_components/emby-webcomponents/strings/he.json index c3dc4b7ca8..c59c9e5b29 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/he.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/he.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/hr.json b/dashboard-ui/bower_components/emby-webcomponents/strings/hr.json index 41f8134759..3c0ce26313 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/hr.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/hr.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/hu.json b/dashboard-ui/bower_components/emby-webcomponents/strings/hu.json index 730282137e..35c96d41ea 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/hu.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/hu.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/id.json b/dashboard-ui/bower_components/emby-webcomponents/strings/id.json index d5b28e4eed..ffb1bd4e85 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/id.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/id.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/it.json b/dashboard-ui/bower_components/emby-webcomponents/strings/it.json index 718f08d951..b12427bfb8 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/it.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/it.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "L'account Emby \u00e8 stato aggiunto a questo utente", "ErrorAddingGuestAccount2": "Assicurati che i tuoi ospiti abbiano completato l'attivazione seguendo le istruzioni contenute nell'email inviata dopo la creazione dell'account. Se non ha ricevuto questa email, invia una email a {0}, e includi il tuo indirizzo email cos\u00ec come il loro.", "HeaderEmbyAccountAdded": "Account Emby Aggiunto", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json b/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json index f592c2cd28..8a1133d7ca 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "Emby \u0442\u0456\u0440\u043a\u0435\u043b\u0433\u0456\u0441\u0456 \u043e\u0441\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0433\u0430 \u04af\u0441\u0442\u0435\u043b\u0456\u043d\u0434\u0456.", "ErrorAddingGuestAccount2": "\u0422\u0456\u0440\u043a\u0435\u043b\u0433\u0456 \u0436\u0430\u0441\u0430\u0493\u0430\u043d\u043d\u0430\u043d \u043a\u0435\u0439\u0456\u043d \u044d-\u043f\u043e\u0448\u0442\u0430\u043c\u0435\u043d \u0436\u0456\u0431\u0435\u0440\u0456\u043b\u0433\u0435\u043d \u043d\u04b1\u0441\u049b\u0430\u0443\u043b\u0430\u0440\u0493\u0430 \u0441\u04d9\u0439\u043a\u0435\u0441, \u049b\u043e\u043d\u0430\u0493\u044b\u04a3\u044b\u0437 \u0436\u0430\u0441\u0430\u0493\u0430\u043d\u043d\u0430\u043d \u043a\u0435\u0439\u0456\u043d \u0442\u0456\u0440\u043a\u0435\u043b\u0433\u0456 \u0431\u0435\u043b\u0441\u0435\u043d\u0434\u0456\u0440\u0443\u0456\u043d \u0430\u044f\u049b\u0442\u0430\u0493\u0430\u043d\u044b\u043d\u0430 \u043a\u04e9\u0437 \u0436\u0435\u0442\u043a\u0456\u0437\u0456\u04a3\u0456\u0437. \u0415\u0433\u0435\u0440 \u043e\u043b \u043e\u0441\u044b \u044d-\u043f\u043e\u0448\u0442\u0430\u043d\u044b \u0430\u043b\u043c\u0430\u0493\u0430\u043d \u0431\u043e\u043b\u0441\u0430, \u04e9\u0437\u0456\u04a3\u0456\u0437\u0434\u0456\u04a3 \u0436\u04d9\u043d\u0435 \u043e\u043d\u044b\u04a3 \u044d-\u043f\u043e\u0448\u0442\u0430 \u043c\u0435\u043a\u0435\u043d\u0436\u0430\u0439\u043b\u0430\u0440\u044b\u043d \u049b\u043e\u0441\u044b\u043f \u044d-\u043f\u043e\u0448\u0442\u0430 \u0430\u0440\u049b\u044b\u043b\u044b {0} \u043c\u0435\u043a\u0435\u043d\u0436\u0430\u0439\u044b\u043d\u0430 \u0445\u0430\u0431\u0430\u0440 \u0436\u0456\u0431\u0435\u0440\u0456\u04a3\u0456\u0437.", "HeaderEmbyAccountAdded": "Emby \u0442\u0456\u0440\u043a\u0435\u043b\u0433\u0456\u0441\u0456 \u04af\u0441\u0442\u0435\u043b\u0456\u043d\u0434\u0456", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ko.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ko.json index 23b24fe4f1..40bc2dc5cc 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/ko.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ko.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", 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 cce6ea596b..ef6477afec 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/lt-lt.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/lt-lt.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ms.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ms.json index 3d0b8803e3..74bbddf986 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/ms.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ms.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/nb.json b/dashboard-ui/bower_components/emby-webcomponents/strings/nb.json index 6dff9f7b9f..ab07971337 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/nb.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/nb.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/nl.json b/dashboard-ui/bower_components/emby-webcomponents/strings/nl.json index df53b5ce7a..addbdfd0d2 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/nl.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/nl.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/pl.json b/dashboard-ui/bower_components/emby-webcomponents/strings/pl.json index 254dbd6204..4c001b52e0 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/pl.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/pl.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", 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 a2f8bcdffd..323ba983e4 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/pt-br.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/pt-br.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", 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 79a60ae2b9..2b52adc81e 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/pt-pt.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/pt-pt.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ro.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ro.json index 74ab9ce900..14fecf33db 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/ro.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ro.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json index 0618ac0915..d7675c6158 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "\u0423\u0447\u0451\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c Emby \u0431\u044b\u043b\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f", "ErrorAddingGuestAccount2": "\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u0430\u0448 \u0433\u043e\u0441\u0442\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044e, \u0441\u043b\u0435\u0434\u0443\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c \u0432 \u043f\u0438\u0441\u044c\u043c\u0435, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u043c \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438. \u0415\u0441\u043b\u0438 \u043e\u043d \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0442\u0430\u043a\u043e\u0435 \u043f\u0438\u0441\u044c\u043c\u043e, \u0442\u043e\u0433\u0434\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043f\u0438\u0441\u044c\u043c\u043e \u043d\u0430 {0}, \u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u0432\u043e\u0439 \u0430\u0434\u0440\u0435\u0441 \u042d-\u043f\u043e\u0447\u0442\u044b, \u043d\u0430\u0440\u044f\u0434\u0443 \u0441 \u0435\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u043e\u043c.", "HeaderEmbyAccountAdded": "\u0423\u0447\u0451\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c Emby \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/sk.json b/dashboard-ui/bower_components/emby-webcomponents/strings/sk.json index 3d0b8803e3..74bbddf986 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/sk.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/sk.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", 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 98042ec33d..b88cc2e470 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/sl-si.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/sl-si.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/sv.json b/dashboard-ui/bower_components/emby-webcomponents/strings/sv.json index d5913abe3b..d3b82d3ce9 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/sv.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/sv.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/tr.json b/dashboard-ui/bower_components/emby-webcomponents/strings/tr.json index 29c7c9ef59..1cb8411675 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/tr.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/tr.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/uk.json b/dashboard-ui/bower_components/emby-webcomponents/strings/uk.json index 40bb2bc9d8..ab3d92b2f6 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/uk.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/uk.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/vi.json b/dashboard-ui/bower_components/emby-webcomponents/strings/vi.json index d12a737c37..37b72efcb9 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/vi.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/vi.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", 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 0b41fbb411..102906de3a 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-cn.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-cn.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", 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 a9b2285705..5f29ad8698 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-hk.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-hk.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", 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 c66af784b5..f87a8bba68 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-tw.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-tw.json @@ -14,6 +14,9 @@ "MessageEmbyAccountAdded": "The Emby account has been added to this user.", "ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.", "HeaderEmbyAccountAdded": "Emby Account Added", + "Browse": "Browse", + "Manage": "Manage", + "HeaderMyDownloads": "My Downloads", "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.", diff --git a/dashboard-ui/css/dashboard.css b/dashboard-ui/css/dashboard.css index 828dde6dc6..4f9baf06a2 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}.dashboardDocument{font-family:-apple-system,BlinkMacSystemFont,Roboto,"Segoe UI",Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",'Open Sans',sans-serif}.dashboardFooter{margin-top:3.5em;text-align:center}.dashboardFooter a{text-decoration:none;font-weight:400;margin:0 .7em}.dashboardFooter .appLinks a{margin:.25em}.ui-body-a .listItem-shaded:nth-child(even){background:#f8f8f8}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 .btnCast,.dashboardDocument .dashboardEntryHeaderButton,.dashboardDocument .headerSelectedPlayer,.dashboardDocument .headerVoiceButton,.dashboardDocument .lnkManageServer,.dashboardDocument .lnkMySync{display:none!important}.adminDrawer{background:#fff!important}.adminDrawer .sidebarLink:hover{color:#00897B!important}.adminDrawer .sidebarLink.selectedSidebarLink{background:#52B54B!important;color:#fff!important}.adminDrawerLogo{padding:1.5em 1em 1.2em;border-bottom:1px solid #e0e0e0;margin-bottom:1em;display:block}.adminDrawerLogo img{height:2.2em}.ui-body-a a{color:#388E3C;font-weight:500}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}.ulForm{margin:-1em -1em 1.4em!important}.ulForm li:not(.ui-li-divider){background:0 0;border:0!important}.popup .ulForm{margin-bottom:0!important}.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 2.5em}.dashboardSection h2{margin:0 0 .5em}@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}}@media all and (min-width:90em){.dashboardColumn-3-46{width:46%}.dashboardColumn-3-27{width:27%}}.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}@media all and (min-width:26.25em){.activeSession{width:50%!important}}.sessionCardFooter{padding:1em;border-top:1px solid #eee;text-align:center;position:relative}.sessionAppInfo,.sessionNowPlayingInfo{padding:.5em;overflow:hidden}.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;z-index:999;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}.dashboardDocument{font-family:-apple-system,BlinkMacSystemFont,Roboto,"Segoe UI",Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",'Open Sans',sans-serif}.dashboardFooter{margin-top:3.5em;text-align:center}.dashboardFooter a{text-decoration:none;font-weight:400;margin:0 .7em}.dashboardFooter .appLinks a{margin:.25em}.ui-body-a .listItem-shaded:nth-child(even){background:#f8f8f8}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 .btnCast,.dashboardDocument .dashboardEntryHeaderButton,.dashboardDocument .headerSelectedPlayer,.dashboardDocument .headerVoiceButton,.dashboardDocument .lnkManageServer,.dashboardDocument .lnkMySync{display:none!important}.adminDrawer{background:#fff!important}.adminDrawer .sidebarLink:hover{color:#00897B!important}.adminDrawer .sidebarLink.selectedSidebarLink{background:#52B54B!important;color:#fff!important}.adminDrawerLogo{padding:1.5em 1em 1.2em;border-bottom:1px solid #e0e0e0;margin-bottom:1em;display:block}.adminDrawerLogo img{height:2.2em}.ui-body-a a{color:green}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}.ulForm{margin:-1em -1em 1.4em!important}.ulForm li:not(.ui-li-divider){background:0 0;border:0!important}.popup .ulForm{margin-bottom:0!important}.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 2.5em}.dashboardSection h2{margin:0 0 .5em}@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}}@media all and (min-width:90em){.dashboardColumn-3-46{width:46%}.dashboardColumn-3-27{width:27%}}.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}@media all and (min-width:26.25em){.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}.sessionCardButton{margin:0;color:#555}.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;z-index:999;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 diff --git a/dashboard-ui/css/librarybrowser.css b/dashboard-ui/css/librarybrowser.css index e16d1ca971..df443b3cfa 100644 --- a/dashboard-ui/css/librarybrowser.css +++ b/dashboard-ui/css/librarybrowser.css @@ -1 +1 @@ -.itemName,.itemTag{font-weight:400!important}.detailButton-mobile,.detailButton-mobile-content{-webkit-box-orient:vertical;-webkit-box-direction:normal}.alphabetPicker,.detailButton-mobile,.itemLinks,.listPaging,.viewSettings{text-align:center}.playstatebutton-played i,.ratingbutton-withrating i{color:#c33}.downloadbutton-complete i,.downloadbutton-on i{color:#4285F4}.hidingAnimatedTab{visibility:hidden}.headerArrowImage{height:20px;margin-left:.5em}.background-theme-b .backgroundContainer,.dialog.background-theme-b{background-color:#161616}.background-theme-b .backgroundContainer.withBackdrop{background-color:rgba(6,6,6,.94)!important;background:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.99)),color-stop(rgba(0,0,0,.94)),to(rgba(0,0,0,.5)))!important;background:-webkit-linear-gradient(left,rgba(0,0,0,.99),rgba(0,0,0,.94),rgba(0,0,0,.5))!important;background:-o-linear-gradient(left,rgba(0,0,0,.99),rgba(0,0,0,.94),rgba(0,0,0,.5))!important;background:linear-gradient(to right,rgba(0,0,0,.99),rgba(0,0,0,.94),rgba(0,0,0,.5))!important}.ui-body-b{color:#ddd!important}.backdropContainer{position:fixed;top:0;left:0;right:0;bottom:0;z-index:-1}.libraryPage .header{padding-bottom:0}.pageTabContent{contain:style}.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}.criticReview:first-child{margin-top:.5em}.criticReview img{width:2.4em}.criticRatingScore{margin-bottom:.5em}.itemTag{display:inline-block;background-color:#333;-webkit-border-radius:.25em;border-radius:.25em;padding:.3em .5em;margin:0 .3em .3em 0;color:#fff!important;text-decoration:none}.itemOverview{white-space:pre-wrap}a.itemTag:hover{background-color:#2489ce}.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;background-position:center center;background-repeat:no-repeat;height:45vh;position:relative}.itemBackdropProgressBar{position:absolute!important;bottom:0;left:0;right:0}.itemBackdropFader{position:absolute;bottom:-1px;left:0;right:0;background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#161616));background:-webkit-linear-gradient(rgba(0,0,0,0),#161616);background:-o-linear-gradient(rgba(0,0,0,0),#161616);background:linear-gradient(rgba(0,0,0,0),#161616);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%;background-repeat:no-repeat;background-position:center center;-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{border:1px solid transparent;width:100%}.thumbDetailImageContainer{width:400px}.itemDetailImage.loaded{-webkit-box-shadow:0 0 1.5em #000;box-shadow:0 0 1.5em #000;border:1px solid #222}.itemDetailGalleryLink img:hover{-webkit-box-shadow:0 0 1.5em 3px #52B54B;box-shadow:0 0 1.5em 3px #52B54B}@media all and (max-width:50em){.detailPageContent{position:relative}.detailImageContainer{position:absolute;top:-90px;left:5%;width:auto}.itemDetailImage{height:120px;width:auto!important}.btnPlaySimple,.mainDetailButtons-nonmobile{display:none!important}}@media all and (min-width:50em){.itemBackdrop{display:none}.detailPagePrimaryContainer{display:-webkit-box;display:-webkit-flex;display:flex;margin-bottom:3.6em}.mainDetailButtons-mobile{display:none!important}}@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}.emby-button.btnFloatingRecord{background-color:#c33!important}@media all and (max-width:50em){.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-left:-.5em}.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}@media all and (min-width:25em){.mainDetailButtons>.raised{padding-left:1.5em;padding-right:1.5em}}.detailButton-mobile{display:flex;-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;margin:0 .3em 0 0!important;padding-top:.5em!important;padding-bottom:.5em!important}.detailButton-mobile-content{display:-webkit-box;display:-webkit-flex;display:flex;-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.9em!important}.detailButton-mobile-text{margin-top:.7em;font-size:80%;font-weight:400;color:#aaa}.detailImageProgressContainer{position:absolute;bottom:4px;right:1px;left:1px;text-align:center}.listTopPaging,.viewControls{display:inline-block}@media all and (max-width:50em){.editorMenuLink{display:none}}.itemMiscInfo{-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden;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:50em){.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}}.detailPageParentLink{font-weight:inherit!important}.mediaInfoContent{line-height:1.5em}.mediaInfoStream{margin:1em 3em 1em 0;display:inline-block;color:#bbb;vertical-align:top}.mediaInfoStreamType{display:block;color:#fff;margin-bottom:1em}.mediaInfoAttribute{color:#fff;display:inline-block}.mediaInfoLabel{color:#aaa;margin-right:1em;display:inline-block}.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}.alphabetPicker{position:fixed;left:.4em;bottom:48px;display:none;line-height:1}.alphabetPicker-right{right:.4em;left:auto}.layout-desktop .absolutePageTabContent .alphabetPicker{right:1.5em}@media all and (max-height:31.25em){.alphabetPicker{display:none!important}.itemBackdrop{height:52vh}}.alphaPicker-vertical .alphaPickerButton{padding-top:2px!important;padding-bottom:2px!important}@media all and (max-height:43.75em){.alphaPicker-vertical .alphaPickerButton{padding-top:1px!important;padding-bottom:1px!important}}@media all and (max-height:37.5em){.alphaPicker-vertical .alphaPickerButton{padding-top:0!important;padding-bottom:0!important}}@media all and (max-height:33.125em){.alphabetPicker{font-size:80%!important}}@media all and (max-height:30em){.alphabetPicker{font-size:76%!important}}@media all and (min-height:37.5em){.alphabetPicker{bottom:70px}}@media all and (min-height:56.25em){.alphabetPicker{bottom:120px}}@media all and (min-height:62.5em){.alphabetPicker{bottom:200px}}@media all and (max-width:75em){.listViewUserDataButtons{display:none!important}}.userProfileSettingsForm{max-width:700px}@media all and (max-width:43.75em){.userProfileSettingsForm .detailSection{margin-left:.5em;margin-right:.5em}}@media all and (max-width:50em){.detailsHiddenOnMobile{display:none}}#criticReviewsContent.hiddenScrollX{white-space:nowrap}#criticReviewsContent.hiddenScrollX .paperList{min-width:240px;width:90%;max-width:500px;display:inline-block;vertical-align:top;margin:0 .35em 0 0}.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:1.5em 0 1em;-webkit-flex-wrap:wrap;flex-wrap:wrap}.mediaInfoText{padding:.3em .5em!important;margin-right:.5em;margin-bottom:.5em;font-size:94%!important}.sectionTitleButton,.sectionTitleIconButton{margin-right:0!important;display:inline-block;vertical-align:middle}.mediaInfoText-upper{text-transform:uppercase}.verticalSection{margin-bottom:2.5em}.layout-tv .verticalSection{margin-bottom:1.7em}.sectionTitleContainer{margin-bottom:.3em}.layout-tv .sectionTitleContainer{margin-bottom:0}.sectionTitle{margin-bottom:.07em}.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:.15em}.verticalSection .sectionTitle{margin-top:0}.horizontalItemsContainer{display:-webkit-box;display:-webkit-flex;display:flex}.sectionTitleTextButton{margin:0 0 .1em!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%}@media all and (min-height:500px){.padded-left-withalphapicker{padding-left:6%}.padded-right-withalphapicker{padding-right:6%}}.padded-top{padding-top:1em}.padded-bottom{padding-bottom:1em}.padded-top-focusscale{padding-top:1.6em;margin-top:-1.6em}.padded-bottom-focusscale{padding-bottom:1.6em;margin-bottom:-1.6em}@media all and (min-width:600px){.padded-left-withalphapicker{padding-left:3%}.padded-right-withalphapicker{padding-right:3%}}@media all and (min-width:800px){.layout-tv .padded-left-withalphapicker,.layout-tv .padded-right-withalphapicker{padding-right:4.4%}}@media all and (min-width:1280px){.padded-left{padding-left:3.2%}.padded-right{padding-right:3.2%}.layout-tv .padded-left{padding-left:5%}.layout-tv .padded-left-withalphapicker,.layout-tv .padded-right,.layout-tv .padded-right-withalphapicker{padding-right:5%}}.homeLibraryButton{min-width:18%;margin:.5em!important}@media all and (max-width:50em){.homeLibraryButton{width:46%!important}}.searchfields-icon{color:#aaa} \ No newline at end of file +.itemName,.itemTag{font-weight:400!important}.detailButton-mobile,.detailButton-mobile-content{-webkit-box-orient:vertical;-webkit-box-direction:normal}.alphabetPicker,.detailButton-mobile,.itemLinks,.listPaging,.viewSettings{text-align:center}.playstatebutton-played i,.ratingbutton-withrating i{color:#c33}.downloadbutton-complete i,.downloadbutton-on i{color:#4285F4}.hidingAnimatedTab{visibility:hidden}.headerArrowImage{height:20px;margin-left:.5em}.background-theme-b .backgroundContainer,.dialog.background-theme-b{background-color:#161616}.background-theme-b .backgroundContainer.withBackdrop{background-color:rgba(6,6,6,.94)!important;background:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.99)),color-stop(rgba(0,0,0,.94)),to(rgba(0,0,0,.5)))!important;background:-webkit-linear-gradient(left,rgba(0,0,0,.99),rgba(0,0,0,.94),rgba(0,0,0,.5))!important;background:-o-linear-gradient(left,rgba(0,0,0,.99),rgba(0,0,0,.94),rgba(0,0,0,.5))!important;background:linear-gradient(to right,rgba(0,0,0,.99),rgba(0,0,0,.94),rgba(0,0,0,.5))!important}.ui-body-b{color:#ddd!important}.backdropContainer{position:fixed;top:0;left:0;right:0;bottom:0;z-index:-1}.libraryPage .header{padding-bottom:0}.pageTabContent{contain:style}.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}.criticReview:first-child{margin-top:.5em}.criticReview img{width:2.4em}.criticRatingScore{margin-bottom:.5em}.itemTag{display:inline-block;background-color:#333;-webkit-border-radius:.25em;border-radius:.25em;padding:.3em .5em;margin:0 .3em .3em 0;color:#fff!important;text-decoration:none}.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;background-position:center center;background-repeat:no-repeat;height:45vh;position:relative}.itemBackdropProgressBar{position:absolute!important;bottom:0;left:0;right:0}.itemBackdropFader{position:absolute;bottom:-1px;left:0;right:0;background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#161616));background:-webkit-linear-gradient(rgba(0,0,0,0),#161616);background:-o-linear-gradient(rgba(0,0,0,0),#161616);background:linear-gradient(rgba(0,0,0,0),#161616);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%;background-repeat:no-repeat;background-position:center center;-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{border:1px solid transparent;width:100%}.thumbDetailImageContainer{width:400px}.itemDetailImage.loaded{-webkit-box-shadow:0 0 1.5em #000;box-shadow:0 0 1.5em #000;border:1px solid #222}.itemDetailGalleryLink img:hover{border-color:#52B54B}@media all and (max-width:50em){.detailPageContent{position:relative}.detailImageContainer{position:absolute;top:-90px;left:5%;width:auto}.itemDetailImage{height:120px;width:auto!important}.btnPlaySimple,.mainDetailButtons-nonmobile{display:none!important}}@media all and (min-width:50em){.itemBackdrop{display:none}.detailPagePrimaryContainer{display:-webkit-box;display:-webkit-flex;display:flex;margin-bottom:3.6em}.mainDetailButtons-mobile{display:none!important}}@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}.emby-button.btnFloatingRecord{background-color:#c33!important}@media all and (max-width:50em){.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-left:-.5em}.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}@media all and (min-width:25em){.mainDetailButtons>.raised{padding-left:1.5em;padding-right:1.5em}}.detailButton-mobile{display:flex;-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;margin:0 .3em 0 0!important;padding-top:.5em!important;padding-bottom:.5em!important}.detailButton-mobile-content{display:-webkit-box;display:-webkit-flex;display:flex;-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.9em!important}.detailButton-mobile-text{margin-top:.7em;font-size:80%;font-weight:400;color:#aaa}.detailImageProgressContainer{position:absolute;bottom:4px;right:1px;left:1px;text-align:center}.listTopPaging,.viewControls{display:inline-block}@media all and (max-width:50em){.editorMenuLink{display:none}}.itemMiscInfo{-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden;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:50em){.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}}.detailPageParentLink{font-weight:inherit!important}.mediaInfoContent{line-height:1.5em}.mediaInfoStream{margin:1em 3em 1em 0;display:inline-block;color:#bbb;vertical-align:top}.mediaInfoStreamType{display:block;color:#fff;margin-bottom:1em}.mediaInfoAttribute{color:#fff;display:inline-block}.mediaInfoLabel{color:#aaa;margin-right:1em;display:inline-block}.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}.alphabetPicker{position:fixed;left:.4em;bottom:48px;display:none;line-height:1}.alphabetPicker-right{right:.4em;left:auto}.layout-desktop .absolutePageTabContent .alphabetPicker{right:1.5em}@media all and (max-height:31.25em){.alphabetPicker{display:none!important}.itemBackdrop{height:52vh}}.alphaPicker-vertical .alphaPickerButton{padding-top:2px!important;padding-bottom:2px!important}@media all and (max-height:43.75em){.alphaPicker-vertical .alphaPickerButton{padding-top:1px!important;padding-bottom:1px!important}}@media all and (max-height:37.5em){.alphaPicker-vertical .alphaPickerButton{padding-top:0!important;padding-bottom:0!important}}@media all and (max-height:33.125em){.alphabetPicker{font-size:80%!important}}@media all and (max-height:30em){.alphabetPicker{font-size:76%!important}}@media all and (min-height:37.5em){.alphabetPicker{bottom:70px}}@media all and (min-height:56.25em){.alphabetPicker{bottom:120px}}@media all and (min-height:62.5em){.alphabetPicker{bottom:200px}}@media all and (max-width:75em){.listViewUserDataButtons{display:none!important}}.userProfileSettingsForm{max-width:700px}@media all and (max-width:43.75em){.userProfileSettingsForm .detailSection{margin-left:.5em;margin-right:.5em}}@media all and (max-width:50em){.detailsHiddenOnMobile{display:none}}#criticReviewsContent.hiddenScrollX{white-space:nowrap}#criticReviewsContent.hiddenScrollX .paperList{min-width:240px;width:90%;max-width:500px;display:inline-block;vertical-align:top;margin:0 .35em 0 0}.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:1.5em 0 1em;-webkit-flex-wrap:wrap;flex-wrap:wrap}.mediaInfoText{padding:.3em .5em!important;margin-right:.5em;margin-bottom:.5em;font-size:94%!important}.sectionTitleButton,.sectionTitleIconButton{margin-right:0!important;display:inline-block;vertical-align:middle}.mediaInfoText-upper{text-transform:uppercase}.verticalSection{margin-bottom:2.5em}.layout-tv .verticalSection{margin-bottom:1.7em}.sectionTitleContainer{margin-bottom:.3em}.layout-tv .sectionTitleContainer{margin-bottom:0}.sectionTitle{margin-bottom:.07em}.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:.15em}.verticalSection .sectionTitle{margin-top:0}.horizontalItemsContainer{display:-webkit-box;display:-webkit-flex;display:flex}.sectionTitleTextButton{margin:0 0 .1em!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%}@media all and (min-height:500px){.padded-left-withalphapicker{padding-left:6%}.padded-right-withalphapicker{padding-right:6%}}.padded-top{padding-top:1em}.padded-bottom{padding-bottom:1em}.padded-top-focusscale{padding-top:1.6em;margin-top:-1.6em}.padded-bottom-focusscale{padding-bottom:1.6em;margin-bottom:-1.6em}@media all and (min-width:600px){.padded-left-withalphapicker{padding-left:3%}.padded-right-withalphapicker{padding-right:3%}}@media all and (min-width:800px){.layout-tv .padded-left-withalphapicker,.layout-tv .padded-right-withalphapicker{padding-right:4.4%}}@media all and (min-width:1280px){.padded-left{padding-left:3.2%}.padded-right{padding-right:3.2%}.layout-tv .padded-left{padding-left:5%}.layout-tv .padded-left-withalphapicker,.layout-tv .padded-right,.layout-tv .padded-right-withalphapicker{padding-right:5%}}.homeLibraryButton{min-width:18%;margin:.5em!important}@media all and (max-width:50em){.homeLibraryButton{width:46%!important}}.searchfields-icon{color:#aaa} \ No newline at end of file diff --git a/dashboard-ui/css/site.css b/dashboard-ui/css/site.css index e09e8a3c36..f2d768fd3e 100644 --- a/dashboard-ui/css/site.css +++ b/dashboard-ui/css/site.css @@ -1 +1 @@ -a,a:visited{color:#52B54B;text-decoration:none}a,a:active,a:hover,a:visited{text-decoration:none}h1,h2,h3{margin-top:1em}body,html{margin:0;padding:0;height:100%}.backgroundContainer{position:fixed;top:0;left:0;right:0;bottom:0;contain:layout style}a{font-weight:500}.button-link{font-weight:500!important}a:active,a:hover{color:#2E7D32}html{touch-action:manipulation;background-color:#242424;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",'Open Sans',sans-serif;font-size:88%;line-height:1.35;color:#333}.pageContainer,body{background-color:transparent!important}.smallerFontSize{font-size:82%}h1{font-family:-apple-system-headline,system-ui,BlinkMacSystemFont,Roboto,"Segoe UI",Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",'Open Sans',sans-serif;font-weight:400!important;font-size:1.72em}h2,h3{font-weight:400}h2{font-family:-apple-system-subheadline,system-ui,BlinkMacSystemFont,Roboto,"Segoe UI",Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",'Open Sans',sans-serif;font-size:1.5em}h3{font-size:1.17em}body{overflow-y:scroll!important;overflow-x:hidden;-webkit-font-smoothing:antialiased}body.autoScrollY{overflow-y:auto!important}.mainAnimatedPage{contain:style!important}.pageContainer{overflow-x:visible!important}.bodyWithPopupOpen{overflow-y:hidden!important}.libraryPage h1 a{color:inherit!important}h1 a:hover{text-decoration:underline}.ui-body-b a.accent{color:#52B54B!important}.ui-body-a .paperList{background-color:#fff}.ui-body-a [is=emby-select]{border-color:#ccc!important}.ui-body-a [is=emby-input],.ui-body-a [is=emby-textarea]{background:0 0;border-color:#ccc!important}.ui-body-a .secondaryText{color:#ccc}.ui-body-b .secondaryText{color:#aaa}div[data-role=page]{outline:0}.headroom{-webkit-transition:-webkit-transform 180ms linear;-o-transition:transform 180ms linear;transition:transform 180ms linear}.headroom--pinned{-webkit-transform:none;transform:none}.headroom--unpinned:not(.headroomDisabled){-webkit-transform:translateY(-100%);transform:translateY(-100%)}.hide{display:none!important}.header{padding:1.5em 0 0 1.5em}.imgLogoIcon{height:2em;vertical-align:middle}.imgLogoIcon+span{margin-left:.75em}@media all and (max-height:50em){.header{display:none!important}}.pageTitle{margin-top:0;font-family:inherit}.fieldDescription{padding-left:.15em;font-weight:400;white-space:normal!important}.fieldDescription+.fieldDescription{margin-top:.3em}.background-theme-a .backgroundContainer{background-color:#f6f6f6}.dialog.background-theme-a{background-color:#f0f0f0}.ui-body-a .collapseContent,.ui-body-a .visualCardBox{background-color:#fff}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}@media all and (min-width:56.25em){.page:not(.standalonePage) .header{padding-top:0}}.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}.header{padding-bottom:1em}.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:.25em dashed #bbb;-webkit-border-radius:.3em;border-radius:.3em;padding:1.6em;text-align:center;color:#bbb}.ui-body-a .emby-collapsible-button{border-color:#ddd}.ui-body-a .inputLabelUnfocused,.ui-body-a .textareaLabel{color:#555}.ui-body-a .inputLabelFocused,.ui-body-a .selectLabelFocused,.ui-body-a .textareaLabelFocused{color:green}.ui-body-a .fieldDescription,.ui-body-a .paperListLabel,.ui-body-a .selectLabelUnfocused{color:#555}.ui-body-a .listItem .secondary{color:#737373} \ No newline at end of file +h1,h2,h3{margin-top:1em}body,html{margin:0;padding:0;height:100%}.backgroundContainer{position:fixed;top:0;left:0;right:0;bottom:0;contain:layout style}a{color:#52B54B;font-weight:500;text-decoration:none}html{touch-action:manipulation;background-color:#242424;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",'Open Sans',sans-serif;font-size:88%;line-height:1.35;color:#333}.pageContainer,body{background-color:transparent!important}.smallerFontSize{font-size:82%}h1{font-family:-apple-system-headline,system-ui,BlinkMacSystemFont,Roboto,"Segoe UI",Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",'Open Sans',sans-serif;font-weight:400!important;font-size:1.72em}h2,h3{font-weight:400}h2{font-family:-apple-system-subheadline,system-ui,BlinkMacSystemFont,Roboto,"Segoe UI",Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",'Open Sans',sans-serif;font-size:1.5em}h3{font-size:1.17em}body{overflow-y:scroll!important;overflow-x:hidden;-webkit-font-smoothing:antialiased}body.autoScrollY{overflow-y:auto!important}.mainAnimatedPage{contain:style!important}.pageContainer{overflow-x:visible!important}.bodyWithPopupOpen{overflow-y:hidden!important}.libraryPage h1 a{color:inherit!important}h1 a:hover{text-decoration:underline}.ui-body-b a.accent{color:#52B54B!important}.ui-body-a .paperList{background-color:#fff}.ui-body-a [is=emby-select]{border-color:#ccc!important}.ui-body-a [is=emby-input],.ui-body-a [is=emby-textarea]{background:0 0;border-color:#ccc!important}.ui-body-a .secondaryText{color:#ccc}.ui-body-b .secondaryText{color:#aaa}div[data-role=page]{outline:0}.headroom{-webkit-transition:-webkit-transform 180ms linear;-o-transition:transform 180ms linear;transition:transform 180ms linear}.headroom--pinned{-webkit-transform:none;transform:none}.headroom--unpinned:not(.headroomDisabled){-webkit-transform:translateY(-100%);transform:translateY(-100%)}.hide{display:none!important}.header{padding:1.5em 0 0 1.5em}.imgLogoIcon{height:2em;vertical-align:middle}.imgLogoIcon+span{margin-left:.75em}@media all and (max-height:50em){.header{display:none!important}}.pageTitle{margin-top:0;font-family:inherit}.fieldDescription{padding-left:.15em;font-weight:400;white-space:normal!important}.fieldDescription+.fieldDescription{margin-top:.3em}.background-theme-a .backgroundContainer{background-color:#f6f6f6}.dialog.background-theme-a{background-color:#f0f0f0}.ui-body-a .collapseContent,.ui-body-a .visualCardBox{background-color:#fff}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}@media all and (min-width:56.25em){.page:not(.standalonePage) .header{padding-top:0}}.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}.header{padding-bottom:1em}.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:.25em dashed #bbb;-webkit-border-radius:.3em;border-radius:.3em;padding:1.6em;text-align:center;color:#bbb}.ui-body-a .emby-collapsible-button{border-color:#ddd}.ui-body-a .inputLabelUnfocused,.ui-body-a .textareaLabel{color:#555}.ui-body-a .inputLabelFocused,.ui-body-a .selectLabelFocused,.ui-body-a .textareaLabelFocused{color:green}.ui-body-a .fieldDescription,.ui-body-a .paperListLabel,.ui-body-a .selectLabelUnfocused{color:#555}.ui-body-a .listItem .secondary{color:#737373} \ No newline at end of file diff --git a/dashboard-ui/home.html b/dashboard-ui/home.html index 9e46e9f653..a9307cd20c 100644 --- a/dashboard-ui/home.html +++ b/dashboard-ui/home.html @@ -10,16 +10,10 @@
-
- -
- -
-
-
+
-
+
@@ -30,6 +24,6 @@
-
+
diff --git a/dashboard-ui/managedownloads.html b/dashboard-ui/managedownloads.html new file mode 100644 index 0000000000..ce7e567bff --- /dev/null +++ b/dashboard-ui/managedownloads.html @@ -0,0 +1,6 @@ +
+ +
+ +
+
\ No newline at end of file diff --git a/dashboard-ui/scripts/dashboardpage.js b/dashboard-ui/scripts/dashboardpage.js index f19288e664..de73ce1238 100644 --- a/dashboard-ui/scripts/dashboardpage.js +++ b/dashboard-ui/scripts/dashboardpage.js @@ -1,2 +1,2 @@ -define(["datetime","jQuery","events","dom","globalize","loading","playMethodHelper","libraryBrowser","humanedate","cardStyle","listViewStyle","emby-linkbutton"],function(datetime,$,events,dom,globalize,loading,playMethodHelper,libraryBrowser){"use strict";function onConnectionHelpClick(e){return e.preventDefault(),!1}function onEditServerNameClick(e){var page=dom.parentWithClass(this,"page");return require(["prompt"],function(prompt){prompt({label:globalize.translate("LabelFriendlyServerName"),description:globalize.translate("LabelFriendlyServerNameHelp"),value:page.querySelector(".serverNameHeader").innerHTML,confirmText:globalize.translate("ButtonSave")}).then(function(value){loading.show(),ApiClient.getServerConfiguration().then(function(config){config.ServerName=value,ApiClient.updateServerConfiguration(config).then(function(){page.querySelector(".serverNameHeader").innerHTML=value,loading.hide()})})})}),e.preventDefault(),!1}function renderSessionOptions(btn,session){require(["alert"],function(alert){var showTranscodeReasons,title,text=[],displayPlayMethod=playMethodHelper.getDisplayPlayMethod(session),isDirectStream="DirectStream"===displayPlayMethod,isTranscode="Transcode"===displayPlayMethod;isDirectStream?(html+=globalize.translate("sharedcomponents#DirectStreaming"),text.push(globalize.translate("sharedcomponents#DirectStreamHelp1")),text.push("
"),text.push(globalize.translate("sharedcomponents#DirectStreamHelp2"))):isTranscode&&(html+=globalize.translate("sharedcomponents#Transcoding"),text.push(globalize.translate("sharedcomponents#MediaIsBeingConverted")),session.TranscodingInfo&&session.TranscodingInfo.TranscodeReasons&&session.TranscodingInfo.TranscodeReasons.length&&(text.push("
"),text.push(globalize.translate("sharedcomponents#LabelReasonForTranscoding")),showTranscodeReasons=!0)),showTranscodeReasons&&session.TranscodingInfo.TranscodeReasons.forEach(function(t){text.push(globalize.translate("sharedcomponents#"+t))}),alert({text:text.join("
"),title:title})})}function onActiveDevicesClick(e){var btn=dom.parentWithClass(e.target,"btnCardOptions");if(btn){var card=dom.parentWithClass(btn,"card");if(card){var sessionId=card.id,session=(DashboardPage.sessionsList||[]).filter(function(s){return"session"+s.Id===sessionId})[0];session&&renderSessionOptions(btn,session)}}}window.DashboardPage={newsStartIndex:0,onPageInit:function(){var page=this;page.querySelector(".btnConnectionHelp").addEventListener("click",onConnectionHelpClick),page.querySelector(".btnEditServerName").addEventListener("click",onEditServerNameClick),page.querySelector(".activeDevices").addEventListener("click",onActiveDevicesClick)},onPageShow:function(){var page=this,apiClient=ApiClient;apiClient&&(DashboardPage.newsStartIndex=0,loading.show(),DashboardPage.pollForInfo(page),DashboardPage.startInterval(apiClient),events.on(apiClient,"websocketmessage",DashboardPage.onWebSocketMessage),events.on(apiClient,"websocketopen",DashboardPage.onWebSocketOpen),DashboardPage.lastAppUpdateCheck=null,DashboardPage.lastPluginUpdateCheck=null,Dashboard.getPluginSecurityInfo().then(function(pluginSecurityInfo){DashboardPage.renderSupporterIcon(page,pluginSecurityInfo)}),DashboardPage.reloadSystemInfo(page),DashboardPage.reloadNews(page),DashboardPage.sessionUpdateTimer=setInterval(DashboardPage.refreshSessionsLocally,6e4),$(".activityItems",page).activityLogList(),$(".swaggerLink",page).attr("href",apiClient.getUrl("swagger-ui/index.html",{api_key:ApiClient.accessToken()})))},onPageHide:function(){var page=this;$(".activityItems",page).activityLogList("destroy");var apiClient=ApiClient;apiClient&&(events.off(apiClient,"websocketmessage",DashboardPage.onWebSocketMessage),events.off(apiClient,"websocketopen",DashboardPage.onWebSocketOpen),DashboardPage.stopInterval(apiClient)),DashboardPage.sessionUpdateTimer&&clearInterval(DashboardPage.sessionUpdateTimer)},renderPaths:function(page,systemInfo){$("#cachePath",page).html(systemInfo.CachePath),$("#logPath",page).html(systemInfo.LogPath),$("#transcodingTemporaryPath",page).html(systemInfo.TranscodingTempPath),$("#metadataPath",page).html(systemInfo.InternalMetadataPath)},refreshSessionsLocally:function(){var list=DashboardPage.sessionsList;list&&DashboardPage.renderActiveConnections($.mobile.activePage,list)},reloadSystemInfo:function(page){ApiClient.getSystemInfo().then(function(systemInfo){page.querySelector(".serverNameHeader").innerHTML=systemInfo.ServerName;var localizedVersion=globalize.translate("LabelVersionNumber",systemInfo.Version);systemInfo.SystemUpdateLevel&&"Release"!=systemInfo.SystemUpdateLevel&&(localizedVersion+=" "+globalize.translate("Option"+systemInfo.SystemUpdateLevel).toLowerCase()),systemInfo.CanSelfRestart?$(".btnRestartContainer",page).removeClass("hide"):$(".btnRestartContainer",page).addClass("hide"),$("#appVersionNumber",page).html(localizedVersion),systemInfo.SupportsHttps?$("#ports",page).html(globalize.translate("LabelRunningOnPorts",systemInfo.HttpServerPortNumber,systemInfo.HttpsPortNumber)):$("#ports",page).html(globalize.translate("LabelRunningOnPort",systemInfo.HttpServerPortNumber)),DashboardPage.renderUrls(page,systemInfo),DashboardPage.renderPendingInstallations(page,systemInfo),systemInfo.CanSelfUpdate?($("#btnUpdateApplicationContainer",page).show(),$("#btnManualUpdateContainer",page).hide()):($("#btnUpdateApplicationContainer",page).hide(),$("#btnManualUpdateContainer",page).show()),"synology"==systemInfo.PackageName?$("#btnManualUpdateContainer").html(globalize.translate("SynologyUpdateInstructions")):$("#btnManualUpdateContainer").html(''+globalize.translate("PleaseUpdateManually")+""),DashboardPage.renderPaths(page,systemInfo),DashboardPage.renderHasPendingRestart(page,systemInfo.HasPendingRestart)})},reloadNews:function(page){var query={StartIndex:DashboardPage.newsStartIndex,Limit:4};ApiClient.getProductNews(query).then(function(result){var html=result.Items.map(function(item){var itemHtml="";itemHtml+='',itemHtml+='
',itemHtml+='dvr',itemHtml+='
',itemHtml+='
',itemHtml+=item.Title,itemHtml+="
",itemHtml+='
';var date=datetime.parseISO8601Date(item.Date,!0);return itemHtml+=datetime.toLocaleDateString(date),itemHtml+="
",itemHtml+="
",itemHtml+="
",itemHtml+="
"}),pagingHtml="";pagingHtml+="
",pagingHtml+=libraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1,updatePageSizeSetting:!1}),pagingHtml+="
",html=html.join("")+pagingHtml;var elem=$(".latestNewsItems",page).html(html);$(".btnNextPage",elem).on("click",function(){DashboardPage.newsStartIndex+=query.Limit,DashboardPage.reloadNews(page)}),$(".btnPreviousPage",elem).on("click",function(){DashboardPage.newsStartIndex-=query.Limit,DashboardPage.reloadNews(page)})})},startInterval:function(apiClient){apiClient.isWebSocketOpen()&&(apiClient.sendWebSocketMessage("SessionsStart","0,1500"),apiClient.sendWebSocketMessage("ScheduledTasksInfoStart","0,1000"))},stopInterval:function(apiClient){apiClient.isWebSocketOpen()&&(apiClient.sendWebSocketMessage("SessionsStop"),apiClient.sendWebSocketMessage("ScheduledTasksInfoStop"))},onWebSocketMessage:function(e,msg){var page=$($.mobile.activePage)[0];if("Sessions"==msg.MessageType)DashboardPage.renderInfo(page,msg.Data);else if("RestartRequired"==msg.MessageType)DashboardPage.renderHasPendingRestart(page,!0);else if("ServerShuttingDown"==msg.MessageType)DashboardPage.renderHasPendingRestart(page,!0);else if("ServerRestarting"==msg.MessageType)DashboardPage.renderHasPendingRestart(page,!0);else if("ScheduledTasksInfo"==msg.MessageType){var tasks=msg.Data;DashboardPage.renderRunningTasks(page,tasks)}else"PackageInstalling"!=msg.MessageType&&"PackageInstallationCompleted"!=msg.MessageType||(DashboardPage.pollForInfo(page,!0),DashboardPage.reloadSystemInfo(page))},onWebSocketOpen:function(){var apiClient=this;DashboardPage.startInterval(apiClient)},pollForInfo:function(page,forceUpdate){var apiClient=window.ApiClient;apiClient&&(apiClient.getSessions().then(function(sessions){DashboardPage.renderInfo(page,sessions,forceUpdate)}),apiClient.getScheduledTasks().then(function(tasks){DashboardPage.renderRunningTasks(page,tasks)}))},renderInfo:function(page,sessions,forceUpdate){DashboardPage.renderActiveConnections(page,sessions),DashboardPage.renderPluginUpdateInfo(page,forceUpdate),loading.hide()},renderActiveConnections:function(page,sessions){var html="";DashboardPage.sessionsList=sessions;var parentElement=$(".activeDevices",page);$(".card",parentElement).addClass("deadSession");for(var i=0,length=sessions.length;i',html+='
',html+='
',html+='
',html+='
';var imgUrl=DashboardPage.getNowPlayingImageUrl(nowPlayingItem);imgUrl?(html+='
',html+='
'+session.DeviceName+"
",html+='
'+DashboardPage.getAppSecondaryText(session)+"
",html+="
",html+="
",html+='
'+DashboardPage.getSessionNowPlayingTime(session)+"
";var nowPlayingName=DashboardPage.getNowPlayingName(session);if(html+='
',html+=nowPlayingName.html,html+="
",nowPlayingItem&&nowPlayingItem.RunTimeTicks){var position=session.PlayState.PositionTicks||0,value=100*position/nowPlayingItem.RunTimeTicks;html+=''}else html+='';html+=session.TranscodingInfo&&session.TranscodingInfo.CompletionPercentage?'':'',html+="
",html+="
",html+="
",html+='
',html+='
',html+=DashboardPage.getSessionNowPlayingStreamInfo(session),html+="
",html+='
';var userImage=DashboardPage.getUserImage(session);html+=userImage?'':'
',html+='
',html+=DashboardPage.getUsersHtml(session)||" ",html+="
",html+="
";var optionsClass="btnCardOptions";session.TranscodingInfo&&session.TranscodingInfo.TranscodeReasons&&session.TranscodingInfo.TranscodeReasons.length||(optionsClass+=" hide"),html+='',html+="
",html+="
",html+="
"}}parentElement.append(html),$(".deadSession",parentElement).remove()},getSessionNowPlayingStreamInfo:function(session){var html="",showTranscodingInfo=!1,showMoreInfoButton=!1,displayPlayMethod=playMethodHelper.getDisplayPlayMethod(session);if("DirectStream"===displayPlayMethod?(html+=globalize.translate("sharedcomponents#DirectStreaming"),showMoreInfoButton=!0):"Transcode"==displayPlayMethod?(html+=globalize.translate("sharedcomponents#Transcoding"),session.TranscodingInfo&&session.TranscodingInfo.Framerate&&(html+=" ("+session.TranscodingInfo.Framerate+" fps)"),showTranscodingInfo=!0,showMoreInfoButton=!0):"DirectPlay"==displayPlayMethod&&(html+=globalize.translate("sharedcomponents#DirectPlaying")),showTranscodingInfo){var line=[];session.TranscodingInfo&&(session.TranscodingInfo.Bitrate&&(session.TranscodingInfo.Bitrate>1e6?line.push((session.TranscodingInfo.Bitrate/1e6).toFixed(1)+" Mbps"):line.push(Math.floor(session.TranscodingInfo.Bitrate/1e3)+" kbps")),session.TranscodingInfo.Container&&line.push(session.TranscodingInfo.Container),session.TranscodingInfo.VideoCodec&&line.push(session.TranscodingInfo.VideoCodec),session.TranscodingInfo.AudioCodec&&session.TranscodingInfo.AudioCodec!=session.TranscodingInfo.Container&&line.push(session.TranscodingInfo.AudioCodec)),line.length&&(html+=" - "+line.join(" "))}return html||" "},getSessionNowPlayingTime:function(session){var nowPlayingItem=session.NowPlayingItem,html="";return nowPlayingItem?(html+=session.PlayState.PositionTicks?datetime.getDisplayRunningTime(session.PlayState.PositionTicks):"--:--:--",html+=" / ",html+=nowPlayingItem&&nowPlayingItem.RunTimeTicks?datetime.getDisplayRunningTime(nowPlayingItem.RunTimeTicks):"--:--:--"):html},getAppSecondaryText:function(session){return session.Client+" "+session.ApplicationVersion},getNowPlayingName:function(session){var imgUrl="",nowPlayingItem=session.NowPlayingItem;if(!nowPlayingItem)return{html:"Last seen "+humane_date(session.LastActivityDate),image:imgUrl};var topText=nowPlayingItem.Name,bottomText="";nowPlayingItem.Artists&&nowPlayingItem.Artists.length?(bottomText=topText,topText=nowPlayingItem.Artists[0]):nowPlayingItem.SeriesName||nowPlayingItem.Album?(bottomText=topText,topText=nowPlayingItem.SeriesName||nowPlayingItem.Album):nowPlayingItem.ProductionYear&&(bottomText=nowPlayingItem.ProductionYear),nowPlayingItem.ImageTags&&nowPlayingItem.ImageTags.Logo?imgUrl=ApiClient.getScaledImageUrl(nowPlayingItem.Id,{tag:nowPlayingItem.ImageTags.Logo,maxHeight:24,maxWidth:130,type:"Logo"}):nowPlayingItem.ParentLogoImageTag&&(imgUrl=ApiClient.getScaledImageUrl(nowPlayingItem.ParentLogoItemId,{tag:nowPlayingItem.ParentLogoImageTag,maxHeight:24,maxWidth:130,type:"Logo"})),imgUrl&&(topText='');var text=bottomText?topText+"
"+bottomText:topText;return{html:text,image:imgUrl}},getUsersHtml:function(session){var html=[];session.UserId&&html.push(session.UserName);for(var i=0,length=session.AdditionalUsers.length;i";if("dashboard"==clientLowered||"emby web client"==clientLowered){var imgUrl;return imgUrl=device.indexOf("chrome")!=-1?"css/images/clients/chrome.png":"css/images/clients/html5.png","Emby Web Client"}return clientLowered.indexOf("android")!=-1?"":clientLowered.indexOf("ios")!=-1?"":"mb-classic"==clientLowered?"":"roku"==clientLowered?"":"dlna"==clientLowered?"":"kodi"==clientLowered||"xbmc"==clientLowered?"":"chromecast"==clientLowered?"":null},getNowPlayingImageUrl:function(item){if(item&&item.BackdropImageTags&&item.BackdropImageTags.length)return ApiClient.getScaledImageUrl(item.Id,{type:"Backdrop",width:275,tag:item.BackdropImageTags[0]});if(item&&item.ParentBackdropImageTags&&item.ParentBackdropImageTags.length)return ApiClient.getScaledImageUrl(item.ParentBackdropItemId,{type:"Backdrop",width:275,tag:item.ParentBackdropImageTags[0]});if(item&&item.BackdropImageTag)return ApiClient.getScaledImageUrl(item.BackdropItemId,{type:"Backdrop",width:275,tag:item.BackdropImageTag});var imageTags=(item||{}).ImageTags||{};return item&&imageTags.Thumb?ApiClient.getScaledImageUrl(item.Id,{type:"Thumb",width:275,tag:imageTags.Thumb}):item&&item.ParentThumbImageTag?ApiClient.getScaledImageUrl(item.ParentThumbItemId,{type:"Thumb",width:275,tag:item.ParentThumbImageTag}):item&&item.ThumbImageTag?ApiClient.getScaledImageUrl(item.ThumbItemId,{type:"Thumb",width:275,tag:item.ThumbImageTag}):item&&imageTags.Primary?ApiClient.getScaledImageUrl(item.Id,{type:"Primary",width:275,tag:imageTags.Primary}):item&&item.PrimaryImageTag?ApiClient.getScaledImageUrl(item.PrimaryImageItemId,{type:"Primary",width:275,tag:item.PrimaryImageTag}):null},systemUpdateTaskKey:"SystemUpdateTask",renderRunningTasks:function(page,tasks){var html="";tasks=tasks.filter(function(t){return"Idle"!=t.State&&!t.IsHidden}),tasks.length?page.querySelector(".runningTasksContainer").classList.remove("hide"):page.querySelector(".runningTasksContainer").classList.add("hide"),tasks.filter(function(t){return t.Key==DashboardPage.systemUpdateTaskKey}).length?$("#btnUpdateApplication",page).buttonEnabled(!1):$("#btnUpdateApplication",page).buttonEnabled(!0);for(var i=0,length=tasks.length;i",html+=task.Name+"
","Running"==task.State){var progress=(task.CurrentProgressPercentage||0).toFixed(1);html+='',html+=""+progress+"%",html+="",html+=""+progress+"%",html+=''}else"Cancelling"==task.State&&(html+=''+globalize.translate("LabelStopping")+"");html+="

"}$("#divRunningTasks",page).html(html)},renderUrls:function(page,systemInfo){var helpButton=''+globalize.translate("ButtonHelp")+"";if(systemInfo.LocalAddress){var localAccessHtml=globalize.translate("LabelLocalAccessUrl",''+systemInfo.LocalAddress+"");$(".localUrl",page).html(localAccessHtml+helpButton).show().trigger("create")}else $(".externalUrl",page).hide();if(systemInfo.WanAddress){var externalUrl=systemInfo.WanAddress,remoteAccessHtml=globalize.translate("LabelRemoteAccessUrl",''+externalUrl+"");$(".externalUrl",page).html(remoteAccessHtml+helpButton).show().trigger("create")}else $(".externalUrl",page).hide()},renderSupporterIcon:function(page,pluginSecurityInfo){var imgUrl,text,supporterIconContainer=page.querySelector(".supporterIconContainer");AppInfo.enableSupporterMembership&&pluginSecurityInfo.IsMBSupporter?(supporterIconContainer.classList.remove("hide"),imgUrl="css/images/supporter/supporterbadge.png",text=globalize.translate("MessageThankYouForSupporting"),supporterIconContainer.innerHTML=''+text+""):supporterIconContainer.classList.add("hide")},renderHasPendingRestart:function(page,hasPendingRestart){if(hasPendingRestart)page.querySelector("#pUpToDate").classList.add("hide"),$("#pUpdateNow",page).hide();else{if(DashboardPage.lastAppUpdateCheck&&(new Date).getTime()-DashboardPage.lastAppUpdateCheck<18e5)return;DashboardPage.lastAppUpdateCheck=(new Date).getTime(),ApiClient.getAvailableApplicationUpdate().then(function(packageInfo){var version=packageInfo[0];version?(page.querySelector("#pUpToDate").classList.add("hide"),$("#pUpdateNow",page).show(),$("#newVersionNumber",page).html(globalize.translate("VersionXIsAvailableForDownload").replace("{0}",version.versionStr))):(page.querySelector("#pUpToDate").classList.remove("hide"),$("#pUpdateNow",page).hide())})}},renderPendingInstallations:function(page,systemInfo){if(!systemInfo.CompletedInstallations.length)return void $("#collapsiblePendingInstallations",page).addClass("hide");$("#collapsiblePendingInstallations",page).removeClass("hide");for(var html="",i=0,length=systemInfo.CompletedInstallations.length;i"+update.Name+" ("+update.Version+")
"}$("#pendingInstallations",page).html(html)},renderPluginUpdateInfo:function(page,forceUpdate){!forceUpdate&&DashboardPage.lastPluginUpdateCheck&&(new Date).getTime()-DashboardPage.lastPluginUpdateCheck<18e5||(DashboardPage.lastPluginUpdateCheck=(new Date).getTime(),ApiClient.getAvailablePluginUpdates().then(function(updates){var elem=$("#pPluginUpdates",page);if(!updates.length)return void elem.hide();elem.show();for(var html="",i=0,length=updates.length;i"+globalize.translate("NewVersionOfSomethingAvailable").replace("{0}",update.name)+"

",html+='"}elem.html(html)}))},installPluginUpdate:function(button){$(button).buttonEnabled(!1);var name=button.getAttribute("data-name"),guid=button.getAttribute("data-guid"),version=button.getAttribute("data-version"),classification=button.getAttribute("data-classification");loading.show(),ApiClient.installPlugin(name,guid,classification,version).then(function(){loading.hide()})},updateApplication:function(){var page=$($.mobile.activePage)[0];$("#btnUpdateApplication",page).buttonEnabled(!1),loading.show(),ApiClient.getScheduledTasks().then(function(tasks){var task=tasks.filter(function(t){return t.Key==DashboardPage.systemUpdateTaskKey})[0];ApiClient.startScheduledTask(task.Id).then(function(){DashboardPage.pollForInfo(page),loading.hide()})})},stopTask:function(id){var page=$($.mobile.activePage)[0];ApiClient.stopScheduledTask(id).then(function(){DashboardPage.pollForInfo(page)})},restart:function(){require(["confirm"],function(confirm){confirm({title:globalize.translate("HeaderRestart"),text:globalize.translate("MessageConfirmRestart"),confirmText:globalize.translate("ButtonRestart"),primary:"cancel"}).then(function(){$("#btnRestartServer").buttonEnabled(!1),$("#btnShutdown").buttonEnabled(!1),Dashboard.restartServer()})})},shutdown:function(){require(["confirm"],function(confirm){confirm({title:globalize.translate("HeaderShutdown"),text:globalize.translate("MessageConfirmShutdown"),confirmText:globalize.translate("ButtonShutdown"),primary:"cancel"}).then(function(){$("#btnRestartServer").buttonEnabled(!1),$("#btnShutdown").buttonEnabled(!1),ApiClient.shutdownServer()})})}},$(document).on("pageinit","#dashboardPage",DashboardPage.onPageInit).on("pageshow","#dashboardPage",DashboardPage.onPageShow).on("pagebeforehide","#dashboardPage",DashboardPage.onPageHide),function($,document,window){function getEntryHtml(entry){var html="";html+='
';var color="Error"==entry.Severity||"Fatal"==entry.Severity||"Warn"==entry.Severity?"#cc0000":"#52B54B";if(entry.UserId&&entry.UserPrimaryImageTag){var userImgUrl=ApiClient.getUserImageUrl(entry.UserId,{type:"Primary",tag:entry.UserPrimaryImageTag,height:40});html+='dvr"}else html+='dvr';html+='
',html+='
',html+=entry.Name,html+="
",html+='
';var date=datetime.parseISO8601Date(entry.Date,!0);return html+=datetime.toLocaleString(date).toLowerCase(),html+="
",html+='
',html+=entry.ShortOverview||"",html+="
",html+="
",html+="
"}function renderList(elem,result,startIndex,limit){var html=result.Items.map(getEntryHtml).join("");if(result.TotalRecordCount>limit){var query={StartIndex:startIndex,Limit:limit};html+=libraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1,updatePageSizeSetting:!1})}$(elem).html(html),$(".btnNextPage",elem).on("click",function(){reloadData(elem,startIndex+limit,limit)}),$(".btnPreviousPage",elem).on("click",function(){reloadData(elem,startIndex-limit,limit)}),$(".btnShowOverview",elem).on("click",function(){var item=$(this).parents(".newsItem"),overview=$(".newsItemLongDescription",item).html(),name=$(".notificationName",item).html();Dashboard.alert({message:'
'+overview+"
",title:name})})}function reloadData(elem,startIndex,limit){null==startIndex&&(startIndex=parseInt(elem.getAttribute("data-activitystartindex")||"0")),limit=limit||parseInt(elem.getAttribute("data-activitylimit")||"7");var minDate=new Date;minDate.setTime(minDate.getTime()-864e5),ApiClient.getJSON(ApiClient.getUrl("System/ActivityLog/Entries",{startIndex:startIndex,limit:limit,minDate:minDate.toISOString()})).then(function(result){elem.setAttribute("data-activitystartindex",startIndex),elem.setAttribute("data-activitylimit",limit),renderList(elem,result,startIndex,limit)})}function createList(elem){elem.each(function(){reloadData(this)}).addClass("activityLogListWidget");var apiClient=ApiClient;apiClient&&(events.on(apiClient,"websocketopen",onSocketOpen),events.on(apiClient,"websocketmessage",onSocketMessage))}function startListening(apiClient){apiClient.isWebSocketOpen()&&apiClient.sendWebSocketMessage("ActivityLogEntryStart","0,1500")}function stopListening(apiClient){apiClient.isWebSocketOpen()&&apiClient.sendWebSocketMessage("ActivityLogEntryStop","0,1500")}function onSocketOpen(){var apiClient=ApiClient;apiClient&&startListening(apiClient)}function onSocketMessage(e,data){var msg=data;"ActivityLogEntry"===msg.MessageType&&$(".activityLogListWidget").each(function(){reloadData(this)})}function destroyList(elem){var apiClient=ApiClient;apiClient&&(events.off(apiClient,"websocketopen",onSocketOpen),events.off(apiClient,"websocketmessage",onSocketMessage),stopListening(apiClient))}$.fn.activityLogList=function(action){"destroy"==action?(this.removeClass("activityLogListWidget"),destroyList(this)):createList(this);var apiClient=ApiClient;return apiClient&&startListening(apiClient),this}}(jQuery,document,window),function($,document,window){function dismissWelcome(page,userId){ApiClient.getDisplayPreferences("dashboard",userId,"dashboard").then(function(result){result.CustomPrefs[welcomeTourKey]=welcomeDismissValue,ApiClient.updateDisplayPreferences("dashboard",result,userId,"dashboard"),$(page).off("pageshow",onPageShowCheckTour)})}function showWelcomeIfNeeded(page,apiClient){var userId=Dashboard.getCurrentUserId();apiClient.getDisplayPreferences("dashboard",userId,"dashboard").then(function(result){if(result.CustomPrefs[welcomeTourKey]==welcomeDismissValue)$(".welcomeMessage",page).hide();else{var elem=$(".welcomeMessage",page).show();result.CustomPrefs[welcomeTourKey]?($(".tourHeader",elem).html(globalize.translate("HeaderWelcomeBack")),$(".tourButtonText",elem).html(globalize.translate("ButtonTakeTheTourToSeeWhatsNew"))):($(".tourHeader",elem).html(globalize.translate("HeaderWelcomeToProjectServerDashboard")),$(".tourButtonText",elem).html(globalize.translate("ButtonTakeTheTour")))}})}function takeTour(page,userId){require(["slideshow"],function(){var slides=[{imageUrl:"css/images/tour/admin/dashboard.png",title:globalize.translate("DashboardTourDashboard")},{imageUrl:"css/images/tour/admin/help.png",title:globalize.translate("DashboardTourHelp")},{imageUrl:"css/images/tour/admin/users.png",title:globalize.translate("DashboardTourUsers")},{imageUrl:"css/images/tour/admin/sync.png",title:globalize.translate("DashboardTourSync")},{imageUrl:"css/images/tour/admin/cinemamode.png",title:globalize.translate("DashboardTourCinemaMode") -},{imageUrl:"css/images/tour/admin/chapters.png",title:globalize.translate("DashboardTourChapters")},{imageUrl:"css/images/tour/admin/subtitles.png",title:globalize.translate("DashboardTourSubtitles")},{imageUrl:"css/images/tour/admin/plugins.png",title:globalize.translate("DashboardTourPlugins")},{imageUrl:"css/images/tour/admin/notifications.png",title:globalize.translate("DashboardTourNotifications")},{imageUrl:"css/images/tour/admin/scheduledtasks.png",title:globalize.translate("DashboardTourScheduledTasks")},{imageUrl:"css/images/tour/admin/mobile.png",title:globalize.translate("DashboardTourMobile")},{imageUrl:"css/images/tour/enjoy.jpg",title:globalize.translate("MessageEnjoyYourStay")}];require(["slideshow"],function(slideshow){var newSlideShow=new slideshow({slides:slides,interactive:!0,loop:!1});newSlideShow.show(),dismissWelcome(page,userId),$(".welcomeMessage",page).hide()})})}function onPageShowCheckTour(){var page=this,apiClient=ApiClient;apiClient&&!AppInfo.isNativeApp&&showWelcomeIfNeeded(page,apiClient)}var welcomeDismissValue="12",welcomeTourKey="welcomeTour";$(document).on("pageinit","#dashboardPage",function(){var page=this;$(".btnTakeTour",page).on("click",function(){takeTour(page,Dashboard.getCurrentUserId())})}).on("pageshow","#dashboardPage",onPageShowCheckTour)}(jQuery,document,window),pageClassOn("pageshow","type-interior",function(){var page=this;Dashboard.getPluginSecurityInfo().then(function(pluginSecurityInfo){if(!page.querySelector(".customSupporterPromotion")&&($(".supporterPromotion",page).remove(),!pluginSecurityInfo.IsMBSupporter&&AppInfo.enableSupporterMembership)){var html='";page.querySelector(".content-primary").insertAdjacentHTML("afterbegin",html)}})})}); \ No newline at end of file +define(["datetime","jQuery","events","dom","globalize","loading","connectionManager","playMethodHelper","libraryBrowser","humanedate","cardStyle","listViewStyle","emby-linkbutton","flexStyles"],function(datetime,$,events,dom,globalize,loading,connectionManager,playMethodHelper,libraryBrowser){"use strict";function onConnectionHelpClick(e){return e.preventDefault(),!1}function onEditServerNameClick(e){var page=dom.parentWithClass(this,"page");return require(["prompt"],function(prompt){prompt({label:globalize.translate("LabelFriendlyServerName"),description:globalize.translate("LabelFriendlyServerNameHelp"),value:page.querySelector(".serverNameHeader").innerHTML,confirmText:globalize.translate("ButtonSave")}).then(function(value){loading.show(),ApiClient.getServerConfiguration().then(function(config){config.ServerName=value,ApiClient.updateServerConfiguration(config).then(function(){page.querySelector(".serverNameHeader").innerHTML=value,loading.hide()})})})}),e.preventDefault(),!1}function showPlaybackInfo(btn,session){require(["alert"],function(alert){var showTranscodeReasons,title,text=[],displayPlayMethod=playMethodHelper.getDisplayPlayMethod(session),isDirectStream="DirectStream"===displayPlayMethod,isTranscode="Transcode"===displayPlayMethod;isDirectStream?(title=globalize.translate("sharedcomponents#DirectStreaming"),text.push(globalize.translate("sharedcomponents#DirectStreamHelp1")),text.push("
"),text.push(globalize.translate("sharedcomponents#DirectStreamHelp2"))):isTranscode&&(title=globalize.translate("sharedcomponents#Transcoding"),text.push(globalize.translate("sharedcomponents#MediaIsBeingConverted")),session.TranscodingInfo&&session.TranscodingInfo.TranscodeReasons&&session.TranscodingInfo.TranscodeReasons.length&&(text.push("
"),text.push(globalize.translate("sharedcomponents#LabelReasonForTranscoding")),showTranscodeReasons=!0)),showTranscodeReasons&&session.TranscodingInfo.TranscodeReasons.forEach(function(t){text.push(globalize.translate("sharedcomponents#"+t))}),alert({text:text.join("
"),title:title})})}function showSendMessageForm(btn,session){require(["prompt"],function(prompt){prompt({title:globalize.translate("HeaderSendMessage"),label:globalize.translate("LabelMessageText"),confirmText:globalize.translate("ButtonSend")}).then(function(text){if(text){var apiClient=connectionManager.getApiClient(session.ServerId);apiClient.sendMessageCommand(session.Id,{Text:text,TimeoutMs:5e3})}})})}function showOptionsMenu(btn,session){require(["actionsheet"],function(actionsheet){var menuItems=[];return session.ServerId&&session.DeviceId!==connectionManager.deviceId()&&menuItems.push({name:globalize.translate("SendMessage"),id:"sendmessage"}),session.TranscodingInfo&&session.TranscodingInfo.TranscodeReasons&&session.TranscodingInfo.TranscodeReasons.length&&menuItems.push({name:globalize.translate("ViewPlaybackInfo"),id:"transcodinginfo"}),actionsheet.show({items:menuItems,positionTo:btn}).then(function(id){switch(id){case"sendmessage":showSendMessageForm(btn,session);break;case"transcodinginfo":showPlaybackInfo(btn,session)}})})}function onActiveDevicesClick(e){var btn=dom.parentWithClass(e.target,"sessionCardButton");if(btn){var card=dom.parentWithClass(btn,"card");if(card){var sessionId=card.id,session=(DashboardPage.sessionsList||[]).filter(function(s){return"session"+s.Id===sessionId})[0];session&&(btn.classList.contains("btnCardOptions")?showOptionsMenu(btn,session):btn.classList.contains("btnSessionInfo")?showPlaybackInfo(btn,session):btn.classList.contains("btnSessionSendMessage")?showSendMessageForm(btn,session):btn.classList.contains("btnSessionStop")?connectionManager.getApiClient(session.ServerId).sendPlayStateCommand(session.Id,"Stop"):btn.classList.contains("btnSessionPlayPause")&&session.PlayState&&(session.PlayState.IsPaused?connectionManager.getApiClient(session.ServerId).sendPlayStateCommand(session.Id,"Unpause"):connectionManager.getApiClient(session.ServerId).sendPlayStateCommand(session.Id,"Pause")))}}}window.DashboardPage={newsStartIndex:0,onPageInit:function(){var page=this;page.querySelector(".btnConnectionHelp").addEventListener("click",onConnectionHelpClick),page.querySelector(".btnEditServerName").addEventListener("click",onEditServerNameClick),page.querySelector(".activeDevices").addEventListener("click",onActiveDevicesClick)},onPageShow:function(){var page=this,apiClient=ApiClient;apiClient&&(DashboardPage.newsStartIndex=0,loading.show(),DashboardPage.pollForInfo(page),DashboardPage.startInterval(apiClient),events.on(apiClient,"websocketmessage",DashboardPage.onWebSocketMessage),events.on(apiClient,"websocketopen",DashboardPage.onWebSocketOpen),DashboardPage.lastAppUpdateCheck=null,DashboardPage.lastPluginUpdateCheck=null,Dashboard.getPluginSecurityInfo().then(function(pluginSecurityInfo){DashboardPage.renderSupporterIcon(page,pluginSecurityInfo)}),DashboardPage.reloadSystemInfo(page),DashboardPage.reloadNews(page),DashboardPage.sessionUpdateTimer=setInterval(DashboardPage.refreshSessionsLocally,6e4),$(".activityItems",page).activityLogList(),$(".swaggerLink",page).attr("href",apiClient.getUrl("swagger-ui/index.html",{api_key:ApiClient.accessToken()})))},onPageHide:function(){var page=this;$(".activityItems",page).activityLogList("destroy");var apiClient=ApiClient;apiClient&&(events.off(apiClient,"websocketmessage",DashboardPage.onWebSocketMessage),events.off(apiClient,"websocketopen",DashboardPage.onWebSocketOpen),DashboardPage.stopInterval(apiClient)),DashboardPage.sessionUpdateTimer&&clearInterval(DashboardPage.sessionUpdateTimer)},renderPaths:function(page,systemInfo){$("#cachePath",page).html(systemInfo.CachePath),$("#logPath",page).html(systemInfo.LogPath),$("#transcodingTemporaryPath",page).html(systemInfo.TranscodingTempPath),$("#metadataPath",page).html(systemInfo.InternalMetadataPath)},refreshSessionsLocally:function(){var list=DashboardPage.sessionsList;list&&DashboardPage.renderActiveConnections($.mobile.activePage,list)},reloadSystemInfo:function(page){ApiClient.getSystemInfo().then(function(systemInfo){page.querySelector(".serverNameHeader").innerHTML=systemInfo.ServerName;var localizedVersion=globalize.translate("LabelVersionNumber",systemInfo.Version);systemInfo.SystemUpdateLevel&&"Release"!=systemInfo.SystemUpdateLevel&&(localizedVersion+=" "+globalize.translate("Option"+systemInfo.SystemUpdateLevel).toLowerCase()),systemInfo.CanSelfRestart?$(".btnRestartContainer",page).removeClass("hide"):$(".btnRestartContainer",page).addClass("hide"),$("#appVersionNumber",page).html(localizedVersion),systemInfo.SupportsHttps?$("#ports",page).html(globalize.translate("LabelRunningOnPorts",systemInfo.HttpServerPortNumber,systemInfo.HttpsPortNumber)):$("#ports",page).html(globalize.translate("LabelRunningOnPort",systemInfo.HttpServerPortNumber)),DashboardPage.renderUrls(page,systemInfo),DashboardPage.renderPendingInstallations(page,systemInfo),systemInfo.CanSelfUpdate?($("#btnUpdateApplicationContainer",page).show(),$("#btnManualUpdateContainer",page).hide()):($("#btnUpdateApplicationContainer",page).hide(),$("#btnManualUpdateContainer",page).show()),"synology"==systemInfo.PackageName?$("#btnManualUpdateContainer").html(globalize.translate("SynologyUpdateInstructions")):$("#btnManualUpdateContainer").html(''+globalize.translate("PleaseUpdateManually")+""),DashboardPage.renderPaths(page,systemInfo),DashboardPage.renderHasPendingRestart(page,systemInfo.HasPendingRestart)})},reloadNews:function(page){var query={StartIndex:DashboardPage.newsStartIndex,Limit:4};ApiClient.getProductNews(query).then(function(result){var html=result.Items.map(function(item){var itemHtml="";itemHtml+='',itemHtml+='
',itemHtml+='dvr',itemHtml+='
',itemHtml+='
',itemHtml+=item.Title,itemHtml+="
",itemHtml+='
';var date=datetime.parseISO8601Date(item.Date,!0);return itemHtml+=datetime.toLocaleDateString(date),itemHtml+="
",itemHtml+="
",itemHtml+="
",itemHtml+="
"}),pagingHtml="";pagingHtml+="
",pagingHtml+=libraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1,updatePageSizeSetting:!1}),pagingHtml+="
",html=html.join("")+pagingHtml;var elem=$(".latestNewsItems",page).html(html);$(".btnNextPage",elem).on("click",function(){DashboardPage.newsStartIndex+=query.Limit,DashboardPage.reloadNews(page)}),$(".btnPreviousPage",elem).on("click",function(){DashboardPage.newsStartIndex-=query.Limit,DashboardPage.reloadNews(page)})})},startInterval:function(apiClient){apiClient.isWebSocketOpen()&&(apiClient.sendWebSocketMessage("SessionsStart","0,1500"),apiClient.sendWebSocketMessage("ScheduledTasksInfoStart","0,1000"))},stopInterval:function(apiClient){apiClient.isWebSocketOpen()&&(apiClient.sendWebSocketMessage("SessionsStop"),apiClient.sendWebSocketMessage("ScheduledTasksInfoStop"))},onWebSocketMessage:function(e,msg){var page=$($.mobile.activePage)[0];if("Sessions"==msg.MessageType)DashboardPage.renderInfo(page,msg.Data);else if("RestartRequired"==msg.MessageType)DashboardPage.renderHasPendingRestart(page,!0);else if("ServerShuttingDown"==msg.MessageType)DashboardPage.renderHasPendingRestart(page,!0);else if("ServerRestarting"==msg.MessageType)DashboardPage.renderHasPendingRestart(page,!0);else if("ScheduledTasksInfo"==msg.MessageType){var tasks=msg.Data;DashboardPage.renderRunningTasks(page,tasks)}else"PackageInstalling"!=msg.MessageType&&"PackageInstallationCompleted"!=msg.MessageType||(DashboardPage.pollForInfo(page,!0),DashboardPage.reloadSystemInfo(page))},onWebSocketOpen:function(){var apiClient=this;DashboardPage.startInterval(apiClient)},pollForInfo:function(page,forceUpdate){var apiClient=window.ApiClient;apiClient&&(apiClient.getSessions().then(function(sessions){DashboardPage.renderInfo(page,sessions,forceUpdate)}),apiClient.getScheduledTasks().then(function(tasks){DashboardPage.renderRunningTasks(page,tasks)}))},renderInfo:function(page,sessions,forceUpdate){DashboardPage.renderActiveConnections(page,sessions),DashboardPage.renderPluginUpdateInfo(page,forceUpdate),loading.hide()},renderActiveConnections:function(page,sessions){var html="";DashboardPage.sessionsList=sessions;var parentElement=page.querySelector(".activeDevices");$(".card",parentElement).addClass("deadSession");for(var i=0,length=sessions.length;i',html+='
',html+='
',html+='
',html+='
';var imgUrl=DashboardPage.getNowPlayingImageUrl(nowPlayingItem);imgUrl?(html+='
',html+='
'+session.DeviceName+"
",html+='
'+DashboardPage.getAppSecondaryText(session)+"
",html+="
",html+="
",html+='
'+DashboardPage.getSessionNowPlayingTime(session)+"
",html+=session.TranscodingInfo&&session.TranscodingInfo.Framerate?'
'+session.TranscodingInfo.Framerate+" fps
":'
';var nowPlayingName=DashboardPage.getNowPlayingName(session);if(html+='
',html+=nowPlayingName.html,html+="
",nowPlayingItem&&nowPlayingItem.RunTimeTicks){var position=session.PlayState.PositionTicks||0,value=100*position/nowPlayingItem.RunTimeTicks;html+=''}else html+='';html+=session.TranscodingInfo&&session.TranscodingInfo.CompletionPercentage?'':'',html+="
",html+="
",html+="
",html+='
',html+='
',html+='',html+='',html+='',html+='',html+="
",html+='
',html+=DashboardPage.getSessionNowPlayingStreamInfo(session),html+="
",html+='
';var userImage=DashboardPage.getUserImage(session);html+=userImage?'':'
',html+='
',html+=DashboardPage.getUsersHtml(session)||" ",html+="
",html+="
",html+="
",html+="
",html+="
"}}parentElement.insertAdjacentHTML("beforeend",html),$(".deadSession",parentElement).remove()},getSessionNowPlayingStreamInfo:function(session){var html="",showTranscodingInfo=!1,showMoreInfoButton=!1,displayPlayMethod=playMethodHelper.getDisplayPlayMethod(session);if("DirectStream"===displayPlayMethod?(html+=globalize.translate("sharedcomponents#DirectStreaming"),showMoreInfoButton=!0):"Transcode"==displayPlayMethod?(html+=globalize.translate("sharedcomponents#Transcoding"),session.TranscodingInfo&&session.TranscodingInfo.Framerate&&(html+=" ("+session.TranscodingInfo.Framerate+" fps)"),showTranscodingInfo=!0,showMoreInfoButton=!0):"DirectPlay"==displayPlayMethod&&(html+=globalize.translate("sharedcomponents#DirectPlaying")),showTranscodingInfo){var line=[];session.TranscodingInfo&&(session.TranscodingInfo.Bitrate&&(session.TranscodingInfo.Bitrate>1e6?line.push((session.TranscodingInfo.Bitrate/1e6).toFixed(1)+" Mbps"):line.push(Math.floor(session.TranscodingInfo.Bitrate/1e3)+" kbps")),session.TranscodingInfo.Container&&line.push(session.TranscodingInfo.Container),session.TranscodingInfo.VideoCodec&&line.push(session.TranscodingInfo.VideoCodec),session.TranscodingInfo.AudioCodec&&session.TranscodingInfo.AudioCodec!=session.TranscodingInfo.Container&&line.push(session.TranscodingInfo.AudioCodec)),line.length&&(html+=" - "+line.join(" "))}return html||" "},getSessionNowPlayingTime:function(session){var nowPlayingItem=session.NowPlayingItem,html="";return nowPlayingItem?(html+=session.PlayState.PositionTicks?datetime.getDisplayRunningTime(session.PlayState.PositionTicks):"--:--:--",html+=" / ",html+=nowPlayingItem&&nowPlayingItem.RunTimeTicks?datetime.getDisplayRunningTime(nowPlayingItem.RunTimeTicks):"--:--:--"):html},getAppSecondaryText:function(session){return session.Client+" "+session.ApplicationVersion},getNowPlayingName:function(session){var imgUrl="",nowPlayingItem=session.NowPlayingItem;if(!nowPlayingItem)return{html:"Last seen "+humane_date(session.LastActivityDate),image:imgUrl};var topText=nowPlayingItem.Name,bottomText="";nowPlayingItem.Artists&&nowPlayingItem.Artists.length?(bottomText=topText,topText=nowPlayingItem.Artists[0]):nowPlayingItem.SeriesName||nowPlayingItem.Album?(bottomText=topText,topText=nowPlayingItem.SeriesName||nowPlayingItem.Album):nowPlayingItem.ProductionYear&&(bottomText=nowPlayingItem.ProductionYear),nowPlayingItem.ImageTags&&nowPlayingItem.ImageTags.Logo?imgUrl=ApiClient.getScaledImageUrl(nowPlayingItem.Id,{tag:nowPlayingItem.ImageTags.Logo,maxHeight:24,maxWidth:130,type:"Logo"}):nowPlayingItem.ParentLogoImageTag&&(imgUrl=ApiClient.getScaledImageUrl(nowPlayingItem.ParentLogoItemId,{tag:nowPlayingItem.ParentLogoImageTag,maxHeight:24,maxWidth:130,type:"Logo"})),imgUrl&&(topText='');var text=bottomText?topText+"
"+bottomText:topText;return{html:text,image:imgUrl}},getUsersHtml:function(session){var html=[];session.UserId&&html.push(session.UserName);for(var i=0,length=session.AdditionalUsers.length;i";if("dashboard"==clientLowered||"emby web client"==clientLowered){var imgUrl;return imgUrl=device.indexOf("chrome")!=-1?"css/images/clients/chrome.png":"css/images/clients/html5.png","Emby Web Client"}return clientLowered.indexOf("android")!=-1?"":clientLowered.indexOf("ios")!=-1?"":"mb-classic"==clientLowered?"":"roku"==clientLowered?"":"dlna"==clientLowered?"":"kodi"==clientLowered||"xbmc"==clientLowered?"":"chromecast"==clientLowered?"":null},getNowPlayingImageUrl:function(item){if(item&&item.BackdropImageTags&&item.BackdropImageTags.length)return ApiClient.getScaledImageUrl(item.Id,{type:"Backdrop",width:275,tag:item.BackdropImageTags[0]});if(item&&item.ParentBackdropImageTags&&item.ParentBackdropImageTags.length)return ApiClient.getScaledImageUrl(item.ParentBackdropItemId,{type:"Backdrop",width:275,tag:item.ParentBackdropImageTags[0]});if(item&&item.BackdropImageTag)return ApiClient.getScaledImageUrl(item.BackdropItemId,{type:"Backdrop",width:275,tag:item.BackdropImageTag});var imageTags=(item||{}).ImageTags||{};return item&&imageTags.Thumb?ApiClient.getScaledImageUrl(item.Id,{type:"Thumb",width:275,tag:imageTags.Thumb}):item&&item.ParentThumbImageTag?ApiClient.getScaledImageUrl(item.ParentThumbItemId,{type:"Thumb",width:275,tag:item.ParentThumbImageTag}):item&&item.ThumbImageTag?ApiClient.getScaledImageUrl(item.ThumbItemId,{type:"Thumb",width:275,tag:item.ThumbImageTag}):item&&imageTags.Primary?ApiClient.getScaledImageUrl(item.Id,{type:"Primary",width:275,tag:imageTags.Primary}):item&&item.PrimaryImageTag?ApiClient.getScaledImageUrl(item.PrimaryImageItemId,{type:"Primary",width:275,tag:item.PrimaryImageTag}):null},systemUpdateTaskKey:"SystemUpdateTask",renderRunningTasks:function(page,tasks){var html="";tasks=tasks.filter(function(t){return"Idle"!=t.State&&!t.IsHidden}),tasks.length?page.querySelector(".runningTasksContainer").classList.remove("hide"):page.querySelector(".runningTasksContainer").classList.add("hide"),tasks.filter(function(t){return t.Key==DashboardPage.systemUpdateTaskKey}).length?$("#btnUpdateApplication",page).buttonEnabled(!1):$("#btnUpdateApplication",page).buttonEnabled(!0);for(var i=0,length=tasks.length;i",html+=task.Name+"
","Running"==task.State){var progress=(task.CurrentProgressPercentage||0).toFixed(1);html+='',html+=""+progress+"%",html+="",html+=""+progress+"%",html+=''}else"Cancelling"==task.State&&(html+=''+globalize.translate("LabelStopping")+"");html+="

"}page.querySelector("#divRunningTasks").innerHTML=html},renderUrls:function(page,systemInfo){var helpButton=''+globalize.translate("ButtonHelp")+"";if(systemInfo.LocalAddress){var localAccessHtml=globalize.translate("LabelLocalAccessUrl",''+systemInfo.LocalAddress+"");$(".localUrl",page).html(localAccessHtml+helpButton).show()}else $(".externalUrl",page).hide();if(systemInfo.WanAddress){var externalUrl=systemInfo.WanAddress,remoteAccessHtml=globalize.translate("LabelRemoteAccessUrl",''+externalUrl+"");$(".externalUrl",page).html(remoteAccessHtml+helpButton).show()}else $(".externalUrl",page).hide()},renderSupporterIcon:function(page,pluginSecurityInfo){var imgUrl,text,supporterIconContainer=page.querySelector(".supporterIconContainer");AppInfo.enableSupporterMembership&&pluginSecurityInfo.IsMBSupporter?(supporterIconContainer.classList.remove("hide"),imgUrl="css/images/supporter/supporterbadge.png",text=globalize.translate("MessageThankYouForSupporting"),supporterIconContainer.innerHTML=''+text+""):supporterIconContainer.classList.add("hide")},renderHasPendingRestart:function(page,hasPendingRestart){if(hasPendingRestart)page.querySelector("#pUpToDate").classList.add("hide"),$("#pUpdateNow",page).hide();else{if(DashboardPage.lastAppUpdateCheck&&(new Date).getTime()-DashboardPage.lastAppUpdateCheck<18e5)return;DashboardPage.lastAppUpdateCheck=(new Date).getTime(),ApiClient.getAvailableApplicationUpdate().then(function(packageInfo){var version=packageInfo[0];version?(page.querySelector("#pUpToDate").classList.add("hide"),$("#pUpdateNow",page).show(),$("#newVersionNumber",page).html(globalize.translate("VersionXIsAvailableForDownload").replace("{0}",version.versionStr))):(page.querySelector("#pUpToDate").classList.remove("hide"),$("#pUpdateNow",page).hide())})}},renderPendingInstallations:function(page,systemInfo){if(!systemInfo.CompletedInstallations.length)return void page.querySelector("#collapsiblePendingInstallations").classList.add("hide");page.querySelector("#collapsiblePendingInstallations").classList.remove("hide");for(var html="",i=0,length=systemInfo.CompletedInstallations.length;i"+update.Name+" ("+update.Version+")
"}$("#pendingInstallations",page).html(html)},renderPluginUpdateInfo:function(page,forceUpdate){!forceUpdate&&DashboardPage.lastPluginUpdateCheck&&(new Date).getTime()-DashboardPage.lastPluginUpdateCheck<18e5||(DashboardPage.lastPluginUpdateCheck=(new Date).getTime(),ApiClient.getAvailablePluginUpdates().then(function(updates){var elem=page.querySelector("#pPluginUpdates");if(!updates.length)return void $(elem).hide();$(elem).show();for(var html="",i=0,length=updates.length;i"+globalize.translate("NewVersionOfSomethingAvailable").replace("{0}",update.name)+"

",html+='"}elem.innerHTML=html}))},installPluginUpdate:function(button){$(button).buttonEnabled(!1);var name=button.getAttribute("data-name"),guid=button.getAttribute("data-guid"),version=button.getAttribute("data-version"),classification=button.getAttribute("data-classification");loading.show(),ApiClient.installPlugin(name,guid,classification,version).then(function(){loading.hide()})},updateApplication:function(){var page=$($.mobile.activePage)[0];$("#btnUpdateApplication",page).buttonEnabled(!1),loading.show(),ApiClient.getScheduledTasks().then(function(tasks){var task=tasks.filter(function(t){return t.Key==DashboardPage.systemUpdateTaskKey})[0];ApiClient.startScheduledTask(task.Id).then(function(){DashboardPage.pollForInfo(page),loading.hide()})})},stopTask:function(id){var page=$($.mobile.activePage)[0];ApiClient.stopScheduledTask(id).then(function(){DashboardPage.pollForInfo(page)})},restart:function(){require(["confirm"],function(confirm){confirm({title:globalize.translate("HeaderRestart"),text:globalize.translate("MessageConfirmRestart"),confirmText:globalize.translate("ButtonRestart"),primary:"cancel"}).then(function(){$("#btnRestartServer").buttonEnabled(!1),$("#btnShutdown").buttonEnabled(!1),Dashboard.restartServer()})})},shutdown:function(){require(["confirm"],function(confirm){confirm({title:globalize.translate("HeaderShutdown"),text:globalize.translate("MessageConfirmShutdown"),confirmText:globalize.translate("ButtonShutdown"),primary:"cancel"}).then(function(){$("#btnRestartServer").buttonEnabled(!1),$("#btnShutdown").buttonEnabled(!1),ApiClient.shutdownServer()})})}},pageIdOn("pageinit","dashboardPage",DashboardPage.onPageInit),pageIdOn("pageshow","dashboardPage",DashboardPage.onPageShow),pageIdOn("pagebeforehide","dashboardPage",DashboardPage.onPageHide),function($,document,window){function getEntryHtml(entry){var html="";html+='
';var color="Error"==entry.Severity||"Fatal"==entry.Severity||"Warn"==entry.Severity?"#cc0000":"#52B54B";if(entry.UserId&&entry.UserPrimaryImageTag){var userImgUrl=ApiClient.getUserImageUrl(entry.UserId,{type:"Primary",tag:entry.UserPrimaryImageTag,height:40});html+='dvr"}else html+='dvr';html+='
',html+='
',html+=entry.Name,html+="
",html+='
';var date=datetime.parseISO8601Date(entry.Date,!0);return html+=datetime.toLocaleString(date).toLowerCase(),html+="
",html+='
',html+=entry.ShortOverview||"",html+="
",html+="
",html+="
"}function renderList(elem,result,startIndex,limit){var html=result.Items.map(getEntryHtml).join("");if(result.TotalRecordCount>limit){var query={StartIndex:startIndex,Limit:limit};html+=libraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1,updatePageSizeSetting:!1})}elem.innerHTML=html,elem.querySelector(".btnNextPage").addEventListener("click",function(){reloadData(elem,startIndex+limit,limit); +}),elem.querySelector(".btnPreviousPage").addEventListener("click",function(){reloadData(elem,startIndex-limit,limit)})}function reloadData(elem,startIndex,limit){null==startIndex&&(startIndex=parseInt(elem.getAttribute("data-activitystartindex")||"0")),limit=limit||parseInt(elem.getAttribute("data-activitylimit")||"7");var minDate=new Date;minDate.setTime(minDate.getTime()-864e5),ApiClient.getJSON(ApiClient.getUrl("System/ActivityLog/Entries",{startIndex:startIndex,limit:limit,minDate:minDate.toISOString()})).then(function(result){elem.setAttribute("data-activitystartindex",startIndex),elem.setAttribute("data-activitylimit",limit),renderList(elem,result,startIndex,limit)})}function createList(elem){elem.each(function(){reloadData(this)}).addClass("activityLogListWidget");var apiClient=ApiClient;apiClient&&(events.on(apiClient,"websocketopen",onSocketOpen),events.on(apiClient,"websocketmessage",onSocketMessage))}function startListening(apiClient){apiClient.isWebSocketOpen()&&apiClient.sendWebSocketMessage("ActivityLogEntryStart","0,1500")}function stopListening(apiClient){apiClient.isWebSocketOpen()&&apiClient.sendWebSocketMessage("ActivityLogEntryStop","0,1500")}function onSocketOpen(){var apiClient=ApiClient;apiClient&&startListening(apiClient)}function onSocketMessage(e,data){var msg=data;"ActivityLogEntry"===msg.MessageType&&$(".activityLogListWidget").each(function(){reloadData(this)})}function destroyList(elem){var apiClient=ApiClient;apiClient&&(events.off(apiClient,"websocketopen",onSocketOpen),events.off(apiClient,"websocketmessage",onSocketMessage),stopListening(apiClient))}$.fn.activityLogList=function(action){"destroy"==action?(this.removeClass("activityLogListWidget"),destroyList(this)):createList(this);var apiClient=ApiClient;return apiClient&&startListening(apiClient),this}}(jQuery,document,window),function($,document,window){function dismissWelcome(page,userId){ApiClient.getDisplayPreferences("dashboard",userId,"dashboard").then(function(result){result.CustomPrefs[welcomeTourKey]=welcomeDismissValue,ApiClient.updateDisplayPreferences("dashboard",result,userId,"dashboard"),$(page).off("pageshow",onPageShowCheckTour)})}function showWelcomeIfNeeded(page,apiClient){var userId=Dashboard.getCurrentUserId();apiClient.getDisplayPreferences("dashboard",userId,"dashboard").then(function(result){if(result.CustomPrefs[welcomeTourKey]==welcomeDismissValue)$(".welcomeMessage",page).hide();else{var elem=$(".welcomeMessage",page).show();result.CustomPrefs[welcomeTourKey]?($(".tourHeader",elem).html(globalize.translate("HeaderWelcomeBack")),$(".tourButtonText",elem).html(globalize.translate("ButtonTakeTheTourToSeeWhatsNew"))):($(".tourHeader",elem).html(globalize.translate("HeaderWelcomeToProjectServerDashboard")),$(".tourButtonText",elem).html(globalize.translate("ButtonTakeTheTour")))}})}function takeTour(page,userId){require(["slideshow"],function(){var slides=[{imageUrl:"css/images/tour/admin/dashboard.png",title:globalize.translate("DashboardTourDashboard")},{imageUrl:"css/images/tour/admin/help.png",title:globalize.translate("DashboardTourHelp")},{imageUrl:"css/images/tour/admin/users.png",title:globalize.translate("DashboardTourUsers")},{imageUrl:"css/images/tour/admin/sync.png",title:globalize.translate("DashboardTourSync")},{imageUrl:"css/images/tour/admin/cinemamode.png",title:globalize.translate("DashboardTourCinemaMode")},{imageUrl:"css/images/tour/admin/chapters.png",title:globalize.translate("DashboardTourChapters")},{imageUrl:"css/images/tour/admin/subtitles.png",title:globalize.translate("DashboardTourSubtitles")},{imageUrl:"css/images/tour/admin/plugins.png",title:globalize.translate("DashboardTourPlugins")},{imageUrl:"css/images/tour/admin/notifications.png",title:globalize.translate("DashboardTourNotifications")},{imageUrl:"css/images/tour/admin/scheduledtasks.png",title:globalize.translate("DashboardTourScheduledTasks")},{imageUrl:"css/images/tour/admin/mobile.png",title:globalize.translate("DashboardTourMobile")},{imageUrl:"css/images/tour/enjoy.jpg",title:globalize.translate("MessageEnjoyYourStay")}];require(["slideshow"],function(slideshow){var newSlideShow=new slideshow({slides:slides,interactive:!0,loop:!1});newSlideShow.show(),dismissWelcome(page,userId),$(".welcomeMessage",page).hide()})})}function onPageShowCheckTour(){var page=this,apiClient=ApiClient;apiClient&&!AppInfo.isNativeApp&&showWelcomeIfNeeded(page,apiClient)}var welcomeDismissValue="12",welcomeTourKey="welcomeTour";$(document).on("pageinit","#dashboardPage",function(){var page=this;$(".btnTakeTour",page).on("click",function(){takeTour(page,Dashboard.getCurrentUserId())})}).on("pageshow","#dashboardPage",onPageShowCheckTour)}(jQuery,document,window),pageClassOn("pageshow","type-interior",function(){var page=this;Dashboard.getPluginSecurityInfo().then(function(pluginSecurityInfo){if(!page.querySelector(".customSupporterPromotion")&&($(".supporterPromotion",page).remove(),!pluginSecurityInfo.IsMBSupporter&&AppInfo.enableSupporterMembership)){var html='";page.querySelector(".content-primary").insertAdjacentHTML("afterbegin",html)}})})}); \ No newline at end of file diff --git a/dashboard-ui/scripts/homedownloads.js b/dashboard-ui/scripts/homedownloads.js deleted file mode 100644 index cf366746a5..0000000000 --- a/dashboard-ui/scripts/homedownloads.js +++ /dev/null @@ -1 +0,0 @@ -define(["apphost","globalize","syncJobList","events","localsync","emby-button","paper-icon-button-light"],function(appHost,globalize,syncJobList,events,localSync){"use strict";return function(view,params,tabContent){var self=this,mode="offline",mySyncJobList=new syncJobList({isLocalSync:"offline"===mode,serverId:ApiClient.serverId(),userId:"offline"===mode?null:ApiClient.getCurrentUserId(),element:tabContent.querySelector(".syncActivity"),mode:mode});self.renderTab=function(){},self.destroy=function(){mySyncJobList&&(mySyncJobList.destroy(),mySyncJobList=null)}}}); \ No newline at end of file diff --git a/dashboard-ui/scripts/indexpage.js b/dashboard-ui/scripts/indexpage.js index f9ddafaa21..2c6ab9af82 100644 --- a/dashboard-ui/scripts/indexpage.js +++ b/dashboard-ui/scripts/indexpage.js @@ -1 +1 @@ -define(["loading","libraryBrowser","libraryMenu","playbackManager","mainTabsManager","homeSections","globalize","apphost","serverNotifications","events","emby-button"],function(loading,libraryBrowser,libraryMenu,playbackManager,mainTabsManager,homeSections,globalize,appHost,serverNotifications,events){"use strict";function displayPreferencesKey(){return AppInfo.isNativeApp?"Emby Mobile":"webclient"}function dismissWelcome(page,userId){var apiClient=ApiClient;getDisplayPreferences(apiClient,"home",userId).then(function(result){result.CustomPrefs[homePageTourKey]=homePageDismissValue,apiClient.updateDisplayPreferences("home",result,userId,displayPreferencesKey())})}function showWelcomeIfNeeded(page,displayPreferences){if(displayPreferences.CustomPrefs[homePageTourKey]==homePageDismissValue)page.querySelector(".welcomeMessage").classList.add("hide");else{loading.hide();var elem=page.querySelector(".welcomeMessage");elem.classList.remove("hide"),displayPreferences.CustomPrefs[homePageTourKey]?(elem.querySelector(".tourHeader").innerHTML=globalize.translate("HeaderWelcomeBack"),elem.querySelector(".tourButtonText").innerHTML=globalize.translate("ButtonTakeTheTourToSeeWhatsNew")):(elem.querySelector(".tourHeader").innerHTML=globalize.translate("HeaderWelcomeToProjectWebClient"),elem.querySelector(".tourButtonText").innerHTML=globalize.translate("ButtonTakeTheTour"))}}function takeTour(page,userId){require(["slideshow"],function(){var slides=[{imageUrl:"css/images/tour/web/tourcontent.jpg",title:globalize.translate("WebClientTourContent")},{imageUrl:"css/images/tour/web/tourmovies.jpg",title:globalize.translate("WebClientTourMovies")},{imageUrl:"css/images/tour/web/tourmouseover.jpg",title:globalize.translate("WebClientTourMouseOver")},{imageUrl:"css/images/tour/web/tourtaphold.jpg",title:globalize.translate("WebClientTourTapHold")},{imageUrl:"css/images/tour/web/tourmysync.png",title:globalize.translate("WebClientTourMySync")},{imageUrl:"css/images/tour/web/toureditor.png",title:globalize.translate("WebClientTourMetadataManager")},{imageUrl:"css/images/tour/web/tourplaylist.png",title:globalize.translate("WebClientTourPlaylists")},{imageUrl:"css/images/tour/web/tourcollections.jpg",title:globalize.translate("WebClientTourCollections")},{imageUrl:"css/images/tour/web/tourusersettings1.png",title:globalize.translate("WebClientTourUserPreferences1")},{imageUrl:"css/images/tour/web/tourusersettings2.png",title:globalize.translate("WebClientTourUserPreferences2")},{imageUrl:"css/images/tour/web/tourusersettings3.png",title:globalize.translate("WebClientTourUserPreferences3")},{imageUrl:"css/images/tour/web/tourusersettings4.png",title:globalize.translate("WebClientTourUserPreferences4")},{imageUrl:"css/images/tour/web/tourmobile1.jpg",title:globalize.translate("WebClientTourMobile1")},{imageUrl:"css/images/tour/web/tourmobile2.png",title:globalize.translate("WebClientTourMobile2")},{imageUrl:"css/images/tour/enjoy.jpg",title:globalize.translate("MessageEnjoyYourStay")}];require(["slideshow"],function(slideshow){var newSlideShow=new slideshow({slides:slides,interactive:!0,loop:!1});newSlideShow.show(),dismissWelcome(page,userId),page.querySelector(".welcomeMessage").classList.add("hide")})})}function getRequirePromise(deps){return new Promise(function(resolve,reject){require(deps,resolve)})}function loadHomeTab(page,tabContent){var apiClient=ApiClient;if(apiClient){var userId=Dashboard.getCurrentUserId();loading.show();var promises=[Dashboard.getCurrentUser(),getRequirePromise(["userSettings"])];Promise.all(promises).then(function(responses){var user=responses[0],userSettings=responses[1];homeSections.loadSections(tabContent.querySelector(".sections"),apiClient,user,userSettings).then(function(){loading.hide()})}),AppInfo.isNativeApp||getDisplayPreferences(apiClient,"home",userId).then(function(displayPreferences){showWelcomeIfNeeded(page,displayPreferences)})}}function getDisplayPreferences(apiClient,key,userId){return apiClient.getDisplayPreferences(key,userId,displayPreferencesKey())}function getTabs(){return[{name:globalize.translate("TabHome")},{name:globalize.translate("Downloads"),enabled:!1},{name:globalize.translate("TabFavorites")},{name:globalize.translate("TabUpcoming")},{name:globalize.translate("ButtonSearch")}]}var homePageDismissValue="14",homePageTourKey="homePageTour";return function(view,params){function onBeforeTabChange(e){preLoadTab(view,parseInt(e.detail.selectedTabIndex))}function onTabChange(e){loadTab(view,parseInt(e.detail.selectedTabIndex))}function setTabsEnabled(viewTabs){Dashboard.getCurrentUser().then(function(user){viewTabs.setTabEnabled(1,appHost.supports("sync")&&user.Policy.EnableContentDownloading)})}function initTabs(){var tabsReplaced=mainTabsManager.setTabs(view,currentTabIndex,getTabs);if(tabsReplaced){var viewTabs=document.querySelector(".tabs-viewmenubar");viewTabs.addEventListener("beforetabchange",onBeforeTabChange),viewTabs.addEventListener("tabchange",onTabChange),libraryBrowser.configurePaperLibraryTabs(view,viewTabs,view.querySelectorAll(".pageTabContent"),[0,1,2,3],!0),viewTabs.triggerBeforeTabChange?setTabsEnabled(viewTabs):viewTabs.addEventListener("ready",function(){setTabsEnabled(viewTabs),viewTabs.triggerBeforeTabChange()})}}function getTabController(page,index,callback){var depends=[];switch(index){case 0:break;case 1:depends.push("scripts/homedownloads");break;case 2:depends.push("scripts/homefavorites");break;case 3:depends.push("scripts/tvupcoming");break;case 4:depends.push("scripts/searchtab");break;default:return}require(depends,function(controllerFactory){var tabContent;0==index&&(tabContent=view.querySelector(".pageTabContent[data-index='"+index+"']"),self.tabContent=tabContent);var controller=tabControllers[index];controller||(tabContent=view.querySelector(".pageTabContent[data-index='"+index+"']"),controller=0===index?self:4===index?new controllerFactory(view,tabContent,{}):new controllerFactory(view,params,tabContent),tabControllers[index]=controller,controller.initTab&&controller.initTab()),callback(controller)})}function preLoadTab(page,index){getTabController(page,index,function(controller){renderedTabs.indexOf(index)==-1&&controller.preRender&&controller.preRender()})}function loadTab(page,index){currentTabIndex=index,getTabController(page,index,function(controller){renderedTabs.indexOf(index)==-1&&(renderedTabs.push(index),controller.renderTab())})}function onPlaybackStop(e,state){state.NowPlayingItem&&"Video"==state.NowPlayingItem.MediaType&&(renderedTabs=[],mainTabsManager.getTabsElement().triggerBeforeTabChange(),mainTabsManager.getTabsElement().triggerTabChange())}function onUserDataChanged(e,apiClient,userData){userData.UserId==Dashboard.getCurrentUserId()&&(renderedTabs=[])}var self=this,currentTabIndex=parseInt(params.tab||"0");self.renderTab=function(){var tabContent=view.querySelector(".pageTabContent[data-index='0']");loadHomeTab(view,tabContent)};var tabControllers=[],renderedTabs=[];view.querySelector(".btnTakeTour").addEventListener("click",function(){takeTour(view,Dashboard.getCurrentUserId())}),view.querySelector(".sections").addEventListener("settingschange",function(){renderedTabs=[],mainTabsManager.getTabsElement().triggerBeforeTabChange(),mainTabsManager.getTabsElement().triggerTabChange()}),view.addEventListener("viewbeforeshow",function(e){initTabs(),libraryMenu.setDefaultTitle();var tabs=mainTabsManager.getTabsElement();tabs.triggerBeforeTabChange&&tabs.triggerBeforeTabChange()}),view.addEventListener("viewshow",function(e){mainTabsManager.getTabsElement().triggerTabChange(),events.on(playbackManager,"playbackstop",onPlaybackStop),events.on(serverNotifications,"UserDataChanged",onUserDataChanged)}),view.addEventListener("viewbeforehide",function(e){events.off(playbackManager,"playbackstop",onPlaybackStop),events.off(serverNotifications,"UserDataChanged",onUserDataChanged)}),view.addEventListener("viewdestroy",function(e){tabControllers.forEach(function(t){t.destroy&&t.destroy()})})}}); \ No newline at end of file +define(["loading","libraryBrowser","libraryMenu","playbackManager","mainTabsManager","homeSections","globalize","apphost","serverNotifications","events","emby-button"],function(loading,libraryBrowser,libraryMenu,playbackManager,mainTabsManager,homeSections,globalize,appHost,serverNotifications,events){"use strict";function displayPreferencesKey(){return AppInfo.isNativeApp?"Emby Mobile":"webclient"}function dismissWelcome(page,userId){var apiClient=ApiClient;getDisplayPreferences(apiClient,"home",userId).then(function(result){result.CustomPrefs[homePageTourKey]=homePageDismissValue,apiClient.updateDisplayPreferences("home",result,userId,displayPreferencesKey())})}function showWelcomeIfNeeded(page,displayPreferences){if(displayPreferences.CustomPrefs[homePageTourKey]==homePageDismissValue)page.querySelector(".welcomeMessage").classList.add("hide");else{loading.hide();var elem=page.querySelector(".welcomeMessage");elem.classList.remove("hide"),displayPreferences.CustomPrefs[homePageTourKey]?(elem.querySelector(".tourHeader").innerHTML=globalize.translate("HeaderWelcomeBack"),elem.querySelector(".tourButtonText").innerHTML=globalize.translate("ButtonTakeTheTourToSeeWhatsNew")):(elem.querySelector(".tourHeader").innerHTML=globalize.translate("HeaderWelcomeToProjectWebClient"),elem.querySelector(".tourButtonText").innerHTML=globalize.translate("ButtonTakeTheTour"))}}function takeTour(page,userId){require(["slideshow"],function(){var slides=[{imageUrl:"css/images/tour/web/tourcontent.jpg",title:globalize.translate("WebClientTourContent")},{imageUrl:"css/images/tour/web/tourmovies.jpg",title:globalize.translate("WebClientTourMovies")},{imageUrl:"css/images/tour/web/tourmouseover.jpg",title:globalize.translate("WebClientTourMouseOver")},{imageUrl:"css/images/tour/web/tourtaphold.jpg",title:globalize.translate("WebClientTourTapHold")},{imageUrl:"css/images/tour/web/tourmysync.png",title:globalize.translate("WebClientTourMySync")},{imageUrl:"css/images/tour/web/toureditor.png",title:globalize.translate("WebClientTourMetadataManager")},{imageUrl:"css/images/tour/web/tourplaylist.png",title:globalize.translate("WebClientTourPlaylists")},{imageUrl:"css/images/tour/web/tourcollections.jpg",title:globalize.translate("WebClientTourCollections")},{imageUrl:"css/images/tour/web/tourusersettings1.png",title:globalize.translate("WebClientTourUserPreferences1")},{imageUrl:"css/images/tour/web/tourusersettings2.png",title:globalize.translate("WebClientTourUserPreferences2")},{imageUrl:"css/images/tour/web/tourusersettings3.png",title:globalize.translate("WebClientTourUserPreferences3")},{imageUrl:"css/images/tour/web/tourusersettings4.png",title:globalize.translate("WebClientTourUserPreferences4")},{imageUrl:"css/images/tour/web/tourmobile1.jpg",title:globalize.translate("WebClientTourMobile1")},{imageUrl:"css/images/tour/web/tourmobile2.png",title:globalize.translate("WebClientTourMobile2")},{imageUrl:"css/images/tour/enjoy.jpg",title:globalize.translate("MessageEnjoyYourStay")}];require(["slideshow"],function(slideshow){var newSlideShow=new slideshow({slides:slides,interactive:!0,loop:!1});newSlideShow.show(),dismissWelcome(page,userId),page.querySelector(".welcomeMessage").classList.add("hide")})})}function getRequirePromise(deps){return new Promise(function(resolve,reject){require(deps,resolve)})}function loadHomeTab(page,tabContent){var apiClient=ApiClient;if(apiClient){var userId=Dashboard.getCurrentUserId();loading.show();var promises=[Dashboard.getCurrentUser(),getRequirePromise(["userSettings"])];Promise.all(promises).then(function(responses){var user=responses[0],userSettings=responses[1];homeSections.loadSections(tabContent.querySelector(".sections"),apiClient,user,userSettings).then(function(){loading.hide()})}),AppInfo.isNativeApp||getDisplayPreferences(apiClient,"home",userId).then(function(displayPreferences){showWelcomeIfNeeded(page,displayPreferences)})}}function getDisplayPreferences(apiClient,key,userId){return apiClient.getDisplayPreferences(key,userId,displayPreferencesKey())}function getTabs(){return[{name:globalize.translate("TabHome")},{name:globalize.translate("TabFavorites")},{name:globalize.translate("TabUpcoming")},{name:globalize.translate("ButtonSearch")}]}var homePageDismissValue="14",homePageTourKey="homePageTour";return function(view,params){function onBeforeTabChange(e){preLoadTab(view,parseInt(e.detail.selectedTabIndex))}function onTabChange(e){loadTab(view,parseInt(e.detail.selectedTabIndex))}function setTabsEnabled(viewTabs){Dashboard.getCurrentUser().then(function(user){viewTabs.setTabEnabled(1,appHost.supports("sync")&&user.Policy.EnableContentDownloading)})}function initTabs(){var tabsReplaced=mainTabsManager.setTabs(view,currentTabIndex,getTabs);if(tabsReplaced){var viewTabs=document.querySelector(".tabs-viewmenubar");viewTabs.addEventListener("beforetabchange",onBeforeTabChange),viewTabs.addEventListener("tabchange",onTabChange),libraryBrowser.configurePaperLibraryTabs(view,viewTabs,view.querySelectorAll(".pageTabContent"),[0,1,2,3],!0),viewTabs.triggerBeforeTabChange?setTabsEnabled(viewTabs):viewTabs.addEventListener("ready",function(){setTabsEnabled(viewTabs),viewTabs.triggerBeforeTabChange()})}}function getTabController(page,index,callback){var depends=[];switch(index){case 0:break;case 1:depends.push("scripts/homefavorites");break;case 2:depends.push("scripts/tvupcoming");break;case 3:depends.push("scripts/searchtab");break;default:return}require(depends,function(controllerFactory){var tabContent;0==index&&(tabContent=view.querySelector(".pageTabContent[data-index='"+index+"']"),self.tabContent=tabContent);var controller=tabControllers[index];controller||(tabContent=view.querySelector(".pageTabContent[data-index='"+index+"']"),controller=0===index?self:3===index?new controllerFactory(view,tabContent,{}):new controllerFactory(view,params,tabContent),tabControllers[index]=controller,controller.initTab&&controller.initTab()),callback(controller)})}function preLoadTab(page,index){getTabController(page,index,function(controller){renderedTabs.indexOf(index)==-1&&controller.preRender&&controller.preRender()})}function loadTab(page,index){currentTabIndex=index,getTabController(page,index,function(controller){renderedTabs.indexOf(index)==-1&&(renderedTabs.push(index),controller.renderTab())})}function onPlaybackStop(e,state){state.NowPlayingItem&&"Video"==state.NowPlayingItem.MediaType&&(renderedTabs=[],mainTabsManager.getTabsElement().triggerBeforeTabChange(),mainTabsManager.getTabsElement().triggerTabChange())}function onUserDataChanged(e,apiClient,userData){userData.UserId==Dashboard.getCurrentUserId()&&(renderedTabs=[])}var self=this,currentTabIndex=parseInt(params.tab||"0");self.renderTab=function(){var tabContent=view.querySelector(".pageTabContent[data-index='0']");loadHomeTab(view,tabContent)};var tabControllers=[],renderedTabs=[];view.querySelector(".btnTakeTour").addEventListener("click",function(){takeTour(view,Dashboard.getCurrentUserId())}),view.querySelector(".sections").addEventListener("settingschange",function(){renderedTabs=[],mainTabsManager.getTabsElement().triggerBeforeTabChange(),mainTabsManager.getTabsElement().triggerTabChange()}),view.addEventListener("viewbeforeshow",function(e){initTabs(),libraryMenu.setDefaultTitle();var tabs=mainTabsManager.getTabsElement();tabs.triggerBeforeTabChange&&tabs.triggerBeforeTabChange()}),view.addEventListener("viewshow",function(e){mainTabsManager.getTabsElement().triggerTabChange(),events.on(playbackManager,"playbackstop",onPlaybackStop),events.on(serverNotifications,"UserDataChanged",onUserDataChanged)}),view.addEventListener("viewbeforehide",function(e){events.off(playbackManager,"playbackstop",onPlaybackStop),events.off(serverNotifications,"UserDataChanged",onUserDataChanged)}),view.addEventListener("viewdestroy",function(e){tabControllers.forEach(function(t){t.destroy&&t.destroy()})})}}); \ No newline at end of file diff --git a/dashboard-ui/scripts/itemdetailpage.js b/dashboard-ui/scripts/itemdetailpage.js index ffed653dc4..dc2f566ebe 100644 --- a/dashboard-ui/scripts/itemdetailpage.js +++ b/dashboard-ui/scripts/itemdetailpage.js @@ -1,2 +1,2 @@ -define(["loading","embyRouter","layoutManager","connectionManager","cardBuilder","datetime","mediaInfo","backdrop","listView","itemContextMenu","itemHelper","dom","indicators","apphost","imageLoader","libraryMenu","globalize","browser","events","scrollHelper","playbackManager","libraryBrowser","scrollStyles","emby-itemscontainer","emby-checkbox","emby-linkbutton","emby-playstatebutton","emby-ratingbutton","emby-downloadbutton"],function(loading,embyRouter,layoutManager,connectionManager,cardBuilder,datetime,mediaInfo,backdrop,listView,itemContextMenu,itemHelper,dom,indicators,appHost,imageLoader,libraryMenu,globalize,browser,events,scrollHelper,playbackManager,libraryBrowser){"use strict";function getPromise(params){var id=params.id;if(id)return ApiClient.getItem(Dashboard.getCurrentUserId(),id);if(params.seriesTimerId)return ApiClient.getLiveTvSeriesTimer(params.seriesTimerId);var name=params.genre;if(name)return ApiClient.getGenre(name,Dashboard.getCurrentUserId());if(name=params.musicgenre)return ApiClient.getMusicGenre(name,Dashboard.getCurrentUserId());if(name=params.gamegenre)return ApiClient.getGameGenre(name,Dashboard.getCurrentUserId());if(name=params.musicartist)return ApiClient.getArtist(name,Dashboard.getCurrentUserId());throw new Error("Invalid request")}function reload(page,params){loading.show(),getPromise(params).then(function(item){reloadFromItem(page,params,item)})}function hideAll(page,className,show){var i,length,elems=page.querySelectorAll("."+className);for(i=0,length=elems.length;i"}function renderSeriesTimerSchedule(page,seriesTimerId){ApiClient.getLiveTvTimers({UserId:ApiClient.getCurrentUserId(),ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Thumb",SortBy:"StartDate",EnableTotalRecordCount:!1,EnableUserData:!1,SeriesTimerId:seriesTimerId,Fields:"ChannelInfo"}).then(function(result){result.Items.length&&result.Items[0].SeriesTimerId!=seriesTimerId&&(result.Items=[]);var html=getProgramScheduleHtml(result.Items),scheduleTab=page.querySelector(".seriesTimerSchedule");scheduleTab.innerHTML=html,imageLoader.lazyChildren(scheduleTab)})}function renderSeriesTimerEditor(page,item,user){if("SeriesTimer"===item.Type){if(!user.Policy.EnableLiveTvManagement)return page.querySelector(".seriesTimerScheduleSection").classList.add("hide"),void hideAll(page,"btnCancelSeriesTimer");require(["seriesRecordingEditor"],function(seriesRecordingEditor){seriesRecordingEditor.embed(item,ApiClient.serverId(),{context:page.querySelector(".seriesRecordingEditor")})}),page.querySelector(".seriesTimerScheduleSection").classList.remove("hide"),hideAll(page,"btnCancelSeriesTimer",!0),renderSeriesTimerSchedule(page,item.Id)}}function reloadPlayButtons(page,item){var canPlay=!1;if("Program"==item.Type){var now=new Date;now>=datetime.parseISO8601Date(item.StartDate,!0)&&now0)}else hideAll(page,"btnPlay"),hideAll(page,"btnResume"),hideAll(page,"btnInstantMix"),hideAll(page,"btnShuffle");return canPlay}function reloadUserDataButtons(page,item){var i,length,btnPlaystates=page.querySelectorAll(".btnPlaystate");for(i=0,length=btnPlaystates.length;i=800?backdrop.setBackdrops([item]):backdrop.clear(),libraryBrowser.renderDetailPageBackdrop(page,item,imageLoader,indicators),libraryMenu.setTransparentMenu(!0);var canPlay=reloadPlayButtons(page,item),hasAnyButton=canPlay;item.LocalTrailerCount||item.RemoteTrailers&&item.RemoteTrailers.length?(hideAll(page,"btnPlayTrailer",!0),hasAnyButton=!0):hideAll(page,"btnPlayTrailer"),item.CanDelete&&!item.IsFolder?(hideAll(page,"btnDeleteItem",!0),hasAnyButton=!0):hideAll(page,"btnDeleteItem"),renderSyncLocalContainer(page,params,user,item),hasAnyButton||"Program"!==item.Type?hideAll(page,"mainDetailButtons",!0):hideAll(page,"mainDetailButtons"),showRecordingFields(page,item,user);var groupedVersions=(item.MediaSources||[]).filter(function(g){return"Grouping"==g.Type});user.Policy.IsAdministrator&&groupedVersions.length?page.querySelector(".splitVersionContainer").classList.remove("hide"):page.querySelector(".splitVersionContainer").classList.add("hide");var commands=itemContextMenu.getCommands(getContextMenuOptions(item,user));commands.length?hideAll(page,"btnMoreCommands",!0):hideAll(page,"btnMoreCommands");var itemBirthday=page.querySelector("#itemBirthday");if("Person"==item.Type&&item.PremiereDate)try{var birthday=datetime.parseISO8601Date(item.PremiereDate,!0).toDateString();itemBirthday.classList.remove("hide"),itemBirthday.innerHTML=globalize.translate("BirthDateValue").replace("{0}",birthday)}catch(err){itemBirthday.classList.add("hide")}else itemBirthday.classList.add("hide");var itemDeathDate=page.querySelector("#itemDeathDate");if("Person"==item.Type&&item.EndDate)try{var deathday=datetime.parseISO8601Date(item.EndDate,!0).toDateString();itemDeathDate.classList.remove("hide"),itemDeathDate.innerHTML=globalize.translate("DeathDateValue").replace("{0}",deathday)}catch(err){itemDeathDate.classList.add("hide")}var itemBirthLocation=page.querySelector("#itemBirthLocation");if("Person"==item.Type&&item.ProductionLocations&&item.ProductionLocations.length){var gmap=''+item.ProductionLocations[0]+"";itemBirthLocation.classList.remove("hide"),itemBirthLocation.innerHTML=globalize.translate("BirthPlaceValue").replace("{0}",gmap)}else itemBirthLocation.classList.add("hide")}),setPeopleHeader(page,item),page.dispatchEvent(new CustomEvent("displayingitem",{detail:{item:item,context:context},bubbles:!0})),loading.hide()}function logoImageUrl(item,apiClient,options){return options=options||{},options.type="Logo",item.ImageTags&&item.ImageTags.Logo?(options.tag=item.ImageTags.Logo,apiClient.getScaledImageUrl(item.Id,options)):item.ParentLogoImageTag?(options.tag=item.ParentLogoImageTag,apiClient.getScaledImageUrl(item.ParentLogoItemId,options)):null}function renderLogo(page,item,apiClient){var url=logoImageUrl(item,apiClient,{maxWidth:300}),detailLogo=page.querySelector(".detailLogo");url?(detailLogo.classList.remove("hide"),detailLogo.classList.add("lazy"),detailLogo.setAttribute("data-src",url),imageLoader.lazyImage(detailLogo)):detailLogo.classList.add("hide")}function showRecordingFields(page,item,user){if(!currentRecordingFields){var recordingFieldsElement=page.querySelector(".recordingFields");"Program"==item.Type&&user.Policy.EnableLiveTvManagement?require(["recordingFields"],function(recordingFields){currentRecordingFields=new recordingFields({parent:recordingFieldsElement,programId:item.Id,serverId:item.ServerId}),recordingFieldsElement.classList.remove("hide")}):(recordingFieldsElement.classList.add("hide"),recordingFieldsElement.innerHTML="")}}function renderLinks(linksElem,item){var links=[];if(item.HomePageUrl&&links.push(''+globalize.translate("ButtonWebsite")+""),item.ExternalUrls)for(var i=0,length=item.ExternalUrls.length;i'+url.Name+"")}if(links.length){var html=links.join('');linksElem.innerHTML=html,linksElem.classList.remove("hide")}else linksElem.classList.add("hide")}function renderImage(page,item,user){var container=page.querySelector(".detailImageContainer");libraryBrowser.renderDetailImage(page,container,item,user.Policy.IsAdministrator&&"Photo"!=item.MediaType,imageLoader,indicators)}function refreshDetailImageUserData(elem,item){var detailImageProgressContainer=elem.querySelector(".detailImageProgressContainer");detailImageProgressContainer.innerHTML=indicators.getProgressBarHtml(item)}function refreshImage(page,item,user){refreshDetailImageUserData(page.querySelector(".detailImageContainer"),item)}function setPeopleHeader(page,item){"Audio"==item.MediaType||"MusicAlbum"==item.Type||"Book"==item.MediaType||"Photo"==item.MediaType?page.querySelector("#peopleHeader").innerHTML=globalize.translate("HeaderPeople"):page.querySelector("#peopleHeader").innerHTML=globalize.translate("HeaderCastAndCrew")}function renderNextUp(page,item,user){var section=page.querySelector(".nextUpSection");return"Series"!=item.Type?void section.classList.add("hide"):void ApiClient.getNextUpEpisodes({SeriesId:item.Id,UserId:user.Id}).then(function(result){result.Items.length?section.classList.remove("hide"):section.classList.add("hide");var html=cardBuilder.getCardsHtml({items:result.Items,shape:getThumbShape(!1),showTitle:!0,displayAsSpecial:"Season"==item.Type&&item.IndexNumber,overlayText:!0,lazy:!0,overlayPlayButton:!0}),itemsContainer=section.querySelector(".nextUpItems");itemsContainer.innerHTML=html,imageLoader.lazyChildren(itemsContainer)})}function setInitialCollapsibleState(page,item,context,user){page.querySelector(".collectionItems").innerHTML="","TvChannel"==item.Type?(page.querySelector("#childrenCollapsible").classList.remove("hide"),renderChannelGuide(page,item,user)):"Playlist"==item.Type?(page.querySelector("#childrenCollapsible").classList.remove("hide"),renderPlaylistItems(page,item,user)):"Studio"==item.Type||"Person"==item.Type||"Genre"==item.Type||"MusicGenre"==item.Type||"GameGenre"==item.Type||"MusicArtist"==item.Type?(page.querySelector("#childrenCollapsible").classList.remove("hide"),renderItemsByName(page,item,user)):item.IsFolder||"Episode"==item.Type&&item.SeasonId&&item.SeriesId?("BoxSet"==item.Type&&page.querySelector("#childrenCollapsible").classList.add("hide"),renderChildren(page,item)):page.querySelector("#childrenCollapsible").classList.add("hide"),"Series"==item.Type&&renderSeriesSchedule(page,item,user),"Series"==item.Type?renderNextUp(page,item,user):page.querySelector(".nextUpSection").classList.add("hide"),item.MediaSources&&item.MediaSources.length&&renderMediaSources(page,user,item),renderScenes(page,item),item.SpecialFeatureCount&&0!=item.SpecialFeatureCount&&"Series"!=item.Type?(page.querySelector("#specialsCollapsible").classList.remove("hide"),renderSpecials(page,item,user,6)):page.querySelector("#specialsCollapsible").classList.add("hide"),item.People&&item.People.length?(page.querySelector("#castCollapsible").classList.remove("hide"),renderCast(page,item,context,enableScrollX()?null:12)):page.querySelector("#castCollapsible").classList.add("hide"),item.PartCount&&item.PartCount>1?(page.querySelector("#additionalPartsCollapsible").classList.remove("hide"),renderAdditionalParts(page,item,user)):page.querySelector("#additionalPartsCollapsible").classList.add("hide"),page.querySelector("#themeSongsCollapsible").classList.add("hide"),page.querySelector("#themeVideosCollapsible").classList.add("hide"),"MusicAlbum"==item.Type?renderMusicVideos(page,item,user):page.querySelector("#musicVideosCollapsible").classList.add("hide"),renderThemeMedia(page,item,user),enableScrollX()?renderCriticReviews(page,item):renderCriticReviews(page,item,1)}function renderOverview(elems,item){for(var i=0,length=elems.length;i'+text+"
":'
'+text+"
"}).join("");return view.querySelector(".mediaInfoIcons").innerHTML=html,html}function renderPhotoInfo(page,item){var html="",attributes=[];if(item.CameraMake&&attributes.push(createAttribute(globalize.translate("MediaInfoCameraMake"),item.CameraMake)),item.CameraModel&&attributes.push(createAttribute(globalize.translate("MediaInfoCameraModel"),item.CameraModel)),item.Altitude&&attributes.push(createAttribute(globalize.translate("MediaInfoAltitude"),item.Altitude.toFixed(1))),item.Aperture&&attributes.push(createAttribute(globalize.translate("MediaInfoAperture"),"F"+item.Aperture.toFixed(1))),item.ExposureTime){var val=1/item.ExposureTime;attributes.push(createAttribute(globalize.translate("MediaInfoExposureTime"),"1/"+val+" s"))}item.FocalLength&&attributes.push(createAttribute(globalize.translate("MediaInfoFocalLength"),item.FocalLength.toFixed(1)+" mm")),item.ImageOrientation,item.IsoSpeedRating&&attributes.push(createAttribute(globalize.translate("MediaInfoIsoSpeedRating"),item.IsoSpeedRating)),item.Latitude&&attributes.push(createAttribute(globalize.translate("MediaInfoLatitude"),item.Latitude.toFixed(1))),item.Longitude&&attributes.push(createAttribute(globalize.translate("MediaInfoLongitude"),item.Longitude.toFixed(1))),item.ShutterSpeed&&attributes.push(createAttribute(globalize.translate("MediaInfoShutterSpeed"),item.ShutterSpeed)),item.Software&&attributes.push(createAttribute(globalize.translate("MediaInfoSoftware"),item.Software)),html+=attributes.join("
"),page.querySelector(".photoInfoContent").innerHTML=html}function getArtistLinksHtml(artists,context){for(var html=[],i=0,length=artists.length;i'+artist.Name+"")}return html=html.join(" / "),1==artists.length?globalize.translate("ValueArtist",html):artists.length>1?globalize.translate("ValueArtists",html):html}function enableScrollX(){return browserInfo.mobile&&screen.availWidth<=1e3}function getPortraitShape(scrollX){return null==scrollX&&(scrollX=enableScrollX()),scrollX?"overflowPortrait":"portrait"}function getSquareShape(scrollX){return null==scrollX&&(scrollX=enableScrollX()),scrollX?"overflowSquare":"square"}function getThumbShape(scrollX){return null==scrollX&&(scrollX=enableScrollX()),scrollX?"overflowBackdrop":"backdrop"}function renderMoreFromItems(page,item){var moreFromSection=page.querySelector("#moreFromSection");if(moreFromSection)return"MusicAlbum"==item.Type&&item.AlbumArtists&&item.AlbumArtists.length?void ApiClient.getItems(Dashboard.getCurrentUserId(),{IncludeItemTypes:"MusicAlbum",ArtistIds:item.AlbumArtists[0].Id,Recursive:!0,ExcludeItemIds:item.Id,SortBy:"ProductionYear,SortName"}).then(function(result){if(!result.Items.length)return void moreFromSection.classList.add("hide");moreFromSection.classList.remove("hide"),moreFromSection.querySelector(".moreFromHeader").innerHTML=globalize.translate("MoreFromValue",item.AlbumArtists[0].Name);var html="";html+=enableScrollX()?'
':'
';var shape="MusicAlbum"==item.Type||"MusicArtist"==item.Type?getSquareShape():getPortraitShape(),supportsImageAnalysis=appHost.supports("imageanalysis");supportsImageAnalysis=!1,html+=cardBuilder.getCardsHtml({items:result.Items,shape:shape,showParentTitle:"MusicAlbum"==item.Type,centerText:!supportsImageAnalysis,showTitle:"MusicAlbum"==item.Type||"Game"==item.Type||"MusicArtist"==item.Type,coverImage:"MusicAlbum"==item.Type||"MusicArtist"==item.Type,overlayPlayButton:!0,cardLayout:supportsImageAnalysis,vibrant:supportsImageAnalysis}),html+="
";var similarContent=page.querySelector("#moreFromItems");similarContent.innerHTML=html,imageLoader.lazyChildren(similarContent)}):void moreFromSection.classList.add("hide")}function renderSimilarItems(page,item,context){var similarCollapsible=page.querySelector("#similarCollapsible");if(similarCollapsible){if("Movie"!=item.Type&&"Trailer"!=item.Type&&"Series"!=item.Type&&"Program"!=item.Type&&"Recording"!=item.Type&&"Game"!=item.Type&&"MusicAlbum"!=item.Type&&"MusicArtist"!=item.Type&&"ChannelVideoItem"!=item.Type)return void similarCollapsible.classList.add("hide");similarCollapsible.classList.remove("hide");var shape="MusicAlbum"==item.Type||"MusicArtist"==item.Type?getSquareShape():getPortraitShape(),options={userId:Dashboard.getCurrentUserId(),limit:"MusicAlbum"==item.Type||"MusicArtist"==item.Type?8:10,fields:"PrimaryImageAspectRatio,UserData,CanDelete"};"MusicAlbum"==item.Type&&item.AlbumArtists&&item.AlbumArtists.length&&(options.ExcludeArtistIds=item.AlbumArtists[0].Id),enableScrollX()&&(options.limit=12),ApiClient.getSimilarItems(item.Id,options).then(function(result){if(!result.Items.length)return void similarCollapsible.classList.add("hide");similarCollapsible.classList.remove("hide");var html="";html+=enableScrollX()?'
':'
';var supportsImageAnalysis=appHost.supports("imageanalysis"),cardLayout=supportsImageAnalysis&&("MusicAlbum"==item.Type||"Game"==item.Type||"MusicArtist"==item.Type);cardLayout=!1,html+=cardBuilder.getCardsHtml({items:result.Items,shape:shape,showParentTitle:"MusicAlbum"==item.Type,centerText:!cardLayout,showTitle:"MusicAlbum"==item.Type||"Game"==item.Type||"MusicArtist"==item.Type,context:context,lazy:!0,showDetailsMenu:!0,coverImage:"MusicAlbum"==item.Type||"MusicArtist"==item.Type,overlayPlayButton:!0,cardLayout:cardLayout,vibrant:cardLayout&&supportsImageAnalysis}),html+="
";var similarContent=similarCollapsible.querySelector(".similarContent");similarContent.innerHTML=html,imageLoader.lazyChildren(similarContent)})}}function renderSeriesAirTime(page,item,isStatic){var seriesAirTime=page.querySelector("#seriesAirTime");if("Series"!=item.Type)return void seriesAirTime.classList.add("hide");var html="";if(item.AirDays&&item.AirDays.length&&(html+=7==item.AirDays.length?"daily":item.AirDays.map(function(a){return a+"s"}).join(",")),item.AirTime&&(html+=" at "+item.AirTime),item.Studios.length)if(isStatic)html+=" on "+item.Studios[0].Name;else{var context=inferContext(item),href=embyRouter.getRouteUrl(item.Studios[0],{context:context,itemType:"Studio"});html+=' on '+item.Studios[0].Name+""}html?(html=("Ended"==item.Status?"Aired ":"Airs ")+html,seriesAirTime.innerHTML=html,seriesAirTime.classList.remove("hide")):seriesAirTime.classList.add("hide")}function renderTags(page,item){var itemTags=page.querySelector(".itemTags");if(item.Tags&&item.Tags.length){for(var html="",i=0,length=item.Tags.length;i'+item.Tags[i]+"
";itemTags.innerHTML=html,itemTags.classList.remove("hide")}else itemTags.classList.add("hide")}function getEpisodesFunction(seriesId,query){return query=Object.assign({},query),function(index,limit,fields){return query.StartIndex=index,query.Limit=limit,query.Fields=fields,ApiClient.getEpisodes(seriesId,query)}}function getAlbumSongsFunction(query){return query=Object.assign({},query),function(index,limit,fields){return query.StartIndex=index,query.Limit=limit,query.Fields=fields,ApiClient.getItems(Dashboard.getCurrentUserId(),query)}}function renderChildren(page,item){_childrenItemsFunction=null;var fields="ItemCounts,PrimaryImageAspectRatio,BasicSyncInfo,CanDelete",query={ParentId:item.Id,Fields:fields};"BoxSet"!==item.Type&&(query.SortBy="SortName");var promise,userId=Dashboard.getCurrentUserId();"Series"==item.Type?promise=ApiClient.getSeasons(item.Id,{userId:userId,Fields:fields}):"Season"==item.Type?(promise=ApiClient.getEpisodes(item.SeriesId,{seasonId:item.Id,userId:userId,Fields:fields}),_childrenItemsFunction=getEpisodesFunction(item.SeriesId,{seasonId:item.Id,userId:userId,Fields:fields})):"Episode"==item.Type&&item.SeriesId&&item.SeasonId?(promise=ApiClient.getEpisodes(item.SeriesId,{seasonId:item.SeasonId,userId:userId,Fields:fields}),_childrenItemsFunction=getEpisodesFunction(item.SeriesId,{seasonId:item.SeasonId,userId:userId,Fields:fields})):"MusicAlbum"==item.Type?_childrenItemsFunction=getAlbumSongsFunction(query):"MusicArtist"==item.Type&&(query.SortBy="ProductionYear,SortName"),promise=promise||ApiClient.getItems(Dashboard.getCurrentUserId(),query),promise.then(function(result){var html="",scrollX=!1,isList=!1,scrollClass="hiddenScrollX",childrenItemsContainer=page.querySelector(".childrenItemsContainer");if("MusicAlbum"==item.Type)html=listView.getListViewHtml({items:result.Items,smallIcon:!0,showIndex:!0,index:"disc",showIndexNumber:!0,playFromHere:!0,action:"playallfromhere",image:!1,artist:"auto",containerAlbumArtist:item.AlbumArtist,addToListButton:!0}),isList=!0;else if("Series"==item.Type)scrollX=enableScrollX(),html=cardBuilder.getCardsHtml({items:result.Items,shape:getPortraitShape(),showTitle:!0,centerText:!0,lazy:!0,overlayPlayButton:!0,allowBottomPadding:!scrollX});else if("Season"==item.Type||"Episode"==item.Type){if("Episode"===item.Type&&childrenItemsContainer.classList.add("darkScroller"),scrollX="Episode"==item.Type,browser.touch||(scrollClass="smoothScrollX"),result.Items.length<2&&"Episode"===item.Type)return;html=cardBuilder.getCardsHtml({items:result.Items,shape:getThumbShape(scrollX),showTitle:!0,displayAsSpecial:"Season"==item.Type&&item.IndexNumber,playFromHere:!0,overlayText:!0,lazy:!0,showDetailsMenu:!0,overlayPlayButton:!0,allowBottomPadding:!scrollX,includeParentInfoInTitle:!1})}else"GameSystem"==item.Type&&(html=cardBuilder.getCardsHtml({items:result.Items,shape:"auto",showTitle:!0,centerText:!0,lazy:!0,showDetailsMenu:!0}));if("BoxSet"!==item.Type&&page.querySelector("#childrenCollapsible").classList.remove("hide"),scrollX?(childrenItemsContainer.classList.add(scrollClass),childrenItemsContainer.classList.remove("vertical-wrap"),childrenItemsContainer.classList.remove("vertical-list")):(childrenItemsContainer.classList.remove("hiddenScrollX"),childrenItemsContainer.classList.remove("smoothScrollX"),isList?(childrenItemsContainer.classList.add("vertical-list"),childrenItemsContainer.classList.remove("vertical-wrap")):(childrenItemsContainer.classList.add("vertical-wrap"),childrenItemsContainer.classList.remove("vertical-list"))),childrenItemsContainer.innerHTML=html,imageLoader.lazyChildren(childrenItemsContainer),"BoxSet"==item.Type){var collectionItemTypes=[{name:globalize.translate("HeaderVideos"),mediaType:"Video"},{name:globalize.translate("HeaderSeries"),type:"Series"},{name:globalize.translate("HeaderAlbums"),type:"MusicAlbum"},{name:globalize.translate("HeaderGames"),type:"Game"},{name:globalize.translate("HeaderBooks"),type:"Book"}];renderCollectionItems(page,item,collectionItemTypes,result.Items)}else if("Episode"===item.Type){var card=childrenItemsContainer.querySelector('.card[data-id="'+item.Id+'"]');card&&scrollHelper.toStart(childrenItemsContainer,card.previousSibling||card,!0)}}),"Season"==item.Type?page.querySelector("#childrenTitle").innerHTML=globalize.translate("HeaderEpisodes"):"Episode"==item.Type?page.querySelector("#childrenTitle").innerHTML=globalize.translate("MoreFromValue",item.SeasonName):"Series"==item.Type?page.querySelector("#childrenTitle").innerHTML=globalize.translate("HeaderSeasons"):"MusicAlbum"==item.Type?page.querySelector("#childrenTitle").innerHTML=globalize.translate("HeaderTracks"):"GameSystem"==item.Type?page.querySelector("#childrenTitle").innerHTML=globalize.translate("HeaderGames"):page.querySelector("#childrenTitle").innerHTML=globalize.translate("HeaderItems"),"MusicAlbum"==item.Type?page.querySelector(".childrenSectionHeader",page).classList.add("hide"):page.querySelector(".childrenSectionHeader",page).classList.remove("hide")}function renderItemsByName(page,item,user){require("scripts/itembynamedetailpage".split(","),function(){window.ItemsByName.renderItems(page,item)})}function renderPlaylistItems(page,item,user){require("scripts/playlistedit".split(","),function(){PlaylistViewer.render(page,item)})}function renderChannelGuide(page,item,user){require("scripts/livetvchannel,scripts/livetvcomponents,livetvcss".split(","),function(liveTvChannelPage){liveTvChannelPage.renderPrograms(page,item.Id)})}function renderSeriesSchedule(page,item,user){}function inferContext(item){return"Movie"==item.Type||"BoxSet"==item.Type?"movies":"Series"==item.Type||"Season"==item.Type||"Episode"==item.Type?"tvshows":"Game"==item.Type||"GameSystem"==item.Type?"games":"Game"==item.Type||"GameSystem"==item.Type?"games":"MusicArtist"==item.Type||"MusicAlbum"==item.Type?"music":null}function renderStudios(elem,item,isStatic){var context=inferContext(item);if(item.Studios&&item.Studios.length&&"Series"!=item.Type,1)elem.classList.add("hide");else{for(var html="",i=0,length=item.Studios.length;i0&&(html+="  /  "),isStatic)html+=item.Studios[i].Name;else{item.Studios[i].Type="Studio";var href=embyRouter.getRouteUrl(item.Studios[0],{context:context});html+=''+item.Studios[i].Name+""}var translationKey=item.Studios.length>1?"ValueStudios":"ValueStudio";html=globalize.translate(translationKey,html),elem.innerHTML=html,elem.classList.remove("hide")}}function renderGenres(elem,item,limit,isStatic){var context=inferContext(item),html="",genres=item.GenreItems;genres||(genres=(item.Genres||[]).map(function(name){return{Name:name}})||[]);for(var i=0,length=genres.length;i=limit);i++)if(i>0&&(html+=''),isStatic)html+=genres[i].Name;else{var type;switch(context){case"tvshows":type="Series";break;case"games":type="Game";break;case"music":type="MusicAlbum";break;default:type="Movie"}var param,paramValue;genres[i].Id?(param="genreId",paramValue=genres[i].Id):(param="Audio"==item.Type||"MusicArtist"==item.Type||"MusicAlbum"==item.Type||"MusicVideo"==item.Type?"musicgenre":"genre","Game"==item.MediaType&&(param="gamegenre"),paramValue=ApiClient.encodeName(genres[i].Name));var url="secondaryitems.html?type="+type+"&"+param+"="+paramValue;html+=''+genres[i].Name+""}elem.innerHTML=html}function filterItemsByCollectionItemType(items,typeInfo){return items.filter(function(item){return typeInfo.mediaType?item.MediaType==typeInfo.mediaType:item.Type==typeInfo.type})}function renderCollectionItems(page,parentItem,types,items){page.querySelector(".collectionItems").innerHTML="";var i,length;for(i=0,length=types.length;i0}).length});otherTypeItems.length&&renderCollectionItemType(page,parentItem,otherType,otherTypeItems),items.length||renderCollectionItemType(page,parentItem,{name:globalize.translate("HeaderItems")},items)}function renderCollectionItemType(page,parentItem,type,items){var html="";html+='
',html+='
',html+='

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

",html+='',html+="
",html+='
';var shape="MusicAlbum"==type.type?getSquareShape(!1):getPortraitShape(!1);html+=cardBuilder.getCardsHtml({items:items,shape:shape,showTitle:!0,centerText:!0,lazy:!0,showDetailsMenu:!0,overlayMoreButton:!0,showAddToCollection:!1,showRemoveFromCollection:!0,collectionId:parentItem.Id}),html+="
",html+="
";var collectionItems=page.querySelector(".collectionItems");collectionItems.insertAdjacentHTML("beforeend",html),imageLoader.lazyChildren(collectionItems),collectionItems.querySelector(".btnAddToCollection").addEventListener("click",function(){require(["alert"],function(alert){alert({text:globalize.translate("AddItemToCollectionHelp"),html:globalize.translate("AddItemToCollectionHelp")+'

'+globalize.translate("ButtonLearnMore")+""})})})}function renderCriticReviews(page,item,limit){if("Movie"!=item.Type&&"Trailer"!=item.Type&&"MusicVideo"!=item.Type)return void page.querySelector("#criticReviewsCollapsible").classList.add("hide");var options={};limit&&(options.limit=limit),ApiClient.getCriticReviews(item.Id,options).then(function(result){result.TotalRecordCount?(page.querySelector("#criticReviewsCollapsible").classList.remove("hide"),renderCriticReviewsContent(page,result,limit)):page.querySelector("#criticReviewsCollapsible").classList.add("hide")})}function renderCriticReviewsContent(page,result,limit){for(var html="",reviews=result.Items,i=0,length=reviews.length;i',html+='
',null!=review.Score||null!=review.Likes&&(html+=review.Likes?"
":"
"),html+='
',html+='

'+review.Caption+"

";var vals=[];if(review.ReviewerName&&vals.push(review.ReviewerName),review.Publisher&&vals.push(review.Publisher),html+='
'+vals.join(", ")+".",review.Date)try{var date=datetime.toLocaleDateString(datetime.parseISO8601Date(review.Date,!0));html+=''+date+""}catch(error){}html+="
",review.Url&&(html+='"),html+="
",html+="
",html+="
"}limit&&result.TotalRecordCount>limit&&(html+='

");var criticReviewsContent=page.querySelector("#criticReviewsContent");criticReviewsContent.innerHTML=html,enableScrollX()?criticReviewsContent.classList.add("hiddenScrollX"):criticReviewsContent.classList.remove("hiddenScrollX")}function renderThemeMedia(page,item){"SeriesTimer"!==item.Type&&"Timer"!==item.Type&&"Genre"!==item.Type&&"MusicGenre"!==item.Type&&"GameGenre"!==item.Type&&"Studio"!==item.Type&&"Person"!==item.Type&&ApiClient.getThemeMedia(Dashboard.getCurrentUserId(),item.Id,!0).then(function(result){var themeSongs=result.ThemeSongsResult.OwnerId==item.Id?result.ThemeSongsResult.Items:[],themeVideos=result.ThemeVideosResult.OwnerId==item.Id?result.ThemeVideosResult.Items:[];renderThemeSongs(page,themeSongs),renderThemeVideos(page,themeVideos)})}function renderThemeSongs(page,items){if(items.length){page.querySelector("#themeSongsCollapsible").classList.remove("hide");var html=listView.getListViewHtml({items:items});page.querySelector("#themeSongsContent").innerHTML=html}else page.querySelector("#themeSongsCollapsible").classList.add("hide")}function renderThemeVideos(page,items,user){if(items.length){page.querySelector("#themeVideosCollapsible").classList.remove("hide");var themeVideosContent=page.querySelector("#themeVideosContent");themeVideosContent.innerHTML=getVideosHtml(items,user),imageLoader.lazyChildren(themeVideosContent)}else page.querySelector("#themeVideosCollapsible").classList.add("hide")}function renderMusicVideos(page,item,user){ApiClient.getItems(user.Id,{SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"MusicVideo",Recursive:!0,Fields:"DateCreated,CanDelete",AlbumIds:item.Id}).then(function(result){if(result.Items.length){page.querySelector("#musicVideosCollapsible").classList.remove("hide");var musicVideosContent=page.querySelector(".musicVideosContent");musicVideosContent.innerHTML=getVideosHtml(result.Items,user),imageLoader.lazyChildren(musicVideosContent)}else page.querySelector("#musicVideosCollapsible").classList.add("hide")})}function renderAdditionalParts(page,item,user){ApiClient.getAdditionalVideoParts(user.Id,item.Id).then(function(result){if(result.Items.length){page.querySelector("#additionalPartsCollapsible").classList.remove("hide");var additionalPartsContent=page.querySelector("#additionalPartsContent");additionalPartsContent.innerHTML=getVideosHtml(result.Items,user),imageLoader.lazyChildren(additionalPartsContent)}else page.querySelector("#additionalPartsCollapsible").classList.add("hide")})}function renderScenes(page,item){var chapters=item.Chapters||[];if(chapters.length&&!chapters[0].ImageTag&&(chapters=[]),chapters.length){page.querySelector("#scenesCollapsible").classList.remove("hide");var scenesContent=page.querySelector("#scenesContent");enableScrollX()?scenesContent.classList.add("smoothScrollX"):scenesContent.classList.add("vertical-wrap"),require(["chaptercardbuilder"],function(chaptercardbuilder){chaptercardbuilder.buildChapterCards(item,chapters,{itemsContainer:scenesContent,width:400,backdropShape:getThumbShape(),squareShape:getSquareShape()})})}else page.querySelector("#scenesCollapsible").classList.add("hide")}function renderMediaSources(page,user,item){var html=item.MediaSources.map(function(v){return getMediaSourceHtml(user,item,v)}).join('
');item.MediaSources.length>1&&(html="
"+html);var mediaInfoContent=page.querySelector("#mediaInfoContent");mediaInfoContent.innerHTML=html}function getMediaSourceHtml(user,item,version){var html="";version.Name&&item.MediaSources.length>1&&(html+='
'+version.Name+"

");for(var i=0,length=version.MediaStreams.length;i';var displayType=globalize.translate("MediaInfoStreamType"+stream.Type);html+='

'+displayType+"

";var attributes=[];stream.Language&&"Video"!=stream.Type&&attributes.push(createAttribute(globalize.translate("MediaInfoLanguage"),stream.Language)),stream.Codec&&attributes.push(createAttribute(globalize.translate("MediaInfoCodec"),stream.Codec.toUpperCase())),stream.CodecTag&&attributes.push(createAttribute(globalize.translate("MediaInfoCodecTag"),stream.CodecTag)),null!=stream.IsAVC&&attributes.push(createAttribute("AVC",stream.IsAVC?"Yes":"No")),stream.Profile&&attributes.push(createAttribute(globalize.translate("MediaInfoProfile"),stream.Profile)),stream.Level&&attributes.push(createAttribute(globalize.translate("MediaInfoLevel"),stream.Level)),(stream.Width||stream.Height)&&attributes.push(createAttribute(globalize.translate("MediaInfoResolution"),stream.Width+"x"+stream.Height)),stream.AspectRatio&&"mjpeg"!=stream.Codec&&attributes.push(createAttribute(globalize.translate("MediaInfoAspectRatio"),stream.AspectRatio)),"Video"==stream.Type&&(null!=stream.IsAnamorphic&&attributes.push(createAttribute(globalize.translate("MediaInfoAnamorphic"),stream.IsAnamorphic?"Yes":"No")),attributes.push(createAttribute(globalize.translate("MediaInfoInterlaced"),stream.IsInterlaced?"Yes":"No"))),(stream.AverageFrameRate||stream.RealFrameRate)&&attributes.push(createAttribute(globalize.translate("MediaInfoFramerate"),stream.AverageFrameRate||stream.RealFrameRate)),stream.ChannelLayout&&attributes.push(createAttribute(globalize.translate("MediaInfoLayout"),stream.ChannelLayout)),stream.Channels&&attributes.push(createAttribute(globalize.translate("MediaInfoChannels"),stream.Channels+" ch")),stream.BitRate&&"mjpeg"!=stream.Codec&&attributes.push(createAttribute(globalize.translate("MediaInfoBitrate"),parseInt(stream.BitRate/1e3)+" kbps")),stream.SampleRate&&attributes.push(createAttribute(globalize.translate("MediaInfoSampleRate"),stream.SampleRate+" Hz")),stream.BitDepth&&attributes.push(createAttribute(globalize.translate("MediaInfoBitDepth"),stream.BitDepth+" bit")),stream.PixelFormat&&attributes.push(createAttribute(globalize.translate("MediaInfoPixelFormat"),stream.PixelFormat)),stream.RefFrames&&attributes.push(createAttribute(globalize.translate("MediaInfoRefFrames"),stream.RefFrames)),stream.NalLengthSize&&attributes.push(createAttribute("NAL",stream.NalLengthSize)),"Video"!=stream.Type&&attributes.push(createAttribute(globalize.translate("MediaInfoDefault"),stream.IsDefault?"Yes":"No")),"Subtitle"==stream.Type&&(attributes.push(createAttribute(globalize.translate("MediaInfoForced"),stream.IsForced?"Yes":"No")),attributes.push(createAttribute(globalize.translate("MediaInfoExternal"),stream.IsExternal?"Yes":"No"))),"Video"==stream.Type&&version.Timestamp&&attributes.push(createAttribute(globalize.translate("MediaInfoTimestamp"),version.Timestamp)),stream.DisplayTitle&&attributes.push(createAttribute("Title",stream.DisplayTitle)),html+=attributes.join("
"),html+="
"}}if(version.Container&&(html+='
'+globalize.translate("MediaInfoContainer")+''+version.Container+"
"),version.Formats&&version.Formats.length,version.Path&&"Http"!=version.Protocol&&user&&user.Policy.IsAdministrator&&(html+='
'+globalize.translate("MediaInfoPath")+''+version.Path+"
"),version.Size){var size=(version.Size/1048576).toFixed(0);html+='
'+globalize.translate("MediaInfoSize")+''+size+" MB
"}return html}function createAttribute(label,value){return''+label+''+value+""}function getVideosHtml(items,user,limit,moreButtonClass){var html=cardBuilder.getCardsHtml({items:items,shape:"auto",showTitle:!0,action:"play",overlayText:!0,showRuntime:!0});return limit&&items.length>limit&&(html+='

"),html}function renderSpecials(page,item,user,limit){ApiClient.getSpecialFeatures(user.Id,item.Id).then(function(specials){var specialsContent=page.querySelector("#specialsContent");specialsContent.innerHTML=getVideosHtml(specials,user,limit,"moreSpecials"),imageLoader.lazyChildren(specialsContent)})}function renderCast(page,item,context,limit,isStatic){var people=item.People||[],castContent=page.querySelector("#castContent");enableScrollX()?(castContent.classList.add("smoothScrollX"),limit=32):castContent.classList.add("vertical-wrap");var limitExceeded=limit&&people.length>limit;limitExceeded&&(people=people.slice(0),people.length=Math.min(limit,people.length)),require(["peoplecardbuilder"],function(peoplecardbuilder){peoplecardbuilder.buildPeopleCards(people,{itemsContainer:castContent,coverImage:!0,serverId:item.ServerId,width:160,shape:getPortraitShape()})});var morePeopleButton=page.querySelector(".morePeople");morePeopleButton&&(limitExceeded&&!enableScrollX()?morePeopleButton.classList.remove("hide"):morePeopleButton.classList.add("hide"))}function play(startPosition){playbackManager.play({items:[currentItem],startPositionTicks:startPosition})}function splitVersions(page,params){require(["confirm"],function(confirm){confirm("Are you sure you wish to split the media sources into separate items?","Split Media Apart").then(function(){loading.show(),ApiClient.ajax({type:"DELETE",url:ApiClient.getUrl("Videos/"+params.id+"/AlternateSources")}).then(function(){loading.hide(),reload(page,params)})})})}function playTrailer(page){playbackManager.playTrailers(currentItem)}function showPlayMenu(item,target){require(["playMenu"],function(playMenu){playMenu.show({item:item,positionTo:target})})}function playCurrentItem(button,mode){var item=currentItem;return"Program"===item.Type?void ApiClient.getLiveTvChannel(item.ChannelId,Dashboard.getCurrentUserId()).then(function(channel){playbackManager.play({items:[channel]})}):void("playmenu"===mode?showPlayMenu(item,button):playbackManager.play({items:[item],startPositionTicks:item.UserData&&"resume"===mode?item.UserData.PlaybackPositionTicks:0}))}function itemDetailPage(){var self=this;self.play=play,self.setInitialCollapsibleState=setInitialCollapsibleState,self.renderDetails=renderDetails,self.renderCriticReviews=renderCriticReviews,self.renderCast=renderCast,self.renderScenes=renderScenes,self.renderMediaSources=renderMediaSources}function onPlayClick(){var mode=this.getAttribute("data-mode");playCurrentItem(this,mode)}function onInstantMixClick(){playbackManager.instantMix(currentItem)}function onShuffleClick(){playbackManager.shuffle(currentItem)}function onDeleteClick(){require(["deleteHelper"],function(deleteHelper){deleteHelper.deleteItem({item:currentItem,navigate:!0})})}function onCancelSeriesTimerClick(){require(["recordingHelper"],function(recordingHelper){recordingHelper.cancelSeriesTimerWithConfirmation(currentItem.Id,currentItem.ServerId).then(function(){Dashboard.navigate("livetv.html")})})}function bindAll(view,selector,eventName,fn){var i,length,elems=view.querySelectorAll(selector);for(i=0,length=elems.length;i"}function renderSeriesTimerSchedule(page,seriesTimerId){ApiClient.getLiveTvTimers({UserId:ApiClient.getCurrentUserId(),ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Thumb",SortBy:"StartDate",EnableTotalRecordCount:!1,EnableUserData:!1,SeriesTimerId:seriesTimerId,Fields:"ChannelInfo"}).then(function(result){result.Items.length&&result.Items[0].SeriesTimerId!=seriesTimerId&&(result.Items=[]);var html=getProgramScheduleHtml(result.Items),scheduleTab=page.querySelector(".seriesTimerSchedule");scheduleTab.innerHTML=html,imageLoader.lazyChildren(scheduleTab)})}function renderSeriesTimerEditor(page,item,user){if("SeriesTimer"===item.Type){if(!user.Policy.EnableLiveTvManagement)return page.querySelector(".seriesTimerScheduleSection").classList.add("hide"),void hideAll(page,"btnCancelSeriesTimer");require(["seriesRecordingEditor"],function(seriesRecordingEditor){seriesRecordingEditor.embed(item,ApiClient.serverId(),{context:page.querySelector(".seriesRecordingEditor")})}),page.querySelector(".seriesTimerScheduleSection").classList.remove("hide"),hideAll(page,"btnCancelSeriesTimer",!0),renderSeriesTimerSchedule(page,item.Id)}}function reloadPlayButtons(page,item){var canPlay=!1;if("Program"==item.Type){var now=new Date;now>=datetime.parseISO8601Date(item.StartDate,!0)&&now0)}else hideAll(page,"btnPlay"),hideAll(page,"btnResume"),hideAll(page,"btnInstantMix"),hideAll(page,"btnShuffle");return canPlay}function reloadUserDataButtons(page,item){var i,length,btnPlaystates=page.querySelectorAll(".btnPlaystate");for(i=0,length=btnPlaystates.length;i=800?backdrop.setBackdrops([item]):backdrop.clear(),libraryBrowser.renderDetailPageBackdrop(page,item,imageLoader,indicators),libraryMenu.setTransparentMenu(!0);var canPlay=reloadPlayButtons(page,item),hasAnyButton=canPlay;item.LocalTrailerCount||item.RemoteTrailers&&item.RemoteTrailers.length?(hideAll(page,"btnPlayTrailer",!0),hasAnyButton=!0):hideAll(page,"btnPlayTrailer"),item.CanDelete&&!item.IsFolder?(hideAll(page,"btnDeleteItem",!0),hasAnyButton=!0):hideAll(page,"btnDeleteItem"),renderSyncLocalContainer(page,params,user,item),hasAnyButton||"Program"!==item.Type?hideAll(page,"mainDetailButtons",!0):hideAll(page,"mainDetailButtons"),showRecordingFields(instance,page,item,user);var groupedVersions=(item.MediaSources||[]).filter(function(g){return"Grouping"==g.Type});user.Policy.IsAdministrator&&groupedVersions.length?page.querySelector(".splitVersionContainer").classList.remove("hide"):page.querySelector(".splitVersionContainer").classList.add("hide");var commands=itemContextMenu.getCommands(getContextMenuOptions(item,user));commands.length?hideAll(page,"btnMoreCommands",!0):hideAll(page,"btnMoreCommands");var itemBirthday=page.querySelector("#itemBirthday");if("Person"==item.Type&&item.PremiereDate)try{var birthday=datetime.parseISO8601Date(item.PremiereDate,!0).toDateString();itemBirthday.classList.remove("hide"),itemBirthday.innerHTML=globalize.translate("BirthDateValue").replace("{0}",birthday)}catch(err){itemBirthday.classList.add("hide")}else itemBirthday.classList.add("hide");var itemDeathDate=page.querySelector("#itemDeathDate");if("Person"==item.Type&&item.EndDate)try{var deathday=datetime.parseISO8601Date(item.EndDate,!0).toDateString();itemDeathDate.classList.remove("hide"),itemDeathDate.innerHTML=globalize.translate("DeathDateValue").replace("{0}",deathday)}catch(err){itemDeathDate.classList.add("hide")}var itemBirthLocation=page.querySelector("#itemBirthLocation");if("Person"==item.Type&&item.ProductionLocations&&item.ProductionLocations.length){var gmap=''+item.ProductionLocations[0]+"";itemBirthLocation.classList.remove("hide"),itemBirthLocation.innerHTML=globalize.translate("BirthPlaceValue").replace("{0}",gmap)}else itemBirthLocation.classList.add("hide");setPeopleHeader(page,item),loading.hide()}function logoImageUrl(item,apiClient,options){return options=options||{},options.type="Logo",item.ImageTags&&item.ImageTags.Logo?(options.tag=item.ImageTags.Logo,apiClient.getScaledImageUrl(item.Id,options)):item.ParentLogoImageTag?(options.tag=item.ParentLogoImageTag,apiClient.getScaledImageUrl(item.ParentLogoItemId,options)):null}function renderLogo(page,item,apiClient){var url=logoImageUrl(item,apiClient,{maxWidth:300}),detailLogo=page.querySelector(".detailLogo");url?(detailLogo.classList.remove("hide"),detailLogo.classList.add("lazy"),detailLogo.setAttribute("data-src",url),imageLoader.lazyImage(detailLogo)):detailLogo.classList.add("hide")}function showRecordingFields(instance,page,item,user){if(!instance.currentRecordingFields){var recordingFieldsElement=page.querySelector(".recordingFields");"Program"==item.Type&&user.Policy.EnableLiveTvManagement?require(["recordingFields"],function(recordingFields){instance.currentRecordingFields=new recordingFields({parent:recordingFieldsElement,programId:item.Id,serverId:item.ServerId}),recordingFieldsElement.classList.remove("hide")}):(recordingFieldsElement.classList.add("hide"),recordingFieldsElement.innerHTML="")}}function renderLinks(linksElem,item){var links=[];if(item.HomePageUrl&&links.push(''+globalize.translate("ButtonWebsite")+""),item.ExternalUrls)for(var i=0,length=item.ExternalUrls.length;i'+url.Name+"")}if(links.length){var html=links.join('');linksElem.innerHTML=html,linksElem.classList.remove("hide")}else linksElem.classList.add("hide")}function renderImage(page,item,user){var container=page.querySelector(".detailImageContainer");libraryBrowser.renderDetailImage(page,container,item,user.Policy.IsAdministrator&&"Photo"!=item.MediaType,imageLoader,indicators)}function refreshDetailImageUserData(elem,item){var detailImageProgressContainer=elem.querySelector(".detailImageProgressContainer");detailImageProgressContainer.innerHTML=indicators.getProgressBarHtml(item)}function refreshImage(page,item,user){refreshDetailImageUserData(page.querySelector(".detailImageContainer"),item)}function setPeopleHeader(page,item){"Audio"==item.MediaType||"MusicAlbum"==item.Type||"Book"==item.MediaType||"Photo"==item.MediaType?page.querySelector("#peopleHeader").innerHTML=globalize.translate("HeaderPeople"):page.querySelector("#peopleHeader").innerHTML=globalize.translate("HeaderCastAndCrew")}function renderNextUp(page,item,user){var section=page.querySelector(".nextUpSection");return"Series"!=item.Type?void section.classList.add("hide"):void ApiClient.getNextUpEpisodes({SeriesId:item.Id,UserId:user.Id}).then(function(result){result.Items.length?section.classList.remove("hide"):section.classList.add("hide");var html=cardBuilder.getCardsHtml({items:result.Items,shape:getThumbShape(!1),showTitle:!0,displayAsSpecial:"Season"==item.Type&&item.IndexNumber,overlayText:!0,lazy:!0,overlayPlayButton:!0}),itemsContainer=section.querySelector(".nextUpItems");itemsContainer.innerHTML=html,imageLoader.lazyChildren(itemsContainer)})}function setInitialCollapsibleState(page,item,context,user){page.querySelector(".collectionItems").innerHTML="","TvChannel"==item.Type?(page.querySelector("#childrenCollapsible").classList.remove("hide"),renderChannelGuide(page,item,user)):"Playlist"==item.Type?(page.querySelector("#childrenCollapsible").classList.remove("hide"),renderPlaylistItems(page,item,user)):"Studio"==item.Type||"Person"==item.Type||"Genre"==item.Type||"MusicGenre"==item.Type||"GameGenre"==item.Type||"MusicArtist"==item.Type?(page.querySelector("#childrenCollapsible").classList.remove("hide"),renderItemsByName(page,item,user)):item.IsFolder||"Episode"==item.Type&&item.SeasonId&&item.SeriesId?("BoxSet"==item.Type&&page.querySelector("#childrenCollapsible").classList.add("hide"),renderChildren(page,item)):page.querySelector("#childrenCollapsible").classList.add("hide"),"Series"==item.Type&&renderSeriesSchedule(page,item,user),"Series"==item.Type?renderNextUp(page,item,user):page.querySelector(".nextUpSection").classList.add("hide"),item.MediaSources&&item.MediaSources.length&&renderMediaSources(page,user,item),renderScenes(page,item),item.SpecialFeatureCount&&0!=item.SpecialFeatureCount&&"Series"!=item.Type?(page.querySelector("#specialsCollapsible").classList.remove("hide"),renderSpecials(page,item,user,6)):page.querySelector("#specialsCollapsible").classList.add("hide"),item.People&&item.People.length?(page.querySelector("#castCollapsible").classList.remove("hide"),renderCast(page,item,context,enableScrollX()?null:12)):page.querySelector("#castCollapsible").classList.add("hide"),item.PartCount&&item.PartCount>1?(page.querySelector("#additionalPartsCollapsible").classList.remove("hide"),renderAdditionalParts(page,item,user)):page.querySelector("#additionalPartsCollapsible").classList.add("hide"),page.querySelector("#themeSongsCollapsible").classList.add("hide"),page.querySelector("#themeVideosCollapsible").classList.add("hide"),"MusicAlbum"==item.Type?renderMusicVideos(page,item,user):page.querySelector("#musicVideosCollapsible").classList.add("hide"),renderThemeMedia(page,item,user),enableScrollX()?renderCriticReviews(page,item):renderCriticReviews(page,item,1)}function renderOverview(elems,item){for(var i=0,length=elems.length;i'+text+"
":'
'+text+"
"}).join("");return view.querySelector(".mediaInfoIcons").innerHTML=html,html}function renderPhotoInfo(page,item){var html="",attributes=[];if(item.CameraMake&&attributes.push(createAttribute(globalize.translate("MediaInfoCameraMake"),item.CameraMake)),item.CameraModel&&attributes.push(createAttribute(globalize.translate("MediaInfoCameraModel"),item.CameraModel)),item.Altitude&&attributes.push(createAttribute(globalize.translate("MediaInfoAltitude"),item.Altitude.toFixed(1))),item.Aperture&&attributes.push(createAttribute(globalize.translate("MediaInfoAperture"),"F"+item.Aperture.toFixed(1))),item.ExposureTime){var val=1/item.ExposureTime;attributes.push(createAttribute(globalize.translate("MediaInfoExposureTime"),"1/"+val+" s"))}item.FocalLength&&attributes.push(createAttribute(globalize.translate("MediaInfoFocalLength"),item.FocalLength.toFixed(1)+" mm")),item.ImageOrientation,item.IsoSpeedRating&&attributes.push(createAttribute(globalize.translate("MediaInfoIsoSpeedRating"),item.IsoSpeedRating)),item.Latitude&&attributes.push(createAttribute(globalize.translate("MediaInfoLatitude"),item.Latitude.toFixed(1))),item.Longitude&&attributes.push(createAttribute(globalize.translate("MediaInfoLongitude"),item.Longitude.toFixed(1))),item.ShutterSpeed&&attributes.push(createAttribute(globalize.translate("MediaInfoShutterSpeed"),item.ShutterSpeed)),item.Software&&attributes.push(createAttribute(globalize.translate("MediaInfoSoftware"),item.Software)),html+=attributes.join("
"),page.querySelector(".photoInfoContent").innerHTML=html}function getArtistLinksHtml(artists,context){for(var html=[],i=0,length=artists.length;i'+artist.Name+"")}return html=html.join(" / "),1==artists.length?globalize.translate("ValueArtist",html):artists.length>1?globalize.translate("ValueArtists",html):html}function enableScrollX(){return browserInfo.mobile&&screen.availWidth<=1e3}function getPortraitShape(scrollX){return null==scrollX&&(scrollX=enableScrollX()),scrollX?"overflowPortrait":"portrait"}function getSquareShape(scrollX){return null==scrollX&&(scrollX=enableScrollX()),scrollX?"overflowSquare":"square"}function getThumbShape(scrollX){return null==scrollX&&(scrollX=enableScrollX()),scrollX?"overflowBackdrop":"backdrop"}function renderMoreFromItems(page,item){var moreFromSection=page.querySelector("#moreFromSection");if(moreFromSection)return"MusicAlbum"==item.Type&&item.AlbumArtists&&item.AlbumArtists.length?void ApiClient.getItems(Dashboard.getCurrentUserId(),{IncludeItemTypes:"MusicAlbum",ArtistIds:item.AlbumArtists[0].Id,Recursive:!0,ExcludeItemIds:item.Id,SortBy:"ProductionYear,SortName"}).then(function(result){if(!result.Items.length)return void moreFromSection.classList.add("hide");moreFromSection.classList.remove("hide"),moreFromSection.querySelector(".moreFromHeader").innerHTML=globalize.translate("MoreFromValue",item.AlbumArtists[0].Name);var html="";html+=enableScrollX()?'
':'
';var shape="MusicAlbum"==item.Type||"MusicArtist"==item.Type?getSquareShape():getPortraitShape(),supportsImageAnalysis=appHost.supports("imageanalysis");supportsImageAnalysis=!1,html+=cardBuilder.getCardsHtml({items:result.Items,shape:shape,showParentTitle:"MusicAlbum"==item.Type,centerText:!supportsImageAnalysis,showTitle:"MusicAlbum"==item.Type||"Game"==item.Type||"MusicArtist"==item.Type,coverImage:"MusicAlbum"==item.Type||"MusicArtist"==item.Type,overlayPlayButton:!0,cardLayout:supportsImageAnalysis,vibrant:supportsImageAnalysis}),html+="
";var similarContent=page.querySelector("#moreFromItems");similarContent.innerHTML=html,imageLoader.lazyChildren(similarContent)}):void moreFromSection.classList.add("hide")}function renderSimilarItems(page,item,context){var similarCollapsible=page.querySelector("#similarCollapsible");if(similarCollapsible){if("Movie"!=item.Type&&"Trailer"!=item.Type&&"Series"!=item.Type&&"Program"!=item.Type&&"Recording"!=item.Type&&"Game"!=item.Type&&"MusicAlbum"!=item.Type&&"MusicArtist"!=item.Type&&"ChannelVideoItem"!=item.Type)return void similarCollapsible.classList.add("hide");similarCollapsible.classList.remove("hide");var shape="MusicAlbum"==item.Type||"MusicArtist"==item.Type?getSquareShape():getPortraitShape(),options={userId:Dashboard.getCurrentUserId(),limit:"MusicAlbum"==item.Type||"MusicArtist"==item.Type?8:10,fields:"PrimaryImageAspectRatio,UserData,CanDelete"};"MusicAlbum"==item.Type&&item.AlbumArtists&&item.AlbumArtists.length&&(options.ExcludeArtistIds=item.AlbumArtists[0].Id),enableScrollX()&&(options.limit=12),ApiClient.getSimilarItems(item.Id,options).then(function(result){if(!result.Items.length)return void similarCollapsible.classList.add("hide");similarCollapsible.classList.remove("hide");var html="";html+=enableScrollX()?'
':'
';var supportsImageAnalysis=appHost.supports("imageanalysis"),cardLayout=supportsImageAnalysis&&("MusicAlbum"==item.Type||"Game"==item.Type||"MusicArtist"==item.Type);cardLayout=!1,html+=cardBuilder.getCardsHtml({items:result.Items,shape:shape,showParentTitle:"MusicAlbum"==item.Type,centerText:!cardLayout,showTitle:"MusicAlbum"==item.Type||"Game"==item.Type||"MusicArtist"==item.Type,context:context,lazy:!0,showDetailsMenu:!0,coverImage:"MusicAlbum"==item.Type||"MusicArtist"==item.Type,overlayPlayButton:!0,cardLayout:cardLayout,vibrant:cardLayout&&supportsImageAnalysis}),html+="
";var similarContent=similarCollapsible.querySelector(".similarContent");similarContent.innerHTML=html,imageLoader.lazyChildren(similarContent)})}}function renderSeriesAirTime(page,item,isStatic){var seriesAirTime=page.querySelector("#seriesAirTime");if("Series"!=item.Type)return void seriesAirTime.classList.add("hide");var html="";if(item.AirDays&&item.AirDays.length&&(html+=7==item.AirDays.length?"daily":item.AirDays.map(function(a){return a+"s"}).join(",")),item.AirTime&&(html+=" at "+item.AirTime),item.Studios.length)if(isStatic)html+=" on "+item.Studios[0].Name;else{var context=inferContext(item),href=embyRouter.getRouteUrl(item.Studios[0],{context:context,itemType:"Studio"});html+=' on '+item.Studios[0].Name+""}html?(html=("Ended"==item.Status?"Aired ":"Airs ")+html,seriesAirTime.innerHTML=html,seriesAirTime.classList.remove("hide")):seriesAirTime.classList.add("hide")}function renderTags(page,item){var itemTags=page.querySelector(".itemTags");if(item.Tags&&item.Tags.length){for(var html="",i=0,length=item.Tags.length;i'+item.Tags[i]+"
";itemTags.innerHTML=html,itemTags.classList.remove("hide")}else itemTags.classList.add("hide")}function getEpisodesFunction(seriesId,query){return query=Object.assign({},query),function(index,limit,fields){return query.StartIndex=index,query.Limit=limit,query.Fields=fields,ApiClient.getEpisodes(seriesId,query)}}function getAlbumSongsFunction(query){return query=Object.assign({},query),function(index,limit,fields){return query.StartIndex=index,query.Limit=limit,query.Fields=fields,ApiClient.getItems(Dashboard.getCurrentUserId(),query)}}function renderChildren(page,item){_childrenItemsFunction=null;var fields="ItemCounts,PrimaryImageAspectRatio,BasicSyncInfo,CanDelete",query={ParentId:item.Id,Fields:fields};"BoxSet"!==item.Type&&(query.SortBy="SortName");var promise,userId=Dashboard.getCurrentUserId();"Series"==item.Type?promise=ApiClient.getSeasons(item.Id,{userId:userId,Fields:fields}):"Season"==item.Type?(promise=ApiClient.getEpisodes(item.SeriesId,{seasonId:item.Id,userId:userId,Fields:fields}),_childrenItemsFunction=getEpisodesFunction(item.SeriesId,{seasonId:item.Id,userId:userId,Fields:fields})):"Episode"==item.Type&&item.SeriesId&&item.SeasonId?(promise=ApiClient.getEpisodes(item.SeriesId,{seasonId:item.SeasonId,userId:userId,Fields:fields}),_childrenItemsFunction=getEpisodesFunction(item.SeriesId,{seasonId:item.SeasonId,userId:userId,Fields:fields})):"MusicAlbum"==item.Type?_childrenItemsFunction=getAlbumSongsFunction(query):"MusicArtist"==item.Type&&(query.SortBy="ProductionYear,SortName"),promise=promise||ApiClient.getItems(Dashboard.getCurrentUserId(),query),promise.then(function(result){var html="",scrollX=!1,isList=!1,scrollClass="hiddenScrollX",childrenItemsContainer=page.querySelector(".childrenItemsContainer");if("MusicAlbum"==item.Type)html=listView.getListViewHtml({items:result.Items,smallIcon:!0,showIndex:!0,index:"disc",showIndexNumber:!0,playFromHere:!0,action:"playallfromhere",image:!1,artist:"auto",containerAlbumArtist:item.AlbumArtist,addToListButton:!0}),isList=!0;else if("Series"==item.Type)scrollX=enableScrollX(),html=cardBuilder.getCardsHtml({items:result.Items,shape:getPortraitShape(),showTitle:!0,centerText:!0,lazy:!0,overlayPlayButton:!0,allowBottomPadding:!scrollX});else if("Season"==item.Type||"Episode"==item.Type){if("Episode"===item.Type&&childrenItemsContainer.classList.add("darkScroller"),scrollX="Episode"==item.Type,browser.touch||(scrollClass="smoothScrollX"),result.Items.length<2&&"Episode"===item.Type)return;html=cardBuilder.getCardsHtml({items:result.Items,shape:getThumbShape(scrollX),showTitle:!0,displayAsSpecial:"Season"==item.Type&&item.IndexNumber,playFromHere:!0,overlayText:!0,lazy:!0,showDetailsMenu:!0,overlayPlayButton:!0,allowBottomPadding:!scrollX,includeParentInfoInTitle:!1})}else"GameSystem"==item.Type&&(html=cardBuilder.getCardsHtml({items:result.Items,shape:"auto",showTitle:!0,centerText:!0,lazy:!0,showDetailsMenu:!0}));if("BoxSet"!==item.Type&&page.querySelector("#childrenCollapsible").classList.remove("hide"),scrollX?(childrenItemsContainer.classList.add(scrollClass),childrenItemsContainer.classList.remove("vertical-wrap"),childrenItemsContainer.classList.remove("vertical-list")):(childrenItemsContainer.classList.remove("hiddenScrollX"),childrenItemsContainer.classList.remove("smoothScrollX"),isList?(childrenItemsContainer.classList.add("vertical-list"),childrenItemsContainer.classList.remove("vertical-wrap")):(childrenItemsContainer.classList.add("vertical-wrap"),childrenItemsContainer.classList.remove("vertical-list"))),childrenItemsContainer.innerHTML=html,imageLoader.lazyChildren(childrenItemsContainer),"BoxSet"==item.Type){var collectionItemTypes=[{name:globalize.translate("HeaderVideos"),mediaType:"Video"},{name:globalize.translate("HeaderSeries"),type:"Series"},{name:globalize.translate("HeaderAlbums"),type:"MusicAlbum"},{name:globalize.translate("HeaderGames"),type:"Game"},{name:globalize.translate("HeaderBooks"),type:"Book"}];renderCollectionItems(page,item,collectionItemTypes,result.Items)}else if("Episode"===item.Type){var card=childrenItemsContainer.querySelector('.card[data-id="'+item.Id+'"]');card&&scrollHelper.toStart(childrenItemsContainer,card.previousSibling||card,!0)}}),"Season"==item.Type?page.querySelector("#childrenTitle").innerHTML=globalize.translate("HeaderEpisodes"):"Episode"==item.Type?page.querySelector("#childrenTitle").innerHTML=globalize.translate("MoreFromValue",item.SeasonName):"Series"==item.Type?page.querySelector("#childrenTitle").innerHTML=globalize.translate("HeaderSeasons"):"MusicAlbum"==item.Type?page.querySelector("#childrenTitle").innerHTML=globalize.translate("HeaderTracks"):"GameSystem"==item.Type?page.querySelector("#childrenTitle").innerHTML=globalize.translate("HeaderGames"):page.querySelector("#childrenTitle").innerHTML=globalize.translate("HeaderItems"),"MusicAlbum"==item.Type?page.querySelector(".childrenSectionHeader",page).classList.add("hide"):page.querySelector(".childrenSectionHeader",page).classList.remove("hide")}function renderItemsByName(page,item,user){require("scripts/itembynamedetailpage".split(","),function(){window.ItemsByName.renderItems(page,item)})}function renderPlaylistItems(page,item,user){require("scripts/playlistedit".split(","),function(){PlaylistViewer.render(page,item)})}function renderChannelGuide(page,item,user){require("scripts/livetvchannel,scripts/livetvcomponents,livetvcss".split(","),function(liveTvChannelPage){liveTvChannelPage.renderPrograms(page,item.Id)})}function renderSeriesSchedule(page,item,user){}function inferContext(item){return"Movie"==item.Type||"BoxSet"==item.Type?"movies":"Series"==item.Type||"Season"==item.Type||"Episode"==item.Type?"tvshows":"Game"==item.Type||"GameSystem"==item.Type?"games":"Game"==item.Type||"GameSystem"==item.Type?"games":"MusicArtist"==item.Type||"MusicAlbum"==item.Type?"music":null}function renderStudios(elem,item,isStatic){var context=inferContext(item);if(item.Studios&&item.Studios.length&&"Series"!=item.Type,1)elem.classList.add("hide");else{for(var html="",i=0,length=item.Studios.length;i0&&(html+="  /  "),isStatic)html+=item.Studios[i].Name;else{item.Studios[i].Type="Studio";var href=embyRouter.getRouteUrl(item.Studios[0],{context:context});html+=''+item.Studios[i].Name+""}var translationKey=item.Studios.length>1?"ValueStudios":"ValueStudio";html=globalize.translate(translationKey,html),elem.innerHTML=html,elem.classList.remove("hide")}}function renderGenres(elem,item,limit,isStatic){var context=inferContext(item),html="",genres=item.GenreItems;genres||(genres=(item.Genres||[]).map(function(name){return{Name:name}})||[]);for(var i=0,length=genres.length;i=limit);i++)if(i>0&&(html+=''),isStatic)html+=genres[i].Name;else{var type;switch(context){case"tvshows":type="Series";break;case"games":type="Game";break;case"music":type="MusicAlbum";break;default:type="Movie"}var param,paramValue;genres[i].Id?(param="genreId",paramValue=genres[i].Id):(param="Audio"==item.Type||"MusicArtist"==item.Type||"MusicAlbum"==item.Type||"MusicVideo"==item.Type?"musicgenre":"genre","Game"==item.MediaType&&(param="gamegenre"),paramValue=ApiClient.encodeName(genres[i].Name));var url="secondaryitems.html?type="+type+"&"+param+"="+paramValue;html+=''+genres[i].Name+""}elem.innerHTML=html}function filterItemsByCollectionItemType(items,typeInfo){return items.filter(function(item){return typeInfo.mediaType?item.MediaType==typeInfo.mediaType:item.Type==typeInfo.type})}function renderCollectionItems(page,parentItem,types,items){page.querySelector(".collectionItems").innerHTML="";var i,length;for(i=0,length=types.length;i0; +}).length});otherTypeItems.length&&renderCollectionItemType(page,parentItem,otherType,otherTypeItems),items.length||renderCollectionItemType(page,parentItem,{name:globalize.translate("HeaderItems")},items)}function renderCollectionItemType(page,parentItem,type,items){var html="";html+='
',html+='
',html+='

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

",html+='',html+="
",html+='
';var shape="MusicAlbum"==type.type?getSquareShape(!1):getPortraitShape(!1);html+=cardBuilder.getCardsHtml({items:items,shape:shape,showTitle:!0,centerText:!0,lazy:!0,showDetailsMenu:!0,overlayMoreButton:!0,showAddToCollection:!1,showRemoveFromCollection:!0,collectionId:parentItem.Id}),html+="
",html+="
";var collectionItems=page.querySelector(".collectionItems");collectionItems.insertAdjacentHTML("beforeend",html),imageLoader.lazyChildren(collectionItems),collectionItems.querySelector(".btnAddToCollection").addEventListener("click",function(){require(["alert"],function(alert){alert({text:globalize.translate("AddItemToCollectionHelp"),html:globalize.translate("AddItemToCollectionHelp")+'

'+globalize.translate("ButtonLearnMore")+""})})})}function renderCriticReviews(page,item,limit){if("Movie"!=item.Type&&"Trailer"!=item.Type&&"MusicVideo"!=item.Type)return void page.querySelector("#criticReviewsCollapsible").classList.add("hide");var options={};limit&&(options.limit=limit),ApiClient.getCriticReviews(item.Id,options).then(function(result){result.TotalRecordCount?(page.querySelector("#criticReviewsCollapsible").classList.remove("hide"),renderCriticReviewsContent(page,result,limit)):page.querySelector("#criticReviewsCollapsible").classList.add("hide")})}function renderCriticReviewsContent(page,result,limit){for(var html="",reviews=result.Items,i=0,length=reviews.length;i',html+='
',null!=review.Score||null!=review.Likes&&(html+=review.Likes?"
":"
"),html+='
',html+='

'+review.Caption+"

";var vals=[];if(review.ReviewerName&&vals.push(review.ReviewerName),review.Publisher&&vals.push(review.Publisher),html+='
'+vals.join(", ")+".",review.Date)try{var date=datetime.toLocaleDateString(datetime.parseISO8601Date(review.Date,!0));html+=''+date+""}catch(error){}html+="
",review.Url&&(html+='"),html+="
",html+="
",html+="
"}limit&&result.TotalRecordCount>limit&&(html+='

");var criticReviewsContent=page.querySelector("#criticReviewsContent");criticReviewsContent.innerHTML=html,enableScrollX()?criticReviewsContent.classList.add("hiddenScrollX"):criticReviewsContent.classList.remove("hiddenScrollX")}function renderThemeMedia(page,item){"SeriesTimer"!==item.Type&&"Timer"!==item.Type&&"Genre"!==item.Type&&"MusicGenre"!==item.Type&&"GameGenre"!==item.Type&&"Studio"!==item.Type&&"Person"!==item.Type&&ApiClient.getThemeMedia(Dashboard.getCurrentUserId(),item.Id,!0).then(function(result){var themeSongs=result.ThemeSongsResult.OwnerId==item.Id?result.ThemeSongsResult.Items:[],themeVideos=result.ThemeVideosResult.OwnerId==item.Id?result.ThemeVideosResult.Items:[];renderThemeSongs(page,themeSongs),renderThemeVideos(page,themeVideos)})}function renderThemeSongs(page,items){if(items.length){page.querySelector("#themeSongsCollapsible").classList.remove("hide");var html=listView.getListViewHtml({items:items});page.querySelector("#themeSongsContent").innerHTML=html}else page.querySelector("#themeSongsCollapsible").classList.add("hide")}function renderThemeVideos(page,items,user){if(items.length){page.querySelector("#themeVideosCollapsible").classList.remove("hide");var themeVideosContent=page.querySelector("#themeVideosContent");themeVideosContent.innerHTML=getVideosHtml(items,user),imageLoader.lazyChildren(themeVideosContent)}else page.querySelector("#themeVideosCollapsible").classList.add("hide")}function renderMusicVideos(page,item,user){ApiClient.getItems(user.Id,{SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"MusicVideo",Recursive:!0,Fields:"DateCreated,CanDelete",AlbumIds:item.Id}).then(function(result){if(result.Items.length){page.querySelector("#musicVideosCollapsible").classList.remove("hide");var musicVideosContent=page.querySelector(".musicVideosContent");musicVideosContent.innerHTML=getVideosHtml(result.Items,user),imageLoader.lazyChildren(musicVideosContent)}else page.querySelector("#musicVideosCollapsible").classList.add("hide")})}function renderAdditionalParts(page,item,user){ApiClient.getAdditionalVideoParts(user.Id,item.Id).then(function(result){if(result.Items.length){page.querySelector("#additionalPartsCollapsible").classList.remove("hide");var additionalPartsContent=page.querySelector("#additionalPartsContent");additionalPartsContent.innerHTML=getVideosHtml(result.Items,user),imageLoader.lazyChildren(additionalPartsContent)}else page.querySelector("#additionalPartsCollapsible").classList.add("hide")})}function renderScenes(page,item){var chapters=item.Chapters||[];if(chapters.length&&!chapters[0].ImageTag&&(chapters=[]),chapters.length){page.querySelector("#scenesCollapsible").classList.remove("hide");var scenesContent=page.querySelector("#scenesContent");enableScrollX()?scenesContent.classList.add("smoothScrollX"):scenesContent.classList.add("vertical-wrap"),require(["chaptercardbuilder"],function(chaptercardbuilder){chaptercardbuilder.buildChapterCards(item,chapters,{itemsContainer:scenesContent,width:400,backdropShape:getThumbShape(),squareShape:getSquareShape()})})}else page.querySelector("#scenesCollapsible").classList.add("hide")}function renderMediaSources(page,user,item){var html=item.MediaSources.map(function(v){return getMediaSourceHtml(user,item,v)}).join('
');item.MediaSources.length>1&&(html="
"+html);var mediaInfoContent=page.querySelector("#mediaInfoContent");mediaInfoContent.innerHTML=html}function getMediaSourceHtml(user,item,version){var html="";version.Name&&item.MediaSources.length>1&&(html+='
'+version.Name+"

");for(var i=0,length=version.MediaStreams.length;i';var displayType=globalize.translate("MediaInfoStreamType"+stream.Type);html+='

'+displayType+"

";var attributes=[];stream.Language&&"Video"!=stream.Type&&attributes.push(createAttribute(globalize.translate("MediaInfoLanguage"),stream.Language)),stream.Codec&&attributes.push(createAttribute(globalize.translate("MediaInfoCodec"),stream.Codec.toUpperCase())),stream.CodecTag&&attributes.push(createAttribute(globalize.translate("MediaInfoCodecTag"),stream.CodecTag)),null!=stream.IsAVC&&attributes.push(createAttribute("AVC",stream.IsAVC?"Yes":"No")),stream.Profile&&attributes.push(createAttribute(globalize.translate("MediaInfoProfile"),stream.Profile)),stream.Level&&attributes.push(createAttribute(globalize.translate("MediaInfoLevel"),stream.Level)),(stream.Width||stream.Height)&&attributes.push(createAttribute(globalize.translate("MediaInfoResolution"),stream.Width+"x"+stream.Height)),stream.AspectRatio&&"mjpeg"!=stream.Codec&&attributes.push(createAttribute(globalize.translate("MediaInfoAspectRatio"),stream.AspectRatio)),"Video"==stream.Type&&(null!=stream.IsAnamorphic&&attributes.push(createAttribute(globalize.translate("MediaInfoAnamorphic"),stream.IsAnamorphic?"Yes":"No")),attributes.push(createAttribute(globalize.translate("MediaInfoInterlaced"),stream.IsInterlaced?"Yes":"No"))),(stream.AverageFrameRate||stream.RealFrameRate)&&attributes.push(createAttribute(globalize.translate("MediaInfoFramerate"),stream.AverageFrameRate||stream.RealFrameRate)),stream.ChannelLayout&&attributes.push(createAttribute(globalize.translate("MediaInfoLayout"),stream.ChannelLayout)),stream.Channels&&attributes.push(createAttribute(globalize.translate("MediaInfoChannels"),stream.Channels+" ch")),stream.BitRate&&"mjpeg"!=stream.Codec&&attributes.push(createAttribute(globalize.translate("MediaInfoBitrate"),parseInt(stream.BitRate/1e3)+" kbps")),stream.SampleRate&&attributes.push(createAttribute(globalize.translate("MediaInfoSampleRate"),stream.SampleRate+" Hz")),stream.BitDepth&&attributes.push(createAttribute(globalize.translate("MediaInfoBitDepth"),stream.BitDepth+" bit")),stream.PixelFormat&&attributes.push(createAttribute(globalize.translate("MediaInfoPixelFormat"),stream.PixelFormat)),stream.RefFrames&&attributes.push(createAttribute(globalize.translate("MediaInfoRefFrames"),stream.RefFrames)),stream.NalLengthSize&&attributes.push(createAttribute("NAL",stream.NalLengthSize)),"Video"!=stream.Type&&attributes.push(createAttribute(globalize.translate("MediaInfoDefault"),stream.IsDefault?"Yes":"No")),"Subtitle"==stream.Type&&(attributes.push(createAttribute(globalize.translate("MediaInfoForced"),stream.IsForced?"Yes":"No")),attributes.push(createAttribute(globalize.translate("MediaInfoExternal"),stream.IsExternal?"Yes":"No"))),"Video"==stream.Type&&version.Timestamp&&attributes.push(createAttribute(globalize.translate("MediaInfoTimestamp"),version.Timestamp)),stream.DisplayTitle&&attributes.push(createAttribute("Title",stream.DisplayTitle)),html+=attributes.join("
"),html+="
"}}if(version.Container&&(html+='
'+globalize.translate("MediaInfoContainer")+''+version.Container+"
"),version.Formats&&version.Formats.length,version.Path&&"Http"!=version.Protocol&&user&&user.Policy.IsAdministrator&&(html+='
'+globalize.translate("MediaInfoPath")+''+version.Path+"
"),version.Size){var size=(version.Size/1048576).toFixed(0);html+='
'+globalize.translate("MediaInfoSize")+''+size+" MB
"}return html}function createAttribute(label,value){return''+label+''+value+""}function getVideosHtml(items,user,limit,moreButtonClass){var html=cardBuilder.getCardsHtml({items:items,shape:"auto",showTitle:!0,action:"play",overlayText:!0,showRuntime:!0});return limit&&items.length>limit&&(html+='

"),html}function renderSpecials(page,item,user,limit){ApiClient.getSpecialFeatures(user.Id,item.Id).then(function(specials){var specialsContent=page.querySelector("#specialsContent");specialsContent.innerHTML=getVideosHtml(specials,user,limit,"moreSpecials"),imageLoader.lazyChildren(specialsContent)})}function renderCast(page,item,context,limit,isStatic){var people=item.People||[],castContent=page.querySelector("#castContent");enableScrollX()?(castContent.classList.add("smoothScrollX"),limit=32):castContent.classList.add("vertical-wrap");var limitExceeded=limit&&people.length>limit;limitExceeded&&(people=people.slice(0),people.length=Math.min(limit,people.length)),require(["peoplecardbuilder"],function(peoplecardbuilder){peoplecardbuilder.buildPeopleCards(people,{itemsContainer:castContent,coverImage:!0,serverId:item.ServerId,width:160,shape:getPortraitShape()})});var morePeopleButton=page.querySelector(".morePeople");morePeopleButton&&(limitExceeded&&!enableScrollX()?morePeopleButton.classList.remove("hide"):morePeopleButton.classList.add("hide"))}function play(startPosition){playbackManager.play({items:[currentItem],startPositionTicks:startPosition})}function playTrailer(page){playbackManager.playTrailers(currentItem)}function showPlayMenu(item,target){require(["playMenu"],function(playMenu){playMenu.show({item:item,positionTo:target})})}function playCurrentItem(button,mode){var item=currentItem;return"Program"===item.Type?void ApiClient.getLiveTvChannel(item.ChannelId,Dashboard.getCurrentUserId()).then(function(channel){playbackManager.play({items:[channel]})}):void("playmenu"===mode?showPlayMenu(item,button):playbackManager.play({items:[item],startPositionTicks:item.UserData&&"resume"===mode?item.UserData.PlaybackPositionTicks:0}))}function reload(instance,page,params){beginReload(instance,page,params),finishReload(instance,page,params)}function beginReload(instance,page,params){loading.show(),instance.promises=[getPromise(params),Dashboard.getCurrentUser()]}function finishReload(instance,page,params){var promises=instance.promises;promises&&(instance.promises=null,Promise.all(promises).then(function(responses){var item=responses[0],user=responses[1];reloadFromItem(instance,page,params,item,user)}))}function splitVersions(instance,page,params){require(["confirm"],function(confirm){confirm("Are you sure you wish to split the media sources into separate items?","Split Media Apart").then(function(){loading.show(),ApiClient.ajax({type:"DELETE",url:ApiClient.getUrl("Videos/"+params.id+"/AlternateSources")}).then(function(){loading.hide(),reload(instance,page,params)})})})}function itemDetailPage(){var self=this;self.play=play,self.setInitialCollapsibleState=setInitialCollapsibleState,self.renderDetails=renderDetails,self.renderCriticReviews=renderCriticReviews,self.renderCast=renderCast,self.renderScenes=renderScenes,self.renderMediaSources=renderMediaSources}function onPlayClick(){var mode=this.getAttribute("data-mode");playCurrentItem(this,mode)}function onInstantMixClick(){playbackManager.instantMix(currentItem)}function onShuffleClick(){playbackManager.shuffle(currentItem)}function onDeleteClick(){require(["deleteHelper"],function(deleteHelper){deleteHelper.deleteItem({item:currentItem,navigate:!0})})}function onCancelSeriesTimerClick(){require(["recordingHelper"],function(recordingHelper){recordingHelper.cancelSeriesTimerWithConfirmation(currentItem.Id,currentItem.ServerId).then(function(){Dashboard.navigate("livetv.html")})})}function bindAll(view,selector,eventName,fn){var i,length,elems=view.querySelectorAll(selector);for(i=0,length=elems.length;i'+artist.Name+"")}return html=html.join(" / ")},getListItemInfo:function(elem){for(var elemWithAttributes=elem;!elemWithAttributes.getAttribute("data-id");)elemWithAttributes=elemWithAttributes.parentNode;var itemId=elemWithAttributes.getAttribute("data-id"),index=elemWithAttributes.getAttribute("data-index"),mediaType=elemWithAttributes.getAttribute("data-mediatype");return{id:itemId,index:index,mediaType:mediaType,context:elemWithAttributes.getAttribute("data-context")}},renderName:function(item,nameElem,linkToElement,context){require(["itemHelper"],function(itemHelper){var name=itemHelper.getDisplayName(item,{includeParentInfo:!1});linkToElement?nameElem.innerHTML=''+name+"":nameElem.innerHTML=name})},renderParentName:function(item,parentNameElem,context){var html=[],contextParam=context?"&context="+context:"";item.AlbumArtists?html.push(libraryBrowser.getArtistLinksHtml(item.AlbumArtists,"detailPageParentLink")):item.ArtistItems&&item.ArtistItems.length&&"MusicVideo"==item.Type?html.push(libraryBrowser.getArtistLinksHtml(item.ArtistItems,"detailPageParentLink")):item.SeriesName&&"Episode"==item.Type&&html.push(''+item.SeriesName+""),item.SeriesName&&"Season"==item.Type?html.push(''+item.SeriesName+""):null!=item.ParentIndexNumber&&"Episode"==item.Type?html.push(''+item.SeasonName+""):item.Album&&"Audio"==item.Type&&(item.AlbumId||item.ParentId)?html.push(''+item.Album+""):item.Album&&"MusicVideo"==item.Type&&item.AlbumId?html.push(''+item.Album+""):item.Album?html.push(item.Album):(item.IsSeries||item.EpisodeTitle)&&html.push(item.Name),html.length?(parentNameElem.classList.remove("hide"),parentNameElem.innerHTML=html.join(" - ")):parentNameElem.classList.add("hide")},showLayoutMenu:function(button,currentLayout,views){var dispatchEvent=!0;views||(dispatchEvent=!1,views=button.getAttribute("data-layouts"),views=views?views.split(","):["List","Poster","PosterCard","Thumb","ThumbCard"]);var menuItems=views.map(function(v){return{name:Globalize.translate("Option"+v),id:v,selected:currentLayout==v}});require(["actionsheet"],function(actionsheet){actionsheet.show({items:menuItems,positionTo:button,callback:function(id){button.dispatchEvent(new CustomEvent("layoutchange",{detail:{viewStyle:id},bubbles:!0,cancelable:!1})),dispatchEvent||window.$&&$(button).trigger("layoutchange",[id])}})})},getQueryPagingHtml:function(options){var startIndex=options.startIndex,limit=options.limit,totalRecordCount=options.totalRecordCount;if(limit&&options.updatePageSizeSetting!==!1)try{appSettings.set(options.pageSizeKey||pageSizeKey,limit)}catch(e){}var html="",recordsEnd=Math.min(startIndex+limit,totalRecordCount),showControls=limit',showControls){html+='';var startAtDisplay=totalRecordCount?startIndex+1:0;html+=startAtDisplay+"-"+recordsEnd+" of "+totalRecordCount,html+=""}return(showControls||options.viewButton||options.filterButton||options.sortButton||options.addLayoutButton)&&(html+='
',showControls&&(html+='',html+=''),options.addLayoutButton&&(html+=''),options.sortButton&&(html+=''),options.filterButton&&(html+=''),html+="
"),html+="
"},showSortMenu:function(options){require(["dialogHelper","emby-radio"],function(dialogHelper){function onSortByChange(){var newValue=this.value;if(this.checked){var changed=options.query.SortBy!=newValue;options.query.SortBy=newValue.replace("_",","),options.query.StartIndex=0,options.callback&&changed&&options.callback()}}function onSortOrderChange(){var newValue=this.value;if(this.checked){var changed=options.query.SortOrder!=newValue;options.query.SortOrder=newValue,options.query.StartIndex=0,options.callback&&changed&&options.callback()}}var dlg=dialogHelper.createDialog({removeOnClose:!0,modal:!1,entryAnimationDuration:160,exitAnimationDuration:200});dlg.classList.add("ui-body-a"),dlg.classList.add("background-theme-a"),dlg.classList.add("formDialog");var html="";html+='
',html+='

',html+=Globalize.translate("HeaderSortBy"),html+="

";var i,length,isChecked;for(html+="
",i=0,length=options.items.length;i"+option.name+""}html+="
",html+='

',html+=Globalize.translate("HeaderSortOrder"),html+="

",html+="
",isChecked="Ascending"==options.query.SortOrder?" checked":"",html+='",isChecked="Descending"==options.query.SortOrder?" checked":"",html+='",html+="
",html+="
",dlg.innerHTML=html,dialogHelper.open(dlg);var sortBys=dlg.querySelectorAll(".menuSortBy");for(i=0,length=sortBys.length;i',editable&&(html+=""),detectRatio&&item.PrimaryImageAspectRatio&&(item.PrimaryImageAspectRatio>=1.48?shape="thumb":item.PrimaryImageAspectRatio>=.85&&item.PrimaryImageAspectRatio<=1.34&&(shape="square")),html+="",editable&&(html+="");var progressHtml=item.IsFolder||!item.UserData?"":indicators.getProgressBarHtml(item);if(html+='
',progressHtml&&(html+=progressHtml),html+="
",html+="
",elem.innerHTML=html,"thumb"==shape?(elem.classList.add("thumbDetailImageContainer"),elem.classList.remove("portraitDetailImageContainer"),elem.classList.remove("squareDetailImageContainer")):"square"==shape?(elem.classList.remove("thumbDetailImageContainer"),elem.classList.remove("portraitDetailImageContainer"),elem.classList.add("squareDetailImageContainer")):(elem.classList.remove("thumbDetailImageContainer"),elem.classList.add("portraitDetailImageContainer"),elem.classList.remove("squareDetailImageContainer")),url){var img=elem.querySelector("img");img.onload=function(){img.src.indexOf("empty.png")==-1&&img.classList.add("loaded")},imageLoader.lazyImage(img,url)}},renderDetailPageBackdrop:function(page,item,imageLoader,indicators){var imgUrl,screenWidth=screen.availWidth,hasbackdrop=!1,itemBackdropElement=page.querySelector("#itemBackdrop"),usePrimaryImage="Video"===item.MediaType&&"Movie"!==item.Type&&"Trailer"!==item.Type||item.MediaType&&"Video"!==item.MediaType,useThumbImage="Program"===item.Type;return useThumbImage&&item.ImageTags&&item.ImageTags.Thumb?(imgUrl=ApiClient.getScaledImageUrl(item.Id,{type:"Thumb",index:0,maxWidth:screenWidth,tag:item.ImageTags.Thumb}),itemBackdropElement.classList.remove("noBackdrop"),imageLoader.lazyImage(itemBackdropElement,imgUrl,!1),hasbackdrop=!0):usePrimaryImage&&item.ImageTags&&item.ImageTags.Primary?(imgUrl=ApiClient.getScaledImageUrl(item.Id,{type:"Primary",index:0,maxWidth:screenWidth,tag:item.ImageTags.Primary}),itemBackdropElement.classList.remove("noBackdrop"),imageLoader.lazyImage(itemBackdropElement,imgUrl,!1),hasbackdrop=!0):item.BackdropImageTags&&item.BackdropImageTags.length?(imgUrl=ApiClient.getScaledImageUrl(item.Id,{type:"Backdrop",index:0,maxWidth:screenWidth,tag:item.BackdropImageTags[0]}),itemBackdropElement.classList.remove("noBackdrop"),imageLoader.lazyImage(itemBackdropElement,imgUrl,!1),hasbackdrop=!0):item.ParentBackdropItemId&&item.ParentBackdropImageTags&&item.ParentBackdropImageTags.length?(imgUrl=ApiClient.getScaledImageUrl(item.ParentBackdropItemId,{type:"Backdrop",index:0,tag:item.ParentBackdropImageTags[0],maxWidth:screenWidth}),itemBackdropElement.classList.remove("noBackdrop"),imageLoader.lazyImage(itemBackdropElement,imgUrl,!1),hasbackdrop=!0):item.ImageTags&&item.ImageTags.Thumb?(imgUrl=ApiClient.getScaledImageUrl(item.Id,{type:"Thumb",index:0,maxWidth:screenWidth,tag:item.ImageTags.Thumb}),itemBackdropElement.classList.remove("noBackdrop"),imageLoader.lazyImage(itemBackdropElement,imgUrl,!1),hasbackdrop=!0):(itemBackdropElement.classList.add("noBackdrop"),itemBackdropElement.style.backgroundImage=""),hasbackdrop}};return window.LibraryBrowser=libraryBrowser,libraryBrowser}); \ No newline at end of file +define(["appSettings","dom","browser","datetime","embyRouter","events","scrollStyles"],function(appSettings,dom,browser,datetime,embyRouter,events){"use strict";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"})}var pageSizeKey="pagesize_v4",libraryBrowser={getDefaultPageSize:function(key,defaultValue){return 100},getSavedQueryKey:function(modifier){return window.location.href.split("#")[0]+(modifier||"")},loadSavedQueryValues:function(key,query){var values=appSettings.get(key+"_"+Dashboard.getCurrentUserId());return values?(values=JSON.parse(values),Object.assign(query,values)):query},saveQueryValues:function(key,query){var values={};query.SortBy&&(values.SortBy=query.SortBy),query.SortOrder&&(values.SortOrder=query.SortOrder);try{appSettings.set(key+"_"+Dashboard.getCurrentUserId(),JSON.stringify(values))}catch(e){}},saveViewSetting:function(key,value){try{appSettings.set(key+"_"+Dashboard.getCurrentUserId()+"_view",value)}catch(e){}},getSavedView:function(key){var val=appSettings.get(key+"_"+Dashboard.getCurrentUserId()+"_view");return val},getSavedViewSetting:function(key){return new Promise(function(resolve,reject){var val=libraryBrowser.getSavedView(key);resolve(val)})},allowSwipe:function(target){function allowSwipeOn(elem){return!dom.parentWithTag(elem,"input")&&(!elem.classList||!elem.classList.contains("hiddenScrollX")&&!elem.classList.contains("smoothScrollX")&&!elem.classList.contains("animatedScrollX"))}for(var parent=target;null!=parent;){if(!allowSwipeOn(parent))return!1;parent=parent.parentNode}return!0},configureSwipeTabs:function(ownerpage,tabs){if(browser.touch){var onSwipeLeft=(ownerpage.querySelectorAll(".pageTabContent").length,function(e,target){libraryBrowser.allowSwipe(target)&&ownerpage.contains(target)&&tabs.selectNext()}),onSwipeRight=function(e,target){libraryBrowser.allowSwipe(target)&&ownerpage.contains(target)&&tabs.selectPrevious()};require(["touchHelper"],function(TouchHelper){var touchHelper=new TouchHelper(ownerpage.parentNode.parentNode);events.on(touchHelper,"swipeleft",onSwipeLeft),events.on(touchHelper,"swiperight",onSwipeRight),ownerpage.addEventListener("viewdestroy",function(){touchHelper.destroy()})})}},configurePaperLibraryTabs:function(ownerpage,tabs,panels,animateTabs,enableSwipe){enableSwipe!==!1&&libraryBrowser.configureSwipeTabs(ownerpage,tabs),tabs.addEventListener("beforetabchange",function(e){null!=e.detail.previousIndex&&panels[e.detail.previousIndex].classList.remove("is-active");var newPanel=panels[e.detail.selectedTabIndex];null!=e.detail.previousIndex&&e.detail.previousIndex!=e.detail.selectedTabIndex&&newPanel.animate&&(animateTabs||[]).indexOf(e.detail.selectedTabIndex)!=-1&&fadeInRight(newPanel),newPanel.classList.add("is-active")})},getArtistLinksHtml:function(artists,cssClass){var html=[];cssClass=cssClass?cssClass+" button-link":"button-link";for(var i=0,length=artists.length;i'+artist.Name+"")}return html=html.join(" / ")},getListItemInfo:function(elem){for(var elemWithAttributes=elem;!elemWithAttributes.getAttribute("data-id");)elemWithAttributes=elemWithAttributes.parentNode;var itemId=elemWithAttributes.getAttribute("data-id"),index=elemWithAttributes.getAttribute("data-index"),mediaType=elemWithAttributes.getAttribute("data-mediatype");return{id:itemId,index:index,mediaType:mediaType,context:elemWithAttributes.getAttribute("data-context")}},renderName:function(item,nameElem,linkToElement,context){require(["itemHelper"],function(itemHelper){var name=itemHelper.getDisplayName(item,{includeParentInfo:!1});linkToElement?nameElem.innerHTML=''+name+"":nameElem.innerHTML=name})},renderParentName:function(item,parentNameElem,context){var html=[],contextParam=context?"&context="+context:"";item.AlbumArtists?html.push(libraryBrowser.getArtistLinksHtml(item.AlbumArtists,"detailPageParentLink")):item.ArtistItems&&item.ArtistItems.length&&"MusicVideo"==item.Type?html.push(libraryBrowser.getArtistLinksHtml(item.ArtistItems,"detailPageParentLink")):item.SeriesName&&"Episode"==item.Type&&html.push(''+item.SeriesName+""),item.SeriesName&&"Season"==item.Type?html.push(''+item.SeriesName+""):null!=item.ParentIndexNumber&&"Episode"==item.Type?html.push(''+item.SeasonName+""):item.Album&&"Audio"==item.Type&&(item.AlbumId||item.ParentId)?html.push(''+item.Album+""):item.Album&&"MusicVideo"==item.Type&&item.AlbumId?html.push(''+item.Album+""):item.Album?html.push(item.Album):(item.IsSeries||item.EpisodeTitle)&&html.push(item.Name),html.length?(parentNameElem.classList.remove("hide"),parentNameElem.innerHTML=html.join(" - ")):parentNameElem.classList.add("hide")},showLayoutMenu:function(button,currentLayout,views){var dispatchEvent=!0;views||(dispatchEvent=!1,views=button.getAttribute("data-layouts"),views=views?views.split(","):["List","Poster","PosterCard","Thumb","ThumbCard"]);var menuItems=views.map(function(v){return{name:Globalize.translate("Option"+v),id:v,selected:currentLayout==v}});require(["actionsheet"],function(actionsheet){actionsheet.show({items:menuItems,positionTo:button,callback:function(id){button.dispatchEvent(new CustomEvent("layoutchange",{detail:{viewStyle:id},bubbles:!0,cancelable:!1})),dispatchEvent||window.$&&$(button).trigger("layoutchange",[id])}})})},getQueryPagingHtml:function(options){var startIndex=options.startIndex,limit=options.limit,totalRecordCount=options.totalRecordCount;if(limit&&options.updatePageSizeSetting!==!1)try{appSettings.set(options.pageSizeKey||pageSizeKey,limit)}catch(e){}var html="",recordsEnd=Math.min(startIndex+limit,totalRecordCount),showControls=limit',showControls){html+='';var startAtDisplay=totalRecordCount?startIndex+1:0;html+=startAtDisplay+"-"+recordsEnd+" of "+totalRecordCount,html+=""}return(showControls||options.viewButton||options.filterButton||options.sortButton||options.addLayoutButton)&&(html+='
',showControls&&(html+='',html+=''),options.addLayoutButton&&(html+=''),options.sortButton&&(html+=''),options.filterButton&&(html+=''),html+="
"),html+="
"},showSortMenu:function(options){require(["dialogHelper","emby-radio"],function(dialogHelper){function onSortByChange(){var newValue=this.value;if(this.checked){var changed=options.query.SortBy!=newValue;options.query.SortBy=newValue.replace("_",","),options.query.StartIndex=0,options.callback&&changed&&options.callback()}}function onSortOrderChange(){var newValue=this.value;if(this.checked){var changed=options.query.SortOrder!=newValue;options.query.SortOrder=newValue,options.query.StartIndex=0,options.callback&&changed&&options.callback()}}var dlg=dialogHelper.createDialog({removeOnClose:!0,modal:!1,entryAnimationDuration:160,exitAnimationDuration:200});dlg.classList.add("ui-body-a"),dlg.classList.add("background-theme-a"),dlg.classList.add("formDialog");var html="";html+='
',html+='

',html+=Globalize.translate("HeaderSortBy"),html+="

";var i,length,isChecked;for(html+="
",i=0,length=options.items.length;i"+option.name+""}html+="
",html+='

',html+=Globalize.translate("HeaderSortOrder"),html+="

",html+="
",isChecked="Ascending"==options.query.SortOrder?" checked":"",html+='",isChecked="Descending"==options.query.SortOrder?" checked":"",html+='",html+="
",html+="
",dlg.innerHTML=html,dialogHelper.open(dlg);var sortBys=dlg.querySelectorAll(".menuSortBy");for(i=0,length=sortBys.length;i',editable&&(html+=""),detectRatio&&item.PrimaryImageAspectRatio&&(item.PrimaryImageAspectRatio>=1.48?shape="thumb":item.PrimaryImageAspectRatio>=.85&&item.PrimaryImageAspectRatio<=1.34&&(shape="square")),html+="",editable&&(html+="");var progressHtml=item.IsFolder||!item.UserData?"":indicators.getProgressBarHtml(item);if(html+='
',progressHtml&&(html+=progressHtml),html+="
",html+="
",elem.innerHTML=html,"thumb"==shape?(elem.classList.add("thumbDetailImageContainer"),elem.classList.remove("portraitDetailImageContainer"),elem.classList.remove("squareDetailImageContainer")):"square"==shape?(elem.classList.remove("thumbDetailImageContainer"),elem.classList.remove("portraitDetailImageContainer"),elem.classList.add("squareDetailImageContainer")):(elem.classList.remove("thumbDetailImageContainer"),elem.classList.add("portraitDetailImageContainer"),elem.classList.remove("squareDetailImageContainer")),url){var img=elem.querySelector("img");img.onload=function(){img.src.indexOf("empty.png")==-1&&img.classList.add("loaded")},imageLoader.lazyImage(img,url)}},renderDetailPageBackdrop:function(page,item,imageLoader,indicators){var imgUrl,screenWidth=screen.availWidth,hasbackdrop=!1,itemBackdropElement=page.querySelector("#itemBackdrop"),usePrimaryImage="Video"===item.MediaType&&"Movie"!==item.Type&&"Trailer"!==item.Type||item.MediaType&&"Video"!==item.MediaType,useThumbImage="Program"===item.Type;return useThumbImage&&item.ImageTags&&item.ImageTags.Thumb?(imgUrl=ApiClient.getScaledImageUrl(item.Id,{type:"Thumb",index:0,maxWidth:screenWidth,tag:item.ImageTags.Thumb}),itemBackdropElement.classList.remove("noBackdrop"),imageLoader.lazyImage(itemBackdropElement,imgUrl,!1),hasbackdrop=!0):usePrimaryImage&&item.ImageTags&&item.ImageTags.Primary?(imgUrl=ApiClient.getScaledImageUrl(item.Id,{type:"Primary",index:0,maxWidth:screenWidth,tag:item.ImageTags.Primary}),itemBackdropElement.classList.remove("noBackdrop"),imageLoader.lazyImage(itemBackdropElement,imgUrl,!1),hasbackdrop=!0):item.BackdropImageTags&&item.BackdropImageTags.length?(imgUrl=ApiClient.getScaledImageUrl(item.Id,{type:"Backdrop",index:0,maxWidth:screenWidth,tag:item.BackdropImageTags[0]}),itemBackdropElement.classList.remove("noBackdrop"),imageLoader.lazyImage(itemBackdropElement,imgUrl,!1),hasbackdrop=!0):item.ParentBackdropItemId&&item.ParentBackdropImageTags&&item.ParentBackdropImageTags.length?(imgUrl=ApiClient.getScaledImageUrl(item.ParentBackdropItemId,{type:"Backdrop",index:0,tag:item.ParentBackdropImageTags[0],maxWidth:screenWidth}),itemBackdropElement.classList.remove("noBackdrop"),imageLoader.lazyImage(itemBackdropElement,imgUrl,!1),hasbackdrop=!0):item.ImageTags&&item.ImageTags.Thumb?(imgUrl=ApiClient.getScaledImageUrl(item.Id,{type:"Thumb",index:0,maxWidth:screenWidth,tag:item.ImageTags.Thumb}),itemBackdropElement.classList.remove("noBackdrop"),imageLoader.lazyImage(itemBackdropElement,imgUrl,!1),hasbackdrop=!0):(itemBackdropElement.classList.add("noBackdrop"),itemBackdropElement.style.backgroundImage=""),hasbackdrop}};return window.LibraryBrowser=libraryBrowser,libraryBrowser}); \ No newline at end of file diff --git a/dashboard-ui/scripts/librarymenu.js b/dashboard-ui/scripts/librarymenu.js index 93505293da..587ae01125 100644 --- a/dashboard-ui/scripts/librarymenu.js +++ b/dashboard-ui/scripts/librarymenu.js @@ -1 +1 @@ -define(["layoutManager","events","viewManager","libraryBrowser","embyRouter","apphost","playbackManager","browser","paper-icon-button-light","material-icons","scrollStyles","flexStyles"],function(layoutManager,events,viewManager,libraryBrowser,embyRouter,appHost,playbackManager,browser){"use strict";function renderHeader(){var html="";html+='
',html+='
';var backIcon=browser.safari?"chevron_left":"";html+='",html+='',html+='',html+='

',html+="
",html+='
',html+='',html+='',html+='',html+='',html+='',layoutManager.mobile||(html+=''),html+="
",html+="
",html+='
',html+="
",skinHeader.innerHTML=html,btnHome=skinHeader.querySelector(".headerAppsButton"),browser.chrome||skinHeader.classList.add("skinHeader-blurred"),lazyLoadViewMenuBarImages(),bindMenuEvents()}function lazyLoadViewMenuBarImages(){require(["imageLoader"],function(imageLoader){imageLoader.lazyChildren(skinHeader)})}function onBackClick(){embyRouter.back()}function updateUserInHeader(user){var hasImage,headerUserButton=skinHeader.querySelector(".headerUserButton");if(user&&user.name&&user.imageUrl){var userButtonHeight=26,url=user.imageUrl;user.supportsImageParams&&(url+="&height="+Math.round(userButtonHeight*Math.max(window.devicePixelRatio||1,2))),headerUserButton&&(updateHeaderUserButton(headerUserButton,url),hasImage=!0)}headerUserButton&&!hasImage&&updateHeaderUserButton(headerUserButton,null),user&&updateLocalUser(user.localUser),requiresUserRefresh=!1}function updateHeaderUserButton(headerUserButton,src){src?(headerUserButton.classList.add("headerUserButtonRound"),headerUserButton.classList.remove("autoSize"),headerUserButton.innerHTML=''):(headerUserButton.classList.remove("headerUserButtonRound"),headerUserButton.classList.add("autoSize"),headerUserButton.innerHTML='person')}function updateLocalUser(user){var headerSearchButton=skinHeader.querySelector(".headerSearchButton"),btnCast=skinHeader.querySelector(".btnCast"),dashboardEntryHeaderButton=skinHeader.querySelector(".dashboardEntryHeaderButton");user?(btnCast.classList.remove("hide"),headerSearchButton&&headerSearchButton.classList.remove("hide"),dashboardEntryHeaderButton&&(user.Policy.IsAdministrator?dashboardEntryHeaderButton.classList.remove("hide"):dashboardEntryHeaderButton.classList.add("hide"))):(btnCast.classList.add("hide"),headerSearchButton&&headerSearchButton.classList.add("hide"),dashboardEntryHeaderButton&&dashboardEntryHeaderButton.classList.add("hide"))}function showSearch(){Dashboard.navigate("search.html")}function onHeaderUserButtonClick(e){Dashboard.showUserFlyout(e.target)}function onHeaderAppsButtonClick(){Dashboard.navigate("home.html")}function bindMenuEvents(){mainDrawerButton=document.querySelector(".mainDrawerButton"),mainDrawerButton&&mainDrawerButton.addEventListener("click",toggleMainDrawer);var headerBackButton=document.querySelector(".headerBackButton");headerBackButton&&headerBackButton.addEventListener("click",onBackClick);var headerSearchButton=document.querySelector(".headerSearchButton");headerSearchButton&&headerSearchButton.addEventListener("click",showSearch);var headerUserButton=document.querySelector(".headerUserButton");headerUserButton&&headerUserButton.addEventListener("click",onHeaderUserButtonClick);var headerAppsButton=document.querySelector(".headerAppsButton");headerAppsButton&&headerAppsButton.addEventListener("click",onHeaderAppsButtonClick),initHeadRoom(skinHeader),skinHeader.querySelector(".btnNotifications").addEventListener("click",function(){Dashboard.navigate("notificationlist.html")});var btnCast=document.querySelector(".headerButton-btnCast");btnCast&&btnCast.addEventListener("click",onCastButtonClicked)}function onCastButtonClicked(){var btn=this;require(["playerSelectionMenu"],function(playerSelectionMenu){playerSelectionMenu.show(btn)})}function getItemHref(item,context){return embyRouter.getRouteUrl(item,{context:context})}function toggleMainDrawer(){navDrawerInstance.isVisible?closeMainDrawer():openMainDrawer()}function openMainDrawer(){navDrawerInstance.open(),lastOpenTime=(new Date).getTime()}function onMainDrawerOpened(){layoutManager.mobile&&document.body.classList.add("bodyWithPopupOpen")}function closeMainDrawer(){navDrawerInstance.close()}function onMainDrawerSelect(e){navDrawerInstance.isVisible?onMainDrawerOpened():document.body.classList.remove("bodyWithPopupOpen")}function refreshLibraryInfoInDrawer(user,drawer){var html="";html+='
';var homeHref=window.ApiClient?"home.html":"selectserver.html?showuser=1";html+=''+Globalize.translate("ButtonHome")+"",html+='
',html+='
',html+="
";var localUser=user.localUser;localUser&&localUser.Policy.IsAdministrator&&(html+='
',html+='
',html+='
',html+=Globalize.translate("HeaderAdmin"),html+="
",html+=''+Globalize.translate("ButtonManageServer")+"",html+=''+Globalize.translate("MetadataManager")+"",layoutManager.mobile||(html+=''+Globalize.translate("ButtonReports")+""),html+="
"),html+='",navDrawerScrollContainer.innerHTML=html;var lnkManageServer=navDrawerScrollContainer.querySelector(".lnkManageServer");lnkManageServer&&lnkManageServer.addEventListener("click",onManageServerClicked)}function refreshDashboardInfoInDrawer(page,user){currentDrawerType="admin",loadNavDrawer(),navDrawerScrollContainer.querySelector(".adminDrawerLogo")?updateDashboardMenuSelectedItem():createDashboardMenu(page)}function updateDashboardMenuSelectedItem(){for(var links=navDrawerScrollContainer.querySelectorAll(".sidebarLink"),i=0,length=links.length;i',html+=Globalize.translate("HeaderMedia"),html+="
",html+=items.map(function(i){var icon="folder",color="inherit",itemId=i.Id;"channels"==i.CollectionType?itemId="channels":"livetv"==i.CollectionType&&(itemId="livetv"),"photos"==i.CollectionType?(icon="photo_library",color="#009688"):"music"==i.CollectionType||"musicvideos"==i.CollectionType?(icon="library_music",color="#FB8521"):"books"==i.CollectionType?(icon="library_books",color="#1AA1E1"):"playlists"==i.CollectionType?(icon="view_list",color="#795548"):"games"==i.CollectionType?(icon="games",color="#F44336"):"movies"==i.CollectionType?(icon="video_library",color="#CE5043"):"channels"==i.CollectionType||"Channel"==i.Type?(icon="videocam",color="#E91E63"):"tvshows"==i.CollectionType?(icon="tv",color="#4CAF50"):"livetv"==i.CollectionType&&(icon="live_tv",color="#293AAE"),icon=i.icon||icon;var onclick=i.onclick?" function(){"+i.onclick+"}":"null";return''+icon+''+i.Name+""}).join(""),libraryMenuOptions.innerHTML=html;for(var elem=libraryMenuOptions,sidebarLinks=elem.querySelectorAll(".sidebarLink"),i=0,length=sidebarLinks.length;i200&&setTimeout(function(){closeMainDrawer(),setTimeout(function(){action?action():Dashboard.navigate(link.href)},getNavigateDelay())},50),event.stopPropagation(),event.preventDefault(),!1)},onLogoutClicked:function(){return(new Date).getTime()-lastOpenTime>200&&(closeMainDrawer(),setTimeout(function(){Dashboard.logout()},getNavigateDelay())),!1},onHardwareMenuButtonClick:function(){toggleMainDrawer()},onSettingsClicked:function(event){return 1!=event.which||(Dashboard.navigate("dashboard.html"),!1)},setTabs:function(type,selectedIndex,builder){require(["mainTabsManager"],function(mainTabsManager){type?mainTabsManager.setTabs(viewManager.currentView(),selectedIndex,builder):mainTabsManager.setTabs(null)})},setDefaultTitle:function(){pageTitleElement||(pageTitleElement=document.querySelector(".pageTitle")),pageTitleElement&&(pageTitleElement.classList.add("pageTitleWithLogo"),pageTitleElement.classList.add("pageTitleWithDefaultLogo"),pageTitleElement.style.backgroundImage="url(css/images/logo.png)",pageTitleElement.innerHTML=""),document.title="Emby"},setTitle:function(title){var html=title,page=viewManager.currentView();if(page){var helpUrl=page.getAttribute("data-helpurl");helpUrl&&(html+='info'+Globalize.translate("ButtonHelp")+"")}pageTitleElement||(pageTitleElement=document.querySelector(".pageTitle")),pageTitleElement&&(pageTitleElement.classList.remove("pageTitleWithLogo"),pageTitleElement.classList.remove("pageTitleWithDefaultLogo"),pageTitleElement.style.backgroundImage=null,pageTitleElement.innerHTML=html),document.title=title||"Emby"},setTransparentMenu:function(transparent){transparent?skinHeader.classList.add("semiTransparent"):skinHeader.classList.remove("semiTransparent")}},pageClassOn("pagebeforeshow","page",function(e){var page=this;page.classList.contains("withTabs")||LibraryMenu.setTabs(null)}),pageClassOn("pageshow","page",function(e){var page=this;btnHome&&("indexPage"===page.id?btnHome.classList.add("hide"):btnHome.classList.remove("hide"));var isDashboardPage=page.classList.contains("type-interior");isDashboardPage?(mainDrawerButton&&mainDrawerButton.classList.remove("hide"),refreshDashboardInfoInDrawer(page)):(mainDrawerButton&&(enableLibraryNavDrawer?mainDrawerButton.classList.remove("hide"):mainDrawerButton.classList.add("hide")),"library"!==currentDrawerType&&refreshLibraryDrawer()),setDrawerClass(page),updateViewMenuBar(page),e.detail.isRestored||window.scrollTo(0,0),updateTitle(page),updateBackButton(page),page.classList.contains("libraryPage")?(document.body.classList.add("libraryDocument"),document.body.classList.remove("dashboardDocument"),document.body.classList.remove("hideMainDrawer"),navDrawerInstance&&navDrawerInstance.setEdgeSwipeEnabled(!0)):isDashboardPage?(document.body.classList.remove("libraryDocument"),document.body.classList.add("dashboardDocument"),document.body.classList.remove("hideMainDrawer"),navDrawerInstance&&navDrawerInstance.setEdgeSwipeEnabled(!0)):(document.body.classList.remove("libraryDocument"),document.body.classList.remove("dashboardDocument"),document.body.classList.add("hideMainDrawer"),navDrawerInstance&&navDrawerInstance.setEdgeSwipeEnabled(!1)),updateLibraryNavLinks(page)}),window.ApiClient&&initializeApiClient(window.ApiClient),renderHeader(),events.on(ConnectionManager,"apiclientcreated",function(e,apiClient){initializeApiClient(apiClient)}),events.on(ConnectionManager,"localusersignedin",function(e,user){currentDrawerType=null,setDrawerClass(),ConnectionManager.user(ConnectionManager.getApiClient(user.ServerId)).then(function(user){updateUserInHeader(user)})}),events.on(ConnectionManager,"localusersignedout",updateUserInHeader),events.on(playbackManager,"playerchange",updateCastIcon),setDrawerClass(),LibraryMenu}); \ No newline at end of file +define(["layoutManager","events","viewManager","libraryBrowser","embyRouter","apphost","playbackManager","browser","paper-icon-button-light","material-icons","scrollStyles","flexStyles"],function(layoutManager,events,viewManager,libraryBrowser,embyRouter,appHost,playbackManager,browser){"use strict";function renderHeader(){var html="";html+='
',html+='
';var backIcon=browser.safari?"chevron_left":"";html+='",html+='',html+='',html+='

',html+="
",html+='
',html+='',html+='',html+='',html+='',html+='',layoutManager.mobile||(html+=''),html+="
",html+="
",html+='
',html+="
",skinHeader.innerHTML=html,btnHome=skinHeader.querySelector(".headerAppsButton"),browser.chrome||skinHeader.classList.add("skinHeader-blurred"),lazyLoadViewMenuBarImages(),bindMenuEvents()}function lazyLoadViewMenuBarImages(){require(["imageLoader"],function(imageLoader){imageLoader.lazyChildren(skinHeader)})}function onBackClick(){embyRouter.back()}function updateUserInHeader(user){var hasImage,headerUserButton=skinHeader.querySelector(".headerUserButton");if(user&&user.name&&user.imageUrl){var userButtonHeight=26,url=user.imageUrl;user.supportsImageParams&&(url+="&height="+Math.round(userButtonHeight*Math.max(window.devicePixelRatio||1,2))),headerUserButton&&(updateHeaderUserButton(headerUserButton,url),hasImage=!0)}headerUserButton&&!hasImage&&updateHeaderUserButton(headerUserButton,null),user&&updateLocalUser(user.localUser),requiresUserRefresh=!1}function updateHeaderUserButton(headerUserButton,src){src?(headerUserButton.classList.add("headerUserButtonRound"),headerUserButton.classList.remove("autoSize"),headerUserButton.innerHTML=''):(headerUserButton.classList.remove("headerUserButtonRound"),headerUserButton.classList.add("autoSize"),headerUserButton.innerHTML='person')}function updateLocalUser(user){var headerSearchButton=skinHeader.querySelector(".headerSearchButton"),btnCast=skinHeader.querySelector(".btnCast"),dashboardEntryHeaderButton=skinHeader.querySelector(".dashboardEntryHeaderButton");user?(btnCast.classList.remove("hide"),headerSearchButton&&headerSearchButton.classList.remove("hide"),dashboardEntryHeaderButton&&(user.Policy.IsAdministrator?dashboardEntryHeaderButton.classList.remove("hide"):dashboardEntryHeaderButton.classList.add("hide"))):(btnCast.classList.add("hide"),headerSearchButton&&headerSearchButton.classList.add("hide"),dashboardEntryHeaderButton&&dashboardEntryHeaderButton.classList.add("hide"))}function showSearch(){Dashboard.navigate("search.html")}function onHeaderUserButtonClick(e){Dashboard.showUserFlyout(e.target)}function onHeaderAppsButtonClick(){Dashboard.navigate("home.html")}function bindMenuEvents(){mainDrawerButton=document.querySelector(".mainDrawerButton"),mainDrawerButton&&mainDrawerButton.addEventListener("click",toggleMainDrawer);var headerBackButton=document.querySelector(".headerBackButton");headerBackButton&&headerBackButton.addEventListener("click",onBackClick);var headerSearchButton=document.querySelector(".headerSearchButton");headerSearchButton&&headerSearchButton.addEventListener("click",showSearch);var headerUserButton=document.querySelector(".headerUserButton");headerUserButton&&headerUserButton.addEventListener("click",onHeaderUserButtonClick);var headerAppsButton=document.querySelector(".headerAppsButton");headerAppsButton&&headerAppsButton.addEventListener("click",onHeaderAppsButtonClick),initHeadRoom(skinHeader),skinHeader.querySelector(".btnNotifications").addEventListener("click",function(){Dashboard.navigate("notificationlist.html")});var btnCast=document.querySelector(".headerButton-btnCast");btnCast&&btnCast.addEventListener("click",onCastButtonClicked)}function onCastButtonClicked(){var btn=this;require(["playerSelectionMenu"],function(playerSelectionMenu){playerSelectionMenu.show(btn)})}function getItemHref(item,context){return embyRouter.getRouteUrl(item,{context:context})}function toggleMainDrawer(){navDrawerInstance.isVisible?closeMainDrawer():openMainDrawer()}function openMainDrawer(){navDrawerInstance.open(),lastOpenTime=(new Date).getTime()}function onMainDrawerOpened(){layoutManager.mobile&&document.body.classList.add("bodyWithPopupOpen")}function closeMainDrawer(){navDrawerInstance.close()}function onMainDrawerSelect(e){navDrawerInstance.isVisible?onMainDrawerOpened():document.body.classList.remove("bodyWithPopupOpen")}function refreshLibraryInfoInDrawer(user,drawer){var html="";html+='
';var homeHref=window.ApiClient?"home.html":"selectserver.html?showuser=1";html+=''+Globalize.translate("ButtonHome")+"",html+='
',html+='
',html+="
";var localUser=user.localUser;localUser&&localUser.Policy.IsAdministrator&&(html+='
',html+='
',html+='
',html+=Globalize.translate("HeaderAdmin"),html+="
",html+=''+Globalize.translate("ButtonManageServer")+"",html+=''+Globalize.translate("MetadataManager")+"",layoutManager.mobile||(html+=''+Globalize.translate("ButtonReports")+""),html+="
"),html+='",navDrawerScrollContainer.innerHTML=html;var lnkManageServer=navDrawerScrollContainer.querySelector(".lnkManageServer");lnkManageServer&&lnkManageServer.addEventListener("click",onManageServerClicked)}function refreshDashboardInfoInDrawer(page,user){currentDrawerType="admin",loadNavDrawer(),navDrawerScrollContainer.querySelector(".adminDrawerLogo")?updateDashboardMenuSelectedItem():createDashboardMenu(page)}function updateDashboardMenuSelectedItem(){for(var links=navDrawerScrollContainer.querySelectorAll(".sidebarLink"),i=0,length=links.length;i',html+=Globalize.translate("HeaderMedia"),html+="
",html+=items.map(function(i){var icon="folder",color="inherit",itemId=i.Id;"channels"==i.CollectionType?itemId="channels":"livetv"==i.CollectionType&&(itemId="livetv"),"photos"==i.CollectionType?(icon="photo_library",color="#009688"):"music"==i.CollectionType||"musicvideos"==i.CollectionType?(icon="library_music",color="#FB8521"):"books"==i.CollectionType?(icon="library_books",color="#1AA1E1"):"playlists"==i.CollectionType?(icon="view_list",color="#795548"):"games"==i.CollectionType?(icon="games",color="#F44336"):"movies"==i.CollectionType?(icon="video_library",color="#CE5043"):"channels"==i.CollectionType||"Channel"==i.Type?(icon="videocam",color="#E91E63"):"tvshows"==i.CollectionType?(icon="tv",color="#4CAF50"):"livetv"==i.CollectionType&&(icon="live_tv",color="#293AAE"),icon=i.icon||icon;var onclick=i.onclick?" function(){"+i.onclick+"}":"null";return''+icon+''+i.Name+""}).join(""),libraryMenuOptions.innerHTML=html;for(var elem=libraryMenuOptions,sidebarLinks=elem.querySelectorAll(".sidebarLink"),i=0,length=sidebarLinks.length;i200&&setTimeout(function(){closeMainDrawer(),setTimeout(function(){action?action():Dashboard.navigate(link.href)},getNavigateDelay())},50),event.stopPropagation(),event.preventDefault(),!1)},onLogoutClicked:function(){return(new Date).getTime()-lastOpenTime>200&&(closeMainDrawer(),setTimeout(function(){Dashboard.logout()},getNavigateDelay())),!1},onHardwareMenuButtonClick:function(){toggleMainDrawer()},onSettingsClicked:function(event){return 1!=event.which||(Dashboard.navigate("dashboard.html"),!1)},setTabs:function(type,selectedIndex,builder){require(["mainTabsManager"],function(mainTabsManager){type?mainTabsManager.setTabs(viewManager.currentView(),selectedIndex,builder):mainTabsManager.setTabs(null)})},setDefaultTitle:function(){pageTitleElement||(pageTitleElement=document.querySelector(".pageTitle")),pageTitleElement&&(pageTitleElement.classList.add("pageTitleWithLogo"),pageTitleElement.classList.add("pageTitleWithDefaultLogo"),pageTitleElement.style.backgroundImage="url(css/images/logo.png)",pageTitleElement.innerHTML=""),document.title="Emby"},setTitle:function(title){var html=title,page=viewManager.currentView();if(page){var helpUrl=page.getAttribute("data-helpurl");helpUrl&&(html+='info'+Globalize.translate("ButtonHelp")+"")}pageTitleElement||(pageTitleElement=document.querySelector(".pageTitle")),pageTitleElement&&(pageTitleElement.classList.remove("pageTitleWithLogo"),pageTitleElement.classList.remove("pageTitleWithDefaultLogo"),pageTitleElement.style.backgroundImage=null,pageTitleElement.innerHTML=html),document.title=title||"Emby"},setTransparentMenu:function(transparent){transparent?skinHeader.classList.add("semiTransparent"):skinHeader.classList.remove("semiTransparent")}},pageClassOn("pagebeforeshow","page",function(e){var page=this;page.classList.contains("withTabs")||LibraryMenu.setTabs(null)}),pageClassOn("pageshow","page",function(e){var page=this;btnHome&&("indexPage"===page.id?btnHome.classList.add("hide"):btnHome.classList.remove("hide"));var isDashboardPage=page.classList.contains("type-interior");isDashboardPage?(mainDrawerButton&&mainDrawerButton.classList.remove("hide"),refreshDashboardInfoInDrawer(page)):(mainDrawerButton&&(enableLibraryNavDrawer?mainDrawerButton.classList.remove("hide"):mainDrawerButton.classList.add("hide")),"library"!==currentDrawerType&&refreshLibraryDrawer()),setDrawerClass(page),updateViewMenuBar(page),e.detail.isRestored||window.scrollTo(0,0),updateTitle(page),updateBackButton(page),page.classList.contains("libraryPage")?(document.body.classList.add("libraryDocument"),document.body.classList.remove("dashboardDocument"),document.body.classList.remove("hideMainDrawer"),navDrawerInstance&&navDrawerInstance.setEdgeSwipeEnabled(!0)):isDashboardPage?(document.body.classList.remove("libraryDocument"),document.body.classList.add("dashboardDocument"),document.body.classList.remove("hideMainDrawer"),navDrawerInstance&&navDrawerInstance.setEdgeSwipeEnabled(!0)):(document.body.classList.remove("libraryDocument"),document.body.classList.remove("dashboardDocument"),document.body.classList.add("hideMainDrawer"),navDrawerInstance&&navDrawerInstance.setEdgeSwipeEnabled(!1)),updateLibraryNavLinks(page)}),window.ApiClient&&initializeApiClient(window.ApiClient),renderHeader(),events.on(ConnectionManager,"apiclientcreated",function(e,apiClient){initializeApiClient(apiClient)}),events.on(ConnectionManager,"localusersignedin",function(e,user){currentDrawerType=null,setDrawerClass(),ConnectionManager.user(ConnectionManager.getApiClient(user.ServerId)).then(function(user){updateUserInHeader(user)})}),events.on(ConnectionManager,"localusersignedout",updateUserInHeader),events.on(playbackManager,"playerchange",updateCastIcon),setDrawerClass(),LibraryMenu}); \ No newline at end of file diff --git a/dashboard-ui/scripts/managedownloads.js b/dashboard-ui/scripts/managedownloads.js new file mode 100644 index 0000000000..072338eba9 --- /dev/null +++ b/dashboard-ui/scripts/managedownloads.js @@ -0,0 +1 @@ +define(["syncJobList"],function(syncJobList){"use strict";return function(view,params){var mode="offline",apiClient=ApiClient,mySyncJobList=new syncJobList({isLocalSync:"offline"===mode,serverId:apiClient.serverId(),userId:"offline"===mode?null:apiClient.getCurrentUserId(),element:view.querySelector(".syncActivity"),mode:mode});view.addEventListener("viewdestroy",function(){mySyncJobList&&(mySyncJobList.destroy(),mySyncJobList=null)})}}); \ No newline at end of file diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index 8c836e6aa6..5b75f3806e 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -1,3 +1,3 @@ function getWindowLocationSearch(win){"use strict";var search=(win||window).location.search;if(!search){var index=window.location.href.indexOf("?");index!=-1&&(search=window.location.href.substring(index))}return search||""}function getParameterByName(name,url){"use strict";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 pageClassOn(eventName,className,fn){"use strict";document.addEventListener(eventName,function(e){var target=e.target;target.classList.contains(className)&&fn.call(target,e)})}function pageIdOn(eventName,id,fn){"use strict";document.addEventListener(eventName,function(e){var target=e.target;target.id==id&&fn.call(target,e)})}var Dashboard={isConnectMode:function(){if(AppInfo.isNativeApp)return!0;var url=window.location.href.toLowerCase();return url.indexOf("mediabrowser.tv")!=-1||url.indexOf("emby.media")!=-1},isRunningInCordova:function(){return"cordova"==window.appMode},onRequestFail:function(e,data){if(401==data.status&&"ParentalControl"==data.errorCode){var currentView=ViewManager.currentView();currentView&&!currentView.classList.contains(".standalonePage")&&Dashboard.alert({message:Globalize.translate("MessageLoggedOutParentalControl"),callback:function(){Dashboard.logout(!1)}})}},getCurrentUser:function(){return window.ApiClient.getCurrentUser()},serverAddress:function(){if(Dashboard.isConnectMode()){var apiClient=window.ApiClient;return apiClient?apiClient.serverAddress():null}var urlLower=window.location.href.toLowerCase(),index=urlLower.lastIndexOf("/web");if(index!=-1)return urlLower.substring(0,index);var loc=window.location,address=loc.protocol+"//"+loc.hostname;return loc.port&&(address+=":"+loc.port),address},getCurrentUserId:function(){var apiClient=window.ApiClient;return apiClient?apiClient.getCurrentUserId():null},onServerChanged:function(userId,accessToken,apiClient){apiClient=apiClient||window.ApiClient,window.ApiClient=apiClient},logout:function(logoutWithServer){function onLogoutDone(){var loginPage;Dashboard.isConnectMode()?(loginPage="connectlogin.html",window.ApiClient=null):loginPage="login.html",Dashboard.navigate(loginPage)}logoutWithServer===!1?onLogoutDone():ConnectionManager.logout().then(onLogoutDone)},getConfigurationPageUrl:function(name){return"configurationpage?name="+encodeURIComponent(name)},navigate:function(url,preserveQueryString){if(!url)throw new Error("url cannot be null or empty");var queryString=getWindowLocationSearch();return preserveQueryString&&queryString&&(url+=queryString),new Promise(function(resolve,reject){require(["embyRouter"],function(embyRouter){return embyRouter.show(url).then(resolve,reject)})})},processPluginConfigurationUpdateResult:function(){require(["loading","toast"],function(loading,toast){loading.hide(),toast(Globalize.translate("MessageSettingsSaved"))})},processServerConfigurationUpdateResult:function(result){require(["loading","toast"],function(loading,toast){loading.hide(),toast(Globalize.translate("MessageSettingsSaved"))})},processErrorResponse:function(response){require(["loading"],function(loading){loading.hide()});var status=""+response.status;response.statusText&&(status=response.statusText),Dashboard.alert({title:status,message:response.headers?response.headers.get("X-Application-Error-Code"):null})},alert:function(options){return"string"==typeof options?void require(["toast"],function(toast){toast({text:options})}):void require(["alert"],function(alert){alert({title:options.title||Globalize.translate("HeaderAlert"),text:options.message}).then(options.callback||function(){})})},restartServer:function(){var apiClient=window.ApiClient;apiClient&&(Dashboard.suppressAjaxErrors=!0,require(["loading"],function(loading){loading.show()}),apiClient.restartServer().then(function(){setTimeout(function(){Dashboard.reloadPageWhenServerAvailable()},250)},function(){Dashboard.suppressAjaxErrors=!1}))},reloadPageWhenServerAvailable:function(retryCount){var apiClient=window.ApiClient;apiClient&&apiClient.getJSON(apiClient.getUrl("System/Info")).then(function(info){info.HasPendingRestart?Dashboard.retryReload(retryCount):window.location.reload(!0)},function(){Dashboard.retryReload(retryCount)})},retryReload:function(retryCount){setTimeout(function(){retryCount=retryCount||0,retryCount++,retryCount<10?Dashboard.reloadPageWhenServerAvailable(retryCount):Dashboard.suppressAjaxErrors=!1},500)},showUserFlyout:function(){Dashboard.navigate("mypreferencesmenu.html")},getPluginSecurityInfo:function(){var apiClient=window.ApiClient;if(!apiClient)return Promise.reject();var cachedInfo=Dashboard.pluginSecurityInfo;return cachedInfo?Promise.resolve(cachedInfo):apiClient.ajax({type:"GET",url:apiClient.getUrl("Plugins/SecurityInfo"),dataType:"json",error:function(){}}).then(function(result){return Dashboard.pluginSecurityInfo=result,result})},resetPluginSecurityInfo:function(){Dashboard.pluginSecurityInfo=null},ensureHeader:function(page){page.classList.contains("standalonePage")&&!page.classList.contains("noHeaderPage")&&Dashboard.renderHeader(page)},renderHeader:function(page){var header=page.querySelector(".header");if(!header){var headerHtml="";headerHtml+='",page.insertAdjacentHTML("afterbegin",headerHtml)}},getToolsLinkHtml:function(item){var menuHtml="",pageIds=item.pageIds?item.pageIds.join(","):"";return pageIds=pageIds?' data-pageids="'+pageIds+'"':"",menuHtml+='",item.icon&&(menuHtml+=''+item.icon+""),menuHtml+='',menuHtml+=item.name,menuHtml+="",menuHtml+=""},getToolsMenuHtml:function(page){var i,length,item,items=Dashboard.getToolsMenuLinks(page),menuHtml="";for(menuHtml+='
',i=0,length=items.length;i
"),item.href?menuHtml+=Dashboard.getToolsLinkHtml(item):(menuHtml+='
',menuHtml+=item.name,menuHtml+="
");return menuHtml+="
"},getToolsMenuLinks:function(){return[{name:Globalize.translate("TabServer")},{name:Globalize.translate("TabDashboard"),href:"dashboard.html",pageIds:["dashboardPage"],icon:"dashboard"},{name:Globalize.translate("TabSettings"),href:"dashboardgeneral.html",pageIds:["dashboardGeneralPage"],icon:"settings"},{name:Globalize.translate("TabUsers"),href:"userprofiles.html",pageIds:["userProfilesPage","newUserPage","editUserPage","userLibraryAccessPage","userParentalControlPage","userPasswordPage"],icon:"people"},{name:"Emby Premiere",href:"supporterkey.html",pageIds:["supporterKeyPage"],icon:"star"},{divider:!0,name:Globalize.translate("TabLibrary"),href:"library.html",pageIds:["mediaLibraryPage","librarySettingsPage","libraryDisplayPage","metadataImagesConfigurationPage","metadataNfoPage"],icon:"folder",color:"#38c"},{name:Globalize.translate("TabSubtitles"),href:"metadatasubtitles.html",pageIds:["metadataSubtitlesPage"],icon:"closed_caption"},{name:Globalize.translate("TabPlayback"),icon:"play_circle_filled",color:"#E5342E",href:"cinemamodeconfiguration.html",pageIds:["cinemaModeConfigurationPage","playbackConfigurationPage","streamingSettingsPage"]},{name:Globalize.translate("TabTranscoding"),icon:"transform",href:"encodingsettings.html",pageIds:["encodingSettingsPage"]},{divider:!0,name:Globalize.translate("TabDevices")},{name:Globalize.translate("TabDevices"),href:"devices.html",pageIds:["devicesPage","devicePage"],icon:"tablet"},{name:Globalize.translate("HeaderDownloadSync"),icon:"file_download",href:"syncactivity.html",pageIds:["syncActivityPage","syncJobPage","syncSettingsPage"],color:"#009688"},{name:Globalize.translate("TabCameraUpload"),href:"devicesupload.html",pageIds:["devicesUploadPage"],icon:"photo_camera"},{divider:!0,name:Globalize.translate("TabExtras")},{name:Globalize.translate("TabAutoOrganize"),color:"#01C0DD",href:"autoorganizelog.html",pageIds:["libraryFileOrganizerPage","libraryFileOrganizerSmartMatchPage","libraryFileOrganizerLogPage"],icon:"folder"},{name:Globalize.translate("DLNA"),href:"dlnasettings.html",pageIds:["dlnaSettingsPage","dlnaProfilesPage","dlnaProfilePage"],icon:"settings"},{name:Globalize.translate("TabLiveTV"),href:"livetvstatus.html",pageIds:["liveTvStatusPage","liveTvSettingsPage","liveTvTunerPage"],icon:"dvr"},{name:Globalize.translate("TabNotifications"),icon:"notifications",color:"brown",href:"notificationsettings.html",pageIds:["notificationSettingsPage","notificationSettingPage"]},{name:Globalize.translate("TabPlugins"),icon:"add_shopping_cart",color:"#9D22B1",href:"plugins.html",pageIds:["pluginsPage","pluginCatalogPage"]},{divider:!0,name:Globalize.translate("TabExpert")},{name:Globalize.translate("TabAdvanced"),icon:"settings",href:"dashboardhosting.html",color:"#F16834",pageIds:["dashboardHostingPage","serverSecurityPage"]},{name:Globalize.translate("TabLogs"),href:"log.html",pageIds:["logPage"],icon:"folder_open"},{name:Globalize.translate("TabScheduledTasks"),href:"scheduledtasks.html",pageIds:["scheduledTasksPage","scheduledTaskPage"],icon:"schedule"},{name:Globalize.translate("MetadataManager"),href:"edititemmetadata.html",pageIds:[],icon:"mode_edit"},{name:Globalize.translate("ButtonReports"),href:"reports.html",pageIds:[],icon:"insert_chart"}]},getSupportedRemoteCommands:function(){return["GoHome","GoToSettings","VolumeUp","VolumeDown","Mute","Unmute","ToggleMute","SetVolume","SetAudioStreamIndex","SetSubtitleStreamIndex","DisplayContent","GoToSearch","DisplayMessage","SetRepeatMode"]},capabilities:function(){var caps={PlayableMediaTypes:["Audio","Video"],SupportedCommands:Dashboard.getSupportedRemoteCommands(),SupportsPersistentIdentifier:Dashboard.isRunningInCordova(),SupportsMediaControl:!0,SupportedLiveMediaTypes:["Audio","Video"]};return Dashboard.isRunningInCordova()&&!browserInfo.safari&&(caps.SupportsSync=!0,caps.SupportsContentUploading=!0),caps},normalizeImageOptions:function(options){var setQuality;if(options.maxWidth&&(setQuality=!0),options.width&&(setQuality=!0),options.maxHeight&&(setQuality=!0),options.height&&(setQuality=!0),setQuality){var quality=90,isBackdrop="backdrop"==(options.type||"").toLowerCase();isBackdrop&&(quality-=10),browserInfo.slow&&(quality-=40),AppInfo.hasLowImageBandwidth&&!isBackdrop&&(quality-=10),options.quality=quality}}},AppInfo={};!function(){"use strict";function setAppInfo(){var isCordova=Dashboard.isRunningInCordova();AppInfo.enableAutoSave=browserInfo.touch,AppInfo.enableAppStorePolicy=isCordova,browserInfo.iOS&&(AppInfo.hasLowImageBandwidth=!0),isCordova?(AppInfo.isNativeApp=!0,browserInfo.android&&(AppInfo.supportsExternalPlayers=!0)):AppInfo.enableSupporterMembership=!0,AppInfo.supportsFileInput=!(AppInfo.isNativeApp&&browserInfo.android),AppInfo.supportsUserDisplayLanguageSetting=Dashboard.isConnectMode()}function initializeApiClient(apiClient){AppInfo.enableAppStorePolicy&&(apiClient.getAvailablePlugins=function(){return Promise.resolve([])},apiClient.getInstalledPlugins=function(){return Promise.resolve([])}),apiClient.normalizeImageOptions=Dashboard.normalizeImageOptions,Events.off(apiClient,"requestfail",Dashboard.onRequestFail),Events.on(apiClient,"requestfail",Dashboard.onRequestFail)}function onApiClientCreated(e,newApiClient){initializeApiClient(newApiClient),window.$&&($.ajax=newApiClient.ajax),require(["globalize"],function(globalize){newApiClient.downloadsTitleText=globalize.translate("sharedcomponents#Downloads")})}function defineConnectionManager(connectionManager){window.ConnectionManager=connectionManager,define("connectionManager",[],function(){return connectionManager})}function bindConnectionManagerEvents(connectionManager,events,userSettings){window.Events=events,events.on(ConnectionManager,"apiclientcreated",onApiClientCreated),connectionManager.currentApiClient=function(){if(!localApiClient){var server=connectionManager.getLastUsedServer();server&&(localApiClient=connectionManager.getApiClient(server.Id))}return localApiClient},connectionManager.onLocalUserSignedIn=function(user){return localApiClient=connectionManager.getApiClient(user.ServerId),window.ApiClient=localApiClient,userSettings.setUserInfo(user.Id,localApiClient)},events.on(connectionManager,"localusersignedout",function(){userSettings.setUserInfo(null,null)})}function createConnectionManager(){return new Promise(function(resolve,reject){require(["connectionManagerFactory","apphost","credentialprovider","events","userSettings"],function(connectionManagerExports,apphost,credentialProvider,events,userSettings){window.MediaBrowser=Object.assign(window.MediaBrowser||{},connectionManagerExports);var credentialProviderInstance=new credentialProvider,promises=[apphost.getSyncProfile(),apphost.appInfo()];Promise.all(promises).then(function(responses){var deviceProfile=responses[0],appInfo=responses[1],capabilities=Dashboard.capabilities();capabilities.DeviceProfile=deviceProfile;var connectionManager=new MediaBrowser.ConnectionManager(credentialProviderInstance,appInfo.appName,appInfo.appVersion,appInfo.deviceName,appInfo.deviceId,capabilities,window.devicePixelRatio);return defineConnectionManager(connectionManager),bindConnectionManagerEvents(connectionManager,events,userSettings),Dashboard.isConnectMode()?void resolve():(console.log("loading ApiClient singleton"),getRequirePromise(["apiclient"]).then(function(apiClientFactory){console.log("creating ApiClient singleton");var apiClient=new apiClientFactory(Dashboard.serverAddress(),appInfo.appName,appInfo.appVersion,appInfo.deviceName,appInfo.deviceId,window.devicePixelRatio);apiClient.enableAutomaticNetworking=!1,connectionManager.addApiClient(apiClient),require(["css!"+apiClient.getUrl("Branding/Css")]),window.ApiClient=apiClient,localApiClient=apiClient,console.log("loaded ApiClient singleton"),resolve()}))})})})}function setDocumentClasses(browser){var elem=document.documentElement;AppInfo.enableSupporterMembership||elem.classList.add("supporterMembershipDisabled")}function loadTheme(){var name=getParameterByName("theme");if(name)return void require(["themes/"+name+"/theme"]);if(!AppInfo.isNativeApp){var date=new Date,month=date.getMonth(),day=date.getDate();return 9==month&&day>=30?void require(["themes/halloween/theme"]):void 0}}function returnFirstDependency(obj){return obj}function getBowerPath(){return"bower_components"}function getLayoutManager(layoutManager,appHost){return appHost.getDefaultLayout&&(layoutManager.defaultLayout=appHost.getDefaultLayout()),layoutManager.init(),layoutManager}function getAppStorage(basePath){try{return localStorage.setItem("_test","0"),localStorage.removeItem("_test"),basePath+"/appstorage-localstorage"}catch(e){return basePath+"/appstorage-memory"}}function createWindowHeadroom(Headroom){var headroom=new Headroom([],{});return headroom.init(),headroom}function getCastSenderApiLoader(){var ccLoaded=!1;return{load:function(){return ccLoaded?Promise.resolve():new Promise(function(resolve,reject){var fileref=document.createElement("script");fileref.setAttribute("type","text/javascript"),fileref.onload=function(){ccLoaded=!0,resolve()},fileref.setAttribute("src","https://www.gstatic.com/cv/js/sender/v1/cast_sender.js"),document.querySelector("head").appendChild(fileref)})}}}function getDummyCastSenderApiLoader(){return{load:function(){return window.chrome=window.chrome||{},Promise.resolve()}}}function createSharedAppFooter(appFooter){var footer=new appFooter({});return footer}function onRequireJsError(requireType,requireModules){console.log("RequireJS error: "+(requireType||"unknown")+". Failed modules: "+(requireModules||[]).join(","))}function initRequire(){var urlArgs="v="+(window.dashboardVersion||(new Date).getDate()),bowerPath=getBowerPath(),apiClientBowerPath=bowerPath+"/emby-apiclient",embyWebComponentsBowerPath=bowerPath+"/emby-webcomponents",paths={velocity:bowerPath+"/velocity/velocity.min",vibrant:bowerPath+"/vibrant/dist/vibrant",staticBackdrops:embyWebComponentsBowerPath+"/staticbackdrops",ironCardList:"components/ironcardlist/ironcardlist",scrollThreshold:"components/scrollthreshold",playlisteditor:"components/playlisteditor/playlisteditor",medialibrarycreator:"components/medialibrarycreator/medialibrarycreator",medialibraryeditor:"components/medialibraryeditor/medialibraryeditor",howler:bowerPath+"/howlerjs/howler.min",sortable:bowerPath+"/Sortable/Sortable.min",isMobile:bowerPath+"/isMobile/isMobile.min",masonry:bowerPath+"/masonry/dist/masonry.pkgd.min",humanedate:"components/humanedate",libraryBrowser:"scripts/librarybrowser",chromecasthelpers:"components/chromecasthelpers",events:apiClientBowerPath+"/events",credentialprovider:apiClientBowerPath+"/credentials",connectionManagerFactory:bowerPath+"/emby-apiclient/connectionmanager",visibleinviewport:embyWebComponentsBowerPath+"/visibleinviewport",browserdeviceprofile:embyWebComponentsBowerPath+"/browserdeviceprofile",browser:embyWebComponentsBowerPath+"/browser",inputManager:embyWebComponentsBowerPath+"/inputmanager",qualityoptions:embyWebComponentsBowerPath+"/qualityoptions",hammer:bowerPath+"/hammerjs/hammer.min",pageJs:embyWebComponentsBowerPath+"/pagejs/page",focusManager:embyWebComponentsBowerPath+"/focusmanager",datetime:embyWebComponentsBowerPath+"/datetime",globalize:embyWebComponentsBowerPath+"/globalize",itemHelper:embyWebComponentsBowerPath+"/itemhelper",itemShortcuts:embyWebComponentsBowerPath+"/shortcuts",serverNotifications:embyWebComponentsBowerPath+"/servernotifications",playbackManager:embyWebComponentsBowerPath+"/playback/playbackmanager",playQueueManager:embyWebComponentsBowerPath+"/playback/playqueuemanager",autoPlayDetect:embyWebComponentsBowerPath+"/playback/autoplaydetect",nowPlayingHelper:embyWebComponentsBowerPath+"/playback/nowplayinghelper",pluginManager:embyWebComponentsBowerPath+"/pluginmanager",packageManager:embyWebComponentsBowerPath+"/packagemanager"};paths.hlsjs=bowerPath+"/hlsjs/dist/hls.min",define("mediaSession",[embyWebComponentsBowerPath+"/playback/mediasession"],returnFirstDependency),define("webActionSheet",[embyWebComponentsBowerPath+"/actionsheet/actionsheet"],returnFirstDependency),Dashboard.isRunningInCordova()?paths.sharingMenu="cordova/sharingwidget":define("sharingMenu",[embyWebComponentsBowerPath+"/sharing/sharingmenu"],returnFirstDependency),paths.wakeonlan=apiClientBowerPath+"/wakeonlan",define("libjass",[bowerPath+"/libjass/libjass.min","css!"+bowerPath+"/libjass/libjass"],returnFirstDependency),window.IntersectionObserver?define("lazyLoader",[embyWebComponentsBowerPath+"/lazyloader/lazyloader-intersectionobserver"],returnFirstDependency):define("lazyLoader",[embyWebComponentsBowerPath+"/lazyloader/lazyloader-scroll"],returnFirstDependency),define("tunerPicker",["components/tunerpicker"],returnFirstDependency),define("mainTabsManager",["components/maintabsmanager"],returnFirstDependency),define("imageLoader",[embyWebComponentsBowerPath+"/images/imagehelper"],returnFirstDependency),define("appFooter",[embyWebComponentsBowerPath+"/appfooter/appfooter"],returnFirstDependency),define("directorybrowser",["components/directorybrowser/directorybrowser"],returnFirstDependency),define("metadataEditor",[embyWebComponentsBowerPath+"/metadataeditor/metadataeditor"],returnFirstDependency),define("personEditor",[embyWebComponentsBowerPath+"/metadataeditor/personeditor"],returnFirstDependency),define("playerSelectionMenu",[embyWebComponentsBowerPath+"/playback/playerselection"],returnFirstDependency),define("playerSettingsMenu",[embyWebComponentsBowerPath+"/playback/playersettingsmenu"],returnFirstDependency),define("playMethodHelper",[embyWebComponentsBowerPath+"/playback/playmethodhelper"],returnFirstDependency),define("brightnessOsd",[embyWebComponentsBowerPath+"/playback/brightnessosd"],returnFirstDependency),define("libraryMenu",["scripts/librarymenu"],returnFirstDependency),define("emby-collapse",[embyWebComponentsBowerPath+"/emby-collapse/emby-collapse"],returnFirstDependency),define("emby-button",[embyWebComponentsBowerPath+"/emby-button/emby-button"],returnFirstDependency),define("emby-linkbutton",["emby-button"],returnFirstDependency),define("emby-itemscontainer",[embyWebComponentsBowerPath+"/emby-itemscontainer/emby-itemscontainer"],returnFirstDependency),define("emby-scroller",[embyWebComponentsBowerPath+"/emby-scroller/emby-scroller"],returnFirstDependency),define("emby-tabs",[embyWebComponentsBowerPath+"/emby-tabs/emby-tabs"],returnFirstDependency),define("emby-progressring",[embyWebComponentsBowerPath+"/emby-progressring/emby-progressring"],returnFirstDependency),define("emby-itemrefreshindicator",[embyWebComponentsBowerPath+"/emby-itemrefreshindicator/emby-itemrefreshindicator"],returnFirstDependency),define("itemHoverMenu",[embyWebComponentsBowerPath+"/itemhovermenu/itemhovermenu"],returnFirstDependency),define("multiSelect",[embyWebComponentsBowerPath+"/multiselect/multiselect"],returnFirstDependency),define("alphaPicker",[embyWebComponentsBowerPath+"/alphapicker/alphapicker"],returnFirstDependency),define("paper-icon-button-light",[embyWebComponentsBowerPath+"/emby-button/paper-icon-button-light"],returnFirstDependency),define("connectHelper",[embyWebComponentsBowerPath+"/emby-connect/connecthelper"],returnFirstDependency),define("emby-input",[embyWebComponentsBowerPath+"/emby-input/emby-input"],returnFirstDependency),define("emby-select",[embyWebComponentsBowerPath+"/emby-select/emby-select"],returnFirstDependency),define("emby-slider",[embyWebComponentsBowerPath+"/emby-slider/emby-slider"],returnFirstDependency),define("emby-checkbox",[embyWebComponentsBowerPath+"/emby-checkbox/emby-checkbox"],returnFirstDependency),define("emby-radio",[embyWebComponentsBowerPath+"/emby-radio/emby-radio"],returnFirstDependency),define("emby-textarea",[embyWebComponentsBowerPath+"/emby-textarea/emby-textarea"],returnFirstDependency),define("collectionEditor",[embyWebComponentsBowerPath+"/collectioneditor/collectioneditor"],returnFirstDependency),define("playlistEditor",[embyWebComponentsBowerPath+"/playlisteditor/playlisteditor"],returnFirstDependency),define("recordingCreator",[embyWebComponentsBowerPath+"/recordingcreator/recordingcreator"],returnFirstDependency),define("recordingEditor",[embyWebComponentsBowerPath+"/recordingcreator/recordingeditor"],returnFirstDependency),define("seriesRecordingEditor",[embyWebComponentsBowerPath+"/recordingcreator/seriesrecordingeditor"],returnFirstDependency),define("recordingFields",[embyWebComponentsBowerPath+"/recordingcreator/recordingfields"],returnFirstDependency),define("recordingButton",[embyWebComponentsBowerPath+"/recordingcreator/recordingbutton"],returnFirstDependency),define("recordingHelper",[embyWebComponentsBowerPath+"/recordingcreator/recordinghelper"],returnFirstDependency),define("subtitleEditor",[embyWebComponentsBowerPath+"/subtitleeditor/subtitleeditor"],returnFirstDependency),define("itemIdentifier",[embyWebComponentsBowerPath+"/itemidentifier/itemidentifier"],returnFirstDependency),define("mediaInfo",[embyWebComponentsBowerPath+"/mediainfo/mediainfo"],returnFirstDependency),define("itemContextMenu",[embyWebComponentsBowerPath+"/itemcontextmenu"],returnFirstDependency),define("imageEditor",[embyWebComponentsBowerPath+"/imageeditor/imageeditor"],returnFirstDependency),define("imageDownloader",[embyWebComponentsBowerPath+"/imagedownloader/imagedownloader"],returnFirstDependency),define("dom",[embyWebComponentsBowerPath+"/dom"],returnFirstDependency),define("playerStats",[embyWebComponentsBowerPath+"/playerstats/playerstats"],returnFirstDependency),define("searchFields",[embyWebComponentsBowerPath+"/search/searchfields"],returnFirstDependency),define("searchResults",[embyWebComponentsBowerPath+"/search/searchresults"],returnFirstDependency),define("fullscreen-doubleclick",[embyWebComponentsBowerPath+"/fullscreen/fullscreen-doubleclick"],returnFirstDependency),define("fullscreenManager",[embyWebComponentsBowerPath+"/fullscreen/fullscreenmanager","events"],returnFirstDependency),define("headroom",[embyWebComponentsBowerPath+"/headroom/headroom"],returnFirstDependency),define("homescreenSettings",[embyWebComponentsBowerPath+"/homescreensettings/homescreensettings"],returnFirstDependency),define("homescreenSettingsDialog",[embyWebComponentsBowerPath+"/homescreensettings/homescreensettingsdialog"],returnFirstDependency),define("layoutManager",[embyWebComponentsBowerPath+"/layoutmanager","apphost"],getLayoutManager),define("homeSections",[embyWebComponentsBowerPath+"/homesections"],returnFirstDependency),define("playMenu",[embyWebComponentsBowerPath+"/playmenu"],returnFirstDependency),define("refreshDialog",[embyWebComponentsBowerPath+"/refreshdialog/refreshdialog"],returnFirstDependency),define("backdrop",[embyWebComponentsBowerPath+"/backdrop/backdrop"],returnFirstDependency),define("fetchHelper",[embyWebComponentsBowerPath+"/fetchhelper"],returnFirstDependency),define("roundCardStyle",["cardStyle","css!"+embyWebComponentsBowerPath+"/cardbuilder/roundcard"],returnFirstDependency),define("cardStyle",["css!"+embyWebComponentsBowerPath+"/cardbuilder/card"],returnFirstDependency),define("cardBuilder",[embyWebComponentsBowerPath+"/cardbuilder/cardbuilder"],returnFirstDependency),define("peoplecardbuilder",[embyWebComponentsBowerPath+"/cardbuilder/peoplecardbuilder"],returnFirstDependency),define("chaptercardbuilder",[embyWebComponentsBowerPath+"/cardbuilder/chaptercardbuilder"],returnFirstDependency),define("mouseManager",[embyWebComponentsBowerPath+"/input/mouse"],returnFirstDependency),define("flexStyles",["css!"+embyWebComponentsBowerPath+"/flexstyles"],returnFirstDependency),define("deleteHelper",[embyWebComponentsBowerPath+"/deletehelper"],returnFirstDependency),define("tvguide",[embyWebComponentsBowerPath+"/guide/guide"],returnFirstDependency),define("programStyles",["css!"+embyWebComponentsBowerPath+"/guide/programs"],returnFirstDependency),define("guide-settings-dialog",[embyWebComponentsBowerPath+"/guide/guide-settings"],returnFirstDependency),define("syncDialog",[embyWebComponentsBowerPath+"/sync/sync"],returnFirstDependency),define("syncToggle",[embyWebComponentsBowerPath+"/sync/synctoggle"],returnFirstDependency),define("syncJobEditor",[embyWebComponentsBowerPath+"/sync/syncjobeditor"],returnFirstDependency),define("syncJobList",[embyWebComponentsBowerPath+"/sync/syncjoblist"],returnFirstDependency),define("viewManager",[embyWebComponentsBowerPath+"/viewmanager/viewmanager"],function(viewManager){return window.ViewManager=viewManager,viewManager.dispatchPageEvents(!0),viewManager}),Dashboard.isRunningInCordova()&&window.MainActivity?define("shell",["cordova/shell"],returnFirstDependency):define("shell",[embyWebComponentsBowerPath+"/shell"],returnFirstDependency),define("sharingmanager",[embyWebComponentsBowerPath+"/sharing/sharingmanager"],returnFirstDependency),Dashboard.isRunningInCordova()?paths.apphost="cordova/apphost":paths.apphost="components/apphost",Dashboard.isRunningInCordova()&&window.MainActivity?(paths.appStorage="cordova/appstorage",paths.filesystem="cordova/filesystem"):(paths.appStorage=getAppStorage(apiClientBowerPath),paths.filesystem=embyWebComponentsBowerPath+"/filesystem");var sha1Path=bowerPath+"/cryptojslib/components/sha1-min",md5Path=bowerPath+"/cryptojslib/components/md5-min",shim={};shim[sha1Path]={deps:[bowerPath+"/cryptojslib/components/core-min"]},shim[md5Path]={deps:[bowerPath+"/cryptojslib/components/core-min"]},requirejs.config({waitSeconds:0,map:{"*":{css:bowerPath+"/emby-webcomponents/require/requirecss",html:bowerPath+"/emby-webcomponents/require/requirehtml",text:bowerPath+"/emby-webcomponents/require/requiretext"}},urlArgs:urlArgs,paths:paths,shim:shim,onError:onRequireJsError}),requirejs.onError=onRequireJsError,define("cryptojs-sha1",[sha1Path],returnFirstDependency),define("cryptojs-md5",[md5Path],returnFirstDependency),define("jstree",[bowerPath+"/jstree/dist/jstree","css!thirdparty/jstree/themes/default/style.min.css"],returnFirstDependency),define("dashboardcss",["css!css/dashboard"],returnFirstDependency),define("jqmtable",["thirdparty/jquerymobile-1.4.5/jqm.table","css!thirdparty/jquerymobile-1.4.5/jqm.table.css"],returnFirstDependency),define("jqmwidget",["thirdparty/jquerymobile-1.4.5/jqm.widget"],returnFirstDependency),define("jqmslider",["thirdparty/jquerymobile-1.4.5/jqm.slider","css!thirdparty/jquerymobile-1.4.5/jqm.slider.css"],returnFirstDependency),define("jqmpopup",["thirdparty/jquerymobile-1.4.5/jqm.popup","css!thirdparty/jquerymobile-1.4.5/jqm.popup.css"],returnFirstDependency),define("jqmlistview",["css!thirdparty/jquerymobile-1.4.5/jqm.listview.css"],returnFirstDependency),define("jqmpanel",["thirdparty/jquerymobile-1.4.5/jqm.panel","css!thirdparty/jquerymobile-1.4.5/jqm.panel.css"],returnFirstDependency),define("slideshow",[embyWebComponentsBowerPath+"/slideshow/slideshow"],returnFirstDependency),define("fetch",[bowerPath+"/fetch/fetch"],returnFirstDependency),define("raf",[embyWebComponentsBowerPath+"/polyfills/raf"],returnFirstDependency),define("functionbind",[embyWebComponentsBowerPath+"/polyfills/bind"],returnFirstDependency),define("arraypolyfills",[embyWebComponentsBowerPath+"/polyfills/array"],returnFirstDependency),define("objectassign",[embyWebComponentsBowerPath+"/polyfills/objectassign"],returnFirstDependency),define("clearButtonStyle",["css!"+embyWebComponentsBowerPath+"/clearbutton"],returnFirstDependency),define("userdataButtons",[embyWebComponentsBowerPath+"/userdatabuttons/userdatabuttons"],returnFirstDependency),define("emby-playstatebutton",[embyWebComponentsBowerPath+"/userdatabuttons/emby-playstatebutton"],returnFirstDependency),define("emby-ratingbutton",[embyWebComponentsBowerPath+"/userdatabuttons/emby-ratingbutton"],returnFirstDependency),define("emby-downloadbutton",[embyWebComponentsBowerPath+"/sync/emby-downloadbutton"],returnFirstDependency),define("listView",[embyWebComponentsBowerPath+"/listview/listview"],returnFirstDependency),define("listViewStyle",["css!"+embyWebComponentsBowerPath+"/listview/listview"],returnFirstDependency),define("formDialogStyle",["css!"+embyWebComponentsBowerPath+"/formdialog"],returnFirstDependency),define("indicators",[embyWebComponentsBowerPath+"/indicators/indicators"],returnFirstDependency),define("registrationServices",[embyWebComponentsBowerPath+"/registrationservices/registrationservices"],returnFirstDependency),Dashboard.isRunningInCordova()?(define("iapManager",["cordova/iap"],returnFirstDependency),define("fileupload",["cordova/fileupload"],returnFirstDependency)):(define("iapManager",["components/iap"],returnFirstDependency),define("fileupload",[apiClientBowerPath+"/fileupload"],returnFirstDependency)),define("connectionmanager",[apiClientBowerPath+"/connectionmanager"]),define("cameraRoll",[apiClientBowerPath+"/cameraroll"],returnFirstDependency),define("contentuploader",[apiClientBowerPath+"/sync/contentuploader"],returnFirstDependency),define("serversync",[apiClientBowerPath+"/sync/serversync"],returnFirstDependency),define("multiserversync",[apiClientBowerPath+"/sync/multiserversync"],returnFirstDependency),define("mediasync",[apiClientBowerPath+"/sync/mediasync"],returnFirstDependency),define("idb",[embyWebComponentsBowerPath+"/idb"],returnFirstDependency),define("itemrepository",[apiClientBowerPath+"/sync/itemrepository"],returnFirstDependency),define("useractionrepository",[apiClientBowerPath+"/sync/useractionrepository"],returnFirstDependency),self.Windows?(define("bgtaskregister",["environments/windows-uwp/bgtaskregister"],returnFirstDependency), -define("transfermanager",["environments/windows-uwp/transfermanager"],returnFirstDependency),define("filerepository",["environments/windows-uwp/filerepository"],returnFirstDependency)):(define("transfermanager",[apiClientBowerPath+"/sync/transfermanager"],returnFirstDependency),define("filerepository",[apiClientBowerPath+"/sync/filerepository"],returnFirstDependency)),define("swiper",[bowerPath+"/Swiper/dist/js/swiper.min","css!"+bowerPath+"/Swiper/dist/css/swiper.min"],returnFirstDependency),define("scroller",[embyWebComponentsBowerPath+"/scroller/smoothscroller"],returnFirstDependency),define("toast",[embyWebComponentsBowerPath+"/toast/toast"],returnFirstDependency),define("scrollHelper",[embyWebComponentsBowerPath+"/scrollhelper"],returnFirstDependency),define("touchHelper",[embyWebComponentsBowerPath+"/touchhelper"],returnFirstDependency),define("appSettings",[embyWebComponentsBowerPath+"/appsettings"],updateAppSettings),define("userSettings",[embyWebComponentsBowerPath+"/usersettings/usersettings"],returnFirstDependency),define("userSettingsBuilder",[embyWebComponentsBowerPath+"/usersettings/usersettingsbuilder"],returnFirstDependency),define("material-icons",["css!"+embyWebComponentsBowerPath+"/fonts/material-icons/style"],returnFirstDependency),define("robotoFont",["css!fonts/roboto/style"],returnFirstDependency),define("scrollStyles",["css!"+embyWebComponentsBowerPath+"/scrollstyles"],returnFirstDependency),define("navdrawer",["components/navdrawer/navdrawer"],returnFirstDependency),define("viewcontainer",["components/viewcontainer-lite","css!"+embyWebComponentsBowerPath+"/viewmanager/viewcontainer-lite"],returnFirstDependency),define("queryString",[bowerPath+"/query-string/index"],function(){return queryString}),define("jQuery",[bowerPath+"/jquery/dist/jquery.slim.min"],function(){return window.ApiClient&&(jQuery.ajax=ApiClient.ajax),jQuery}),define("fnchecked",["legacy/fnchecked"],returnFirstDependency),define("dialogHelper",[embyWebComponentsBowerPath+"/dialoghelper/dialoghelper"],function(dialoghelper){return dialoghelper.setOnOpen(onDialogOpen),dialoghelper}),define("inputmanager",["inputManager"],returnFirstDependency),define("historyManager",["embyRouter"],returnFirstDependency),define("headroom-window",["headroom"],createWindowHeadroom),define("appFooter-shared",["appFooter"],createSharedAppFooter),define("skinManager",[],function(){return{loadUserSkin:function(){require(["embyRouter"],function(embyRouter){embyRouter.goHome()})}}}),define("connectionManager",[],function(){return ConnectionManager}),define("apiClientResolver",[],function(){return function(){return window.ApiClient}}),define("embyRouter",[embyWebComponentsBowerPath+"/router"],function(embyRouter){function showItem(item,serverId,options){"string"==typeof item?require(["connectionManager"],function(connectionManager){var apiClient=connectionManager.currentApiClient();apiClient.getItem(apiClient.getCurrentUserId(),item).then(function(item){embyRouter.showItem(item,options)})}):(2==arguments.length&&(options=arguments[1]),embyRouter.show("/"+embyRouter.getRouteUrl(item,options),{item:item}))}return embyRouter.showLocalLogin=function(apiClient,serverId,manualLogin){Dashboard.navigate("login.html?serverid="+serverId)},embyRouter.showVideoOsd=function(){return Dashboard.navigate("videoosd.html")},embyRouter.showSelectServer=function(){Dashboard.isConnectMode()?Dashboard.navigate("selectserver.html"):Dashboard.navigate("login.html")},embyRouter.showWelcome=function(){Dashboard.isConnectMode()?Dashboard.navigate("connectlogin.html?mode=welcome"):Dashboard.navigate("login.html")},embyRouter.showSettings=function(){Dashboard.navigate("mypreferencesmenu.html")},embyRouter.showGuide=function(){Dashboard.navigate("livetv.html?tab=1")},embyRouter.goHome=function(){Dashboard.navigate("home.html")},embyRouter.showSearch=function(){Dashboard.navigate("search.html")},embyRouter.showLiveTV=function(){Dashboard.navigate("livetv.html")},embyRouter.showRecordedTV=function(){Dashboard.navigate("livetv.html?tab=3")},embyRouter.showFavorites=function(){Dashboard.navigate("home.html?tab=1")},embyRouter.showSettings=function(){Dashboard.navigate("mypreferencesmenu.html")},embyRouter.showNowPlaying=function(){Dashboard.navigate("nowplaying.html")},embyRouter.setTitle=function(title){LibraryMenu.setTitle(title)},embyRouter.getRouteUrl=function(item,options){if(!item)throw new Error("item cannot be null");if(item.url)return item.url;var context=options?options.context:null,topParentId=options?options.topParentId||options.parentId:null;if("string"==typeof item){if("recordedtv"===item)return"livetv.html?tab=3&serverId="+options.serverId;if("nextup"===item)return"secondaryitems.html?type=nextup&serverId="+options.serverId;if("livetv"===item)return"guide"===options.section?"livetv.html?tab=1&serverId="+options.serverId:"movies"===options.section?"livetvitems.html?type=Programs&IsMovie=true&serverId="+options.serverId:"shows"===options.section?"livetvitems.html?type=Programs&IsSeries=true&IsMovie=false&IsNews=false&serverId="+options.serverId:"sports"===options.section?"livetvitems.html?type=Programs&IsSports=true&serverId="+options.serverId:"kids"===options.section?"livetvitems.html?type=Programs&IsKids=true&serverId="+options.serverId:"news"===options.section?"livetvitems.html?type=Programs&IsNews=true&serverId="+options.serverId:"onnow"===options.section?"livetvitems.html?type=Programs&IsAiring=true&serverId="+options.serverId:"dvrschedule"===options.section?"livetv.html?tab=4&serverId="+options.serverId:"livetv.html?serverId="+options.serverId}var url,id=item.Id||item.ItemId,itemType=item.Type||(options?options.itemType:null);if("SeriesTimer"==itemType)return"itemdetails.html?seriesTimerId="+id;if("livetv"==item.CollectionType)return"livetv.html";if("channels"==item.CollectionType)return"channels.html";if("folders"!=context){if("movies"==item.CollectionType)return url="movies.html?topParentId="+item.Id,options&&"latest"===options.section&&(url+="&tab=1"),url;if("boxsets"==item.CollectionType)return"itemlist.html?topParentId="+item.Id+"&parentId="+item.Id;if("tvshows"==item.CollectionType)return url="tv.html?topParentId="+item.Id,options&&"latest"===options.section&&(url+="&tab=2"),url;if("music"==item.CollectionType)return"music.html?topParentId="+item.Id;if("games"==item.CollectionType)return id?"itemlist.html?parentId="+id:"#";if("playlists"==item.CollectionType)return"playlists.html?topParentId="+item.Id;if("photos"==item.CollectionType)return"photos.html?topParentId="+item.Id}else if(item.IsFolder&&"BoxSet"!=itemType&&"Series"!=itemType)return id?"itemlist.html?parentId="+id:"#";if("CollectionFolder"==itemType)return"itemlist.html?topParentId="+item.Id+"&parentId="+item.Id;if("PhotoAlbum"==itemType)return"itemlist.html?context=photos&parentId="+id;if("Playlist"==itemType)return"itemdetails.html?id="+id;if("TvChannel"==itemType)return"itemdetails.html?id="+id;if("Channel"==itemType)return"channelitems.html?id="+id;if(item.IsFolder&&"Channel"==item.SourceType||"ChannelFolderItem"==itemType)return"channelitems.html?id="+item.ChannelId+"&folderId="+item.Id;if("Program"==itemType)return"itemdetails.html?id="+id;if("BoxSet"==itemType)return"itemdetails.html?id="+id;if("MusicAlbum"==itemType)return"itemdetails.html?id="+id;if("GameSystem"==itemType)return"itemdetails.html?id="+id;if("Genre"==itemType){var type;switch(context){case"tvshows":type="Series";break;case"games":type="Game";break;default:type="Movie"}return url="secondaryitems.html?type="+type+"&genreId="+id,topParentId&&(url+="&parentId="+topParentId),url}if("MusicGenre"==itemType)return"itemdetails.html?id="+id;if("GameGenre"==itemType)return url="secondaryitems.html?type=Game&genreId="+id,topParentId&&(url+="&parentId="+topParentId),url;if("Studio"==itemType){var type;switch(context){case"tvshows":type="Series";break;case"games":type="Game";break;default:type="Movie"}return url="secondaryitems.html?type="+type+"&studioId="+id,topParentId&&(url+="&parentId="+topParentId),url}if("Person"==itemType)return"itemdetails.html?id="+id;if("Recording"==itemType)return"itemdetails.html?id="+id;if("MusicArtist"==itemType)return"itemdetails.html?id="+id;var contextSuffix=context?"&context="+context:"";return"Series"==itemType||"Season"==itemType||"Episode"==itemType?"itemdetails.html?id="+id+contextSuffix:item.IsFolder?id?"itemlist.html?parentId="+id:"#":"itemdetails.html?id="+id},embyRouter.showItem=showItem,embyRouter})}function updateAppSettings(appSettings){return appSettings.enableExternalPlayers=function(val){return null!=val&&appSettings.set("externalplayers",val.toString()),"true"===appSettings.get("externalplayers")},appSettings}function onDialogOpen(dlg){dlg.classList.contains("background-theme-a")||dlg.classList.contains("actionSheet")||(dlg.classList.add("background-theme-b"),dlg.classList.add("ui-body-b"))}function defineResizeObserver(){self.ResizeObserver?define("ResizeObserver",[],function(){return self.ResizeObserver}):define("ResizeObserver",["bower_components/resize-observer-polyfill/resizeobserver"],returnFirstDependency)}function initRequireWithBrowser(browser){var bowerPath=getBowerPath(),apiClientBowerPath=bowerPath+"/emby-apiclient",embyWebComponentsBowerPath=bowerPath+"/emby-webcomponents";Dashboard.isRunningInCordova()&&browser.android?(define("apiclientcore",["bower_components/emby-apiclient/apiclient"],returnFirstDependency),define("apiclient",["bower_components/emby-apiclient/apiclientex"],returnFirstDependency)):define("apiclient",["bower_components/emby-apiclient/apiclient"],returnFirstDependency),Dashboard.isRunningInCordova()&&browser.safari?define("actionsheet",["cordova/actionsheet"],returnFirstDependency):define("actionsheet",["webActionSheet"],returnFirstDependency),"registerElement"in document?define("registerElement",[]):browser.msie?define("registerElement",[bowerPath+"/webcomponentsjs/webcomponents-lite.min.js"],returnFirstDependency):define("registerElement",[bowerPath+"/document-register-element/build/document-register-element"],returnFirstDependency),window.chrome&&window.chrome.sockets?define("serverdiscovery",[apiClientBowerPath+"/serverdiscovery-chrome"],returnFirstDependency):Dashboard.isRunningInCordova()&&browser.android?define("serverdiscovery",["cordova/serverdiscovery"],returnFirstDependency):Dashboard.isRunningInCordova()&&browser.safari?define("serverdiscovery",[apiClientBowerPath+"/serverdiscovery-chrome"],returnFirstDependency):define("serverdiscovery",[apiClientBowerPath+"/serverdiscovery"],returnFirstDependency),Dashboard.isRunningInCordova()&&browser.safari?define("imageFetcher",["cordova/imagestore"],returnFirstDependency):define("imageFetcher",[embyWebComponentsBowerPath+"/images/basicimagefetcher"],returnFirstDependency);var preferNativeAlerts=browser.tv;preferNativeAlerts&&window.alert?define("alert",[embyWebComponentsBowerPath+"/alert/nativealert"],returnFirstDependency):define("alert",[embyWebComponentsBowerPath+"/alert/alert"],returnFirstDependency),defineResizeObserver(),define("dialog",[embyWebComponentsBowerPath+"/dialog/dialog"],returnFirstDependency),preferNativeAlerts&&window.confirm?define("confirm",[embyWebComponentsBowerPath+"/confirm/nativeconfirm"],returnFirstDependency):define("confirm",[embyWebComponentsBowerPath+"/confirm/confirm"],returnFirstDependency);var preferNativePrompt=preferNativeAlerts||browser.xboxOne;preferNativePrompt&&window.confirm?define("prompt",[embyWebComponentsBowerPath+"/prompt/nativeprompt"],returnFirstDependency):define("prompt",[embyWebComponentsBowerPath+"/prompt/prompt"],returnFirstDependency),browser.tizen||browser.operaTv||browser.chromecast||browser.orsay||browser.web0s||browser.ps4?define("loading",[embyWebComponentsBowerPath+"/loading/loading-legacy"],returnFirstDependency):define("loading",[embyWebComponentsBowerPath+"/loading/loading-lite"],returnFirstDependency),define("multi-download",[embyWebComponentsBowerPath+"/multidownload"],returnFirstDependency),Dashboard.isRunningInCordova()&&browser.android?(define("fileDownloader",["cordova/filedownloader"],returnFirstDependency),define("localassetmanager",["cordova/localassetmanager"],returnFirstDependency)):(define("fileDownloader",[embyWebComponentsBowerPath+"/filedownloader"],returnFirstDependency),define("localassetmanager",[apiClientBowerPath+"/localassetmanager"],returnFirstDependency)),define("screenLock",[embyWebComponentsBowerPath+"/resourcelocks/nullresourcelock"],returnFirstDependency),Dashboard.isRunningInCordova()&&browser.android?(define("resourceLockManager",[embyWebComponentsBowerPath+"/resourcelocks/resourcelockmanager"],returnFirstDependency),define("wakeLock",["cordova/wakelock"],returnFirstDependency),define("networkLock",["cordova/networklock"],returnFirstDependency)):(define("resourceLockManager",[embyWebComponentsBowerPath+"/resourcelocks/resourcelockmanager"],returnFirstDependency),define("wakeLock",[embyWebComponentsBowerPath+"/resourcelocks/nullresourcelock"],returnFirstDependency),define("networkLock",[embyWebComponentsBowerPath+"/resourcelocks/nullresourcelock"],returnFirstDependency)),Dashboard.isRunningInCordova()?define("castSenderApiLoader",[],getDummyCastSenderApiLoader):define("castSenderApiLoader",[],getCastSenderApiLoader)}function init(){Dashboard.isRunningInCordova()&&browserInfo.android&&define("nativedirectorychooser",["cordova/nativedirectorychooser"],returnFirstDependency),Dashboard.isRunningInCordova()&&browserInfo.android?define("localsync",["cordova/localsync"],returnFirstDependency):define("localsync",["scripts/localsync"],returnFirstDependency),define("livetvcss",["css!css/livetv.css"],returnFirstDependency),define("detailtablecss",["css!css/detailtable.css"],returnFirstDependency),define("autoorganizetablecss",["css!css/autoorganizetable.css"],returnFirstDependency),define("buttonenabled",["legacy/buttonenabled"],returnFirstDependency),initAfterDependencies()}function getRequirePromise(deps){return new Promise(function(resolve,reject){require(deps,resolve)})}function initAfterDependencies(){var list=[];window.fetch||list.push("fetch"),"function"!=typeof Object.assign&&list.push("objectassign"),Array.prototype.filter||list.push("arraypolyfills"),Function.prototype.bind||list.push("functionbind"),window.requestAnimationFrame||list.push("raf"),require(list,function(){createConnectionManager().then(function(){console.log("initAfterDependencies promises resolved"),require(["globalize"],function(globalize){window.Globalize=globalize,Promise.all([loadCoreDictionary(globalize),loadSharedComponentsDictionary(globalize)]).then(onGlobalizeInit)})})})}function loadSharedComponentsDictionary(globalize){var baseUrl="bower_components/emby-webcomponents/strings/",languages=["ar","bg-bg","ca","cs","da","de","el","en-gb","en-us","es-ar","es-mx","es","fi","fr","gsw","he","hr","hu","id","it","kk","ko","lt-lt","ms","nb","nl","pl","pt-br","pt-pt","ro","ru","sk","sl-si","sv","tr","uk","vi","zh-cn","zh-hk","zh-tw"],translations=languages.map(function(i){return{lang:i,path:baseUrl+i+".json"}});globalize.loadStrings({name:"sharedcomponents",translations:translations})}function loadCoreDictionary(globalize){var baseUrl="strings/",languages=["ar","bg-bg","ca","cs","da","de","el","en-gb","en-us","es-ar","es-mx","es","fa","fi","fr","gsw","he","hr","hu","id","it","kk","ko","ms","nb","nl","pl","pt-br","pt-pt","ro","ru","sl-si","sv","tr","uk","vi","zh-cn","zh-hk","zh-tw"],translations=languages.map(function(i){return{lang:i,path:baseUrl+i+".json"}});return globalize.defaultModule("core"),globalize.loadStrings({name:"core",translations:translations})}function onGlobalizeInit(){document.title=Globalize.translateDocument(document.title,"core"),require(["apphost"],function(appHost){loadPlugins([],appHost,browserInfo).then(onAppReady)})}function defineRoute(newRoute,dictionary){var baseRoute=Emby.Page.baseUrl(),path=newRoute.path;path=path.replace(baseRoute,""),console.log("Defining route: "+path),newRoute.dictionary=newRoute.dictionary||dictionary||"core",Emby.Page.addRoute(path,newRoute)}function defineCoreRoutes(appHost){console.log("Defining core routes"),defineRoute({path:"/addplugin.html",dependencies:[],autoFocus:!1,roles:"admin",controller:"scripts/addpluginpage"}),defineRoute({path:"/appservices.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/autoorganizelog.html",dependencies:["scripts/taskbutton","autoorganizetablecss"],controller:"dashboard/autoorganizelog",roles:"admin"}),defineRoute({path:"/autoorganizesmart.html",dependencies:["emby-button"],controller:"dashboard/autoorganizesmart",autoFocus:!1,roles:"admin"}),defineRoute({path:"/autoorganizetv.html",dependencies:["emby-checkbox","emby-input","emby-button","emby-select","emby-collapse"],controller:"dashboard/autoorganizetv",autoFocus:!1,roles:"admin"}),defineRoute({path:"/channelitems.html",dependencies:[],autoFocus:!1,transition:"fade"}),defineRoute({path:"/channels.html",dependencies:[],autoFocus:!1,transition:"fade",controller:"scripts/channels"}),defineRoute({path:"/channelsettings.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/cinemamodeconfiguration.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/connectlogin.html",dependencies:["emby-button","emby-input"],autoFocus:!1,anonymous:!0,startup:!0,controller:"scripts/connectlogin"}),defineRoute({path:"/dashboard.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/dashboardgeneral.html",controller:"dashboard/dashboardgeneral",autoFocus:!1,roles:"admin"}),defineRoute({path:"/dashboardhosting.html",dependencies:["emby-input","emby-button"],autoFocus:!1,roles:"admin",controller:"dashboard/dashboardhosting"}),defineRoute({path:"/device.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/devices.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/devicesupload.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/dlnaprofile.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/dlnaprofiles.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/dlnaserversettings.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/dlnasettings.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/edititemmetadata.html",dependencies:[],controller:"scripts/edititemmetadata",autoFocus:!1}),defineRoute({path:"/encodingsettings.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/forgotpassword.html",dependencies:["emby-input","emby-button"],anonymous:!0,startup:!0,controller:"scripts/forgotpassword"}),defineRoute({path:"/forgotpasswordpin.html",dependencies:["emby-input","emby-button"],autoFocus:!1,anonymous:!0,startup:!0,controller:"scripts/forgotpasswordpin"}),defineRoute({path:"/gamegenres.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/games.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/gamesrecommended.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/gamestudios.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/gamesystems.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/home.html",dependencies:[],autoFocus:!1,controller:"scripts/indexpage",transition:"fade",type:"home"}),defineRoute({path:"/index.html",dependencies:[],autoFocus:!1,isDefaultRoute:!0}),defineRoute({path:"/itemdetails.html",dependencies:["emby-button","scripts/livetvcomponents","paper-icon-button-light","emby-itemscontainer"],controller:"scripts/itemdetailpage",autoFocus:!1,transition:"fade"}),defineRoute({path:"/itemlist.html",dependencies:[],autoFocus:!1,controller:"scripts/itemlistpage",transition:"fade"}),defineRoute({path:"/kids.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/library.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/librarydisplay.html",dependencies:[],autoFocus:!1,roles:"admin",controller:"dashboard/librarydisplay"}),defineRoute({path:"/librarysettings.html",dependencies:["emby-collapse","emby-input","emby-button","emby-select"],autoFocus:!1,roles:"admin",controller:"dashboard/librarysettings"}),defineRoute({path:"/livetv.html",dependencies:["emby-button","livetvcss"],controller:"scripts/livetvsuggested",autoFocus:!1,transition:"fade"}),defineRoute({path:"/livetvguideprovider.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/livetvitems.html",dependencies:[],autoFocus:!1,controller:"scripts/livetvitems"}),defineRoute({path:"/livetvseriestimer.html",dependencies:["emby-checkbox","emby-input","emby-button","emby-collapse","scripts/livetvcomponents","scripts/livetvseriestimer","livetvcss"],autoFocus:!1,controller:"scripts/livetvseriestimer"}),defineRoute({path:"/livetvsettings.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/livetvstatus.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/livetvtuner.html",dependencies:[],autoFocus:!1,roles:"admin",controller:"dashboard/livetvtuner"}),defineRoute({path:"/log.html",dependencies:["emby-checkbox"],roles:"admin",controller:"dashboard/logpage"}),defineRoute({path:"/login.html",dependencies:["emby-button","emby-input"],autoFocus:!1,anonymous:!0,startup:!0,controller:"scripts/loginpage"}),defineRoute({path:"/metadataadvanced.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/metadataimages.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/metadatanfo.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/metadatasubtitles.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/movies.html",dependencies:["emby-button"],autoFocus:!1,controller:"scripts/moviesrecommended",transition:"fade"}),defineRoute({path:"/music.html",dependencies:[],controller:"scripts/musicrecommended",autoFocus:!1,transition:"fade"}),defineRoute({path:"/mypreferencesdisplay.html",dependencies:["emby-checkbox","emby-button","emby-select"],autoFocus:!1,transition:"fade",controller:"scripts/mypreferencesdisplay"}),defineRoute({path:"/mypreferenceshome.html",dependencies:["emby-checkbox","emby-button","emby-select"],autoFocus:!1,transition:"fade",controller:"scripts/mypreferenceshome"}),defineRoute({path:"/mypreferenceslanguages.html",dependencies:["emby-button","emby-checkbox","emby-select"],autoFocus:!1,transition:"fade",controller:"scripts/mypreferenceslanguages"}),defineRoute({path:"/mypreferencesmenu.html",dependencies:["emby-button"],autoFocus:!1,transition:"fade",controller:"scripts/mypreferencescommon"}),defineRoute({path:"/myprofile.html",dependencies:["emby-button","emby-collapse","emby-checkbox","emby-input"],autoFocus:!1,transition:"fade",controller:"scripts/myprofile"}),defineRoute({path:"/offline/offline.html",transition:"fade",controller:"offline/offline",dependencies:[],anonymous:!0,startup:!1}),defineRoute({path:"/mysync.html",dependencies:[],autoFocus:!1,transition:"fade",controller:"scripts/mysync"}),defineRoute({path:"/camerauploadsettings.html",dependencies:[],autoFocus:!1,transition:"fade",controller:"scripts/camerauploadsettings"}),defineRoute({path:"/mysyncjob.html",dependencies:[],autoFocus:!1,transition:"fade",controller:"scripts/syncjob"}),defineRoute({path:"/mysyncsettings.html",dependencies:["emby-checkbox","emby-input","emby-button","paper-icon-button-light"],autoFocus:!1,transition:"fade",controller:"scripts/mysyncsettings"}),defineRoute({path:"/notificationlist.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/notificationsetting.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/notificationsettings.html",controller:"scripts/notificationsettings",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/nowplaying.html",dependencies:["paper-icon-button-light","emby-slider","emby-button","emby-input","emby-itemscontainer"],controller:"scripts/nowplayingpage",autoFocus:!1,transition:"fade",fullscreen:!0,supportsThemeMedia:!0,enableMediaControl:!1}),defineRoute({path:"/photos.html",dependencies:[],autoFocus:!1,transition:"fade"}),defineRoute({path:"/playbackconfiguration.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/playlists.html",dependencies:[],autoFocus:!1,transition:"fade",controller:"scripts/playlists"}),defineRoute({path:"/plugincatalog.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/plugins.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/reports.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/scheduledtask.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/scheduledtasks.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/search.html",dependencies:[],controller:"scripts/searchpage"}),defineRoute({path:"/secondaryitems.html",dependencies:[],transition:"fade",autoFocus:!1,controller:"scripts/secondaryitems"}),defineRoute({path:"/selectserver.html",dependencies:["listViewStyle","emby-button"],autoFocus:!1,anonymous:!0,startup:!0,controller:"scripts/selectserver"}),defineRoute({path:"/serversecurity.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/shared.html",dependencies:[],autoFocus:!1,anonymous:!0}),defineRoute({path:"/streamingsettings.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/support.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/supporterkey.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/syncactivity.html",dependencies:[],autoFocus:!1,controller:"scripts/syncactivity"}),defineRoute({path:"/syncsettings.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/tv.html",dependencies:["paper-icon-button-light","emby-button"],autoFocus:!1,controller:"scripts/tvrecommended",transition:"fade"}),defineRoute({path:"/useredit.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/userlibraryaccess.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/usernew.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/userparentalcontrol.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/userpassword.html",dependencies:["emby-input","emby-button","emby-checkbox"],autoFocus:!1,controller:"scripts/userpasswordpage"}),defineRoute({path:"/userprofiles.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/wizardagreement.html",dependencies:["dashboardcss"],autoFocus:!1,anonymous:!0}),defineRoute({path:"/wizardcomponents.html",dependencies:["dashboardcss","emby-button","emby-input","emby-select"],autoFocus:!1,anonymous:!0,controller:"dashboard/wizardcomponents"}),defineRoute({path:"/wizardfinish.html",dependencies:["emby-button","dashboardcss"],autoFocus:!1,anonymous:!0,controller:"dashboard/wizardfinishpage"}),defineRoute({path:"/wizardlibrary.html",dependencies:["dashboardcss"],autoFocus:!1,anonymous:!0}),defineRoute({path:"/wizardsettings.html",dependencies:["dashboardcss"],autoFocus:!1,anonymous:!0}),defineRoute({path:"/wizardstart.html",dependencies:["dashboardcss"],autoFocus:!1,anonymous:!0}),defineRoute({path:"/wizarduser.html",dependencies:["dashboardcss","emby-input"],autoFocus:!1,anonymous:!0}),defineRoute({path:"/videoosd.html",dependencies:[],transition:"fade",controller:"scripts/videoosd",autoFocus:!1,type:"video-osd",supportsThemeMedia:!0,fullscreen:!0,enableMediaControl:!1}),defineRoute({path:"/configurationpage",dependencies:["jQuery"],autoFocus:!1,enableCache:!1,enableContentQueryString:!0,roles:"admin"}),defineRoute({path:"/",isDefaultRoute:!0,autoFocus:!1,dependencies:[]})}function loadPlugins(externalPlugins,appHost,browser,shell){console.log("Loading installed plugins");var list=["bower_components/emby-webcomponents/playback/playbackvalidation","bower_components/emby-webcomponents/playback/playaccessvalidation"];Dashboard.isRunningInCordova()&&browser.android?(document.createElement("audio").canPlayType("audio/flac").replace(/no/,"")&&document.createElement("audio").canPlayType('audio/ogg; codecs="opus"').replace(/no/,"")?window.VlcAudio=!0:window.VlcAudio=!0,list.push("cordova/vlcplayer")):Dashboard.isRunningInCordova()&&browser.safari&&list.push("cordova/audioplayer"),list.push("bower_components/emby-webcomponents/htmlaudioplayer/plugin"),Dashboard.isRunningInCordova()&&browser.safari&&list.push("cordova/chromecast"),Dashboard.isRunningInCordova()&&browser.android&&list.push("cordova/externalplayer"),list.push("bower_components/emby-webcomponents/htmlvideoplayer/plugin"),list.push("bower_components/emby-webcomponents/photoplayer/plugin"),appHost.supports("remotecontrol")&&(list.push("bower_components/emby-webcomponents/sessionplayer"),browser.chrome&&list.push("bower_components/emby-webcomponents/chromecastplayer")),list.push("bower_components/emby-webcomponents/youtubeplayer/plugin");for(var i=0,length=externalPlugins.length;i Emby Premiere, and it will be unlocked automatically.", + "AlreadyPaidHelp2": "Vous avez Emby Premi\u00e8re? Il suffit d'annuler cette bo\u00eete de dialogue, configurez Emby Premi\u00e8re dans votre tableau de bord Emby Server sous Aide -> Emby Premi\u00e8re, et il sera d\u00e9verrouill\u00e9 automatiquement.", "TabSuggestions": "Suggestions", "TabLatest": "Plus r\u00e9cents", "TabUpcoming": "\u00c0 venir", @@ -150,7 +152,7 @@ "OptionLikes": "J'aime", "OptionDislikes": "J'aime pas", "OptionActors": "Acteurs", - "OptionGuestStars": "Guest Stars", + "OptionGuestStars": "Vedettes invit\u00e9es", "OptionDirectors": "R\u00e9alisateurs", "OptionWriters": "Sc\u00e9naristes", "OptionProducers": "Producteurs", @@ -185,15 +187,15 @@ "OptionFolderSort": "R\u00e9pertoires", "OptionBudget": "Budget", "OptionRevenue": "Revenue", - "OptionPoster": "Poster", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "Backdrop", + "OptionPoster": "Affiche", + "OptionPosterCard": "Carte d'affiche", + "OptionBackdrop": "Arri\u00e8re-plan", "OptionTimeline": "Chronologie", "OptionThumb": "Vignette", "OptionThumbCard": "Carte de vignette", - "OptionBanner": "Banner", + "OptionBanner": "Banni\u00e8re", "OptionCriticRating": "Note de la critique", - "OptionVideoBitrate": "Video Bitrate", + "OptionVideoBitrate": "D\u00e9bit vid\u00e9o", "OptionResumable": "Reprise possible", "ScheduledTasksHelp": "S\u00e9lectionnez une t\u00e2che pour ajuster sa planification.", "TabMyPlugins": "Mes Plugins", @@ -205,7 +207,7 @@ "HeaderLatestSongs": "Derni\u00e8res chansons", "HeaderRecentlyPlayed": "Lus r\u00e9cemment", "HeaderFrequentlyPlayed": "Fr\u00e9quemment lus", - "LabelVideoType": "Video Type:", + "LabelVideoType": "Video:", "OptionBluray": "Bluray", "OptionDvd": "Dvd", "OptionIso": "Iso", @@ -214,34 +216,34 @@ "LabelLastResult": "Dernier r\u00e9sultat :", "OptionHasSubtitles": "Sous-titres", "OptionHasTrailer": "Bande-annonce", - "OptionHasThemeSong": "Theme Song", - "OptionHasThemeVideo": "Theme Video", + "OptionHasThemeSong": "Chanson th\u00e8me", + "OptionHasThemeVideo": "Vid\u00e9o th\u00e9matique", "TabMovies": "Films", "TabStudios": "Studios", "TabTrailers": "Bandes-annonces", "LabelArtists": "Artistes :", - "LabelArtistsHelp": "Separate multiple using ;", + "LabelArtistsHelp": "S\u00e9parer l'utilisation multiple ;", "HeaderLatestTrailers": "Derni\u00e8res bandes-annonces", "OptionHasSpecialFeatures": "Special Features", "OptionImdbRating": "Note IMDb", "OptionParentalRating": "Note Parentale", - "OptionPremiereDate": "Premiere Date", + "OptionPremiereDate": "Premi\u00e8re date", "TabBasic": "Basic", "TabAdvanced": "Avanc\u00e9e", "OptionContinuing": "En cours", - "OptionEnded": "Ended", - "HeaderAirDays": "Air Days", - "OptionSundayShort": "Sun", - "OptionMondayShort": "Mon", - "OptionTuesdayShort": "Tue", - "OptionWednesdayShort": "Wed", - "OptionThursdayShort": "Thu", - "OptionFridayShort": "Fri", - "OptionSaturdayShort": "Sat", - "OptionSunday": "Sunday", - "OptionMonday": "Monday", - "OptionTuesday": "Tuesday", - "OptionWednesday": "Wednesday", + "OptionEnded": "Fini", + "HeaderAirDays": "Jour diffusion", + "OptionSundayShort": "Dim", + "OptionMondayShort": "Lun", + "OptionTuesdayShort": "Mar", + "OptionWednesdayShort": "Mer", + "OptionThursdayShort": "Jeu", + "OptionFridayShort": "Ven", + "OptionSaturdayShort": "Sam", + "OptionSunday": "Dimanche", + "OptionMonday": "Lundi", + "OptionTuesday": "Mardi", + "OptionWednesday": "Mercredi", "OptionThursday": "Jeudi", "OptionFriday": "Vendredi", "OptionSaturday": "Samedi", @@ -284,40 +286,40 @@ "OptionIsSD": "SD", "OptionMetascore": "Metascore", "ButtonSelect": "S\u00e9lectionner", - "PismoMessage": "Utilizing Pismo File Mount through a donated license.", - "TangibleSoftwareMessage": "Utilizing Tangible Solutions Java\/C# converters through a donated license.", - "HeaderCredits": "Credits", - "PleaseSupportOtherProduces": "Please support other free products we utilize:", + "PismoMessage": "Utilisation de Pismo File Mount gr\u00e2ce \u00e0 une licence donn\u00e9e.", + "TangibleSoftwareMessage": "Utiliser Convertisseurs Java \/ C # de Tangible Solutions via une licence donn\u00e9e.", + "HeaderCredits": "Cr\u00e9dits", + "PleaseSupportOtherProduces": "Merci de supporter d'autres produits gratuits que nous utilisons:", "VersionNumber": "Version {0}", "TabPaths": "Chemins", "TabServer": "Serveur", - "TabTranscoding": "Transcoding", - "OptionRelease": "Official Release", - "LabelAllowServerAutoRestart": "Allow the server to restart automatically to apply updates", - "LabelAllowServerAutoRestartHelp": "The server will only restart during idle periods, when no users are active.", - "LabelRunServerAtStartup": "Run server at startup", - "LabelRunServerAtStartupHelp": "This will start the tray icon on windows startup. To start the windows service, uncheck this and run the service from the windows control panel. Please note that you cannot run both at the same time, so you will need to exit the tray icon before starting the service.", - "ButtonSelectDirectory": "Select Directory", - "LabelCachePath": "Cache path:", + "TabTranscoding": "Transcodage", + "OptionRelease": "Version officielle", + "LabelAllowServerAutoRestart": "Autoriser le serveur \u00e0 red\u00e9marrer automatiquement pour appliquer les mises \u00e0 jour", + "LabelAllowServerAutoRestartHelp": "Le serveur ne red\u00e9marrera que pendant les p\u00e9riodes d'inactivit\u00e9, alors qu'aucun utilisateur n'est actif.", + "LabelRunServerAtStartup": "Ex\u00e9cuter le serveur au d\u00e9marrage", + "LabelRunServerAtStartupHelp": "Cela d\u00e9marrera l'ic\u00f4ne dans la barre d'\u00e9tat lors du d\u00e9marrage de Windows. Pour d\u00e9marrer le service Windows, d\u00e9cochez la case et ex\u00e9cutez le service depuis le panneau de configuration de Windows. Veuillez noter que vous ne pouvez pas ex\u00e9cuter les deux en m\u00eame temps, donc vous devrez quitter l'ic\u00f4ne de la barre d'\u00e9tat avant de commencer le service.", + "ButtonSelectDirectory": "S\u00e9lectionnez le chemin", + "LabelCachePath": "Chemin de cache:", "DefaultMetadataLangaugeDescription": "Voici les options par d\u00e9faut. Elles peuvent \u00eatre personalis\u00e9es pour chaque m\u00e9diath\u00e8que", - "LabelCachePathHelp": "Specify a custom location for server cache files, such as images. Leave blank to use the server default.", + "LabelCachePathHelp": "Sp\u00e9cifiez un emplacement personnalis\u00e9 pour les fichiers de cache du serveur, tels que les images. Laissez vide pour utiliser le serveur par d\u00e9faut.", "LabelRecordingPath": "Chemin d'enregistrement par d\u00e9faut", "LabelMovieRecordingPath": "Emplacement des films (optionnel)", "LabelSeriesRecordingPath": "Emplacement des s\u00e9ries (optionnel)", "LabelRecordingPathHelp": "Sp\u00e9cifiez le r\u00e9pertoire d'enregistrement par d\u00e9faut. Si non renseign\u00e9, le r\u00e9pertoire Program Data du serveur sera utilis\u00e9.", - "LabelMetadataPath": "Metadata path:", - "LabelMetadataPathHelp": "Specify a custom location for downloaded artwork and metadata.", - "LabelTranscodingTempPath": "Transcoding temporary path:", - "LabelTranscodingTempPathHelp": "This folder contains working files used by the transcoder. Specify a custom path, or leave empty to use the default within the server's data folder.", + "LabelMetadataPath": "Chemin des m\u00e9tadonn\u00e9es:", + "LabelMetadataPathHelp": "Sp\u00e9cifiez un emplacement personnalis\u00e9 pour les illustrations et les m\u00e9tadonn\u00e9es t\u00e9l\u00e9charg\u00e9es.", + "LabelTranscodingTempPath": "Chemin du transcodage temporaire:", + "LabelTranscodingTempPathHelp": "Ce dossier contient des fichiers de travail utilis\u00e9s par le transcodeur. Sp\u00e9cifiez un chemin personnalis\u00e9 ou laissez vide pour utiliser la valeur par d\u00e9faut dans le dossier de donn\u00e9es du serveur.", "TabBasics": "Basics", "TabTV": "TV", - "TabGames": "Games", - "TabMusic": "Music", + "TabGames": "Jeux", + "TabMusic": "Musique", "TabOthers": "Autres", "OptionMovies": "Films", "OptionEpisodes": "\u00c9pisodes", "OptionOtherVideos": "Autres Films", - "LabelFanartApiKey": "Personal api key:", + "LabelFanartApiKey": "Cl\u00e9 d'api personnelle:", "LabelFanartApiKeyHelp": "Les requ\u00eates de fanart sans cl\u00e9 d'API personnelle renvoient des r\u00e9sultats approuv\u00e9s il y a plus de 7 jours. Avec une cl\u00e9 d'API personnelle, cette valeur descend \u00e0 48 heures, et si vous \u00eates aussi membre fanart VIP, cette valeur descendra encore plus, \u00e0 environ 10 minutes.", "ExtractChapterImagesHelp": "L'extraction d'images de chapitre permettra aux applications Emby d'afficher des menus visuels pour la s\u00e9lection des sc\u00e8nes. Le processus peut \u00eatre long et consommateur de ressources processeur et peut n\u00e9cessiter de nombreux gigaoctets de stockage. Il s'ex\u00e9cute quand des vid\u00e9os sont d\u00e9couvertes et \u00e9galement comme t\u00e2che planifi\u00e9e. La planification peut \u00eatre modifi\u00e9e dans les options du planificateur de tache. Il n'est pas conseill\u00e9 d'ex\u00e9cuter cette t\u00e2che pendant les heures d'usage intensif.", "LabelMetadataDownloadLanguage": "Langue pr\u00e9f\u00e9r\u00e9e de t\u00e9l\u00e9chargement des m\u00e9tadonn\u00e9es :", @@ -326,7 +328,7 @@ "HeaderPleaseSignIn": "Merci de vous connecter", "LabelUser": "User:", "LabelPassword": "Mot de passe :", - "ButtonManualLogin": "Manual Login", + "ButtonManualLogin": "Connexion manuelle", "TabGuide": "Guide", "TabChannels": "Cha\u00eenes", "TabCollections": "Collections", @@ -342,12 +344,12 @@ "TabSettings": "Param\u00e8tres", "ButtonRefreshGuideData": "Rafra\u00eechir les donn\u00e9es du guide", "ButtonRefresh": "Rafra\u00eechir", - "OptionPriority": "Priority", - "OptionRecordOnAllChannels": "Record on all channels", + "OptionPriority": "Priorit\u00e9", + "OptionRecordOnAllChannels": "Enregistrer sur tous les canaux", "OptionRecordAnytime": "Enregistrer \u00e0 n'importe quelle heure", "OptionRecordOnlyNewEpisodes": "Enregistrer seulement les nouveaux \u00e9pisodes", "HeaderDays": "Jours", - "HeaderActiveRecordings": "Active Recordings", + "HeaderActiveRecordings": "Enregistrements actifs", "HeaderLatestRecordings": "Derniers Enregistrements", "ButtonPlay": "Lire", "ButtonEdit": "\u00c9diter", @@ -784,7 +786,7 @@ "LabelKodiMetadataDateFormat": "Release date format:", "LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.", "LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files", - "LabelKodiMetadataSaveImagePathsHelp": "This is recommended if you have image file names that don't conform to Kodi guidelines.", + "LabelKodiMetadataSaveImagePathsHelp": "Ceci est recommand\u00e9 si vous avez des noms de fichiers image qui ne sont pas conformes aux directives Kodi.", "LabelKodiMetadataEnablePathSubstitution": "Enable path substitution", "LabelKodiMetadataEnablePathSubstitutionHelp": "Enables path substitution of image paths using the server's path substitution settings.", "OptionDisplayChannelsInline": "Afficher les cha\u00eenes comme des dossiers de m\u00e9dias", @@ -1931,8 +1933,8 @@ "EnableHardwareDecoding": "Activer le d\u00e9codage mat\u00e9riel", "EnableHardwareEncoding": "Activer l'encodage mat\u00e9riel", "Rate": "D\u00e9bit", - "ButtonScanAllLibraries": "Scan All Libraries", - "ScanLibrary": "Scan library", - "EnableStreamLooping": "Auto-loop live streams", - "EnableStreamLoopingHelp": "Enable this if live streams only contain a few seconds of data and need to be continuously requested." + "ButtonScanAllLibraries": "Actualiser toutes les m\u00e9diath\u00e8ques", + "ScanLibrary": "Actualiser la m\u00e9diath\u00e8que", + "EnableStreamLooping": "Boucle automatique du flux en direct", + "EnableStreamLoopingHelp": "Activez cette option si les streaming en direct ne contiennent que quelques secondes de donn\u00e9es et doivent \u00eatre redemand\u00e9s continuellement." } \ No newline at end of file diff --git a/dashboard-ui/strings/fr.json b/dashboard-ui/strings/fr.json index e26a5866b0..d19a6aae81 100644 --- a/dashboard-ui/strings/fr.json +++ b/dashboard-ui/strings/fr.json @@ -1,4 +1,6 @@ { + "SendMessage": "Envoyer un message", + "ViewPlaybackInfo": "Voir les informations de lecture", "LabelPrevious": "Pr\u00e9c\u00e9dent", "LabelFinish": "Terminer", "LabelNext": "Suivant", @@ -717,9 +719,9 @@ "PluginTabAppClassic": "Emby classique", "LabelEpisodeNamePlain": "Nom de l'\u00e9pisode", "LabelSeriesNamePlain": "Nom de la s\u00e9rie", - "ValueSeriesNamePeriod": "Series.name", - "ValueSeriesNameUnderscore": "Series_name", - "ValueEpisodeNamePeriod": "Episode.name", + "ValueSeriesNamePeriod": "Series.nom", + "ValueSeriesNameUnderscore": "Series_nom", + "ValueEpisodeNamePeriod": "Episode.nom", "ValueEpisodeNameUnderscore": "Episode_name", "LabelSeasonNumberPlain": "Num\u00e9ro de la saison", "LabelEpisodeNumberPlain": "Num\u00e9ro d'\u00e9pisode", diff --git a/dashboard-ui/strings/gsw.json b/dashboard-ui/strings/gsw.json index 532bea6959..44473d64e9 100644 --- a/dashboard-ui/strings/gsw.json +++ b/dashboard-ui/strings/gsw.json @@ -1,4 +1,6 @@ { + "SendMessage": "Send message", + "ViewPlaybackInfo": "View playback info", "LabelPrevious": "Vorher", "LabelFinish": "Beende", "LabelNext": "N\u00f6chst", diff --git a/dashboard-ui/strings/he.json b/dashboard-ui/strings/he.json index a40b07c8a5..18cf73ef98 100644 --- a/dashboard-ui/strings/he.json +++ b/dashboard-ui/strings/he.json @@ -1,4 +1,6 @@ { + "SendMessage": "Send message", + "ViewPlaybackInfo": "View playback info", "LabelPrevious": "\u05d4\u05e7\u05d5\u05d3\u05dd", "LabelFinish": "\u05e1\u05d9\u05d9\u05dd", "LabelNext": "\u05d4\u05d1\u05d0", diff --git a/dashboard-ui/strings/hr.json b/dashboard-ui/strings/hr.json index 29e55668f5..02f52d1240 100644 --- a/dashboard-ui/strings/hr.json +++ b/dashboard-ui/strings/hr.json @@ -1,4 +1,6 @@ { + "SendMessage": "Send message", + "ViewPlaybackInfo": "View playback info", "LabelPrevious": "Prethodni", "LabelFinish": "Kraj", "LabelNext": "Sljede\u0107i", diff --git a/dashboard-ui/strings/hu.json b/dashboard-ui/strings/hu.json index 1c070dc1c0..af66ef5fa6 100644 --- a/dashboard-ui/strings/hu.json +++ b/dashboard-ui/strings/hu.json @@ -1,4 +1,6 @@ { + "SendMessage": "Send message", + "ViewPlaybackInfo": "View playback info", "LabelPrevious": "El\u0151z\u0151", "LabelFinish": "Befejez", "LabelNext": "K\u00f6vetkez\u0151", @@ -849,9 +851,9 @@ "LabelImage": "Image:", "HeaderImages": "K\u00e9pek", "HeaderBackdrops": "H\u00e1tterek", - "HeaderAddUpdateImage": "Add\/Update Image", + "HeaderAddUpdateImage": "K\u00e9p hozz\u00e1ad\u00e1sa \/ friss\u00edt\u00e9se", "LabelDropImageHere": "Dobd ide a k\u00e9pet", - "LabelJpgPngOnly": "JPG\/PNG only", + "LabelJpgPngOnly": "Csak JPG\/PNG", "LabelImageType": "Image type:", "OptionPrimary": "Primary", "OptionArt": "Art", @@ -1683,7 +1685,7 @@ "DashboardTourMobile": "The Emby Server dashboard works great on smartphones and tablets. Manage your server from the palm of your hand anytime, anywhere.", "DashboardTourSync": "Sync your personal media to your devices for offline viewing.", "TabExtras": "Extr\u00e1k", - "HeaderUploadImage": "Upload Image", + "HeaderUploadImage": "K\u00e9p felt\u00f6lt\u00e9s", "DeviceLastUsedByUserName": "Last used by {0}", "HeaderDeleteDevice": "Delete Device", "DeleteDeviceConfirmation": "Are you sure you wish to delete this device? It will reappear the next time a user signs in with it.", diff --git a/dashboard-ui/strings/id.json b/dashboard-ui/strings/id.json index 3393ed8c86..8948de5f2a 100644 --- a/dashboard-ui/strings/id.json +++ b/dashboard-ui/strings/id.json @@ -1,4 +1,6 @@ { + "SendMessage": "Send message", + "ViewPlaybackInfo": "View playback info", "LabelPrevious": "Sebelumnya", "LabelFinish": "Selesai", "LabelNext": "Berikutnya", diff --git a/dashboard-ui/strings/it.json b/dashboard-ui/strings/it.json index 1ce0fd03cc..5803548a3e 100644 --- a/dashboard-ui/strings/it.json +++ b/dashboard-ui/strings/it.json @@ -1,4 +1,6 @@ { + "SendMessage": "Invio messaggio", + "ViewPlaybackInfo": "Vedi info sulla riproduzione", "LabelPrevious": "Precedente", "LabelFinish": "Finito", "LabelNext": "Prossimo", diff --git a/dashboard-ui/strings/kk.json b/dashboard-ui/strings/kk.json index ecfac0f12f..7484d71aff 100644 --- a/dashboard-ui/strings/kk.json +++ b/dashboard-ui/strings/kk.json @@ -1,4 +1,6 @@ { + "SendMessage": "Send message", + "ViewPlaybackInfo": "View playback info", "LabelPrevious": "\u0410\u043b\u0434\u044b\u04a3\u0493\u044b", "LabelFinish": "\u0410\u044f\u049b\u0442\u0430\u0443", "LabelNext": "\u041a\u0435\u043b\u0435\u0441\u0456", diff --git a/dashboard-ui/strings/ko.json b/dashboard-ui/strings/ko.json index a7026e672f..c3e843e94f 100644 --- a/dashboard-ui/strings/ko.json +++ b/dashboard-ui/strings/ko.json @@ -1,4 +1,6 @@ { + "SendMessage": "Send message", + "ViewPlaybackInfo": "View playback info", "LabelPrevious": "\uc774\uc804", "LabelFinish": "\ub05d\ub0b4\uae30", "LabelNext": "\ub2e4\uc74c", diff --git a/dashboard-ui/strings/lt-lt.json b/dashboard-ui/strings/lt-lt.json index 48065cff07..5bc52d0451 100644 --- a/dashboard-ui/strings/lt-lt.json +++ b/dashboard-ui/strings/lt-lt.json @@ -1,4 +1,6 @@ { + "SendMessage": "Send message", + "ViewPlaybackInfo": "View playback info", "LabelPrevious": "Ankstesnis", "LabelFinish": "Baigti", "LabelNext": "Kitas", diff --git a/dashboard-ui/strings/ms.json b/dashboard-ui/strings/ms.json index 455745420c..03f804cb80 100644 --- a/dashboard-ui/strings/ms.json +++ b/dashboard-ui/strings/ms.json @@ -1,4 +1,6 @@ { + "SendMessage": "Send message", + "ViewPlaybackInfo": "View playback info", "LabelPrevious": "Sebelumnya", "LabelFinish": "Habis", "LabelNext": "Seterusnya", diff --git a/dashboard-ui/strings/nb.json b/dashboard-ui/strings/nb.json index 740347afa3..84f75503f9 100644 --- a/dashboard-ui/strings/nb.json +++ b/dashboard-ui/strings/nb.json @@ -1,4 +1,6 @@ { + "SendMessage": "Send message", + "ViewPlaybackInfo": "View playback info", "LabelPrevious": "Forrige", "LabelFinish": "Ferdig", "LabelNext": "Neste", diff --git a/dashboard-ui/strings/nl.json b/dashboard-ui/strings/nl.json index 0a283adc83..d943915ad3 100644 --- a/dashboard-ui/strings/nl.json +++ b/dashboard-ui/strings/nl.json @@ -1,4 +1,6 @@ { + "SendMessage": "Send message", + "ViewPlaybackInfo": "View playback info", "LabelPrevious": "Vorige", "LabelFinish": "Voltooien", "LabelNext": "Volgende", diff --git a/dashboard-ui/strings/pl.json b/dashboard-ui/strings/pl.json index 0da8ebfda5..67ff100433 100644 --- a/dashboard-ui/strings/pl.json +++ b/dashboard-ui/strings/pl.json @@ -1,29 +1,31 @@ { + "SendMessage": "Wy\u015blij wiadomo\u015b\u0107", + "ViewPlaybackInfo": "Wy\u015bwietlaj informacje o odtwarzaniu", "LabelPrevious": "Wstecz", - "LabelFinish": "Koniec", + "LabelFinish": "Zako\u0144cz", "LabelNext": "Dalej", "LabelYoureDone": "Sko\u0144czy\u0142e\u015b!", "WelcomeToProject": "Witaj w Emby!", - "ThisWizardWillGuideYou": "Asystent pomo\u017ce Ci podczas procesu instalacji. Aby rozpocz\u0105\u0107, wybierz sw\u00f3j preferowany j\u0119zyk.", + "ThisWizardWillGuideYou": "Niniejszy kreator pomo\u017ce Ci przej\u015b\u0107 przez proces instalacji. Najpierw, wybierz preferowany przez siebie j\u0119zyk.", "TellUsAboutYourself": "Opowiedz nam o sobie", "ButtonQuickStartGuide": "Skr\u00f3cona instrukcja obs\u0142ugi", "LabelYourFirstName": "Twoje imi\u0119:", - "MoreUsersCanBeAddedLater": "Mo\u017cesz doda\u0107 wi\u0119cej u\u017cytkownik\u00f3w p\u00f3\u017aniej u\u017cywaj\u0105c kokpitu.", - "UserProfilesIntro": "Emby zawiera wbudowane wsparcie dla profili u\u017cytkownik\u00f3w, pozwalaj\u0105c ka\u017cdemu u\u017cytkownikowi na w\u0142asne ustawienia wy\u015bwietlania, stanu odtwarzania i kontroli rodzicielskiej.", + "MoreUsersCanBeAddedLater": "Mo\u017cesz p\u00f3\u017aniej doda\u0107 kolejnych u\u017cytkownik\u00f3w u\u017cywaj\u0105c kokpitu.", + "UserProfilesIntro": "Emby zawiera wbudowan\u0105 obs\u0142ug\u0119 profili u\u017cytkownik\u00f3w, umo\u017cliwiaj\u0105c ka\u017cdemu u\u017cytkownikowi personalizacj\u0119 ustawie\u0144 wy\u015bwietlania, stanu odtwarzania i kontroli rodzicielskiej.", "WizardCompleted": "To wszystko co teraz potrzebujemy. Emby zacz\u0105\u0142 zbiera\u0107 informacje o twojej bibliotece medi\u00f3w. Sprawd\u017a nasze aplikacje, a nast\u0119pnie kliknij Koniec<\/b> aby zobaczy\u0107 Kokpit<\/b>.", "LabelConfigureSettings": "Konfiguruj ustawienia", "HeaderTermsOfService": "Warunki Us\u0142ugi Emby", - "MessagePleaseAcceptTermsOfService": "Prosz\u0119 zaakceptowa\u0107 warunki us\u0142ugi oraz polityk\u0119 prywatno\u015bci przed kontunuowaniem", - "OptionIAcceptTermsOfService": "Akceptuje warunki us\u0142ugi", + "MessagePleaseAcceptTermsOfService": "Prosimy o zaakceptowanie warunk\u00f3w u\u017cytkowania oraz polityki prywatno\u015bci przed kontynuowaniem.", + "OptionIAcceptTermsOfService": "Akceptuj\u0119 warunki u\u017cytkowania", "ButtonPrivacyPolicy": "Polityka prywatno\u015bci", - "ButtonTermsOfService": "Warunki Us\u0142ugi", + "ButtonTermsOfService": "Warunki u\u017cytkowania", "ButtonConvertMedia": "Konwertuj media", "ButtonOrganize": "Organizuj", - "HeaderSupporterBenefits": "Korzy\u015bci Emby Premiere", - "HeaderAddUser": "Dodaj U\u017cytkownika", - "LabelAddConnectSupporterHelp": "Aby doda\u0107 u\u017cytkownika kt\u00f3ry nie jest wylistowany, musisz najpierw po\u0142\u0105czy\u0107 jego konto z Emby Connect z jego strony profilu u\u017cytkownika", + "HeaderSupporterBenefits": "Korzy\u015bci z u\u017cywania Emby Premiere", + "HeaderAddUser": "Dodaj u\u017cytkownika", + "LabelAddConnectSupporterHelp": "Dodanie u\u017cytkownika, kt\u00f3rego nie ma na li\u015bcie, wymaga po\u0142\u0105czenia jego konta, z poziomu jego profilu, z us\u0142ug\u0105 Emby Connect.", "LabelPinCode": "Kod PIN:", - "OptionHideWatchedContentFromLatestMedia": "Ukryj obej\u017can\u0105 zawarto\u015b\u0107 z najnowszych medi\u00f3w", + "OptionHideWatchedContentFromLatestMedia": "Ukrywaj obejrzan\u0105 zawarto\u015b\u0107 z listy ostatnio dodanych", "DeleteMedia": "Usu\u0144 media", "HeaderSync": "Synchronizacja", "HeaderUpcomingNews": "Nadchodz\u0105ce nowo\u015bci", @@ -34,11 +36,11 @@ "All": "Wszystko", "OptionDev": "Dev", "OptionBeta": "Beta", - "HeaderTaskTriggers": "Wyzwalacze Zada\u0144", + "HeaderTaskTriggers": "Wyzwalacze zada\u0144", "HeaderTV": "TV", - "HeaderAudio": "Audio", + "HeaderAudio": "D\u017awi\u0119k", "HeaderVideo": "Wideo", - "HeaderPaths": "\u015acie\u017cki", + "HeaderPaths": "Foldery", "CategorySync": "Synchronizacja", "TabPlaylist": "Lista", "HeaderInstantMix": "Natychmiastowy mix", @@ -46,40 +48,40 @@ "HeaderInstalledServices": "Zainstalowane us\u0142ugi", "HeaderAvailableServices": "Dost\u0119pne us\u0142ugi", "MessageNoServicesInstalled": "Brak zainstalowanych us\u0142ug.", - "HeaderToAccessPleaseEnterEasyPinCode": "Wprowad\u017a pin aby uzyska\u0107 dost\u0119p", + "HeaderToAccessPleaseEnterEasyPinCode": "Wprowad\u017a kod, aby uzyska\u0107 dost\u0119p", "ButtonConfigurePinCode": "Konfiguruj kod pin", "RegisterWithPayPal": "Zarejestruj z PayPal", - "LabelSyncTempPath": "\u015acie\u017cka do plik\u00f3w tymczasowych:", - "LabelSyncTempPathHelp": "Okre\u015b w\u0142asny folder synchronizacji. Utworzone skonwertowane media podczas synchronizacji b\u0119d\u0105 zapisywane tutaj.", - "LabelCustomCertificatePath": "W\u0142a\u015bna \u015bcie\u017cka do certyfiaktu:", - "LabelCustomCertificatePathHelp": "Dostarcz sw\u00f3j w\u0142asny plik .pfx certyfikatu ssl. Je\u017celi to pominiesz serwer stworzy samo-podpisany certyfikat.", + "LabelSyncTempPath": "Folder plik\u00f3w tymczasowych:", + "LabelSyncTempPathHelp": "Okre\u015bla w\u0142asny folder synchronizacji. Skonwertowane media, utworzone podczas synchronizacji, b\u0119d\u0105 zapisywane tutaj.", + "LabelCustomCertificatePath": "Folder w\u0142asnego certyfikatu:", + "LabelCustomCertificatePathHelp": "Umo\u017cliwia dostarczenie w\u0142asnego pliku certyfikatu SSL w formacie .pfx. W przypadku pomini\u0119cia tego ustawienia, serwer utworzy certyfikat z podpisem w\u0142asnym.", "TitleNotifications": "Powiadomienia", - "OptionDetectArchiveFilesAsMedia": "Wykryj spakowane pliki jako media", - "OptionDetectArchiveFilesAsMediaHelp": "Je\u015bli w\u0142\u0105czone, pliki z rozszezeniem .rar i .zip bed\u0105 wykrywane jako pliki z mediami.", - "LabelEnterConnectUserName": "Nazwa u\u017cytkownika lub email:", - "LabelEnterConnectUserNameHelp": "To twoje konto online Emby lub email.", + "OptionDetectArchiveFilesAsMedia": "Wykrywaj zarchiwizowane pliki jako media", + "OptionDetectArchiveFilesAsMediaHelp": "Umo\u017cliwia wykrywanie plik\u00f3w archiwum, w formatach .rar i .zip, jako pliki medi\u00f3w.", + "LabelEnterConnectUserName": "Nazwa u\u017cytkownika lub adres pocztowy:", + "LabelEnterConnectUserNameHelp": "Okre\u015bla nazw\u0119 u\u017cytkownika lub adres pocztowy konta Emby Connect.", "HeaderSyncJobInfo": "Zadanie synchronizacji", - "FolderTypeMixed": "R\u00f3\u017cna zawarto\u015b\u0107", + "FolderTypeMixed": "Zawarto\u015b\u0107 mieszana", "FolderTypeMovies": "Filmy", "FolderTypeMusic": "Muzyka", "FolderTypePhotos": "Zdj\u0119cia", "FolderTypeMusicVideos": "Teledyski", "FolderTypeGames": "Gry", "FolderTypeBooks": "Ksi\u0105\u017cki", - "FolderTypeTvShows": "TV", + "FolderTypeTvShows": "Seriale", "FolderTypeInherit": "Dziedzicz", "LabelContentType": "Typ zawarto\u015bci", - "TitleScheduledTasks": "Zaplanowane zadania", - "HeaderSetupLibrary": "Ustaw swoje biblioteki medi\u00f3w", + "TitleScheduledTasks": "Harmonogram zada\u0144", + "HeaderSetupLibrary": "Skonfiguruj swoje biblioteki medi\u00f3w", "LabelFolderType": "Typ folderu:", "LabelCountry": "Kraj:", "LabelLanguage": "J\u0119zyk:", "LabelTimeLimitHours": "Limi czasu (godziny):", "HeaderPreferredMetadataLanguage": "Preferowany j\u0119zyk metadanych", - "LabelSaveLocalMetadata": "Zapisz artwork i metadata w folderach medi\u00f3w", - "LabelSaveLocalMetadataHelp": "Zapisywanie artwork\u00f3w i metadanych w folderach z mediami, umie\u015bci je w miejscu gdzie mog\u0105 by\u0107 \u0142atwo edytowane.", - "LabelDownloadInternetMetadata": "Pobieraj artworki i metadane z internetu", - "LabelDownloadInternetMetadataHelp": "Serwer Emby mo\u017c\u0119 pobiera\u0107 informacje o twoich mediach i udost\u0119pni\u0107 ich bogat\u0105 prezentacj\u0119.", + "LabelSaveLocalMetadata": "Zapisuj grafiki i metadane w folderach medi\u00f3w", + "LabelSaveLocalMetadataHelp": "Umo\u017cliwia zapisywanie grafik i metadanych bezpo\u015brednio w folderach medi\u00f3w, co umo\u017cliwia ich \u0142atw\u0105 edycj\u0119.", + "LabelDownloadInternetMetadata": "Pobieraj grafiki i metadane z Internetu", + "LabelDownloadInternetMetadataHelp": "Umo\u017cliwia pobieranie przez serwer Emby informacji o mediach, dostarczaj\u0105c ich bogat\u0105 prezentacj\u0119.", "TabPassword": "Has\u0142o", "TabLibraryAccess": "Dost\u0119p do biblioteki", "TabAccess": "Dost\u0119p", @@ -90,29 +92,29 @@ "TabNotifications": "Powiadomienia", "TabCollectionTitles": "Tytu\u0142y", "HeaderDeviceAccess": "Dost\u0119p urz\u0105dze\u0144", - "OptionEnableAccessFromAllDevices": "W\u0142\u0105cz dost\u0119p z wszystkich urzadze\u0144", - "OptionEnableAccessToAllChannels": "W\u0142\u0105cz dost\u0119p do wszystkich kana\u0142\u00f3w", - "OptionEnableAccessToAllLibraries": "W\u0142\u0105cz dost\u0119p do wszystkich bibliotek", - "DeviceAccessHelp": "Dotyczy to tylko urz\u0105dze\u0144 kt\u00f3re mo\u017cemy unikalnie zidentyfikowa\u0107, nie przeszkodzi to dost\u0119powi przez przegl\u0105dark\u0119. Filtorawnie urz\u0105dze\u0144 u\u017cytkownik\u00f3w zabroni korzystanie im z nich do p\u00f3ki nie otrzymaj\u0105 autoryzacji.", - "LabelDisplayMissingEpisodesWithinSeasons": "Wy\u015bwietl brakuj\u0105ce odcinki w sezonach", - "LabelDisplayMissingEpisodesWithinSeasonsHelp": "To musi by\u0107 w\u0142\u0105czone w bibliotekach TV w", - "LabelUnairedMissingEpisodesWithinSeasons": "Wy\u015bwietl nie wydanie odcinki w sezonach", - "ImportMissingEpisodesHelp": "Je\u015bli opcja jest w\u0142\u0105czona, w\u00f3wczas informacje o brakuj\u0105cych epizodach zostan\u0105 zaimportowane do Emby oraz b\u0119d\u0105 wy\u015bwietlane. Mo\u017ce to wyd\u0142u\u017cy\u0107 czas skanowania bilblioteki.", - "MessageEnablingOptionLongerScans": "W\u0142\u0105czenie tej opcji mo\u017ce spowodowa\u0107 znaczne wyd\u0142u\u017cenie czasu skanowania biblioteki.", + "OptionEnableAccessFromAllDevices": "Umo\u017cliwiaj dost\u0119p z wszystkich urz\u0105dze\u0144", + "OptionEnableAccessToAllChannels": "Umo\u017cliwiaj dost\u0119p do wszystkich kana\u0142\u00f3w", + "OptionEnableAccessToAllLibraries": "Umo\u017cliwiaj dost\u0119p do wszystkich bibliotek", + "DeviceAccessHelp": "Dotyczy to tylko urz\u0105dze\u0144, kt\u00f3re mog\u0105 zosta\u0107 niepowtarzalnie zidentyfikowane i nie blokuje dost\u0119pu przez przegl\u0105dark\u0119. Filtrowanie dost\u0119pu urz\u0105dze\u0144 u\u017cytkownik\u00f3w, uniemo\u017cliwi im korzystanie z urz\u0105dze\u0144, do momentu zatwierdzenia dost\u0119pu.", + "LabelDisplayMissingEpisodesWithinSeasons": "Wy\u015bwietlaj w sezonach brakuj\u0105ce odcinki", + "LabelDisplayMissingEpisodesWithinSeasonsHelp": "Ta opcja, musi zosta\u0107 dodatkowo aktywowana, w bibliotece seriali w konfiguracji serwera Emby.", + "LabelUnairedMissingEpisodesWithinSeasons": "Wy\u015bwietlaj w sezonach odcinki z planowan\u0105 emisj\u0105", + "ImportMissingEpisodesHelp": "W przypadku aktywacji tej opcji, informacje o brakuj\u0105cych odcinkach zostan\u0105 zaimportowane do bazy Emby i b\u0119d\u0105 wy\u015bwietlane na listach sezon\u00f3w i seriali. Mo\u017ce to jednak znacznie wyd\u0142u\u017cy\u0107 czas skanowania biblioteki.", + "MessageEnablingOptionLongerScans": "Aktywowanie tej opcji mo\u017ce spowodowa\u0107 znaczne wyd\u0142u\u017cenie czasu skanowania biblioteki.", "HeaderVideoPlaybackSettings": "Ustawienia odtwarzacza wideo", - "OptionDownloadInternetMetadataTvPrograms": "Pobierz metadane dla program\u00f3w wy\u015bwietlonych w przewodniku.", + "OptionDownloadInternetMetadataTvPrograms": "Pobieraj metadane dla program\u00f3w wy\u015bwietlanych w przewodniku", "HeaderPlaybackSettings": "Ustawienia odtwarzania", - "LabelAudioLanguagePreference": "Preferencje j\u0119zyka audio:", - "LabelSubtitleLanguagePreference": "Preferencje j\u0119zyka napis\u00f3w:", + "LabelAudioLanguagePreference": "Preferowany j\u0119zyk \u015bcie\u017cki d\u017awi\u0119kowej:", + "LabelSubtitleLanguagePreference": "Preferowany j\u0119zyk \u015bcie\u017cki napis\u00f3w:", "OptionDefaultSubtitles": "Domy\u015blny", - "OptionSmartSubtitles": "Smart", - "OptionSmartSubtitlesHelp": "Napisy odpowiadaj\u0105ce ustawieniom j\u0119zyka zostan\u0105 za\u0142adowane gdy dialogi s\u0105 w j\u0119zyku obcym.", - "OptionOnlyForcedSubtitles": "Tylko wymuszone napisy", + "OptionSmartSubtitles": "Inteligentny", + "OptionSmartSubtitlesHelp": "Napisy w preferowanym j\u0119zyku zostan\u0105 wczytane, w przypadku \u015bcie\u017cki d\u017awi\u0119kowej w j\u0119zyku obcym.", + "OptionOnlyForcedSubtitles": "Tylko napisy wymuszone", "OptionAlwaysPlaySubtitles": "Zawsze wy\u015bwietlaj napisy", - "OptionDefaultSubtitlesHelp": "Napisy s\u0105 wy\u015bwietlane w oparciu o informacje zawarte w metadanych. Preferencje j\u0119zykowe s\u0105 brane pod uwag\u0119 gdy dost\u0119pnych jest wiele opcji napis\u00f3w. ", - "OptionOnlyForcedSubtitlesHelp": "Tylko napisy oznaczone jako wymuszone bed\u0105 \u0142adowane.", - "OptionAlwaysPlaySubtitlesHelp": "Napisy pasuj\u0105ce do preferencji wybranego jezyka b\u0119d\u0105 \u0142adowane niezale\u017cnie od \u015bcie\u017cki audio.", - "OptionNoSubtitlesHelp": "Napisy domyslnie nie b\u0119d\u0105 \u0142adowane", + "OptionDefaultSubtitlesHelp": "Napisy b\u0119d\u0105 wczytywane w oparciu o metadane \u015bcie\u017cki d\u017awi\u0119kowej - flagi domy\u015blna i wymuszona. J\u0119zyk preferowany b\u0119dzie brany pod uwag\u0119 w przypadku wielu dost\u0119pnych opcji.", + "OptionOnlyForcedSubtitlesHelp": "Tylko napisy oznaczone jako wymuszone b\u0119d\u0105 wczytywane.", + "OptionAlwaysPlaySubtitlesHelp": "Napisy w preferowanym j\u0119zyku zostan\u0105 wczytane, niezale\u017cnie od j\u0119zyka \u015bcie\u017cki d\u017awi\u0119kowej.", + "OptionNoSubtitlesHelp": "Napisy nie b\u0119d\u0105 domy\u015blnie wczytywane.", "TabProfiles": "Profile", "TabSecurity": "Zabezpieczenia", "ButtonAddUser": "Dodaj u\u017cytkownika", @@ -121,23 +123,23 @@ "ButtonResetPassword": "Zresetuj has\u0142o", "LabelNewPassword": "Nowe has\u0142o:", "LabelNewPasswordConfirm": "Potwierd\u017a nowe has\u0142o:", - "HeaderCreatePassword": "Stw\u00f3rz has\u0142o:", - "LabelCurrentPassword": "Bie\u017c\u0105ce has\u0142o:", - "LabelMaxParentalRating": "Maksymalna dozwolona klasyfikacja rodzicielska:", - "MaxParentalRatingHelp": "Zawarto\u015b\u0107 z wy\u017cszym ratingiem b\u0119dzie schowana dla tego u\u017cytkownika.", + "HeaderCreatePassword": "Utw\u00f3rz has\u0142o:", + "LabelCurrentPassword": "Aktualne has\u0142o:", + "LabelMaxParentalRating": "Maksymalnie dozwolona kategoria wiekowa:", + "MaxParentalRatingHelp": "Zawarto\u015b\u0107, z wy\u017csz\u0105 kategori\u0105 wiekow\u0105, b\u0119dzie ukryta przed tym u\u017cytkownikiem.", "LibraryAccessHelp": "Wybierz foldery medi\u00f3w do udostepnienia temu u\u017cytkownikowi. Administratorzy b\u0119d\u0105 mogli edytowa\u0107 wszystkie foldery u\u017cywaj\u0105\u0107 menagera metadanych", "ChannelAccessHelp": "Wybierz kana\u0142y do udost\u0119pnienia temu u\u017cytkownikowi. Administratorzy b\u0119d\u0105 mogli edytowa\u0107 wszystkie kana\u0142y u\u017cywaj\u0105\u0107 menagera metadanych", "ButtonDeleteImage": "Usu\u0144 obraz", "LabelSelectUsers": "Wybierz u\u017cytkownik\u00f3w", "ButtonUpload": "Wy\u015blij", "HeaderUploadNewImage": "Wy\u015blij nowy obrazek", - "ImageUploadAspectRatioHelp": "1:1 zalecany stosunek. Tylko JPG\/PNG.", + "ImageUploadAspectRatioHelp": "Zalecane proporcje 1:1. Tylko JPG\/PNG.", "MessageNothingHere": "Nic tutaj nie ma.", - "MessagePleaseEnsureInternetMetadata": "Upewnij si\u0119 \u017ce pobieranie metadanych z internetu jest w\u0142\u0105czone.", + "MessagePleaseEnsureInternetMetadata": "Upewnij si\u0119, \u017ce pobieranie metadanych z internetu jest aktywne.", "AlreadyPaidHelp1": "Je\u015bli zap\u0142aci\u0142e\u015b za instalacj\u0119 starszej wersji aplikacji Media Browser dla Androida, nie musisz p\u0142aci\u0107 ponownie \u017ceby aktywowa\u0107 t\u0105 wersj\u0119. Kliknij OK aby wys\u0142a\u0107 nam email na adres {0} a my aktywujemy j\u0105 dla Ciebie.", "AlreadyPaidHelp2": "Posiadasz subskrybcj\u0119 Emby Premiere? Anuluj to okno, ustaw Emby Premiere w panelu swojego serwera Emby u\u017cywaj\u0105c Pomoc -> Emby Premiere. Aplikacja zostanie odblokowana automatycznie.", - "TabSuggestions": "Sugestie", - "TabLatest": "Najnowsze", + "TabSuggestions": "Polecane", + "TabLatest": "Ostatnio dodane", "TabUpcoming": "Nadchodz\u0105ce", "TabShows": "Seriale", "TabEpisodes": "Odcinki", @@ -159,7 +161,7 @@ "HeaderContinueListening": "Kontynuuj s\u0142uchanie", "HeaderNextUp": "Nast\u0119pny", "NoNextUpItemsMessage": "Nie znaleziono nieczego. Zacznij ogl\u0105da\u0107 twoje seriale!", - "HeaderLatestEpisodes": "Ostanie odcinki", + "HeaderLatestEpisodes": "Odcinki ostatnio dodane", "HeaderPersonTypes": "Typy Os\u00f3b:", "TabSongs": "Utwory", "TabAlbums": "Albumy", @@ -167,14 +169,14 @@ "TabAlbumArtists": "Arty\u015bci albumu", "TabMusicVideos": "Teledyski", "ButtonSort": "Sortuj", - "OptionPlayed": "Odtworzony", - "OptionUnplayed": "Nie odtworzony", + "OptionPlayed": "Obejrzany", + "OptionUnplayed": "Nieobejrzany", "OptionAscending": "Rosn\u0105co", "OptionDescending": "Malej\u0105co", "OptionRuntime": "D\u0142ugo\u015b\u0107 filmu", "OptionReleaseDate": "Data Wydania", - "OptionPlayCount": "Ilo\u015b\u0107 odtworze\u0144", - "OptionDatePlayed": "Data odtworzenia", + "OptionPlayCount": "Liczba odtworze\u0144", + "OptionDatePlayed": "Data odtwarzania", "OptionDateAdded": "Data dodania", "OptionAlbumArtist": "Artysta albumu", "OptionArtist": "Artysta", @@ -193,7 +195,7 @@ "OptionThumbCard": "Miniatura", "OptionBanner": "Baner", "OptionCriticRating": "Ocena krytyk\u00f3w", - "OptionVideoBitrate": "Bitrate Wideo", + "OptionVideoBitrate": "Przep\u0142ywno\u015b\u0107 wideo", "OptionResumable": "Do wznowienia", "ScheduledTasksHelp": "Kliknij zadanie aby poprawi\u0107 harmonogram.", "TabMyPlugins": "Moje wtyczki", @@ -201,16 +203,16 @@ "TitlePlugins": "Wtyczki", "HeaderAutomaticUpdates": "Automatyczne Aktualizacje", "HeaderNowPlaying": "Teraz Odtwarzane", - "HeaderLatestAlbums": "Ostatnie Albumy", - "HeaderLatestSongs": "Ostatnie Utwory", - "HeaderRecentlyPlayed": "Ostatnio Odtwarzane", - "HeaderFrequentlyPlayed": "Cz\u0119sto Odtwarzane", + "HeaderLatestAlbums": "Albumy ostatnio dodane", + "HeaderLatestSongs": "Utwory ostatnio dodane", + "HeaderRecentlyPlayed": "Ostatnio odtwarzane", + "HeaderFrequentlyPlayed": "Cz\u0119sto odtwarzane", "LabelVideoType": "Typy Wideo:", "OptionBluray": "Bluray", "OptionDvd": "Dvd", "OptionIso": "Iso", "Option3D": "3D", - "LabelStatus": "Status:", + "LabelStatus": "Stan:", "LabelLastResult": "Ostatni wynik:", "OptionHasSubtitles": "Napisy", "OptionHasTrailer": "Zwiastun", @@ -221,14 +223,14 @@ "TabTrailers": "Zwiastuny", "LabelArtists": "Arty\u015bci:", "LabelArtistsHelp": "Oddziel wiele u\u017cywaj\u0105c ;", - "HeaderLatestTrailers": "Ostatnie Zwiastuny", + "HeaderLatestTrailers": "Zwiastuny ostatnio dodane", "OptionHasSpecialFeatures": "Funkcje Specjalne", "OptionImdbRating": "Ocena IMDb", - "OptionParentalRating": "Klasyfikacja rodzicielska", + "OptionParentalRating": "Kategoria wiekowa", "OptionPremiereDate": "Data premiery", "TabBasic": "Podstawowe", "TabAdvanced": "Zaawansowane", - "OptionContinuing": "Dalej wy\u015bwietlane", + "OptionContinuing": "Kontynuuj", "OptionEnded": "Zako\u0144czony", "HeaderAirDays": "Dni Wy\u015bwitlania", "OptionSundayShort": "Ndz.", @@ -247,8 +249,8 @@ "OptionSaturday": "Sobota", "HeaderManagement": "Zarz\u0105dzanie", "LabelManagement": "Zarz\u0105dzanie:", - "OptionMissingImdbId": "Brakuje Id IMDb", - "OptionMissingTvdbId": "Brakuje Id TheTVDB", + "OptionMissingImdbId": "Brakuje identyfikatora IMDb", + "OptionMissingTvdbId": "Brakuje identyfikatora TheTVDB", "OptionMissingOverview": "Brakuje Opisu", "TabGeneral": "Og\u00f3lne", "TitleSupport": "Wsparcie", @@ -265,7 +267,7 @@ "OptionHideUserFromLoginHelp": "Przydatne dla prywatno\u015bci lub ukrycia kont administrator\u00f3w. Uzytkownik b\u0119dzie musia\u0142 wprowadzi\u0107 r\u0119cznie nazw\u0119 u\u017cytkownika i has\u0142o.", "OptionDisableUser": "Deaktywuj tego u\u017cytkownika", "OptionDisableUserHelp": "Je\u015bli wy\u0142aczone serwer nie pozwoli na \u017cadne po\u0142aczenia od tego u\u017cytkownika. Istniej\u0105ce po\u0142aczenia bed\u0105 nagle zako\u0144czone.", - "LabelName": "Imi\u0119:", + "LabelName": "Nazwa:", "ButtonHelp": "Pomoc", "OptionAllowUserToManageServer": "Pozw\u00f3l temu u\u017cytkownikowi na zarz\u0105dzanie serwerem", "HeaderFeatureAccess": "Dost\u0119p do Funckji", @@ -287,9 +289,9 @@ "PismoMessage": "U\u017cycie Pismo File Mount poprzed licencj\u0119 dotowan\u0105.", "TangibleSoftwareMessage": "u\u017cycie Tangible Solutions Java\/C# converters poprzez licecj\u0119 dotowan\u0105.", "HeaderCredits": "Zas\u0142ugi", - "PleaseSupportOtherProduces": "Prosz\u0119 wsprzyj inne darmowe produkty kt\u00f3rych uzywamy:", + "PleaseSupportOtherProduces": "Prosimy o wsparcie dla innych darmowych produkt\u00f3w, kt\u00f3re wykorzystujemy:", "VersionNumber": "Wersja {0}", - "TabPaths": "\u015acie\u017cki", + "TabPaths": "Foldery", "TabServer": "Serwer", "TabTranscoding": "Transkodowanie", "OptionRelease": "Oficjalne Wydanie", @@ -298,19 +300,19 @@ "LabelRunServerAtStartup": "Uruchom serwer na starcie", "LabelRunServerAtStartupHelp": "Opcja uruchomi ikon\u0119 paska zada\u0144 na starcie systemu windows. Aby uruchomi\u0107 us\u0142ug\u0119 windows, odznacz t\u0105 opcj\u0119 i uruchom us\u0142ug\u0119 z panelu sterowania windows. Uwaga, nie mo\u017cna uruchomi\u0107 jednocze\u015bnie obu, nale\u017cy wy\u0142aczy\u0107 ikon\u0119 paska zada\u0144 przed startem us\u0142ugi.", "ButtonSelectDirectory": "Wybierz Katalog", - "LabelCachePath": "\u015acie\u017cka Cache:", + "LabelCachePath": "Folder bufora:", "DefaultMetadataLangaugeDescription": "To s\u0105 twoje ustawienia domy\u015blne. Mo\u017cesz je zmieni\u0107 dla ka\u017cdej biblioteki osobno.", "LabelCachePathHelp": "Okre\u015bl w\u0142asn\u0105 lokalizacje dla plik\u00f3w cache serwera, takich jak obrazy. Pozostaw puste aby u\u017cy\u0107 domy\u015blnych serwera.", - "LabelRecordingPath": "Domy\u015blna \u015bcie\u017cka nagrywania:", - "LabelMovieRecordingPath": "\u015acie\u017cka zapisywania film\u00f3w (opcjonalne):", - "LabelSeriesRecordingPath": "\u015acie\u017cka zapisywania seriali (opcjonalne):", + "LabelRecordingPath": "Folder domy\u015blny nagra\u0144:", + "LabelMovieRecordingPath": "Folder nagrywania film\u00f3w (opcjonalne):", + "LabelSeriesRecordingPath": "Folder nagrywania seriali (opcjonalne):", "LabelRecordingPathHelp": "Okre\u015bl domy\u015bln\u0105 lokalizacj\u0119 zapisywania nagra\u0144. Je\u015bli pozostanie pusta, zostan\u0105 one zapisane w katalogu danych serwera.", - "LabelMetadataPath": "\u015acie\u017cka metadanych:", + "LabelMetadataPath": "Folder metadanych:", "LabelMetadataPathHelp": "Okre\u015bl w\u0142asn\u0105 lokalizacja dla pobranych artwork\u00f3w i metadanych.", - "LabelTranscodingTempPath": "\u015acie\u017cka tymczasowa transkodowania:", - "LabelTranscodingTempPathHelp": "Ten foldera zawiera pliki u\u017cywane przez transkoder. Okre\u015bl w\u0142asn\u0105 \u015bcie\u017ck\u0119 lub zostaw puste aby u\u017cy\u0107 domy\u015blnej \u015bcie\u017cki danych serwera.", + "LabelTranscodingTempPath": "Folder tymczasowy transkodowania:", + "LabelTranscodingTempPathHelp": "Ten foldera zawiera pliki u\u017cywane przez silnik transkodowania. Wprowad\u017a w\u0142asny folder lub zostaw puste, aby u\u017cywa\u0107 domy\u015blnego folderu danych serwera.", "TabBasics": "Podstawowe", - "TabTV": "TV", + "TabTV": "Seriale", "TabGames": "Gry", "TabMusic": "Muzyka", "TabOthers": "Inne", @@ -319,7 +321,7 @@ "OptionOtherVideos": "Inne wideo", "LabelFanartApiKey": "Osobisty klucz api:", "LabelFanartApiKeyHelp": "\u017b\u0105dania wysy\u0142ane do fanart bez osobistego klucza API zwr\u00f3c\u0105 obrazy, kt\u00f3re by\u0142y zatwierdzone 7 dni temu. Z osobistym kluczem API warto\u015b\u0107 spada do 48 godzin, a je\u017celi jeste\u015b cz\u0142onkiem VIP fanart-u warto\u015b\u0107 ta spadnie do oko\u0142o 10 minut.", - "ExtractChapterImagesHelp": "Wydobywanie obraz\u00f3w rozdzia\u0142\u00f3w pozwoli aplikacjom Emby na wy\u015bwietlanie graficznego menu wyboru scen. Proces ten mo\u017ce by\u0107 wolny, mocno wykorzystuj\u0105cy procesor i mo\u017ce wymaga\u0107 kilku gigabajt\u00f3w przestrzeni dyskowej. Jest uruchamiany gdy filmy s\u0105 wykrywane oraz podczas nocnych zaplanowanych zada\u0144. Zadania s\u0105 konfigurowalne w cz\u0119\u015bci zaplanowanych zada\u0144. Nie jest zalecane uruchamianie tego zadania podczas szczytowych godzin u\u017cycia serwera.", + "ExtractChapterImagesHelp": "Wyodr\u0119bianie obraz\u00f3w rozdzia\u0142\u00f3w pozwoli aplikacjom Emby, na wy\u015bwietlanie graficznego menu wyboru scen. Proces ten mo\u017ce by\u0107 wolny, mocno wykorzystuj\u0105cy procesor i mo\u017ce wymaga\u0107 kilku gigabajt\u00f3w przestrzeni dyskowej. Jest uruchamiany gdy filmy s\u0105 wykrywane oraz podczas nocnych zaplanowanych zada\u0144. Zadania s\u0105 konfigurowalne w cz\u0119\u015bci zaplanowanych zada\u0144. Nie jest zalecane uruchamianie tego zadania podczas szczytowych godzin u\u017cycia serwera.", "LabelMetadataDownloadLanguage": "Preferowany j\u0119zyk metadanych:", "ButtonSignIn": "Zaloguj si\u0119", "TitleSignIn": "Zaloguj si\u0119", @@ -340,7 +342,7 @@ "MinutesBefore": "minut przed", "MinutesAfter": "minut za", "TabSettings": "Ustawienia", - "ButtonRefreshGuideData": "Od\u015bwie\u017c Dane Programu TV", + "ButtonRefreshGuideData": "Od\u015bwie\u017c dane przewodnika", "ButtonRefresh": "Od\u015bwie\u017c", "OptionPriority": "Priorytet", "OptionRecordOnAllChannels": "Nagrywaj na wszystkich kana\u0142ach", @@ -348,15 +350,15 @@ "OptionRecordOnlyNewEpisodes": "Nagrywaj tylko nowe odcinki", "HeaderDays": "Dni", "HeaderActiveRecordings": "Aktywne Nagrania", - "HeaderLatestRecordings": "Ostatnie Nagrania", + "HeaderLatestRecordings": "Nagrania ostatnio dodane", "ButtonPlay": "Odtwarzaj", "ButtonEdit": "Edytuj", "ButtonRecord": "Nagrywaj", - "ButtonDelete": "Skasuj", + "ButtonDelete": "Usu\u0144", "ButtonRemove": "Usu\u0144", "OptionRecordSeries": "Nagrywaj Serial", "HeaderDetails": "Szczeg\u00f3\u0142y", - "TitleLiveTV": "TV Na \u017bywo", + "TitleLiveTV": "Telewizja", "LabelNumberOfGuideDays": "Liczba dni programu TV do \u015bci\u0105gni\u0119cia", "LabelNumberOfGuideDaysHelp": "\u015aci\u0105gni\u0119cie wi\u0119kszej ilo\u015bci dni programu TV pozwoli na zaplanowanie zada\u0144 na d\u0142u\u017cszy okres i wy\u015bwietlenie wi\u0119kszej listy, ale wyd\u0142u\u017cy tak\u017ce czas na jego pobranie. Automatycznie wybierze na podstawie liczby kana\u0142\u00f3w.", "OptionAutomatic": "Automatycznie", @@ -369,7 +371,7 @@ "OptionDownloadDiscImage": "P\u0142yta", "OptionDownloadBannerImage": "Baner", "OptionDownloadBackImage": "Wstecz", - "OptionDownloadArtImage": "Art", + "OptionDownloadArtImage": "Grafika", "OptionDownloadPrimaryImage": "Podstawowy", "HeaderFetchImages": "Pobierz Obrazy:", "HeaderImageSettings": "Ustawienia Obraz\u00f3w", @@ -393,12 +395,12 @@ "OptionWakeFromSleep": "Wybud\u017a z uspienia", "LabelEveryXMinutes": "Za ka\u017cdym:", "HeaderTvTuners": "Tunery", - "HeaderLatestGames": "Ostatnie Gry", + "HeaderLatestGames": "Gry ostatnio dodane", "TabGameSystems": "Systemy Gier Wideo", "TabFolders": "Foldery", - "TabPathSubstitution": "Zamiennik \u015bcie\u017cki", + "TabPathSubstitution": "Mapowanie folderu", "LabelSeasonZeroDisplayName": "Wy\u015bwietlana nazwa sezonu 0:", - "LabelEnableRealtimeMonitor": "W\u0142\u0105cz monitoring czasu rzeczywistego", + "LabelEnableRealtimeMonitor": "Monitoruj w czasie rzeczywistym", "LabelEnableRealtimeMonitorHelp": "Zmiany nast\u0105pi\u0105 natychmiast na wspieranych systemach plik\u00f3w.", "ButtonScanLibrary": "Skanuj Bibliotek\u0119", "HeaderNumberOfPlayers": "Gracze", @@ -409,25 +411,25 @@ "Option4Player": "4+", "HeaderMediaFolders": "Foldery Medi\u00f3w", "HeaderThemeVideos": "Video Motyw\u00f3w", - "HeaderThemeSongs": "Piosenki Motyw\u00f3w", + "HeaderThemeSongs": "Motywy muzyczne", "HeaderScenes": "Sceny", "HeaderAwardsAndReviews": "Nagrody i Recenzje", "HeaderMusicVideos": "Teledyski", - "HeaderSpecialFeatures": "Zawarto\u015b\u0107 Dodatkowa", - "HeaderCastCrew": "Obsada & Eikpa", + "HeaderSpecialFeatures": "Funkcje specjalne", + "HeaderCastCrew": "Obsada i ekipa", "HeaderAdditionalParts": "Dodatkowe Cz\u0119\u015bci", "ButtonSplitVersionsApart": "Podziel Wersje", "ButtonPlayTrailer": "Zwiastun", "LabelMissing": "Brakuj\u0105cy", "OptionSpecialEpisode": "Specjalne", "OptionMissingEpisode": "Brakuj\u0105ce Odcinki", - "OptionUnairedEpisode": "Niewy\u015bwietlone Odcinki", + "OptionUnairedEpisode": "Odcinki o planowanej emisji", "OptionEpisodeSortName": "Kr\u00f3tka Nazwa Odcinka", - "OptionTvdbRating": "Rating Tvdb", + "OptionTvdbRating": "Ocena Tvdb", "HeaderAddTitles": "Dodaj Tytu\u0142y", - "LabelEnableDlnaPlayTo": "W\u0142\u0105cz DLNA Play To", + "LabelEnableDlnaPlayTo": "Aktywuj funkcj\u0119 DLNA Play To", "LabelEnableDlnaPlayToHelp": "Emby mo\u017ce wykrywa\u0107 urz\u0105dzenia w twojej sieci i proponowa\u0107 mo\u017cliwo\u015b\u0107 ich zdalnej kontroli", - "LabelEnableDlnaDebugLogging": "W\u0142\u0105cz log debugowania DLNA", + "LabelEnableDlnaDebugLogging": "Rejestruj komunikaty diagnostyczne DLNA", "LabelEnableDlnaDebugLoggingHelp": "To tworzy bardzo du\u017ce pliki log\u00f3w i jest tylko wymagane dla potrzeb troubleshootingu.", "LabelEnableDlnaClientDiscoveryInterval": "Interwa\u0142 wykrywania klient\u00f3w (sekundy)", "LabelEnableDlnaClientDiscoveryIntervalHelp": "Okre\u015bl czas w sekundach pomi\u0119dzy wyszukiwaniami SSDP wykonywanymi przez Emby.", @@ -435,7 +437,7 @@ "HeaderSystemDlnaProfiles": "Profile Systemowe", "CustomDlnaProfilesHelp": "Utw\u00f3rz w\u0142asny profil dla nowego urz\u0105dzenia lub nadpisz profil systemowy.", "SystemDlnaProfilesHelp": "Profil systemowy jest tylko do odczytu. Zmiany do profilu systemowego b\u0119dzie zapisane jako nowy profil w\u0142asny.", - "TabHome": "Dom", + "TabHome": "Start", "TabInfo": "Info", "HeaderLinks": "Likni", "LinkCommunity": "Spo\u0142eczno\u015b\u0107", @@ -457,10 +459,10 @@ "LabelPublicHttpsPort": "Publiczny nr portu https:", "LabelPublicHttpsPortHelp": "Publiczny numer port na kt\u00f3ry ma by\u0107 zmapowany lokalny port https.", "LabelEnableHttps": "Zg\u0142o\u015b https jako zewn\u0119trzny adres", - "LabelEnableHttpsHelp": "Je\u015bli w\u0142\u0105czone, serwer zg\u0142osi adres https do aplikacji Emby jako zewn\u0119trzny adres.", + "LabelEnableHttpsHelp": "Je\u015bli aktywne, serwer zg\u0142osi adres https do aplikacji Emby, jako zewn\u0119trzny adres.", "LabelHttpsPort": "Lokalny numer portu https:", "LabelHttpsPortHelp": "Numer portu tcp do kt\u00f3re serwer https Emby ma zosta\u0107 powi\u0105zany.", - "LabelEnableAutomaticPortMap": "W\u0142\u0105cz automatyczne mapowanie portu", + "LabelEnableAutomaticPortMap": "Aktywuj automatyczne mapowanie portu", "LabelEnableAutomaticPortMapHelp": "Pr\u00f3bowa\u0107 automatycznie zmapowa\u0107 publiczny nr portu do lokalnego numeru portu przez UPnP. Opcja ta mo\u017ce nie dzia\u0142a z niekt\u00f3rymi modelami router\u00f3w.", "LabelExternalDDNS": "Domena zewn\u0119trzna:", "LabelExternalDDNSHelp": "Je\u015bli masz dynamiczne DNS wprowad\u017a je tutaj. Aplikacje Emby u\u017cyj\u0105 jej podczas po\u0142\u0105czenia. To pole jest wymagane kiedy u\u017cywasz niestandardowego certyfikatu SSL.", @@ -468,22 +470,22 @@ "LabelMinResumePercentage": "Minimalny procent dla wznowienia", "LabelMaxResumePercentage": "Maksymalny procent dla wznowienia", "LabelMinResumeDuration": "Minimalny czas dla wznowienia (sekundy)", - "LabelMinResumePercentageHelp": "Tytu\u0142y s\u0105 uznane za nie odtworzone je\u015bli zatrzymane przed tym czasem", - "LabelMaxResumePercentageHelp": "Tytu\u0142y s\u0105 uznane za odtworzone je\u015bli zatrzymane po tym czasem", + "LabelMinResumePercentageHelp": "Tytu\u0142y s\u0105 traktowane jako nieobejrzane, je\u015bli zosta\u0142y zatrzymane przed tym czasem", + "LabelMaxResumePercentageHelp": "Tytu\u0142y s\u0105 traktowane jako w pe\u0142ni obejrzane, je\u015bli zosta\u0142y zatrzymane po tym czasie", "LabelMinResumeDurationHelp": "Tytu\u0142y kr\u00f3tsze ni\u017c nie b\u0119d\u0105 wznawiane", "TabActivityLog": "Dziennik Aktywno\u015bci", - "TabSmartMatches": "Smart sugestie", - "TabSmartMatchInfo": "Zarz\u0105dzaj smart sugestiami kt\u00f3re zosta\u0142y dodane u\u017cywaj\u0105c dodatku Auto-Organize.", + "TabSmartMatches": "Inteligentne dopasowania", + "TabSmartMatchInfo": "Zarz\u0105dzaj inteligentnymi dopasowaniami, kt\u00f3re zosta\u0142y dodane przy u\u017cyciu dodatku Organizator.", "HeaderName": "Nazwa", "HeaderDate": "Data", "HeaderSource": "\u0179r\u00f3d\u0142o", - "HeaderStatus": "Status", + "HeaderStatus": "Stan", "HeaderDestination": "Cel", "HeaderProgram": "Program", "HeaderClients": "Klienci", "LabelCompleted": "Zako\u0144czono", "LabelFailed": "Nieudane", - "LabelSkipped": "Pomini\u0119te", + "LabelSkipped": "Pomini\u0119to", "LabelSeries": "Seriale:", "LabelSeasonNumber": "Numer sezonu:", "LabelEpisodeNumber": "Numer odcinka:", @@ -493,7 +495,7 @@ "HeaderSupportTheTeam": "Wesprzyj dru\u017cyn\u0119 Emby", "HeaderSupportTheTeamHelp": "Pom\u00f3\u017c zapewni\u0107 kontynuowanie rozwoju tego projektu poprzez zakup Emby Premiere. Cz\u0119\u015b\u0107 ca\u0142ego dochodu b\u0119dzie przekazana na wsparcie innych narz\u0119dzi na kt\u00f3rych Emby polega.", "DonationNextStep": "Po zako\u0144czeniu, prosz\u0119 wr\u00f3\u0107 i wprowad\u017a klucz Emby Premiere, kt\u00f3ry otrzymasz na email.", - "AutoOrganizeHelp": "Auto-organizator monitoruje twoje foldery pobierania dla nowych plik\u00f3w i przenosi je do twoich katalog\u00f3w z mediami.", + "AutoOrganizeHelp": "Organizator monitoruje foldery pobierania pod k\u0105tem nowych plik\u00f3w i przenosi je do odpowiednich folder\u00f3w medi\u00f3w.", "OptionEnableEpisodeOrganization": "W\u0142\u0105cz organizacj\u0119 nowego serialu", "LabelWatchFolder": "Obserwowany folder:", "LabelWatchFolderHelp": "Serwer b\u0119dzie pobiera\u0142 z tego foldera podczas zaplanowanego zadania 'Organizuje nowe pliki medi\u00f3w'", @@ -508,25 +510,25 @@ "HeaderTerm": "Termin", "HeaderPattern": "Wz\u00f3r", "HeaderResult": "Wynik", - "LabelDeleteEmptyFolders": "Usu\u0144 puste foldery po organizacji", - "LabelDeleteEmptyFoldersHelp": "W\u0142\u0105cz to aby utrzyma\u0107 katalog pobiera\u0144 czysty", - "LabelDeleteLeftOverFiles": "Usu\u0144 pozosta\u0142e pliki z nast\u0119puj\u0105cymi rozszerzeniami:", + "LabelDeleteEmptyFolders": "Usuwaj puste foldery po organizacji", + "LabelDeleteEmptyFoldersHelp": "Aktywuj t\u0119 opcj\u0119, aby folder pobierania pozostawa\u0142 pusty.", + "LabelDeleteLeftOverFiles": "Usuwaj pozosta\u0142e pliki z nast\u0119puj\u0105cymi rozszerzeniami:", "LabelDeleteLeftOverFilesHelp": "Oddziel za pomoc\u0105 ;. Na przyk\u0142ad: .nfo;.txt", "OptionOverwriteExistingEpisodes": "Nadpisuj istniej\u0105ce epizody", "LabelTransferMethod": "Metoda transferu", "OptionCopy": "Kopiuj", "OptionMove": "Przenie\u015b", "LabelTransferMethodHelp": "Kopiuj lub przenie\u015b pliki z obserwowanego katalogu", - "HeaderLatestNews": "Ostatnie wiadomo\u015bci", + "HeaderLatestNews": "Najnowsze wiadomo\u015bci", "HeaderRunningTasks": "Aktywne Zadania", "HeaderActiveDevices": "Aktywne Urz\u0105dzenia", "HeaderPendingInstallations": "Instalacje w toku", "ButtonRestartNow": "Restartuj Teraz", - "ButtonRestart": "Restart", + "ButtonRestart": "Uruchom ponownie", "ButtonShutdown": "Zamknij", "ButtonUpdateNow": "Aktualizuj Teraz", "TabHosting": "Hosting", - "PleaseUpdateManually": "Prosz\u0119 zamknij serwer i zaktualizuj r\u0119cznie.", + "PleaseUpdateManually": "Prosz\u0119 zamknij serwer i zainstaluj najnowsz\u0105 wersj\u0119 manualnie.", "NewServerVersionAvailable": "Nowa wersja Serwera Emby jest dost\u0119pna!", "ServerUpToDate": "Serwer Emby jest aktualny", "LabelComponentsUpdated": "Nast\u0119puj\u0105ce elementy zosta\u0142y zainstalowane lub zaktualizowane:", @@ -545,21 +547,21 @@ "LabelSupporterKeyHelp": "Wprowad\u017a sw\u00f3j klucz Emby Premiere i zacznij korzysta\u0107 z dodatkowych korzy\u015bci, kt\u00f3re stworzy\u0142a spo\u0142eczno\u015b\u0107 dla Emby.", "MessageInvalidKey": "Klucz Emby Premiere jest nieobecny lub nieprawid\u0142owy.", "ErrorMessageInvalidKey": "Aby jakakolwiek zawarto\u015b\u0107 premium by\u0142a zarejestrowana, musisz posiada\u0107 aktywn\u0105 subskrypcje Emby Premiere.", - "HeaderDisplaySettings": "Ustawienia Wy\u015bwietlania", - "LabelEnableDlnaServer": "W\u0142\u0105cz serwer Dlna", + "HeaderDisplaySettings": "Ustawienia wy\u015bwietlania", + "LabelEnableDlnaServer": "Aktywuj serwer Dlna", "LabelEnableDlnaServerHelp": "Zezwalaj urz\u0105dzeniom UPnP w twojej sieci na przegl\u0105danie i odtwarzanie zawarto\u015bci Emby.", - "LabelEnableBlastAliveMessages": "Przesy\u0142aj wiadomo\u015bci \u017cywotno\u015bci", + "LabelEnableBlastAliveMessages": "Przesy\u0142aj komunikaty o dost\u0119pno\u015bci", "LabelEnableBlastAliveMessagesHelp": "W\u0142\u0105cz to je\u017celi serwer nie jest odpowiednio wykrywany przez inne urz\u0105dzenia UPnP w twojej sieci.", - "LabelBlastMessageInterval": "Interwa\u0142 wiadomo\u015bci \u017cywotno\u015bci (sekundy)", - "LabelBlastMessageIntervalHelp": "Okre\u015bla czas trwania w sekundach pomi\u0119dzy wiadomo\u015bciami \u017cywotno\u015bci serwera.", + "LabelBlastMessageInterval": "Cz\u0119stotliwo\u015b\u0107 komunikat\u00f3w o dost\u0119pno\u015bci (sekundy)", + "LabelBlastMessageIntervalHelp": "Okre\u015bla cz\u0119stotliwo\u015b\u0107, wyra\u017con\u0105 w sekundach, przesy\u0142ania komunikat\u00f3w o dost\u0119pno\u015bci serwera.", "LabelDefaultUser": "Domy\u015blny u\u017cytkownik:", "LabelDefaultUserHelp": "Okre\u015bla kt\u00f3re biblioteki u\u017cytkownika powinny by\u0107 wy\u015bwietlane na pod\u0142\u0105czonych urz\u0105dzeniach. Mo\u017ce to by\u0107 nadpisane dla ka\u017cdego urz\u0105dzenia u\u017cywaj\u0105c profili.", "HeaderServerSettings": "Ustawienia Serwera", "HeaderRequireManualLogin": "Wymagaj r\u0119cznego wprowadzenia nazwy u\u017cytkownika dla:", - "HeaderRequireManualLoginHelp": "Gdy wy\u0142\u0105czone aplikacje Emby mog\u0105 wy\u015bwietla\u0107 ekran logowania z wizualnym wyborem u\u017cytkownika.", + "HeaderRequireManualLoginHelp": "Je\u015bli nieaktywne, aplikacje Emby mog\u0105 wy\u015bwietla\u0107 ekran logowania, z wizualnym wyborem u\u017cytkownika.", "OptionOtherApps": "Inne aplikacje", "OptionMobileApps": "Aplikacje Mobilne", - "LabelNotificationEnabled": "W\u0142\u0105cz te powiadomienie", + "LabelNotificationEnabled": "Aktywuj te powiadomienie", "LabelMonitorUsers": "Monitoruj aktywno\u015b\u0107 z:", "LabelSendNotificationToUsers": "Wy\u015blij powiadomienie do:", "LabelUseNotificationServices": "U\u017cywaj nast\u0119puj\u0105cych us\u0142ug:", @@ -568,7 +570,7 @@ "CategoryApplication": "Aplikacja", "CategoryPlugin": "Wtyczka", "LabelAvailableTokens": "Dost\u0119pne tokeny:", - "AdditionalNotificationServices": "Przegl\u0105daj katalog wtyczek aby zainstalowa\u0107 dodatkowe us\u0142ugi powiadomie\u0144.", + "AdditionalNotificationServices": "Przegl\u0105daj katalog wtyczek, aby zainstalowa\u0107 dodatkowe us\u0142ugi powiadomie\u0144.", "OptionAllUsers": "Wszyscy U\u017cytkownicy", "OptionAdminUsers": "Administratorzy", "OptionCustomUsers": "W\u0142asne", @@ -578,8 +580,8 @@ "ButtonArrowRight": "Prawa", "ButtonBack": "Wstecz", "ButtonInfo": "Info", - "ButtonOsd": "Kontrolki ekranowe", - "ButtonHome": "Dom", + "ButtonOsd": "Menu ekranowe", + "ButtonHome": "Start", "ButtonSearch": "Szukaj", "ButtonSettings": "Ustawienia", "Settings": "Ustawienia", @@ -599,9 +601,9 @@ "TabNavigation": "Nawigacja", "TabControls": "Kotrolki", "ButtonSubtitles": "Napisy", - "ButtonPreviousTrack": "Poprzednia \u015bcie\u017cka", - "ButtonNextTrack": "Nast\u0119pna \u015bcie\u017cka", - "ButtonStop": "Stop", + "ButtonPreviousTrack": "Poprzedni utw\u00f3r", + "ButtonNextTrack": "Nast\u0119pna utw\u00f3r", + "ButtonStop": "Zatrzymaj", "ButtonPause": "Pauza", "ButtonNext": "Nast\u0119pny", "ButtonPrevious": "Poprzedni", @@ -609,7 +611,7 @@ "LabelGroupMoviesIntoCollectionsHelp": "Podczas wy\u015bwietlania listy film\u00f3w, filmy nale\u017c\u0105ce do kolekcji b\u0119d\u0105 wy\u015bwietlone jako jedna zgrupowana pozycja.", "ButtonVolumeUp": "G\u0142o\u015bno\u015b\u0107 w g\u00f3re", "ButtonVolumeDown": "G\u0142o\u015bno\u015b\u0107 w d\u00f3\u0142", - "HeaderLatestMedia": "Ostatnie Media", + "HeaderLatestMedia": "Ostatnio dodane", "OptionNoSubtitles": "Bez Napis\u00f3w", "HeaderCollections": "Kolekcje", "LabelProfileCodecsHelp": "Oddzielone przecinkiem. Zostaw puste aby zastosowa\u0107 wszystkie kodeki.", @@ -629,10 +631,10 @@ "OptionProfileVideoAudio": "Wideo Audio", "OptionProfilePhoto": "Zdj\u0119cie", "LabelUserLibrary": "Biblioteka u\u017cytkownika:", - "LabelUserLibraryHelp": "Wybierz kt\u00f3r\u0105 bibliotek\u0119 u\u017cytkownika wy\u015bwietla\u0107 na urz\u0105dzeniu. Zostaw puste aby odziedziczy\u0107 domy\u015blne ustawienia.", - "OptionPlainStorageFolders": "Wy\u015bwietlaj wszystkie foldery jako p\u0142askie foldery pami\u0119ci", + "LabelUserLibraryHelp": "Wybierz, kt\u00f3r\u0105 bibliotek\u0119 u\u017cytkownika wy\u015bwietla\u0107 na urz\u0105dzeniu. Zostaw puste, aby odziedziczy\u0107 domy\u015blne ustawienia.", + "OptionPlainStorageFolders": "Wy\u015bwietlaj wszystkie foldery jako zwyczajne foldery", "OptionPlainStorageFoldersHelp": "Je\u017celi w\u0142\u0105czone, wszystkie foldery s\u0105 reprezentowane w DIDL jako \"object.container.storageFolder\" zamiast bardziej dok\u0142adnych typ\u00f3w takich jak \"object.container.person.musicArtist\".", - "OptionPlainVideoItems": "Wy\u015bwietl wszystkie wideo jako p\u0142ask\u0105 pozycje", + "OptionPlainVideoItems": "Wy\u015bwietlaj wszystkie wideo jako zwyczajne pozycje", "OptionPlainVideoItemsHelp": "Je\u017celi w\u0142\u0105czone, wszystkie wideo s\u0105 reprezentowane w DIDL jako \"object.item.videoitem\" zamiast bardziej dok\u0142adnych typ\u00f3w takich jak \"object.item.videoitem.movie\".", "LabelSupportedMediaTypes": "Wspierane Typy Medi\u00f3w", "HeaderIdentification": "Identyfikacja", @@ -644,7 +646,7 @@ "LabelEmbedAlbumArtDidl": "Wbudowana ok\u0142adka albumu w Didl", "LabelEmbedAlbumArtDidlHelp": "Niekt\u00f3re urz\u0105dzenia wybieraj\u0105 t\u0119 metod\u0119 uzyskiwania ok\u0142adki albumu. Inne mog\u0105 nie odtwarza\u0107 gdy ta opcja jest w\u0142\u0105czona.", "LabelAlbumArtPN": "PN ok\u0142adki Albumu:", - "LabelAlbumArtHelp": "PN u\u017cywany jak dla ok\u0142adek Albumu z atrybutu dlna:profileID na upnp:albumArtURI. Niekt\u00f3re urz\u0105dzenia wymagaj\u0105 konkretnych warto\u015bci, niezale\u017cnie od rozmiaru obrazu.", + "LabelAlbumArtHelp": "PN u\u017cywany jako ok\u0142adka albumu z dlna:profileID w atrybucie upnp:albumArtURI. Niekt\u00f3re urz\u0105dzenia wymagaj\u0105 konkretnych warto\u015bci, niezale\u017cnie od rozmiaru obrazu.", "LabelAlbumArtMaxWidth": "Ok\u0142adka albumu maksymalna szeroko\u015b\u0107:", "LabelAlbumArtMaxWidthHelp": "Maksymalna rozdzielczo\u015b\u0107 ok\u0142adki albumu wystawiana przez upnp:albumArtURI.", "LabelAlbumArtMaxHeight": "Ok\u0142adka albumu maksymalna wysoko\u015b\u0107:", @@ -655,15 +657,15 @@ "LabelIconMaxHeightHelp": "Maksymalna rozdzielczo\u015b\u0107 ikon wystawianych przez upnp:icon.", "LabelIdentificationFieldHelp": "String lub regex nie wra\u017cliwy na wielko\u015b\u0107 liter.", "HeaderProfileServerSettingsHelp": "Te warto\u015bci kontroluj\u0105 jak serwer Emby b\u0119dzie przedstawiany dla urz\u0105dze\u0144.", - "LabelMaxBitrate": "Maksymalny bitrate:", - "LabelMaxBitrateHelp": "Okre\u015bl maksymalny bitrate w pa\u015bmie ograniczonego \u015brodowiska, lub je\u017celi urz\u0105dzenie narzuca sw\u00f3j limit.", - "LabelMaxStreamingBitrate": "Maksymalny bitrate streamingu:", - "LabelMaxStreamingBitrateHelp": "Okre\u015bl maksymalny bitrate podczas streamowania.", - "LabelMaxChromecastBitrate": "Maksymalny bitrate Chromecast:", - "LabelMusicStaticBitrate": "Bitrate sync muzyki:", - "LabelMusicStaticBitrateHelp": "Okre\u015bl maksymalny bitrate podczas synchronizacji muzyki", - "LabelMusicStreamingTranscodingBitrate": "Birtare transkodowania muzyki:", - "LabelMusicStreamingTranscodingBitrateHelp": "okre\u015bl maksymalny bitrate podczas streamingu muzyki", + "LabelMaxBitrate": "Maksymalna przep\u0142ywno\u015b\u0107:", + "LabelMaxBitrateHelp": "Okre\u015bla maksymaln\u0105 przep\u0142ywno\u015b\u0107 w \u015brodowiskach o ograniczonym pa\u015bmie lub w przypadku, gdy urz\u0105dzenie narzuca w\u0142asny limit.", + "LabelMaxStreamingBitrate": "Maksymalna przep\u0142ywno\u015b\u0107 transmisji:", + "LabelMaxStreamingBitrateHelp": "Okre\u015bla maksymaln\u0105 przep\u0142ywno\u015b\u0107 podczas transmisji.", + "LabelMaxChromecastBitrate": "Maksymalna przep\u0142ywno\u015b\u0107 ChromeCast:", + "LabelMusicStaticBitrate": "Przep\u0142ywno\u015b\u0107 synchronizowanej muzyki:", + "LabelMusicStaticBitrateHelp": "Okre\u015bla maksymaln\u0105 przep\u0142ywno\u015b\u0107 podczas synchronizacji muzyki.", + "LabelMusicStreamingTranscodingBitrate": "Przep\u0142ywno\u015b\u0107 transkodowania muzyki:", + "LabelMusicStreamingTranscodingBitrateHelp": "Okre\u015bla maksymaln\u0105 przep\u0142ywno\u015b\u0107 podczas transmitowania muzyki.", "OptionIgnoreTranscodeByteRangeRequests": "Ignoruj \u017c\u0105danie zakresu byte transkodowania", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Je\u017celi w\u0142\u0105czone, te \u017c\u0105dania b\u0119d\u0105 uznane ale b\u0119dzie ignorowany nag\u0142\u00f3wek zakresu byte.", "LabelFriendlyName": "Przyjazna nazwa", @@ -690,30 +692,30 @@ "LabelTranscodingContainer": "Kontener:", "LabelTranscodingVideoCodec": "Kodek wideo:", "LabelTranscodingAudioCodec": "Kodek audio:", - "OptionEnableM2tsMode": "W\u0142\u0105cz tryb M2ts", - "OptionEnableM2tsModeHelp": "W\u0142\u0105cz tryb m2ts podczas enkodowania do mpegts.", + "OptionEnableM2tsMode": "Aktywuj tryb M2ts", + "OptionEnableM2tsModeHelp": "Aktywuj tryb m2ts podczas kodowania do mpegts.", "OptionEstimateContentLength": "Okre\u015bl d\u0142ugo\u015b\u0107 zawarto\u015bci podczas transkodowania", "OptionReportByteRangeSeekingWhenTranscoding": "Zg\u0142o\u015b wsparcie serwera dla przeszukiwania podczas transkodowania", "OptionReportByteRangeSeekingWhenTranscodingHelp": "To jest wymagane tylko dla niekt\u00f3rych urz\u0105dze\u0144 kt\u00f3re nie wspieraj\u0105 przeszukiwania zbyt dobrze.", "HeaderDownloadSubtitlesFor": "\u015aci\u0105gnij napisy dla:", - "LabelSkipIfGraphicalSubsPresent": "Pomi\u0144, je\u017celi film posiada ju\u017c osadzone napisy", + "LabelSkipIfGraphicalSubsPresent": "Pomijaj, je\u017celi film posiada wbudowane napisy", "LabelSkipIfGraphicalSubsPresentHelp": "Utrzymywanie wersji tekstowych napis\u00f3w spowoduje sprawniejsze dostarczanie i zmniejszeni prawdopodobie\u0144stwa transkodowania wideo.", "TabSubtitles": "Napisy", "TabChapters": "Rodzia\u0142y", "LabelOpenSubtitlesUsername": "Nazwa u\u017cytkownika Open Subtitles:", "LabelOpenSubtitlesPassword": "Has\u0142o Open Subtitles:", - "LabelPlayDefaultAudioTrack": "Odtw\u00f3rz domy\u015bln\u0105 \u015bcie\u017ck\u0119 audio niezale\u017cnie od j\u0119zyka", - "LabelSubtitlePlaybackMode": "Tryb Napis\u00f3w:", + "LabelPlayDefaultAudioTrack": "Odtwarzaj domy\u015bln\u0105 \u015bcie\u017ck\u0119 d\u017awi\u0119kow\u0105 niezale\u017cnie od j\u0119zyka", + "LabelSubtitlePlaybackMode": "Tryb napis\u00f3w:", "LabelDownloadLanguages": "J\u0119zyki pobierania:", "ButtonRegister": "Rejestruj", - "LabelSkipIfAudioTrackPresent": "Pomi\u0144 je\u017celi domy\u015blna \u015bcie\u017cka audio pokrywa si\u0119 z j\u0119zykiem pobierania", - "LabelSkipIfAudioTrackPresentHelp": "Odznacz aby upewni\u0107 si\u0119 \u017ce wszystkie wideo maj\u0105 napisy, niezale\u017cnie od j\u0119zyka audio.", - "HeaderSendMessage": "Wy\u015blij Wiadomo\u015b\u0107", + "LabelSkipIfAudioTrackPresent": "Pomijaj, je\u017celi domy\u015blna \u015bcie\u017cka d\u017awi\u0119kowa jest w j\u0119zyku pobierania", + "LabelSkipIfAudioTrackPresentHelp": "Odznacz, aby upewni\u0107 si\u0119, \u017ce wszystkie wideo maj\u0105 napisy, niezale\u017cnie od j\u0119zyka \u015bcie\u017cki d\u017awi\u0119kowej.", + "HeaderSendMessage": "Wy\u015blij wiadomo\u015b\u0107", "ButtonSend": "Wy\u015blij", "LabelMessageText": "Tekst wiadomo\u015bci:", "LabelMessageTitle": "Tytu\u0142 wiadomo\u015bci:", "MessageNoAvailablePlugins": "Brak dost\u0119pnych wtyczek.", - "LabelDisplayPluginsFor": "Wy\u015bwietl wtyczki dla:", + "LabelDisplayPluginsFor": "Wy\u015bwietlaj wtyczki dla:", "PluginTabAppClassic": "Emby Classic", "LabelEpisodeNamePlain": "Nazwa odcinka", "LabelSeriesNamePlain": "Nazwa serialu", @@ -729,42 +731,42 @@ "TabDisplay": "Wy\u015bwietl", "TabLanguages": "J\u0119zyki", "TabAppSettings": "Ustawienia Aplikacji", - "LabelEnableThemeSongs": "W\u0142\u0105cz utwory tematyczne", - "LabelEnableBackdrops": "W\u0142\u0105cz t\u0142a tematyczne", - "LabelEnableThemeSongsHelp": "Je\u017celi w\u0142\u0105czone utwory tematyczne b\u0119d\u0105 odtwarzane w tle podczas przegl\u0105dania biblioteki.", - "LabelEnableBackdropsHelp": "Je\u017celi w\u0142\u0105czone t\u0142a tematyczne b\u0119d\u0105 odtwarzane w tle dla niekt\u00f3rych stron podczas przegl\u0105dania biblioteki.", - "HeaderHomePage": "Strona Domowa", - "OptionAuto": "Auto", + "LabelEnableThemeSongs": "Aktywuj motywy muzyczne", + "LabelEnableBackdrops": "Aktywuj fototapety", + "LabelEnableThemeSongsHelp": "Je\u017celi aktywne, motywy muzyczne b\u0119d\u0105 odtwarzane w tle, podczas przegl\u0105dania biblioteki.", + "LabelEnableBackdropsHelp": "Je\u017celi aktywne, motywy muzyczne b\u0119d\u0105 odtwarzane w tle, podczas przegl\u0105dania niekt\u00f3rych stron biblioteki.", + "HeaderHomePage": "Strona startowa", + "OptionAuto": "Automat", "OptionYes": "Tak", "OptionNo": "Nie", "HeaderOptions": "Opcje", - "LabelHomeScreenSectionValue": "Ekran domowy sekcja {0}:", + "LabelHomeScreenSectionValue": "Sekcja ekranu startowego {0}:", "OptionMyMedia": "Moje media", "OptionMyMediaSmall": "Moje media (ma\u0142e)", "OptionResumablemedia": "Wzn\u00f3w", - "OptionLatestMedia": "Ostatnie Media", + "OptionLatestMedia": "Ostatnio dodane", "OptionLatestChannelMedia": "Ostatnie pozycje kana\u0142\u00f3w", "HeaderLatestChannelItems": "Ostatnie Pozycje Kana\u0142\u00f3w", "OptionNone": "\u017baden", - "HeaderLiveTv": "TV Na \u017bywo", + "HeaderLiveTv": "Telewizja", "HeaderReports": "Raporty", "HeaderSettings": "Ustawienia", "OptionDefaultSort": "Domy\u015blny", "TabNextUp": "Nast\u0119pny", "HeaderBecomeProjectSupporter": "Uzyskaj Emby Premiere", - "MessageNoMovieSuggestionsAvailable": "Sugestie film\u00f3w nie s\u0105 obecnie dost\u0119pne. Zacznij ogl\u0105da\u0107 i ocenia\u0107 swoje filmy, nast\u0119pnie wr\u00f3\u0107 aby obejrze\u0107 swoje rekomendacje.", + "MessageNoMovieSuggestionsAvailable": "Brak aktualnie polecanych film\u00f3w. Zacznij ogl\u0105da\u0107 i ocenia\u0107 filmy, nast\u0119pnie wr\u00f3\u0107, aby obejrze\u0107 swoje rekomendacje.", "MessageNoCollectionsAvailable": "Kolekcje pozwalaj\u0105 na cieszenie si\u0119 personalizowanym grupowaniem Film\u00f3w, seriali, Album\u00f3w, Ksi\u0105\u017cek oraz Gier. Kliknij przycisk + aby zacz\u0105\u0107 tworzy\u0107 kolekcje.", "MessageNoPlaylistsAvailable": "Playlisty pozwalaj\u0105 na tworzenie list z zawarto\u015bci\u0105 do odtwarzania kolejno w czasie. Aby doda\u0107 pozycje do playlisty, kliknij prawym guzikiem lub naci\u015bnij i przytrzymaj, a nast\u0119pnie wybierz dodaj do Playlisty.", "MessageNoPlaylistItemsAvailable": "Playlista jest obecnie pusta.", "ButtonEditOtherUserPreferences": "Edytuj profil, obrazy i ustawienia osobiste tego u\u017cytkownika.", "LabelChannelStreamQuality": "Preferowana jako\u015b\u0107 kana\u0142u internetowego:", - "LabelChannelStreamQualityHelp": "W \u015brodowisku z s\u0142abym \u0142\u0105czem, ograniczenie jako\u015bci mo\u017ce zapewni\u0107 lepsze do\u015bwiadczenia w streamowaniu.", + "LabelChannelStreamQualityHelp": "W \u015brodowisku ze s\u0142abym \u0142\u0105czem, ograniczenie jako\u015bci mo\u017ce zapewni\u0107 p\u0142ynniejsz\u0105 transmisj\u0119.", "OptionBestAvailableStreamQuality": "Najlepsze mo\u017cliwe", "ViewTypeMovies": "Filmy", - "ViewTypeTvShows": "TV", + "ViewTypeTvShows": "Seriale", "ViewTypeGames": "Gry", "ViewTypeMusic": "Muzyka", - "HeaderOtherDisplaySettings": "Ustawienia Wy\u015bwietlania", + "HeaderOtherDisplaySettings": "Ustawienia wy\u015bwietlania", "ViewTypeMusicSongs": "Utwory", "ViewTypeMusicFavorites": "Ulubione", "ViewTypeMusicFavoriteAlbums": "Ulubione Albumy", @@ -774,39 +776,39 @@ "OptionDisplayAdultContent": "Wy\u015bwietlaj zawarto\u015b\u0107 dla doros\u0142ych", "OptionLibraryFolders": "Foldery Medi\u00f3w", "TitleRemoteControl": "Zdalne Sterowanie", - "OptionLatestTvRecordings": "Ostatnie Nagrania", + "OptionLatestTvRecordings": "Nagrania ostatnio dodane", "LabelProtocolInfo": "Protok\u00f3\u0142 Info:", - "LabelProtocolInfoHelp": "Warto\u015b\u0107 jak b\u0119dzie u\u017cywana przy odpowiedzi na \u017c\u0105dania GetProtocolInfo z urz\u0105dze\u0144.", + "LabelProtocolInfoHelp": "Warto\u015b\u0107, kt\u00f3ra b\u0119dzie u\u017cywana jako odpowied\u017a na \u017c\u0105danie GetProtocolInfo z urz\u0105dze\u0144.", "TabNfoSettings": "Ustawienia NFO", "HeaderKodiMetadataHelp": "Emby obejmuje natywne wsparcie dla plik\u00f3w metadanych NFO. Aby w\u0142\u0105czy\u0107 lub wy\u0142\u0105czy\u0107 metadane NFO u\u017cyj zak\u0142adki Metadane aby skonfigurowa\u0107 opcje dla wybranych typ\u00f3w medi\u00f3w.", "LabelKodiMetadataUser": "Zapisuj do NFO dane o obejrzanych u\u017cytkownika:", "LabelKodiMetadataUserHelp": "W\u0142\u0105cz aby zapisywa\u0107 dane o obejrzanych do plik\u00f3w NFO, w celu wykorzystania przez inne aplikacj\u0119.", "LabelKodiMetadataDateFormat": "Format daty wydania:", "LabelKodiMetadataDateFormatHelp": "Wszystkie daty w nfo b\u0119d\u0105 czytane i zapisywane wed\u0142ug tego formatu.", - "LabelKodiMetadataSaveImagePaths": "Zapisuj \u015bcie\u017ck\u0119 obrazu w pliku nfo", + "LabelKodiMetadataSaveImagePaths": "Zapisuj \u015bcie\u017ck\u0119 obrazu w plikach nfo", "LabelKodiMetadataSaveImagePathsHelp": "To jest rekomendowane je\u017celi masz pliki obraz\u00f3w z nazwami nie kompatybilnymi z wytycznymi kodi.", - "LabelKodiMetadataEnablePathSubstitution": "W\u0142\u0105cz podmienianie \u015bcie\u017cki", - "LabelKodiMetadataEnablePathSubstitutionHelp": "W\u0142\u0105cz podmienianie \u015bcie\u017cki dla \u015bcie\u017cek obraz\u00f3w u\u017cywaj\u0105c ustawie\u0144 podmieniania \u015bcie\u017cki serwera,", + "LabelKodiMetadataEnablePathSubstitution": "Aktywuj mapowanie folder\u00f3w", + "LabelKodiMetadataEnablePathSubstitutionHelp": "Umo\u017cliwia mapowanie folder\u00f3w obraz\u00f3w przy u\u017cyciu ustawie\u0144 mapowania serwera.", "OptionDisplayChannelsInline": "Wy\u015bwietlaj kana\u0142y jako foldery medi\u00f3w", - "OptionDisplayChannelsInlineHelp": "Je\u015bli opcja zostanie aktywowana, kana\u0142y b\u0119d\u0105 wy\u015bwietlane bezpo\u015brednio obok innych bibliotek medi\u00f3w. Je\u015bli nie, pojawi\u0105 si\u0119 w osobnym folderze kana\u0142\u00f3w.", - "LabelDisplayCollectionsView": "Wy\u015bwietlaj widok kolekcji aby wy\u015bwietla\u0107 kolekcje film\u00f3w", + "OptionDisplayChannelsInlineHelp": "Je\u015bli aktywne, kana\u0142y b\u0119d\u0105 wy\u015bwietlane bezpo\u015brednio obok innych bibliotek medi\u00f3w.W przeciwnym przypadku, pojawi\u0105 si\u0119 w osobnym folderze kana\u0142\u00f3w.", + "LabelDisplayCollectionsView": "Wy\u015bwietlaj widok kolekcji z list\u0105 kolekcji filmowych", "LabelDisplayCollectionsViewHelp": "To stworzy osobny widok do wy\u015bwietlenia kolekcji filmowej. Aby stworzy\u0107 kolekcje, naci\u015bnij prawy przycisk myszy, lub naci\u015bnij i przytrzymaj dowolny film i wybierz 'Dodaj do kolekcji'. ", "LabelKodiMetadataEnableExtraThumbs": "Kopiuj obrazy z folderu \"extrafanart\" do folderu \"extrathumbs\"", "LabelKodiMetadataEnableExtraThumbsHelp": "\u015aci\u0105gni\u0119te obrazy mog\u0105 by\u0107 zapisane zar\u00f3wno w folderze \"extrafanart\" jak i \"extrathumbs\" w celu zachowania maksymalnej kompatybilno\u015bci z Kodi.", "TabServices": "Us\u0142ugi", "TabLogs": "Logi", "TabBranding": "W\u0142asna marka", - "HeaderBrandingHelp": "Dostosuj wygl\u0105d Emby aby dopasowa\u0107 do potrzeb Twojej grupy lub organizacji.", + "HeaderBrandingHelp": "Dostosuj wygl\u0105d Emby, aby dopasowa\u0107 do potrzeb Twojej grupy lub organizacji.", "LabelLoginDisclaimer": "Zastrze\u017cenie odpowiedzialno\u015bci:", "LabelLoginDisclaimerHelp": "To b\u0119dzie wy\u015bwietlone na dole strony logowania.", "OptionList": "Lista", "TabDashboard": "Kokpit", "TitleServer": "Serwer", - "LabelCache": "Cache:", + "LabelCache": "Bufor:", "LabelLogs": "Logi:", "LabelMetadata": "Metadane:", "LabelTranscodingTemporaryFiles": "Tymczasowe pliki transkodowania:", - "HeaderLatestMusic": "Najnowsza Muzyka", + "HeaderLatestMusic": "Muzyka ostatnio dodane", "HeaderBranding": "Branding", "HeaderApiKeys": "Klucze Api", "HeaderApiKeysHelp": "Zewn\u0119trzne aplikacje s\u0105 zobowi\u0105zane do posiadania klucza Api, aby komunikowa\u0107 si\u0119 z Serwerem Emby. Klucze s\u0105 wydawane przez zalogowanie si\u0119 kontem Emby, lub przez r\u0119czne przyznanie klucza aplikacji.", @@ -820,26 +822,26 @@ "LabelValue": "Warto\u015b\u0107:", "LabelMatchType": "Typ por\u00f3wnania:", "OptionEquals": "R\u00f3wny", - "OptionRegex": "Regex", - "OptionSubstring": "Substring", + "OptionRegex": "Wyra\u017cenie regularne", + "OptionSubstring": "Podwyra\u017cenie", "TabView": "Widok", "TabFilter": "Filtruj", "ButtonView": "Widok", "LabelPageSize": "Limit pozycji:", - "LabelPath": "\u015acie\u017cka:", + "LabelPath": "Folder:", "LabelView": "Widok:", "TabUsers": "U\u017cytkownicy", "HeaderFeatures": "Cechy", "HeaderAdvanced": "Zaawansowane", - "ButtonSync": "Sync", + "ButtonSync": "Synchronizuj", "TabScheduledTasks": "Zaplanowane Zadania", "HeaderChapters": "Rozdzia\u0142y", "HeaderResumeSettings": "Ustawienia Wznawiania", - "TabSync": "Sync", + "TabSync": "Synchronizuj", "TitleUsers": "U\u017cytkownicy", "LabelProtocol": "Protok\u00f3\u0142:", "OptionProtocolHttp": "Http", - "OptionProtocolHls": "Streaming Na \u017bywo Http", + "OptionProtocolHls": "Transmisja za pomoc\u0105 protoko\u0142u HTTP", "LabelContext": "Kontekst:", "TabPlaylists": "Playlista", "ButtonClose": "Zamknij", @@ -848,13 +850,13 @@ "OptionAll": "Wszystko", "LabelImage": "Obrazek:", "HeaderImages": "Obrazki", - "HeaderBackdrops": "T\u0142a tematyczne", + "HeaderBackdrops": "Fototapety", "HeaderAddUpdateImage": "Dodaj\/Aktualizuj obrazek", "LabelDropImageHere": "Upu\u015b\u0107 obraz tutaj", "LabelJpgPngOnly": "Tylko JPG\/PNG", "LabelImageType": "Typ obrazka:", "OptionPrimary": "Priorytetowy", - "OptionArt": "Art", + "OptionArt": "Grafika", "OptionBox": "Pude\u0142ko", "OptionBoxRear": "Ty pudeka", "OptionDisc": "Dysk", @@ -864,7 +866,7 @@ "OptionScreenshot": "Zrzut ekranu", "OptionLocked": "Zablokowane", "OptionUnidentified": "Niezidentyfikowane", - "OptionMissingParentalRating": "Brak oceny rodzicielskiej", + "OptionMissingParentalRating": "Brak kategorii wiekowej", "OptionSeason0": "Sezon 0", "LabelReport": "Zg\u0142o\u015b:", "OptionReportSongs": "Utwory", @@ -873,7 +875,7 @@ "OptionReportTrailers": "Zwiastuny", "OptionReportMusicVideos": "Teledyski", "OptionReportMovies": "Filmy", - "OptionReportHomeVideos": "Filmy domowe", + "OptionReportHomeVideos": "Nagrania prywatne", "OptionReportGames": "Gry", "OptionReportEpisodes": "Odcinki", "OptionReportCollections": "Zbiory", @@ -903,14 +905,14 @@ "OptionComposers": "Kompozytorzy", "OptionOthers": "Inne", "ViewTypeFolders": "Foldery", - "OptionDisplayFolderView": "Wy\u015bwietlaj wszystkie foldery jako p\u0142askie foldery medi\u00f3w.", + "OptionDisplayFolderView": "Wy\u015bwietlaj widok folder\u00f3w z list\u0105 foldery medi\u00f3w", "OptionDisplayFolderViewHelp": "Je\u015bli w\u0142\u0105czone, aplikacje Emby wy\u015bwietl\u0105 foldery kategorii obok biblioteki multimedi\u00f3w. Funkcja ta jest przydatna, je\u015bli chcesz mie\u0107 zwyk\u0142y widok\u00f3w folder\u00f3w.", "ViewTypeLiveTvRecordingGroups": "Nagrania", "ViewTypeLiveTvChannels": "Kana\u0142y", "LabelEasyPinCode": "\u0141atwy kod pin:", "EasyPasswordHelp": "Tw\u00f3j \u0142atwy kod pin jest u\u017cywany dla dost\u0119pu offline z wspieranych aplikacji Emby, i tak\u017ce mo\u017ce by\u0107 u\u017cyty dla \u0142atwego logowania z wewn\u0105trz sieci.", "LabelInNetworkSignInWithEasyPassword": "W\u0142\u0105cz logowanie \u0142atwym kodem pin z sieci wewnetrznej", - "LabelInNetworkSignInWithEasyPasswordHelp": "Je\u017celi w\u0142\u0105czone, b\u0119dziesz m\u00f3g\u0142 u\u017cywa\u0107 \u0142atwego kodu pic aby logowa\u0107 si\u0119 do aplikacji Emby z wewn\u0105trz swojej sieci domowej. Twoje standardowe has\u0142o b\u0119dzie tylko potrzebne z dala od domu. je\u017celi kod pin jest pusty, nie b\u0119dziesz musia\u0142 podawa\u0107 has\u0142a w sieci domowej.", + "LabelInNetworkSignInWithEasyPasswordHelp": "Je\u017celi w\u0142\u0105czone, b\u0119dzie mo\u017cliwe u\u017cywanie prostego kodu PIN, w celu logowania do aplikacji Emby, wewn\u0105trz swojej sieci domowej. Twoje standardowe has\u0142o b\u0119dzie potrzebne tylko z dala od domu. Je\u017celi kod PIN jest pusty, nie b\u0119dziesz musia\u0142 podawa\u0107 has\u0142a w sieci domowej.", "HeaderPassword": "Has\u0142o", "HeaderViewOrder": "Zobacz kolejno\u015b\u0107", "ButtonResetEasyPassword": "Reset \u0142atwego kodu pin", @@ -922,11 +924,11 @@ "LabelCommunityRating": "Ocena spo\u0142eczno\u015bci:", "LabelReleaseDate": "Data wydania:", "LabelEndDate": "Data zako\u0144czenia:", - "LabelAirDate": "Dni wy\u015bwietlania:", + "LabelAirDate": "Dni emisji:", "LabelAirTime:": "Czas transmisji:", "LabelRuntimeMinutes": "Czas (w minutach):", "HeaderSpecialEpisodeInfo": "Specjalne informacje o odcinku", - "LabelDisplaySpecialsWithinSeasons": "Wy\u015bwietlaj zawarto\u015b\u0107 dodatkow\u0105 w sezonach w kt\u00f3rych by\u0142y transmitowane", + "LabelDisplaySpecialsWithinSeasons": "Wy\u015bwietlaj odcinki specjalne wraz z sezonami, w trakcie kt\u00f3rych by\u0142y emitowane", "HeaderGenres": "Gatunki", "HeaderStudios": "Studia", "HeaderTags": "Tagi", @@ -938,7 +940,7 @@ "OptionProducer": "Producent", "LabelAirDays": "Dni transmisji:", "LabelAirTime": "Czas transmisji:", - "HeaderMediaInfo": "Informacje o Medium", + "HeaderMediaInfo": "Informacje o medium", "HeaderPhotoInfo": "Informacje o Zdj\u0119ciu", "HeaderInstall": "Zainstaluj", "LabelSelectVersionToInstall": "Wybierz wersj\u0119 do instalacji", @@ -971,7 +973,7 @@ "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", "OptionResElement": "Element res", "OptionEmbedSubtitles": "Wklej w film", - "OptionExternallyDownloaded": "Pobierz zewn\u0119trznie", + "OptionExternallyDownloaded": "Pobierz zewn\u0119trzne", "OptionHlsSegmentedSubtitles": "Napisy dostosowane do HLS", "LabelSubtitleFormatHelp": "Przyk\u0142ad: srt", "ButtonLearnMore": "Dowiedz si\u0119 wi\u0119cej", @@ -980,36 +982,36 @@ "HeaderSubtitleSettings": "Ustawienia napis\u00f3w", "TabCinemaMode": "Tryb kinowy", "TitlePlayback": "Odtwarzanie", - "LabelEnableCinemaModeFor": "W\u0142\u0105cz tryb kinowy dla:", + "LabelEnableCinemaModeFor": "Aktywuj tryb kinowy dla:", "CinemaModeConfigurationHelp": "Tryb kinowy wniesie filmowe prze\u017cycia wprost do Twojego salonu z mo\u017cliwo\u015bci\u0105 odtwarzania zwiastun\u00f3w i w\u0142asnych intro przez seansem.", "OptionTrailersFromMyMovies": "Do\u0142\u0105cz zwiastuny film\u00f3w do mojej biblioteki", "OptionUpcomingMoviesInTheaters": "Do\u0142\u0105cz zwiastuny z nowych i nadchodz\u0105cych film\u00f3w", - "LabelLimitIntrosToUnwatchedContent": "Odtwarzaj zwiastuny tylko z nieobejrzanych zawarto\u015bci", - "LabelEnableIntroParentalControl": "W\u0142\u0105cz inteligentny system ochrony rodzicielskiej", - "LabelEnableIntroParentalControlHelp": "Zostan\u0105 wy\u015bwietlone tylko trailery z klasyfikacj\u0105 rodzicielsk\u0105 mniejsz\u0105 lub r\u00f3wn\u0105 klasyfikacji ogl\u0105danego filmu.", + "LabelLimitIntrosToUnwatchedContent": "Odtwarzaj zwiastuny tylko dla pozycji nieobejrzanych", + "LabelEnableIntroParentalControl": "Aktywuj inteligentny system kontroli rodzicielskiej", + "LabelEnableIntroParentalControlHelp": "Zostan\u0105 wy\u015bwietlone tylko zwiastuny z kategori\u0105 wiekow\u0105 mniejsz\u0105 lub r\u00f3wn\u0105 kategorii ogl\u0105danego filmu.", "LabelTheseFeaturesRequireSubscriptionHelpAndTrailers": "Te opcje wymagaj\u0105 aktywnej subskrypcji Emby Premiere oraz instalacji plugin'u Trailer Channel.", "OptionTrailersFromMyMoviesHelp": "Wymaga ustawienia lokalnych trailer\u00f3w.", - "LabelCustomIntrosPath": "W\u0142asna \u015bcie\u017cka do intra:", - "LabelCustomIntrosPathHelp": "Folder zawieraj\u0105cy pliki wideo. Film zostanie losowo wybrany i odtworzony po zagraniu zapowiedzi.", + "LabelCustomIntrosPath": "Folder w\u0142asnego wideo powitalnego:", + "LabelCustomIntrosPathHelp": "Folder zawieraj\u0105cy pliki wideo. Film zostanie losowo wybrany, a jego odtwarzanie rozpocznie si\u0119 po zako\u0144czeniu odtwarzania zwiastun\u00f3w.", "LabelSelectInternetTrailersForCinemaMode": "Zwiastuny internetowe:", "OptionUpcomingDvdMovies": "Do\u0142\u0105cz zwiastuny z nowych i nadchodz\u0105cych film\u00f3w DVD i Blu-Ray", "OptionUpcomingStreamingMovies": "Do\u0142\u0105cz zwiastuny z nowych i nadchodz\u0105cych film\u00f3w z Netflix", "CinemaModeConfigurationHelp2": "Aplikacje Emby pozwalaj\u0105 na w\u0142\u0105czenie lub wy\u0142\u0105czenie cinema mode. Aplikacje TV w\u0142\u0105czaj\u0105 t\u0105 opj\u0119 automatycznie.", - "LabelEnableCinemaMode": "W\u0142\u0105cz tryb kinowy", + "LabelEnableCinemaMode": "Aktywuj tryb kinowy", "HeaderCinemaMode": "Tryb kinowy", "LabelDateAddedBehavior": "Data dodania dla nowej zawarto\u015bci:", - "OptionDateAddedImportTime": "U\u017cyj daty skanowania biblioteki", - "OptionDateAddedFileTime": "U\u017cyj daty utworzenia pliku", + "OptionDateAddedImportTime": "U\u017cywaj daty dodania do biblioteki", + "OptionDateAddedFileTime": "U\u017cywaj daty utworzenia pliku", "LabelDateAddedBehaviorHelp": "Je\u015bli istniej\u0105 metadane b\u0119d\u0105 one u\u017cyte zawsze przed kt\u00f3r\u0105kolwiek z tych opcji.", - "LabelNumberTrailerToPlay": "Ilo\u015b\u0107 zwiastun\u00f3w do odtworzenia:", + "LabelNumberTrailerToPlay": "Liczba zwiastun\u00f3w do odtwarzania:", "TitleDevices": "Urz\u0105dzenia", "TabCameraUpload": "Upload z Aparatu", "TabDevices": "Urz\u0105dzenia", "HeaderLibrarySettings": "Ustawienia bilbioteki", "HeaderChapterSettings": "Ustawienia rozdzia\u0142u", - "HeaderCameraUploadHelp": "Automatycznie za\u0142aduj zdj\u0119cia i widea zrobione urz\u0105dzeniami mobilnymi do Emby.", - "LabelCameraUploadPath": "\u015acie\u017cka Kamera upload:", - "LabelCameraUploadPathHelp": "Wybierz w\u0142asna \u015bcie\u017ck\u0119 uploadu, je\u017celi chcesz. Je\u015bli pozostawisz puste u\u017cyty b\u0119dzie domy\u015blny folder. Je\u017celi u\u017cywasz w\u0142asnej \u015bcie\u017cki b\u0119dzie wymagane dodanie jest w ustawieniach biblioteki.", + "HeaderCameraUploadHelp": "Aplikacja Emby mo\u017ce automatycznie przekazywa\u0107 zdj\u0119cia i wideo, z Twojego urz\u0105dzenia mobilnego, do serwera Emby.", + "LabelCameraUploadPath": "Folder przesy\u0142anych zdj\u0119\u0107:", + "LabelCameraUploadPathHelp": "Wybierz w\u0142asny folder przesy\u0142ania, w przypadku takiej potrzeby. Je\u015bli pozostawisz puste, u\u017cywany b\u0119dzie domy\u015blny folder. Je\u017celi u\u017cywasz w\u0142asnego folderu - wymagane b\u0119dzie dodanie go tak\u017ce w ustawieniach biblioteki.", "LabelCreateCameraUploadSubfolder": "Utw\u00f3rz podfolder dla ka\u017cdego urz\u0105dzenia", "LabelCreateCameraUploadSubfolderHelp": "Konkretne foldery mog\u0105 by\u0107 przydzielone do urz\u0105dze\u0144 przez klikni\u0119cie ich na stronie urz\u0105dzenia.", "LabelCustomDeviceDisplayName": "Wy\u015bwietlaj nazw\u0119:", @@ -1021,7 +1023,7 @@ "HeaderSignInWithConnect": "Zaloguj si\u0119 z Emby Connect", "HeaderGuests": "Go\u015bcie", "HeaderPendingInvitations": "Oczekuj\u0105ce Zaproszenia", - "TabParentalControl": "Ochrona Rodzicielska", + "TabParentalControl": "Kontrola rodzicielska", "HeaderAccessSchedule": "Dost\u0119p Harmonogramu", "HeaderAccessScheduleHelp": "Utw\u00f3rz dost\u0119p do harmonogramu aby ograniczy\u0107 go do okre\u015blonych godzin.", "LabelAccessDay": "Dzie\u0144 tygodnia:", @@ -1034,20 +1036,20 @@ "MessageProfileInfoSynced": "Informacje profilu u\u017cytkownika synchronizowane z Emby Connect.", "HeaderOptionalLinkEmbyAccount": "Opcjonalne: Po\u0142\u0105cz swoje konto Emby", "ButtonTrailer": "Trailer", - "MessageNoTrailersFound": "Nie znaleziono zwiastun\u00f3w. Zainstaluj kana\u0142 trailer\u00f3w aby ulepszy\u0107 swoje do\u015bwiadczenie kinowe dodaj\u0105c zwiastuny z internetu do biblioteki.", + "MessageNoTrailersFound": "Brak dost\u0119pnych zwiastun\u00f3w. Zainstaluj kana\u0142 zwiastun\u00f3w, aby ulepszy\u0107 swoje do\u015bwiadczenie kinowe, dodaj\u0105c zwiastuny z internetu do biblioteki.", "HeaderNewUsers": "Nowi U\u017cytkownicy", "ButtonSignUp": "Zaloguj si\u0119", "ButtonForgotPassword": "Zapomnia\u0142e\u015b has\u0142o", "OptionDisableUserPreferences": "Wy\u0142\u0105cz dost\u0119p do ustawie\u0144 u\u017cytkownika", "OptionDisableUserPreferencesHelp": "Je\u017celi w\u0142\u0105czone, tylko administratorzy b\u0119d\u0105 mogli konfigurowa\u0107 u\u017cytkownikowi profil obraz\u00f3w, hase\u0142 i j\u0119zyka.", "HeaderSelectServer": "Wybierz Serwer", - "MessageNoServersAvailableToConnect": "Nie ma dost\u0119pnych serwer\u00f3w do pod\u0142\u0105czenia si\u0119. Je\u017celi zosta\u0142e\u015b zaproszony do udost\u0119pnienia serwera, upewnij si\u0119 aby je zaakceptowa\u0107 poni\u017cej lub przez klikniecie linku w emailu.", + "MessageNoServersAvailableToConnect": "Brak dost\u0119pnych serwer\u00f3w, z kt\u00f3rymi mo\u017cna si\u0119 po\u0142\u0105czy\u0107. Je\u017celi zosta\u0142e\u015b zaproszony do wsp\u00f3\u0142dzielenia serwera, upewnij si\u0119, \u017ce je zaakceptowa\u0142e\u015b poni\u017cej lub klikaj\u0105c \u0142\u0105cze w wiadomo\u015bci pocztowej.", "TitleNewUser": "Nowy U\u017cytkownik", "ButtonConfigurePassword": "Konfiguruj Has\u0142o", "HeaderDashboardUserPassword": "Has\u0142a u\u017cytkownik\u00f3w s\u0105 zarz\u0105dzane z osobistych ustawie\u0144 profilu ka\u017cdego z u\u017cytkownik\u00f3w.", "HeaderLibraryAccess": "Dost\u0119p do Bibliotek", "HeaderChannelAccess": "Dost\u0119p do Kana\u0142\u00f3w", - "HeaderLatestItems": "Ostatnie Pozycje", + "HeaderLatestItems": "Ostatnio dodane", "HeaderShareMediaFolders": "Udost\u0119pnij foldery z mediami", "MessageGuestSharingPermissionsHelp": "Wi\u0119kszo\u015b\u0107 opcji jest wst\u0119pnie nieaktywna dla go\u015bci ale mo\u017ce zosta\u0107 aktywowana wedle potrzeby.", "HeaderInvitations": "Zaproszenia", @@ -1057,12 +1059,12 @@ "TitlePasswordReset": "Zresetuj has\u0142o", "LabelPasswordRecoveryPinCode": "Kod pin:", "HeaderPasswordReset": "Zresetuj has\u0142o", - "HeaderParentalRatings": "Klasyfikacja rodzicielska", + "HeaderParentalRatings": "Kategorie wiekowe", "HeaderVideoTypes": "Typy Video", "HeaderYears": "Lata", "HeaderBlockItemsWithNoRating": "Blokuj zawarto\u015b\u0107 bez informacji o ocenie rodzicielskiej b\u0105d\u017a gdy jest ona nierozpoznana:", "LabelBlockContentWithTags": "Zablokuj materia\u0142 z tagami:", - "LabelEnableSingleImageInDidlLimit": "Ogranicz do jednego osadzonego obrazka", + "LabelEnableSingleImageInDidlLimit": "Ograniczaj do jednego wbudowanego obrazu", "LabelEnableSingleImageInDidlLimitHelp": "Niekt\u00f3re urz\u0105dzenie nie pokarz\u0105 prawid\u0142owo wielu obraz\u00f3w z Didl.", "TabActivity": "Aktywno\u015b\u0107", "TitleSync": "Synchronizuj", @@ -1088,19 +1090,19 @@ "OptionAllowAudioPlaybackTranscoding": "Zgadzaj si\u0119 na odtwarzanie audio, kt\u00f3re wymaga transkodowania", "OptionAllowVideoPlaybackTranscoding": "Zgadzaj si\u0119 na odtwarzanie video, kt\u00f3re wymaga transkodowania", "OptionAllowVideoPlaybackRemuxing": "Pozw\u00f3l na wy\u015bwietlanie video, kt\u00f3re wymagaj\u0105 konwersji, bez ponownego kodowania", - "OptionAllowMediaPlaybackTranscodingHelp": "U\u017cytkownicy otrzymaj\u0105 wiadomo\u015b\u0107 je\u015bli nie mog\u0105 odtworzy\u0107 pliku ze wzgl\u0119du na polis\u0119 serwera.", + "OptionAllowMediaPlaybackTranscodingHelp": "U\u017cytkownicy otrzymaj\u0105 wiadomo\u015b\u0107, o braku mo\u017cliwo\u015bci odtwarzania zawarto\u015bci, ze wzgl\u0119du na polityk\u0119 bezpiecze\u0144stwa serwera.", "TabStreaming": "Streaming", - "LabelRemoteClientBitrateLimit": "Limit bitrate streamingu (Mbps):", - "LabelRemoteClientBitrateLimitHelp": "Opcjonalny limit streamowania bitrate dla urz\u0105dze\u0144 z poza sieci. Jest to wykorzystywane aby zapobiega\u0107 przed \u017c\u0105daniem wy\u017cszego bitrate ni\u017c z jakim jest w stanie sobie poradzi\u0107 twoje \u0142\u0105cze.", + "LabelRemoteClientBitrateLimit": "Limit przep\u0142ywno\u015bci transmisji (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "Opcjonalny limit przep\u0142ywno\u015bci transmisji dla urz\u0105dze\u0144 z poza sieci domowej. U\u017cywaj tej opcji, w celu zapobiegania \u017c\u0105daniom o wy\u017csze przep\u0142ywno\u015bci, ni\u017c Twojej po\u0142\u0105czenie internetowe mo\u017ce obs\u0142u\u017cy\u0107.", "LabelConversionCpuCoreLimit": "Limit rdzeni procesora:", "LabelConversionCpuCoreLimitHelp": "Okre\u015bl limit rdzeni procesora kt\u00f3re b\u0119d\u0105 u\u017cyte podczas konwersji przy synchronizacji.", - "OptionEnableFullSpeedConversion": "W\u0142\u0105cz konwersj\u0119 z pe\u0142n\u0105 pr\u0119dko\u015bci\u0105", - "OptionEnableFullSpeedConversionHelp": "Domy\u015blnie konwersja synchronizacja wykonywana jest na niskiej pr\u0119dko\u015bci aby minimalizowa\u0107 zu\u017cycie zasob\u00f3w.", + "OptionEnableFullSpeedConversion": "Konwertuj z pe\u0142n\u0105 pr\u0119dko\u015bci\u0105", + "OptionEnableFullSpeedConversionHelp": "Domy\u015blnie, synchronizacja konwersji jest wykonywana przy niskiej pr\u0119dko\u015bci tak, aby minimalizowa\u0107 u\u017cycie zasob\u00f3w.", "HeaderPlaylists": "Playllisty", "HeaderViewStyles": "Widok Styl\u00f3w", "TabPhotos": "Zdj\u0119cia", "HeaderWelcomeToEmby": "Witaj w Emby", - "EmbyIntroMessage": "Z Emby mo\u017cesz \u0142atwo streamowa\u0107 wideo, muzyk\u0119 i zdj\u0119cia do smartfon\u00f3w, tablet\u00f3w i innych urz\u0105dzeni ze swojego Serwera Emby.", + "EmbyIntroMessage": "Przy pomocy Emby mo\u017cesz \u0142atwo transmitowa\u0107 wideo, muzyk\u0119 i zdj\u0119cia do smartfon\u00f3w, tablet\u00f3w i innych urz\u0105dze\u0144, ze swojego serwera Emby.", "ButtonSkip": "Pomi\u0144", "TextConnectToServerManually": "Pod\u0142\u0105cz do serwera r\u0119cznie", "ButtonSignInWithConnect": "Zaloguj si\u0119 z Emby Connect", @@ -1117,17 +1119,17 @@ "HeaderExport": "Export", "HeaderColumns": "Kolumny", "ButtonReset": "Reset", - "OptionEnableExternalVideoPlayers": "W\u0142\u0105cz zewn\u0119trzne odtwarzacze wideo", - "LabelEnableFullScreen": "W\u0142\u0105cz tryb pe\u0142noekranowy", + "OptionEnableExternalVideoPlayers": "Aktywuj zewn\u0119trzne odtwarzacze wideo", + "LabelEnableFullScreen": "Aktywuj tryb pe\u0142noekranowy", "LabelEmail": "Email:", "LabelUsername": "Nazwa u\u017cytkownika:", "HeaderSignUp": "Zaloguj si\u0119", "LabelPasswordConfirm": "Has\u0142o (potwierd\u017a):", "ButtonAddServer": "Dodaj Serwer", - "TabHomeScreen": "Ekran G\u0142\u00f3wny", + "TabHomeScreen": "Ekran startowy", "HeaderDisplay": "Wy\u015bwietl", "HeaderNavigation": "Nawigacja", - "OptionEnableAutomaticServerUpdates": "W\u0142\u0105cz automatyczne aktualizacje serwera", + "OptionEnableAutomaticServerUpdates": "Aktualizuj serwer automatycznie", "OptionOtherTrailers": "Do\u0142\u0105cz zwiastuny z starszych film\u00f3w", "HeaderOverview": "Opis", "HeaderShortOverview": "Streszczenie", @@ -1139,16 +1141,16 @@ "LabelTunerIpAddress": "Adres IP dekodera:", "TabExternalServices": "Us\u0142ugi zewn\u0119trzne", "HeaderGuideProviders": "\u0179r\u00f3d\u0142a programu", - "AddGuideProviderHelp": "Pokazuj \u017ar\u00f3d\u0142o programu", + "AddGuideProviderHelp": "Pokazuj \u017ar\u00f3d\u0142o danych przewodnika", "LabelZipCode": "Kod pocztowy:", "GuideProviderSelectListings": "Pokazuj oferty", "GuideProviderLogin": "Login", "LabelLineup": "Kolejka:", - "MessageTunerDeviceNotListed": "Je\u015bli Twojego tunera nie ma na li\u015bcie, spr\u00f3buj zainstalowa\u0107 zewn\u0119trzny service provider aby zobaczy\u0107 wi\u0119cej opcji Live TV.", + "MessageTunerDeviceNotListed": "Twojego tunera nie ma na li\u015bcie? Spr\u00f3buj zainstalowa\u0107 zewn\u0119trznego dostawc\u0119 us\u0142ugi, aby zobaczy\u0107 wi\u0119cej dost\u0119pnych opcji.", "LabelImportOnlyFavoriteChannels": "Ogranicz do kana\u0142\u00f3w oznaczonych jako ulubione", "ImportFavoriteChannelsHelp": "Opcja powoduje zaimportowanie tylko kana\u0142\u00f3w oznaczonych jako ulubione w tunerze.", "ButtonRepeat": "Powt\u00f3rz", - "LabelEnableThisTuner": "W\u0142\u0105cz ten dekoder", + "LabelEnableThisTuner": "Aktywuj tuner", "LabelEnableThisTunerHelp": "Odznacz aby nie importowa\u0107 kana\u0142\u00f3w z tego tunera.", "HeaderImagePrimary": "Priorytetowy", "HeaderImageBackdrop": "Obraz t\u0142a", @@ -1156,21 +1158,21 @@ "HeaderUserPrimaryImage": "Avatar u\u017cytkownika", "ButtonProfile": "Profil", "ButtonProfileHelp": "Ustaw has\u0142o i obrazek dla profilu.", - "HeaderHomeScreenSettings": "Ustawienia ekranu domowego", + "HeaderHomeScreenSettings": "Ustawienia ekranu startowego", "HeaderProfile": "Profil", "HeaderLanguage": "J\u0119zyk", "LabelTranscodingThreadCount": "Ilo\u015b\u0107 w\u0105tk\u00f3w dekodowania:", "LabelTranscodingThreadCountHelp": "Wybierz maksymaln\u0105 ilo\u015b\u0107 w\u0105tk\u00f3w dla dekodowania. Zredukowanie ich ilo\u015bci obni\u017cy poziom zu\u017cycia procesora ale mo\u017ce niekorzystnie wp\u0142yn\u0105\u0107 na p\u0142ynno\u015b\u0107 odtwarzania.", "OptionMax": "Maksymalny", - "LabelSyncPath": "\u015acie\u017cka do zawarto\u015bci zsynchronizowanej:", + "LabelSyncPath": "Folder zawarto\u015bci zsynchronizowanej:", "OptionSyncOnlyOnWifi": "Synchronizuj tylko przez Wifi", "OptionSyncLosslessAudioOriginal": "Synchronizuj bezstratne audio w oryginalnej jako\u015bci", "HeaderUpcomingForKids": "Nadchodz\u0105ce dla dzieci", - "HeaderSetupLiveTV": "Ustaw Live TV", + "HeaderSetupLiveTV": "Konfiguracja telewizji", "LabelTunerType": "Typ tunera:", - "HeaderSetupTVGuide": "Skonfiguruj Program TV", + "HeaderSetupTVGuide": "Konfiguracja przewodnika", "LabelDataProvider": "Dostawca danych:", - "OptionSendRecordingsToAutoOrganize": "Organizuj automatycznie nagrania do istniej\u0105cych folderach seriali w innej bibliotece", + "OptionSendRecordingsToAutoOrganize": "Przeno\u015b nagrania do istniej\u0105cych folder\u00f3w seriali w innych bibliotekach", "HeaderDefaultRecordingSettings": "Domy\u015blne ustawienia nagrywania", "OptionEnableRecordingSubfolders": "Utw\u00f3rz podfoldery dla kategorii tj. sport, dla dzieci itp.", "HeaderSubtitles": "Napisy", @@ -1187,21 +1189,21 @@ "HeadersFolders": "Foldery", "LabelDisplayName": "Wy\u015bwietlaj nazw\u0119:", "LabelCodecIntrosPath": "\u015acie\u017cka do intro kodeka:", - "LabelCodecIntrosPathHelp": "Folder zawieraj\u0105cy pliki wideo. Je\u015bli nazwa pliku intro odpowiada nazwie kodeka video, audio, profilowi audio lub tag'owi, plik zostanie odtworzony przed filmem.", + "LabelCodecIntrosPathHelp": "Folder zawieraj\u0105cy pliki wideo. Je\u015bli nazwa pliku intra odpowiada nazwie kodeka wideo, d\u017awi\u0119ku, profilowi d\u017awi\u0119ku lub znacznikowi, plik b\u0119dzie odtwarzany przed filmem.", "OptionConvertRecordingsToStreamingFormat": "Automatycznie konwertuj nagrania do formatu przyjaznego strumieniowaniu.", - "OptionConvertRecordingsToStreamingFormatHelp": "Nagrania zostan\u0105 skonwertowane w locie do formatu MP4 lub MKV aby umo\u017cliwi\u0107 ich odtworzenie na wi\u0119kszo\u015bci urz\u0105dze\u0144.", + "OptionConvertRecordingsToStreamingFormatHelp": "Nagrania zostan\u0105 skonwertowane w locie do formatu MP4 lub MKV, aby umo\u017cliwi\u0107 ich odtwarzanie na wi\u0119kszo\u015bci urz\u0105dze\u0144.", "FeatureRequiresEmbyPremiere": "Ta funkcja wymaga aktywnej subskrypcji Emby Premiere.", "FileExtension": "Rozszerzenie pliku", - "OptionPlayNextEpisodeAutomatically": "Odtw\u00f3rz nast\u0119pny odcinek automatycznie", + "OptionPlayNextEpisodeAutomatically": "Odtwarzaj nast\u0119pny odcinek automatycznie", "OptionDownloadImagesInAdvance": "Pobieraj zdj\u0119cia z wyprzedzeniem", "SettingsSaved": "Ustawienia zapisane.", - "OptionDownloadImagesInAdvanceHelp": "Domy\u015blnie, wi\u0119kszo\u015b\u0107 obraz\u00f3w jest pobierana tylko kiedy jest wymagana przez aplikacje Emby. W\u0142\u0105cz t\u0105 opcj\u0119, aby pobiera\u0107 wszystkie obrazy z wyprzedzeniem, podczas importowania multimedi\u00f3w. Mo\u017ce powodowa\u0107 znacz\u0105co d\u0142u\u017csze skanowanie biblioteki.", + "OptionDownloadImagesInAdvanceHelp": "Domy\u015blnie, wi\u0119kszo\u015b\u0107 obraz\u00f3w jest pobierana tylko kiedy jest wymagana przez aplikacje Emby. Aktywuj t\u0105 opcj\u0119, aby pobiera\u0107 wszystkie obrazy z wyprzedzeniem, podczas importowania multimedi\u00f3w. Mo\u017ce powodowa\u0107 znacz\u0105co d\u0142u\u017csze skanowanie biblioteki.", "Users": "U\u017cytkownicy", "Delete": "Usu\u0144", "Password": "Has\u0142o", - "DeleteImage": "Usu\u0144 zdj\u0119cie", + "DeleteImage": "Usu\u0144 obraz", "MessageThankYouForSupporting": "Dzi\u0119kujemy za wspieranie Emby.", - "DeleteImageConfirmation": "Jeste\u015b pewien \u017ce chcesz usun\u0105\u0107 to zdj\u0119cie?", + "DeleteImageConfirmation": "Czy na pewno chcesz usun\u0105\u0107 ten obraz?", "FileReadCancelled": "Odczytywanie pliku zosta\u0142o anulowane.", "FileNotFound": "Plik nie znaleziony.", "FileReadError": "Wyst\u0105pi\u0142 b\u0142\u0105d podczas odczytywania pliku.", @@ -1210,8 +1212,8 @@ "PasswordResetHeader": "Zresetuj has\u0142o", "PasswordResetComplete": "Has\u0142o zosta\u0142o zresetowane.", "PinCodeResetComplete": "Kod pin zosta\u0142 zresetowany.", - "PasswordResetConfirmation": "Jeste\u015b pewien \u017ce chcesz zresetowa\u0107 has\u0142o?", - "PinCodeResetConfirmation": "Jeste\u015b pewien \u017ce chcesz zresetowa\u0107 kod pin?", + "PasswordResetConfirmation": "Czy na pewno chcesz wyczy\u015bci\u0107 has\u0142o?", + "PinCodeResetConfirmation": "Czy na pewno chcesz wyczy\u015bci\u0107 kod PIN?", "HeaderPinCodeReset": "Resetuj Kod Pin", "PasswordSaved": "Has\u0142o zapisane.", "PasswordMatchError": "Has\u0142o i potwierdzenie has\u0142a musz\u0105 si\u0119 zgadza\u0107.", @@ -1237,20 +1239,20 @@ "ServerUpdateNeeded": "Ten serwer Emby wymaga aktualizacji. Do pobrania najnowszej wersji odwied\u017a {0}", "LabelFromHelp": "Przyk\u0142ad: {0} (na serwerze)", "HeaderMyMedia": "Moje Media", - "ErrorLaunchingChromecast": "Wyst\u0105pi\u0142 b\u0142\u0105d podczas uruchamiania chromecast. Prosz\u0119 upewnij si\u0119 \u017ce twoje urz\u0105dzenie jest pod\u0142\u0105czone do sieci bezprzewodowej.", + "ErrorLaunchingChromecast": "Wyst\u0105pi\u0142 b\u0142\u0105d podczas uruchamiania ChromeCast. Upewnij si\u0119, \u017ce Twoje urz\u0105dzenie jest pod\u0142\u0105czone do sieci bezprzewodowej.", "MessageErrorLoadingSupporterInfo": "Wyst\u0105pi\u0142 b\u0142\u0105d podczas \u0142adowania informacji Emby Premiere. Spr\u00f3buj ponownie p\u00f3\u017aniej.", - "HeaderConfirmRemoveUser": "Usu\u0144 U\u017cytkownika", + "HeaderConfirmRemoveUser": "Usu\u0144 u\u017cytkownika", "ValueTimeLimitSingleHour": "Limit czasu: 1 godzina", "ValueTimeLimitMultiHour": "Limit czasu: {0} godzin", "PluginCategoryGeneral": "Og\u00f3lne", "PluginCategoryContentProvider": "\u0179r\u00f3d\u0142a zawarto\u015bci", "PluginCategoryScreenSaver": "Wygaszacze ekranu", "PluginCategoryTheme": "Sk\u00f3rki", - "PluginCategorySync": "Sync", + "PluginCategorySync": "Synchronizuj", "PluginCategorySocialIntegration": "Portale spo\u0142eczno\u015bciowe", "PluginCategoryNotifications": "Powiadomienia", "PluginCategoryMetadata": "Metadane", - "PluginCategoryLiveTV": "Telewizja na \u017cywo", + "PluginCategoryLiveTV": "Telewizja", "PluginCategoryChannel": "Kana\u0142y", "HeaderSearch": "Szukaj", "ValueDateCreated": "Data stworzenia: {0}", @@ -1275,7 +1277,7 @@ "HeaderDevices": "Urz\u0105dzenia", "ButtonScheduledTasks": "Zaplanowane zadania", "MessageItemsAdded": "Obiekty dodane", - "HeaderSelectCertificatePath": "Wybierz \u015bcie\u017ck\u0119 do certyfiaktu", + "HeaderSelectCertificatePath": "Wybierz folder certyfikatu", "HeaderSupporterBenefit": "Aktywa subskrypcja Emby Premiere daje dodatkowe korzy\u015bci np: dost\u0119p nagrywania telewizji (DVR), media offline, pluginy premium i wi\u0119cej. {0} Dowiedz si\u0119 wi\u0119cej {1}.", "HeaderWelcomeToProjectServerDashboard": "Witaj w kokpicie serwera Emby!", "HeaderWelcomeToProjectWebClient": "Witamy w Emby", @@ -1289,8 +1291,8 @@ "SyncJobItemStatusSyncedMarkForRemoval": "Oznaczone do usuni\u0119cia", "LabelAbortedByServerShutdown": "(Przerwano w skuter wy\u0142\u0105czenia serwera)", "LabelScheduledTaskLastRan": "Ostatnio uruchomiono {0}, czas trwania {1}.", - "HeaderDeleteTaskTrigger": "Usu\u0144 Wyzwalacz Zadania", - "MessageDeleteTaskTrigger": "Jeste\u015b pewien \u017ce chcesz usun\u0105\u0107 ten wyzwalacz zadania?", + "HeaderDeleteTaskTrigger": "Usu\u0144 wyzwalacz zadania", + "MessageDeleteTaskTrigger": "Czy na pewno chcesz usun\u0105\u0107 ten wyzwalacz zadania?", "MessageNoPluginsInstalled": "Nie masz \u017cadnych wtyczek zainstalowanych.", "MessageNoPluginsDueToAppStore": "Prosz\u0119 u\u017cy\u0107 aplikacji internetowej Emby aby zarz\u0105dza\u0107 pluginami.", "LabelVersionInstalled": "{0} zainstalowanych", @@ -1298,17 +1300,17 @@ "LabelFree": "Darmowe", "HeaderSelectAudio": "Wybierz Audio", "HeaderSelectSubtitles": "Wybierz Napisy", - "LabelDefaultStream": "(Domy\u015blny)", - "LabelForcedStream": "(Wymuszony)", - "LabelDefaultForcedStream": "(Domy\u015blny\/Wymuszony)", + "LabelDefaultStream": "(Domy\u015blne)", + "LabelForcedStream": "(Wymuszone)", + "LabelDefaultForcedStream": "(Domy\u015blne\/Wymuszone)", "LabelUnknownLanguage": "Nieznany j\u0119zyk", "ButtonMute": "Wycisz", "ButtonUnmute": "(OD)Wycisz", "ButtonPlaylist": "Playlista", - "LabelEnabled": "W\u0142\u0105czone", + "LabelEnabled": "Aktywne", "LabelDisabled": "Wy\u0142\u0105czone", "ButtonMoreInformation": "Wi\u0119cej Informacji", - "LabelNoUnreadNotifications": "Brak nieprzeczytanych powiadomie\u0144", + "LabelNoUnreadNotifications": "Brak nieprzeczytanych powiadomie\u0144.", "MessageInvalidUser": "Nieprawid\u0142owa nazwa u\u017cytkownika lub has\u0142o. Spr\u00f3buj ponownie.", "HeaderLoginFailure": "B\u0142\u0105d Logowania", "RecommendationBecauseYouLike": "Bo polubi\u0142e\u015b {0}", @@ -1319,7 +1321,7 @@ "MessageRecordingCancelled": "Nagranie anulowane.", "MessageRecordingScheduled": "Nagranie zosta\u0142o zaplanowane.", "HeaderConfirmSeriesCancellation": "Potwierd\u017a Anulowanie Serialu", - "HeaderConfirmRecordingDeletion": "Potwierd\u017a Usuni\u0119cie Nagrania", + "HeaderConfirmRecordingDeletion": "Potwierd\u017a usuni\u0119cie nagrania", "MessageRecordingSaved": "Nagranie zapisane", "OptionWeekend": "Weekendy", "OptionWeekday": "Dni Tygodnia", @@ -1327,7 +1329,7 @@ "LabelVersionUpToDate": "Aktualny!", "ButtonResetTuner": "Resetuj tuner", "HeaderResetTuner": "Resetuj Tuner", - "MessageConfirmResetTuner": "Czy jeste\u015b pewien \u017ce chcesz zresetowa\u0107 ten tuner? Ka\u017cde aktywny odtwarzacz lub nagranie zostanie przerwane.", + "MessageConfirmResetTuner": "Czy na pewno chcesz zresetowa\u0107 ten tuner? Wszystkie aktywne procesy odtwarzania i nagrywania zostan\u0119 przerwane.", "ButtonCancelSeries": "Anuluj Serial", "HeaderSeriesRecordings": "Nagrania Seriali", "LabelAnytime": "O ka\u017cdym czasie", @@ -1336,7 +1338,7 @@ "StatusRecordingProgram": "Nagrania {0}", "StatusWatchingProgram": "Ogl\u0105dane {0}", "HeaderSplitMedia": "Rozdziel Media", - "MessageConfirmSplitMedia": "Czy jeste\u015b pewien \u017ce chcesz rozdzieli\u0107 \u017ar\u00f3d\u0142a medi\u00f3w na oddzielne pozycje?", + "MessageConfirmSplitMedia": "Czy na pewno chcesz rozdzieli\u0107 \u017ar\u00f3d\u0142a medi\u00f3w na oddzielne pozycje?", "HeaderError": "B\u0142\u0105d", "MessageChromecastConnectionError": "Tw\u00f3j odbiornik Chromecast nie jest wstanie pod\u0142\u0105czy\u0107 si\u0119 do serwera Emby. Prosz\u0119 sprawd\u017a jego po\u0142\u0105czenie i spr\u00f3buj ponownie.", "HeaderLibraryFolders": "Foldery Medi\u00f3w", @@ -1344,14 +1346,14 @@ "HeaderFavoriteShows": "Ulubione Seriale", "HeaderFavoriteEpisodes": "Ulubione Odcinki", "HeaderFavoriteGames": "Ulubione Gry", - "HeaderConfirmProfileDeletion": "Potwierd\u017a Usuni\u0119cie Profilu", - "MessageConfirmProfileDeletion": "Jeste\u015b pewien \u017ce chcesz usun\u0105\u0107 ten profil?", - "HeaderSelectServerCachePath": "Wybierz \u015acie\u017ck\u0119 Cache Serwera", - "HeaderSelectTranscodingPath": "Wybierz \u015acie\u017ck\u0119 Tymczasowa Transkodowania", - "HeaderSelectMetadataPath": "Wybierz \u015acie\u017ck\u0119 Metadanych", - "HeaderSelectServerCachePathHelp": "Przegl\u0105daj lub wprowad\u017a \u015bcie\u017ck\u0119 dla plik\u00f3w cache serwera. Folder musi by\u0107 zapisywany.", - "HeaderSelectTranscodingPathHelp": "Przegl\u0105daj lub wprowad\u017a \u015bcie\u017ck\u0119 dla plik\u00f3w tymczasowych transkodowania. Folder musi by\u0107 zapisywany.", - "HeaderSelectMetadataPathHelp": "Przegl\u0105daj lub wprowad\u017a \u015bcie\u017ck\u0119 w kt\u00f3rej chcesz przechowywa\u0107 metadane. Folder musi by\u0107 zapisywany.", + "HeaderConfirmProfileDeletion": "Potwierd\u017a usuni\u0119cie profilu", + "MessageConfirmProfileDeletion": "Czy na pewno chcesz usun\u0105\u0107 ten profil?", + "HeaderSelectServerCachePath": "Wybierz folder bufora serwera", + "HeaderSelectTranscodingPath": "Wybierz folder tymczasowy transkodowania", + "HeaderSelectMetadataPath": "Wybierz folder metadanych", + "HeaderSelectServerCachePathHelp": "Przegl\u0105daj lub wprowad\u017a folder plik\u00f3w bufora serwera. Folder musi umo\u017cliwia\u0107 zapis plik\u00f3w.", + "HeaderSelectTranscodingPathHelp": "Przegl\u0105daj lub wprowad\u017a folder plik\u00f3w tymczasowych transkodowania. Folder musi umo\u017cliwia\u0107 zapis plik\u00f3w.", + "HeaderSelectMetadataPathHelp": "Przegl\u0105daj lub wprowad\u017a folder plik\u00f3w przechowywania metadanych. Folder musi umo\u017cliwia\u0107 zapis plik\u00f3w.", "HeaderFavoriteAlbums": "Ulubione Albumy", "HeaderLatestChannelMedia": "Ostatnie Pozycje Kana\u0142\u00f3w", "ButtonOrganizeFile": "Organizuj Pliki", @@ -1363,19 +1365,19 @@ "StatusSuccess": "Sukces", "MessageFileWillBeDeleted": "Nast\u0119puj\u0105cy plik zostanie usuni\u0119ty:", "MessageSureYouWishToProceed": "Czy na pewno chcesz kontynuowa\u0107?", - "MessageDuplicatesWillBeDeleted": "Dodatkowo, usuni\u0119te zostan\u0105 nast\u0119puj\u0105ce duplikaty:", + "MessageDuplicatesWillBeDeleted": "Dodatkowo, zostan\u0105 usuni\u0119te nast\u0119puj\u0105ce duplikaty:", "MessageFollowingFileWillBeMovedFrom": "Plik zostanie przeniesiony z:", "MessageDestinationTo": "do:", "HeaderSelectWatchFolder": "Wska\u017c obserwowany folder:", - "HeaderSelectWatchFolderHelp": "Przegl\u0105daj lub wprowad\u017a \u015bcie\u017ck\u0119 do obserwowanego folderu. Musisz posiadac tam prawa zapisu.", + "HeaderSelectWatchFolderHelp": "Przegl\u0105daj lub wprowad\u017a folder, kt\u00f3ry ma by\u0107 monitorowany. Folder musi umo\u017cliwia\u0107 zapis plik\u00f3w.", "OrganizePatternResult": "Wynik: {0}", "AutoOrganizeError": "Bl\u0105d przy organizacji pliku", "FileOrganizeManually": "Organizuj plik", "ErrorOrganizingFileWithErrorCode": "Wyst\u0105pi\u0142 b\u0142\u0105d przy organizacji pliku. Kod b\u0142\u0119du: {0}.", - "HeaderRestart": "Restart", + "HeaderRestart": "Uruchom ponownie", "HeaderShutdown": "Zamknij", "MessageConfirmRestart": "Czy na pewno chcesz uruchomi\u0107 serwer Emby ponownie?", - "MessageConfirmShutdown": "Czy na pewno chcesz ca\u0142kowicie wy\u0142\u0105czy\u0107 serwer Emby?", + "MessageConfirmShutdown": "Czy na pewno chcesz zamkn\u0105\u0107 serwer Emby?", "ValueItemCount": "{0} pozycja", "ValueItemCountPlural": "{0} pozycji", "NewVersionOfSomethingAvailable": "Nowa wersja {0} jest dost\u0119pna!", @@ -1385,30 +1387,30 @@ "LabelPlayMethodDirectStream": "Streaming bezpo\u015bredni", "LabelPlayMethodDirectPlay": "Odtwarzanie bezpo\u015brednie", "LabelAudioCodec": "Audio: {0}", - "LabelVideoCodec": "Video: {0}", + "LabelVideoCodec": "Wideo: {0}", "LabelLocalAccessUrl": "Dost\u0119p lokalny (LAN): {0}", "LabelRemoteAccessUrl": "Dost\u0119p zdalny (WAN): {0}", "LabelRunningOnPort": "Pracuje na porcie http {0}.", "LabelRunningOnPorts": "Pracuje na porcie http {0} oraz na porcie https {1}.", "HeaderLatestFromChannel": "Najnowsze w {0}", "ButtonRemoteControl": "Zdalne sterowanie", - "HeaderLatestTvRecordings": "Najnowsze nagrania", - "LabelCurrentPath": "Aktualna \u015bcie\u017cka:", - "HeaderSelectMediaPath": "Wybierz \u015bcie\u017ck\u0119 medi\u00f3w", - "HeaderSelectPath": "Wybierz \u015bcie\u017ck\u0119", + "HeaderLatestTvRecordings": "Nagrania ostatnio dodane", + "LabelCurrentPath": "Folder aktualny:", + "HeaderSelectMediaPath": "Wybierz folder medi\u00f3w", + "HeaderSelectPath": "Wybierz folder", "ButtonNetwork": "Sie\u0107", - "MessageDirectoryPickerInstruction": "\u015acie\u017cki sieciowe mog\u0105 by\u0107 wpisane r\u0119cznie w wypadku niewykrycia wszystkich urz\u0105dze\u0144 przez przycisk \"Sie\u0107\". Na przyk\u0142ad: {0} lub {1}.", + "MessageDirectoryPickerInstruction": "Udzia\u0142y sieciowe mog\u0105 by\u0107 wprowadzone manualnie, w przypadku niewykrycia wszystkich urz\u0105dze\u0144 za pomoc\u0105 przycisku \"Sie\u0107\". Na przyk\u0142ad: {0} lub {1}.", "MessageDirectoryPickerBSDInstruction": "W wypadku BSD, nale\u017cy skonfigurowa\u0107 oprogramowanie FreeNAS aby umo\u017cliwi\u0107 serwerowi Emby dost\u0119p do danych.", "MessageDirectoryPickerLinuxInstruction": "Dla Linuxa dystrybucji Arch Linux, CentOS, Debian, Fedora, OpenSuse albo Ubuntu, musisz uzyska\u0107 dla u\u017cytkownika Emby uprawnienia przynajmniej do odczytu pami\u0119ci masowej.", "HeaderMenu": "Menu", "ButtonOpen": "Otw\u00f3rz", "ButtonShuffle": "Losowo", "ButtonResume": "Wzn\u00f3w", - "HeaderAudioTracks": "\u015acie\u017cki Audio", + "HeaderAudioTracks": "\u015acie\u017cki d\u017awi\u0119kowe", "HeaderLibraries": "Biblioteki", "HeaderVideoQuality": "Jako\u015b\u0107 Wideo", "MessageErrorPlayingVideo": "Wyst\u0105pi\u0142 b\u0142\u0105d podczas odtwarzania wideo.", - "MessageEnsureOpenTuner": "Prosz\u0119 upewnij si\u0119 \u017ce otwarty tuner jest dost\u0119pny.", + "MessageEnsureOpenTuner": "Upewnij si\u0119 \u017ce dost\u0119pny jest otwarty tuner.", "ButtonDashboard": "Kokpit", "ButtonReports": "Raporty", "MetadataManager": "Menad\u017cer metadanych", @@ -1422,11 +1424,11 @@ "OptionBlockMovies": "Filmy", "OptionBlockBooks": "Ksi\u0105\u017cki", "OptionBlockGames": "Gry", - "OptionBlockLiveTvPrograms": "Programy TV Na \u017bywo", - "OptionBlockLiveTvChannels": "Kana\u0142y TV Na \u017bywo", + "OptionBlockLiveTvPrograms": "Programy telewizyjne", + "OptionBlockLiveTvChannels": "Kana\u0142y telewizyjne", "OptionBlockChannelContent": "Zawarto\u015b\u0107 Kana\u0142\u00f3w Internetowych", "ButtonRevoke": "Odwo\u0142aj", - "MessageConfirmRevokeApiKey": "Czy jeste\u015b pewien \u017ce chcesz odwo\u0142a\u0107 klucz api? Po\u0142\u0105czenia aplikacji z Serwerem Emby zostan\u0105 przerwane.", + "MessageConfirmRevokeApiKey": "Czy na pewno chcesz uniewa\u017cni\u0107 klucz api? Po\u0142\u0105czenia aplikacji z serwerem Emby zostan\u0105 natychmiastowo zako\u0144czone.", "HeaderConfirmRevokeApiKey": "Odwo\u0142aj Klucz Api", "ValueContainer": "Kontener: {0}", "ValueAudioCodec": "Kodek Audio: {0}", @@ -1434,25 +1436,25 @@ "ValueCodec": "Kodek: {0}", "ValueConditions": "Warunki: {0}", "LabelAll": "Wszystkie", - "HeaderDeleteImage": "Usu\u0144 Obraz", + "HeaderDeleteImage": "Usu\u0144 obraz", "MessageFileNotFound": "Nie znaleziono pliku.", "MessageFileReadError": "Wyst\u0105pi\u0142 b\u0142\u0105d podczas odczytywania pliku.", "ButtonNextPage": "Nast\u0119pna Strona", "ButtonPreviousPage": "Poprzednia Strona", "ButtonMoveLeft": "Przesu\u0144 w lewo", "ButtonMoveRight": "Przesu\u0144 w prawo", - "HeaderDeleteItem": "Usu\u0144 pozycje", + "HeaderDeleteItem": "Usu\u0144 pozycj\u0119", "MessageItemSaved": "Obiekt zapisany.", "MessagePleaseAcceptTermsOfServiceBeforeContinuing": "Prosz\u0119 zaakceptowa\u0107 warunki us\u0142ugi przed kontynuowaniem", "OptionOff": "Off", "OptionOn": "On", "ButtonUninstall": "Odinstaluj", - "HeaderLiveTV": "Telewizja na \u017cywo", + "HeaderLiveTV": "Telewizja", "MissingPrimaryImage": "Brakuje podstawowego obrazu.", "MissingBackdropImage": "Brakuje obrazu t\u0142a.", "MissingLogoImage": "Brakuje logo.", "MissingEpisode": "Brakuje epizodu.", - "OptionBackdrops": "T\u0142a tematyczne", + "OptionBackdrops": "Fototapety", "OptionImages": "Obrazki", "OptionKeywords": "S\u0142owa kluczowe", "OptionTags": "Tagi", @@ -1464,35 +1466,35 @@ "OptionProductionLocations": "Lokalizacja produkcji", "OptionBirthLocation": "Miejsce urodzenia", "HeaderChangeFolderType": "Zmie\u0144 typ zawarto\u015bci", - "HeaderChangeFolderTypeHelp": "Aby zmieni\u0107 typ, usu\u0144 bibliotek\u0119 a potem dodaj j\u0105 okre\u015blaj\u0105c nowy typ.", - "HeaderAlert": "Powiadomienie", + "HeaderChangeFolderTypeHelp": "W celu zmiany typu, usu\u0144 bibliotek\u0119, a nast\u0119pnie dodaj j\u0105 okre\u015blaj\u0105c nowy typ.", + "HeaderAlert": "Alarm", "MessagePleaseRestart": "Prosz\u0119 zresetowa\u0107 aby uko\u0144czy\u0107 aktualizacj\u0119.", "ButtonHide": "Ukryj", "MessageSettingsSaved": "Ustawienia zapisane.", "TabLibrary": "Biblioteka", "TabDLNA": "DLNA", - "TabLiveTV": "TV Na \u017bywo", - "TabAutoOrganize": "Auto-Organizuj", + "TabLiveTV": "Telewizja", + "TabAutoOrganize": "Organizator", "TabPlugins": "Wtyczki", "TabHelp": "Pomoc", "ButtonFullscreen": "Pe\u0142ny ekran", - "ButtonAudioTracks": "\u015acie\u017cki audio", + "ButtonAudioTracks": "\u015acie\u017cki d\u017awi\u0119kowe", "ButtonQuality": "Jako\u015b\u0107", "HeaderNotifications": "Powiadomienia", - "HeaderSelectPlayer": "Wybierz Odtworzacz", + "HeaderSelectPlayer": "Wybierz odtwarzacz", "ButtonViewSeriesRecording": "Ogl\u0105daj nagrania seriali", "HeaderSpecials": "Specjalne", "HeaderTrailers": "Zwiastuny", "HeaderResolution": "Rozdzielczo\u015b\u0107", "HeaderRuntime": "D\u0142ugo\u015b\u0107 filmu", - "HeaderParentalRating": "Parental Rating", + "HeaderParentalRating": "Kategoria wiekowa", "HeaderReleaseDate": "Data wydania", "HeaderSeries": "Seriale:", "HeaderSeason": "Sezon", "HeaderSeasonNumber": "Numer sezonu", "HeaderNetwork": "Sie\u0107", "HeaderYear": "Rok:", - "HeaderEmbeddedImage": "Osadzony obraz", + "HeaderEmbeddedImage": "Obraz wbudowany", "HeaderTrack": "\u015acie\u017cka", "OptionCollections": "Kolekcje", "OptionSeries": "Seriale", @@ -1503,28 +1505,28 @@ "OptionMusicAlbums": "Albumy muzyczne", "OptionMusicVideos": "Teledyski", "OptionSongs": "Utwory", - "OptionHomeVideos": "Filmy i zdj\u0119cia domowe", + "OptionHomeVideos": "Nagrania i zdj\u0119cia prywatne", "OptionBooks": "Ksi\u0105\u017cki", "ButtonUp": "G\u00f3ra", "ButtonDown": "D\u00f3\u0142", "LabelMetadataReaders": "Czytnik metadanych:", "LabelMetadataReadersHelp": "Okre\u015bl sw\u00f3j priorytet dla \u017ar\u00f3de\u0142 metadanych. Pierwszy znaleziony plik b\u0119dzie odczytany.", "LabelMetadataDownloaders": "Podbieracze metadanych:", - "LabelMetadataDownloadersHelp": "W\u0142\u0105cz i okre\u015bl priorytet preferowanych podbieraczy metadanych. Ni\u017cszy priorytet b\u0119dzie u\u017cyty do wype\u0142nienia brakuj\u0105cych informacji.", + "LabelMetadataDownloadersHelp": "Aktywuj i okre\u015bl priorytet preferowanych dostawc\u00f3w metadanych. Dostawcy o ni\u017cszym priorytecie b\u0119d\u0105 u\u017cywani tylko w przypadku brakuj\u0105cych informacji.", "LabelMetadataSavers": "Zapisywacze metadanych:", "LabelMetadataSaversHelp": "Wybierz formaty plik\u00f3w u\u017cywane do zapisywania metadanych.", "LabelImageFetchers": "Pobieraj obrazy z:", - "LabelImageFetchersHelp": "W\u0142\u0105cz i uporz\u0105dkuj preferowane \u017ar\u00f3d\u0142a obraz\u00f3w wed\u0142ug ich priorytetu.", + "LabelImageFetchersHelp": "Aktywuj i uporz\u0105dkuj preferowane \u017ar\u00f3d\u0142a obraz\u00f3w wed\u0142ug ich priorytetu.", "LabelDynamicExternalId": "{0} Id:", "PersonTypePerson": "Osoba", "OptionSortName": "Kr\u00f3tka nazwa:", "LabelDateOfBirth": "Data urodzenia:", "LabelDeathDate": "Data \u015bmierci:", "HeaderRemoveMediaLocation": "Usu\u0144 lokalizacj\u0119 medi\u00f3w", - "MessageConfirmRemoveMediaLocation": "Czy na pewno chcesz usun\u0105\u0107 t\u0119 lokacj\u0119?", + "MessageConfirmRemoveMediaLocation": "Czy na pewno chcesz usun\u0105\u0107 t\u0119 lokalizacj\u0119?", "LabelNewName": "Nowa nazwa:", "HeaderRemoveMediaFolder": "Usu\u0144 folder z mediami", - "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Nast\u0119puj\u0105ce lokacje multimedi\u00f3w zostan\u0105 usuni\u0119te z biblioteki Emby:", + "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Nast\u0119puj\u0105ce lokalizacje medi\u00f3w zostan\u0105 usuni\u0119te z biblioteki Emby:", "MessageAreYouSureYouWishToRemoveMediaFolder": "Czy na pewno chcesz usun\u0105\u0107 ten folder z biblioteki?", "ButtonRename": "Zmie\u0144 nazw\u0119", "ButtonChangeContentType": "Zmie\u0144 typ zawarto\u015bci", @@ -1534,7 +1536,7 @@ "BirthPlaceValue": "Miejsce urodzenia: {0}", "DeathDateValue": "Zmar\u0142y: {0}", "BirthDateValue": "Urodzony: {0}", - "HeaderLatestReviews": "Ostatnie reenzje", + "HeaderLatestReviews": "Ostatnie recenzje", "HeaderPluginInstallation": "Instalacja wtyczki", "MessageAlreadyInstalled": "Ta wersja jest ju\u017c zainstalowana", "ValueReviewCount": "{0} Recenzji", @@ -1547,7 +1549,7 @@ "HeaderEmbyAccountAdded": "Dodano Konto Emby", "MessageEmbyAccountAdded": "Konto Emby zosta\u0142o dodane dla tego u\u017cytkownika.", "MessagePendingEmbyAccountAdded": "Konto Emby zosta\u0142o dodane dla tego u\u017cytkownika. Zostanie wys\u0142any email do w\u0142a\u015bciciela konta. Zaproszenie musi zosta\u0107 potwierdzone poprzez klikni\u0119cie linku w emailu.", - "HeaderEmbyAccountRemoved": "Konto Emby Usuni\u0119te", + "HeaderEmbyAccountRemoved": "Konto Emby zosta\u0142o usuni\u0119te", "MessageEmbyAccontRemoved": "Konto Emby zosta\u0142o usuni\u0119te dla tego u\u017cytkownika.", "TooltipLinkedToEmbyConnect": "Po\u0142\u0105czono z Emby Connect", "HeaderUnrated": "Nieokre\u015blone", @@ -1578,7 +1580,7 @@ "ValueSongCount": "{0} utwory", "ValueOneMusicVideo": "1 teledysk", "ValueMusicVideoCount": "{0} teledyski", - "HeaderOffline": "Offline", + "HeaderOffline": "Niedost\u0119pny", "HeaderUnaired": "Nie transmitowany", "HeaderMissing": "Brakuj\u0105ce", "ButtonWebsite": "Strona WWW", @@ -1586,12 +1588,12 @@ "ValueAwards": "Nagrody: {0}", "ValuePremiered": "Premiera {0}", "ValuePremieres": "Premiery {0}", - "ValueStudio": "Studio: {0}", + "ValueStudio": "Wytw\u00f3rnia: {0}", "ValueStudios": "Studia: {0}", - "ValueStatus": "Status: {0}", + "ValueStatus": "Stan: {0}", "LabelLimit": "Limit:", "ValueLinks": "Linki: {0}", - "HeaderCastAndCrew": "Obsada Aktorska & Inni", + "HeaderCastAndCrew": "Obsada i ekipa", "ValueArtist": "Artysta: {0}", "ValueArtists": "Arty\u015bci: {0}", "MediaInfoCameraMake": "Marka aparatu", @@ -1620,43 +1622,43 @@ "ValueAsRole": "jako {0}", "ValueGuestStar": "Go\u015b\u0107 specjalny", "MediaInfoSize": "Rozmiar", - "MediaInfoPath": "\u015acie\u017cka", + "MediaInfoPath": "Folder", "MediaInfoFile": "Plik", "MediaInfoFormat": "Format", "MediaInfoContainer": "Kontener", "MediaInfoDefault": "Domy\u015blnie", - "MediaInfoForced": "Wymuszony", + "MediaInfoForced": "Wymuszone", "MediaInfoExternal": "Zewn\u0119trzny", "MediaInfoTimestamp": "Znacznik czasu", - "MediaInfoPixelFormat": "Format pixeli", + "MediaInfoPixelFormat": "Format piksela", "MediaInfoBitDepth": "G\u0142\u0119bia bitowa", "MediaInfoSampleRate": "Pr\u00f3bkowanie", "MediaInfoBitrate": "Przep\u0142ywno\u015b\u0107", "MediaInfoChannels": "Kana\u0142y", - "MediaInfoLayout": "Wygl\u0105d", + "MediaInfoLayout": "Format", "MediaInfoLanguage": "J\u0119zyk", "MediaInfoCodec": "Kodek", "MediaInfoCodecTag": "Tag kodeku", "MediaInfoProfile": "Profil", "MediaInfoLevel": "Poziom", - "MediaInfoAspectRatio": "Stosunek", + "MediaInfoAspectRatio": "Proporcje", "MediaInfoResolution": "Rozdzielczo\u015b\u0107", - "MediaInfoAnamorphic": "Anamorphic", - "MediaInfoInterlaced": "Interlaced", - "MediaInfoFramerate": "Framerate", - "MediaInfoStreamTypeAudio": "Audio", - "MediaInfoStreamTypeData": "Data", + "MediaInfoAnamorphic": "Anamorficzne", + "MediaInfoInterlaced": "Przeplot", + "MediaInfoFramerate": "Klatka\u017c", + "MediaInfoStreamTypeAudio": "D\u017awi\u0119k", + "MediaInfoStreamTypeData": "Dane", "MediaInfoStreamTypeVideo": "Wideo", "MediaInfoStreamTypeSubtitle": "Napisy", - "MediaInfoStreamTypeEmbeddedImage": "Osadzony obraz", - "MediaInfoRefFrames": "Ref frames", - "TabExpert": "Expert", + "MediaInfoStreamTypeEmbeddedImage": "Obraz wbudowany", + "MediaInfoRefFrames": "Klatki referencyjne", + "TabExpert": "Eksperckie", "HeaderSelectCustomIntrosPath": "Okre\u015bl w\u0142asn\u0105 \u015bcie\u017ck\u0119 intro", "HeaderThankYou": "Dzi\u0119kuje", "LabelFullReview": "Pe\u0142na recenzja:", "ReleaseYearValue": "Rok wydania: {0}", "OriginalAirDateValue": "data pierwszej emisji: {0}", - "WebClientTourContent": "Obejrzyj swoje niedawno dodane media, nast\u0119pne odcinki i wi\u0119cej. Zielone k\u00f3\u0142ka oznaczaj\u0105 jak wiele nie odtworzonych pozycji zosta\u0142o.", + "WebClientTourContent": "Przejrzyj niedawno dodane media, nast\u0119pne odcinki i wi\u0119cej. Zielone ko\u0142a oznaczaj\u0105 liczb\u0119 pozycji do obejrzenia.", "WebClientTourMovies": "Odtwarzaj filmy, zwiastuny i wiele wi\u0119cej z ka\u017cdego urz\u0105dzeni i przegl\u0105darki", "WebClientTourMouseOver": "zatrzymaj mysz nad plakatem aby uzyska\u0107 szybk\u0105 informacj\u0119", "WebClientTourTapHold": "Naci\u015bnij i przytrzymaj lub kliknij prawym dla menu kontekstowego", @@ -1665,22 +1667,22 @@ "WebClientTourCollections": "Tw\u00f3rz kolekcje film\u00f3w i grupuj je w box set-y", "WebClientTourUserPreferences1": "Preferencje u\u017cytkownika pozwalaj\u0105 ci na dostosowywanie sposobu w jaki biblioteka prezentowana jest na wszystkich aplikacjach Emby", "WebClientTourUserPreferences2": "Konfiguruj swoje ustawienia j\u0119zyka dla audio i napis\u00f3w dla wszystkich swoich aplikacji Emby", - "WebClientTourUserPreferences3": "Dostosuj stron\u0119 g\u0142\u00f3wn\u0105 klienta web do swoich upodoba\u0144", - "WebClientTourUserPreferences4": "Konfiguruj t\u0142a, tematy muzyczne i zewn\u0119trzne odtwarzacze", - "WebClientTourMobile1": "Ten klient web dzia\u0142a wspaniale na smartfonach i tabletach...", + "WebClientTourUserPreferences3": "Dostosuj stron\u0119 startow\u0105 klienta web do swoich upodoba\u0144", + "WebClientTourUserPreferences4": "Konfiguruj fototapety, motywy muzyczne i zewn\u0119trzne odtwarzacze", + "WebClientTourMobile1": "Ten klient webowy dzia\u0142a \u015bwietnie na smartfonach i tabletach...", "WebClientTourMobile2": "i \u0142atwo kontroluje inne urz\u0105dzenia i aplikacje Emby", "WebClientTourMySync": "Synchronizuj swoje osobiste media do twoich urz\u0105dze\u0144 dla ogl\u0105dania offline.", "MessageEnjoyYourStay": "Mi\u0142ego pobytu", "DashboardTourDashboard": "Kokpit serwera pozwala ci na monitorowanie twojego serwera i u\u017cytkownik\u00f3w. Zawsze b\u0119dziesz wiedzia\u0142 co kto robi i gdzie si\u0119 znajduje.", "DashboardTourHelp": "Pomoc w aplikacji dostarcza \u0142atwe guziki do otwierania stron wiki powi\u0105zanych z zawarto\u015bci\u0105 strony.", - "DashboardTourUsers": "\u0141atwo tw\u00f3rz konta u\u017cytkownik\u00f3w dla swoich przyjaci\u00f3\u0142 i rodziny, ka\u017cdy ze swoimi uprawnieniami, dost\u0119pem do biblioteki, ochron\u0105 rodzicielsk\u0105 i wi\u0119cej.", + "DashboardTourUsers": "\u0141atwe tworzenie kont u\u017cytkownik\u00f3w dla przyjaci\u00f3\u0142 i rodziny, z w\u0142asnymi uprawnieniami, dost\u0119pem do biblioteki, kontrol\u0105 rodzicielsk\u0105 i wi\u0119cej.", "DashboardTourCinemaMode": "Tryb kinowy wniesie kinowe prze\u017cycia wprost do Twojego salonu z mo\u017cliwo\u015bci\u0105 odtwarzania zwiastun\u00f3w i w\u0142asnego intra przez seansem.", - "DashboardTourChapters": "W\u0142\u0105cz generowanie obraz\u00f3w rozdzia\u0142\u00f3w dla twoich wideo dla \u0142adniejszej prezentacji podczas przegl\u0105dania.", + "DashboardTourChapters": "Umo\u017cliwia generowanie obraz\u00f3w rozdzia\u0142\u00f3w dla twoich wideo dla \u0142adniejszej prezentacji podczas przegl\u0105dania.", "DashboardTourSubtitles": "Automatycznie pobieraj napisy dla twojego wideo w dowolnym j\u0119zyku.", - "DashboardTourPlugins": "Zainstaluj wtyczki takie jak przegl\u0105darka kana\u0142\u00f3w internetowych, TV na \u017cywo, skanery metadanych i wiele wi\u0119cej.", + "DashboardTourPlugins": "Zainstaluj wtyczki takie, jak: przegl\u0105darka kana\u0142\u00f3w internetowych, telewizja, dostawcy metadanych i inne.", "DashboardTourNotifications": "Automatycznie wysy\u0142aj powiadomienia o zdarzeniach na serwerze do swoich urz\u0105dze\u0144 mobilnym, maila i wi\u0119cej.", "DashboardTourScheduledTasks": "\u0141awo zarz\u0105dzaj d\u0142ugo trwaj\u0105cymi operacjami za pomoc\u0105 zaplanowanych zada\u0144. Decyduj kiedy s\u0105 uruchamiane i jak cz\u0119sto.", - "DashboardTourMobile": "Kokpit Emby dzia\u0142a \u015bwietnie na smartfonach i tabletach. Zarz\u0105dzaj swoim serwerem ze swojej d\u0142oni kiedykolwiek, gdziekolwiek.", + "DashboardTourMobile": "Kokpit Emby dzia\u0142a \u015bwietnie na smartfonach i tabletach. Zarz\u0105dzaj swoim serwerem ze swojej d\u0142oni kiedykolwiek, gdziekolwiek chcesz.", "DashboardTourSync": "Synchronizuj swoje osobiste multimedia z swoimi urz\u0105dzeniami do ogl\u0105dania offline.", "TabExtras": "Dodatki", "HeaderUploadImage": "Wy\u015blij obrazek", @@ -1692,15 +1694,15 @@ "LabelEnableCameraUploadForHelp": "Przesy\u0142anie nast\u0105pi automatycznie w tle po zalogowaniu si\u0119do Emby.", "ErrorMessageStartHourGreaterThanEnd": "Czas ko\u0144cowy musi by\u0107 wi\u0119kszy ni\u017c czas pocz\u0105tkowy.", "ButtonLibraryAccess": "Dost\u0119p do biblioteki", - "ButtonParentalControl": "Ochrona Rodzicielska", + "ButtonParentalControl": "Kontrola rodzicielska", "HeaderInvitationSent": "Zaproszenie wys\u0142ane", - "MessageInvitationSentToUser": "Wiadomo\u015b\u0107 z pro\u017ab\u0105 o akceptacj\u0119 zaproszenia udost\u0119pniania zosta\u0142a wys\u0142ana do {0}.", - "MessageInvitationSentToNewUser": "Wiadomo\u015b\u0107 z pro\u017ab\u0105 o stworzenie konta Emby zosta\u0142a wys\u0142ana do {0}.", + "MessageInvitationSentToUser": "Wiadomo\u015b\u0107, z pro\u015bb\u0105 o akceptacj\u0119 zaproszenia wsp\u00f3\u0142dzielenia, zosta\u0142a wys\u0142ana do {0}.", + "MessageInvitationSentToNewUser": "Wiadomo\u015b\u0107, z pro\u015bb\u0105 o utworzenie konta Emby, zosta\u0142a wys\u0142ana do {0}.", "HeaderConnectionFailure": "B\u0142\u0105d po\u0142\u0105czenia", - "MessageUnableToConnectToServer": "Nie jeste\u015bmy w tej chwili w stanie po\u0142\u0105czy\u0107 si\u0119 z wybranym serwerem. Prosz\u0119 upewni\u0107 si\u0119, \u017ce dzia\u0142a i spr\u00f3bowa\u0107 ponownie.", + "MessageUnableToConnectToServer": "Po\u0142\u0105czenie z wybranym serwerem jest teraz niemo\u017cliwe. Upewnij si\u0119, \u017ce jest uruchomiony i spr\u00f3buj ponownie.", "ButtonSelectServer": "Wybierz serwer", "MessagePluginConfigurationRequiresLocalAccess": "Aby skonfigurowa\u0107 ten plugin zaloguj si\u0119 bezpo\u015brednio do lokalnego serwera.", - "MessageLoggedOutParentalControl": "Dost\u0119p jest chwilowo zablokowany. Prosz\u0119 spr\u00f3bowa\u0107 p\u00f3\u017aniej.", + "MessageLoggedOutParentalControl": "Dost\u0119p jest aktualnie ograniczony. Prosz\u0119 spr\u00f3bowa\u0107 p\u00f3\u017aniej.", "DefaultErrorMessage": "Wyst\u0105pi\u0142 bl\u0105d podczas przetwarzania twojego rz\u0105dania. Prosz\u0119 spr\u00f3bowa\u0107 ponownie po\u017aniej.", "ButtonAccept": "Akceptuj", "ButtonReject": "Odrzu\u0107", @@ -1717,7 +1719,7 @@ "LabelQuality": "Jako\u015b\u0107:", "BookLibraryHelp": "Wspierane s\u0105 wersje tekstowe oraz d\u017awi\u0119kowe", "MessageGamePluginRequired": "Wymaga instalacji wtyczki GameBrowser", - "MessageUnsetContentHelp": "Zawarto\u015b\u0107 zostanie wy\u015bwietlona jako p\u0142askie foldery, dla najlepszych wynik\u00f3w u\u017cyj menad\u017cera metadanych dla ustawienia typu zawarto\u015bci sub folder\u00f3w.", + "MessageUnsetContentHelp": "Zawarto\u015b\u0107 b\u0119dzie wy\u015bwietlana jako proste foldery. W celu uzyskania najlepszych wynik\u00f3w, u\u017cyj menad\u017cera metadanych do ustawienia typu zawarto\u015bci podfolder\u00f3w.", "SyncJobItemStatusQueued": "Zakolejkowano", "SyncJobItemStatusConverting": "Konwertuj\u0119", "SyncJobItemStatusTransferring": "Przenosz\u0119", @@ -1737,7 +1739,7 @@ "HeaderUnlockApp": "Odblokuj aplikacj\u0119", "HeaderUnlockSync": "Odblokuj synchronizacj\u0119 Emby", "MessagePaymentServicesUnavailable": "Serwis p\u0142atno\u015bci jest chwilowo niedost\u0119pny. Prosz\u0119 spr\u00f3bowa\u0107 p\u00f3\u017aniej.", - "OptionEnableFullscreen": "W\u0142\u0105cz pe\u0142en ekran", + "OptionEnableFullscreen": "Aktywuj tryb pe\u0142nego ekranu", "ButtonServer": "Serwer", "HeaderLibrary": "Biblioteka", "HeaderMedia": "Media", @@ -1756,17 +1758,17 @@ "ButtonShare": "Udost\u0119pnij", "HeaderConfirm": "Potwierd\u017a", "MessageConfirmDeleteTunerDevice": "Czy na pewno chcesz usun\u0105\u0107 to urz\u0105dzenie?", - "MessageConfirmDeleteGuideProvider": "Czy na pewno chcesz usun\u0105\u0107 tego dostawc\u0119 programu telewizyjnego?", - "HeaderDeleteProvider": "Usu\u0144 operatora", - "ErrorAddingTunerDevice": "Wyst\u0105pi\u0142 b\u0142\u0105d podczas dodawania dekodera telewizyjnego. Upewnij si\u0119, \u017ce masz do niego dost\u0119p i spr\u00f3buj ponownie.", - "ErrorSavingTvProvider": "Wyst\u0105pi\u0142 b\u0142\u0105d podczas dodawania dostawc\u0119 telewizji. Upewnij si\u0119, \u017ce masz do niego dost\u0119p i spr\u00f3buj ponownie.", + "MessageConfirmDeleteGuideProvider": "Czy na pewno chcesz usun\u0105\u0107 tego dostawc\u0119 przewodnika telewizyjnego?", + "HeaderDeleteProvider": "Usu\u0144 dostawc\u0119", + "ErrorAddingTunerDevice": "Wyst\u0105pi\u0142 b\u0142\u0105d podczas dodawania tuner telewizyjnego. Upewnij si\u0119, \u017ce masz do niego dost\u0119p i spr\u00f3buj ponownie.", + "ErrorSavingTvProvider": "Wyst\u0105pi\u0142 b\u0142\u0105d podczas dodawania dostawcy telewizji. Upewnij si\u0119, \u017ce masz do niego dost\u0119p i spr\u00f3buj ponownie.", "ErrorGettingTvLineups": "Wyst\u0105pi\u0142 b\u0142\u0105d podczas pobierania programu telewizyjnego. Upewnij si\u0119, \u017ce informacje s\u0105 poprawne i spr\u00f3buj ponownie.", "MessageCreateAccountAt": "Stw\u00f3rz konto na {0}", "ErrorPleaseSelectLineup": "Wybierz program i spr\u00f3buj ponownie, je\u015bli \u017cadne programy nie s\u0105 dost\u0119pne, sprawd\u017a czy tw\u00f3j login, has\u0142o i kod pocztowy jest poprawny.", "HeaderTryEmbyPremiere": "Wypr\u00f3buj Emby Premiere", "OptionEnableDisplayMirroring": "W\u0142\u0105cz wy\u015bwietlanie lustrzane", "ErrorValidatingSupporterInfo": "Wyst\u0105pi\u0142 b\u0142\u0105d podczas sprawdzania twoich informacji Emby Premiere. Spr\u00f3buj ponownie p\u00f3\u017aniej.", - "LabelLocalSyncStatusValue": "Status: {0}", + "LabelLocalSyncStatusValue": "Stan: {0}", "MessageSyncStarted": "Synchronizacja rozpocz\u0119ta", "OptionBackdropSlideshow": "Pokaz zrzut\u00f3w", "HeaderTopPlugins": "Najlepsze pluginy", @@ -1789,10 +1791,10 @@ "ButtonManageFolders": "Zarz\u0105dzaj folderami", "ErrorAddingListingsToSchedulesDirect": "Wyst\u0105pi\u0142 b\u0142\u0105d podczas dodawanie sk\u0142adu do twojego konta Schedules Direct. Schedules Direct pozwala na limitowana ilo\u015b\u0107 sk\u0142ad\u00f3w na konto. Mo\u017ce by\u0107 wymagane zalogowanie si\u0119 na stron\u0119 Schedules Direct i usuni\u0119cie innych sk\u0142ad\u00f3w aby kontunuowa\u0107.", "PleaseAddAtLeastOneFolder": "Prosz\u0119 dodaj przynajmniej jeden folder do tej listy poprzez klikni\u0119cie guzika Dodaj", - "ErrorAddingMediaPathToVirtualFolder": "Wyst\u0105pi\u0142 b\u0142\u0105d podczas dodawania \u015bcie\u017cki z mediami. Prosz\u0119 upewnij si\u0119 \u017ce podana \u015bcie\u017cka jest prawid\u0142owa oraz czy Serwer Emby posiada dost\u0119p do lokalizacji.", - "ErrorRemovingEmbyConnectAccount": "Wyst\u0105pi\u0142 b\u0142\u0105d podczas usuwania konta Emby Connect. Prosz\u0119 upewnij si\u0119 \u017ce posiadasz aktywne po\u0142\u0105czenie z internetem i spr\u00f3buj ponownie.", - "ErrorAddingEmbyConnectAccount1": "Wyst\u0105pi\u0142 b\u0142\u0105d podczas dodawania konta Emby Connect. Posiadasz konto Emby? Zarejestruj si\u0119 na {0}.", - "ErrorAddingEmbyConnectAccount2": "Upewnij si\u0119, \u017ce konto Emby zosta\u0142o aktywowane post\u0119puj\u0105c zgodnie z instrukcjami zawartymi w wiadomo\u015bci e-mail wysy\u0142anej po utworzeniu konta. Je\u015bli nie otrzyma\u0142e\u015b tej wiadomo\u015bci, prosz\u0119 wy\u015blij e-mail na {0} z adresu e-mail u\u017cywanego w koncie Emby.", + "ErrorAddingMediaPathToVirtualFolder": "Wyst\u0105pi\u0142 b\u0142\u0105d podczas dodawania folderu medi\u00f3w. Upewnij si\u0119, \u017ce folder jest prawid\u0142owy a serwer Emby ma dost\u0119p do tej lokalizacji.", + "ErrorRemovingEmbyConnectAccount": "Podczas pr\u00f3by usuwania konta Emby Connect wyst\u0105pi\u0142 b\u0142\u0105d. Upewnij si\u0119, \u017ce Twoje po\u0142\u0105czenie internetowe dzia\u0142a prawid\u0142owo i spr\u00f3buj ponownie.", + "ErrorAddingEmbyConnectAccount1": "Wyst\u0105pi\u0142 b\u0142\u0105d podczas dodawania konta Emby Connect. Czy utworzy\u0142e\u015b konto Emby? Zarejestruj si\u0119 na {0}.", + "ErrorAddingEmbyConnectAccount2": "Upewnij si\u0119, \u017ce konto Emby zosta\u0142o aktywowane, post\u0119puj\u0105c zgodnie z instrukcjami zawartymi w wiadomo\u015bci pocztowej, wys\u0142anej po utworzeniu konta. Je\u015bli nie otrzyma\u0142e\u015b tej wiadomo\u015bci, wy\u015blij wiadomo\u015b\u0107 na adres {0} z adresu pocztowego u\u017cytego do rejestracji konta Emby.", "ErrorAddingEmbyConnectAccount3": "Konto Emby jest ju\u017c po\u0142\u0105czone z innym u\u017cytkownikiem lokalnym. Konto Emby mo\u017ce by\u0107 po\u0142\u0105czone tylko z jednym u\u017cytkownikiem lokalnym w danym czasie.", "HeaderFavoriteArtists": "Ulubieni arty\u015bci", "HeaderFavoriteSongs": "Ulubione utwory", @@ -1804,13 +1806,13 @@ "CoverArt": "Ok\u0142adka", "ButtonOff": "Wy\u0142\u0105cz", "TitleHardwareAcceleration": "Akceleracja sprz\u0119towa", - "HardwareAccelerationWarning": "W\u0142\u0105czenie akceleracji strz\u0119towej mo\u017ce wywo\u0142a\u0107 niestabilno\u015b\u0107 na niekt\u00f3rych \u015brodowiskach. Upewnij si\u0119 \u017ce tw\u00f3j system operacyjny i sterowniki karty graficznej s\u0105 w pe\u0142ni aktualne. Je\u017celi masz problemy z odtwarzaniem wideo po w\u0142\u0105czeni, musisz zmieni\u0107 ponownie na Automatyczne.", - "HeaderSelectCodecIntrosPath": "Wybierz \u015bcie\u017ck\u0119 do intro kodeka", + "HardwareAccelerationWarning": "Aktywacja akceleracji sprz\u0119towej mo\u017ce powodowa\u0107 niestabilno\u015b\u0107 na niekt\u00f3rych \u015brodowiskach. Upewnij si\u0119, \u017ce system operacyjny i sterowniki karty graficznej s\u0105 aktualne. Je\u017celi masz problemy z odtwarzaniem wideo po aktywacji, przywr\u00f3\u0107 to ustawienie do warto\u015bci Automat.", + "HeaderSelectCodecIntrosPath": "Wybierz folder powitalnych wideo kodek\u00f3w", "ValueExample": "Przyk\u0142ad: {0}", - "OptionEnableAnonymousUsageReporting": "W\u0142\u0105cz anonimowe raporty u\u017cytkowania", + "OptionEnableAnonymousUsageReporting": "Wysy\u0142aj anonimowe raporty u\u017cytkowania", "OptionEnableAnonymousUsageReportingHelp": "Pozw\u00f3l Emby na zbieranie anonimowych danych tj. zainstalowane wtyczki, wersja aplikacji Emby itp. Te informacje s\u0105 wykorzystywane tylko w celach poprawy oprogramowania.", "LabelFileOrUrl": "Plik, lub adres url:", - "OptionEnableForAllTuners": "W\u0142\u0105cz dla wszystkich tuner\u00f3w", + "OptionEnableForAllTuners": "Aktywuj dla wszystkich tuner\u00f3w", "HeaderTuners": "Tunery", "LabelOptionalM3uUrl": "Adres url M3U (opcjonalny)", "LabelOptionalM3uUrlHelp": "Niekt\u00f3re urz\u0105dzenia wspieraj\u0105 list\u0119 kana\u0142\u00f3w M3U.", @@ -1818,10 +1820,10 @@ "DrmChannelsNotImported": "Kana\u0142y z DRM nie zostan\u0105 zaimportowane.", "LabelAllowHWTranscoding": "Zezwalaj na sprz\u0119towe transkodowanie", "AllowHWTranscodingHelp": "Je\u015bli w\u0142\u0105czone, zezwalaj tunerowi na transkodowanie strumieni w locie. To mo\u017ce pom\u00f3c zmniejszy\u0107 pro\u015bby serwera Emby na transkodowanie.", - "OptionRequirePerfectSubtitleMatch": "Pobierz tylko napisy, kt\u00f3re pasuj\u0105 idealnie do moich plik\u00f3w wideo", + "OptionRequirePerfectSubtitleMatch": "Pobieraj tylko napisy, kt\u00f3re pasuj\u0105 idealnie do plik\u00f3w wideo", "ErrorAddingGuestAccount1": "Wyst\u0105pi\u0142 b\u0142\u0105d podczas dodawania konta Emby Connect. Czy tw\u00f3j go\u015b\u0107 posiada konto Emby? Mo\u017ce zarejestrowa\u0107 si\u0119 na {0}.", "ErrorAddingGuestAccount2": "Upewnij si\u0119, \u017ce tw\u00f3j go\u015b\u0107 zako\u0144czy\u0142 aktywacj\u0119 post\u0119puj\u0105c zgodnie z instrukcjami zawartymi w wiadomo\u015bci e-mail wysy\u0142anej po utworzeniu konta. Je\u015bli nie otrzyma\u0142 tej wiadomo\u015bci, prosz\u0119 wy\u015blij e-mail na {0} z zawieraj\u0105cego tw\u00f3j adres e-mail, jak i jego.", - "GuestUserNotFound": "U\u017cytkownik nie znaleziony. Upewnij si\u0119 \u017ce nazwa jest poprawna i spr\u00f3buj ponownie, albo wprowad\u017a jego adres email.", + "GuestUserNotFound": "Brak u\u017cytkownika o podanej nazwie. Upewnij si\u0119, \u017ce nazwa jest poprawna i spr\u00f3buj ponownie albo wprowad\u017a jego adres pocztowy.", "Yesterday": "Wczoraj", "DownloadImagesInAdvanceWarning": "Pobieranie wszystkich obraz\u00f3w z wyprzedzeniem mo\u017ce skutkowa\u0107 d\u0142u\u017cszym czasem skanowania biblioteki", "MetadataSettingChangeHelp": "Zmiana ustawie\u0144 metadanych wp\u0142ynie ns now\u0105 tre\u015b\u0107, kt\u00f3ra b\u0119dzie dodawana w przysz\u0142o\u015bci. Aby od\u015bwie\u017cy\u0107 istniej\u0105c\u0105 zawarto\u015b\u0107, otw\u00f3rz ekran szczeg\u00f3\u0142\u00f3w, a nast\u0119pnie kliknij przycisk Od\u015bwie\u017c lub wykonaj od\u015bwie\u017canie zbiorcze, korzystaj\u0105c z mened\u017cera metadanych.", @@ -1842,78 +1844,78 @@ "XmlTvKidsCategoriesHelp": "Programy z tymi kategoriami, b\u0119d\u0105 wy\u015bwietlane jako dzieci\u0119ce. Oddziel je u\u017cywaj\u0105c '|'.", "LabelMovieCategories": "Kategorie filmowe", "XmlTvMovieCategoriesHelp": "Programy z tymi kategoriami, b\u0119d\u0105 wy\u015bwietlane jako filmy. Oddziel je u\u017cywaj\u0105c '|'.", - "XmlTvPathHelp": "\u015acie\u017cka do pliku xml tv. Emby przeczyta ten plik i okresowo sprawdzi aktualizacj\u0119. Jeste\u015b odpowiedzialny za tworzenie i aktualizowanie pliku.", + "XmlTvPathHelp": "Folder pliku xml tv. Emby b\u0119dzie wczytywa\u0107 ten plik i okresowo sprawdza\u0107 aktualizacje. Jeste\u015b odpowiedzialny za utworzenie i aktualizowanie tego pliku.", "LabelBindToLocalNetworkAddress": "Przypisz do lokalnego adresu sieciowego:", "LabelBindToLocalNetworkAddressHelp": "Opcjonalne. Zast\u0105pi to lokalny adres IP adresem serwera HTTP Je\u015bli pozostanie puste, serwer b\u0119dzie wi\u0105za\u0107 si\u0119 z wszystkimi dost\u0119pnymi adresami. Zmiana tej warto\u015bci wymaga ponownego uruchomienia serwera Emby.", "TitleHostingSettings": "Ustawienia Hosting", "SettingsWarning": "Zmiana tych warto\u015bci mo\u017ce spowodowa\u0107 niestabilno\u015b\u0107 lub awari\u0119 po\u0142\u0105czenia. Je\u015bli wyst\u0105pi\u0105 jakiekolwiek problemy, zalecamy powr\u00f3t do ustawie\u0144 ich na domy\u015blne.", "MapChannels": "Mapuj kana\u0142y", - "LabelffmpegPath": "\u015acie\u017cka do FFmpeg:", + "LabelffmpegPath": "Folder aplikacji FFmpeg:", "LabelffmpegVersion": "Wersja FFmpeg:", - "LabelffmpegPathHelp": "\u015acie\u017cka do FFmpeg, lub folderu zawieraj\u0105cego FFmpeg.", + "LabelffmpegPathHelp": "Okre\u015bla folder aplikacji FFmpeg lub folder zawieraj\u0105cy FFmpeg.", "SetupFFmpeg": "Konfiguracja FFmpeg", "SetupFFmpegHelp": "Emby mo\u017ce wymaga\u0107 biblioteki lub aplikacji do konwersji niekt\u00f3rych rodzaj\u00f3w materia\u0142\u00f3w. Istnieje wiele r\u00f3\u017cnych dost\u0119pnych aplikacji, jednak Emby zosta\u0142 przetestowany do pracy z FFmpeg. Emby nie jest w \u017caden spos\u00f3b zwi\u0105zany z FFmpeg, ich w\u0142asno\u015bciom, kodem, czy te\u017c dystrybucj\u0105.", - "EnterFFmpegLocation": "Wprowad\u017a \u015bcie\u017ck\u0119 do FFmpeg", + "EnterFFmpegLocation": "Wprowad\u017a folder aplikacji FFmpeg", "DownloadFFmpeg": "Pobierz FFmpeg", - "FFmpegSuggestedDownload": "Sugerowane pobieranie: {0}", + "FFmpegSuggestedDownload": "Pobieranie polecanych: {0}", "UnzipFFmpegFile": "Rozpakuj pobrany plik do wybranego folderu.", "MarkFFmpegExec": "Je\u015bli u\u017cywasz systemu Linux lub OSX musisz wskaza\u0107 lokalizacj\u0119 program\u00f3w ffmpeg oraz ffprobe oraz nada\u0107 im prawa wykonywania. Jest to wymagane \u017ceby serwer Emby m\u00f3g\u0142 ich u\u017cy\u0107.", - "OptionUseSystemInstalledVersion": "U\u017cyj wersji systemowej", - "OptionUseMyCustomVersion": "U\u017cyj wersji niestandardowej", - "FFmpegSavePathNotFound": "Nie Jeste\u015bmy w stanie zlokalizowa\u0107 FFmpeg przy u\u017cyciu wprowadzonej \u015bcie\u017cki. FFprobe jest r\u00f3wnie\u017c wymagane i musi znajdowa\u0107 si\u0119 w tym samym folderze. Elementy te s\u0105 zwykle w tej samej paczce. Prosz\u0119 sprawdzi\u0107 \u015bcie\u017ck\u0119 i spr\u00f3buj ponownie.", + "OptionUseSystemInstalledVersion": "U\u017cywaj wersji systemowej", + "OptionUseMyCustomVersion": "U\u017cywaj wersji niestandardowej", + "FFmpegSavePathNotFound": "Nieudana lokalizacja aplikacji FFmpeg przy u\u017cyciu wprowadzonego folderu. Aplikacja FFprobe jest r\u00f3wnie\u017c wymagana i musi znajdowa\u0107 si\u0119 w tym samym folderze. Komponenty te s\u0105 zwykle zawarte w jednym pakiecie. Sprawd\u017a folder i spr\u00f3buj ponownie.", "XmlTvPremiere": "Domy\u015blnie Emby zaimportuje {0} godzin programu. Importowanie nieograniczonej danych wymaga aktywnego subskrypcji Emby Premiere.", - "MoreFromValue": "Wi\u0119cej od {0}", + "MoreFromValue": "Wi\u0119cej w {0}", "OptionSaveMetadataAsHiddenHelp": "Zmiana ta b\u0119dzie mia\u0142a zastosowanie do nowych metadanych zapisanych w przysz\u0142o\u015bci. Istniej\u0105ce pliki metadanych zostan\u0105 zaktualizowane przy nast\u0119pnym zapisie przez serwer Emby.", - "EnablePhotos": "W\u0142\u0105cz zdj\u0119cia", + "EnablePhotos": "Aktywuj zdj\u0119cia", "EnablePhotosHelp": "Zdj\u0119cia zostan\u0105 wykryte i wy\u015bwietlone obok innych plik\u00f3w multimedialnych.", "MakeAvailableOffline": "Dost\u0119pne bez po\u0142\u0105czenia", "RemoveDownload": "Usu\u0144 pobieranie", "SyncToOtherDevices": "Synchronizuj z innymi urz\u0105dzeniami", "ManageOfflineDownloads": "Zarz\u0105dzaj pobranymi materia\u0142ami", - "MessageDownloadScheduled": "Pobierz zaplanowane", + "MessageDownloadScheduled": "Pobieranie zaplanowane", "RememberMe": "Zapami\u0119taj mnie", "HeaderOfflineSync": "Synchronizacja offline", - "LabelMaxAudioFileBitrate": "Maksymalny bitrate plik\u00f3w audio:", - "LabelMaxAudioFileBitrateHelp": "Pliki audio z wy\u017cszym bitrate b\u0119d\u0105 konwertowane przez serwer Emby. Wybierz wy\u017csz\u0105 warto\u015b\u0107 dla lepszej jako\u015bci, lub ni\u017csz\u0105 warto\u015b\u0107 dla zachowania przestrzeni dyskowej.", + "LabelMaxAudioFileBitrate": "Maksymalny przep\u0142ywno\u015b\u0107 plik\u00f3w d\u017awi\u0119kowych:", + "LabelMaxAudioFileBitrateHelp": "Pliki d\u017awi\u0119kowe o wy\u017cszej przep\u0142ywno\u015bci b\u0119d\u0105 konwertowane przez serwer Emby. Wybierz wy\u017csz\u0105 warto\u015b\u0107 dla uzyskania lepszej jako\u015bci, ni\u017csz\u0105 warto\u015b\u0107 dla zachowania przestrzeni dyskowej.", "LabelVaapiDevice": "Urz\u0105dzenie VA API:", "LabelVaapiDeviceHelp": "Jest to maszyna renderuj\u0105ca u\u017cyta w celu przy\u015bpieszenia sprz\u0119towego.", "HowToConnectFromEmbyApps": "Jak pod\u0142\u0105czy\u0107 z aplikacji Emby", - "OptionExtractChapterImage": "W\u0142\u0105cz wydobycie obrazu rozdzia\u0142\u00f3w", + "OptionExtractChapterImage": "Wyodr\u0119bniaj obrazy rozdzia\u0142\u00f3w", "Downloads": "Pobrania", "LabelEnableDebugLogging": "Wl\u0105cz logowanie dubiggingu", - "OptionEnableExternalContentInSuggestions": "W\u0142\u0105cz zewn\u0119trzn\u0105 zawarto\u015b\u0107 w sugestiach", - "OptionEnableExternalContentInSuggestionsHelp": "Zezwalaj, aby zwiastuny i programy TV by\u0142y za\u0142\u0105czane w sugestiach.", + "OptionEnableExternalContentInSuggestions": "Dodawaj zewn\u0119trzn\u0105 zawarto\u015b\u0107 do polecanych", + "OptionEnableExternalContentInSuggestionsHelp": "Zezwalaj, aby zwiastuny i programy telewizyjne by\u0142y dodawane do polecanej zawarto\u015bci.", "LabelH264EncodingPreset": "Zestaw kodowania H264:", - "H264EncodingPresetHelp": "Wybierz warto\u015b\u0107 faster \u017ceby zwi\u0119kszy\u0107 wydajno\u015b\u0107, albo slower \u017ceby zwi\u0119kszy\u0107 jako\u015b\u0107.", + "H264EncodingPresetHelp": "Wybierz warto\u015b\u0107 faster, \u017ceby zwi\u0119kszy\u0107 wydajno\u015b\u0107, albo slower \u017ceby zwi\u0119kszy\u0107 jako\u015b\u0107.", "LabelH264Crf": "CRF kodowania H264:", "H264CrfHelp": "Constant Rate Factor (CRF) to domy\u015blna jako\u015b\u0107 kodowania x264. Mo\u017cesz j\u0105 ustawi\u0107 w zakresie 0-51, gdzie ni\u017csze warto\u015bci zwi\u0119kszaj\u0105 jako\u015b\u0107 (kosztem wi\u0119kszego rozmiaru pliku). Rozs\u0105dne warto\u015bci to zakres 18-28. Domy\u015blnie jest to warto\u015b\u0107 23 - mo\u017cesz jej u\u017cy\u0107 jako warto\u015bci pocz\u0105tkowej.", "Sports": "Sport", "HeaderForKids": "Dla dzieci", "HeaderRecordingGroups": "Grupy nagra\u0144", "LabelConvertRecordingsTo": "Konwertuj nagrania do:", - "HeaderUpcomingOnTV": "Nadchodz\u0105ce w TV", + "HeaderUpcomingOnTV": "Wkr\u00f3tce na antenie", "LabelOptionalNetworkPath": "(Niewymagane) Udost\u0119pniony folder sieciowy:", - "LabelOptionalNetworkPathHelp": "Je\u015bli katalog jest udost\u0119pniony, podanie jego \u015bcie\u017cki sieciowej umo\u017cliwi bezpo\u015brednie odtwarzanie na innych urz\u0105dzeniach.", + "LabelOptionalNetworkPathHelp": "Je\u015bli folder jest udost\u0119pniony w Twojej sieci, podanie jego \u015bcie\u017cki sieciowej, umo\u017cliwi bezpo\u015brednie odtwarzanie na innych urz\u0105dzeniach.", "ButtonPlayExternalPlayer": "Odtwarzaj zewn\u0119trznym odtwarzaczem", "NotScheduledToRecord": "Nie zaplanowano nagrania", - "SynologyUpdateInstructions": "Please login to DSM and go to Package Center to update.", + "SynologyUpdateInstructions": "Zaloguj si\u0119 do DSM i przejd\u017a do Centrum Pakiet\u00f3w w celu aktualizacji.", "LatestFromLibrary": "Ostatnie {0}", "LabelMoviePrefix": "Prefiks filmu:", "LabelMoviePrefixHelp": "Je\u015bli prefiks jest stosowany do tytu\u0142\u00f3w film\u00f3w, wprowad\u017a go tutaj aby Emby obs\u0142ugiwa\u0142 go prawid\u0142owo.", - "HeaderRecordingPostProcessing": "Recording Post Processing", - "LabelPostProcessorArguments": "Post-processor command line arguments:", - "LabelPostProcessorArgumentsHelp": "Use {path} as the path to the recording file.", - "LabelPostProcessor": "Post-processing application:", - "ErrorAddingXmlTvFile": "There was an error accessing the XmlTV file. Please ensure the file exists and try again.", - "OptionAutomaticallyGroupSeries": "Automatycznie po\u0142\u0105cz seriale kt\u00f3re znajduj\u0105 si\u0119 w kilku katalogach.", - "OptionAutomaticallyGroupSeriesHelp": "W\u0142\u0105cza automatyczne \u0142\u0105czenie seriali znajduj\u0105cych si\u0119 w wielu katalogach.", - "ErrorReachingEmbyConnect": "There was an error reaching the Emby Connect server. Please ensure you have an active internet connection and try again.", - "WhenDidYouPurchaseApp": "When did you originally purchase this app?", - "PreferEmbeddedTitlesOverFileNames": "Prefer embedded titles over filenames", - "PreferEmbeddedTitlesOverFileNamesHelp": "This determines the default display title when no internet metadata or local metadata is available.", + "HeaderRecordingPostProcessing": "Przetwarzanie finalne nagra\u0144", + "LabelPostProcessorArguments": "Argumenty linii polece\u0144 aplikacji finalnego przetwarzania", + "LabelPostProcessorArgumentsHelp": "Skorzystaj z {path} w roli folderu pliku nagrania.", + "LabelPostProcessor": "Aplikacja finalnego przetwarzania:", + "ErrorAddingXmlTvFile": "Podczas pr\u00f3by dost\u0119pu do pliku XmlTV wyst\u0105pi\u0142 b\u0142\u0105d. Upewnij si\u0119, \u017ce plik istnieje i spr\u00f3buj ponownie.", + "OptionAutomaticallyGroupSeries": "Scalaj automatycznie seriale znajduj\u0105ce si\u0119 w wielu folderach", + "OptionAutomaticallyGroupSeriesHelp": "Umo\u017cliwia automatyczne scalanie seriali, rozproszonych w wielu folderach biblioteki, w pojedyncze seriale.", + "ErrorReachingEmbyConnect": "Podczas pr\u00f3by po\u0142\u0105czenia z serwerem Emby Connect wyst\u0105pi\u0142 b\u0142\u0105d. Upewnij si\u0119, \u017ce Twoje po\u0142\u0105czenie internetowe dzia\u0142a prawid\u0142owo i spr\u00f3buj ponownie.", + "WhenDidYouPurchaseApp": "Kiedy pierwotnie zakupiono t\u0119 aplikacj\u0119?", + "PreferEmbeddedTitlesOverFileNames": "Preferuj wbudowane tytu\u0142y zamiast nazw plik\u00f3w", + "PreferEmbeddedTitlesOverFileNamesHelp": "Okre\u015bla domy\u015blnie wy\u015bwietlany tytu\u0142, gdy brak metadanych lokalnych i od dostawc\u00f3w informacji.", "HeaderUpcomingEpisodes": "Nadchodz\u0105ce Odcinki", "HeaderFavoriteVideos": "Ulubione Nagrania", - "HeaderLiveTvTunerSetup": "Ustawienie tunera TV", + "HeaderLiveTvTunerSetup": "Konfiguracja tunera telewizyjnego", "HeaderDetectMyDevices": "Wykryj Moje Urz\u0105dzenia", "MessagePleaseWait": "Prosz\u0119 czeka\u0107. To mo\u017ce potrwa\u0107 chwil\u0119.", "DetectingDevices": "Wykrywanie urz\u0105dze\u0144", @@ -1921,18 +1923,18 @@ "Never": "Nigdy", "EveryNDays": "Co {0} dni", "HeaderNewDevices": "Nowe Urz\u0105dzenia", - "HeaderOnNow": "On Now", + "HeaderOnNow": "Teraz", "Downloading": "Pobieranie", - "LabelCertificatePassword": "Certificate password:", - "LabelCertificatePasswordHelp": "If your certificate requires a password, please enter it here.", - "Programs": "Programs", - "News": "News", - "HeaderDownloadSync": "Download & Sync", - "EnableHardwareDecoding": "Enable hardware decoding", - "EnableHardwareEncoding": "Enable hardware encoding", - "Rate": "Rate", - "ButtonScanAllLibraries": "Scan All Libraries", - "ScanLibrary": "Scan library", - "EnableStreamLooping": "Auto-loop live streams", - "EnableStreamLoopingHelp": "Enable this if live streams only contain a few seconds of data and need to be continuously requested." + "LabelCertificatePassword": "Has\u0142o do certyfikatu:", + "LabelCertificatePasswordHelp": "Je\u015bli Tw\u00f3j certyfikat wymaga podania has\u0142a, wprowad\u017a go tutaj.", + "Programs": "Programy", + "News": "Wiadomo\u015bci", + "HeaderDownloadSync": "Pobierz i synchronizuj", + "EnableHardwareDecoding": "Aktywuj dekodowanie sprz\u0119towe", + "EnableHardwareEncoding": "Aktywuj kodowanie sprz\u0119towe", + "Rate": "Oce\u0144", + "ButtonScanAllLibraries": "Skanuj biblioteki", + "ScanLibrary": "Skanuj bibliotek\u0119", + "EnableStreamLooping": "Zap\u0119tlaj \u017c\u0105dania transmisji", + "EnableStreamLoopingHelp": "Aktywuj t\u0119 opcj\u0119 w przypadku, gdy transmisje na \u017cywo zawieraj\u0105 tylko kilka sekund danych i wymagaj\u0105 ci\u0105g\u0142ego ponawiania \u017c\u0105da\u0144 transmisji." } \ No newline at end of file diff --git a/dashboard-ui/strings/pt-br.json b/dashboard-ui/strings/pt-br.json index 3b8639ec62..fbcf3a53e5 100644 --- a/dashboard-ui/strings/pt-br.json +++ b/dashboard-ui/strings/pt-br.json @@ -1,4 +1,6 @@ { + "SendMessage": "Send message", + "ViewPlaybackInfo": "View playback info", "LabelPrevious": "Anterior", "LabelFinish": "Finalizar", "LabelNext": "Pr\u00f3ximo", diff --git a/dashboard-ui/strings/pt-pt.json b/dashboard-ui/strings/pt-pt.json index 2e3ab3066a..97b5f937ea 100644 --- a/dashboard-ui/strings/pt-pt.json +++ b/dashboard-ui/strings/pt-pt.json @@ -1,4 +1,6 @@ { + "SendMessage": "Send message", + "ViewPlaybackInfo": "View playback info", "LabelPrevious": "Anterior", "LabelFinish": "Terminar", "LabelNext": "Seguinte", diff --git a/dashboard-ui/strings/ro.json b/dashboard-ui/strings/ro.json index f8d6deb4ef..724b570472 100644 --- a/dashboard-ui/strings/ro.json +++ b/dashboard-ui/strings/ro.json @@ -1,4 +1,6 @@ { + "SendMessage": "Send message", + "ViewPlaybackInfo": "View playback info", "LabelPrevious": "Anteriorul", "LabelFinish": "Termina", "LabelNext": "Urmatorul", diff --git a/dashboard-ui/strings/ru.json b/dashboard-ui/strings/ru.json index 650bd6c59e..dffc43d8c2 100644 --- a/dashboard-ui/strings/ru.json +++ b/dashboard-ui/strings/ru.json @@ -1,4 +1,6 @@ { + "SendMessage": "Send message", + "ViewPlaybackInfo": "View playback info", "LabelPrevious": "\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435", "LabelFinish": "\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c", "LabelNext": "\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435", diff --git a/dashboard-ui/strings/sk.json b/dashboard-ui/strings/sk.json index 42bbe55ae4..4f214707b7 100644 --- a/dashboard-ui/strings/sk.json +++ b/dashboard-ui/strings/sk.json @@ -1,4 +1,6 @@ { + "SendMessage": "Send message", + "ViewPlaybackInfo": "View playback info", "LabelPrevious": "Previous", "LabelFinish": "Finish", "LabelNext": "Next", diff --git a/dashboard-ui/strings/sl-si.json b/dashboard-ui/strings/sl-si.json index 8c542d7aec..131c097912 100644 --- a/dashboard-ui/strings/sl-si.json +++ b/dashboard-ui/strings/sl-si.json @@ -1,4 +1,6 @@ { + "SendMessage": "Send message", + "ViewPlaybackInfo": "View playback info", "LabelPrevious": "Nazaj", "LabelFinish": "Konec", "LabelNext": "Naprej", diff --git a/dashboard-ui/strings/sv.json b/dashboard-ui/strings/sv.json index ed1539fe9e..15c19dd0e3 100644 --- a/dashboard-ui/strings/sv.json +++ b/dashboard-ui/strings/sv.json @@ -1,4 +1,6 @@ { + "SendMessage": "Send message", + "ViewPlaybackInfo": "View playback info", "LabelPrevious": "F\u00f6reg\u00e5ende", "LabelFinish": "Klart", "LabelNext": "N\u00e4sta", diff --git a/dashboard-ui/strings/tr.json b/dashboard-ui/strings/tr.json index f157a6fdce..fd131a9633 100644 --- a/dashboard-ui/strings/tr.json +++ b/dashboard-ui/strings/tr.json @@ -1,4 +1,6 @@ { + "SendMessage": "Send message", + "ViewPlaybackInfo": "View playback info", "LabelPrevious": "\u00d6nceki", "LabelFinish": "Bitir", "LabelNext": "Sonraki", diff --git a/dashboard-ui/strings/uk.json b/dashboard-ui/strings/uk.json index 6984ea2d25..84f2754693 100644 --- a/dashboard-ui/strings/uk.json +++ b/dashboard-ui/strings/uk.json @@ -1,4 +1,6 @@ { + "SendMessage": "Send message", + "ViewPlaybackInfo": "View playback info", "LabelPrevious": "\u041d\u0430\u0437\u0430\u0434", "LabelFinish": "Finish", "LabelNext": "\u0412\u043f\u0435\u0440\u0435\u0434", diff --git a/dashboard-ui/strings/vi.json b/dashboard-ui/strings/vi.json index 4050d53e7d..9c51ac16f1 100644 --- a/dashboard-ui/strings/vi.json +++ b/dashboard-ui/strings/vi.json @@ -1,4 +1,6 @@ { + "SendMessage": "Send message", + "ViewPlaybackInfo": "View playback info", "LabelPrevious": "Tr\u01b0\u1edbc", "LabelFinish": "K\u1ebft th\u00fac", "LabelNext": "Ti\u1ebfp theo", diff --git a/dashboard-ui/strings/zh-cn.json b/dashboard-ui/strings/zh-cn.json index 98a39e37af..803c83ea1d 100644 --- a/dashboard-ui/strings/zh-cn.json +++ b/dashboard-ui/strings/zh-cn.json @@ -1,4 +1,6 @@ { + "SendMessage": "Send message", + "ViewPlaybackInfo": "View playback info", "LabelPrevious": "\u4e0a\u4e00\u4e2a", "LabelFinish": "\u5b8c\u6210", "LabelNext": "\u4e0b\u4e00\u4e2a", diff --git a/dashboard-ui/strings/zh-hk.json b/dashboard-ui/strings/zh-hk.json index b8ef37dc23..dc1cd0a514 100644 --- a/dashboard-ui/strings/zh-hk.json +++ b/dashboard-ui/strings/zh-hk.json @@ -1,4 +1,6 @@ { + "SendMessage": "Send message", + "ViewPlaybackInfo": "View playback info", "LabelPrevious": "\u524d\u4e00\u500b", "LabelFinish": "\u5b8c\u6210", "LabelNext": "\u4e0b\u4e00\u500b", diff --git a/dashboard-ui/strings/zh-tw.json b/dashboard-ui/strings/zh-tw.json index 8993338d87..6aed51a473 100644 --- a/dashboard-ui/strings/zh-tw.json +++ b/dashboard-ui/strings/zh-tw.json @@ -1,4 +1,6 @@ { + "SendMessage": "Send message", + "ViewPlaybackInfo": "View playback info", "LabelPrevious": "\u4e0a\u4e00\u500b", "LabelFinish": "\u5b8c\u6210", "LabelNext": "\u4e0b\u4e00\u500b",