define(["backdrop","mainTabsManager","layoutManager","emby-tabs"],function(backdrop,mainTabsManager,layoutManager){"use strict";function onViewDestroy(e){var tabControllers=this.tabControllers;tabControllers&&(tabControllers.forEach(function(t){t.destroy&&t.destroy()}),this.tabControllers=null),this.view=null,this.params=null,this.currentTabController=null,this.initialTabIndex=null}function onBeforeTabChange(){}function TabbedView(view,params){function validateTabLoad(index){return self.validateTabLoad?self.validateTabLoad(index):Promise.resolve()}function loadTab(index,previousIndex){validateTabLoad(index).then(function(){self.getTabController(index).then(function(controller){var refresh=!controller.refreshed;controller.onResume({autoFocus:null==previousIndex&&layoutManager.tv,refresh:refresh}),controller.refreshed=!0,currentTabIndex=index,self.currentTabController=controller})})}function getTabContainers(){return view.querySelectorAll(".tabContent")}function onTabChange(e){var newIndex=parseInt(e.detail.selectedTabIndex),previousIndex=e.detail.previousIndex,previousTabController=null==previousIndex?null:self.tabControllers[previousIndex];previousTabController&&previousTabController.onPause&&previousTabController.onPause(),loadTab(newIndex,previousIndex)}this.tabControllers=[],this.view=view,this.params=params;var self=this,currentTabIndex=parseInt(params.tab||this.getDefaultTabIndex(params.parentId));this.initialTabIndex=currentTabIndex,view.addEventListener("viewbeforehide",this.onPause.bind(this)),view.addEventListener("viewbeforeshow",function(e){mainTabsManager.setTabs(view,currentTabIndex,self.getTabs,getTabContainers,onBeforeTabChange,onTabChange,!1)}),view.addEventListener("viewshow",function(e){self.onResume(e.detail)}),view.addEventListener("viewdestroy",onViewDestroy.bind(this))}return TabbedView.prototype.onResume=function(options){this.setTitle(),backdrop.clear();var currentTabController=this.currentTabController;currentTabController?currentTabController&&currentTabController.onResume&&currentTabController.onResume({}):mainTabsManager.selectedTabIndex(this.initialTabIndex)},TabbedView.prototype.onPause=function(){var currentTabController=this.currentTabController;currentTabController&&currentTabController.onPause&&currentTabController.onPause()},TabbedView.prototype.setTitle=function(){Emby.Page.setTitle("")},TabbedView});