1 line
36 KiB
JavaScript
1 line
36 KiB
JavaScript
|
|
import layoutManager from"./../layoutmanager.js";import dom from"./../dom.js";import focusManager from"./../focusmanager.js";import appHeaderContent from"./../appheader/appheadercontent.js";import skinViewManager from"./../skinviewmanager.js";require(["scrollStyles"]);let StartLocation="start",CenterLocation="center",EndLocation="end",AdaptiveLocation="adaptive",preventScrollSupported=(()=>{let 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=(()=>{var deviceMemory,platform,cores=navigator.hardwareConcurrency||4;return!(cores<4||(2400<=(screen.width||screen.availWidth||0)||1400<=(screen.height||screen.availHeight||0))&&cores<6||(deviceMemory=navigator.deviceMemory||2)<2||!document.documentElement.animate||!CSS.supports("display","flow-root")||(platform=(navigator.platform||"").toLowerCase(),"android"===globalThis.appMode&&(cores<4||deviceMemory<2||platform.includes("armv7"))))})();function onSourceClick(event){var dragging=this.dragging;!dragging.locked&&0<Math.abs(dragging.delta)&&(dragging.locked=1,event.preventDefault(),event.stopPropagation(),(event.currentTarget||event.target).removeEventListener(event.type,this.onSourceClickFn))}function within(number,start,end){var min=start<end?start:end,start=end<start?start:end;return number<min?min:start<number?start:number}function onFrameClick(e){1===e.which&&(e=focusManager.focusableParent(e.target,!1))&&e!==document.activeElement&&focusManager.focus(e,{preventScroll:this.options.autoPreventScrollOnFocus})}function parsePxToInt(value){return!value||!(value=value.endsWith("px")?value.substring(0,value.length-2):value)||(value=parseInt(value),isNaN(value))?0:value}let PaddingInlineStartProp=CSS.supports("padding-inline-start","0")?"padding-inline-start":CSS.supports("-webkit-padding-start","0")?"-webkit-padding-start":"padding-left",PaddingInlineEndProp=CSS.supports("padding-inline-end","0")?"padding-inline-end":CSS.supports("-webkit-padding-end","0")?"-webkit-padding-end":"padding-right";function calcLengthToPx(lengthStr){var value=parseFloat(lengthStr),lengthStr=lengthStr.match(/[a-zA-Z%]+/);if(!lengthStr||0===lengthStr.length)return value;switch(lengthStr[0].toLowerCase()){case"px":return value;case"rem":return value*parseFloat(getComputedStyle(document.documentElement).fontSize);case"vw":return value/100*dom.getWindowSize().innerWidth;case"vh":return value/100*dom.getWindowSize().innerHeight}throw new Error("Unsupported unit for conversion: "+lengthStr)}function parseFocusScrollOffset(instance,offset){switch(offset){case"-padding-inline-start":return 0-instance.getPadding().inlineStart;case"-padding-top":return 0-instance.getPadding().top;default:return calcLengthToPx(offset)}}function getFocusScrollOffset(instance,horizontal,offset){if(!offset)return null;switch(typeof offset){case"number":return offset;case"string":return parseFocusScrollOffset(instance,offset);default:return null}}function onFocus(e){e=e.target;let preventScroll,instantScroll,itemBoundingClientRect,direction;var lastFocusInfo=focusManager.getLastFocusInfo(),lastFocusInfo=(lastFocusInfo.element===e&&(lastFocusInfo=lastFocusInfo.options)&&(preventScroll=lastFocusInfo.preventScroll,instantScroll=lastFocusInfo.instantScroll,direction=lastFocusInfo.direction,preventScrollSupported&&(itemBoundingClientRect=lastFocusInfo.itemBoundingClientRect),lastFocusInfo.itemBoundingClientRect=null),this.options);if(!(preventScroll=null==preventScroll&&lastFocusInfo.autoPreventScrollOnFocus?!layoutManager.tv:preventScroll)){let horizontal=lastFocusInfo.options,dualScroll=lastFocusInfo.dualScroll,skipWhenAnyVisibleX;if(dualScroll)switch(direction){case 0:case 1:horizontal=!0,dualScroll=!1;break;case 2:case 3:skipWhenAnyVisibleX=!0}e&&this.to(this.options.focusScroll,e,{useDelayedPromise:!1,offsetLeft:lastFocusInfo.focusScrollOffsetLeft,offsetTop:lastFocusInfo.
|