{"version":3,"sources":["webpack:///./node_modules/@better-scroll/core/dist/core.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","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","cancelable","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","preventDefault","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"],"mappings":"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","file":"js/chunk-2d0b1e82.b3cd96e6.js","sourcesContent":["/*!\n * better-scroll / core\n * (c) 2016-2021 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'\r\n ? document.querySelector(el)\r\n : 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 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 e.preventDefault();\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 e.preventDefault();\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 default BScroll;\nexport { Behavior, CustomOptions, createBScroll };\n"],"sourceRoot":""}