define(["exports","./../layoutmanager.js","./../browser.js","./../dom.js","./../focusmanager.js","./../appheader/appheadercontent.js"],function(_exports,_layoutmanager,_browser,_dom,_focusmanager,_appheadercontent){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,require(["scrollStyles"]);var cores,deviceMemory,platform,preventScrollSupported=function(){var supported=!1;try{var focusOptions={};Object.defineProperty(focusOptions,"preventScroll",{get:function(){return supported=!0},enumerable:!0,configurable:!0}),document.createElement("div").focus(focusOptions)}catch(err){console.log("error testing preventScroll support: "+err)}return supported}(),allowAnimatedScroll=!!CSS.supports("transform","scale(1)")&&!((cores=navigator.hardwareConcurrency||4)<4||(2400<=(screen.width||screen.availWidth||0)||1400<=(screen.height||screen.availHeight||0))&&cores<6||(deviceMemory=navigator.deviceMemory||2)<2||!_dom.default.supportsEventListenerOnce()||!document.documentElement.animate||_browser.default.web0s||_browser.default.netcast||(platform=(navigator.platform||"").toLowerCase(),"android"===globalThis.appMode&&(cores<4||deviceMemory<2||platform.includes("armv7"))));function within(number,start,end){var min=startabs(touches):abs(pathX)=options&&scrollOptions+itemOffset<=currentEnd,options=slideeOffset||Math.abs(enableNativeScroll)+itemOffset>=options&&scrollOptions<=currentEnd,scrollOptions=subtractPaddingFromFrameSize(this,horizontal,scrollOffset);return{start:enableNativeScroll,center:enableNativeScroll+item-(scrollOptions/2-itemOffset/2)*multiplier,end:enableNativeScroll-(scrollOptions-itemOffset)*multiplier,isVisible:slideeOffset,anyVisible:options}},Scroller.prototype.ensureSizeInfo=function(){var options,horizontal,frame,newFrameSize;this.requiresReflow&&(this.requiresReflow=!1,frame=this.frame,newFrameSize={},((horizontal=(options=this.options).horizontal)||options.dualScroll)&&(newFrameSize.width=frame.offsetWidth),horizontal&&!options.dualScroll||(newFrameSize.height=frame.offsetHeight),this.frameSize=newFrameSize,options.enableNativeScroll||(options.dynamicFrameSizing?(frame=this.slideeElement,newFrameSize=getComputedStyle(frame),this.slideeSize={width:Math.max(frame.offsetWidth,frame.scrollWidth)+parsePxToInt(newFrameSize.getPropertyValue(PaddingInlineStartProp))+parsePxToInt(newFrameSize.getPropertyValue(PaddingInlineEndProp)),height:Math.max(frame.offsetHeight,frame.scrollHeight)+parsePxToInt(newFrameSize.getPropertyValue("padding-top"))+parsePxToInt(newFrameSize.getPropertyValue("padding-bottom"))}):this.slideeSize={width:5e6,height:5e6},this._pos.end=Math.max(this.getScrollSize()-getFrameSize(this,horizontal,!0),0)*this.getScrollMultiplier()))},Scroller.prototype.getScrollEventName=function(){return this.options.enableNativeScroll?"scroll":"scrollanimate"},Scroller.prototype.getScrollContainerBoundingClientRect=function(){var rect;return this.frameResizeObserver?(null==(rect=this._frameRect)&&(rect=this.nativeScrollElement.getBoundingClientRect(),this._frameRect=rect),rect):(addFrameResizeObserver(this),this.nativeScrollElement.getBoundingClientRect())},Scroller.prototype.getScrollSlider=function(){return this.slideeElement},Scroller.prototype.addScrollEventListener=function(fn,options){this.listenerCount++,this.options.dispatchScrollEvent=0=adaptiveScroll?"end":"center",scrollOptions.skipWhenVisible=!0),horizontal?scrollOptions.left=frameSizeForComparison[location]:scrollOptions.top=frameSizeForComparison[location],this.slideTo(scrollOptions,frameSizeForComparison)},Scroller.prototype.toStart=function(item,scrollOptions){this.to("start",item,scrollOptions)},Scroller.prototype.toEnd=function(item,scrollOptions){this.to("end",item,scrollOptions)},Scroller.prototype.scrollToElement=function(item,scrollOptions){var options=this.options;return null==(scrollOptions=scrollOptions||{}).offset&&(scrollOptions.offset=options.focusScrollOffset),options.enableNativeScroll&&!options.allowNativeSmoothScroll&&(scrollOptions.behavior="instant"),this.to(options.focusScroll,item,scrollOptions)},Scroller.prototype.toCenter=function(item,scrollOptions){this.to("center",item,scrollOptions)},Scroller.prototype.scrollBackwards=function(){this.scrollBy(0-this.options.scrollBy)},Scroller.prototype.scrollForwards=function(){this.scrollBy(this.options.scrollBy)},Scroller.prototype.notifyResized=function(){onResize.call(this,[])},Scroller.prototype.destroy=function(){this.frameResizeObserver&&(this.frameResizeObserver.disconnect(),this.frameResizeObserver=null);var frame=this.frame,dragSourceElement=this.dragSourceElement,mouseWheelHandler=(_dom.default.removeEventListener(frame,"scroll",resetScrollTop,{passive:!0}),_dom.default.removeEventListener(frame,"scroll",resetScrollLeft,{passive:!0}),_dom.default.removeEventListener(frame,"scroll",resetScroll,{passive:!0}),this.mouseWheelHandler),mouseWheelHandler=(mouseWheelHandler&&_dom.default.removeEventListener(frame,wheelEvent,mouseWheelHandler,{passive:!0}),this.dragStartHandler),dragSourceElement=(mouseWheelHandler&&(_dom.default.removeEventListener(dragSourceElement,"touchstart",mouseWheelHandler,{passive:!0}),_dom.default.removeEventListener(dragSourceElement,"mousedown",mouseWheelHandler,{passive:!0}),_dom.default.removeEventListener(dragSourceElement,"pointerdown",mouseWheelHandler,{passive:!0})),this.focusHandler),mouseWheelHandler=(dragSourceElement&&_dom.default.removeEventListener(frame,"focus",dragSourceElement,{capture:!0,passive:!0}),this.boundOnFrameClick);return mouseWheelHandler&&(_dom.default.removeEventListener(frame,"click",mouseWheelHandler,{passive:!0,capture:!0}),this.boundOnFrameClick=null),this.removeScrollCacheListener(),this.mouseWheelHandler=null,this.dragSourceElement=null,this.initialized=null,this.nativeScrollElement=null,this.frame=null,this.options=null,this.slideeSize=null,this._pos=null,this.requiresReflow=null,this.frameSize=null,this.dragging=null,this.contentRects=null,this.dragHandler=null,this.dragStartHandler=null,this.onSourceClickFn=null,this.onScrollForCachingFn=null,this.resizeListeners=null,this._cachedScrollTop=null,this._cachedScrollLeft=null,this._cachedScrollHeight=null,this._cachedScrollWidth=null,this._cachedPadding=null,this._frameRect=null,this},Scroller.create=function(frame,options){frame=new Scroller(frame,options);return Promise.resolve(frame)},_exports.default=Scroller});