1 line
No EOL
5.5 KiB
JavaScript
1 line
No EOL
5.5 KiB
JavaScript
import connectionManager from"./../emby-apiclient/connectionmanager.js";import events from"./../emby-apiclient/events.js";import globalize from"./../common/globalize.js";import appRouter from"./../approuter.js";import"./../emby-elements/emby-tabs/emby-tabs.js";import layoutManager from"./../layoutmanager.js";import itemManager from"./../common/itemmanager/itemmanager.js";import{appHost}from"./../common/servicelocator.js";import appFooter from"./../appfooter/appfooter.js";import viewManager from"./../viewmanager/viewmanager.js";import inputManager from"./../common/inputmanager.js";require(["css!modules/dockedtabs/dockedtabs.css"]);let instance,hiddenMode=0,libraryMode=2,currentMode=hiddenMode,headerHomeButton,headerSearchButton,headerMenuButton,userSignedIn=!1,currentServerId,currentTabsList=[];function onLocalUserSignedIn(e,serverId,userId){currentMode=hiddenMode,currentServerId=serverId,userSignedIn=!0}function onLocalUserSignedOut(e){userSignedIn=!1}function updateHomeButton(tabsEnabled){(tabsEnabled||headerHomeButton)&&(headerHomeButton=headerHomeButton||document.querySelector(".headerHomeButton"),tabsEnabled?headerHomeButton.classList.add("hiddenWhenBottomNavVisible"):headerHomeButton.classList.remove("hiddenWhenBottomNavVisible"))}function updateSearchButton(tabsEnabled){(tabsEnabled||headerSearchButton)&&(headerSearchButton=headerSearchButton||document.querySelector(".headerSearchButton"),tabsEnabled?headerSearchButton.classList.add("hiddenWhenBottomNavVisible"):headerSearchButton.classList.remove("hiddenWhenBottomNavVisible"))}function updateMenuButton(tabsEnabled){(tabsEnabled||headerMenuButton)&&(headerMenuButton=headerMenuButton||document.querySelector(".headerMenuButton"))}function setMode(e,mode){var tabs;mode===currentMode?mode!==hiddenMode&&setSelected(e):(tabs=instance)&&((currentMode=mode)===libraryMode&&setLibraryTabs(e,getElement(tabs)),mode===hiddenMode?(tabs.hide(),updateHomeButton(!1),updateSearchButton(!1),updateMenuButton(!1)):(tabs.show(),updateHomeButton(!0),updateSearchButton(!0),updateMenuButton(!0)))}function setLibraryTabs(e,parentElement){let tabs=[];connectionManager.getApiClient(currentServerId).getUserViews().then(function(result){tabs.push({name:globalize.translate("Home"),icon:"",href:appRouter.getRouteUrl("home"),fillIcon:!0}),tabs.push({name:globalize.translate("Search"),icon:"",href:"#",onclick:"search",navMenuId:"search"}),appHost.supports("sync")&&tabs.push({name:globalize.translate("Downloads"),icon:"",href:appRouter.getRouteUrl("downloads")});for(let i=0,length=result.Items.length;i<length&&!(5<=tabs.length);i++)tabs.push({name:result.Items[i].Name,icon:itemManager.getDefaultIcon(result.Items[i]),href:appRouter.getRouteUrl(result.Items[i])});let foundActive=!1;var navMenuId=e.detail.navMenuId,url=e.detail.url?.toLowerCase();if(navMenuId)for(let i=0,length=tabs.length;i<length;i++){var tab=tabs[i];if(navMenuId===tab.navMenuId){tab.active=!0,foundActive=!0;break}if(tab.href&&url.endsWith(tab.href.toLowerCase())){tab.active=!0,foundActive=!0;break}}foundActive||(tabs[0].active=!0),setTabs(tabs,parentElement)})}function setTabs(tabs,parentElement){(currentTabsList=tabs).length?(tabs=tabs.map(function(tab,index){var active=tab.active?" emby-tab-button-active":"";return'<a is="emby-linkbutton" href="'+tab.href+'" tabindex="-1" class="dockedtabs-tab-button secondaryText emby-tab-button'+active+'" data-index="'+index+'" data-navmenuid="'+(tab.navMenuId||"")+'"> <i class="dockedtabs-tab-button-icon md-icon'+(tab.fillIcon?" md-icon-fill":"")+'">'+tab.icon+"</i><div>"+tab.name+"</div></a>"}).join(""),parentElement.innerHTML=tabs):parentElement.innerHTML="",parentElement.onTabsChanged()}function setSelected(e){var navMenuId=e.detail.navMenuId;if(navMenuId){var element=instance.element;if(element){var url=e.detail.url?.toLowerCase();for(let i=0,length=currentTabsList.length;i<length;i++){var tab=currentTabsList[i];if(navMenuId===tab.navMenuId){element.selectedIndex(i,!1);break}if(tab.href&&url.endsWith(tab.href.toLowerCase())){element.selectedIndex(i,!1);break}}}}}function onViewShow(e){var detail=e.detail;"true"!==detail.params?.asDialog&&(layoutManager.tv||!1===detail.dockedTabs||!userSignedIn?setMode(e,hiddenMode):setMode(e,libraryMode))}function render(){return appFooter.add('<div is="emby-tabs" class="dockedtabs-tabs dockedtabs hide focuscontainer-x"></div>'),appFooter.element.querySelector(".dockedtabs")}function onTabsClick(e){var button=e.target.closest(".dockedtabs-tab-button");button&&(button=button.getAttribute("data-navmenuid"))&&"search"===button&&(inputManager.trigger("search",{sourceElement:viewManager.currentView(),originalEvent:e}),e.preventDefault())}function getElement(instance){let element=instance.element;return element||(element=instance.element=render()).addEventListener("click",onTabsClick),element}function DockedTabs(){instance=this,events.on(connectionManager,"localusersignedin",onLocalUserSignedIn),events.on(connectionManager,"localusersignedout",onLocalUserSignedOut),document.addEventListener("viewshow",onViewShow);var apiClient=connectionManager.currentApiClient();apiClient?.isLoggedIn()&&onLocalUserSignedIn({},apiClient.serverId(),apiClient.getCurrentUserId())}DockedTabs.prototype.destroy=function(){document.removeEventListener("viewshow",onViewShow);this.element=null},DockedTabs.prototype.show=function(){getElement(this).classList.remove("hide"),appFooter.setWithContent50w(!0)},DockedTabs.prototype.hide=function(){var element=this.element;element&&(element.classList.add("hide"),element.innerHTML="",appFooter.setWithContent50w(!1))};export default new DockedTabs; |