EmbyCrackedClient/web/modules/virtual-scroller/virtual-scroller.js

1 line
32 KiB
JavaScript
Raw Permalink Normal View History

2025-06-25 11:46:04 +08:00
import dom from"./../dom.js";import layoutManager from"./../layoutmanager.js";import focusManager from"./../focusmanager.js";require(["css!modules/virtual-scroller/virtual-scroller.css"]);let useSetTimeout=!1,rAF=useSetTimeout?setTimeout:requestAnimationFrame,cAF=useSetTimeout?clearTimeout:cancelAnimationFrame,supportsContentVisibility=CSS.supports("content-visibility","hidden"),displayProp=supportsContentVisibility?"contentVisibility":"display",displayHiddenValue=supportsContentVisibility?"hidden":"none",supportsInsetShorthand=CSS.supports("inset","0 0 0 0"),supportsTransform=CSS.supports("transform","scale(1)"),supportsTranslate=CSS.supports("translate","40px 100px");function Layout1dBase(config){this._physicalMin=0,this._physicalMax=0,this._first=-1,this._last=-1,this._itemSize={width:0,height:0},this._scrollPosition=0,this._viewportSize={width:0,height:0},this._totalItems=0,this._scrollSize=1,this._pendingReflow=!1,Object.assign(this,config)}function Layout1dGrid(config){Layout1dBase.call(this,config),this._rolumns=1}function VirtualScroller(config){this._inlineMultiplier="rtl"===document.dir?-1:1,this._totalItems=0,this._num=1/0,this._first=0,this._last=0,this._prevFirst=0,this._prevLast=0,this._needsReset=!1,this._needsRemeasure=!1,this._pendingRender=null,this._container=null,this._ordered=[],this._keyToChild=[],this._indexToMeasure={},this.requestAnimationFrameCallbackFn=this.requestAnimationFrameCallback.bind(this),this._num=0,this._first=-1,this._last=-1,this._prevFirst=-1,this._prevLast=-1,this._needsUpdateViewSize=!1,this._needsUpdateViewScrollPosition=!1,this._layout=null,this._scrollTarget=null,this._scrollSize=null,this._childrenPos=null,this._container=null,this._containerSize=null,this._containerRO=new ResizeObserver(this._containerSizeChanged.bind(this)),this.boundOnScrollTargetResize=this._scrollTargetSizeChanged.bind(this),this._skipNextChildrenSizeChanged=!1,this.sameSizeChildren=config.sameSizeChildren,this.sameSizeChildren||(this._childrenRO=new ResizeObserver(this._childrenSizeChanged.bind(this))),this.boundHandleScroll=this.handleScroll.bind(this),this.setContainer(config.container),this.setScrollTarget(config.scrollTarget)}function getNewIndex(instance,currentIndex,direction){var instance=instance._layout,isVertical=instance.isVertical,rolumns=instance._rolumns,instance=instance._totalItems,dim1Index=Math.floor(currentIndex/rolumns),dim2Index=currentIndex%rolumns,rowIndex=isVertical?dim1Index:dim2Index,dim2Index=isVertical?dim2Index:dim1Index,dim1Index=isVertical?rolumns?Math.ceil(instance/rolumns):Number.MAX_SAFE_INTEGER:rolumns,rolumns=isVertical?rolumns:rolumns?Math.ceil(instance/rolumns):Number.MAX_SAFE_INTEGER;let newRowIndex=rowIndex,newColIndex=dim2Index;switch(direction){case 0:"rtl"===document.dir?newColIndex++:newColIndex--;break;case 1:"rtl"===document.dir?newColIndex--:newColIndex++;break;case 2:newRowIndex--;break;case 3:newRowIndex++;break;default:throw new Error("Invalid dir param")}if(newRowIndex<0||newColIndex<0)return-1;if(newRowIndex>=dim1Index||newColIndex>=rolumns)return-1;let newIndex=isVertical?newRowIndex*rolumns+newColIndex:newColIndex*dim1Index+newRowIndex;return(newIndex=newIndex>currentIndex?Math.min(newIndex,instance-1):newIndex)===currentIndex?-1:newIndex}function getFocusableElements(newItemToFocus,activeElement,direction){return newItemToFocus||null==(newItemToFocus=getNewIndex(this,activeElement._dataItemIndex,direction))?null:!(newItemToFocus<0)&&(activeElement=this._container.getElement(newItemToFocus))?[activeElement]:[]}function positionChildrenInsets(instance,pos){var layout=instance._layout,rolumns=layout._rolumns,itemDim1=layout._itemDim1(),itemDim2=layout._itemDim2();if(itemDim1&&itemDim2){var kids=instance._ordered,first=instance._first;let secondaryPositionOffset=0;layout.isVertical&&1<rolumns&&(instance=layout._totalItems)<rolumns&&(instance=itemDim2*instance)&&(secondaryPositionOffset=Math.floor((layout._viewDim2()-instance)/2));var childPosition={top:0,left:0},_positionDim=layout._positionDim,_secondaryPositionDim=layout._secondaryPositionDim;for(le