|
Server : Apache/2.4.58 (Win64) OpenSSL/3.1.3 PHP/8.2.12 System : Windows NT SERVER-PC 10.0 build 26200 (Windows 11) AMD64 User : ServerPC ( 0) PHP Version : 8.2.12 Disable Function : NONE Directory : C:/Users/ServerPC/AppData/Roaming/Emby-Server/system/dashboard-ui/modules/tabbedview/ |
Upload File : |
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","./../common/appsettings.js","./../loading/loading.js","../focusmanager.js","./../common/textencoding.js"],function(_exports,_backdrop,_globalize,_layoutmanager,_maintabsmanager,_appheader,_usersettings,_connectionmanager,_baseview,_embyTabs,_approuter,_querystring,_appsettings,_loading,_focusmanager,_textencoding){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 onDataFetchError(instance,controller,response,signal){_loading.default.hide(),Emby.importModule("./modules/common/responsehelper.js").then(function(responseHelper){return responseHelper.getErrorInfo(response,{enableDefaultTitle:!1}).then(function(errorInfo){var errorOwner=controller||instance,errorElement=errorOwner._errorElement,html=(errorElement||((errorElement=document.createElement("div")).classList.add("padded-left","padded-left-page","padded-right","padded-top"),errorOwner===instance&&errorElement.classList.add("padded-top-page"),html="",html=(html+='<div class="errorBanner" style="margin:0;padding-top:1.35em;padding-bottom:1.35em;"><div class="infoBannerContent"><h3 class="errorTitle" style="margin-top:0;"></h3><p class="errorMessage" style="margin-bottom: 2em;"></p><button type="button" is="emby-button" class="raised raised-mini btnRetryData" style="margin:0;"><i class="md-icon button-icon button-icon-left"></i><span>')+_globalize.default.translate("Retry"),errorElement.innerHTML=html=(html=html+"</span>"+"</button>")+"</div>"+"</div>",(html=(null==(html=errorOwner.scroller)?void 0:html.getScrollSlider())||errorOwner.view).insertBefore(errorElement,html.firstChild),(errorOwner._errorElement=errorElement).querySelector(".btnRetryData").addEventListener("click",function(){var currentTabController=this.currentTabController,resumeOptions=(_loading.default.show(),{refresh:!0,autoFocus:!0});currentTabController?resumeController(this,currentTabController,resumeOptions,!0):(this._errorElement&&this._errorElement.classList.add("hide"),this.onBeginResume(resumeOptions),this.onResume(resumeOptions))}.bind(instance))),errorInfo.title||errorInfo.html),errorOwner=errorInfo.title?errorInfo.html:null,errorInfo=errorElement.querySelector(".errorTitle"),html=(errorInfo.innerHTML=_textencoding.default.htmlEncode(html||""),html?errorInfo.classList.remove("hide"):errorInfo.classList.add("hide"),errorElement.querySelector(".errorMessage"));return html.innerHTML=errorOwner||"",errorOwner?html.classList.remove("hide"):html.classList.add("hide"),null!=signal&&signal.throwIfAborted(),errorElement.classList.remove("hide"),_focusmanager.default.focus(errorElement.querySelector(".btnRetryData")),Promise.reject(response)})})}function resumeController(instance,controller,options,showError){return controller._errorElement&&!controller._errorElement.classList.contains("hide")&&(controller._errorElement.classList.add("hide"),(options=options||{}).refresh=!0),(controller.onResume(options)||Promise.resolve()).catch(function(errorResponse){var _options$signal;return null!=(_options$signal=options.signal)&&_options$signal.throwIfAborted(),showError?onDataFetchError(instance,controller,errorResponse,options.signal):Promise.reject(errorResponse)})}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),resumeController(instance,controller,{autoFocus:autoFocus,refresh:!controller.refreshed},!0),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.currentViewPath())&&(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 getTemplateHtml(instance,templateToLoad){return require(["text!"+templateToLoad]).then(function(responses){responses=responses[0];return"x"===instance.tabScrollDirection()?function(html){return Emby.importModule("./modules/tabbedview/viewhelper.js").then(function(viewHelper){return viewHelper.convertTemplateToHorizontal(html)})}(responses):responses})}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&¤tTabController&¤tTabController.hasFocus()&&_maintabsmanager.default.focus())return currentTabController.scrollToBeginning(),e.preventDefault(),void e.stopPropagation();break;case"refresh":currentTabController=this.currentTabController;return currentTabController&¤tTabController.refresh&¤tTabController.refresh({refresh:!0}),void e.preventDefault()}_baseview.default.prototype.onInputCommand.apply(this,arguments)},TabbedView.prototype.onTabChange=function(previousTabController){},TabbedView.prototype.fetchItem=function(signal){var apiClient,params=this.params;return params.parentId?(apiClient=_connectionmanager.default.getApiClient(params.serverId)).getItem(apiClient.getCurrentUserId(),params.parentId,{},signal):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.scrollDirection=this.tabScrollDirection(),options},TabbedView.prototype.supportsHorizontalTabScroll=function(){return!1},TabbedView.prototype.tabScrollDirection=function(){return this.supportsHorizontalTabScroll()&&_layoutmanager.default.tv&&"horizontal"===_usersettings.default.tvScrollDirection()?"x":"y"},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 tabContent,controllerFactory=(responses=Array.isArray(responses)?responses[0]:responses).default||responses,controller=instance.tabControllers[index];return controller||(tabContent=instance.view.querySelector(".tabContent[data-index='"+index+"']"),function(instance,tabContent){var templateToLoad;switch(tabContent.getAttribute("data-swapnode")){case"itemstab":templateToLoad="modules/tabbedview/itemstab.template.html";break;case"sectionstab":templateToLoad="modules/tabbedview/sectionstab.template.html"}return templateToLoad?getTemplateHtml(instance,templateToLoad).then(function(html){tabContent.insertAdjacentHTML("afterend",_globalize.default.translateHtml(html));html=tabContent.nextElementSibling;return html.setAttribute("data-index",tabContent.getAttribute("data-index")),html.className+=" "+tabContent.className,tabContent.remove(),Promise.resolve({tabContent:html,contentLoaded:!0})}):Promise.resolve({tabContent:tabContent,contentLoaded:!1})}(instance,tabContent).then(function(tabContentInfo){tabContent=tabContentInfo.tabContent;tabContentInfo=tabContentInfo.contentLoaded;return controller=new controllerFactory(tabContent,instance.getTabControllerParams(tabInfo.id),instance.getTabControllerOptions(tabInfo.id)),instance.tabControllers[index]=controller,instance.onTabControllerCreated(controller),function(controller,templateAlreadyLoaded){return templateAlreadyLoaded?(controller.onTemplateLoaded(),Promise.resolve(controller)):controller.loadTemplate().then(function(responses){return responses&&responses.length&&(controller.view.innerHTML=_globalize.default.translateDocument(responses[0])),controller.onTemplateLoaded(),controller})}(controller,tabContentInfo)}))}))},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&¤tTabController.autoFocus?currentTabController.autoFocus(options):_baseview.default.prototype.autoFocus.apply(this,arguments)},TabbedView.prototype.onBeginResume=function(options){_baseview.default.prototype.onBeginResume.apply(this,arguments),_appsettings.default.enableBackdrops()||_backdrop.default.clear(),this.refreshItemPromise=(instance=this,signal=options.signal,instance.item?Promise.resolve(instance.item):instance.fetchItem(signal));var signal,instance=this.currentTabController;instance&&instance.onBeginResume&&instance.onBeginResume(options)},TabbedView.prototype.onResume=function(options){_baseview.default.prototype.onResume.apply(this,arguments);var instance=this,promise=this.refreshItemPromise;(promise=(promise=promise&&promise.then(function(item){var instance=this.instance;return instance.isDestroyed()||(instance.item=item,null!=(item=this.options.signal)&&item.throwIfAborted(),instance.setTitle(),instance.setTabs()),Promise.resolve()}.bind({instance:this,options:options}),function(err){return this.refreshItemPromise=null,Promise.reject(err)}.bind(this)))||Promise.resolve()).then(function(){var currentTabController=instance.currentTabController;if(currentTabController&¤tTabController.onResume)return resumeController(instance,currentTabController,options,!1)}).catch(function(errorResponse){null!=(_options$signal2=options.signal)&&_options$signal2.throwIfAborted();var _options$signal2=instance.currentTabController;return onDataFetchError(instance,_options$signal2,errorResponse,options.signal)})},TabbedView.prototype.onPause=function(){_baseview.default.prototype.onPause.apply(this,arguments);var currentTabController=this.currentTabController;currentTabController&¤tTabController.onPause&¤tTabController.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._errorElement=null};_exports.default=TabbedView});