Files
Futontime_UI/modules/emby-elements/emby-itemscontainer/emby-itemscontainer.js
2026-02-09 10:48:21 +01:00

1 line
35 KiB
JavaScript

define(["exports","./../../browser.js","./../../dom.js","./../../layoutmanager.js","./../../emby-apiclient/events.js","./../../emby-apiclient/connectionmanager.js","./../../lazyloader/lazyimageloader.js","./../../virtual-scroller/virtual-scroller.js","./../../shortcuts.js","./../../common/inputmanager.js","./../../focusmanager.js","./../../common/itemsrefresher.js","./../../common/itemmanager/itemmanager.js","./../../commandprocessor.js","./../../common/responsehelper.js","./../../customelementupgrade.js","./../../common/playback/playbackmanager.js"],function(_exports,_browser,_dom,_layoutmanager,_events,_connectionmanager,_lazyimageloader,_virtualScroller,_shortcuts,_inputmanager,_focusmanager,_itemsrefresher,_itemmanager,_commandprocessor,_responsehelper,_customelementupgrade,_playbackmanager){function _superPropGet(t,o,e,r){var p=babelHelpers.get(babelHelpers.getPrototypeOf(1&r?t.prototype:t),o,e);return 2&r&&"function"==typeof p?function(t){return p.apply(e,t)}:p}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,require(["css!modules/emby-elements/emby-itemscontainer/emby-itemscontainer.css"]);var CurrentPlayingItemId,AllItemsContainers=[];function setIndicator(itemId){for(var indicators=document.querySelectorAll(".itemelement-nowplaying"),i=0,length=indicators.length;i<length;i++){var item,indicator=indicators[i],itemsContainer=indicator.closest(".itemsContainer");itemId?itemId!==(null==(item=_shortcuts.default.getItemFromChildNode(indicator,!1,itemsContainer))?void 0:item.PlaylistItemId)&&itemId!==(null==item?void 0:item.Id)&&null!=(item=itemsContainer.currentListOptions)&&item.renderer.removeNowPlayingIndicator(indicator):null!=(item=itemsContainer.currentListOptions)&&item.renderer.removeNowPlayingIndicator(indicator)}if(itemId)for(var itemsContainers=AllItemsContainers.slice(0),_i=0,_length=itemsContainers.length;_i<_length;_i++){var currentListOptions,_currentListOptions$o,itemElement,renderer,_itemsContainer=itemsContainers[_i],index=_itemsContainer.indexOfItemId(itemId);-1!==index&&((currentListOptions=_itemsContainer.currentListOptions)&&!1!==(null==(_currentListOptions$o=currentListOptions.options)?void 0:_currentListOptions$o.playQueueIndicator)&&(itemElement=_itemsContainer.getElement(index))&&null!=(renderer=currentListOptions.renderer)&&renderer.addNowPlayingIndicator)&&renderer.addNowPlayingIndicator(itemElement)}}function onPlaybackStart(e,player,state){state=state.NowPlayingItem,state="Audio"===(null==state?void 0:state.MediaType)?state.Id:null;CurrentPlayingItemId=state,setIndicator(state)}_events.default.on(_playbackmanager.default,"playbackstart",onPlaybackStart),_events.default.on(_playbackmanager.default,"statechange",onPlaybackStart),_events.default.on(_playbackmanager.default,"playbackstop",function(){setIndicator(null)}),_events.default.on(_playbackmanager.default,"unpause",function(){setIndicator(CurrentPlayingItemId)}),_events.default.on(_playbackmanager.default,"pause",function(){setIndicator(null)});var dragEventsPolyfillLoaded,MultiSelect,nativeContextMenuEventSupported,morphdom,appFooter,touchTarget,RequiresDragEventsPolyfill=!0,headerElement=document.querySelector(".skinHeader");function onClick(e){var multiSelect=this.multiSelect;multiSelect&&!1===multiSelect.onContainerClick.call(this,e)||_shortcuts.default.onClick.call(this,e)}function onChange(e){_shortcuts.default.onClick.call(this,e)}function onContextMenu(e){!this._touchEventsBound||(detail=e.detail)&&detail.customEvent||(this._touchEventsBound=null,nativeContextMenuEventSupported=!0,_dom.default.removeEventListener(this,"touchstart",onTouchStart,{passive:!0}),_dom.default.removeEventListener(this,"touchend",onTouchEnd,{}),_dom.default.removeEventListener(this,"touchcancel",onTouchEnd,{}),_dom.default.removeEventListener(this,"touchmove",onTouchMove,{passive:!0}));var detail=e.target,itemElement=this.getContextMenuElementFromChildNode(detail);if(itemElement)if(detail.closest(".dragHandle"))e.preventDefault();else if(!this.classList.contains("multi-select-active")&&(tryVibrate(),_inputmanager.default.trigger("menu",{sourceElement:itemElement,originalEvent:e})))return e.preventDefault(),!1}function onInit(){this.hasInit||(this.hasInit=!0,this.classList.add("itemsContainer"),this.refreshMonitor)||(this.refreshMonitor=new _itemsrefresher.default({itemIds:[],itemsContainer:this}))}function getTouches(e){return e.changedTouches||e.targetTouches||e.touches}function clearTouchStartTimeout(elem){elem.touchStartTimeout&&(clearTimeout(elem.touchStartTimeout),elem.touchStartTimeout=null,elem.touchStartTimeoutTime=null)}function clearTouchTarget(container){var target=touchTarget;target&&(touchTarget=null,target.classList.remove("itemElement-activetouch"),_dom.default.removeEventListener(container,"touchmove",onTouchMove,{passive:!0}))}var ContextMenuDelay=650;function onTouchStart(e){var e=getTouches(e)[0];clearTouchTarget(this),this.touchStartX=0,this.touchStartY=0,e&&(this.touchStartX=e.clientX,this.touchStartY=e.clientY,e=e.target)&&(e=e.closest(this.getItemSelector()))&&(clearTouchStartTimeout(this),_dom.default.addEventListener(this,"touchmove",onTouchMove,{passive:!0}),(touchTarget=e).classList.add("itemElement-activetouch"),this.touchStartTimeout=setTimeout(onTouchStartTimerFired,ContextMenuDelay),this.touchStartTimeoutTime=Date.now())}function onTouchMove(e){var touchEndX;touchTarget&&(e=(e=getTouches(e)[0])?(touchEndX=e.clientX||0,e=e.clientY||0,touchEndX=Math.abs(touchEndX-(this.touchStartX||0)),Math.abs(e-(this.touchStartY||0))):touchEndX=100,5<=touchEndX||5<=e)&&(clearTouchStartTimeout(this),clearTouchTarget(this))}function onTouchEnd(e){var time;getTouches(e)[0]&&(time=this.touchStartTimeoutTime)&&(time=Date.now()-time,ContextMenuDelay-50<=time)&&e.preventDefault(),clearTouchStartTimeout(this),clearTouchTarget(this)}function onTouchStartTimerFired(){var itemElement=touchTarget;itemElement&&(_focusmanager.default.focus(itemElement,{preventScroll:!0}),itemElement.dispatchEvent(new CustomEvent("contextmenu",{bubbles:!0,cancelable:!0,detail:{customEvent:!0}})))}function onDroppedOntoFullTarget(itemsContainer,draggedElement,dropTarget,items){var dropTarget=_shortcuts.default.getItemFromChildNode(dropTarget,null,itemsContainer),itemsContainer=dropTarget.Type,droppedItemId=dropTarget.Id,droppedItemServerId=dropTarget.ServerId;droppedItemId&&droppedItemServerId&&("Playlist"===itemsContainer||"BoxSet"===itemsContainer)&&(_connectionmanager.default.getApiClient(dropTarget),droppedItemId=dropTarget,droppedItemServerId=items.map(function(i){return i.Id}),_itemmanager.default.addToListHelper(droppedItemId,droppedItemServerId).catch(_responsehelper.default.handleErrorResponse))}function onReorderedTo(itemsContainer,items,draggedElement,currentIndex,dropTarget,directionUp){var newIndex;draggedElement.classList.contains("virtualScrollItem")?(newIndex=itemsContainer.indexOfElement(dropTarget),directionUp||newIndex++,currentIndex<newIndex&&newIndex--):(itemsContainer.insertBefore(draggedElement,directionUp?dropTarget:dropTarget.nextSibling),newIndex=Array.prototype.indexOf.call(itemsContainer.children,draggedElement)),newIndex!==currentIndex&&draggedElement.dispatchEvent(new CustomEvent("itemdrop",{detail:{newIndex:newIndex,items:items},bubbles:!0,cancelable:!0}))&&_commandprocessor.default.executeCommand("moveinorder",items,{newIndex:newIndex,itemsContainer:itemsContainer})}function abortRequests(instance){var currentAbortController=instance.currentAbortController;currentAbortController&&(currentAbortController.abort(),instance.currentAbortController=null),null!=(currentAbortController=instance.virtualScroller)&&currentAbortController.abortRequests()}function getVirtualChunkSize(elem,listOptions){var size=elem.virtualChunkSize;return size||((size=(listOptions=!listOptions&&elem.getListOptions?elem.getListOptions([]):listOptions)?listOptions.virtualScrollLayout:elem.getAttribute("data-virtualscrolllayout"))?(elem=_dom.default.getWindowSize(),size.includes("horizontal")?2200<=elem.innerWidth?16:12:(null==(size=listOptions?listOptions.renderer:null)?void 0:size.virtualChunkSize)||30):null)}function onDataFetched(result){var scrollPosition,hasActiveElement,focusIndex,focusId,listOptionsSet,isNewVirtualScroller,items=result.Items||result,parentContainer=(null!=result.TotalRecordCount&&this.maxTotalRecordCount&&(result.TotalRecordCount=Math.min(result.TotalRecordCount,this.maxTotalRecordCount)),this.parentContainer),parentContainer=(parentContainer&&(items.length?(parentContainer.classList.remove("hide"),this.parentContainerHadFocusable&&parentContainer.classList.add("focusable")):(parentContainer.classList.add("hide"),this.parentContainerHadFocusable=parentContainer.classList.contains("focusable"),parentContainer.classList.remove("focusable"))),document.activeElement),parentContainer=(this.contains(parentContainer)&&(hasActiveElement=!0,focusIndexElement=_shortcuts.default.getItemElementFromChildNode(parentContainer,!0,this),focusIndex=focusIndexElement?this.indexOfElement(focusIndexElement):null,focusId=(focusId=null!=focusIndex&&(focusIndexElement=this.getItem(focusIndex))?focusIndexElement.Id:focusId)||parentContainer.getAttribute("data-id"),_layoutmanager.default.tv||(focusIndexElement=this.virtualScroller?this.closest(".emby-scroller"):null)&&(scrollPosition=focusIndexElement.getScrollPosition())),0),focusIndexElement=this.getListOptions?this.getListOptions(items):null,listItemOptions=focusIndexElement?focusIndexElement.options:null,itemParts=(focusIndexElement.renderer.setListClasses(this,focusIndexElement||{}),[]);return itemParts.length=result.TotalRecordCount||items.length,this.itemParts=itemParts,null!=(itemParts=listItemOptions.fields)&&itemParts.includes("ItemCheckbox")&&!this._onChangeListenerBound&&(this._onChangeListenerBound=!0,this.addEventListener("change",onChange)),focusIndexElement.renderer.setUserPreferredSize&&this.hasAttribute("data-cardsizeoffset")&&focusIndexElement.renderer.setUserPreferredSize(this),this.hasAttribute("data-virtualscrolllayout")?((this._hasOtherInnerHtml||this.items&&!this.virtualScroller)&&(this.innerHTML="",this._hasOtherInnerHtml=null),this.classList.add("virtualItemsContainer"),focusIndexElement&&(focusIndexElement.virtualScrollLayout||(focusIndexElement.virtualScrollLayout=this.getAttribute("data-virtualscrolllayout")),focusIndexElement.virtualScrollLayout.includes("horizontal")&&(focusIndexElement.options.horizontal=!0),focusIndexElement.options.isVirtualList=!0,focusIndexElement.options.lazy||(focusIndexElement.options.lazy=2)),isNewVirtualScroller=null==(itemParts=this.virtualScroller),(listOptionsSet=!1)===(this.currentListOptions=focusIndexElement).options.playQueueIndicator||AllItemsContainers.includes(this)||AllItemsContainers.push(this),itemParts&&itemParts.templateInnerHTML===focusIndexElement.options.templateInnerHTML||(this.setAttribute("data-minoverhang",focusIndexElement.minOverhang||1),this.setAttribute("layout",focusIndexElement.virtualScrollLayout),(itemParts=this).classList.add("virtual-scroller-overflowvisible"),itemParts.addClasses(),focusIndexElement&&(focusIndexElement.renderer.setListOptions(items,focusIndexElement.options),listOptionsSet=!0),itemParts.virtualChunkSize=getVirtualChunkSize(this,focusIndexElement),itemParts.templateInnerHTML=listItemOptions.templateInnerHTML,itemParts.templateHTML="<"+listItemOptions.tagName+' class="virtualScrollItem '+listItemOptions.className+'" '+listItemOptions.fixedAttributes+">"+listItemOptions.templateInnerHTML+"</"+listItemOptions.tagName+">",itemParts.fetchItems=this.fetchData.bind(this),(this.virtualScroller=itemParts).updateElement=this.updateVirtualElement.bind(this),itemParts.onRecycleElement=this.onRecycleElement,isNewVirtualScroller)||itemParts.resetAll(),focusIndexElement&&!listOptionsSet&&focusIndexElement.renderer.setListOptions(items,focusIndexElement.options),this.items=null,this.onRefreshing&&this.onRefreshing(result),itemParts.setItemSource(items,result.TotalRecordCount),parentContainer=50):(this._hasOtherInnerHtml=null,this.classList.remove("virtualItemsContainer"),this.currentListOptions=focusIndexElement,this.onRefreshing&&this.onRefreshing(result),focusIndexElement?(focusIndexElement.options.horizontalGrid||(focusIndexElement.options.horizontal=null),"number"==typeof focusIndexElement.options.rowCount&&this.classList.add("itemRows"+focusIndexElement.options.rowCount),focusIndexElement.options.isVirtualList=null,this.innerHTML=focusIndexElement.renderer.getItemsHtml(items,focusIndexElement.options)):this.innerHTML=this.getItemsHtml(items),this.virtualScroller&&this.virtualScroller.disconnectedCallback(),this.virtualScroller=null,this.items=items,listItemOptions&&!1===listItemOptions.image||_lazyimageloader.default.lazyChildren(this)),!focusIndexElement||!focusIndexElement.options.dropTarget&&!1===focusIndexElement.options.anyDraggable||(isNewVirtualScroller=this,_layoutmanager.default.tv)||isNewVirtualScroller._dragEventsBound||(isNewVirtualScroller._dragEventsBound=!0,isNewVirtualScroller.addEventListener("dragstart",onItemDragStart),isNewVirtualScroller.addEventListener("drag",onItemDrag),isNewVirtualScroller.addEventListener("dragend",onItemDragEnd),isNewVirtualScroller.addEventListener("dragendcomplete",onItemDragEndComplete),isNewVirtualScroller.addEventListener("dragenter",onItemDragOver),isNewVirtualScroller.addEventListener("dragover",onItemDragOver),isNewVirtualScroller.addEventListener("dragleave",onItemDragLeave),isNewVirtualScroller.addEventListener("drop",onItemDrop)),this.enableContextMenu(listItemOptions&&listItemOptions.contextMenu),this.enableMultiSelect(listItemOptions&&listItemOptions.multiSelect),(parentContainer?function(delay){return new Promise(function(resolve,reject){setTimeout(resolve,delay)})}(parentContainer):Promise.resolve()).then(function(){hasActiveElement&&(null!=scrollPosition?this.closest(".emby-scroller").scrollToPosition({position:scrollPosition,behavior:"instant"}):function(itemsContainer,focusId,focusIndex){if(console.log("setFocus: focusId: "+focusId+", focusIndex: "+focusIndex),focusId){focusId=itemsContainer.indexOfItemId(focusId);if(-1!==focusId)return console.log("setFocus: found item at index "+focusId),itemsContainer.scrollToIndex(focusId,{},!0)}if(null!=focusIndex&&(focusIndex=parseInt(focusIndex),0<=(focusIndex=Math.min(focusIndex,itemsContainer.getItems().length-1))))return itemsContainer.scrollToIndex(focusIndex,{},!0);focusId={skipIfNotEnabled:!0};console.log("setFocus: auto-focusing into itemsContainer"),_focusmanager.default.autoFocus(itemsContainer,focusId)||(focusIndex=itemsContainer.closest(".view"))&&(null!=(itemsContainer=focusIndex.controller)&&itemsContainer.autoFocus?focusIndex.controller.autoFocus(focusId):_focusmanager.default.autoFocus(focusIndex,focusId))}(this,focusId,focusIndex));var dataItemIds=this.getAttribute("data-monitorids");this.mergeRefreshOptions({refreshIntervalMs:parseInt(this.getAttribute("data-refreshinterval")||"0"),immediateUpdate:"false"!==this.getAttribute("data-immediateupdate"),enableUserData:listItemOptions&&listItemOptions.enableUserData,refreshOnItemUpdated:this.refreshOnItemUpdated,parentId:this.getAttribute("data-parentid")||null,itemIds:dataItemIds?dataItemIds.split(","):[]}),this.afterRefresh&&this.afterRefresh(result)}.bind(this))}function getClosest(node,selector){return node.closest?node.closest(selector):(node=node.parentNode)?getClosest(node,selector):null}function onItemDragStart(e){var _e$detail,item,multiSelectedItems,itemsContainer;!RequiresDragEventsPolyfill||null!=(_e$detail=e.detail)&&_e$detail.polyfill?(e.dataTransfer.effectAllowed="copy",(_e$detail=getClosest(e.target,'[draggable="true"]'))&&(itemsContainer=_e$detail.closest(".itemsContainer"),item=_shortcuts.default.getItemFromChildNode(_e$detail,null,itemsContainer),multiSelectedItems=(null==MultiSelect?void 0:MultiSelect.getSelectedItems())||[],window.CurrentDragInfo={element:_e$detail,elementIndex:itemsContainer.indexOfElement(_e$detail),item:item,items:multiSelectedItems.length?multiSelectedItems:[item]},itemsContainer=e.detail,headerElement.classList.add("headerElement-drag-reorder-active"),itemsContainer.dragY&&_e$detail.classList.contains("ordered-drop-target-y")?(e.dataTransfer.effectAllowed="copyMove",(appFooter=appFooter||document.querySelector(".appfooter"))&&appFooter.classList.add("appfooter-drag-reorder-active")):itemsContainer.dragX&&_e$detail.classList.contains("ordered-drop-target-x")&&(e.dataTransfer.effectAllowed="move"))):e.preventDefault()}function onItemDrag(e){var target=e.target;target.classList.contains("dragging-over-x-axis")&&function(e,elem,item,itemsContainer){(function(elem,item,itemsContainer){var xAxisContent=elem.querySelector(".listItem-drag-x-axis-content");if(!xAxisContent){var xAxisContent=null==(xAxisContent=_connectionmanager.default.getApiClient(item))?void 0:xAxisContent.getCurrentUserCached(),itemsContainer=Object.assign({},itemsContainer.getCommandOptions(item),{items:[item],user:xAxisContent}),commands=_itemmanager.default.getCommands(itemsContainer).filter(isXAxisCommand),item=elem.querySelector(".listItem-content"),html="";html=html+'<div class="listItem-drag-x-axis-content">'+'<div class="listItem-drag-x-axis-content-section listItem-drag-x-axis-content-left">';for(var i=0,length=commands.length;i<length;i++){var command=commands[i];if("left"===command.horizontalDragSection){html+='<button style="background:'+getCommandColor(command)+'" type="button" data-command="'+command.id+'" title="'+command.name+'" is="paper-icon-button-light" class="paper-icon-button-light md-icon listItem-drag-x-axis-button">'+command.icon+"</button>";break}}html=html+"</div>"+'<div class="listItem-drag-x-axis-content-section listItem-drag-x-axis-content-right">';for(var _i2=0,_length2=commands.length;_i2<_length2;_i2++){var _command=commands[_i2];if("right"===_command.horizontalDragSection){html+='<button style="background:'+getCommandColor(_command)+'" type="button" data-command="'+_command.id+'" title="'+_command.name+'" is="paper-icon-button-light" class="paper-icon-button-light md-icon listItem-drag-x-axis-button">'+_command.icon+"</button>";break}}html=html+"</div>"+"</div>",item.insertAdjacentHTML("afterend",html)}})(elem,item,itemsContainer),elem.leftDragSection||(elem.leftDragSection=elem.querySelector(".listItem-drag-x-axis-content-left"));elem.rightDragSection||(elem.rightDragSection=elem.querySelector(".listItem-drag-x-axis-content-right"));item=e.detail.pt,itemsContainer=e.detail.ptDown,e=item.x-itemsContainer.x,item=Math.abs(e),itemsContainer=elem.cachedOffsetWidth;itemsContainer||(itemsContainer=elem.offsetWidth,elem.cachedOffsetWidth=itemsContainer);var pct=0;itemsContainer&&MinXDragPct<=(pct=item/itemsContainer*100)?elem.vibratedForXDrag||(tryVibrate(),elem.vibratedForXDrag=!0):elem.vibratedForXDrag=null;0<e?(elem.leftDragSection.style.width=item+"px",elem.leftDragSection.classList.remove("hide"),elem.rightDragSection.classList.add("hide"),elem.dragCommand=MinXDragPct<=pct?"left":null):e<0?(elem.leftDragSection.classList.add("hide"),elem.rightDragSection.style.width=item+"px",elem.rightDragSection.classList.remove("hide"),elem.dragCommand=MinXDragPct<=pct?"right":null):(elem.leftDragSection.classList.add("hide"),elem.rightDragSection.classList.add("hide"),elem.dragCommand=null)}(e,target,(e=window.CurrentDragInfo)?e.item:null,this)}function onItemDragEnd(e){var data,_e$detail2;!RequiresDragEventsPolyfill||null!=(_e$detail2=e.detail)&&_e$detail2.polyfill?(e.preventDefault(),_e$detail2=e.target,data=window.CurrentDragInfo,window.CurrentDragInfo=null,headerElement.classList.remove("headerElement-drag-reorder-active"),null!=appFooter&&appFooter.classList.remove("appfooter-drag-reorder-active"),data&&_e$detail2.dragCommand&&(_e$detail2=null==(_e$detail2=_e$detail2.querySelector(".listItem-drag-x-axis-content-"+_e$detail2.dragCommand+" button"))?void 0:_e$detail2.getAttribute("data-command"))&&_commandprocessor.default.executeCommand(_e$detail2,data.items,{itemsContainer:this})):e.preventDefault()}function onItemDragEndComplete(e){var e=e.target,xAxisContent=(e.classList.remove("dragging-over","dragging-over-x-axis"),e.querySelector(".listItem-drag-x-axis-content"));xAxisContent&&xAxisContent.remove(),e.leftDragSection=null,e.rightDragSection=null,e.vibratedForXDrag=null,e.cachedOffsetWidth=null,e.dragCommand=null}function supportsAddingToCollection(item){var user=_connectionmanager.default.getApiClient(item).getCurrentUserCached();return user&&_itemmanager.default.canAddToCollection(item,user)}function isXAxisCommand(command){return null!=command.horizontalDragSection}function getCommandColor(command){command=(command.id||"").toLowerCase();return command.includes("download")?"#0285FE":command.includes("remove")||command.includes("delete")?"#FF4337":"#FEA00C"}function tryVibrate(){try{navigator.vibrate&&navigator.vibrate(200)}catch(err){console.log("error in navigator.vibrate: "+err)}}var MinXDragPct=62.5;function onItemDragOver(e){var listType,data=window.CurrentDragInfo,draggingElement=data?data.element:null,target=e.target,elem=getClosest(target,".drop-target"),detail=e.detail,dragY=detail.dragY,detail=detail.dragX;dragY&&detail&&null!=elem&&elem.classList.contains("full-drop-target")?(data=data?data.item:null)&&("Playlist"===(listType=_shortcuts.default.getItemFromChildNode(elem).Type)&&_itemmanager.default.canAddToPlaylist(data)||"BoxSet"===listType&&supportsAddingToCollection(data))&&(e.preventDefault(),e.dataTransfer.dropEffect=e.dataTransfer.dropEffectEmby="copy",elem.classList.add("dragging-over")):detail&&null!=elem&&elem.classList.contains("ordered-drop-target-x")&&draggingElement.classList.contains("ordered-drop-target-x")?(e.preventDefault(),e.dataTransfer.dropEffect=e.dataTransfer.dropEffectEmby="move",listType=elem.classList,data=(data=elem.getBoundingClientRect()).x+data.width/2,e.clientX<=data?(listType.remove("dragging-over-right"),listType.add("dragging-over","dragging-over-left")):(listType.remove("dragging-over-left"),listType.add("dragging-over","dragging-over-right"))):dragY&&null!=elem&&elem.classList.contains("ordered-drop-target-y")&&draggingElement.classList.contains("ordered-drop-target-y")?(e.preventDefault(),e.dataTransfer.dropEffect=e.dataTransfer.dropEffectEmby="move",data=elem.classList,elem=(listType=elem.getBoundingClientRect()).y+listType.height/2,e.clientY<=elem?(data.remove("dragging-over-bottom"),data.add("dragging-over","dragging-over-top")):(data.remove("dragging-over-top"),data.add("dragging-over","dragging-over-bottom"))):!detail||dragY||draggingElement!==target&&!draggingElement.contains(target)||(e.preventDefault(),e.dataTransfer.dropEffect=e.dataTransfer.dropEffectEmby="move",draggingElement.classList.add("dragging-over","dragging-over-x-axis"))}function onItemDragLeave(e){var listType,data=window.CurrentDragInfo,data=data?data.item:null,elem=getClosest(e.target,".drop-target"),detail=e.detail,dragY=detail.dragY,detail=detail.dragX;dragY&&detail&&null!=elem&&elem.classList.contains("full-drop-target")?(listType=_shortcuts.default.getItemFromChildNode(elem).Type,data&&("Playlist"===listType&&_itemmanager.default.canAddToPlaylist(data)||"BoxSet"===listType&&supportsAddingToCollection(data))&&(e.preventDefault(),elem.classList.remove("dragging-over"))):detail&&null!=elem&&elem.classList.contains("ordered-drop-target-x")?(e.preventDefault(),elem.classList.remove("dragging-over","dragging-over-left","dragging-over-right")):dragY&&null!=elem&&elem.classList.contains("ordered-drop-target-y")?(e.preventDefault(),elem.classList.remove("dragging-over","dragging-over-top","dragging-over-bottom")):detail&&!dragY&&e.preventDefault()}function onItemDrop(e){e.preventDefault();var dragY,detail,dragInfo=window.CurrentDragInfo,draggedElement=dragInfo.element,draggedElementIndex=dragInfo.elementIndex,elem=getClosest(e.target,".drop-target");elem&&(dragInfo=dragInfo.items,elem.classList.remove("dragging-over","dragging-over-top","dragging-over-bottom","dragging-over-left","dragging-over-right"),dragY=(detail=e.detail).dragY,detail=detail.dragX,dragY&&detail&&elem.classList.contains("full-drop-target")?onDroppedOntoFullTarget(elem.closest(".itemsContainer"),0,elem,dragInfo):detail&&elem.classList.contains("ordered-drop-target-x")?(detail=elem.closest(".itemsContainer")).contains(draggedElement)&&function(e,itemsContainer,items,draggedElement,draggedElementIndex,dropTarget){var directionLeft,rect=(rect=dropTarget.getBoundingClientRect()).x+rect.width/2;onReorderedTo(itemsContainer,items,draggedElement,draggedElementIndex,dropTarget,directionLeft=e.clientX<=rect?!0:directionLeft)}(e,detail,dragInfo,draggedElement,draggedElementIndex,elem):dragY&&elem.classList.contains("ordered-drop-target-y")&&(detail=elem.closest(".itemsContainer")).contains(draggedElement)&&function(e,itemsContainer,items,draggedElement,draggedElementIndex,dropTarget){var directionUp,rect=(rect=dropTarget.getBoundingClientRect()).y+rect.height/2;onReorderedTo(itemsContainer,items,draggedElement,draggedElementIndex,dropTarget,directionUp=e.clientY<=rect?!0:directionUp)}(e,detail,dragInfo,draggedElement,draggedElementIndex,elem))}_events=function(_VirtualScroller){function EmbyItemsContainer(){var _this,self=_this=_VirtualScroller.call(this)||this;return onInit.call(self),_this.paused=!0,babelHelpers.possibleConstructorReturn(_this,self)}return babelHelpers.inherits(EmbyItemsContainer,_VirtualScroller),babelHelpers.createClass(EmbyItemsContainer,[{key:"connectedCallback",value:function(){_virtualScroller.default.prototype.connectedCallback.apply(this,arguments),onInit.call(this),this.bound_onDataFetched=onDataFetched.bind(this),this.bound_onDataFetchedInitial=function(result){var onDataFetchedPromise;return(onDataFetchedPromise=(onDataFetchedPromise=this.onDataFetched?this.onDataFetched(result):onDataFetchedPromise)||Promise.resolve(result)).then(this.bound_onDataFetched,this.bound_onGetItemsFailed)}.bind(this),this.bound_onGetItemsFailed=function(result){var errorName=((null==result?void 0:result.name)||"").toLowerCase();if("aborterror"!==errorName){if(!this.onGetItemsFailed)throw result;this.onGetItemsFailed(result)}}.bind(this),this.addEventListener("click",onClick),this.hasAttribute("data-domdiff")&&(this._enableDomDiff=!0,morphdom||Emby.importModule("./modules/morphdom/morphdom.js").then(function(response){morphdom=response})),_shortcuts.default.on(this,{click:!1}),_layoutmanager.default.tv||!RequiresDragEventsPolyfill||dragEventsPolyfillLoaded||(dragEventsPolyfillLoaded=!0,Emby.importModule("./modules/polyfills/dragdroptouch.js")),this.hasAttribute("data-contextmenu")&&this.enableContextMenu(!0),this.hasAttribute("data-multiselect")&&this.enableMultiSelect(!0),this.__upgraded=!0,this.dispatchEvent(new CustomEvent("upgraded",{cancelable:!1}))}},{key:"getEventsToMonitor",value:function(){var monitor=this.getAttribute("data-monitor");return monitor?monitor.split(","):[]}},{key:"disconnectedCallback",value:function(){value=this,-1<(value=(arr=AllItemsContainers).indexOf(value))&&arr.splice(value,1);var value,arr=this.refreshMonitor;arr&&(arr.destroy(),this.refreshMonitor=null),_virtualScroller.default.prototype.disconnectedCallback.apply(this,arguments),abortRequests(this),this.enableMultiSelect(!1),this.removeEventListener("click",onClick),this.removeEventListener("change",onChange),this.removeEventListener("contextmenu",onContextMenu,!0),_shortcuts.default.off(this,{click:!1}),this.fetchData=null,this.getItemsHtml=null,this.parentContainer=null,this.virtualScroller=null,this.currentListOptions=null,this.itemParts=null,this.items=null,this._touchEventsBound=null,this._contextMenuEventsBound=!0,this.bound_onDataFetched=null,this.bound_onDataFetchedInitial=null,this.bound_onGetItemsFailed=null}},{key:"updateVirtualElement",value:function(child,item,index){for(var listOptions=this.currentListOptions,listItemOptions=listOptions.options,listOptions=listOptions.renderer,allItemParts=this.itemParts,allItemParts=allItemParts[index]||(allItemParts[index]=listOptions.getItemParts(item,index,listItemOptions)),attributes=allItemParts.attributes,i=0,length=attributes.length;i<length;i++){var att=attributes[i];child.setAttribute(att.name,att.value)}this._enableDomDiff?1===(listOptions=child.childNodes).length&&morphdom?morphdom(listOptions[0],allItemParts.html):child.innerHTML=allItemParts.html:child.lastInnerHTML!==allItemParts.html&&(child.lastInnerHTML=allItemParts.html,child.innerHTML=allItemParts.html),MultiSelect&&MultiSelect.isSelected(item)&&(index=child.querySelector(".chkItemSelect"))&&(index.checked=!0,child.classList.add("item-multiselected"))}},{key:"pause",value:function(){this.paused=!0,abortRequests(this);var refreshMonitor=this.refreshMonitor;refreshMonitor&&refreshMonitor.pause(),this.virtualScroller&&_superPropGet(EmbyItemsContainer,"pause",this,3)([])}},{key:"resume",value:function(options){this.paused=!1;this.virtualScroller&&_superPropGet(EmbyItemsContainer,"resume",this,3)([options]);var refreshMonitor=this.refreshMonitor;return refreshMonitor?refreshMonitor.resume(options):!refreshMonitor&&null!=options&&options.refresh?this.refreshItems(options):Promise.resolve()}},{key:"setOtherInnerHTML",value:function(html){this.virtualScroller&&this.virtualScroller.resetAll(),this._hasOtherInnerHtml=!0,this.innerHTML=html}},{key:"getItemFromElement",value:function(element){if(this.virtualScroller)return _superPropGet(EmbyItemsContainer,"getItemFromElement",this,3)([element]);if(element.parentNode===this||!element.hasAttribute("data-type")){element=this.indexOfElement(element);if(0<=element){element=this.getItem(element);if(element)return element}}return null}},{key:"getItem",value:function(index){var items;return this.virtualScroller?_superPropGet(EmbyItemsContainer,"getItem",this,3)([index]):(items=this.items)?items[index]:null}},{key:"refreshItems",value:function(options){var refreshMonitor=this.refreshMonitor;return refreshMonitor?refreshMonitor.refreshItems(options):this.refreshItemsInternal(options)}},{key:"refreshItemsInternal",value:function(options){if(!this.fetchData)return Promise.resolve();if(this.paused)return this.notifyRefreshNeeded(!1),Promise.resolve();this.refreshMonitor&&this.refreshMonitor.notifyIsRefreshing(),abortRequests(this);var abortController=new AbortController,query=(this.currentAbortController=abortController,{}),limit=getVirtualChunkSize(this),limit=(limit&&(query.Limit=limit),this.onGetItems&&this.onGetItems(query),abortController.signal);return null!=options&&options.signal&&(limit=AbortSignal.any([limit,options.signal])),this.fetchData(query,limit).then(this.bound_onDataFetchedInitial,this.bound_onGetItemsFailed)}},{key:"notifyRefreshNeeded",value:function(isInForeground){if(this.refreshMonitor)return this.refreshMonitor.notifyRefreshNeeded(isInForeground)}},{key:"showMultiSelect",value:function(childElement,selected){childElement=_shortcuts.default.getItemElementFromChildNode(childElement,!0,this);this.multiSelect.showSelections(childElement,selected)}},{key:"enableMultiSelect",value:function(enabled){var self,current=this.multiSelect;enabled?current||(self=this,Emby.importModule("./modules/multiselect/multiselect.js").then(function(multiSelect){MultiSelect=multiSelect,self.multiSelect=new MultiSelect({container:self})})):current&&(this.multiSelect=null)}},{key:"enableContextMenu",value:function(enabled){!enabled||(enabled=this)._contextMenuEventsBound||(enabled._contextMenuEventsBound=!0,enabled.addEventListener("contextmenu",onContextMenu,!0),_layoutmanager.default.tv)||nativeContextMenuEventSupported||(_browser.default.iOS||_browser.default.osx)&&(enabled._touchEventsBound=!0,_dom.default.addEventListener(enabled,"touchstart",onTouchStart,{passive:!0}),_dom.default.addEventListener(enabled,"touchend",onTouchEnd,{}),_dom.default.addEventListener(enabled,"touchcancel",onTouchEnd,{}))}},{key:"getItemSelector",value:function(){var listOptions=this.currentListOptions;return listOptions?listOptions.options.itemSelector:".card,.listItem,.epgRow,.dataGridItem"}},{key:"getElement",value:function(index){var items;return this.virtualScroller?_superPropGet(EmbyItemsContainer,"getElement",this,3)([index]):(items=this.querySelectorAll(this.getItemSelector())).length?items[index]:void 0}},{key:"scrollToIndex",value:function(index,scrollOptions,focus){if(this.virtualScroller)return _superPropGet(EmbyItemsContainer,"scrollToIndex",this,3)([index,scrollOptions,focus]);var items=this.querySelectorAll(this.getItemSelector());items.length&&(index=items[index=Math.min(index,items.length-1)]||items[items.length-1])&&(focus?_focusmanager.default.focus(index):(items=this.closest("[is=emby-scroller]"))&&items.toStart(index,scrollOptions))}},{key:"pageUp",value:function(activeElement,offset){this.getItems()&&(offset=offset||12,activeElement=_shortcuts.default.getItemElementFromChildNode(activeElement,!0,this)||activeElement,activeElement=-1===(activeElement=this.indexOfElement(activeElement))?0:Math.max(0,activeElement-offset),this.scrollToIndex(activeElement,{},!0))}},{key:"pageDown",value:function(activeElement,offset){var items=this.getItems();items&&(offset=offset||12,activeElement=_shortcuts.default.getItemElementFromChildNode(activeElement,!0,this)||activeElement,items=-1===(activeElement=this.indexOfElement(activeElement))?0:Math.min(items.length-1,activeElement+offset),this.scrollToIndex(items,{},!0))}},{key:"indexOfElement",value:function(element){return this.virtualScroller?_superPropGet(EmbyItemsContainer,"indexOfElement",this,3)([element]):parseInt(element.getAttribute("data-index")||"-1")}},{key:"indexOfItemId",value:function(id){return this.virtualScroller?_superPropGet(EmbyItemsContainer,"indexOfItemId",this,3)([id]):(id=this.querySelector('[data-id="'+id+'"]'))?this.indexOfElement(id):-1}},{key:"indexOfItem",value:function(item){var items;return this.virtualScroller||item.Id?this.indexOfItemId(item.Id):(items=this.getItems())?items.indexOf(item):-1}},{key:"focusLast",value:function(){var items=this.getItems();items&&this.scrollToIndex(items.length-1,{},!0)}},{key:"getItems",value:function(){var virtualScroller=this.virtualScroller;return virtualScroller?virtualScroller._itemSource:this.items}},{key:"onItemUpdated",value:function(index,item){var itemParts=this.itemParts;if(itemParts){if(itemParts[index]=null,this.virtualScroller)return _superPropGet(EmbyItemsContainer,"onItemUpdated",this,3)([index,item]);var any,child,itemParts=this.items;itemParts&&(any=!1,(child=this.getElement(index))&&(itemParts[index]=item,this.updateVirtualElement(child,item,index),any=!0),any)&&_lazyimageloader.default.lazyChildren(this)}}},{key:"getContextMenuElementFromChildNode",value:function(child){return _shortcuts.default.getItemElementFromChildNode(child,!0,this)}},{key:"mergeRefreshOptions",value:function(options){var _this$refreshMonitor;null!=(_this$refreshMonitor=this.refreshMonitor)&&_this$refreshMonitor.mergeOptions(options)}},{key:"getCommandOptions",value:function(item){var listOptions,currentListOptions=this.currentListOptions,commandOptions=Object.assign({},(null==currentListOptions?void 0:currentListOptions.commandOptions)||{});return _layoutmanager.default.tv&&(listOptions=null==currentListOptions?void 0:currentListOptions.options,item)&&null!=listOptions&&listOptions.fields.includes("ItemCheckbox")&&(listOptions=listOptions.getIsItemChecked?listOptions.getIsItemChecked(item):item.Selected||!1===item.Disabled,commandOptions=Object.assign({setChecked:!1===listOptions,setUnchecked:!0===listOptions},commandOptions)),commandOptions.reOrder=null==currentListOptions||null==(item=currentListOptions.options)?void 0:item.reOrder,commandOptions}},{key:"onCommandResult",value:function(result){this.onCommandResultInternal&&this.onCommandResultInternal(result)}}])}(_virtualScroller.default);customElements.define("emby-itemscontainer",_events,{extends:"div"}),_exports.default=_events});