import dom from"./../dom.js";import layoutManager from"./../layoutmanager.js";import backdrop from"./../backdrop/backdrop.js";import itemShortcuts from"./../shortcuts.js";import userSettings from"./../common/usersettings/usersettings.js";import itemManager from"./../common/itemmanager/itemmanager.js";import mediaInfo from"./../mediainfo/mediainfo.js";import cardBuilder from"./../cardbuilder/cardbuilder.js";import skinManager from"./../skinmanager.js";import connectionManager from"./../emby-apiclient/connectionmanager.js";import globalize from"./../common/globalize.js";import focusManager from"./../focusmanager.js";import mainTabsManager from"./../maintabsmanager.js";let supportsAsyncDecodedImages=dom.supportsAsyncDecodedImages(),decodingAttribute=supportsAsyncDecodedImages?' decoding="async"':"";function findScroller(instance){instance.scroller||(instance.scroller=(instance=instance.view).classList.contains("scrollFrameY")?instance:instance.querySelector(".scrollFrameY"))}function BaseTab(view,params,options){this.view=view,this.params=params,this.options=options,findScroller(this),this.requestedItemFields="BasicSyncInfo,CanDelete"}function onFocusPreviewItemFetched(instance,item,itemElement){instance.enableFocusPreview()&&instance.showFocusPreview(item,itemElement),item&&item.ServerId?instance._enableBackdrops&&backdrop.setBackdrop(item):backdrop.clear()}function fetchAndShowFocusPreview(instance,focused){var apiClient,item=instance.getFocusPreviewItem(focused);if(item&&instance.refetchItemForFocusPreview()&&instance.enableFocusPreview())return(apiClient=connectionManager.getApiClient(item)).getItem(apiClient.getCurrentUserId(),item.Id).then(function(item){onFocusPreviewItemFetched(instance,item,focused)});onFocusPreviewItemFetched(instance,item,focused)}function onSelectedInfoTimeout(){var focused;this.paused||((focused=this._focusedElement)?fetchAndShowFocusPreview(this,focused):onFocusPreviewItemFetched(this,null))}function clearSelectedInfoTimer(instance){var selectedItemInfoTimeout=instance.selectedItemInfoTimeout;selectedItemInfoTimeout&&(clearTimeout(selectedItemInfoTimeout),instance.selectedItemInfoTimeout=null)}function startSelectedInfoTimer(instance){clearSelectedInfoTimer(instance),instance.selectedItemInfoTimeout=setTimeout(onSelectedInfoTimeout.bind(instance),700)}function onItemsContainerFocusIn(e){e=e.target;this.onFocusIn(e)}function onItemsContainerFocusOut(e){this.onFocusOut()}let backgroundContainer=document.querySelector(".backgroundContainer"),backdropContainer=document.querySelector(".backdropContainer"),appHeader=document.querySelector(".skinHeader");function getFocusPreviewImageItems(){var item=this._focusPreviewImageItem,items=[];return item&&items.push(item),Promise.resolve({Items:items,TotalRecordCount:items.length})}function getFocusPreviewImageOptions(){return{renderer:cardBuilder,options:{shape:"auto",overlayText:!0,fields:[],action:"none",imageClass:"focusPreviewImageContainer",multiSelect:!1,contextMenu:!1,ratingButton:!1,playedButton:!1,cardClass:"focusPreviewImageCard",cardBoxClass:"focusPreviewImageCardBox",defaultIcon:!1,defaultBackground:!1,typeIndicator:!1,playedIndicator:!1,syncIndicator:!1,timerIndicator:!1,randomDefaultBackground:!1,staticElement:!0,progress:!1,enableUserData:!1,draggable:!1,moreButton:!1,programIndicators:!1,keepImageAnimation:!0,preferLogo:"x"===this.scrollDirection(),paddedImage:!1},virtualScrollLayout:"vertical-grid"}}function getLogoPlacement(item){return"TvChannel"===item.Type?null:("MusicAlbum"!==item.Type&&"Audio"!==item.Type&&"MusicVideo"!==item.Type||item.ImageTags&&item.ImageTags.Logo)&&userSettings.getEnableLogoAsTitle(globalize.getCurrentLocale())?"title":"float"}function fillFocusPreview(instance,elem,item,itemElement){item=item.CurrentProgram||item,backdrop.setBackdrop(item);var focusPreviewTitle=elem.querySelector(".focusPreviewTitle"),focusPreviewSecondaryTitle=elem.querySelector(".focusPreviewSecondaryTitle"),names=[],scrollDirection=instance.scrollDirection(),apiClient=connectionManager.getApiClient(item),itemForTitle="Timer"===item.Type&&item.ProgramInfo||item;let logoImage;if(apiClient&&(logoImage="x"===scrollDirection||"title"!==getLogoPlacement(itemForTitle)?null:apiClient.getLogoImageUrl(itemForTitle,{maxHeight:120},skinManager.getPreferredLogoImageTypes())),item.SeriesName){let name=item.SeriesName;logoImage&&(name=''+name+'',logoImage=null),names.push(name)}if(item.Name&&(item.EpisodeTitle||item.IsSeries)){let name=item.Name;logoImage&&(name=''+name+'',logoImage=null),names.push(name)}if(item.Name){let name=itemManager.getDisplayName(item,{});logoImage&&(name=''+name+'',logoImage=null),names.push(name)}focusPreviewTitle.innerHTML=names[0]||"",1',html=(this.view.insertAdjacentHTML("afterbegin",html),this.view.querySelector(".focusPreviewContainer"));return this.fillFocusPreviewContainer(html),html},BaseTab.prototype.getFocusPreviewElement=function(){var elem=this._focusPreviewElement;return elem||(this._focusPreviewElement=elem=this.createFocusPreviewElement()),elem},BaseTab.prototype.fillFocusPreviewContainer=function(elem){var scrollDirection=this.scrollDirection(),readOnlyContentStyle=this.enablePushDownFocusPreview()?' style="padding:0 .75em;width:40ch;"':"";elem.innerHTML='
<`+'h3 style="margin:0;" class="focusPreviewTitle verticalFieldItem-condensed"> <`+'div class="focusPreviewSecondaryTitle hide verticalFieldItem-condensed">
`;let itemsContainer=elem.querySelector(".itemsContainer");itemsContainer.fetchData=getFocusPreviewImageItems.bind(this),(itemsContainer.parentContainer=itemsContainer).getListOptions=getFocusPreviewImageOptions.bind(this),itemsContainer.waitForCustomElementUpgrade().then(function(){itemsContainer.resume({})})},BaseTab.prototype.autoFocus=function(options){options=Object.assign({skipIfNotEnabled:!0},options);let elem;var view=this.view;return view&&(elem=focusManager.autoFocus(view,options))?elem:(!options.skipIfNotEnabled||focusManager.isAutoFocusEnabled())&&(elem=mainTabsManager.focus())||null},BaseTab.prototype.showFocusPreview=function(item,itemElement){var elem=this.getFocusPreviewElement(item);if(!item||item.IsCategory)fillFocusPreview(this,elem,{}),this.hideFocusPreviewElementUsingDisplay()&&elem.classList.add("hide");else switch(item.Type){case"Channel":case"CollectionFolder":fillWithRandomItem(this,elem,item,itemElement);break;default:fillFocusPreview(this,elem,item,itemElement)}},BaseTab.prototype.hideFocusPreviewElementUsingDisplay=function(){return!0},BaseTab.prototype.refetchItemForFocusPreview=function(){return!1},BaseTab.prototype.getFocusPreviewItem=function(element){return itemShortcuts.getItemFromChildNode(element,!0)},BaseTab.prototype.enableFocusPreviewImage=function(){return"x"===this.scrollDirection()},BaseTab.prototype.onFocusIn=function(elem){this._focusedElement=elem,startSelectedInfoTimer(this)},BaseTab.prototype.onFocusOut=function(){this._focusedElement=null,startSelectedInfoTimer(this)},BaseTab.prototype.fillFocusPreviewIfNeeded=function(){if(this.enableFocusPreview()||this.enableBackdropsOnFocus()){let elem=document.activeElement||document.body;if(this.view.contains(elem)){var itemsContainer=elem.closest(".itemsContainer");if(itemsContainer&&elem.matches(itemsContainer.getItemSelector()))return}if(elem=this.view.querySelector(".card")){let itemsContainer=elem.closest(".itemsContainer");itemsContainer&&fetchAndShowFocusPreview(this,elem)}}},BaseTab.prototype.getRequestedItemFields=function(){let fields=this.requestedItemFields;return this.enableFocusPreview()&&(fields+=",Overview,CommunityRating,CriticRating,OfficialRating,PremiereDate,ProductionYear,Container"),fields},BaseTab.prototype.getRequestedImageTypes=function(){let fields="Primary,Backdrop,Thumb";return this.enableFocusPreview()&&(fields+=",Logo"),fields},BaseTab.prototype.enableBackdropsOnFocus=function(){return!!this.enableFocusPreview()||userSettings.enableBackdrops()},BaseTab.prototype.addFocusBehavior=function(element){this._enableBackdrops=layoutManager.tv&&this.enableBackdropsOnFocus(),(this._enableBackdrops||this.enableFocusPreview())&&(this.boundonItemsContainerFocusIn||(this.boundonItemsContainerFocusIn=onItemsContainerFocusIn.bind(this)),this.boundonItemsContainerFocusOut||(this.boundonItemsContainerFocusOut=onItemsContainerFocusOut.bind(this)),dom.addEventListener(element,"focus",this.boundonItemsContainerFocusIn,{capture:!0,passive:!0}),dom.addEventListener(element,"focusout",this.boundonItemsContainerFocusOut,{passive:!0}))},BaseTab.prototype.hasFocus=function(){var activeElement=document.activeElement,view=this.view;return activeElement&&view&&view.contains(activeElement)},BaseTab.prototype.scrollToBeginning=function(){var scroller=this.scroller;scroller&&scroller.scrollToBeginning()},BaseTab.prototype.loadTemplate=function(){return Promise.resolve()},BaseTab.prototype.onTemplateLoaded=function(){findScroller(this),this.view.classList.add("focuscontainer-x");var focusContainerElem=this.getFocusContainerElement();focusContainerElem&&(focusContainerElem.classList.add("focuscontainer-y","navout-up"),focusContainerElem.getNavOutDestination=getScrollerNavOutDestination)},BaseTab.prototype.getFocusContainerElement=function(){return this.scroller},BaseTab.prototype.getApiClient=function(){var serverId;return this.apiClient||((serverId=this.params.serverId||this.options?.serverId)?connectionManager.getApiClient(serverId):connectionManager.currentApiClient())},BaseTab.prototype.onBeginResume=function(options){this.paused=!1;var scroller=this.scroller;scroller&&scroller.beginResume&&scroller.beginResume(options)},BaseTab.prototype.onResume=function(options){this.paused=!1;var scroller=this.scroller,scroller=(scroller&&scroller.resume&&scroller.resume(options),this.enableFocusPreview());(scroller||this._focusPreviewElement)&&(this.enablePushDownFocusPreview()&&(this.scroller.setHeaderBindingEnabled(!scroller),options=this.scroller.querySelector(".scrollSlider.padded-top-page")||this.scroller.querySelector(".padded-top-page"),scroller?(this.scroller.classList.add("tab-scroller-withfocuspreview"),options&&options.classList.add("tab-scroller-withfocuspreview-padded-top-page"),backgroundContainer.classList.add("backgroundContainer-withfocuspreview"),backdropContainer.classList.add("backdropContainer-withfocuspreview"),"rtl"===document.dir?backdropContainer.classList.add("backdropContainer-withfocuspreview-rtl"):backdropContainer.classList.remove("backdropContainer-withfocuspreview-rtl"),appHeader.classList.add("appHeader-withfocuspreview"),this.scroller.setFocusScroll("center")):(this.scroller.classList.remove("tab-scroller-withfocuspreview"),options&&options.classList.remove("tab-scroller-withfocuspreview-padded-top-page"),backgroundContainer.classList.remove("backgroundContainer-withfocuspreview"),backdropContainer.classList.remove("backdropContainer-withfocuspreview","backdropContainer-withfocuspreview-rtl"),appHeader.classList.remove("appHeader-withfocuspreview"))),!scroller)&&this._focusPreviewElement&&this.showFocusPreview(null)},BaseTab.prototype.onPause=function(){this.paused=!0;var scroller=this.scroller,scroller=(scroller&&scroller.pause&&scroller.pause(),clearSelectedInfoTimer(this),this.enableFocusPreview());(scroller||this._focusPreviewElement)&&(this._focusPreviewElement&&this.showFocusPreview(null),this.enablePushDownFocusPreview())&&(backgroundContainer.classList.remove("backgroundContainer-withfocuspreview"),backdropContainer.classList.remove("backdropContainer-withfocuspreview","backdropContainer-withfocuspreview-rtl"),appHeader.classList.remove("appHeader-withfocuspreview"))},BaseTab.prototype.destroy=function(){this.paused=null,this.scroller=null,this.view=null,this.params=null,this.options=null,this.apiClient=null,this._focusedElement=null,this._enableBackdrops=null,this._focusPreviewElement=null,clearSelectedInfoTimer(this)};export default BaseTab;