dashboard-ui/modules/tabbedview/tabbedview.js
2023-08-31 15:30:17 +02:00

1 line
8.8 KiB
JavaScript

define(["exports","./../backdrop/backdrop.js","./../common/globalize.js","./../layoutmanager.js","./../maintabsmanager.js","./../appheader/appheader.js","./../common/usersettings/usersettings.js","./../emby-apiclient/connectionmanager.js","./../viewmanager/baseview.js","./../emby-elements/emby-tabs/emby-tabs.js","./../approuter.js","./../common/querystring.js"],function(_exports,_backdrop,_globalize,_layoutmanager,_maintabsmanager,_appheader,_usersettings,_connectionmanager,_baseview,_embyTabs,_approuter,_querystring){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;var deviceMemory,platform,cores,enableTabAnimation=!((cores=navigator.hardwareConcurrency||4)<4||(2400<=(screen.width||screen.availWidth||0)||1400<=(screen.height||screen.availHeight||0))&&cores<6||(deviceMemory=navigator.deviceMemory||2)<2||(platform=(navigator.platform||"").toLowerCase(),"android"===globalThis.appMode&&(cores<4||deviceMemory<2||platform.includes("armv7"))));function loadTab(instance,index,previousIndex,previousTabController){instance.getTabController(index).then(function(controller){var autoFocus=null==previousIndex;!autoFocus&&_layoutmanager.default.tv&&previousTabController&&previousTabController.view&&!_appheader.default.hasFocus()&&(autoFocus=!0),controller.onResume({autoFocus:autoFocus,refresh:instance.skipNextControllerResume!==controller&&!controller.refreshed}),(instance.skipNextControllerResume=controller).refreshed=!0,null!=previousIndex&&_layoutmanager.default.tv&&enableTabAnimation&&controller.view&&controller.view.animate&&(index<previousIndex?controller.view.animate([{opacity:"0",transform:"translate3d(-1.5%, 0, 0)",offset:0},{opacity:"1",transform:"none",offset:1}],{duration:300,iterations:1,easing:"ease-out"}):previousIndex<index&&function(elem){elem.animate([{opacity:"0",transform:"translate3d(1.5%, 0, 0)",offset:0},{opacity:"1",transform:"none",offset:1}],{duration:300,iterations:1,easing:"ease-out"})}(controller.view)),instance.currentTabIndex=index,instance.currentTabController=controller})}function TabbedView(view,params){_baseview.default.apply(this,arguments),this.getTabContainersFn=function(){return this.view.querySelectorAll(".tabContent")}.bind(this),this.onTabChangeFn=function(e){var path,tabInfo,params,newIndex=parseInt(e.detail.selectedTabIndex),previousTabController=null==(e=e.detail.previousIndex)?null:this.tabControllers[e];previousTabController&&previousTabController.onPause&&previousTabController.onPause(),null!=previousTabController&&(path=_approuter.default.current().path)&&(tabInfo=this.getLoadedTabs()[newIndex],(params=Object.assign({},this.params)).tab=tabInfo.id,path.includes("?")||(path+="?"),path+=_querystring.default.paramsToString(params),_approuter.default.replaceState(path,{},!1)),previousTabController&&this.onTabChange(previousTabController),loadTab(this,newIndex,e,previousTabController)}.bind(this),this.getLoadedTabsFn=this.getLoadedTabs.bind(this),this.tabControllers=[]}function onItemRefreshed(item){return this.isDestroyed()||(this.item=item,this.setTitle(),this.setTabs()),Promise.resolve()}Object.assign(TabbedView.prototype,_baseview.default.prototype),TabbedView.prototype.onInputCommand=function(e){switch(e.detail.command){case"back":var currentTabController=this.currentTabController;if(_layoutmanager.default.tv&&currentTabController&&currentTabController.hasFocus()&&_maintabsmanager.default.focus())return currentTabController.scrollToBeginning(),e.preventDefault(),void e.stopPropagation();break;case"refresh":currentTabController=this.currentTabController;return currentTabController&&currentTabController.refresh&&currentTabController.refresh({refresh:!0}),void e.preventDefault()}_baseview.default.prototype.onInputCommand.apply(this,arguments)},TabbedView.prototype.onTabChange=function(previousTabController){},TabbedView.prototype.getItem=function(){var apiClient,params=this.params;return params.parentId?(apiClient=_connectionmanager.default.getApiClient(params.serverId)).getItem(apiClient.getCurrentUserId(),params.parentId):Promise.resolve(null)},TabbedView.prototype.getLoadedTabs=function(){var tabs=this._tabs;return tabs||(tabs=this.getTabs(),this._tabs=tabs),tabs},TabbedView.prototype.getDefaultTabUserSettingsValue=function(folderId){return _usersettings.default.get("landing-"+folderId)},TabbedView.prototype.getDefaultTabIndex=function(folderId){var folderId=(folderId?this.getDefaultTabUserSettingsValue(folderId):null)||this.getDefaultTabId(),tabs=this.getLoadedTabs(),folderId=this.getTabIndex(folderId,tabs);if(null!=folderId)return folderId;for(var i=0,length=tabs.length;i<length;i++)if(!1!==tabs[i].enabled)return i},TabbedView.prototype.getDefaultTabId=function(){return null},TabbedView.prototype.getTabControllerOptions=function(id){var options={item:this.item};return"albumartists"===id?options.mode="albumartists":"composers"===id?options.mode="composers":"genres"===id&&(options.queryIncludeItemTypes=[]),options},TabbedView.prototype.getTabController=function(index){var tabInfo,instance,controller=this.tabControllers[index];return controller?Promise.resolve(controller):(tabInfo=this.getLoadedTabs()[index],(instance=this).loadTabController(tabInfo.id).then(function(responses){responses=responses;var responses=(responses=Array.isArray(responses)?responses[0]:responses).default||responses,controller=instance.tabControllers[index];return controller||(controller=new responses(instance.view.querySelector(".tabContent[data-index='"+index+"']"),instance.getTabControllerParams(tabInfo.id),instance.getTabControllerOptions(tabInfo.id)),instance.tabControllers[index]=controller,instance.onTabControllerCreated(controller),function(controller){return controller.loadTemplate().then(function(responses){return responses&&responses.length&&(controller.view.innerHTML=_globalize.default.translateDocument(responses[0])),controller.onTemplateLoaded(),controller})}(controller))}))},TabbedView.prototype.onTabControllerCreated=function(controller){},TabbedView.prototype.getTabControllerParams=function(id){return Object.assign({},this.params)},TabbedView.prototype.getTabIndex=function(id,tabs){for(var tab,i=0,length=(tabs=tabs||this.getLoadedTabs()).length;i<length;i++)if(!1!==(tab=tabs[i]).enabled&&tab.id===id)return i;return null},TabbedView.prototype.setTabs=function(options){null==this.currentTabIndex&&((params=this.params).tab&&(this.currentTabIndex=this.getTabIndex(params.tab)),null==this.currentTabIndex&&(this.currentTabIndex=this.getDefaultTabIndex((null==(_this$item=this.item)?void 0:_this$item.Guid)||params.parentId)),this.initialTabIndex=this.currentTabIndex);var params,_this$item=this.currentTabController;_maintabsmanager.default.setTabs(this.view,this.currentTabIndex,this.getLoadedTabsFn,this.getTabContainersFn,this.onTabChangeFn,null==_this$item)},TabbedView.prototype.autoFocus=function(options){var currentTabController=this.currentTabController;return null!=currentTabController&&currentTabController.autoFocus?currentTabController.autoFocus(options):_baseview.default.prototype.autoFocus.apply(this,arguments)},TabbedView.prototype.onBeginResume=function(options){_baseview.default.prototype.onBeginResume.apply(this,arguments),_usersettings.default.enableBackdrops()||_backdrop.default.clear(),this.refreshItemPromise=(instance=this).item?onItemRefreshed.call(instance,instance.item):instance.getItem().then(onItemRefreshed.bind(instance));var instance=this.currentTabController;instance&&instance.onBeginResume&&instance.onBeginResume(options)},TabbedView.prototype.onResume=function(options){_baseview.default.prototype.onResume.apply(this,arguments);var instance=this;(this.refreshItemPromise||Promise.resolve()).then(function(){var currentTabController=instance.currentTabController;instance.skipNextControllerResume===currentTabController&&((options=options||{}).refresh=!1),(instance.skipNextControllerResume=currentTabController)&&currentTabController.onResume&&currentTabController.onResume(options)})},TabbedView.prototype.onPause=function(){this.skipNextControllerResume=null,_baseview.default.prototype.onPause.apply(this,arguments);var currentTabController=this.currentTabController;currentTabController&&currentTabController.onPause&&currentTabController.onPause()},TabbedView.prototype.setTitle=function(){_appheader.default.setTitle(this.getTitle())},TabbedView.prototype.getTitle=function(){return!_layoutmanager.default.tv&&this.item||""},TabbedView.prototype.destroy=function(){_baseview.default.prototype.destroy.apply(this,arguments);var tabControllers=this.tabControllers;if(tabControllers){for(var i=0,length=tabControllers.length;i<length;i++){var tabController=tabControllers[i];tabController&&(tabController.onPause&&tabController.onPause(),tabController.destroy)&&tabController.destroy()}this.tabControllers=null}this.currentTabController=null,this.initialTabIndex=null,this.item=null,this.refreshItemPromise=null,this.skipNextControllerResume=null},_exports.default=TabbedView});