{"version":3,"sources":["webpack:///./node_modules/iscroll/build/iscroll.js"],"names":["_typeof","Symbol","iterator","obj","constructor","prototype","window","document","Math","rAF","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","callback","setTimeout","utils","me","_elementStyle","createElement","style","_vendor","vendors","i","l","length","substr","_prefixStyle","charAt","toUpperCase","getTime","Date","now","extend","target","addEvent","el","type","fn","capture","addEventListener","removeEvent","removeEventListener","prefixPointerEvent","pointerEvent","MSPointerEvent","momentum","current","start","time","lowerMargin","wrapperSize","deceleration","destination","duration","distance","speed","abs","undefined","round","_transform","hasTransform","hasPerspective","hasTouch","hasPointer","PointerEvent","hasTransition","isBadAndroid","appVersion","navigator","test","safariVersion","match","parseFloat","transform","transitionTimingFunction","transitionDuration","transitionDelay","transformOrigin","hasClass","e","c","RegExp","className","addClass","newclass","split","push","join","removeClass","re","replace","offset","left","offsetLeft","top","offsetTop","offsetParent","preventDefaultException","exceptions","eventType","touchstart","touchmove","touchend","mousedown","mousemove","mouseup","pointerdown","pointermove","pointerup","MSPointerDown","MSPointerMove","MSPointerUp","ease","quadratic","k","circular","sqrt","back","bounce","elastic","pow","sin","f","PI","tap","eventName","ev","createEvent","initEvent","pageX","pageY","dispatchEvent","click","tagName","initMouseEvent","view","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","_constructed","IScroll","options","this","wrapper","querySelector","scroller","children","scrollerStyle","resizeScrollbars","mouseWheelSpeed","snapThreshold","disablePointer","disableTouch","disableMouse","startX","startY","scrollY","directionLockThreshold","bounceTime","bounceEasing","preventDefault","HWCompositing","useTransition","useTransform","bindToWrapper","onmousedown","translateZ","eventPassthrough","scrollX","freeScroll","resizePolling","shrinkScrollbars","invertWheelDirection","x","y","directionX","directionY","_events","_init","refresh","scrollTo","enable","createDefaultScrollbar","direction","interactive","scrollbar","indicator","cssText","height","width","pointerEvents","appendChild","Indicator","wrapperStyle","indicatorStyle","listenX","listenY","resize","defaultScrollbars","shrink","fade","speedRatioX","speedRatioY","sizeRatioX","sizeRatioY","maxPosX","maxPosY","durationProp","self","opacity","version","_initEvents","scrollbars","indicators","_initIndicators","mouseWheel","_initWheel","snap","_initSnap","keyBindings","_initKeys","destroy","clearTimeout","resizeTimeout","_execEvent","_transitionEnd","isInTransition","_transitionTime","resetPosition","_start","which","button","enabled","initiated","pos","point","touches","moved","distX","distY","directionLocked","startTime","getComputedPosition","_translate","isAnimating","absStartX","absStartY","pointX","pointY","_move","newX","newY","absDistX","absDistY","deltaX","deltaY","timestamp","endTime","hasHorizontalScroll","hasVerticalScroll","maxScrollX","maxScrollY","_end","changedTouches","momentumX","momentumY","distanceX","distanceY","easing","flick","wrapperWidth","wrapperHeight","max","_nearestSnap","currentPage","snapSpeed","min","_resize","that","disable","offsetHeight","clientWidth","clientHeight","scrollerWidth","offsetWidth","scrollerHeight","wrapperOffset","on","off","index","indexOf","splice","apply","slice","call","arguments","scrollBy","transitionType","_transitionTimingFunction","_animate","scrollToElement","offsetX","offsetY","nodeType","transitionTime","updatePosition","remove","matrix","getComputedStyle","interactiveScrollbars","customStyle","fadeScrollbars","concat","_indicatorsMap","wheelTimeout","_wheel","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","detail","goToPage","querySelectorAll","n","cx","cy","m","stepX","snapStepX","stepY","snapStepY","pages","snapThresholdX","snapThresholdY","posX","posY","next","prev","keys","pageUp","pageDown","end","home","up","right","down","charCodeAt","_key","prevTime","keyTime","keyAcceleration","keyCode","destX","destY","easingFn","destTime","step","handleEvent","stopPropagation","fadeTimeout","parentNode","removeChild","lastPointX","lastPointY","_pos","display","bottom","indicatorWidth","minBoundaryX","maxBoundaryX","indicatorHeight","minBoundaryY","maxBoundaryY","ignoreBoundaries","val","hold","visible","delay","bind","module","exports"],"mappings":"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","file":"js/vendors~application~login-5eefcc4c1cb82f73d20e.chunk.js","sourcesContent":["function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*! iScroll v5.2.0 ~ (c) 2008-2016 Matteo Spinelli ~ http://cubiq.org/license */\n(function (window, document, Math) {\n var rAF = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (callback) {\n window.setTimeout(callback, 1000 / 60);\n };\n\n var utils = function () {\n var me = {};\n var _elementStyle = document.createElement('div').style;\n\n var _vendor = function () {\n var vendors = ['t', 'webkitT', 'MozT', 'msT', 'OT'],\n transform,\n i = 0,\n l = vendors.length;\n\n for (; i < l; i++) {\n transform = vendors[i] + 'ransform';\n if (transform in _elementStyle) return vendors[i].substr(0, vendors[i].length - 1);\n }\n\n return false;\n }();\n\n function _prefixStyle(style) {\n if (_vendor === false) return false;\n if (_vendor === '') return style;\n return _vendor + style.charAt(0).toUpperCase() + style.substr(1);\n }\n\n me.getTime = Date.now || function getTime() {\n return new Date().getTime();\n };\n\n me.extend = function (target, obj) {\n for (var i in obj) {\n target[i] = obj[i];\n }\n };\n\n me.addEvent = function (el, type, fn, capture) {\n el.addEventListener(type, fn, !!capture);\n };\n\n me.removeEvent = function (el, type, fn, capture) {\n el.removeEventListener(type, fn, !!capture);\n };\n\n me.prefixPointerEvent = function (pointerEvent) {\n return window.MSPointerEvent ? 'MSPointer' + pointerEvent.charAt(7).toUpperCase() + pointerEvent.substr(8) : pointerEvent;\n };\n\n me.momentum = function (current, start, time, lowerMargin, wrapperSize, deceleration) {\n var distance = current - start,\n speed = Math.abs(distance) / time,\n destination,\n duration;\n deceleration = deceleration === undefined ? 0.0006 : deceleration;\n destination = current + speed * speed / (2 * deceleration) * (distance < 0 ? -1 : 1);\n duration = speed / deceleration;\n\n if (destination < lowerMargin) {\n destination = wrapperSize ? lowerMargin - wrapperSize / 2.5 * (speed / 8) : lowerMargin;\n distance = Math.abs(destination - current);\n duration = distance / speed;\n } else if (destination > 0) {\n destination = wrapperSize ? wrapperSize / 2.5 * (speed / 8) : 0;\n distance = Math.abs(current) + destination;\n duration = distance / speed;\n }\n\n return {\n destination: Math.round(destination),\n duration: duration\n };\n };\n\n var _transform = _prefixStyle('transform');\n\n me.extend(me, {\n hasTransform: _transform !== false,\n hasPerspective: _prefixStyle('perspective') in _elementStyle,\n hasTouch: 'ontouchstart' in window,\n hasPointer: !!(window.PointerEvent || window.MSPointerEvent),\n // IE10 is prefixed\n hasTransition: _prefixStyle('transition') in _elementStyle\n });\n /*\n This should find all Android browsers lower than build 535.19 (both stock browser and webview)\n - galaxy S2 is ok\n - 2.3.6 : `AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1`\n - 4.0.4 : `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30`\n - galaxy S3 is badAndroid (stock brower, webview)\n `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30`\n - galaxy S4 is badAndroid (stock brower, webview)\n `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30`\n - galaxy S5 is OK\n `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)`\n - galaxy S6 is OK\n `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)`\n */\n\n me.isBadAndroid = function () {\n var appVersion = window.navigator.appVersion; // Android browser is not a chrome browser.\n\n if (/Android/.test(appVersion) && !/Chrome\\/\\d/.test(appVersion)) {\n var safariVersion = appVersion.match(/Safari\\/(\\d+.\\d)/);\n\n if (safariVersion && _typeof(safariVersion) === \"object\" && safariVersion.length >= 2) {\n return parseFloat(safariVersion[1]) < 535.19;\n } else {\n return true;\n }\n } else {\n return false;\n }\n }();\n\n me.extend(me.style = {}, {\n transform: _transform,\n transitionTimingFunction: _prefixStyle('transitionTimingFunction'),\n transitionDuration: _prefixStyle('transitionDuration'),\n transitionDelay: _prefixStyle('transitionDelay'),\n transformOrigin: _prefixStyle('transformOrigin')\n });\n\n me.hasClass = function (e, c) {\n var re = new RegExp(\"(^|\\\\s)\" + c + \"(\\\\s|$)\");\n return re.test(e.className);\n };\n\n me.addClass = function (e, c) {\n if (me.hasClass(e, c)) {\n return;\n }\n\n var newclass = e.className.split(' ');\n newclass.push(c);\n e.className = newclass.join(' ');\n };\n\n me.removeClass = function (e, c) {\n if (!me.hasClass(e, c)) {\n return;\n }\n\n var re = new RegExp(\"(^|\\\\s)\" + c + \"(\\\\s|$)\", 'g');\n e.className = e.className.replace(re, ' ');\n };\n\n me.offset = function (el) {\n var left = -el.offsetLeft,\n top = -el.offsetTop; // jshint -W084\n\n while (el = el.offsetParent) {\n left -= el.offsetLeft;\n top -= el.offsetTop;\n } // jshint +W084\n\n\n return {\n left: left,\n top: top\n };\n };\n\n me.preventDefaultException = function (el, exceptions) {\n for (var i in exceptions) {\n if (exceptions[i].test(el[i])) {\n return true;\n }\n }\n\n return false;\n };\n\n me.extend(me.eventType = {}, {\n touchstart: 1,\n touchmove: 1,\n touchend: 1,\n mousedown: 2,\n mousemove: 2,\n mouseup: 2,\n pointerdown: 3,\n pointermove: 3,\n pointerup: 3,\n MSPointerDown: 3,\n MSPointerMove: 3,\n MSPointerUp: 3\n });\n me.extend(me.ease = {}, {\n quadratic: {\n style: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n fn: function fn(k) {\n return k * (2 - k);\n }\n },\n circular: {\n style: 'cubic-bezier(0.1, 0.57, 0.1, 1)',\n // Not properly \"circular\" but this looks better, it should be (0.075, 0.82, 0.165, 1)\n fn: function fn(k) {\n return Math.sqrt(1 - --k * k);\n }\n },\n back: {\n style: 'cubic-bezier(0.175, 0.885, 0.32, 1.275)',\n fn: function fn(k) {\n var b = 4;\n return (k = k - 1) * k * ((b + 1) * k + b) + 1;\n }\n },\n bounce: {\n style: '',\n fn: function fn(k) {\n if ((k /= 1) < 1 / 2.75) {\n return 7.5625 * k * k;\n } else if (k < 2 / 2.75) {\n return 7.5625 * (k -= 1.5 / 2.75) * k + 0.75;\n } else if (k < 2.5 / 2.75) {\n return 7.5625 * (k -= 2.25 / 2.75) * k + 0.9375;\n } else {\n return 7.5625 * (k -= 2.625 / 2.75) * k + 0.984375;\n }\n }\n },\n elastic: {\n style: '',\n fn: function fn(k) {\n var f = 0.22,\n e = 0.4;\n\n if (k === 0) {\n return 0;\n }\n\n if (k == 1) {\n return 1;\n }\n\n return e * Math.pow(2, -10 * k) * Math.sin((k - f / 4) * (2 * Math.PI) / f) + 1;\n }\n }\n });\n\n me.tap = function (e, eventName) {\n var ev = document.createEvent('Event');\n ev.initEvent(eventName, true, true);\n ev.pageX = e.pageX;\n ev.pageY = e.pageY;\n e.target.dispatchEvent(ev);\n };\n\n me.click = function (e) {\n var target = e.target,\n ev;\n\n if (!/(SELECT|INPUT|TEXTAREA)/i.test(target.tagName)) {\n ev = document.createEvent('MouseEvents');\n ev.initMouseEvent('click', true, true, e.view, 1, target.screenX, target.screenY, target.clientX, target.clientY, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, 0, null);\n ev._constructed = true;\n target.dispatchEvent(ev);\n }\n };\n\n return me;\n }();\n\n function IScroll(el, options) {\n this.wrapper = typeof el == 'string' ? document.querySelector(el) : el;\n this.scroller = this.wrapper.children[0];\n this.scrollerStyle = this.scroller.style; // cache style for better performance\n\n this.options = {\n resizeScrollbars: true,\n mouseWheelSpeed: 20,\n snapThreshold: 0.334,\n // INSERT POINT: OPTIONS\n disablePointer: !utils.hasPointer,\n disableTouch: utils.hasPointer || !utils.hasTouch,\n disableMouse: utils.hasPointer || utils.hasTouch,\n startX: 0,\n startY: 0,\n scrollY: true,\n directionLockThreshold: 5,\n momentum: true,\n bounce: true,\n bounceTime: 600,\n bounceEasing: '',\n preventDefault: true,\n preventDefaultException: {\n tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT)$/\n },\n HWCompositing: true,\n useTransition: true,\n useTransform: true,\n bindToWrapper: typeof window.onmousedown === \"undefined\"\n };\n\n for (var i in options) {\n this.options[i] = options[i];\n } // Normalize options\n\n\n this.translateZ = this.options.HWCompositing && utils.hasPerspective ? ' translateZ(0)' : '';\n this.options.useTransition = utils.hasTransition && this.options.useTransition;\n this.options.useTransform = utils.hasTransform && this.options.useTransform;\n this.options.eventPassthrough = this.options.eventPassthrough === true ? 'vertical' : this.options.eventPassthrough;\n this.options.preventDefault = !this.options.eventPassthrough && this.options.preventDefault; // If you want eventPassthrough I have to lock one of the axes\n\n this.options.scrollY = this.options.eventPassthrough == 'vertical' ? false : this.options.scrollY;\n this.options.scrollX = this.options.eventPassthrough == 'horizontal' ? false : this.options.scrollX; // With eventPassthrough we also need lockDirection mechanism\n\n this.options.freeScroll = this.options.freeScroll && !this.options.eventPassthrough;\n this.options.directionLockThreshold = this.options.eventPassthrough ? 0 : this.options.directionLockThreshold;\n this.options.bounceEasing = typeof this.options.bounceEasing == 'string' ? utils.ease[this.options.bounceEasing] || utils.ease.circular : this.options.bounceEasing;\n this.options.resizePolling = this.options.resizePolling === undefined ? 60 : this.options.resizePolling;\n\n if (this.options.tap === true) {\n this.options.tap = 'tap';\n }\n\n if (this.options.shrinkScrollbars == 'scale') {\n this.options.useTransition = false;\n }\n\n this.options.invertWheelDirection = this.options.invertWheelDirection ? -1 : 1; // INSERT POINT: NORMALIZATION\n // Some defaults\n\n this.x = 0;\n this.y = 0;\n this.directionX = 0;\n this.directionY = 0;\n this._events = {}; // INSERT POINT: DEFAULTS\n\n this._init();\n\n this.refresh();\n this.scrollTo(this.options.startX, this.options.startY);\n this.enable();\n }\n\n IScroll.prototype = {\n version: '5.2.0',\n _init: function _init() {\n this._initEvents();\n\n if (this.options.scrollbars || this.options.indicators) {\n this._initIndicators();\n }\n\n if (this.options.mouseWheel) {\n this._initWheel();\n }\n\n if (this.options.snap) {\n this._initSnap();\n }\n\n if (this.options.keyBindings) {\n this._initKeys();\n } // INSERT POINT: _init\n\n },\n destroy: function destroy() {\n this._initEvents(true);\n\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = null;\n\n this._execEvent('destroy');\n },\n _transitionEnd: function _transitionEnd(e) {\n if (e.target != this.scroller || !this.isInTransition) {\n return;\n }\n\n this._transitionTime();\n\n if (!this.resetPosition(this.options.bounceTime)) {\n this.isInTransition = false;\n\n this._execEvent('scrollEnd');\n }\n },\n _start: function _start(e) {\n // React to left mouse button only\n if (utils.eventType[e.type] != 1) {\n // for button property\n // http://unixpapa.com/js/mouse.html\n var button;\n\n if (!e.which) {\n /* IE case */\n button = e.button < 2 ? 0 : e.button == 4 ? 1 : 2;\n } else {\n /* All others */\n button = e.button;\n }\n\n if (button !== 0) {\n return;\n }\n }\n\n if (!this.enabled || this.initiated && utils.eventType[e.type] !== this.initiated) {\n return;\n }\n\n if (this.options.preventDefault && !utils.isBadAndroid && !utils.preventDefaultException(e.target, this.options.preventDefaultException)) {\n e.preventDefault();\n }\n\n var point = e.touches ? e.touches[0] : e,\n pos;\n this.initiated = utils.eventType[e.type];\n this.moved = false;\n this.distX = 0;\n this.distY = 0;\n this.directionX = 0;\n this.directionY = 0;\n this.directionLocked = 0;\n this.startTime = utils.getTime();\n\n if (this.options.useTransition && this.isInTransition) {\n this._transitionTime();\n\n this.isInTransition = false;\n pos = this.getComputedPosition();\n\n this._translate(Math.round(pos.x), Math.round(pos.y));\n\n this._execEvent('scrollEnd');\n } else if (!this.options.useTransition && this.isAnimating) {\n this.isAnimating = false;\n\n this._execEvent('scrollEnd');\n }\n\n this.startX = this.x;\n this.startY = this.y;\n this.absStartX = this.x;\n this.absStartY = this.y;\n this.pointX = point.pageX;\n this.pointY = point.pageY;\n\n this._execEvent('beforeScrollStart');\n },\n _move: function _move(e) {\n if (!this.enabled || utils.eventType[e.type] !== this.initiated) {\n return;\n }\n\n if (this.options.preventDefault) {\n // increases performance on Android? TODO: check!\n e.preventDefault();\n }\n\n var point = e.touches ? e.touches[0] : e,\n deltaX = point.pageX - this.pointX,\n deltaY = point.pageY - this.pointY,\n timestamp = utils.getTime(),\n newX,\n newY,\n absDistX,\n absDistY;\n this.pointX = point.pageX;\n this.pointY = point.pageY;\n this.distX += deltaX;\n this.distY += deltaY;\n absDistX = Math.abs(this.distX);\n absDistY = Math.abs(this.distY); // We need to move at least 10 pixels for the scrolling to initiate\n\n if (timestamp - this.endTime > 300 && absDistX < 10 && absDistY < 10) {\n return;\n } // If you are scrolling in one direction lock the other\n\n\n if (!this.directionLocked && !this.options.freeScroll) {\n if (absDistX > absDistY + this.options.directionLockThreshold) {\n this.directionLocked = 'h'; // lock horizontally\n } else if (absDistY >= absDistX + this.options.directionLockThreshold) {\n this.directionLocked = 'v'; // lock vertically\n } else {\n this.directionLocked = 'n'; // no lock\n }\n }\n\n if (this.directionLocked == 'h') {\n if (this.options.eventPassthrough == 'vertical') {\n e.preventDefault();\n } else if (this.options.eventPassthrough == 'horizontal') {\n this.initiated = false;\n return;\n }\n\n deltaY = 0;\n } else if (this.directionLocked == 'v') {\n if (this.options.eventPassthrough == 'horizontal') {\n e.preventDefault();\n } else if (this.options.eventPassthrough == 'vertical') {\n this.initiated = false;\n return;\n }\n\n deltaX = 0;\n }\n\n deltaX = this.hasHorizontalScroll ? deltaX : 0;\n deltaY = this.hasVerticalScroll ? deltaY : 0;\n newX = this.x + deltaX;\n newY = this.y + deltaY; // Slow down if outside of the boundaries\n\n if (newX > 0 || newX < this.maxScrollX) {\n newX = this.options.bounce ? this.x + deltaX / 3 : newX > 0 ? 0 : this.maxScrollX;\n }\n\n if (newY > 0 || newY < this.maxScrollY) {\n newY = this.options.bounce ? this.y + deltaY / 3 : newY > 0 ? 0 : this.maxScrollY;\n }\n\n this.directionX = deltaX > 0 ? -1 : deltaX < 0 ? 1 : 0;\n this.directionY = deltaY > 0 ? -1 : deltaY < 0 ? 1 : 0;\n\n if (!this.moved) {\n this._execEvent('scrollStart');\n }\n\n this.moved = true;\n\n this._translate(newX, newY);\n /* REPLACE START: _move */\n\n\n if (timestamp - this.startTime > 300) {\n this.startTime = timestamp;\n this.startX = this.x;\n this.startY = this.y;\n }\n /* REPLACE END: _move */\n\n },\n _end: function _end(e) {\n if (!this.enabled || utils.eventType[e.type] !== this.initiated) {\n return;\n }\n\n if (this.options.preventDefault && !utils.preventDefaultException(e.target, this.options.preventDefaultException)) {\n e.preventDefault();\n }\n\n var point = e.changedTouches ? e.changedTouches[0] : e,\n momentumX,\n momentumY,\n duration = utils.getTime() - this.startTime,\n newX = Math.round(this.x),\n newY = Math.round(this.y),\n distanceX = Math.abs(newX - this.startX),\n distanceY = Math.abs(newY - this.startY),\n time = 0,\n easing = '';\n this.isInTransition = 0;\n this.initiated = 0;\n this.endTime = utils.getTime(); // reset if we are outside of the boundaries\n\n if (this.resetPosition(this.options.bounceTime)) {\n return;\n }\n\n this.scrollTo(newX, newY); // ensures that the last position is rounded\n // we scrolled less than 10 pixels\n\n if (!this.moved) {\n if (this.options.tap) {\n utils.tap(e, this.options.tap);\n }\n\n if (this.options.click) {\n utils.click(e);\n }\n\n this._execEvent('scrollCancel');\n\n return;\n }\n\n if (this._events.flick && duration < 200 && distanceX < 100 && distanceY < 100) {\n this._execEvent('flick');\n\n return;\n } // start momentum animation if needed\n\n\n if (this.options.momentum && duration < 300) {\n momentumX = this.hasHorizontalScroll ? utils.momentum(this.x, this.startX, duration, this.maxScrollX, this.options.bounce ? this.wrapperWidth : 0, this.options.deceleration) : {\n destination: newX,\n duration: 0\n };\n momentumY = this.hasVerticalScroll ? utils.momentum(this.y, this.startY, duration, this.maxScrollY, this.options.bounce ? this.wrapperHeight : 0, this.options.deceleration) : {\n destination: newY,\n duration: 0\n };\n newX = momentumX.destination;\n newY = momentumY.destination;\n time = Math.max(momentumX.duration, momentumY.duration);\n this.isInTransition = 1;\n }\n\n if (this.options.snap) {\n var snap = this._nearestSnap(newX, newY);\n\n this.currentPage = snap;\n time = this.options.snapSpeed || Math.max(Math.max(Math.min(Math.abs(newX - snap.x), 1000), Math.min(Math.abs(newY - snap.y), 1000)), 300);\n newX = snap.x;\n newY = snap.y;\n this.directionX = 0;\n this.directionY = 0;\n easing = this.options.bounceEasing;\n } // INSERT POINT: _end\n\n\n if (newX != this.x || newY != this.y) {\n // change easing function when scroller goes out of the boundaries\n if (newX > 0 || newX < this.maxScrollX || newY > 0 || newY < this.maxScrollY) {\n easing = utils.ease.quadratic;\n }\n\n this.scrollTo(newX, newY, time, easing);\n return;\n }\n\n this._execEvent('scrollEnd');\n },\n _resize: function _resize() {\n var that = this;\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = setTimeout(function () {\n that.refresh();\n }, this.options.resizePolling);\n },\n resetPosition: function resetPosition(time) {\n var x = this.x,\n y = this.y;\n time = time || 0;\n\n if (!this.hasHorizontalScroll || this.x > 0) {\n x = 0;\n } else if (this.x < this.maxScrollX) {\n x = this.maxScrollX;\n }\n\n if (!this.hasVerticalScroll || this.y > 0) {\n y = 0;\n } else if (this.y < this.maxScrollY) {\n y = this.maxScrollY;\n }\n\n if (x == this.x && y == this.y) {\n return false;\n }\n\n this.scrollTo(x, y, time, this.options.bounceEasing);\n return true;\n },\n disable: function disable() {\n this.enabled = false;\n },\n enable: function enable() {\n this.enabled = true;\n },\n refresh: function refresh() {\n var rf = this.wrapper.offsetHeight; // Force reflow\n\n this.wrapperWidth = this.wrapper.clientWidth;\n this.wrapperHeight = this.wrapper.clientHeight;\n /* REPLACE START: refresh */\n\n this.scrollerWidth = this.scroller.offsetWidth;\n this.scrollerHeight = this.scroller.offsetHeight;\n this.maxScrollX = this.wrapperWidth - this.scrollerWidth;\n this.maxScrollY = this.wrapperHeight - this.scrollerHeight;\n /* REPLACE END: refresh */\n\n this.hasHorizontalScroll = this.options.scrollX && this.maxScrollX < 0;\n this.hasVerticalScroll = this.options.scrollY && this.maxScrollY < 0;\n\n if (!this.hasHorizontalScroll) {\n this.maxScrollX = 0;\n this.scrollerWidth = this.wrapperWidth;\n }\n\n if (!this.hasVerticalScroll) {\n this.maxScrollY = 0;\n this.scrollerHeight = this.wrapperHeight;\n }\n\n this.endTime = 0;\n this.directionX = 0;\n this.directionY = 0;\n this.wrapperOffset = utils.offset(this.wrapper);\n\n this._execEvent('refresh');\n\n this.resetPosition(); // INSERT POINT: _refresh\n },\n on: function on(type, fn) {\n if (!this._events[type]) {\n this._events[type] = [];\n }\n\n this._events[type].push(fn);\n },\n off: function off(type, fn) {\n if (!this._events[type]) {\n return;\n }\n\n var index = this._events[type].indexOf(fn);\n\n if (index > -1) {\n this._events[type].splice(index, 1);\n }\n },\n _execEvent: function _execEvent(type) {\n if (!this._events[type]) {\n return;\n }\n\n var i = 0,\n l = this._events[type].length;\n\n if (!l) {\n return;\n }\n\n for (; i < l; i++) {\n this._events[type][i].apply(this, [].slice.call(arguments, 1));\n }\n },\n scrollBy: function scrollBy(x, y, time, easing) {\n x = this.x + x;\n y = this.y + y;\n time = time || 0;\n this.scrollTo(x, y, time, easing);\n },\n scrollTo: function scrollTo(x, y, time, easing) {\n easing = easing || utils.ease.circular;\n this.isInTransition = this.options.useTransition && time > 0;\n var transitionType = this.options.useTransition && easing.style;\n\n if (!time || transitionType) {\n if (transitionType) {\n this._transitionTimingFunction(easing.style);\n\n this._transitionTime(time);\n }\n\n this._translate(x, y);\n } else {\n this._animate(x, y, time, easing.fn);\n }\n },\n scrollToElement: function scrollToElement(el, time, offsetX, offsetY, easing) {\n el = el.nodeType ? el : this.scroller.querySelector(el);\n\n if (!el) {\n return;\n }\n\n var pos = utils.offset(el);\n pos.left -= this.wrapperOffset.left;\n pos.top -= this.wrapperOffset.top; // if offsetX/Y are true we center the element to the screen\n\n if (offsetX === true) {\n offsetX = Math.round(el.offsetWidth / 2 - this.wrapper.offsetWidth / 2);\n }\n\n if (offsetY === true) {\n offsetY = Math.round(el.offsetHeight / 2 - this.wrapper.offsetHeight / 2);\n }\n\n pos.left -= offsetX || 0;\n pos.top -= offsetY || 0;\n pos.left = pos.left > 0 ? 0 : pos.left < this.maxScrollX ? this.maxScrollX : pos.left;\n pos.top = pos.top > 0 ? 0 : pos.top < this.maxScrollY ? this.maxScrollY : pos.top;\n time = time === undefined || time === null || time === 'auto' ? Math.max(Math.abs(this.x - pos.left), Math.abs(this.y - pos.top)) : time;\n this.scrollTo(pos.left, pos.top, time, easing);\n },\n _transitionTime: function _transitionTime(time) {\n time = time || 0;\n var durationProp = utils.style.transitionDuration;\n this.scrollerStyle[durationProp] = time + 'ms';\n\n if (!time && utils.isBadAndroid) {\n this.scrollerStyle[durationProp] = '0.0001ms'; // remove 0.0001ms\n\n var self = this;\n rAF(function () {\n if (self.scrollerStyle[durationProp] === '0.0001ms') {\n self.scrollerStyle[durationProp] = '0s';\n }\n });\n }\n\n if (this.indicators) {\n for (var i = this.indicators.length; i--;) {\n this.indicators[i].transitionTime(time);\n }\n } // INSERT POINT: _transitionTime\n\n },\n _transitionTimingFunction: function _transitionTimingFunction(easing) {\n this.scrollerStyle[utils.style.transitionTimingFunction] = easing;\n\n if (this.indicators) {\n for (var i = this.indicators.length; i--;) {\n this.indicators[i].transitionTimingFunction(easing);\n }\n } // INSERT POINT: _transitionTimingFunction\n\n },\n _translate: function _translate(x, y) {\n if (this.options.useTransform) {\n /* REPLACE START: _translate */\n this.scrollerStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.translateZ;\n /* REPLACE END: _translate */\n } else {\n x = Math.round(x);\n y = Math.round(y);\n this.scrollerStyle.left = x + 'px';\n this.scrollerStyle.top = y + 'px';\n }\n\n this.x = x;\n this.y = y;\n\n if (this.indicators) {\n for (var i = this.indicators.length; i--;) {\n this.indicators[i].updatePosition();\n }\n } // INSERT POINT: _translate\n\n },\n _initEvents: function _initEvents(remove) {\n var eventType = remove ? utils.removeEvent : utils.addEvent,\n target = this.options.bindToWrapper ? this.wrapper : window;\n eventType(window, 'orientationchange', this);\n eventType(window, 'resize', this);\n\n if (this.options.click) {\n eventType(this.wrapper, 'click', this, true);\n }\n\n if (!this.options.disableMouse) {\n eventType(this.wrapper, 'mousedown', this);\n eventType(target, 'mousemove', this);\n eventType(target, 'mousecancel', this);\n eventType(target, 'mouseup', this);\n }\n\n if (utils.hasPointer && !this.options.disablePointer) {\n eventType(this.wrapper, utils.prefixPointerEvent('pointerdown'), this);\n eventType(target, utils.prefixPointerEvent('pointermove'), this);\n eventType(target, utils.prefixPointerEvent('pointercancel'), this);\n eventType(target, utils.prefixPointerEvent('pointerup'), this);\n }\n\n if (utils.hasTouch && !this.options.disableTouch) {\n eventType(this.wrapper, 'touchstart', this);\n eventType(target, 'touchmove', this);\n eventType(target, 'touchcancel', this);\n eventType(target, 'touchend', this);\n }\n\n eventType(this.scroller, 'transitionend', this);\n eventType(this.scroller, 'webkitTransitionEnd', this);\n eventType(this.scroller, 'oTransitionEnd', this);\n eventType(this.scroller, 'MSTransitionEnd', this);\n },\n getComputedPosition: function getComputedPosition() {\n var matrix = window.getComputedStyle(this.scroller, null),\n x,\n y;\n\n if (this.options.useTransform) {\n matrix = matrix[utils.style.transform].split(')')[0].split(', ');\n x = +(matrix[12] || matrix[4]);\n y = +(matrix[13] || matrix[5]);\n } else {\n x = +matrix.left.replace(/[^-\\d.]/g, '');\n y = +matrix.top.replace(/[^-\\d.]/g, '');\n }\n\n return {\n x: x,\n y: y\n };\n },\n _initIndicators: function _initIndicators() {\n var interactive = this.options.interactiveScrollbars,\n customStyle = typeof this.options.scrollbars != 'string',\n indicators = [],\n indicator;\n var that = this;\n this.indicators = [];\n\n if (this.options.scrollbars) {\n // Vertical scrollbar\n if (this.options.scrollY) {\n indicator = {\n el: createDefaultScrollbar('v', interactive, this.options.scrollbars),\n interactive: interactive,\n defaultScrollbars: true,\n customStyle: customStyle,\n resize: this.options.resizeScrollbars,\n shrink: this.options.shrinkScrollbars,\n fade: this.options.fadeScrollbars,\n listenX: false\n };\n this.wrapper.appendChild(indicator.el);\n indicators.push(indicator);\n } // Horizontal scrollbar\n\n\n if (this.options.scrollX) {\n indicator = {\n el: createDefaultScrollbar('h', interactive, this.options.scrollbars),\n interactive: interactive,\n defaultScrollbars: true,\n customStyle: customStyle,\n resize: this.options.resizeScrollbars,\n shrink: this.options.shrinkScrollbars,\n fade: this.options.fadeScrollbars,\n listenY: false\n };\n this.wrapper.appendChild(indicator.el);\n indicators.push(indicator);\n }\n }\n\n if (this.options.indicators) {\n // TODO: check concat compatibility\n indicators = indicators.concat(this.options.indicators);\n }\n\n for (var i = indicators.length; i--;) {\n this.indicators.push(new Indicator(this, indicators[i]));\n } // TODO: check if we can use array.map (wide compatibility and performance issues)\n\n\n function _indicatorsMap(fn) {\n if (that.indicators) {\n for (var i = that.indicators.length; i--;) {\n fn.call(that.indicators[i]);\n }\n }\n }\n\n if (this.options.fadeScrollbars) {\n this.on('scrollEnd', function () {\n _indicatorsMap(function () {\n this.fade();\n });\n });\n this.on('scrollCancel', function () {\n _indicatorsMap(function () {\n this.fade();\n });\n });\n this.on('scrollStart', function () {\n _indicatorsMap(function () {\n this.fade(1);\n });\n });\n this.on('beforeScrollStart', function () {\n _indicatorsMap(function () {\n this.fade(1, true);\n });\n });\n }\n\n this.on('refresh', function () {\n _indicatorsMap(function () {\n this.refresh();\n });\n });\n this.on('destroy', function () {\n _indicatorsMap(function () {\n this.destroy();\n });\n\n delete this.indicators;\n });\n },\n _initWheel: function _initWheel() {\n utils.addEvent(this.wrapper, 'wheel', this);\n utils.addEvent(this.wrapper, 'mousewheel', this);\n utils.addEvent(this.wrapper, 'DOMMouseScroll', this);\n this.on('destroy', function () {\n clearTimeout(this.wheelTimeout);\n this.wheelTimeout = null;\n utils.removeEvent(this.wrapper, 'wheel', this);\n utils.removeEvent(this.wrapper, 'mousewheel', this);\n utils.removeEvent(this.wrapper, 'DOMMouseScroll', this);\n });\n },\n _wheel: function _wheel(e) {\n if (!this.enabled) {\n return;\n }\n\n e.preventDefault();\n var wheelDeltaX,\n wheelDeltaY,\n newX,\n newY,\n that = this;\n\n if (this.wheelTimeout === undefined) {\n that._execEvent('scrollStart');\n } // Execute the scrollEnd event after 400ms the wheel stopped scrolling\n\n\n clearTimeout(this.wheelTimeout);\n this.wheelTimeout = setTimeout(function () {\n if (!that.options.snap) {\n that._execEvent('scrollEnd');\n }\n\n that.wheelTimeout = undefined;\n }, 400);\n\n if ('deltaX' in e) {\n if (e.deltaMode === 1) {\n wheelDeltaX = -e.deltaX * this.options.mouseWheelSpeed;\n wheelDeltaY = -e.deltaY * this.options.mouseWheelSpeed;\n } else {\n wheelDeltaX = -e.deltaX;\n wheelDeltaY = -e.deltaY;\n }\n } else if ('wheelDeltaX' in e) {\n wheelDeltaX = e.wheelDeltaX / 120 * this.options.mouseWheelSpeed;\n wheelDeltaY = e.wheelDeltaY / 120 * this.options.mouseWheelSpeed;\n } else if ('wheelDelta' in e) {\n wheelDeltaX = wheelDeltaY = e.wheelDelta / 120 * this.options.mouseWheelSpeed;\n } else if ('detail' in e) {\n wheelDeltaX = wheelDeltaY = -e.detail / 3 * this.options.mouseWheelSpeed;\n } else {\n return;\n }\n\n wheelDeltaX *= this.options.invertWheelDirection;\n wheelDeltaY *= this.options.invertWheelDirection;\n\n if (!this.hasVerticalScroll) {\n wheelDeltaX = wheelDeltaY;\n wheelDeltaY = 0;\n }\n\n if (this.options.snap) {\n newX = this.currentPage.pageX;\n newY = this.currentPage.pageY;\n\n if (wheelDeltaX > 0) {\n newX--;\n } else if (wheelDeltaX < 0) {\n newX++;\n }\n\n if (wheelDeltaY > 0) {\n newY--;\n } else if (wheelDeltaY < 0) {\n newY++;\n }\n\n this.goToPage(newX, newY);\n return;\n }\n\n newX = this.x + Math.round(this.hasHorizontalScroll ? wheelDeltaX : 0);\n newY = this.y + Math.round(this.hasVerticalScroll ? wheelDeltaY : 0);\n this.directionX = wheelDeltaX > 0 ? -1 : wheelDeltaX < 0 ? 1 : 0;\n this.directionY = wheelDeltaY > 0 ? -1 : wheelDeltaY < 0 ? 1 : 0;\n\n if (newX > 0) {\n newX = 0;\n } else if (newX < this.maxScrollX) {\n newX = this.maxScrollX;\n }\n\n if (newY > 0) {\n newY = 0;\n } else if (newY < this.maxScrollY) {\n newY = this.maxScrollY;\n }\n\n this.scrollTo(newX, newY, 0); // INSERT POINT: _wheel\n },\n _initSnap: function _initSnap() {\n this.currentPage = {};\n\n if (typeof this.options.snap == 'string') {\n this.options.snap = this.scroller.querySelectorAll(this.options.snap);\n }\n\n this.on('refresh', function () {\n var i = 0,\n l,\n m = 0,\n n,\n cx,\n cy,\n x = 0,\n y,\n stepX = this.options.snapStepX || this.wrapperWidth,\n stepY = this.options.snapStepY || this.wrapperHeight,\n el;\n this.pages = [];\n\n if (!this.wrapperWidth || !this.wrapperHeight || !this.scrollerWidth || !this.scrollerHeight) {\n return;\n }\n\n if (this.options.snap === true) {\n cx = Math.round(stepX / 2);\n cy = Math.round(stepY / 2);\n\n while (x > -this.scrollerWidth) {\n this.pages[i] = [];\n l = 0;\n y = 0;\n\n while (y > -this.scrollerHeight) {\n this.pages[i][l] = {\n x: Math.max(x, this.maxScrollX),\n y: Math.max(y, this.maxScrollY),\n width: stepX,\n height: stepY,\n cx: x - cx,\n cy: y - cy\n };\n y -= stepY;\n l++;\n }\n\n x -= stepX;\n i++;\n }\n } else {\n el = this.options.snap;\n l = el.length;\n n = -1;\n\n for (; i < l; i++) {\n if (i === 0 || el[i].offsetLeft <= el[i - 1].offsetLeft) {\n m = 0;\n n++;\n }\n\n if (!this.pages[m]) {\n this.pages[m] = [];\n }\n\n x = Math.max(-el[i].offsetLeft, this.maxScrollX);\n y = Math.max(-el[i].offsetTop, this.maxScrollY);\n cx = x - Math.round(el[i].offsetWidth / 2);\n cy = y - Math.round(el[i].offsetHeight / 2);\n this.pages[m][n] = {\n x: x,\n y: y,\n width: el[i].offsetWidth,\n height: el[i].offsetHeight,\n cx: cx,\n cy: cy\n };\n\n if (x > this.maxScrollX) {\n m++;\n }\n }\n }\n\n this.goToPage(this.currentPage.pageX || 0, this.currentPage.pageY || 0, 0); // Update snap threshold if needed\n\n if (this.options.snapThreshold % 1 === 0) {\n this.snapThresholdX = this.options.snapThreshold;\n this.snapThresholdY = this.options.snapThreshold;\n } else {\n this.snapThresholdX = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].width * this.options.snapThreshold);\n this.snapThresholdY = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].height * this.options.snapThreshold);\n }\n });\n this.on('flick', function () {\n var time = this.options.snapSpeed || Math.max(Math.max(Math.min(Math.abs(this.x - this.startX), 1000), Math.min(Math.abs(this.y - this.startY), 1000)), 300);\n this.goToPage(this.currentPage.pageX + this.directionX, this.currentPage.pageY + this.directionY, time);\n });\n },\n _nearestSnap: function _nearestSnap(x, y) {\n if (!this.pages.length) {\n return {\n x: 0,\n y: 0,\n pageX: 0,\n pageY: 0\n };\n }\n\n var i = 0,\n l = this.pages.length,\n m = 0; // Check if we exceeded the snap threshold\n\n if (Math.abs(x - this.absStartX) < this.snapThresholdX && Math.abs(y - this.absStartY) < this.snapThresholdY) {\n return this.currentPage;\n }\n\n if (x > 0) {\n x = 0;\n } else if (x < this.maxScrollX) {\n x = this.maxScrollX;\n }\n\n if (y > 0) {\n y = 0;\n } else if (y < this.maxScrollY) {\n y = this.maxScrollY;\n }\n\n for (; i < l; i++) {\n if (x >= this.pages[i][0].cx) {\n x = this.pages[i][0].x;\n break;\n }\n }\n\n l = this.pages[i].length;\n\n for (; m < l; m++) {\n if (y >= this.pages[0][m].cy) {\n y = this.pages[0][m].y;\n break;\n }\n }\n\n if (i == this.currentPage.pageX) {\n i += this.directionX;\n\n if (i < 0) {\n i = 0;\n } else if (i >= this.pages.length) {\n i = this.pages.length - 1;\n }\n\n x = this.pages[i][0].x;\n }\n\n if (m == this.currentPage.pageY) {\n m += this.directionY;\n\n if (m < 0) {\n m = 0;\n } else if (m >= this.pages[0].length) {\n m = this.pages[0].length - 1;\n }\n\n y = this.pages[0][m].y;\n }\n\n return {\n x: x,\n y: y,\n pageX: i,\n pageY: m\n };\n },\n goToPage: function goToPage(x, y, time, easing) {\n easing = easing || this.options.bounceEasing;\n\n if (x >= this.pages.length) {\n x = this.pages.length - 1;\n } else if (x < 0) {\n x = 0;\n }\n\n if (y >= this.pages[x].length) {\n y = this.pages[x].length - 1;\n } else if (y < 0) {\n y = 0;\n }\n\n var posX = this.pages[x][y].x,\n posY = this.pages[x][y].y;\n time = time === undefined ? this.options.snapSpeed || Math.max(Math.max(Math.min(Math.abs(posX - this.x), 1000), Math.min(Math.abs(posY - this.y), 1000)), 300) : time;\n this.currentPage = {\n x: posX,\n y: posY,\n pageX: x,\n pageY: y\n };\n this.scrollTo(posX, posY, time, easing);\n },\n next: function next(time, easing) {\n var x = this.currentPage.pageX,\n y = this.currentPage.pageY;\n x++;\n\n if (x >= this.pages.length && this.hasVerticalScroll) {\n x = 0;\n y++;\n }\n\n this.goToPage(x, y, time, easing);\n },\n prev: function prev(time, easing) {\n var x = this.currentPage.pageX,\n y = this.currentPage.pageY;\n x--;\n\n if (x < 0 && this.hasVerticalScroll) {\n x = 0;\n y--;\n }\n\n this.goToPage(x, y, time, easing);\n },\n _initKeys: function _initKeys(e) {\n // default key bindings\n var keys = {\n pageUp: 33,\n pageDown: 34,\n end: 35,\n home: 36,\n left: 37,\n up: 38,\n right: 39,\n down: 40\n };\n var i; // if you give me characters I give you keycode\n\n if (_typeof(this.options.keyBindings) == 'object') {\n for (i in this.options.keyBindings) {\n if (typeof this.options.keyBindings[i] == 'string') {\n this.options.keyBindings[i] = this.options.keyBindings[i].toUpperCase().charCodeAt(0);\n }\n }\n } else {\n this.options.keyBindings = {};\n }\n\n for (i in keys) {\n this.options.keyBindings[i] = this.options.keyBindings[i] || keys[i];\n }\n\n utils.addEvent(window, 'keydown', this);\n this.on('destroy', function () {\n utils.removeEvent(window, 'keydown', this);\n });\n },\n _key: function _key(e) {\n if (!this.enabled) {\n return;\n }\n\n var snap = this.options.snap,\n // we are using this alot, better to cache it\n newX = snap ? this.currentPage.pageX : this.x,\n newY = snap ? this.currentPage.pageY : this.y,\n now = utils.getTime(),\n prevTime = this.keyTime || 0,\n acceleration = 0.250,\n pos;\n\n if (this.options.useTransition && this.isInTransition) {\n pos = this.getComputedPosition();\n\n this._translate(Math.round(pos.x), Math.round(pos.y));\n\n this.isInTransition = false;\n }\n\n this.keyAcceleration = now - prevTime < 200 ? Math.min(this.keyAcceleration + acceleration, 50) : 0;\n\n switch (e.keyCode) {\n case this.options.keyBindings.pageUp:\n if (this.hasHorizontalScroll && !this.hasVerticalScroll) {\n newX += snap ? 1 : this.wrapperWidth;\n } else {\n newY += snap ? 1 : this.wrapperHeight;\n }\n\n break;\n\n case this.options.keyBindings.pageDown:\n if (this.hasHorizontalScroll && !this.hasVerticalScroll) {\n newX -= snap ? 1 : this.wrapperWidth;\n } else {\n newY -= snap ? 1 : this.wrapperHeight;\n }\n\n break;\n\n case this.options.keyBindings.end:\n newX = snap ? this.pages.length - 1 : this.maxScrollX;\n newY = snap ? this.pages[0].length - 1 : this.maxScrollY;\n break;\n\n case this.options.keyBindings.home:\n newX = 0;\n newY = 0;\n break;\n\n case this.options.keyBindings.left:\n newX += snap ? -1 : 5 + this.keyAcceleration >> 0;\n break;\n\n case this.options.keyBindings.up:\n newY += snap ? 1 : 5 + this.keyAcceleration >> 0;\n break;\n\n case this.options.keyBindings.right:\n newX -= snap ? -1 : 5 + this.keyAcceleration >> 0;\n break;\n\n case this.options.keyBindings.down:\n newY -= snap ? 1 : 5 + this.keyAcceleration >> 0;\n break;\n\n default:\n return;\n }\n\n if (snap) {\n this.goToPage(newX, newY);\n return;\n }\n\n if (newX > 0) {\n newX = 0;\n this.keyAcceleration = 0;\n } else if (newX < this.maxScrollX) {\n newX = this.maxScrollX;\n this.keyAcceleration = 0;\n }\n\n if (newY > 0) {\n newY = 0;\n this.keyAcceleration = 0;\n } else if (newY < this.maxScrollY) {\n newY = this.maxScrollY;\n this.keyAcceleration = 0;\n }\n\n this.scrollTo(newX, newY, 0);\n this.keyTime = now;\n },\n _animate: function _animate(destX, destY, duration, easingFn) {\n var that = this,\n startX = this.x,\n startY = this.y,\n startTime = utils.getTime(),\n destTime = startTime + duration;\n\n function step() {\n var now = utils.getTime(),\n newX,\n newY,\n easing;\n\n if (now >= destTime) {\n that.isAnimating = false;\n\n that._translate(destX, destY);\n\n if (!that.resetPosition(that.options.bounceTime)) {\n that._execEvent('scrollEnd');\n }\n\n return;\n }\n\n now = (now - startTime) / duration;\n easing = easingFn(now);\n newX = (destX - startX) * easing + startX;\n newY = (destY - startY) * easing + startY;\n\n that._translate(newX, newY);\n\n if (that.isAnimating) {\n rAF(step);\n }\n }\n\n this.isAnimating = true;\n step();\n },\n handleEvent: function handleEvent(e) {\n switch (e.type) {\n case 'touchstart':\n case 'pointerdown':\n case 'MSPointerDown':\n case 'mousedown':\n this._start(e);\n\n break;\n\n case 'touchmove':\n case 'pointermove':\n case 'MSPointerMove':\n case 'mousemove':\n this._move(e);\n\n break;\n\n case 'touchend':\n case 'pointerup':\n case 'MSPointerUp':\n case 'mouseup':\n case 'touchcancel':\n case 'pointercancel':\n case 'MSPointerCancel':\n case 'mousecancel':\n this._end(e);\n\n break;\n\n case 'orientationchange':\n case 'resize':\n this._resize();\n\n break;\n\n case 'transitionend':\n case 'webkitTransitionEnd':\n case 'oTransitionEnd':\n case 'MSTransitionEnd':\n this._transitionEnd(e);\n\n break;\n\n case 'wheel':\n case 'DOMMouseScroll':\n case 'mousewheel':\n this._wheel(e);\n\n break;\n\n case 'keydown':\n this._key(e);\n\n break;\n\n case 'click':\n if (this.enabled && !e._constructed) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n break;\n }\n }\n };\n\n function createDefaultScrollbar(direction, interactive, type) {\n var scrollbar = document.createElement('div'),\n indicator = document.createElement('div');\n\n if (type === true) {\n scrollbar.style.cssText = 'position:absolute;z-index:9999';\n indicator.style.cssText = '-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);border-radius:3px';\n }\n\n indicator.className = 'iScrollIndicator';\n\n if (direction == 'h') {\n if (type === true) {\n scrollbar.style.cssText += ';height:7px;left:2px;right:2px;bottom:0';\n indicator.style.height = '100%';\n }\n\n scrollbar.className = 'iScrollHorizontalScrollbar';\n } else {\n if (type === true) {\n scrollbar.style.cssText += ';width:7px;bottom:2px;top:2px;right:1px';\n indicator.style.width = '100%';\n }\n\n scrollbar.className = 'iScrollVerticalScrollbar';\n }\n\n scrollbar.style.cssText += ';overflow:hidden';\n\n if (!interactive) {\n scrollbar.style.pointerEvents = 'none';\n }\n\n scrollbar.appendChild(indicator);\n return scrollbar;\n }\n\n function Indicator(scroller, options) {\n this.wrapper = typeof options.el == 'string' ? document.querySelector(options.el) : options.el;\n this.wrapperStyle = this.wrapper.style;\n this.indicator = this.wrapper.children[0];\n this.indicatorStyle = this.indicator.style;\n this.scroller = scroller;\n this.options = {\n listenX: true,\n listenY: true,\n interactive: false,\n resize: true,\n defaultScrollbars: false,\n shrink: false,\n fade: false,\n speedRatioX: 0,\n speedRatioY: 0\n };\n\n for (var i in options) {\n this.options[i] = options[i];\n }\n\n this.sizeRatioX = 1;\n this.sizeRatioY = 1;\n this.maxPosX = 0;\n this.maxPosY = 0;\n\n if (this.options.interactive) {\n if (!this.options.disableTouch) {\n utils.addEvent(this.indicator, 'touchstart', this);\n utils.addEvent(window, 'touchend', this);\n }\n\n if (!this.options.disablePointer) {\n utils.addEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this);\n utils.addEvent(window, utils.prefixPointerEvent('pointerup'), this);\n }\n\n if (!this.options.disableMouse) {\n utils.addEvent(this.indicator, 'mousedown', this);\n utils.addEvent(window, 'mouseup', this);\n }\n }\n\n if (this.options.fade) {\n this.wrapperStyle[utils.style.transform] = this.scroller.translateZ;\n var durationProp = utils.style.transitionDuration;\n this.wrapperStyle[durationProp] = utils.isBadAndroid ? '0.0001ms' : '0ms'; // remove 0.0001ms\n\n var self = this;\n\n if (utils.isBadAndroid) {\n rAF(function () {\n if (self.wrapperStyle[durationProp] === '0.0001ms') {\n self.wrapperStyle[durationProp] = '0s';\n }\n });\n }\n\n this.wrapperStyle.opacity = '0';\n }\n }\n\n Indicator.prototype = {\n handleEvent: function handleEvent(e) {\n switch (e.type) {\n case 'touchstart':\n case 'pointerdown':\n case 'MSPointerDown':\n case 'mousedown':\n this._start(e);\n\n break;\n\n case 'touchmove':\n case 'pointermove':\n case 'MSPointerMove':\n case 'mousemove':\n this._move(e);\n\n break;\n\n case 'touchend':\n case 'pointerup':\n case 'MSPointerUp':\n case 'mouseup':\n case 'touchcancel':\n case 'pointercancel':\n case 'MSPointerCancel':\n case 'mousecancel':\n this._end(e);\n\n break;\n }\n },\n destroy: function destroy() {\n if (this.options.fadeScrollbars) {\n clearTimeout(this.fadeTimeout);\n this.fadeTimeout = null;\n }\n\n if (this.options.interactive) {\n utils.removeEvent(this.indicator, 'touchstart', this);\n utils.removeEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this);\n utils.removeEvent(this.indicator, 'mousedown', this);\n utils.removeEvent(window, 'touchmove', this);\n utils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this);\n utils.removeEvent(window, 'mousemove', this);\n utils.removeEvent(window, 'touchend', this);\n utils.removeEvent(window, utils.prefixPointerEvent('pointerup'), this);\n utils.removeEvent(window, 'mouseup', this);\n }\n\n if (this.options.defaultScrollbars) {\n this.wrapper.parentNode.removeChild(this.wrapper);\n }\n },\n _start: function _start(e) {\n var point = e.touches ? e.touches[0] : e;\n e.preventDefault();\n e.stopPropagation();\n this.transitionTime();\n this.initiated = true;\n this.moved = false;\n this.lastPointX = point.pageX;\n this.lastPointY = point.pageY;\n this.startTime = utils.getTime();\n\n if (!this.options.disableTouch) {\n utils.addEvent(window, 'touchmove', this);\n }\n\n if (!this.options.disablePointer) {\n utils.addEvent(window, utils.prefixPointerEvent('pointermove'), this);\n }\n\n if (!this.options.disableMouse) {\n utils.addEvent(window, 'mousemove', this);\n }\n\n this.scroller._execEvent('beforeScrollStart');\n },\n _move: function _move(e) {\n var point = e.touches ? e.touches[0] : e,\n deltaX,\n deltaY,\n newX,\n newY,\n timestamp = utils.getTime();\n\n if (!this.moved) {\n this.scroller._execEvent('scrollStart');\n }\n\n this.moved = true;\n deltaX = point.pageX - this.lastPointX;\n this.lastPointX = point.pageX;\n deltaY = point.pageY - this.lastPointY;\n this.lastPointY = point.pageY;\n newX = this.x + deltaX;\n newY = this.y + deltaY;\n\n this._pos(newX, newY); // INSERT POINT: indicator._move\n\n\n e.preventDefault();\n e.stopPropagation();\n },\n _end: function _end(e) {\n if (!this.initiated) {\n return;\n }\n\n this.initiated = false;\n e.preventDefault();\n e.stopPropagation();\n utils.removeEvent(window, 'touchmove', this);\n utils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this);\n utils.removeEvent(window, 'mousemove', this);\n\n if (this.scroller.options.snap) {\n var snap = this.scroller._nearestSnap(this.scroller.x, this.scroller.y);\n\n var time = this.options.snapSpeed || Math.max(Math.max(Math.min(Math.abs(this.scroller.x - snap.x), 1000), Math.min(Math.abs(this.scroller.y - snap.y), 1000)), 300);\n\n if (this.scroller.x != snap.x || this.scroller.y != snap.y) {\n this.scroller.directionX = 0;\n this.scroller.directionY = 0;\n this.scroller.currentPage = snap;\n this.scroller.scrollTo(snap.x, snap.y, time, this.scroller.options.bounceEasing);\n }\n }\n\n if (this.moved) {\n this.scroller._execEvent('scrollEnd');\n }\n },\n transitionTime: function transitionTime(time) {\n time = time || 0;\n var durationProp = utils.style.transitionDuration;\n this.indicatorStyle[durationProp] = time + 'ms';\n\n if (!time && utils.isBadAndroid) {\n this.indicatorStyle[durationProp] = '0.0001ms'; // remove 0.0001ms\n\n var self = this;\n rAF(function () {\n if (self.indicatorStyle[durationProp] === '0.0001ms') {\n self.indicatorStyle[durationProp] = '0s';\n }\n });\n }\n },\n transitionTimingFunction: function transitionTimingFunction(easing) {\n this.indicatorStyle[utils.style.transitionTimingFunction] = easing;\n },\n refresh: function refresh() {\n this.transitionTime();\n\n if (this.options.listenX && !this.options.listenY) {\n this.indicatorStyle.display = this.scroller.hasHorizontalScroll ? 'block' : 'none';\n } else if (this.options.listenY && !this.options.listenX) {\n this.indicatorStyle.display = this.scroller.hasVerticalScroll ? 'block' : 'none';\n } else {\n this.indicatorStyle.display = this.scroller.hasHorizontalScroll || this.scroller.hasVerticalScroll ? 'block' : 'none';\n }\n\n if (this.scroller.hasHorizontalScroll && this.scroller.hasVerticalScroll) {\n utils.addClass(this.wrapper, 'iScrollBothScrollbars');\n utils.removeClass(this.wrapper, 'iScrollLoneScrollbar');\n\n if (this.options.defaultScrollbars && this.options.customStyle) {\n if (this.options.listenX) {\n this.wrapper.style.right = '8px';\n } else {\n this.wrapper.style.bottom = '8px';\n }\n }\n } else {\n utils.removeClass(this.wrapper, 'iScrollBothScrollbars');\n utils.addClass(this.wrapper, 'iScrollLoneScrollbar');\n\n if (this.options.defaultScrollbars && this.options.customStyle) {\n if (this.options.listenX) {\n this.wrapper.style.right = '2px';\n } else {\n this.wrapper.style.bottom = '2px';\n }\n }\n }\n\n var r = this.wrapper.offsetHeight; // force refresh\n\n if (this.options.listenX) {\n this.wrapperWidth = this.wrapper.clientWidth;\n\n if (this.options.resize) {\n this.indicatorWidth = Math.max(Math.round(this.wrapperWidth * this.wrapperWidth / (this.scroller.scrollerWidth || this.wrapperWidth || 1)), 8);\n this.indicatorStyle.width = this.indicatorWidth + 'px';\n } else {\n this.indicatorWidth = this.indicator.clientWidth;\n }\n\n this.maxPosX = this.wrapperWidth - this.indicatorWidth;\n\n if (this.options.shrink == 'clip') {\n this.minBoundaryX = -this.indicatorWidth + 8;\n this.maxBoundaryX = this.wrapperWidth - 8;\n } else {\n this.minBoundaryX = 0;\n this.maxBoundaryX = this.maxPosX;\n }\n\n this.sizeRatioX = this.options.speedRatioX || this.scroller.maxScrollX && this.maxPosX / this.scroller.maxScrollX;\n }\n\n if (this.options.listenY) {\n this.wrapperHeight = this.wrapper.clientHeight;\n\n if (this.options.resize) {\n this.indicatorHeight = Math.max(Math.round(this.wrapperHeight * this.wrapperHeight / (this.scroller.scrollerHeight || this.wrapperHeight || 1)), 8);\n this.indicatorStyle.height = this.indicatorHeight + 'px';\n } else {\n this.indicatorHeight = this.indicator.clientHeight;\n }\n\n this.maxPosY = this.wrapperHeight - this.indicatorHeight;\n\n if (this.options.shrink == 'clip') {\n this.minBoundaryY = -this.indicatorHeight + 8;\n this.maxBoundaryY = this.wrapperHeight - 8;\n } else {\n this.minBoundaryY = 0;\n this.maxBoundaryY = this.maxPosY;\n }\n\n this.maxPosY = this.wrapperHeight - this.indicatorHeight;\n this.sizeRatioY = this.options.speedRatioY || this.scroller.maxScrollY && this.maxPosY / this.scroller.maxScrollY;\n }\n\n this.updatePosition();\n },\n updatePosition: function updatePosition() {\n var x = this.options.listenX && Math.round(this.sizeRatioX * this.scroller.x) || 0,\n y = this.options.listenY && Math.round(this.sizeRatioY * this.scroller.y) || 0;\n\n if (!this.options.ignoreBoundaries) {\n if (x < this.minBoundaryX) {\n if (this.options.shrink == 'scale') {\n this.width = Math.max(this.indicatorWidth + x, 8);\n this.indicatorStyle.width = this.width + 'px';\n }\n\n x = this.minBoundaryX;\n } else if (x > this.maxBoundaryX) {\n if (this.options.shrink == 'scale') {\n this.width = Math.max(this.indicatorWidth - (x - this.maxPosX), 8);\n this.indicatorStyle.width = this.width + 'px';\n x = this.maxPosX + this.indicatorWidth - this.width;\n } else {\n x = this.maxBoundaryX;\n }\n } else if (this.options.shrink == 'scale' && this.width != this.indicatorWidth) {\n this.width = this.indicatorWidth;\n this.indicatorStyle.width = this.width + 'px';\n }\n\n if (y < this.minBoundaryY) {\n if (this.options.shrink == 'scale') {\n this.height = Math.max(this.indicatorHeight + y * 3, 8);\n this.indicatorStyle.height = this.height + 'px';\n }\n\n y = this.minBoundaryY;\n } else if (y > this.maxBoundaryY) {\n if (this.options.shrink == 'scale') {\n this.height = Math.max(this.indicatorHeight - (y - this.maxPosY) * 3, 8);\n this.indicatorStyle.height = this.height + 'px';\n y = this.maxPosY + this.indicatorHeight - this.height;\n } else {\n y = this.maxBoundaryY;\n }\n } else if (this.options.shrink == 'scale' && this.height != this.indicatorHeight) {\n this.height = this.indicatorHeight;\n this.indicatorStyle.height = this.height + 'px';\n }\n }\n\n this.x = x;\n this.y = y;\n\n if (this.scroller.options.useTransform) {\n this.indicatorStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.scroller.translateZ;\n } else {\n this.indicatorStyle.left = x + 'px';\n this.indicatorStyle.top = y + 'px';\n }\n },\n _pos: function _pos(x, y) {\n if (x < 0) {\n x = 0;\n } else if (x > this.maxPosX) {\n x = this.maxPosX;\n }\n\n if (y < 0) {\n y = 0;\n } else if (y > this.maxPosY) {\n y = this.maxPosY;\n }\n\n x = this.options.listenX ? Math.round(x / this.sizeRatioX) : this.scroller.x;\n y = this.options.listenY ? Math.round(y / this.sizeRatioY) : this.scroller.y;\n this.scroller.scrollTo(x, y);\n },\n fade: function fade(val, hold) {\n if (hold && !this.visible) {\n return;\n }\n\n clearTimeout(this.fadeTimeout);\n this.fadeTimeout = null;\n var time = val ? 250 : 500,\n delay = val ? 0 : 300;\n val = val ? '1' : '0';\n this.wrapperStyle[utils.style.transitionDuration] = time + 'ms';\n this.fadeTimeout = setTimeout(function (val) {\n this.wrapperStyle.opacity = val;\n this.visible = +val;\n }.bind(this, val), delay);\n }\n };\n IScroll.utils = utils;\n\n if (typeof module != 'undefined' && module.exports) {\n module.exports = IScroll;\n } else if (typeof define == 'function' && define.amd) {\n define(function () {\n return IScroll;\n });\n } else {\n window.IScroll = IScroll;\n }\n})(window, document, Math);"],"sourceRoot":""}