5 lines
No EOL
3.3 KiB
JavaScript
5 lines
No EOL
3.3 KiB
JavaScript
import BaseTab from"./basetab.js";import cardBuilder from"./../modules/cardbuilder/cardbuilder.js";import layoutManager from"./../modules/layoutmanager.js";import playbackManager from"./../modules/common/playback/playbackmanager.js";function fetchItems(query){var player=this.currentOptions?.currentPlayer;return player?playbackManager.getPlaylist(query||{},player):Promise.resolve({Items:[],TotalRecordCount:0})}function getListOptions(items){var forceBackdrop=!!layoutManager.tv;return{renderer:cardBuilder,options:{preferThumb:forceBackdrop?null:"auto",inheritThumb:!1,shape:forceBackdrop?"backdrop":"auto",overlayPlayButton:!0,contextMenu:!1,multiSelect:!1,action:"setplaylistindex",playAction:"setplaylistindex",cardClass:"videoOsd-itemstab-card videoOsd-itemstab-card-threeline",fields:["ParentName","Name"],allowBottomPadding:!1,defaultBackground:!0,textLinks:!1,enableFocusScaling:!1},virtualScrollLayout:"horizontal-grid"}}function PlayQueueTab(view){BaseTab.apply(this,arguments)}Object.assign(PlayQueueTab.prototype,BaseTab.prototype);let FocusScrollOffset="-padding-inline-start";function scrollToIndex(instance,index,focus,scrollBehavior){instance.itemsContainer.scrollToIndex(index,{offsetLeft:FocusScrollOffset,behavior:scrollBehavior},focus)}function scrollToCurrent(instance,focus,scrollBehavior){var player=instance.currentOptions?.currentPlayer;scrollToIndex(instance,playbackManager.getCurrentPlaylistIndex(player),focus,scrollBehavior)}PlayQueueTab.prototype.loadTemplate=function(){var view=this.view;return view.innerHTML=`
|
|
<div is="emby-scroller" data-mousewheel="false" data-focusscroll="start" data-focusscrolloffset="`+FocusScrollOffset+`" class="padded-top-focusscale padded-bottom-focusscale">
|
|
<div is="emby-itemscontainer" data-focusabletype="nearest" class="focusable focuscontainer-x scrollSlider itemsContainer videoosd-padded-left videoosd-padded-right" data-refreshinterval="300000" data-virtualscrolllayout="horizontal-grid"></div>
|
|
</div>
|
|
`,this.itemsContainer=view.querySelector(".itemsContainer"),this.itemsContainer.fetchData=fetchItems.bind(this),this.itemsContainer.getListOptions=getListOptions.bind(this),Promise.resolve()},PlayQueueTab.prototype.scrollToCurrentItem=function(focus,scrollBehavior){this.paused||this.itemsContainer.contains(document.activeElement)||scrollToCurrent(this,focus,scrollBehavior)},PlayQueueTab.prototype.onResume=function(options){let instance=this;return BaseTab.prototype.onResume.apply(this,arguments).then(function(){var optionsWithoutRefresh=Object.assign(Object.assign({},options),{refresh:!1});let hasFocus=instance.itemsContainer.contains(document.activeElement);return instance.itemsContainer.resume(optionsWithoutRefresh).then(function(){options.refresh?instance.refreshItem():instance.scrollToCurrentItem(hasFocus,"instant")})})},PlayQueueTab.prototype.refreshItem=function(){BaseTab.prototype.refreshItem.apply(this,arguments);let instance=this,hasFocus=instance.itemsContainer.contains(document.activeElement);return instance.itemsContainer.refreshItems().then(function(){instance.scrollToCurrentItem(hasFocus)})},PlayQueueTab.prototype.onPause=function(){BaseTab.prototype.onPause.apply(this,arguments),this.itemsContainer.pause()},PlayQueueTab.prototype.destroy=function(){BaseTab.prototype.destroy.apply(this,arguments),this.itemsContainer=null};export default PlayQueueTab; |