{"version":3,"sources":["webpack:///./node_modules/@better-scroll/core/dist/core.esm.js","webpack:///./node_modules/@better-scroll/pull-up/dist/pull-up.esm.js"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","__","this","constructor","create","__assign","assign","t","s","i","n","arguments","length","apply","__spreadArrays","il","r","k","a","j","jl","propertiesConfig","sourceKey","key","warn","msg","console","error","inBrowser","window","ua","navigator","userAgent","toLowerCase","isWeChatDevTools","test","isAndroid","indexOf","isIOSBadVersion","regex","matches","exec","parts","split","map","item","parseInt","supportsPassive","EventName","opts","defineProperty","get","addEventListener","e","getNow","performance","now","timing","navigationStart","Date","extend","target","source","isUndef","v","undefined","between","x","min","max","elementStyle","document","createElement","style","vendor","transformNames","value","_i","transformNames_1","obj","prefixStyle","charAt","toUpperCase","substr","getElement","el","querySelector","addEvent","type","fn","capture","useCapture","passive","removeEvent","removeEventListener","maybePrevent","cancelable","preventDefault","offset","left","top","offsetLeft","offsetTop","offsetParent","transform","transition","hasPerspective","hasTouch","hasTransition","transitionTimingFunction","transitionDuration","transitionDelay","transformOrigin","transitionEnd","transitionProperty","eventTypeMap","touchstart","touchmove","touchend","touchcancel","mousedown","mousemove","mouseup","getRect","SVGElement","rect","getBoundingClientRect","width","height","offsetWidth","offsetHeight","preventDefaultExceptionFn","exceptions","tagExceptionFn","tap","eventName","ev","createEvent","initEvent","pageX","pageY","dispatchEvent","click","event","eventSource","changedTouches","posSrc","screenX","screenY","clientX","clientY","bubbles","ctrlKey","shiftKey","altKey","metaKey","pressedKeysMap","MouseEvent","forwardedTouchEvent","_constructed","dblclick","ease","swipe","swipeBounce","bounce","DEFAULT_INTERVAL","windowCompat","noop$1","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","callback","setTimeout","interval","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","oCancelAnimationFrame","id","clearTimeout","noop","val","sharedPropertyDefinition","enumerable","configurable","set","getProperty","keys","lastKey","pop","setProperty","temp","propertiesProxy","EventEmitter","names","events","eventTypes","registerType","on","context","hasType","push","once","_this","magic","args","off","ret","count","splice","trigger","len","eventsCopy","event_1","forEach","destroy","types","isType","_","JSON","stringify","EventRegister","wrapper","addDOMEvents","removeDOMEvents","handleDOMEvents","eventOperation","name","handleEvent","eventType","some","handler","CustomOptions","OptionsConstructor","_super","startX","startY","scrollX","scrollY","freeScroll","directionLockThreshold","eventPassthrough","bottom","right","bounceTime","momentum","momentumLimitTime","momentumLimitDistance","swipeTime","swipeBounceTime","deceleration","flickLimitTime","flickLimitDistance","resizePolling","probeType","stopPropagation","preventDefaultException","tagName","tagException","HWCompositing","useTransition","bindToWrapper","bindToTarget","disableMouse","disableTouch","autoBlur","autoEndDistance","outOfBoundaryDampingFactor","specifiedIndexAsContent","quadrant","merge","options","resolveBounce","process","translateZ","bounceOptions","DEFAULT_BOUNCE","NEGATED_BOUNCE","ActionsHandler","hooks","_a","wrapperEvents","targetEvents","shouldRegisterTouch","shouldRegisterMouse","bind","start","move","end","wrapperEventRegister","targetEventRegister","beforeHandler","preventDefaultConditions","setInitiated","initiated","_eventType","button","beforeStart","point","touches","pointX","pointY","deltaX","deltaY","scrollLeft","documentElement","pageXOffset","body","scrollTop","pageYOffset","pX","pY","clientWidth","clientHeight","setContent","content","rebindDOMEvents","translaterMetaData","y","Translater","getComputedPosition","cssStyle","getComputedStyle","matrix","translate","transformStyle","transformFnName","transformFnArgUnit","transformFnArg","beforeTranslate","join","Base","translater","timer","endPoint","setPending","pending","setForceStopped","forceStopped","setCallStop","called","callStopWhenPending","stop","clearTimer","isValidPostion","startPoint","currentPos","prePos","computeDirection","endValue","startValue","delta","direction","directionX","directionY","Transition","startProbe","probe","pos","transitionTime","time","easing","timeFunction","easingFn","isRealtimeProbeType","_reflow","doStop","forceStop","stopFromTransition","callStop","Animation","animate","duration","startTime","destTime","step","newPoint","stopFromAnimation","createAnimater","element","animaterOptions","_b","_c","_d","Behavior","refresh","dist","setMovingDirection","setDirection","hasScroll","performDampingAlgorithm","movingDirection","dampingFactor","newPos","minScrollPos","maxScrollPos","bounces","momentumInfo","absDist","Math","abs","startPos","wrapperSize","destination","current","lowerMargin","upperMargin","distance","speed","momentumData","rate","round","updateDirection","absStartPos","size","position","isWrapperStatic","wrapperRect","contentRect","contentSize","relativeOffset","computeBoundary","resetState","resetStartPos","beforeComputeBoundary","boundary","scrollable","updatePosition","getCurrentPos","checkInBoundary","adjustPosition","inBoundary","ignoreHasScroll","updateStartPos","updateAbsStartPos","getAbsDist","PassthroughHandlers","DirectionMap","DirectionLockAction","reset","directionLocked","checkMovingDirection","absDistX","absDistY","computeDirectionLock","handleEventPassthrough","adjustDelta","handleMap","applyQuadrantTransformation","ScrollerActions","scrollBehaviorX","scrollBehaviorY","actionsHandler","animater","directionLockAction","enabled","bindActionsHandler","handleStart","transformateDeltaX","transformateDeltaY","transformateDeltaData","coordinateTransformation","handleMove","handleEnd","handleClick","timestamp","fingerMoved","contentMoved","beforeMove","checkMomentum","prevX","newX","prevY","newY","detectMovingDirection","positionChanged","contentNotMoved","scrollStart","dispatchScroll","scroll","endTime","beforeEnd","ensureIntegerPos","scrollEnd","ensuringInteger","minScrollPosX","maxScrollPosX","minScrollPosY","maxScrollPosY","ceil","floor","createActionsHandlerOptions","bsOptions","reduce","prev","cur","createBehaviorOptions","extraProp","bubbling","sourceEvent","targetEvent","isSamePoint","keys_1","MIN_SCROLL_DISTANCE","Scroller","resizeTimeout","actions","resizeHandler","resize","resizeRegister","registerTransitionEnd","init","bindTranslater","bindAnimater","bindActions","togglePointerEvents","transitionEndRegister","prevPos","updatePositions","resetPosition","beforeScrollStart","touchEnd","scrollCancel","checkClick","checkFlick","flick","flickMinMovingDistance","meta","swiper","momentumX","momentumY","scrollTo","preventClick","_dblclick","dblclickTrigged","lastClickTime","delay","children","pointerEvents","node","isBScrollContainer","contentChanged","beforeRefresh","wrapperOffset","scrollBy","extraTransform","minDistanceScroll","scrollToElement","offsetX","offsetY","targetEle","getOffset","getPos","wrapperPos","scrollBehavior","xInBoundary","yInBoundary","reflow","enable","disable","BScrollConstructor","plugins","valid","use","ctor","pluginName","installed","plugin","pluginsMap","applyOrder","scroller","eventBubbling","handleAutoBlur","proxy","applyPlugins","refreshWithoutReset","beforeInitialScrollTo","sort","applyOrderMap","aOrder","bOrder","activeElement","blur","eventRegister","createBScroll","bs","BScroll","sourcePrefix","propertiesMap","PULL_UP_HOOKS_NAME","PullUp","pulling","watching","handleBScroll","handleOptions","pullUpLoad","handleHooks","watch","userOptions","defaultOptions","threshold","hooksFn","registerHooks","finishPullUp","checkPullUp","unwatch","movingDirectionY","maxScrollY","openPullUp","config","closePullUp","autoPullUpLoad","NEGATIVE_VALUE","outOfBoundaryPos"],"mappings":"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","file":"js/chunk-5661a684.b8a52e70.js","sourcesContent":["/*!\n * better-scroll / core\n * (c) 2016-2023 ustbhuangyi\n * Released under the MIT License.\n */\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\n\nvar propertiesConfig = [\r\n {\r\n sourceKey: 'scroller.scrollBehaviorX.currentPos',\r\n key: 'x'\r\n },\r\n {\r\n sourceKey: 'scroller.scrollBehaviorY.currentPos',\r\n key: 'y'\r\n },\r\n {\r\n sourceKey: 'scroller.scrollBehaviorX.hasScroll',\r\n key: 'hasHorizontalScroll'\r\n },\r\n {\r\n sourceKey: 'scroller.scrollBehaviorY.hasScroll',\r\n key: 'hasVerticalScroll'\r\n },\r\n {\r\n sourceKey: 'scroller.scrollBehaviorX.contentSize',\r\n key: 'scrollerWidth'\r\n },\r\n {\r\n sourceKey: 'scroller.scrollBehaviorY.contentSize',\r\n key: 'scrollerHeight'\r\n },\r\n {\r\n sourceKey: 'scroller.scrollBehaviorX.maxScrollPos',\r\n key: 'maxScrollX'\r\n },\r\n {\r\n sourceKey: 'scroller.scrollBehaviorY.maxScrollPos',\r\n key: 'maxScrollY'\r\n },\r\n {\r\n sourceKey: 'scroller.scrollBehaviorX.minScrollPos',\r\n key: 'minScrollX'\r\n },\r\n {\r\n sourceKey: 'scroller.scrollBehaviorY.minScrollPos',\r\n key: 'minScrollY'\r\n },\r\n {\r\n sourceKey: 'scroller.scrollBehaviorX.movingDirection',\r\n key: 'movingDirectionX'\r\n },\r\n {\r\n sourceKey: 'scroller.scrollBehaviorY.movingDirection',\r\n key: 'movingDirectionY'\r\n },\r\n {\r\n sourceKey: 'scroller.scrollBehaviorX.direction',\r\n key: 'directionX'\r\n },\r\n {\r\n sourceKey: 'scroller.scrollBehaviorY.direction',\r\n key: 'directionY'\r\n },\r\n {\r\n sourceKey: 'scroller.actions.enabled',\r\n key: 'enabled'\r\n },\r\n {\r\n sourceKey: 'scroller.animater.pending',\r\n key: 'pending'\r\n },\r\n {\r\n sourceKey: 'scroller.animater.stop',\r\n key: 'stop'\r\n },\r\n {\r\n sourceKey: 'scroller.scrollTo',\r\n key: 'scrollTo'\r\n },\r\n {\r\n sourceKey: 'scroller.scrollBy',\r\n key: 'scrollBy'\r\n },\r\n {\r\n sourceKey: 'scroller.scrollToElement',\r\n key: 'scrollToElement'\r\n },\r\n {\r\n sourceKey: 'scroller.resetPosition',\r\n key: 'resetPosition'\r\n }\r\n];\n\nfunction warn(msg) {\r\n console.error(\"[BScroll warn]: \" + msg);\r\n}\n\n// ssr support\r\nvar inBrowser = typeof window !== 'undefined';\r\nvar ua = inBrowser && navigator.userAgent.toLowerCase();\r\nvar isWeChatDevTools = !!(ua && /wechatdevtools/.test(ua));\r\nvar isAndroid = ua && ua.indexOf('android') > 0;\r\n/* istanbul ignore next */\r\nvar isIOSBadVersion = (function () {\r\n if (typeof ua === 'string') {\r\n var regex = /os (\\d\\d?_\\d(_\\d)?)/;\r\n var matches = regex.exec(ua);\r\n if (!matches)\r\n return false;\r\n var parts = matches[1].split('_').map(function (item) {\r\n return parseInt(item, 10);\r\n });\r\n // ios version >= 13.4 issue 982\r\n return !!(parts[0] === 13 && parts[1] >= 4);\r\n }\r\n return false;\r\n})();\r\n/* istanbul ignore next */\r\nvar supportsPassive = false;\r\n/* istanbul ignore next */\r\nif (inBrowser) {\r\n var EventName = 'test-passive';\r\n try {\r\n var opts = {};\r\n Object.defineProperty(opts, 'passive', {\r\n get: function () {\r\n supportsPassive = true;\r\n },\r\n }); // https://github.com/facebook/flow/issues/285\r\n window.addEventListener(EventName, function () { }, opts);\r\n }\r\n catch (e) { }\r\n}\n\nfunction getNow() {\r\n return window.performance &&\r\n window.performance.now &&\r\n window.performance.timing\r\n ? window.performance.now() + window.performance.timing.navigationStart\r\n : +new Date();\r\n}\r\nvar extend = function (target, source) {\r\n for (var key in source) {\r\n target[key] = source[key];\r\n }\r\n return target;\r\n};\r\nfunction isUndef(v) {\r\n return v === undefined || v === null;\r\n}\r\nfunction between(x, min, max) {\r\n if (x < min) {\r\n return min;\r\n }\r\n if (x > max) {\r\n return max;\r\n }\r\n return x;\r\n}\n\nvar elementStyle = (inBrowser &&\r\n document.createElement('div').style);\r\nvar vendor = (function () {\r\n /* istanbul ignore if */\r\n if (!inBrowser) {\r\n return false;\r\n }\r\n var transformNames = [\r\n {\r\n key: 'standard',\r\n value: 'transform',\r\n },\r\n {\r\n key: 'webkit',\r\n value: 'webkitTransform',\r\n },\r\n {\r\n key: 'Moz',\r\n value: 'MozTransform',\r\n },\r\n {\r\n key: 'O',\r\n value: 'OTransform',\r\n },\r\n {\r\n key: 'ms',\r\n value: 'msTransform',\r\n },\r\n ];\r\n for (var _i = 0, transformNames_1 = transformNames; _i < transformNames_1.length; _i++) {\r\n var obj = transformNames_1[_i];\r\n if (elementStyle[obj.value] !== undefined) {\r\n return obj.key;\r\n }\r\n }\r\n /* istanbul ignore next */\r\n return false;\r\n})();\r\n/* istanbul ignore next */\r\nfunction prefixStyle(style) {\r\n if (vendor === false) {\r\n return style;\r\n }\r\n if (vendor === 'standard') {\r\n if (style === 'transitionEnd') {\r\n return 'transitionend';\r\n }\r\n return style;\r\n }\r\n return vendor + style.charAt(0).toUpperCase() + style.substr(1);\r\n}\r\nfunction getElement(el) {\r\n return (typeof el === 'string' ? document.querySelector(el) : el);\r\n}\r\nfunction addEvent(el, type, fn, capture) {\r\n var useCapture = supportsPassive\r\n ? {\r\n passive: false,\r\n capture: !!capture,\r\n }\r\n : !!capture;\r\n el.addEventListener(type, fn, useCapture);\r\n}\r\nfunction removeEvent(el, type, fn, capture) {\r\n el.removeEventListener(type, fn, {\r\n capture: !!capture,\r\n });\r\n}\r\nfunction maybePrevent(e) {\r\n if (e.cancelable) {\r\n e.preventDefault();\r\n }\r\n}\r\nfunction offset(el) {\r\n var left = 0;\r\n var top = 0;\r\n while (el) {\r\n left -= el.offsetLeft;\r\n top -= el.offsetTop;\r\n el = el.offsetParent;\r\n }\r\n return {\r\n left: left,\r\n top: top,\r\n };\r\n}\r\nvendor && vendor !== 'standard' ? '-' + vendor.toLowerCase() + '-' : '';\r\nvar transform = prefixStyle('transform');\r\nvar transition = prefixStyle('transition');\r\nvar hasPerspective = inBrowser && prefixStyle('perspective') in elementStyle;\r\n// fix issue #361\r\nvar hasTouch = inBrowser && ('ontouchstart' in window || isWeChatDevTools);\r\nvar hasTransition = inBrowser && transition in elementStyle;\r\nvar style = {\r\n transform: transform,\r\n transition: transition,\r\n transitionTimingFunction: prefixStyle('transitionTimingFunction'),\r\n transitionDuration: prefixStyle('transitionDuration'),\r\n transitionDelay: prefixStyle('transitionDelay'),\r\n transformOrigin: prefixStyle('transformOrigin'),\r\n transitionEnd: prefixStyle('transitionEnd'),\r\n transitionProperty: prefixStyle('transitionProperty'),\r\n};\r\nvar eventTypeMap = {\r\n touchstart: 1,\r\n touchmove: 1,\r\n touchend: 1,\r\n touchcancel: 1,\r\n mousedown: 2,\r\n mousemove: 2,\r\n mouseup: 2,\r\n};\r\nfunction getRect(el) {\r\n /* istanbul ignore if */\r\n if (el instanceof window.SVGElement) {\r\n var rect = el.getBoundingClientRect();\r\n return {\r\n top: rect.top,\r\n left: rect.left,\r\n width: rect.width,\r\n height: rect.height,\r\n };\r\n }\r\n else {\r\n return {\r\n top: el.offsetTop,\r\n left: el.offsetLeft,\r\n width: el.offsetWidth,\r\n height: el.offsetHeight,\r\n };\r\n }\r\n}\r\nfunction preventDefaultExceptionFn(el, exceptions) {\r\n for (var i in exceptions) {\r\n if (exceptions[i].test(el[i])) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nvar tagExceptionFn = preventDefaultExceptionFn;\r\nfunction tap(e, eventName) {\r\n var ev = document.createEvent('Event');\r\n ev.initEvent(eventName, true, true);\r\n ev.pageX = e.pageX;\r\n ev.pageY = e.pageY;\r\n e.target.dispatchEvent(ev);\r\n}\r\nfunction click(e, event) {\r\n if (event === void 0) { event = 'click'; }\r\n var eventSource;\r\n if (e.type === 'mouseup') {\r\n eventSource = e;\r\n }\r\n else if (e.type === 'touchend' || e.type === 'touchcancel') {\r\n eventSource = e.changedTouches[0];\r\n }\r\n var posSrc = {};\r\n if (eventSource) {\r\n posSrc.screenX = eventSource.screenX || 0;\r\n posSrc.screenY = eventSource.screenY || 0;\r\n posSrc.clientX = eventSource.clientX || 0;\r\n posSrc.clientY = eventSource.clientY || 0;\r\n }\r\n var ev;\r\n var bubbles = true;\r\n var cancelable = true;\r\n var ctrlKey = e.ctrlKey, shiftKey = e.shiftKey, altKey = e.altKey, metaKey = e.metaKey;\r\n var pressedKeysMap = {\r\n ctrlKey: ctrlKey,\r\n shiftKey: shiftKey,\r\n altKey: altKey,\r\n metaKey: metaKey,\r\n };\r\n if (typeof MouseEvent !== 'undefined') {\r\n try {\r\n ev = new MouseEvent(event, extend(__assign({ bubbles: bubbles,\r\n cancelable: cancelable }, pressedKeysMap), posSrc));\r\n }\r\n catch (e) {\r\n /* istanbul ignore next */\r\n createEvent();\r\n }\r\n }\r\n else {\r\n createEvent();\r\n }\r\n function createEvent() {\r\n ev = document.createEvent('Event');\r\n ev.initEvent(event, bubbles, cancelable);\r\n extend(ev, posSrc);\r\n }\r\n // forwardedTouchEvent set to true in case of the conflict with fastclick\r\n ev.forwardedTouchEvent = true;\r\n ev._constructed = true;\r\n e.target.dispatchEvent(ev);\r\n}\r\nfunction dblclick(e) {\r\n click(e, 'dblclick');\r\n}\n\nvar ease = {\r\n // easeOutQuint\r\n swipe: {\r\n style: 'cubic-bezier(0.23, 1, 0.32, 1)',\r\n fn: function (t) {\r\n return 1 + --t * t * t * t * t;\r\n }\r\n },\r\n // easeOutQuard\r\n swipeBounce: {\r\n style: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n fn: function (t) {\r\n return t * (2 - t);\r\n }\r\n },\r\n // easeOutQuart\r\n bounce: {\r\n style: 'cubic-bezier(0.165, 0.84, 0.44, 1)',\r\n fn: function (t) {\r\n return 1 - --t * t * t * t;\r\n }\r\n }\r\n};\n\nvar DEFAULT_INTERVAL = 1000 / 60;\r\nvar windowCompat = inBrowser && window;\r\n/* istanbul ignore next */\r\nfunction noop$1() { }\r\nvar requestAnimationFrame = (function () {\r\n /* istanbul ignore if */\r\n if (!inBrowser) {\r\n return noop$1;\r\n }\r\n return (windowCompat.requestAnimationFrame ||\r\n windowCompat.webkitRequestAnimationFrame ||\r\n windowCompat.mozRequestAnimationFrame ||\r\n windowCompat.oRequestAnimationFrame ||\r\n // if all else fails, use setTimeout\r\n function (callback) {\r\n return window.setTimeout(callback, callback.interval || DEFAULT_INTERVAL); // make interval as precise as possible.\r\n });\r\n})();\r\nvar cancelAnimationFrame = (function () {\r\n /* istanbul ignore if */\r\n if (!inBrowser) {\r\n return noop$1;\r\n }\r\n return (windowCompat.cancelAnimationFrame ||\r\n windowCompat.webkitCancelAnimationFrame ||\r\n windowCompat.mozCancelAnimationFrame ||\r\n windowCompat.oCancelAnimationFrame ||\r\n function (id) {\r\n window.clearTimeout(id);\r\n });\r\n})();\n\n/* istanbul ignore next */\r\nvar noop = function (val) { };\r\nvar sharedPropertyDefinition = {\r\n enumerable: true,\r\n configurable: true,\r\n get: noop,\r\n set: noop,\r\n};\r\nvar getProperty = function (obj, key) {\r\n var keys = key.split('.');\r\n for (var i = 0; i < keys.length - 1; i++) {\r\n obj = obj[keys[i]];\r\n if (typeof obj !== 'object' || !obj)\r\n return;\r\n }\r\n var lastKey = keys.pop();\r\n if (typeof obj[lastKey] === 'function') {\r\n return function () {\r\n return obj[lastKey].apply(obj, arguments);\r\n };\r\n }\r\n else {\r\n return obj[lastKey];\r\n }\r\n};\r\nvar setProperty = function (obj, key, value) {\r\n var keys = key.split('.');\r\n var temp;\r\n for (var i = 0; i < keys.length - 1; i++) {\r\n temp = keys[i];\r\n if (!obj[temp])\r\n obj[temp] = {};\r\n obj = obj[temp];\r\n }\r\n obj[keys.pop()] = value;\r\n};\r\nfunction propertiesProxy(target, sourceKey, key) {\r\n sharedPropertyDefinition.get = function proxyGetter() {\r\n return getProperty(this, sourceKey);\r\n };\r\n sharedPropertyDefinition.set = function proxySetter(val) {\r\n setProperty(this, sourceKey, val);\r\n };\r\n Object.defineProperty(target, key, sharedPropertyDefinition);\r\n}\n\nvar EventEmitter = /** @class */ (function () {\r\n function EventEmitter(names) {\r\n this.events = {};\r\n this.eventTypes = {};\r\n this.registerType(names);\r\n }\r\n EventEmitter.prototype.on = function (type, fn, context) {\r\n if (context === void 0) { context = this; }\r\n this.hasType(type);\r\n if (!this.events[type]) {\r\n this.events[type] = [];\r\n }\r\n this.events[type].push([fn, context]);\r\n return this;\r\n };\r\n EventEmitter.prototype.once = function (type, fn, context) {\r\n var _this = this;\r\n if (context === void 0) { context = this; }\r\n this.hasType(type);\r\n var magic = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n _this.off(type, magic);\r\n var ret = fn.apply(context, args);\r\n if (ret === true) {\r\n return ret;\r\n }\r\n };\r\n magic.fn = fn;\r\n this.on(type, magic);\r\n return this;\r\n };\r\n EventEmitter.prototype.off = function (type, fn) {\r\n if (!type && !fn) {\r\n this.events = {};\r\n return this;\r\n }\r\n if (type) {\r\n this.hasType(type);\r\n if (!fn) {\r\n this.events[type] = [];\r\n return this;\r\n }\r\n var events = this.events[type];\r\n if (!events) {\r\n return this;\r\n }\r\n var count = events.length;\r\n while (count--) {\r\n if (events[count][0] === fn ||\r\n (events[count][0] && events[count][0].fn === fn)) {\r\n events.splice(count, 1);\r\n }\r\n }\r\n return this;\r\n }\r\n };\r\n EventEmitter.prototype.trigger = function (type) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n this.hasType(type);\r\n var events = this.events[type];\r\n if (!events) {\r\n return;\r\n }\r\n var len = events.length;\r\n var eventsCopy = __spreadArrays(events);\r\n var ret;\r\n for (var i = 0; i < len; i++) {\r\n var event_1 = eventsCopy[i];\r\n var fn = event_1[0], context = event_1[1];\r\n if (fn) {\r\n ret = fn.apply(context, args);\r\n if (ret === true) {\r\n return ret;\r\n }\r\n }\r\n }\r\n };\r\n EventEmitter.prototype.registerType = function (names) {\r\n var _this = this;\r\n names.forEach(function (type) {\r\n _this.eventTypes[type] = type;\r\n });\r\n };\r\n EventEmitter.prototype.destroy = function () {\r\n this.events = {};\r\n this.eventTypes = {};\r\n };\r\n EventEmitter.prototype.hasType = function (type) {\r\n var types = this.eventTypes;\r\n var isType = types[type] === type;\r\n if (!isType) {\r\n warn(\"EventEmitter has used unknown event type: \\\"\" + type + \"\\\", should be oneof [\" +\r\n (\"\" + Object.keys(types).map(function (_) { return JSON.stringify(_); })) +\r\n \"]\");\r\n }\r\n };\r\n return EventEmitter;\r\n}());\r\nvar EventRegister = /** @class */ (function () {\r\n function EventRegister(wrapper, events) {\r\n this.wrapper = wrapper;\r\n this.events = events;\r\n this.addDOMEvents();\r\n }\r\n EventRegister.prototype.destroy = function () {\r\n this.removeDOMEvents();\r\n this.events = [];\r\n };\r\n EventRegister.prototype.addDOMEvents = function () {\r\n this.handleDOMEvents(addEvent);\r\n };\r\n EventRegister.prototype.removeDOMEvents = function () {\r\n this.handleDOMEvents(removeEvent);\r\n };\r\n EventRegister.prototype.handleDOMEvents = function (eventOperation) {\r\n var _this = this;\r\n var wrapper = this.wrapper;\r\n this.events.forEach(function (event) {\r\n eventOperation(wrapper, event.name, _this, !!event.capture);\r\n });\r\n };\r\n EventRegister.prototype.handleEvent = function (e) {\r\n var eventType = e.type;\r\n this.events.some(function (event) {\r\n if (event.name === eventType) {\r\n event.handler(e);\r\n return true;\r\n }\r\n return false;\r\n });\r\n };\r\n return EventRegister;\r\n}());\n\nvar CustomOptions = /** @class */ (function () {\r\n function CustomOptions() {\r\n }\r\n return CustomOptions;\r\n}());\r\nvar OptionsConstructor = /** @class */ (function (_super) {\r\n __extends(OptionsConstructor, _super);\r\n function OptionsConstructor() {\r\n var _this = _super.call(this) || this;\r\n _this.startX = 0;\r\n _this.startY = 0;\r\n _this.scrollX = false;\r\n _this.scrollY = true;\r\n _this.freeScroll = false;\r\n _this.directionLockThreshold = 0;\r\n _this.eventPassthrough = \"\" /* None */;\r\n _this.click = false;\r\n _this.dblclick = false;\r\n _this.tap = '';\r\n _this.bounce = {\r\n top: true,\r\n bottom: true,\r\n left: true,\r\n right: true,\r\n };\r\n _this.bounceTime = 800;\r\n _this.momentum = true;\r\n _this.momentumLimitTime = 300;\r\n _this.momentumLimitDistance = 15;\r\n _this.swipeTime = 2500;\r\n _this.swipeBounceTime = 500;\r\n _this.deceleration = 0.0015;\r\n _this.flickLimitTime = 200;\r\n _this.flickLimitDistance = 100;\r\n _this.resizePolling = 60;\r\n _this.probeType = 0 /* Default */;\r\n _this.stopPropagation = false;\r\n _this.preventDefault = true;\r\n _this.preventDefaultException = {\r\n tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT|AUDIO)$/,\r\n };\r\n _this.tagException = {\r\n tagName: /^TEXTAREA$/,\r\n };\r\n _this.HWCompositing = true;\r\n _this.useTransition = true;\r\n _this.bindToWrapper = false;\r\n _this.bindToTarget = false;\r\n _this.disableMouse = hasTouch;\r\n _this.disableTouch = !hasTouch;\r\n _this.autoBlur = true;\r\n _this.autoEndDistance = 5;\r\n _this.outOfBoundaryDampingFactor = 1 / 3;\r\n _this.specifiedIndexAsContent = 0;\r\n _this.quadrant = 1 /* First */;\r\n return _this;\r\n }\r\n OptionsConstructor.prototype.merge = function (options) {\r\n if (!options)\r\n return this;\r\n for (var key in options) {\r\n if (key === 'bounce') {\r\n this.bounce = this.resolveBounce(options[key]);\r\n continue;\r\n }\r\n this[key] = options[key];\r\n }\r\n return this;\r\n };\r\n OptionsConstructor.prototype.process = function () {\r\n this.translateZ =\r\n this.HWCompositing && hasPerspective ? ' translateZ(1px)' : '';\r\n this.useTransition = this.useTransition && hasTransition;\r\n this.preventDefault = !this.eventPassthrough && this.preventDefault;\r\n // If you want eventPassthrough I have to lock one of the axes\r\n this.scrollX =\r\n this.eventPassthrough === \"horizontal\" /* Horizontal */\r\n ? false\r\n : this.scrollX;\r\n this.scrollY =\r\n this.eventPassthrough === \"vertical\" /* Vertical */ ? false : this.scrollY;\r\n // With eventPassthrough we also need lockDirection mechanism\r\n this.freeScroll = this.freeScroll && !this.eventPassthrough;\r\n // force true when freeScroll is true\r\n this.scrollX = this.freeScroll ? true : this.scrollX;\r\n this.scrollY = this.freeScroll ? true : this.scrollY;\r\n this.directionLockThreshold = this.eventPassthrough\r\n ? 0\r\n : this.directionLockThreshold;\r\n return this;\r\n };\r\n OptionsConstructor.prototype.resolveBounce = function (bounceOptions) {\r\n var DEFAULT_BOUNCE = {\r\n top: true,\r\n right: true,\r\n bottom: true,\r\n left: true,\r\n };\r\n var NEGATED_BOUNCE = {\r\n top: false,\r\n right: false,\r\n bottom: false,\r\n left: false,\r\n };\r\n var ret;\r\n if (typeof bounceOptions === 'object') {\r\n ret = extend(DEFAULT_BOUNCE, bounceOptions);\r\n }\r\n else {\r\n ret = bounceOptions ? DEFAULT_BOUNCE : NEGATED_BOUNCE;\r\n }\r\n return ret;\r\n };\r\n return OptionsConstructor;\r\n}(CustomOptions));\n\nvar ActionsHandler = /** @class */ (function () {\r\n function ActionsHandler(wrapper, options) {\r\n this.wrapper = wrapper;\r\n this.options = options;\r\n this.hooks = new EventEmitter([\r\n 'beforeStart',\r\n 'start',\r\n 'move',\r\n 'end',\r\n 'click',\r\n ]);\r\n this.handleDOMEvents();\r\n }\r\n ActionsHandler.prototype.handleDOMEvents = function () {\r\n var _a = this.options, bindToWrapper = _a.bindToWrapper, disableMouse = _a.disableMouse, disableTouch = _a.disableTouch, click = _a.click;\r\n var wrapper = this.wrapper;\r\n var target = bindToWrapper ? wrapper : window;\r\n var wrapperEvents = [];\r\n var targetEvents = [];\r\n var shouldRegisterTouch = !disableTouch;\r\n var shouldRegisterMouse = !disableMouse;\r\n if (click) {\r\n wrapperEvents.push({\r\n name: 'click',\r\n handler: this.click.bind(this),\r\n capture: true,\r\n });\r\n }\r\n if (shouldRegisterTouch) {\r\n wrapperEvents.push({\r\n name: 'touchstart',\r\n handler: this.start.bind(this),\r\n });\r\n targetEvents.push({\r\n name: 'touchmove',\r\n handler: this.move.bind(this),\r\n }, {\r\n name: 'touchend',\r\n handler: this.end.bind(this),\r\n }, {\r\n name: 'touchcancel',\r\n handler: this.end.bind(this),\r\n });\r\n }\r\n if (shouldRegisterMouse) {\r\n wrapperEvents.push({\r\n name: 'mousedown',\r\n handler: this.start.bind(this),\r\n });\r\n targetEvents.push({\r\n name: 'mousemove',\r\n handler: this.move.bind(this),\r\n }, {\r\n name: 'mouseup',\r\n handler: this.end.bind(this),\r\n });\r\n }\r\n this.wrapperEventRegister = new EventRegister(wrapper, wrapperEvents);\r\n this.targetEventRegister = new EventRegister(target, targetEvents);\r\n };\r\n ActionsHandler.prototype.beforeHandler = function (e, type) {\r\n var _a = this.options, preventDefault = _a.preventDefault, stopPropagation = _a.stopPropagation, preventDefaultException = _a.preventDefaultException;\r\n var preventDefaultConditions = {\r\n start: function () {\r\n return (preventDefault &&\r\n !preventDefaultExceptionFn(e.target, preventDefaultException));\r\n },\r\n end: function () {\r\n return (preventDefault &&\r\n !preventDefaultExceptionFn(e.target, preventDefaultException));\r\n },\r\n move: function () {\r\n return preventDefault;\r\n },\r\n };\r\n if (preventDefaultConditions[type]()) {\r\n e.preventDefault();\r\n }\r\n if (stopPropagation) {\r\n e.stopPropagation();\r\n }\r\n };\r\n ActionsHandler.prototype.setInitiated = function (type) {\r\n if (type === void 0) { type = 0; }\r\n this.initiated = type;\r\n };\r\n ActionsHandler.prototype.start = function (e) {\r\n var _eventType = eventTypeMap[e.type];\r\n if (this.initiated && this.initiated !== _eventType) {\r\n return;\r\n }\r\n this.setInitiated(_eventType);\r\n // if textarea or other html tags in options.tagException is manipulated\r\n // do not make bs scroll\r\n if (tagExceptionFn(e.target, this.options.tagException)) {\r\n this.setInitiated();\r\n return;\r\n }\r\n // only allow mouse left button\r\n if (_eventType === 2 /* Mouse */ && e.button !== 0 /* Left */)\r\n return;\r\n if (this.hooks.trigger(this.hooks.eventTypes.beforeStart, e)) {\r\n return;\r\n }\r\n this.beforeHandler(e, 'start');\r\n var point = (e.touches ? e.touches[0] : e);\r\n this.pointX = point.pageX;\r\n this.pointY = point.pageY;\r\n this.hooks.trigger(this.hooks.eventTypes.start, e);\r\n };\r\n ActionsHandler.prototype.move = function (e) {\r\n if (eventTypeMap[e.type] !== this.initiated) {\r\n return;\r\n }\r\n this.beforeHandler(e, 'move');\r\n var point = (e.touches ? e.touches[0] : e);\r\n var deltaX = point.pageX - this.pointX;\r\n var deltaY = point.pageY - this.pointY;\r\n this.pointX = point.pageX;\r\n this.pointY = point.pageY;\r\n if (this.hooks.trigger(this.hooks.eventTypes.move, {\r\n deltaX: deltaX,\r\n deltaY: deltaY,\r\n e: e,\r\n })) {\r\n return;\r\n }\r\n // auto end when out of viewport\r\n var scrollLeft = document.documentElement.scrollLeft ||\r\n window.pageXOffset ||\r\n document.body.scrollLeft;\r\n var scrollTop = document.documentElement.scrollTop ||\r\n window.pageYOffset ||\r\n document.body.scrollTop;\r\n var pX = this.pointX - scrollLeft;\r\n var pY = this.pointY - scrollTop;\r\n var autoEndDistance = this.options.autoEndDistance;\r\n if (pX > document.documentElement.clientWidth - autoEndDistance ||\r\n pY > document.documentElement.clientHeight - autoEndDistance ||\r\n pX < autoEndDistance ||\r\n pY < autoEndDistance) {\r\n this.end(e);\r\n }\r\n };\r\n ActionsHandler.prototype.end = function (e) {\r\n if (eventTypeMap[e.type] !== this.initiated) {\r\n return;\r\n }\r\n this.setInitiated();\r\n this.beforeHandler(e, 'end');\r\n this.hooks.trigger(this.hooks.eventTypes.end, e);\r\n };\r\n ActionsHandler.prototype.click = function (e) {\r\n this.hooks.trigger(this.hooks.eventTypes.click, e);\r\n };\r\n ActionsHandler.prototype.setContent = function (content) {\r\n if (content !== this.wrapper) {\r\n this.wrapper = content;\r\n this.rebindDOMEvents();\r\n }\r\n };\r\n ActionsHandler.prototype.rebindDOMEvents = function () {\r\n this.wrapperEventRegister.destroy();\r\n this.targetEventRegister.destroy();\r\n this.handleDOMEvents();\r\n };\r\n ActionsHandler.prototype.destroy = function () {\r\n this.wrapperEventRegister.destroy();\r\n this.targetEventRegister.destroy();\r\n this.hooks.destroy();\r\n };\r\n return ActionsHandler;\r\n}());\n\nvar translaterMetaData = {\r\n x: ['translateX', 'px'],\r\n y: ['translateY', 'px'],\r\n};\r\nvar Translater = /** @class */ (function () {\r\n function Translater(content) {\r\n this.setContent(content);\r\n this.hooks = new EventEmitter(['beforeTranslate', 'translate']);\r\n }\r\n Translater.prototype.getComputedPosition = function () {\r\n var cssStyle = window.getComputedStyle(this.content, null);\r\n var matrix = cssStyle[style.transform].split(')')[0].split(', ');\r\n var x = +(matrix[12] || matrix[4]) || 0;\r\n var y = +(matrix[13] || matrix[5]) || 0;\r\n return {\r\n x: x,\r\n y: y,\r\n };\r\n };\r\n Translater.prototype.translate = function (point) {\r\n var transformStyle = [];\r\n Object.keys(point).forEach(function (key) {\r\n if (!translaterMetaData[key]) {\r\n return;\r\n }\r\n var transformFnName = translaterMetaData[key][0];\r\n if (transformFnName) {\r\n var transformFnArgUnit = translaterMetaData[key][1];\r\n var transformFnArg = point[key];\r\n transformStyle.push(transformFnName + \"(\" + transformFnArg + transformFnArgUnit + \")\");\r\n }\r\n });\r\n this.hooks.trigger(this.hooks.eventTypes.beforeTranslate, transformStyle, point);\r\n this.style[style.transform] = transformStyle.join(' ');\r\n this.hooks.trigger(this.hooks.eventTypes.translate, point);\r\n };\r\n Translater.prototype.setContent = function (content) {\r\n if (this.content !== content) {\r\n this.content = content;\r\n this.style = content.style;\r\n }\r\n };\r\n Translater.prototype.destroy = function () {\r\n this.hooks.destroy();\r\n };\r\n return Translater;\r\n}());\n\nvar Base = /** @class */ (function () {\r\n function Base(content, translater, options) {\r\n this.translater = translater;\r\n this.options = options;\r\n this.timer = 0;\r\n this.hooks = new EventEmitter([\r\n 'move',\r\n 'end',\r\n 'beforeForceStop',\r\n 'forceStop',\r\n 'callStop',\r\n 'time',\r\n 'timeFunction',\r\n ]);\r\n this.setContent(content);\r\n }\r\n Base.prototype.translate = function (endPoint) {\r\n this.translater.translate(endPoint);\r\n };\r\n Base.prototype.setPending = function (pending) {\r\n this.pending = pending;\r\n };\r\n Base.prototype.setForceStopped = function (forceStopped) {\r\n this.forceStopped = forceStopped;\r\n };\r\n Base.prototype.setCallStop = function (called) {\r\n this.callStopWhenPending = called;\r\n };\r\n Base.prototype.setContent = function (content) {\r\n if (this.content !== content) {\r\n this.content = content;\r\n this.style = content.style;\r\n this.stop();\r\n }\r\n };\r\n Base.prototype.clearTimer = function () {\r\n if (this.timer) {\r\n cancelAnimationFrame(this.timer);\r\n this.timer = 0;\r\n }\r\n };\r\n Base.prototype.destroy = function () {\r\n this.hooks.destroy();\r\n cancelAnimationFrame(this.timer);\r\n };\r\n return Base;\r\n}());\n\n// iOS 13.6 - 14.x, window.getComputedStyle sometimes will get wrong transform value\r\n// when bs use transition mode\r\n// eg: translateY -100px -> -200px, when the last frame which is about to scroll to -200px\r\n// window.getComputedStyle(this.content) will calculate transformY to be -100px(startPoint)\r\n// it is weird\r\n// so we should validate position caculated by 'window.getComputedStyle'\r\nvar isValidPostion = function (startPoint, endPoint, currentPos, prePos) {\r\n var computeDirection = function (endValue, startValue) {\r\n var delta = endValue - startValue;\r\n var direction = delta > 0\r\n ? -1 /* Negative */\r\n : delta < 0\r\n ? 1 /* Positive */\r\n : 0 /* Default */;\r\n return direction;\r\n };\r\n var directionX = computeDirection(endPoint.x, startPoint.x);\r\n var directionY = computeDirection(endPoint.y, startPoint.y);\r\n var deltaX = currentPos.x - prePos.x;\r\n var deltaY = currentPos.y - prePos.y;\r\n return directionX * deltaX <= 0 && directionY * deltaY <= 0;\r\n};\n\nvar Transition = /** @class */ (function (_super) {\r\n __extends(Transition, _super);\r\n function Transition() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Transition.prototype.startProbe = function (startPoint, endPoint) {\r\n var _this = this;\r\n var prePos = startPoint;\r\n var probe = function () {\r\n var pos = _this.translater.getComputedPosition();\r\n if (isValidPostion(startPoint, endPoint, pos, prePos)) {\r\n _this.hooks.trigger(_this.hooks.eventTypes.move, pos);\r\n }\r\n // call bs.stop() should not dispatch end hook again.\r\n // forceStop hook will do this.\r\n /* istanbul ignore if */\r\n if (!_this.pending) {\r\n if (_this.callStopWhenPending) {\r\n _this.callStopWhenPending = false;\r\n }\r\n else {\r\n // transition ends should dispatch end hook.\r\n _this.hooks.trigger(_this.hooks.eventTypes.end, pos);\r\n }\r\n }\r\n prePos = pos;\r\n if (_this.pending) {\r\n _this.timer = requestAnimationFrame(probe);\r\n }\r\n };\r\n // when manually call bs.stop(), then bs.scrollTo()\r\n // we should reset callStopWhenPending to dispatch end hook\r\n if (this.callStopWhenPending) {\r\n this.setCallStop(false);\r\n }\r\n cancelAnimationFrame(this.timer);\r\n probe();\r\n };\r\n Transition.prototype.transitionTime = function (time) {\r\n if (time === void 0) { time = 0; }\r\n this.style[style.transitionDuration] = time + 'ms';\r\n this.hooks.trigger(this.hooks.eventTypes.time, time);\r\n };\r\n Transition.prototype.transitionTimingFunction = function (easing) {\r\n this.style[style.transitionTimingFunction] = easing;\r\n this.hooks.trigger(this.hooks.eventTypes.timeFunction, easing);\r\n };\r\n Transition.prototype.transitionProperty = function () {\r\n this.style[style.transitionProperty] = style.transform;\r\n };\r\n Transition.prototype.move = function (startPoint, endPoint, time, easingFn) {\r\n this.setPending(time > 0);\r\n this.transitionTimingFunction(easingFn);\r\n this.transitionProperty();\r\n this.transitionTime(time);\r\n this.translate(endPoint);\r\n var isRealtimeProbeType = this.options.probeType === 3 /* Realtime */;\r\n if (time && isRealtimeProbeType) {\r\n this.startProbe(startPoint, endPoint);\r\n }\r\n // if we change content's transformY in a tick\r\n // such as: 0 -> 50px -> 0\r\n // transitionend will not be triggered\r\n // so we forceupdate by reflow\r\n if (!time) {\r\n this._reflow = this.content.offsetHeight;\r\n if (isRealtimeProbeType) {\r\n this.hooks.trigger(this.hooks.eventTypes.move, endPoint);\r\n }\r\n this.hooks.trigger(this.hooks.eventTypes.end, endPoint);\r\n }\r\n };\r\n Transition.prototype.doStop = function () {\r\n var pending = this.pending;\r\n this.setForceStopped(false);\r\n this.setCallStop(false);\r\n // still in transition\r\n if (pending) {\r\n this.setPending(false);\r\n cancelAnimationFrame(this.timer);\r\n var _a = this.translater.getComputedPosition(), x = _a.x, y = _a.y;\r\n this.transitionTime();\r\n this.translate({ x: x, y: y });\r\n this.setForceStopped(true);\r\n this.setCallStop(true);\r\n this.hooks.trigger(this.hooks.eventTypes.forceStop, { x: x, y: y });\r\n }\r\n return pending;\r\n };\r\n Transition.prototype.stop = function () {\r\n var stopFromTransition = this.doStop();\r\n if (stopFromTransition) {\r\n this.hooks.trigger(this.hooks.eventTypes.callStop);\r\n }\r\n };\r\n return Transition;\r\n}(Base));\n\nvar Animation = /** @class */ (function (_super) {\r\n __extends(Animation, _super);\r\n function Animation() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Animation.prototype.move = function (startPoint, endPoint, time, easingFn) {\r\n // time is 0\r\n if (!time) {\r\n this.translate(endPoint);\r\n if (this.options.probeType === 3 /* Realtime */) {\r\n this.hooks.trigger(this.hooks.eventTypes.move, endPoint);\r\n }\r\n this.hooks.trigger(this.hooks.eventTypes.end, endPoint);\r\n return;\r\n }\r\n this.animate(startPoint, endPoint, time, easingFn);\r\n };\r\n Animation.prototype.animate = function (startPoint, endPoint, duration, easingFn) {\r\n var _this = this;\r\n var startTime = getNow();\r\n var destTime = startTime + duration;\r\n var isRealtimeProbeType = this.options.probeType === 3 /* Realtime */;\r\n var step = function () {\r\n var now = getNow();\r\n // js animation end\r\n if (now >= destTime) {\r\n _this.translate(endPoint);\r\n if (isRealtimeProbeType) {\r\n _this.hooks.trigger(_this.hooks.eventTypes.move, endPoint);\r\n }\r\n _this.hooks.trigger(_this.hooks.eventTypes.end, endPoint);\r\n return;\r\n }\r\n now = (now - startTime) / duration;\r\n var easing = easingFn(now);\r\n var newPoint = {};\r\n Object.keys(endPoint).forEach(function (key) {\r\n var startValue = startPoint[key];\r\n var endValue = endPoint[key];\r\n newPoint[key] = (endValue - startValue) * easing + startValue;\r\n });\r\n _this.translate(newPoint);\r\n if (isRealtimeProbeType) {\r\n _this.hooks.trigger(_this.hooks.eventTypes.move, newPoint);\r\n }\r\n if (_this.pending) {\r\n _this.timer = requestAnimationFrame(step);\r\n }\r\n // call bs.stop() should not dispatch end hook again.\r\n // forceStop hook will do this.\r\n /* istanbul ignore if */\r\n if (!_this.pending) {\r\n if (_this.callStopWhenPending) {\r\n _this.callStopWhenPending = false;\r\n }\r\n else {\r\n // raf ends should dispatch end hook.\r\n _this.hooks.trigger(_this.hooks.eventTypes.end, endPoint);\r\n }\r\n }\r\n };\r\n this.setPending(true);\r\n // when manually call bs.stop(), then bs.scrollTo()\r\n // we should reset callStopWhenPending to dispatch end hook\r\n if (this.callStopWhenPending) {\r\n this.setCallStop(false);\r\n }\r\n cancelAnimationFrame(this.timer);\r\n step();\r\n };\r\n Animation.prototype.doStop = function () {\r\n var pending = this.pending;\r\n this.setForceStopped(false);\r\n this.setCallStop(false);\r\n // still in requestFrameAnimation\r\n if (pending) {\r\n this.setPending(false);\r\n cancelAnimationFrame(this.timer);\r\n var pos = this.translater.getComputedPosition();\r\n this.setForceStopped(true);\r\n this.setCallStop(true);\r\n this.hooks.trigger(this.hooks.eventTypes.forceStop, pos);\r\n }\r\n return pending;\r\n };\r\n Animation.prototype.stop = function () {\r\n var stopFromAnimation = this.doStop();\r\n if (stopFromAnimation) {\r\n this.hooks.trigger(this.hooks.eventTypes.callStop);\r\n }\r\n };\r\n return Animation;\r\n}(Base));\n\nfunction createAnimater(element, translater, options) {\r\n var useTransition = options.useTransition;\r\n var animaterOptions = {};\r\n Object.defineProperty(animaterOptions, 'probeType', {\r\n enumerable: true,\r\n configurable: false,\r\n get: function () {\r\n return options.probeType;\r\n },\r\n });\r\n if (useTransition) {\r\n return new Transition(element, translater, animaterOptions);\r\n }\r\n else {\r\n return new Animation(element, translater, animaterOptions);\r\n }\r\n}\n\nvar Behavior = /** @class */ (function () {\r\n function Behavior(wrapper, content, options) {\r\n this.wrapper = wrapper;\r\n this.options = options;\r\n this.hooks = new EventEmitter([\r\n 'beforeComputeBoundary',\r\n 'computeBoundary',\r\n 'momentum',\r\n 'end',\r\n 'ignoreHasScroll'\r\n ]);\r\n this.refresh(content);\r\n }\r\n Behavior.prototype.start = function () {\r\n this.dist = 0;\r\n this.setMovingDirection(0 /* Default */);\r\n this.setDirection(0 /* Default */);\r\n };\r\n Behavior.prototype.move = function (delta) {\r\n delta = this.hasScroll ? delta : 0;\r\n this.setMovingDirection(delta);\r\n return this.performDampingAlgorithm(delta, this.options.outOfBoundaryDampingFactor);\r\n };\r\n Behavior.prototype.setMovingDirection = function (delta) {\r\n this.movingDirection =\r\n delta > 0\r\n ? -1 /* Negative */\r\n : delta < 0\r\n ? 1 /* Positive */\r\n : 0 /* Default */;\r\n };\r\n Behavior.prototype.setDirection = function (delta) {\r\n this.direction =\r\n delta > 0\r\n ? -1 /* Negative */\r\n : delta < 0\r\n ? 1 /* Positive */\r\n : 0 /* Default */;\r\n };\r\n Behavior.prototype.performDampingAlgorithm = function (delta, dampingFactor) {\r\n var newPos = this.currentPos + delta;\r\n // Slow down or stop if outside of the boundaries\r\n if (newPos > this.minScrollPos || newPos < this.maxScrollPos) {\r\n if ((newPos > this.minScrollPos && this.options.bounces[0]) ||\r\n (newPos < this.maxScrollPos && this.options.bounces[1])) {\r\n newPos = this.currentPos + delta * dampingFactor;\r\n }\r\n else {\r\n newPos =\r\n newPos > this.minScrollPos ? this.minScrollPos : this.maxScrollPos;\r\n }\r\n }\r\n return newPos;\r\n };\r\n Behavior.prototype.end = function (duration) {\r\n var momentumInfo = {\r\n duration: 0\r\n };\r\n var absDist = Math.abs(this.currentPos - this.startPos);\r\n // start momentum animation if needed\r\n if (this.options.momentum &&\r\n duration < this.options.momentumLimitTime &&\r\n absDist > this.options.momentumLimitDistance) {\r\n var wrapperSize = (this.direction === -1 /* Negative */ && this.options.bounces[0]) ||\r\n (this.direction === 1 /* Positive */ && this.options.bounces[1])\r\n ? this.wrapperSize\r\n : 0;\r\n momentumInfo = this.hasScroll\r\n ? this.momentum(this.currentPos, this.startPos, duration, this.maxScrollPos, this.minScrollPos, wrapperSize, this.options)\r\n : { destination: this.currentPos, duration: 0 };\r\n }\r\n else {\r\n this.hooks.trigger(this.hooks.eventTypes.end, momentumInfo);\r\n }\r\n return momentumInfo;\r\n };\r\n Behavior.prototype.momentum = function (current, start, time, lowerMargin, upperMargin, wrapperSize, options) {\r\n if (options === void 0) { options = this.options; }\r\n var distance = current - start;\r\n var speed = Math.abs(distance) / time;\r\n var deceleration = options.deceleration, swipeBounceTime = options.swipeBounceTime, swipeTime = options.swipeTime;\r\n var duration = Math.min(swipeTime, (speed * 2) / deceleration);\r\n var momentumData = {\r\n destination: current + ((speed * speed) / deceleration) * (distance < 0 ? -1 : 1),\r\n duration: duration,\r\n rate: 15\r\n };\r\n this.hooks.trigger(this.hooks.eventTypes.momentum, momentumData, distance);\r\n if (momentumData.destination < lowerMargin) {\r\n momentumData.destination = wrapperSize\r\n ? Math.max(lowerMargin - wrapperSize / 4, lowerMargin - (wrapperSize / momentumData.rate) * speed)\r\n : lowerMargin;\r\n momentumData.duration = swipeBounceTime;\r\n }\r\n else if (momentumData.destination > upperMargin) {\r\n momentumData.destination = wrapperSize\r\n ? Math.min(upperMargin + wrapperSize / 4, upperMargin + (wrapperSize / momentumData.rate) * speed)\r\n : upperMargin;\r\n momentumData.duration = swipeBounceTime;\r\n }\r\n momentumData.destination = Math.round(momentumData.destination);\r\n return momentumData;\r\n };\r\n Behavior.prototype.updateDirection = function () {\r\n var absDist = this.currentPos - this.absStartPos;\r\n this.setDirection(absDist);\r\n };\r\n Behavior.prototype.refresh = function (content) {\r\n var _a = this.options.rect, size = _a.size, position = _a.position;\r\n var isWrapperStatic = window.getComputedStyle(this.wrapper, null).position === 'static';\r\n // Force reflow\r\n var wrapperRect = getRect(this.wrapper);\r\n // use client is more fair than offset\r\n this.wrapperSize = this.wrapper[size === 'width' ? 'clientWidth' : 'clientHeight'];\r\n this.setContent(content);\r\n var contentRect = getRect(this.content);\r\n this.contentSize = contentRect[size];\r\n this.relativeOffset = contentRect[position];\r\n /* istanbul ignore if */\r\n if (isWrapperStatic) {\r\n this.relativeOffset -= wrapperRect[position];\r\n }\r\n this.computeBoundary();\r\n this.setDirection(0 /* Default */);\r\n };\r\n Behavior.prototype.setContent = function (content) {\r\n if (content !== this.content) {\r\n this.content = content;\r\n this.resetState();\r\n }\r\n };\r\n Behavior.prototype.resetState = function () {\r\n this.currentPos = 0;\r\n this.startPos = 0;\r\n this.dist = 0;\r\n this.setDirection(0 /* Default */);\r\n this.setMovingDirection(0 /* Default */);\r\n this.resetStartPos();\r\n };\r\n Behavior.prototype.computeBoundary = function () {\r\n this.hooks.trigger(this.hooks.eventTypes.beforeComputeBoundary);\r\n var boundary = {\r\n minScrollPos: 0,\r\n maxScrollPos: this.wrapperSize - this.contentSize\r\n };\r\n if (boundary.maxScrollPos < 0) {\r\n boundary.maxScrollPos -= this.relativeOffset;\r\n if (this.options.specifiedIndexAsContent === 0) {\r\n boundary.minScrollPos = -this.relativeOffset;\r\n }\r\n }\r\n this.hooks.trigger(this.hooks.eventTypes.computeBoundary, boundary);\r\n this.minScrollPos = boundary.minScrollPos;\r\n this.maxScrollPos = boundary.maxScrollPos;\r\n this.hasScroll =\r\n this.options.scrollable && this.maxScrollPos < this.minScrollPos;\r\n if (!this.hasScroll && this.minScrollPos < this.maxScrollPos) {\r\n this.maxScrollPos = this.minScrollPos;\r\n this.contentSize = this.wrapperSize;\r\n }\r\n };\r\n Behavior.prototype.updatePosition = function (pos) {\r\n this.currentPos = pos;\r\n };\r\n Behavior.prototype.getCurrentPos = function () {\r\n return this.currentPos;\r\n };\r\n Behavior.prototype.checkInBoundary = function () {\r\n var position = this.adjustPosition(this.currentPos);\r\n var inBoundary = position === this.getCurrentPos();\r\n return {\r\n position: position,\r\n inBoundary: inBoundary\r\n };\r\n };\r\n // adjust position when out of boundary\r\n Behavior.prototype.adjustPosition = function (pos) {\r\n if (!this.hasScroll &&\r\n !this.hooks.trigger(this.hooks.eventTypes.ignoreHasScroll)) {\r\n pos = this.minScrollPos;\r\n }\r\n else if (pos > this.minScrollPos) {\r\n pos = this.minScrollPos;\r\n }\r\n else if (pos < this.maxScrollPos) {\r\n pos = this.maxScrollPos;\r\n }\r\n return pos;\r\n };\r\n Behavior.prototype.updateStartPos = function () {\r\n this.startPos = this.currentPos;\r\n };\r\n Behavior.prototype.updateAbsStartPos = function () {\r\n this.absStartPos = this.currentPos;\r\n };\r\n Behavior.prototype.resetStartPos = function () {\r\n this.updateStartPos();\r\n this.updateAbsStartPos();\r\n };\r\n Behavior.prototype.getAbsDist = function (delta) {\r\n this.dist += delta;\r\n return Math.abs(this.dist);\r\n };\r\n Behavior.prototype.destroy = function () {\r\n this.hooks.destroy();\r\n };\r\n return Behavior;\r\n}());\n\nvar _a, _b, _c, _d;\r\nvar PassthroughHandlers = (_a = {},\r\n _a[\"yes\" /* Yes */] = function (e) {\r\n return true;\r\n },\r\n _a[\"no\" /* No */] = function (e) {\r\n maybePrevent(e);\r\n return false;\r\n },\r\n _a);\r\nvar DirectionMap = (_b = {},\r\n _b[\"horizontal\" /* Horizontal */] = (_c = {},\r\n _c[\"yes\" /* Yes */] = \"horizontal\" /* Horizontal */,\r\n _c[\"no\" /* No */] = \"vertical\" /* Vertical */,\r\n _c),\r\n _b[\"vertical\" /* Vertical */] = (_d = {},\r\n _d[\"yes\" /* Yes */] = \"vertical\" /* Vertical */,\r\n _d[\"no\" /* No */] = \"horizontal\" /* Horizontal */,\r\n _d),\r\n _b);\r\nvar DirectionLockAction = /** @class */ (function () {\r\n function DirectionLockAction(directionLockThreshold, freeScroll, eventPassthrough) {\r\n this.directionLockThreshold = directionLockThreshold;\r\n this.freeScroll = freeScroll;\r\n this.eventPassthrough = eventPassthrough;\r\n this.reset();\r\n }\r\n DirectionLockAction.prototype.reset = function () {\r\n this.directionLocked = \"\" /* Default */;\r\n };\r\n DirectionLockAction.prototype.checkMovingDirection = function (absDistX, absDistY, e) {\r\n this.computeDirectionLock(absDistX, absDistY);\r\n return this.handleEventPassthrough(e);\r\n };\r\n DirectionLockAction.prototype.adjustDelta = function (deltaX, deltaY) {\r\n if (this.directionLocked === \"horizontal\" /* Horizontal */) {\r\n deltaY = 0;\r\n }\r\n else if (this.directionLocked === \"vertical\" /* Vertical */) {\r\n deltaX = 0;\r\n }\r\n return {\r\n deltaX: deltaX,\r\n deltaY: deltaY,\r\n };\r\n };\r\n DirectionLockAction.prototype.computeDirectionLock = function (absDistX, absDistY) {\r\n // If you are scrolling in one direction, lock it\r\n if (this.directionLocked === \"\" /* Default */ && !this.freeScroll) {\r\n if (absDistX > absDistY + this.directionLockThreshold) {\r\n this.directionLocked = \"horizontal\" /* Horizontal */; // lock horizontally\r\n }\r\n else if (absDistY >= absDistX + this.directionLockThreshold) {\r\n this.directionLocked = \"vertical\" /* Vertical */; // lock vertically\r\n }\r\n else {\r\n this.directionLocked = \"none\" /* None */; // no lock\r\n }\r\n }\r\n };\r\n DirectionLockAction.prototype.handleEventPassthrough = function (e) {\r\n var handleMap = DirectionMap[this.directionLocked];\r\n if (handleMap) {\r\n if (this.eventPassthrough === handleMap[\"yes\" /* Yes */]) {\r\n return PassthroughHandlers[\"yes\" /* Yes */](e);\r\n }\r\n else if (this.eventPassthrough === handleMap[\"no\" /* No */]) {\r\n return PassthroughHandlers[\"no\" /* No */](e);\r\n }\r\n }\r\n return false;\r\n };\r\n return DirectionLockAction;\r\n}());\n\nvar applyQuadrantTransformation = function (deltaX, deltaY, quadrant) {\r\n if (quadrant === 2 /* Second */) {\r\n return [deltaY, -deltaX];\r\n }\r\n else if (quadrant === 3 /* Third */) {\r\n return [-deltaX, -deltaY];\r\n }\r\n else if (quadrant === 4 /* Forth */) {\r\n return [-deltaY, deltaX];\r\n }\r\n else {\r\n return [deltaX, deltaY];\r\n }\r\n};\r\nvar ScrollerActions = /** @class */ (function () {\r\n function ScrollerActions(scrollBehaviorX, scrollBehaviorY, actionsHandler, animater, options) {\r\n this.hooks = new EventEmitter([\r\n 'start',\r\n 'beforeMove',\r\n 'scrollStart',\r\n 'scroll',\r\n 'beforeEnd',\r\n 'end',\r\n 'scrollEnd',\r\n 'contentNotMoved',\r\n 'detectMovingDirection',\r\n 'coordinateTransformation',\r\n ]);\r\n this.scrollBehaviorX = scrollBehaviorX;\r\n this.scrollBehaviorY = scrollBehaviorY;\r\n this.actionsHandler = actionsHandler;\r\n this.animater = animater;\r\n this.options = options;\r\n this.directionLockAction = new DirectionLockAction(options.directionLockThreshold, options.freeScroll, options.eventPassthrough);\r\n this.enabled = true;\r\n this.bindActionsHandler();\r\n }\r\n ScrollerActions.prototype.bindActionsHandler = function () {\r\n var _this = this;\r\n // [mouse|touch]start event\r\n this.actionsHandler.hooks.on(this.actionsHandler.hooks.eventTypes.start, function (e) {\r\n if (!_this.enabled)\r\n return true;\r\n return _this.handleStart(e);\r\n });\r\n // [mouse|touch]move event\r\n this.actionsHandler.hooks.on(this.actionsHandler.hooks.eventTypes.move, function (_a) {\r\n var deltaX = _a.deltaX, deltaY = _a.deltaY, e = _a.e;\r\n if (!_this.enabled)\r\n return true;\r\n var _b = applyQuadrantTransformation(deltaX, deltaY, _this.options.quadrant), transformateDeltaX = _b[0], transformateDeltaY = _b[1];\r\n var transformateDeltaData = {\r\n deltaX: transformateDeltaX,\r\n deltaY: transformateDeltaY,\r\n };\r\n _this.hooks.trigger(_this.hooks.eventTypes.coordinateTransformation, transformateDeltaData);\r\n return _this.handleMove(transformateDeltaData.deltaX, transformateDeltaData.deltaY, e);\r\n });\r\n // [mouse|touch]end event\r\n this.actionsHandler.hooks.on(this.actionsHandler.hooks.eventTypes.end, function (e) {\r\n if (!_this.enabled)\r\n return true;\r\n return _this.handleEnd(e);\r\n });\r\n // click\r\n this.actionsHandler.hooks.on(this.actionsHandler.hooks.eventTypes.click, function (e) {\r\n // handle native click event\r\n if (_this.enabled && !e._constructed) {\r\n _this.handleClick(e);\r\n }\r\n });\r\n };\r\n ScrollerActions.prototype.handleStart = function (e) {\r\n var timestamp = getNow();\r\n this.fingerMoved = false;\r\n this.contentMoved = false;\r\n this.startTime = timestamp;\r\n this.directionLockAction.reset();\r\n this.scrollBehaviorX.start();\r\n this.scrollBehaviorY.start();\r\n // force stopping last transition or animation\r\n this.animater.doStop();\r\n this.scrollBehaviorX.resetStartPos();\r\n this.scrollBehaviorY.resetStartPos();\r\n this.hooks.trigger(this.hooks.eventTypes.start, e);\r\n };\r\n ScrollerActions.prototype.handleMove = function (deltaX, deltaY, e) {\r\n if (this.hooks.trigger(this.hooks.eventTypes.beforeMove, e)) {\r\n return;\r\n }\r\n var absDistX = this.scrollBehaviorX.getAbsDist(deltaX);\r\n var absDistY = this.scrollBehaviorY.getAbsDist(deltaY);\r\n var timestamp = getNow();\r\n // We need to move at least momentumLimitDistance pixels\r\n // for the scrolling to initiate\r\n if (this.checkMomentum(absDistX, absDistY, timestamp)) {\r\n return true;\r\n }\r\n if (this.directionLockAction.checkMovingDirection(absDistX, absDistY, e)) {\r\n this.actionsHandler.setInitiated();\r\n return true;\r\n }\r\n var delta = this.directionLockAction.adjustDelta(deltaX, deltaY);\r\n var prevX = this.scrollBehaviorX.getCurrentPos();\r\n var newX = this.scrollBehaviorX.move(delta.deltaX);\r\n var prevY = this.scrollBehaviorY.getCurrentPos();\r\n var newY = this.scrollBehaviorY.move(delta.deltaY);\r\n if (this.hooks.trigger(this.hooks.eventTypes.detectMovingDirection)) {\r\n return;\r\n }\r\n if (!this.fingerMoved) {\r\n this.fingerMoved = true;\r\n }\r\n var positionChanged = newX !== prevX || newY !== prevY;\r\n if (!this.contentMoved && !positionChanged) {\r\n this.hooks.trigger(this.hooks.eventTypes.contentNotMoved);\r\n }\r\n if (!this.contentMoved && positionChanged) {\r\n this.contentMoved = true;\r\n this.hooks.trigger(this.hooks.eventTypes.scrollStart);\r\n }\r\n if (this.contentMoved && positionChanged) {\r\n this.animater.translate({\r\n x: newX,\r\n y: newY,\r\n });\r\n this.dispatchScroll(timestamp);\r\n }\r\n };\r\n ScrollerActions.prototype.dispatchScroll = function (timestamp) {\r\n // dispatch scroll in interval time\r\n if (timestamp - this.startTime > this.options.momentumLimitTime) {\r\n // refresh time and starting position to initiate a momentum\r\n this.startTime = timestamp;\r\n this.scrollBehaviorX.updateStartPos();\r\n this.scrollBehaviorY.updateStartPos();\r\n if (this.options.probeType === 1 /* Throttle */) {\r\n this.hooks.trigger(this.hooks.eventTypes.scroll, this.getCurrentPos());\r\n }\r\n }\r\n // dispatch scroll all the time\r\n if (this.options.probeType > 1 /* Throttle */) {\r\n this.hooks.trigger(this.hooks.eventTypes.scroll, this.getCurrentPos());\r\n }\r\n };\r\n ScrollerActions.prototype.checkMomentum = function (absDistX, absDistY, timestamp) {\r\n return (timestamp - this.endTime > this.options.momentumLimitTime &&\r\n absDistY < this.options.momentumLimitDistance &&\r\n absDistX < this.options.momentumLimitDistance);\r\n };\r\n ScrollerActions.prototype.handleEnd = function (e) {\r\n if (this.hooks.trigger(this.hooks.eventTypes.beforeEnd, e)) {\r\n return;\r\n }\r\n var currentPos = this.getCurrentPos();\r\n this.scrollBehaviorX.updateDirection();\r\n this.scrollBehaviorY.updateDirection();\r\n if (this.hooks.trigger(this.hooks.eventTypes.end, e, currentPos)) {\r\n return true;\r\n }\r\n currentPos = this.ensureIntegerPos(currentPos);\r\n this.animater.translate(currentPos);\r\n this.endTime = getNow();\r\n var duration = this.endTime - this.startTime;\r\n this.hooks.trigger(this.hooks.eventTypes.scrollEnd, currentPos, duration);\r\n };\r\n ScrollerActions.prototype.ensureIntegerPos = function (currentPos) {\r\n this.ensuringInteger = true;\r\n var x = currentPos.x, y = currentPos.y;\r\n var _a = this.scrollBehaviorX, minScrollPosX = _a.minScrollPos, maxScrollPosX = _a.maxScrollPos;\r\n var _b = this.scrollBehaviorY, minScrollPosY = _b.minScrollPos, maxScrollPosY = _b.maxScrollPos;\r\n x = x > 0 ? Math.ceil(x) : Math.floor(x);\r\n y = y > 0 ? Math.ceil(y) : Math.floor(y);\r\n x = between(x, maxScrollPosX, minScrollPosX);\r\n y = between(y, maxScrollPosY, minScrollPosY);\r\n return { x: x, y: y };\r\n };\r\n ScrollerActions.prototype.handleClick = function (e) {\r\n if (!preventDefaultExceptionFn(e.target, this.options.preventDefaultException)) {\r\n maybePrevent(e);\r\n e.stopPropagation();\r\n }\r\n };\r\n ScrollerActions.prototype.getCurrentPos = function () {\r\n return {\r\n x: this.scrollBehaviorX.getCurrentPos(),\r\n y: this.scrollBehaviorY.getCurrentPos(),\r\n };\r\n };\r\n ScrollerActions.prototype.refresh = function () {\r\n this.endTime = 0;\r\n };\r\n ScrollerActions.prototype.destroy = function () {\r\n this.hooks.destroy();\r\n };\r\n return ScrollerActions;\r\n}());\n\nfunction createActionsHandlerOptions(bsOptions) {\r\n var options = [\r\n 'click',\r\n 'bindToWrapper',\r\n 'disableMouse',\r\n 'disableTouch',\r\n 'preventDefault',\r\n 'stopPropagation',\r\n 'tagException',\r\n 'preventDefaultException',\r\n 'autoEndDistance',\r\n ].reduce(function (prev, cur) {\r\n prev[cur] = bsOptions[cur];\r\n return prev;\r\n }, {});\r\n return options;\r\n}\r\nfunction createBehaviorOptions(bsOptions, extraProp, bounces, rect) {\r\n var options = [\r\n 'momentum',\r\n 'momentumLimitTime',\r\n 'momentumLimitDistance',\r\n 'deceleration',\r\n 'swipeBounceTime',\r\n 'swipeTime',\r\n 'outOfBoundaryDampingFactor',\r\n 'specifiedIndexAsContent',\r\n ].reduce(function (prev, cur) {\r\n prev[cur] = bsOptions[cur];\r\n return prev;\r\n }, {});\r\n // add extra property\r\n options.scrollable = !!bsOptions[extraProp];\r\n options.bounces = bounces;\r\n options.rect = rect;\r\n return options;\r\n}\n\nfunction bubbling(source, target, events) {\r\n events.forEach(function (event) {\r\n var sourceEvent;\r\n var targetEvent;\r\n if (typeof event === 'string') {\r\n sourceEvent = targetEvent = event;\r\n }\r\n else {\r\n sourceEvent = event.source;\r\n targetEvent = event.target;\r\n }\r\n source.on(sourceEvent, function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return target.trigger.apply(target, __spreadArrays([targetEvent], args));\r\n });\r\n });\r\n}\n\nfunction isSamePoint(startPoint, endPoint) {\r\n // keys of startPoint and endPoint should be equal\r\n var keys = Object.keys(startPoint);\r\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\r\n var key = keys_1[_i];\r\n if (startPoint[key] !== endPoint[key])\r\n return false;\r\n }\r\n return true;\r\n}\n\nvar MIN_SCROLL_DISTANCE = 1;\r\nvar Scroller = /** @class */ (function () {\r\n function Scroller(wrapper, content, options) {\r\n this.wrapper = wrapper;\r\n this.content = content;\r\n this.resizeTimeout = 0;\r\n this.hooks = new EventEmitter([\r\n 'beforeStart',\r\n 'beforeMove',\r\n 'beforeScrollStart',\r\n 'scrollStart',\r\n 'scroll',\r\n 'beforeEnd',\r\n 'scrollEnd',\r\n 'resize',\r\n 'touchEnd',\r\n 'end',\r\n 'flick',\r\n 'scrollCancel',\r\n 'momentum',\r\n 'scrollTo',\r\n 'minDistanceScroll',\r\n 'scrollToElement',\r\n 'beforeRefresh',\r\n ]);\r\n this.options = options;\r\n var _a = this.options.bounce, left = _a.left, right = _a.right, top = _a.top, bottom = _a.bottom;\r\n // direction X\r\n this.scrollBehaviorX = new Behavior(wrapper, content, createBehaviorOptions(options, 'scrollX', [left, right], {\r\n size: 'width',\r\n position: 'left',\r\n }));\r\n // direction Y\r\n this.scrollBehaviorY = new Behavior(wrapper, content, createBehaviorOptions(options, 'scrollY', [top, bottom], {\r\n size: 'height',\r\n position: 'top',\r\n }));\r\n this.translater = new Translater(this.content);\r\n this.animater = createAnimater(this.content, this.translater, this.options);\r\n this.actionsHandler = new ActionsHandler(this.options.bindToTarget ? this.content : wrapper, createActionsHandlerOptions(this.options));\r\n this.actions = new ScrollerActions(this.scrollBehaviorX, this.scrollBehaviorY, this.actionsHandler, this.animater, this.options);\r\n var resizeHandler = this.resize.bind(this);\r\n this.resizeRegister = new EventRegister(window, [\r\n {\r\n name: 'orientationchange',\r\n handler: resizeHandler,\r\n },\r\n {\r\n name: 'resize',\r\n handler: resizeHandler,\r\n },\r\n ]);\r\n this.registerTransitionEnd();\r\n this.init();\r\n }\r\n Scroller.prototype.init = function () {\r\n var _this = this;\r\n this.bindTranslater();\r\n this.bindAnimater();\r\n this.bindActions();\r\n // enable pointer events when scrolling ends\r\n this.hooks.on(this.hooks.eventTypes.scrollEnd, function () {\r\n _this.togglePointerEvents(true);\r\n });\r\n };\r\n Scroller.prototype.registerTransitionEnd = function () {\r\n this.transitionEndRegister = new EventRegister(this.content, [\r\n {\r\n name: style.transitionEnd,\r\n handler: this.transitionEnd.bind(this),\r\n },\r\n ]);\r\n };\r\n Scroller.prototype.bindTranslater = function () {\r\n var _this = this;\r\n var hooks = this.translater.hooks;\r\n hooks.on(hooks.eventTypes.beforeTranslate, function (transformStyle) {\r\n if (_this.options.translateZ) {\r\n transformStyle.push(_this.options.translateZ);\r\n }\r\n });\r\n // disable pointer events when scrolling\r\n hooks.on(hooks.eventTypes.translate, function (pos) {\r\n var prevPos = _this.getCurrentPos();\r\n _this.updatePositions(pos);\r\n // scrollEnd will dispatch when scroll is force stopping in touchstart handler\r\n // so in touchend handler, don't toggle pointer-events\r\n if (_this.actions.ensuringInteger === true) {\r\n _this.actions.ensuringInteger = false;\r\n return;\r\n }\r\n // a valid translate\r\n if (pos.x !== prevPos.x || pos.y !== prevPos.y) {\r\n _this.togglePointerEvents(false);\r\n }\r\n });\r\n };\r\n Scroller.prototype.bindAnimater = function () {\r\n var _this = this;\r\n // reset position\r\n this.animater.hooks.on(this.animater.hooks.eventTypes.end, function (pos) {\r\n if (!_this.resetPosition(_this.options.bounceTime)) {\r\n _this.animater.setPending(false);\r\n _this.hooks.trigger(_this.hooks.eventTypes.scrollEnd, pos);\r\n }\r\n });\r\n bubbling(this.animater.hooks, this.hooks, [\r\n {\r\n source: this.animater.hooks.eventTypes.move,\r\n target: this.hooks.eventTypes.scroll,\r\n },\r\n {\r\n source: this.animater.hooks.eventTypes.forceStop,\r\n target: this.hooks.eventTypes.scrollEnd,\r\n },\r\n ]);\r\n };\r\n Scroller.prototype.bindActions = function () {\r\n var _this = this;\r\n var actions = this.actions;\r\n bubbling(actions.hooks, this.hooks, [\r\n {\r\n source: actions.hooks.eventTypes.start,\r\n target: this.hooks.eventTypes.beforeStart,\r\n },\r\n {\r\n source: actions.hooks.eventTypes.start,\r\n target: this.hooks.eventTypes.beforeScrollStart,\r\n },\r\n {\r\n source: actions.hooks.eventTypes.beforeMove,\r\n target: this.hooks.eventTypes.beforeMove,\r\n },\r\n {\r\n source: actions.hooks.eventTypes.scrollStart,\r\n target: this.hooks.eventTypes.scrollStart,\r\n },\r\n {\r\n source: actions.hooks.eventTypes.scroll,\r\n target: this.hooks.eventTypes.scroll,\r\n },\r\n {\r\n source: actions.hooks.eventTypes.beforeEnd,\r\n target: this.hooks.eventTypes.beforeEnd,\r\n },\r\n ]);\r\n actions.hooks.on(actions.hooks.eventTypes.end, function (e, pos) {\r\n _this.hooks.trigger(_this.hooks.eventTypes.touchEnd, pos);\r\n if (_this.hooks.trigger(_this.hooks.eventTypes.end, pos)) {\r\n return true;\r\n }\r\n // check if it is a click operation\r\n if (!actions.fingerMoved) {\r\n _this.hooks.trigger(_this.hooks.eventTypes.scrollCancel);\r\n if (_this.checkClick(e)) {\r\n return true;\r\n }\r\n }\r\n // reset if we are outside of the boundaries\r\n if (_this.resetPosition(_this.options.bounceTime, ease.bounce)) {\r\n _this.animater.setForceStopped(false);\r\n return true;\r\n }\r\n });\r\n actions.hooks.on(actions.hooks.eventTypes.scrollEnd, function (pos, duration) {\r\n var deltaX = Math.abs(pos.x - _this.scrollBehaviorX.startPos);\r\n var deltaY = Math.abs(pos.y - _this.scrollBehaviorY.startPos);\r\n if (_this.checkFlick(duration, deltaX, deltaY)) {\r\n _this.animater.setForceStopped(false);\r\n _this.hooks.trigger(_this.hooks.eventTypes.flick);\r\n return;\r\n }\r\n if (_this.momentum(pos, duration)) {\r\n _this.animater.setForceStopped(false);\r\n return;\r\n }\r\n if (actions.contentMoved) {\r\n _this.hooks.trigger(_this.hooks.eventTypes.scrollEnd, pos);\r\n }\r\n if (_this.animater.forceStopped) {\r\n _this.animater.setForceStopped(false);\r\n }\r\n });\r\n };\r\n Scroller.prototype.checkFlick = function (duration, deltaX, deltaY) {\r\n var flickMinMovingDistance = 1; // distinguish flick from click\r\n if (this.hooks.events.flick.length > 1 &&\r\n duration < this.options.flickLimitTime &&\r\n deltaX < this.options.flickLimitDistance &&\r\n deltaY < this.options.flickLimitDistance &&\r\n (deltaY > flickMinMovingDistance || deltaX > flickMinMovingDistance)) {\r\n return true;\r\n }\r\n };\r\n Scroller.prototype.momentum = function (pos, duration) {\r\n var meta = {\r\n time: 0,\r\n easing: ease.swiper,\r\n newX: pos.x,\r\n newY: pos.y,\r\n };\r\n // start momentum animation if needed\r\n var momentumX = this.scrollBehaviorX.end(duration);\r\n var momentumY = this.scrollBehaviorY.end(duration);\r\n meta.newX = isUndef(momentumX.destination)\r\n ? meta.newX\r\n : momentumX.destination;\r\n meta.newY = isUndef(momentumY.destination)\r\n ? meta.newY\r\n : momentumY.destination;\r\n meta.time = Math.max(momentumX.duration, momentumY.duration);\r\n this.hooks.trigger(this.hooks.eventTypes.momentum, meta, this);\r\n // when x or y changed, do momentum animation now!\r\n if (meta.newX !== pos.x || meta.newY !== pos.y) {\r\n // change easing function when scroller goes out of the boundaries\r\n if (meta.newX > this.scrollBehaviorX.minScrollPos ||\r\n meta.newX < this.scrollBehaviorX.maxScrollPos ||\r\n meta.newY > this.scrollBehaviorY.minScrollPos ||\r\n meta.newY < this.scrollBehaviorY.maxScrollPos) {\r\n meta.easing = ease.swipeBounce;\r\n }\r\n this.scrollTo(meta.newX, meta.newY, meta.time, meta.easing);\r\n return true;\r\n }\r\n };\r\n Scroller.prototype.checkClick = function (e) {\r\n var cancelable = {\r\n preventClick: this.animater.forceStopped,\r\n };\r\n // we scrolled less than momentumLimitDistance pixels\r\n if (this.hooks.trigger(this.hooks.eventTypes.checkClick)) {\r\n this.animater.setForceStopped(false);\r\n return true;\r\n }\r\n if (!cancelable.preventClick) {\r\n var _dblclick = this.options.dblclick;\r\n var dblclickTrigged = false;\r\n if (_dblclick && this.lastClickTime) {\r\n var _a = _dblclick.delay, delay = _a === void 0 ? 300 : _a;\r\n if (getNow() - this.lastClickTime < delay) {\r\n dblclickTrigged = true;\r\n dblclick(e);\r\n }\r\n }\r\n if (this.options.tap) {\r\n tap(e, this.options.tap);\r\n }\r\n if (this.options.click &&\r\n !preventDefaultExceptionFn(e.target, this.options.preventDefaultException)) {\r\n click(e);\r\n }\r\n this.lastClickTime = dblclickTrigged ? null : getNow();\r\n return true;\r\n }\r\n return false;\r\n };\r\n Scroller.prototype.resize = function () {\r\n var _this = this;\r\n if (!this.actions.enabled) {\r\n return;\r\n }\r\n // fix a scroll problem under Android condition\r\n /* istanbul ignore if */\r\n if (isAndroid) {\r\n this.wrapper.scrollTop = 0;\r\n }\r\n clearTimeout(this.resizeTimeout);\r\n this.resizeTimeout = window.setTimeout(function () {\r\n _this.hooks.trigger(_this.hooks.eventTypes.resize);\r\n }, this.options.resizePolling);\r\n };\r\n /* istanbul ignore next */\r\n Scroller.prototype.transitionEnd = function (e) {\r\n if (e.target !== this.content || !this.animater.pending) {\r\n return;\r\n }\r\n var animater = this.animater;\r\n animater.transitionTime();\r\n if (!this.resetPosition(this.options.bounceTime, ease.bounce)) {\r\n this.animater.setPending(false);\r\n if (this.options.probeType !== 3 /* Realtime */) {\r\n this.hooks.trigger(this.hooks.eventTypes.scrollEnd, this.getCurrentPos());\r\n }\r\n }\r\n };\r\n Scroller.prototype.togglePointerEvents = function (enabled) {\r\n if (enabled === void 0) { enabled = true; }\r\n var el = this.content.children.length\r\n ? this.content.children\r\n : [this.content];\r\n var pointerEvents = enabled ? 'auto' : 'none';\r\n for (var i = 0; i < el.length; i++) {\r\n var node = el[i];\r\n // ignore BetterScroll instance's wrapper DOM\r\n /* istanbul ignore if */\r\n if (node.isBScrollContainer) {\r\n continue;\r\n }\r\n node.style.pointerEvents = pointerEvents;\r\n }\r\n };\r\n Scroller.prototype.refresh = function (content) {\r\n var contentChanged = this.setContent(content);\r\n this.hooks.trigger(this.hooks.eventTypes.beforeRefresh);\r\n this.scrollBehaviorX.refresh(content);\r\n this.scrollBehaviorY.refresh(content);\r\n if (contentChanged) {\r\n this.translater.setContent(content);\r\n this.animater.setContent(content);\r\n this.transitionEndRegister.destroy();\r\n this.registerTransitionEnd();\r\n if (this.options.bindToTarget) {\r\n this.actionsHandler.setContent(content);\r\n }\r\n }\r\n this.actions.refresh();\r\n this.wrapperOffset = offset(this.wrapper);\r\n };\r\n Scroller.prototype.setContent = function (content) {\r\n var contentChanged = content !== this.content;\r\n if (contentChanged) {\r\n this.content = content;\r\n }\r\n return contentChanged;\r\n };\r\n Scroller.prototype.scrollBy = function (deltaX, deltaY, time, easing) {\r\n if (time === void 0) { time = 0; }\r\n var _a = this.getCurrentPos(), x = _a.x, y = _a.y;\r\n easing = !easing ? ease.bounce : easing;\r\n deltaX += x;\r\n deltaY += y;\r\n this.scrollTo(deltaX, deltaY, time, easing);\r\n };\r\n Scroller.prototype.scrollTo = function (x, y, time, easing, extraTransform) {\r\n if (time === void 0) { time = 0; }\r\n if (easing === void 0) { easing = ease.bounce; }\r\n if (extraTransform === void 0) { extraTransform = {\r\n start: {},\r\n end: {},\r\n }; }\r\n var easingFn = this.options.useTransition ? easing.style : easing.fn;\r\n var currentPos = this.getCurrentPos();\r\n var startPoint = __assign({ x: currentPos.x, y: currentPos.y }, extraTransform.start);\r\n var endPoint = __assign({ x: x,\r\n y: y }, extraTransform.end);\r\n this.hooks.trigger(this.hooks.eventTypes.scrollTo, endPoint);\r\n // it is an useless move\r\n if (isSamePoint(startPoint, endPoint))\r\n return;\r\n var deltaX = Math.abs(endPoint.x - startPoint.x);\r\n var deltaY = Math.abs(endPoint.y - startPoint.y);\r\n // considering of browser compatibility for decimal transform value\r\n // force translating immediately\r\n if (deltaX < MIN_SCROLL_DISTANCE && deltaY < MIN_SCROLL_DISTANCE) {\r\n time = 0;\r\n this.hooks.trigger(this.hooks.eventTypes.minDistanceScroll);\r\n }\r\n this.animater.move(startPoint, endPoint, time, easingFn);\r\n };\r\n Scroller.prototype.scrollToElement = function (el, time, offsetX, offsetY, easing) {\r\n var targetEle = getElement(el);\r\n var pos = offset(targetEle);\r\n var getOffset = function (offset, size, wrapperSize) {\r\n if (typeof offset === 'number') {\r\n return offset;\r\n }\r\n // if offsetX/Y are true we center the element to the screen\r\n return offset ? Math.round(size / 2 - wrapperSize / 2) : 0;\r\n };\r\n offsetX = getOffset(offsetX, targetEle.offsetWidth, this.wrapper.offsetWidth);\r\n offsetY = getOffset(offsetY, targetEle.offsetHeight, this.wrapper.offsetHeight);\r\n var getPos = function (pos, wrapperPos, offset, scrollBehavior) {\r\n pos -= wrapperPos;\r\n pos = scrollBehavior.adjustPosition(pos - offset);\r\n return pos;\r\n };\r\n pos.left = getPos(pos.left, this.wrapperOffset.left, offsetX, this.scrollBehaviorX);\r\n pos.top = getPos(pos.top, this.wrapperOffset.top, offsetY, this.scrollBehaviorY);\r\n if (this.hooks.trigger(this.hooks.eventTypes.scrollToElement, targetEle, pos)) {\r\n return;\r\n }\r\n this.scrollTo(pos.left, pos.top, time, easing);\r\n };\r\n Scroller.prototype.resetPosition = function (time, easing) {\r\n if (time === void 0) { time = 0; }\r\n if (easing === void 0) { easing = ease.bounce; }\r\n var _a = this.scrollBehaviorX.checkInBoundary(), x = _a.position, xInBoundary = _a.inBoundary;\r\n var _b = this.scrollBehaviorY.checkInBoundary(), y = _b.position, yInBoundary = _b.inBoundary;\r\n if (xInBoundary && yInBoundary) {\r\n return false;\r\n }\r\n /* istanbul ignore if */\r\n if (isIOSBadVersion) {\r\n // fix ios 13.4 bouncing\r\n // see it in issues 982\r\n this.reflow();\r\n }\r\n // out of boundary\r\n this.scrollTo(x, y, time, easing);\r\n return true;\r\n };\r\n /* istanbul ignore next */\r\n Scroller.prototype.reflow = function () {\r\n this._reflow = this.content.offsetHeight;\r\n };\r\n Scroller.prototype.updatePositions = function (pos) {\r\n this.scrollBehaviorX.updatePosition(pos.x);\r\n this.scrollBehaviorY.updatePosition(pos.y);\r\n };\r\n Scroller.prototype.getCurrentPos = function () {\r\n return this.actions.getCurrentPos();\r\n };\r\n Scroller.prototype.enable = function () {\r\n this.actions.enabled = true;\r\n };\r\n Scroller.prototype.disable = function () {\r\n cancelAnimationFrame(this.animater.timer);\r\n this.actions.enabled = false;\r\n };\r\n Scroller.prototype.destroy = function () {\r\n var _this = this;\r\n var keys = [\r\n 'resizeRegister',\r\n 'transitionEndRegister',\r\n 'actionsHandler',\r\n 'actions',\r\n 'hooks',\r\n 'animater',\r\n 'translater',\r\n 'scrollBehaviorX',\r\n 'scrollBehaviorY',\r\n ];\r\n keys.forEach(function (key) { return _this[key].destroy(); });\r\n };\r\n return Scroller;\r\n}());\n\nvar BScrollConstructor = /** @class */ (function (_super) {\r\n __extends(BScrollConstructor, _super);\r\n function BScrollConstructor(el, options) {\r\n var _this = _super.call(this, [\r\n 'refresh',\r\n 'contentChanged',\r\n 'enable',\r\n 'disable',\r\n 'beforeScrollStart',\r\n 'scrollStart',\r\n 'scroll',\r\n 'scrollEnd',\r\n 'scrollCancel',\r\n 'touchEnd',\r\n 'flick',\r\n 'destroy'\r\n ]) || this;\r\n var wrapper = getElement(el);\r\n if (!wrapper) {\r\n warn('Can not resolve the wrapper DOM.');\r\n return _this;\r\n }\r\n _this.plugins = {};\r\n _this.options = new OptionsConstructor().merge(options).process();\r\n if (!_this.setContent(wrapper).valid) {\r\n return _this;\r\n }\r\n _this.hooks = new EventEmitter([\r\n 'refresh',\r\n 'enable',\r\n 'disable',\r\n 'destroy',\r\n 'beforeInitialScrollTo',\r\n 'contentChanged'\r\n ]);\r\n _this.init(wrapper);\r\n return _this;\r\n }\r\n BScrollConstructor.use = function (ctor) {\r\n var name = ctor.pluginName;\r\n var installed = BScrollConstructor.plugins.some(function (plugin) { return ctor === plugin.ctor; });\r\n if (installed)\r\n return BScrollConstructor;\r\n if (isUndef(name)) {\r\n warn(\"Plugin Class must specify plugin's name in static property by 'pluginName' field.\");\r\n return BScrollConstructor;\r\n }\r\n BScrollConstructor.pluginsMap[name] = true;\r\n BScrollConstructor.plugins.push({\r\n name: name,\r\n applyOrder: ctor.applyOrder,\r\n ctor: ctor\r\n });\r\n return BScrollConstructor;\r\n };\r\n BScrollConstructor.prototype.setContent = function (wrapper) {\r\n var contentChanged = false;\r\n var valid = true;\r\n var content = wrapper.children[this.options.specifiedIndexAsContent];\r\n if (!content) {\r\n warn('The wrapper need at least one child element to be content element to scroll.');\r\n valid = false;\r\n }\r\n else {\r\n contentChanged = this.content !== content;\r\n if (contentChanged) {\r\n this.content = content;\r\n }\r\n }\r\n return {\r\n valid: valid,\r\n contentChanged: contentChanged\r\n };\r\n };\r\n BScrollConstructor.prototype.init = function (wrapper) {\r\n var _this = this;\r\n this.wrapper = wrapper;\r\n // mark wrapper to recognize bs instance by DOM attribute\r\n wrapper.isBScrollContainer = true;\r\n this.scroller = new Scroller(wrapper, this.content, this.options);\r\n this.scroller.hooks.on(this.scroller.hooks.eventTypes.resize, function () {\r\n _this.refresh();\r\n });\r\n this.eventBubbling();\r\n this.handleAutoBlur();\r\n this.enable();\r\n this.proxy(propertiesConfig);\r\n this.applyPlugins();\r\n // maybe boundary has changed, should refresh\r\n this.refreshWithoutReset(this.content);\r\n var _a = this.options, startX = _a.startX, startY = _a.startY;\r\n var position = {\r\n x: startX,\r\n y: startY\r\n };\r\n // maybe plugins want to control scroll position\r\n if (this.hooks.trigger(this.hooks.eventTypes.beforeInitialScrollTo, position)) {\r\n return;\r\n }\r\n this.scroller.scrollTo(position.x, position.y);\r\n };\r\n BScrollConstructor.prototype.applyPlugins = function () {\r\n var _this = this;\r\n var options = this.options;\r\n BScrollConstructor.plugins\r\n .sort(function (a, b) {\r\n var _a;\r\n var applyOrderMap = (_a = {},\r\n _a[\"pre\" /* Pre */] = -1,\r\n _a[\"post\" /* Post */] = 1,\r\n _a);\r\n var aOrder = a.applyOrder ? applyOrderMap[a.applyOrder] : 0;\r\n var bOrder = b.applyOrder ? applyOrderMap[b.applyOrder] : 0;\r\n return aOrder - bOrder;\r\n })\r\n .forEach(function (item) {\r\n var ctor = item.ctor;\r\n if (options[item.name] && typeof ctor === 'function') {\r\n _this.plugins[item.name] = new ctor(_this);\r\n }\r\n });\r\n };\r\n BScrollConstructor.prototype.handleAutoBlur = function () {\r\n /* istanbul ignore if */\r\n if (this.options.autoBlur) {\r\n this.on(this.eventTypes.beforeScrollStart, function () {\r\n var activeElement = document.activeElement;\r\n if (activeElement &&\r\n (activeElement.tagName === 'INPUT' ||\r\n activeElement.tagName === 'TEXTAREA')) {\r\n activeElement.blur();\r\n }\r\n });\r\n }\r\n };\r\n BScrollConstructor.prototype.eventBubbling = function () {\r\n bubbling(this.scroller.hooks, this, [\r\n this.eventTypes.beforeScrollStart,\r\n this.eventTypes.scrollStart,\r\n this.eventTypes.scroll,\r\n this.eventTypes.scrollEnd,\r\n this.eventTypes.scrollCancel,\r\n this.eventTypes.touchEnd,\r\n this.eventTypes.flick\r\n ]);\r\n };\r\n BScrollConstructor.prototype.refreshWithoutReset = function (content) {\r\n this.scroller.refresh(content);\r\n this.hooks.trigger(this.hooks.eventTypes.refresh, content);\r\n this.trigger(this.eventTypes.refresh, content);\r\n };\r\n BScrollConstructor.prototype.proxy = function (propertiesConfig) {\r\n var _this = this;\r\n propertiesConfig.forEach(function (_a) {\r\n var key = _a.key, sourceKey = _a.sourceKey;\r\n propertiesProxy(_this, sourceKey, key);\r\n });\r\n };\r\n BScrollConstructor.prototype.refresh = function () {\r\n var _a = this.setContent(this.wrapper), contentChanged = _a.contentChanged, valid = _a.valid;\r\n if (valid) {\r\n var content = this.content;\r\n this.refreshWithoutReset(content);\r\n if (contentChanged) {\r\n this.hooks.trigger(this.hooks.eventTypes.contentChanged, content);\r\n this.trigger(this.eventTypes.contentChanged, content);\r\n }\r\n this.scroller.resetPosition();\r\n }\r\n };\r\n BScrollConstructor.prototype.enable = function () {\r\n this.scroller.enable();\r\n this.hooks.trigger(this.hooks.eventTypes.enable);\r\n this.trigger(this.eventTypes.enable);\r\n };\r\n BScrollConstructor.prototype.disable = function () {\r\n this.scroller.disable();\r\n this.hooks.trigger(this.hooks.eventTypes.disable);\r\n this.trigger(this.eventTypes.disable);\r\n };\r\n BScrollConstructor.prototype.destroy = function () {\r\n this.hooks.trigger(this.hooks.eventTypes.destroy);\r\n this.trigger(this.eventTypes.destroy);\r\n this.scroller.destroy();\r\n };\r\n BScrollConstructor.prototype.eventRegister = function (names) {\r\n this.registerType(names);\r\n };\r\n BScrollConstructor.plugins = [];\r\n BScrollConstructor.pluginsMap = {};\r\n return BScrollConstructor;\r\n}(EventEmitter));\r\nfunction createBScroll(el, options) {\r\n var bs = new BScrollConstructor(el, options);\r\n return bs;\r\n}\r\ncreateBScroll.use = BScrollConstructor.use;\r\ncreateBScroll.plugins = BScrollConstructor.plugins;\r\ncreateBScroll.pluginsMap = BScrollConstructor.pluginsMap;\r\nvar BScroll = createBScroll;\n\nexport { Behavior, CustomOptions, createBScroll, BScroll as default };\n","/*!\n * better-scroll / pull-up\n * (c) 2016-2023 ustbhuangyi\n * Released under the MIT License.\n */\n// ssr support\r\nvar inBrowser = typeof window !== 'undefined';\r\nvar ua = inBrowser && navigator.userAgent.toLowerCase();\r\n!!(ua && /wechatdevtools/.test(ua));\r\nua && ua.indexOf('android') > 0;\r\n/* istanbul ignore next */\r\n((function () {\r\n if (typeof ua === 'string') {\r\n var regex = /os (\\d\\d?_\\d(_\\d)?)/;\r\n var matches = regex.exec(ua);\r\n if (!matches)\r\n return false;\r\n var parts = matches[1].split('_').map(function (item) {\r\n return parseInt(item, 10);\r\n });\r\n // ios version >= 13.4 issue 982\r\n return !!(parts[0] === 13 && parts[1] >= 4);\r\n }\r\n return false;\r\n}))();\r\n/* istanbul ignore next */\r\nvar supportsPassive = false;\r\n/* istanbul ignore next */\r\nif (inBrowser) {\r\n var EventName = 'test-passive';\r\n try {\r\n var opts = {};\r\n Object.defineProperty(opts, 'passive', {\r\n get: function () {\r\n supportsPassive = true;\r\n },\r\n }); // https://github.com/facebook/flow/issues/285\r\n window.addEventListener(EventName, function () { }, opts);\r\n }\r\n catch (e) { }\r\n}\n\nvar extend = function (target, source) {\r\n for (var key in source) {\r\n target[key] = source[key];\r\n }\r\n return target;\r\n};\n\nvar elementStyle = (inBrowser &&\r\n document.createElement('div').style);\r\nvar vendor = (function () {\r\n /* istanbul ignore if */\r\n if (!inBrowser) {\r\n return false;\r\n }\r\n var transformNames = [\r\n {\r\n key: 'standard',\r\n value: 'transform',\r\n },\r\n {\r\n key: 'webkit',\r\n value: 'webkitTransform',\r\n },\r\n {\r\n key: 'Moz',\r\n value: 'MozTransform',\r\n },\r\n {\r\n key: 'O',\r\n value: 'OTransform',\r\n },\r\n {\r\n key: 'ms',\r\n value: 'msTransform',\r\n },\r\n ];\r\n for (var _i = 0, transformNames_1 = transformNames; _i < transformNames_1.length; _i++) {\r\n var obj = transformNames_1[_i];\r\n if (elementStyle[obj.value] !== undefined) {\r\n return obj.key;\r\n }\r\n }\r\n /* istanbul ignore next */\r\n return false;\r\n})();\r\n/* istanbul ignore next */\r\nfunction prefixStyle(style) {\r\n if (vendor === false) {\r\n return style;\r\n }\r\n if (vendor === 'standard') {\r\n if (style === 'transitionEnd') {\r\n return 'transitionend';\r\n }\r\n return style;\r\n }\r\n return vendor + style.charAt(0).toUpperCase() + style.substr(1);\r\n}\r\nvendor && vendor !== 'standard' ? '-' + vendor.toLowerCase() + '-' : '';\r\nvar transform = prefixStyle('transform');\r\nvar transition = prefixStyle('transition');\r\ninBrowser && prefixStyle('perspective') in elementStyle;\r\n({\r\n transform: transform,\r\n transition: transition,\r\n transitionTimingFunction: prefixStyle('transitionTimingFunction'),\r\n transitionDuration: prefixStyle('transitionDuration'),\r\n transitionDelay: prefixStyle('transitionDelay'),\r\n transformOrigin: prefixStyle('transformOrigin'),\r\n transitionEnd: prefixStyle('transitionEnd'),\r\n transitionProperty: prefixStyle('transitionProperty'),\r\n});\n\nvar sourcePrefix = 'plugins.pullUpLoad';\r\nvar propertiesMap = [\r\n {\r\n key: 'finishPullUp',\r\n name: 'finishPullUp'\r\n },\r\n {\r\n key: 'openPullUp',\r\n name: 'openPullUp'\r\n },\r\n {\r\n key: 'closePullUp',\r\n name: 'closePullUp'\r\n },\r\n {\r\n key: 'autoPullUpLoad',\r\n name: 'autoPullUpLoad'\r\n }\r\n];\r\nvar propertiesConfig = propertiesMap.map(function (item) {\r\n return {\r\n key: item.key,\r\n sourceKey: sourcePrefix + \".\" + item.name\r\n };\r\n});\n\nvar PULL_UP_HOOKS_NAME = 'pullingUp';\r\nvar PullUp = /** @class */ (function () {\r\n function PullUp(scroll) {\r\n this.scroll = scroll;\r\n this.pulling = false;\r\n this.watching = false;\r\n this.init();\r\n }\r\n PullUp.prototype.init = function () {\r\n this.handleBScroll();\r\n this.handleOptions(this.scroll.options.pullUpLoad);\r\n this.handleHooks();\r\n this.watch();\r\n };\r\n PullUp.prototype.handleBScroll = function () {\r\n this.scroll.registerType([PULL_UP_HOOKS_NAME]);\r\n this.scroll.proxy(propertiesConfig);\r\n };\r\n PullUp.prototype.handleOptions = function (userOptions) {\r\n if (userOptions === void 0) { userOptions = {}; }\r\n userOptions = (userOptions === true ? {} : userOptions);\r\n var defaultOptions = {\r\n threshold: 0,\r\n };\r\n this.options = extend(defaultOptions, userOptions);\r\n this.scroll.options.probeType = 3 /* Realtime */;\r\n };\r\n PullUp.prototype.handleHooks = function () {\r\n var _this = this;\r\n this.hooksFn = [];\r\n var scrollBehaviorY = this.scroll.scroller.scrollBehaviorY;\r\n this.registerHooks(this.scroll.hooks, this.scroll.hooks.eventTypes.contentChanged, function () {\r\n _this.finishPullUp();\r\n });\r\n this.registerHooks(scrollBehaviorY.hooks, scrollBehaviorY.hooks.eventTypes.computeBoundary, function (boundary) {\r\n // content is smaller than wrapper\r\n if (boundary.maxScrollPos > 0) {\r\n // allow scrolling when content is not full of wrapper\r\n boundary.maxScrollPos = -1;\r\n }\r\n });\r\n };\r\n PullUp.prototype.registerHooks = function (hooks, name, handler) {\r\n hooks.on(name, handler, this);\r\n this.hooksFn.push([hooks, name, handler]);\r\n };\r\n PullUp.prototype.watch = function () {\r\n if (this.watching) {\r\n return;\r\n }\r\n this.watching = true;\r\n this.registerHooks(this.scroll, this.scroll.eventTypes.scroll, this.checkPullUp);\r\n };\r\n PullUp.prototype.unwatch = function () {\r\n this.watching = false;\r\n this.scroll.off(this.scroll.eventTypes.scroll, this.checkPullUp);\r\n };\r\n PullUp.prototype.checkPullUp = function (pos) {\r\n var _this = this;\r\n var threshold = this.options.threshold;\r\n if (this.scroll.movingDirectionY === 1 /* Positive */ &&\r\n pos.y <= this.scroll.maxScrollY + threshold) {\r\n this.pulling = true;\r\n // must reset pulling after scrollEnd\r\n this.scroll.once(this.scroll.eventTypes.scrollEnd, function () {\r\n _this.pulling = false;\r\n });\r\n this.unwatch();\r\n this.scroll.trigger(PULL_UP_HOOKS_NAME);\r\n }\r\n };\r\n PullUp.prototype.finishPullUp = function () {\r\n var _this = this;\r\n // reset Direction, fix #936\r\n this.scroll.scroller.scrollBehaviorY.setMovingDirection(0 /* Default */);\r\n if (this.pulling) {\r\n this.scroll.once(this.scroll.eventTypes.scrollEnd, function () {\r\n _this.watch();\r\n });\r\n }\r\n else {\r\n this.watch();\r\n }\r\n };\r\n // allow 'true' type is compat for beta version implements\r\n PullUp.prototype.openPullUp = function (config) {\r\n if (config === void 0) { config = {}; }\r\n this.handleOptions(config);\r\n this.watch();\r\n };\r\n PullUp.prototype.closePullUp = function () {\r\n this.unwatch();\r\n };\r\n PullUp.prototype.autoPullUpLoad = function () {\r\n var threshold = this.options.threshold;\r\n var scrollBehaviorY = this.scroll.scroller.scrollBehaviorY;\r\n if (this.pulling || !this.watching) {\r\n return;\r\n }\r\n // simulate a pullUp action\r\n var NEGATIVE_VALUE = -1;\r\n var outOfBoundaryPos = scrollBehaviorY.maxScrollPos + threshold + NEGATIVE_VALUE;\r\n this.scroll.scroller.scrollBehaviorY.setMovingDirection(NEGATIVE_VALUE);\r\n this.scroll.scrollTo(this.scroll.x, outOfBoundaryPos, this.scroll.options.bounceTime);\r\n };\r\n PullUp.pluginName = 'pullUpLoad';\r\n return PullUp;\r\n}());\n\nexport { PullUp as default };\n"],"sourceRoot":""}