1 line
11 KiB
JavaScript
1 line
11 KiB
JavaScript
define(["exports","./../emby-apiclient/connectionmanager.js","./../emby-elements/emby-button/emby-button.js","./../emby-elements/emby-input/emby-input.js","./../emby-elements/emby-scroller/emby-scroller.js","./../emby-elements/emby-itemscontainer/emby-itemscontainer.js","./../loading/loading.js","./../dialoghelper/dialoghelper.js","./../layoutmanager.js","./../dom.js","./../common/globalize.js","./../common/usersettings/usersettings.js","./../focusmanager.js","./../common/playback/playbackmanager.js","./../listview/listview.js","./../dialog/dialog.js","./../common/textencoding.js"],function(_exports,_connectionmanager,_embyButton,_embyInput,_embyScroller,_embyItemscontainer,_loading,_dialoghelper,_layoutmanager,_dom,_globalize,_usersettings,_focusmanager,_playbackmanager,_listview,_dialog,_textencoding){function showToast(options){Emby.importModule("./modules/toast/toast.js").then(function(toast){return toast(options)})}function AddToList(){}function onItemAction(e){e=e.detail.item;"Playlist"!==e.Type&&"BoxSet"!==e.Type||("new"===e.Id?function(){this.result="new",this.closeDialog()}.call(this):this.addToList(e))}function initAlphaNumericShortcuts(instance){require(["alphaNumericShortcuts"],function(AlphaNumericShortcuts){instance.alphaNumericShortcuts=new AlphaNumericShortcuts({itemsContainer:instance.itemsContainer}),instance.alphaNumericShortcuts.onAlphaNumericValueEntered=function(value){!function(instance,value,focus){value&&"#"!==value?instance.getItems({Limit:0}).then(function(totalResult){instance.getItems({Limit:0,NameStartsWithOrGreater:value}).then(function(result){instance.itemsContainer.scrollToIndex(Math.max(totalResult.TotalRecordCount-result.TotalRecordCount,0),{},focus)})}):instance.itemsContainer.scrollToIndex(0,{},focus)}(this,(this.scroller,this.view,value),!0)}.bind(instance)})}function onRecentItemsContainerUpgraded(){this.recentItemsContainer.resume({refresh:!0})}function onAllItemsContainerUpgraded(){this.itemsContainer.resume({refresh:!0}).then(function(){var dlg=this.dlg;_focusmanager.default.autoFocus(dlg,{skipIfNotEnabled:!0})}.bind(this))}function mapItem(i){return i.Id}function notifyAddedToList(listName,listType,numItems){listName=_textencoding.default.htmlEncode(listName);numItems=1===numItems?_globalize.default.translate("OneItemAddedTo",listName):_globalize.default.translate("ItemsAddedTo",numItems,listName);showToast({text:"Playlist"===listType?_globalize.default.translate("HeaderAddedToPlaylist"):_globalize.default.translate("HeaderAddedToCollection"),secondaryText:numItems,icon:""})}function onAddedToList(type,id){"Playlist"===type?_usersettings.default.set("playlisteditor-lastplaylistid",id):"Collection"===type&&_usersettings.default.set("collectioneditor-lastcollectionid",id)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,require(["material-icons","formDialogStyle"]),AddToList.prototype.getRecentItems=function(query){var lastListId,options=this.options,type=options.type;return"Playlist"===type?lastListId=_usersettings.default.get("playlisteditor-lastplaylistid"):"Collection"===type&&(lastListId=_usersettings.default.get("collectioneditor-lastcollectionid")),lastListId?(type=_connectionmanager.default.getApiClient(options.items[0])).getItem(type.getCurrentUserId(),lastListId).then(function(item){return Promise.resolve({Items:[item],TotalRecordCount:1})},function(){return Promise.resolve({Items:[],TotalRecordCount:0})}):Promise.resolve({Items:[],TotalRecordCount:0})},AddToList.prototype.getItems=function(query){var options=this.options,apiClient=_connectionmanager.default.getApiClient(options.items[0]),buttonText="Collection"===options.type?_globalize.default.translate("HeaderNewCollection"):_globalize.default.translate("HeaderNewPlaylist");return(query=Object.assign({Recursive:!0,IncludeItemTypes:"Collection"===options.type?"Boxset":options.type,SortBy:"SortName",Fields:"PrimaryImageAspectRatio",EnableUserData:!1},query)).StartIndex&&query.StartIndex--,apiClient.getItems(apiClient.getCurrentUserId(),query).then(function(result){return!query.StartIndex&&query.Limit&&result.Items.unshift({Name:buttonText,Id:"new",Type:"Playlist",ServerId:apiClient.serverId(),IsFolder:!0,Icon:"add",Prefix:"0",iconClass:"accentText"}),!1===query.EnableTotalRecordCount||query.NameStartsWithOrGreater&&isNaN(query.NameStartsWithOrGreater[0])||result.TotalRecordCount++,result})},AddToList.prototype.getCardOptions=function(items){return{enableDefaultIcon:!0,action:"custom",fields:["Name"],draggable:!1,multiSelect:!1,contextMenu:!1,hoverPlayButton:!1,imageSize:"Collection"===this.options.type||_layoutmanager.default.tv?"smaller":"small",enableUserDataButtons:!1,mediaInfo:!1}},AddToList.prototype.getListOptions=function(items){return{renderer:_listview.default,options:this.getCardOptions(items),virtualScrollLayout:"vertical-list"}},AddToList.prototype.show=function(options){var dialogOptions={removeOnClose:!0,scrollY:!1,autoFocus:!1},dialogOptions=(_layoutmanager.default.tv?dialogOptions.size="fullscreen":dialogOptions.size="small",_dialoghelper.default.createDialog(dialogOptions)),html=(dialogOptions.classList.add("formDialog"),""),html=(html=(html=(html=(html=html+'<div class="formDialogHeader formDialogHeader-clear">'+'<button is="paper-icon-button-light" class="btnCancel hide-mouse-idle-tv" tabindex="-1"><i class="md-icon autortl"></i></button>')+'<h2 class="formDialogHeaderTitle">'+("Collection"===options.type?_globalize.default.translate("HeaderAddToCollection"):_globalize.default.translate("HeaderAddToPlaylist")))+"</h2>"+"</div>")+function(options){var html="",scrollerStyle="width:100%;",scrollerStyle=(_layoutmanager.default.tv&&(scrollerStyle+="max-width:70ch;"),html=(html=(html=(html=(html=html+'<div class="formDialogContent flex flex-direction-column align-items-center" style="overflow:hidden;">'+('<div is="emby-scroller" data-horizontal="false" data-forcescrollbar="true" data-focusscroll="true" class="flex flex-grow virtualScrollerScrollContainer" style="'+scrollerStyle+'">'))+'<div class="scrollSlider dialog-content-centered padded-left padded-right padded-top flex-grow">'+'<div class="recentSection verticalSection verticalSection-extrabottompadding hide">')+('<h3 style="margin-bottom:.25em;">'+_globalize.default.translate("Recent")+"</h3>"))+'<div is="emby-itemscontainer" data-virtualscrolllayout="vertical-grid" class="itemsContainer recentItemsContainer itemsContainer-defaultCardSize vertical-wrap">'+"</div>")+"</div>"+'<h3 style="margin-bottom:.25em;">',"Collection"===options.type?_globalize.default.translate("AllCollections"):_globalize.default.translate("AllPlaylists"));return html=(html=(html=(html+=scrollerStyle)+"</h3>"+'<div is="emby-itemscontainer" data-virtualscrolllayout="vertical-grid" class="itemsContainer allItemsContainer itemsContainer-defaultCardSize vertical-wrap padded-bottom-page">')+"</div>"+"</div>")+"</div>"+"</div>"}(options),dialogOptions.innerHTML=html,this.dlg=dialogOptions,this.options=options,dialogOptions.querySelector(".btnCancel").addEventListener("click",function(){this.result=null,this.closeDialog()}.bind(this)),dialogOptions.querySelector(".btnQueue")),options=(html&&html.addEventListener("click",function(){this.result="queue",this.closeDialog()}.bind(this)),dialogOptions.querySelector(".allItemsContainer")),html=(options.addEventListener("action-null",onItemAction.bind(this)),options.fetchData=this.getItems.bind(this),options.getListOptions=this.getListOptions.bind(this),this.itemsContainer=options,dialogOptions.querySelector(".recentItemsContainer")),options=(html.addEventListener("action-null",onItemAction.bind(this)),html.fetchData=this.getRecentItems.bind(this),html.getListOptions=this.getListOptions.bind(this),html.parentContainer=html.closest(".verticalSection"),this.recentItemsContainer=html,dialogOptions.addEventListener("opened",function(){var recentItemsContainer=this.recentItemsContainer;recentItemsContainer.resume?onRecentItemsContainerUpgraded.call(this):_dom.default.addEventListener(recentItemsContainer,"upgraded",onRecentItemsContainerUpgraded.bind(this),{once:!0}),(recentItemsContainer=this.itemsContainer).resume?onAllItemsContainerUpgraded.call(this):_dom.default.addEventListener(recentItemsContainer,"upgraded",onAllItemsContainerUpgraded.bind(this),{once:!0}),initAlphaNumericShortcuts(this)}.bind(this)),function(){var result=this.result,options=this.options;return result?"new"===result?this.newList():("queue"===result&&(_playbackmanager.default.queue({serverId:_connectionmanager.default.getApiClient(options.items[0]).serverId(),ids:this.getItemIds()}),showToast({text:_globalize.default.translate("HeaderAddedToPlayQueue"),icon:""})),this.cleanup(),Promise.resolve()):(this.cleanup(),Promise.reject())}.bind(this));return _dialoghelper.default.open(dialogOptions).then(options,options)},AddToList.prototype.getItemIds=function(){return this.options.items.map(mapItem)},AddToList.prototype.addToList=function(list){var apiClient=_connectionmanager.default.getApiClient(list.ServerId),itemIds=this.getItemIds(),instance=this,userId=apiClient.getCurrentUserId();return function(apiClient,userId,type,id,addIds){return"Playlist"!==type?Promise.resolve():apiClient.getAddToPlaylistInfo(userId,id,addIds).then(function(result){return result.ContainsDuplicates?((result={text:1<result.ItemCount?_globalize.default.translate("ItemsAlreadyInPlaylist"):_globalize.default.translate("ItemAlreadyInPlaylist"),buttons:[]}).buttons.push({name:_globalize.default.translate("HeaderAddAgain"),id:"add",type:"submit"}),result.buttons.push({name:_globalize.default.translate("Skip"),id:"skip"}),result.buttons.push({name:_globalize.default.translate("Cancel"),id:"cancel",type:"cancel"}),(0,_dialog.default)(result).then(function(result){return"add"===result||"skip"===result?Promise.resolve(result):Promise.reject(result)})):Promise.resolve()})}(apiClient,userId,list.Type,list.Id,itemIds).then(function(result){return _loading.default.show(),apiClient.addToList(userId,list.Type,list.Id,itemIds,"skip"===result).then(function(result){_loading.default.hide(),instance.result="1",instance.closeDialog();var type="BoxSet"===list.Type?"Collection":"Playlist";onAddedToList(type,list.Id),result.ItemAddedCount&¬ifyAddedToList(list.Name,type,result.ItemAddedCount)})})},AddToList.prototype.newList=function(){var options,title="Collection"===this.options.type?_globalize.default.translate("HeaderNewCollection"):_globalize.default.translate("HeaderNewPlaylist"),dlgClosedFn=function(result){return result?this.createList(result):(this.cleanup(),Promise.reject())}.bind(this);return options={title:title,label:_globalize.default.translate("LabelName"),confirmText:_globalize.default.translate("Create")},Emby.importModule("./modules/prompt/prompt.js").then(function(prompt){return prompt(options)}).then(dlgClosedFn,dlgClosedFn)},AddToList.prototype.createList=function(name){_loading.default.show();var options=this.options,apiClient=_connectionmanager.default.getApiClient(options.items[0]);return this.listName=name,apiClient.createList(apiClient.getCurrentUserId(),options.type,name,this.getItemIds()).then(function(result){_loading.default.hide();var newListName=result.Name||this.listName,options=this.options;return onAddedToList(options.type,result.Id),notifyAddedToList(newListName,options.type,result.ItemAddedCount),this.cleanup(),Promise.resolve()}.bind(this))},AddToList.prototype.closeDialog=function(){var dlg=this.dlg;dlg&&_dialoghelper.default.close(dlg)},AddToList.prototype.cleanup=function(){this.listName=null,this.options=null,this.dlg=null,this.itemsContainer=null,this.recentItemsContainer=null},_exports.default=AddToList}); |