{"version":3,"sources":["webpack:///./src/components/categoryTabs/CategoryTabs.vue?377b","webpack:///./node_modules/@better-scroll/core/dist/core.esm.js","webpack:///src/components/categoryTabs/CategoryTabs.vue","webpack:///./src/components/categoryTabs/CategoryTabs.vue?2a6f","webpack:///./src/components/categoryTabs/CategoryTabs.vue?c37f","webpack:///./src/components/categoryTabs/CategoryTabs.vue?622b"],"names":["render","_vm","this","_h","$createElement","_c","_self","ref","staticClass","_l","item","index","key","id","refInFor","class","selected","current","style","marginLeft","gutter","marginRight","list","length","on","e","tabChange","_t","_v","_s","name","staticRenderFns","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","__","constructor","create","__assign","assign","t","s","i","n","arguments","apply","__spreadArrays","il","r","k","a","j","jl","propertiesConfig","sourceKey","warn","msg","console","error","inBrowser","window","ua","navigator","userAgent","toLowerCase","isWeChatDevTools","test","isAndroid","indexOf","isIOSBadVersion","regex","matches","exec","parts","split","map","parseInt","supportsPassive","EventName","opts","defineProperty","get","addEventListener","getNow","performance","now","timing","navigationStart","Date","extend","target","source","isUndef","v","undefined","between","x","min","max","elementStyle","document","createElement","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","clearTimeout","noop","val","sharedPropertyDefinition","enumerable","configurable","set","getProperty","keys","lastKey","pop","setProperty","temp","propertiesProxy","EventEmitter","names","events","eventTypes","registerType","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","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","_d","Behavior","refresh","dist","setMovingDirection","setDirection","hasScroll","performDampingAlgorithm","movingDirection","dampingFactor","newPos","minScrollPos","maxScrollPos","bounces","momentumInfo","absDist","Math","abs","startPos","wrapperSize","destination","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","props","default","Number","data","preX","computed","wrapperWidth","$refs","scrollWrapper","contentWidth","childNodes","mounted","$nextTick","beforeDestroy","methods","scrollToCurrentItem","$emit","component"],"mappings":"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","file":"js/c-categoryTabs-CategoryTabs.2caf2419.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"scrollWrapper\",staticClass:\"category-tabs-component\"},[_c('ul',{staticClass:\"content\"},_vm._l((_vm.list),function(item,index){return _c('li',{key:item.id,ref:\"scrollItem\",refInFor:true,class:{ selected: index == _vm.current },style:({\n marginLeft: index !== 0 ? (_vm.gutter + \"px\") : 0,\n marginRight: index !== _vm.list.length - 1 ? (_vm.gutter + \"px\") : 0\n }),on:{\"click\":function (e) { return _vm.tabChange(item, index, e); }}},[_vm._t(\"default\",function(){return [_vm._v(\" \"+_vm._s(item.name)+\" \")]},{\"item\":item,\"index\":index})],2)}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\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","\n \n
\n - tabChange(item, index, e)\"\n >\n {{ item.name }} \n
\n
\n
\n\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CategoryTabs.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CategoryTabs.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CategoryTabs.vue?vue&type=template&id=bc115422&scoped=true&\"\nimport script from \"./CategoryTabs.vue?vue&type=script&lang=js&\"\nexport * from \"./CategoryTabs.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CategoryTabs.vue?vue&type=style&index=0&id=bc115422&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bc115422\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CategoryTabs.vue?vue&type=style&index=0&id=bc115422&lang=scss&scoped=true&\""],"sourceRoot":""}