{"version":3,"sources":["webpack:///./node_modules/perfect-scrollbar/src/js/plugin/handler/selection.js","webpack:///./node_modules/perfect-scrollbar/src/js/plugin/initialize.js","webpack:///./node_modules/perfect-scrollbar/src/js/plugin/default-setting.js","webpack:///./node_modules/perfect-scrollbar/src/js/lib/guid.js","webpack:///./node_modules/perfect-scrollbar/src/js/plugin/handler/keyboard.js","webpack:///./node_modules/perfect-scrollbar/index.js","webpack:///./node_modules/perfect-scrollbar/src/js/plugin/update-geometry.js","webpack:///./node_modules/perfect-scrollbar/src/js/plugin/instances.js","webpack:///./node_modules/perfect-scrollbar/src/js/plugin/update.js","webpack:///./node_modules/perfect-scrollbar/src/js/lib/helper.js","webpack:///./node_modules/perfect-scrollbar/src/js/main.js","webpack:///./node_modules/perfect-scrollbar/src/js/plugin/update-scroll.js","webpack:///./node_modules/perfect-scrollbar/src/js/plugin/handler/mouse-wheel.js","webpack:///./node_modules/perfect-scrollbar/src/js/plugin/handler/drag-scrollbar.js","webpack:///./node_modules/perfect-scrollbar/src/js/plugin/destroy.js","webpack:///./node_modules/perfect-scrollbar/src/js/lib/dom.js","webpack:///./node_modules/perfect-scrollbar/src/js/plugin/handler/click-rail.js","webpack:///./node_modules/perfect-scrollbar/src/js/lib/class.js","webpack:///./node_modules/perfect-scrollbar/src/js/plugin/handler/native-scroll.js","webpack:///./node_modules/perfect-scrollbar/src/js/plugin/handler/touch.js","webpack:///./node_modules/perfect-scrollbar/src/js/lib/event-manager.js"],"names":["_","instances","updateGeometry","updateScroll","bindSelectionHandler","element","i","getRangeNode","selection","window","getSelection","document","toString","length","getRangeAt","commonAncestorContainer","scrollingLoop","scrollDiff","top","left","startScrolling","setInterval","get","scrollTop","scrollLeft","clearInterval","stopScrolling","isSelected","event","bind","ownerDocument","contains","e","mousePosition","x","pageX","y","pageY","containerGeometry","offsetLeft","right","offsetWidth","offsetTop","bottom","offsetHeight","module","exports","cls","handlers","nativeScrollHandler","userSettings","add","settings","extend","theme","forEach","handlerName","maxScrollbarLength","minScrollbarLength","scrollXMarginOffset","scrollYMarginOffset","suppressScrollX","suppressScrollY","swipePropagation","swipeEasing","useBothWheelAxes","wheelPropagation","wheelSpeed","s4","Math","floor","random","substring","dom","bindKeyboardHandler","hovered","shouldPrevent","shouldPreventDefault","deltaX","deltaY","scrollbarYActive","contentHeight","containerHeight","scrollbarXActive","contentWidth","containerWidth","isDefaultPrevented","defaultPrevented","focused","matches","scrollbarX","scrollbarY","activeElement","tagName","contentDocument","shadowRoot","isEditable","which","metaKey","altKey","shiftKey","ctrlKey","preventDefault","getThumbSize","thumbSize","max","min","updateCss","xRailOffset","width","railXWidth","isRtl","negativeScrollAdjustment","isScrollbarXUsingBottom","scrollbarXBottom","scrollbarXTop","css","scrollbarXRail","yRailOffset","height","railYHeight","isScrollbarYUsingRight","scrollbarYRight","scrollbarYOuterWidth","scrollbarYLeft","scrollbarYRail","scrollbarXLeft","scrollbarXWidth","railBorderXWidth","scrollbarYTop","scrollbarYHeight","railBorderYWidth","existingRails","clientWidth","clientHeight","scrollWidth","scrollHeight","queryChildren","rail","remove","appendTo","railXMarginWidth","railXRatio","toInt","railYMarginHeight","railYRatio","defaultSettings","EventManager","guid","Instance","this","focus","blur","clone","isNegativeScroll","originalScrollLeft","result","setAttribute","outerWidth","getId","getAttribute","setId","id","removeId","removeAttribute","newId","parseInt","obj","Array","isArray","map","key","toggleScrolling","handler","axis","original","source","el","removePsClasses","clsList","list","className","indexOf","env","isWebKit","documentElement","style","supportsTouch","DocumentTouch","supportsIePointer","navigator","msMaxTouchPoints","destroy","initialize","update","createDOMEvent","name","createEvent","initEvent","value","dispatchEvent","undefined","lastTop","lastLeft","bindMouseWheelHandler","getDeltaFromEvent","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","shouldBeConsumedByChild","child","querySelector","getComputedStyle","overflow","overflowX","overflowY","join","match","maxScrollTop","maxScrollLeft","mousewheelHandler","delta","stopPropagation","onwheel","onmousewheel","bindMouseScrollXHandler","currentLeft","currentPageX","updateScrollLeft","newLeft","maxLeft","getBoundingClientRect","mouseMoveHandler","mouseUpHandler","unbind","once","bindMouseScrollYHandler","currentTop","currentPageY","updateScrollTop","newTop","maxTop","unbindAll","DOM","cssGet","styleName","cssSet","styleValue","cssMultiSet","val","createElement","parent","appendChild","styleNameOrObject","query","matchesSelector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","parentNode","removeChild","selector","prototype","filter","call","childNodes","bindClickRailHandler","pageOffset","positionTop","pageYOffset","direction","positionLeft","pageXOffset","oldAdd","classes","split","push","oldRemove","idx","splice","classList","slice","apply","bindNativeScrollHandler","bindTouchHandler","magnitudeX","abs","magnitudeY","applyTouchMove","differenceX","differenceY","startOffset","startTime","speed","easingLoop","inGlobalTouch","inLocalTouch","globalTouchStart","globalTouchEnd","getTouch","targetTouches","shouldHandle","pointerType","MSPOINTER_TYPE_MOUSE","touchStart","touch","Date","getTime","touchMove","currentOffset","currentTime","timeGap","touchEnd","PointerEvent","MSPointerEvent","EventElement","events","eventName","addEventListener","isHandlerProvided","hdlr","removeEventListener","eventElements","eventElement","ee","onceHandler"],"mappings":"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","file":"chunk-04c44ed4.b5d6258de4f0fcfbb5d1.js","sourcesContent":["'use strict';\n\nvar _ = require('../../lib/helper');\nvar instances = require('../instances');\nvar updateGeometry = require('../update-geometry');\nvar updateScroll = require('../update-scroll');\n\nfunction bindSelectionHandler(element, i) {\n function getRangeNode() {\n var selection = window.getSelection ? window.getSelection() :\n document.getSelection ? document.getSelection() : '';\n if (selection.toString().length === 0) {\n return null;\n } else {\n return selection.getRangeAt(0).commonAncestorContainer;\n }\n }\n\n var scrollingLoop = null;\n var scrollDiff = {top: 0, left: 0};\n function startScrolling() {\n if (!scrollingLoop) {\n scrollingLoop = setInterval(function () {\n if (!instances.get(element)) {\n clearInterval(scrollingLoop);\n return;\n }\n\n updateScroll(element, 'top', element.scrollTop + scrollDiff.top);\n updateScroll(element, 'left', element.scrollLeft + scrollDiff.left);\n updateGeometry(element);\n }, 50); // every .1 sec\n }\n }\n function stopScrolling() {\n if (scrollingLoop) {\n clearInterval(scrollingLoop);\n scrollingLoop = null;\n }\n _.stopScrolling(element);\n }\n\n var isSelected = false;\n i.event.bind(i.ownerDocument, 'selectionchange', function () {\n if (element.contains(getRangeNode())) {\n isSelected = true;\n } else {\n isSelected = false;\n stopScrolling();\n }\n });\n i.event.bind(window, 'mouseup', function () {\n if (isSelected) {\n isSelected = false;\n stopScrolling();\n }\n });\n i.event.bind(window, 'keyup', function () {\n if (isSelected) {\n isSelected = false;\n stopScrolling();\n }\n });\n\n i.event.bind(window, 'mousemove', function (e) {\n if (isSelected) {\n var mousePosition = {x: e.pageX, y: e.pageY};\n var containerGeometry = {\n left: element.offsetLeft,\n right: element.offsetLeft + element.offsetWidth,\n top: element.offsetTop,\n bottom: element.offsetTop + element.offsetHeight\n };\n\n if (mousePosition.x < containerGeometry.left + 3) {\n scrollDiff.left = -5;\n _.startScrolling(element, 'x');\n } else if (mousePosition.x > containerGeometry.right - 3) {\n scrollDiff.left = 5;\n _.startScrolling(element, 'x');\n } else {\n scrollDiff.left = 0;\n }\n\n if (mousePosition.y < containerGeometry.top + 3) {\n if (containerGeometry.top + 3 - mousePosition.y < 5) {\n scrollDiff.top = -5;\n } else {\n scrollDiff.top = -20;\n }\n _.startScrolling(element, 'y');\n } else if (mousePosition.y > containerGeometry.bottom - 3) {\n if (mousePosition.y - containerGeometry.bottom + 3 < 5) {\n scrollDiff.top = 5;\n } else {\n scrollDiff.top = 20;\n }\n _.startScrolling(element, 'y');\n } else {\n scrollDiff.top = 0;\n }\n\n if (scrollDiff.top === 0 && scrollDiff.left === 0) {\n stopScrolling();\n } else {\n startScrolling();\n }\n }\n });\n}\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n bindSelectionHandler(element, i);\n};\n","'use strict';\n\nvar _ = require('../lib/helper');\nvar cls = require('../lib/class');\nvar instances = require('./instances');\nvar updateGeometry = require('./update-geometry');\n\n// Handlers\nvar handlers = {\n 'click-rail': require('./handler/click-rail'),\n 'drag-scrollbar': require('./handler/drag-scrollbar'),\n 'keyboard': require('./handler/keyboard'),\n 'wheel': require('./handler/mouse-wheel'),\n 'touch': require('./handler/touch'),\n 'selection': require('./handler/selection')\n};\nvar nativeScrollHandler = require('./handler/native-scroll');\n\nmodule.exports = function (element, userSettings) {\n userSettings = typeof userSettings === 'object' ? userSettings : {};\n\n cls.add(element, 'ps');\n\n // Create a plugin instance.\n var i = instances.add(element);\n\n i.settings = _.extend(i.settings, userSettings);\n cls.add(element, 'ps--theme_' + i.settings.theme);\n\n i.settings.handlers.forEach(function (handlerName) {\n handlers[handlerName](element);\n });\n\n nativeScrollHandler(element);\n\n updateGeometry(element);\n};\n","'use strict';\n\nmodule.exports = {\n handlers: ['click-rail', 'drag-scrollbar', 'keyboard', 'wheel', 'touch'],\n maxScrollbarLength: null,\n minScrollbarLength: null,\n scrollXMarginOffset: 0,\n scrollYMarginOffset: 0,\n suppressScrollX: false,\n suppressScrollY: false,\n swipePropagation: true,\n swipeEasing: true,\n useBothWheelAxes: false,\n wheelPropagation: false,\n wheelSpeed: 1,\n theme: 'default'\n};\n","'use strict';\n\nmodule.exports = (function () {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n return function () {\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' +\n s4() + '-' + s4() + s4() + s4();\n };\n})();\n","'use strict';\n\nvar _ = require('../../lib/helper');\nvar dom = require('../../lib/dom');\nvar instances = require('../instances');\nvar updateGeometry = require('../update-geometry');\nvar updateScroll = require('../update-scroll');\n\nfunction bindKeyboardHandler(element, i) {\n var hovered = false;\n i.event.bind(element, 'mouseenter', function () {\n hovered = true;\n });\n i.event.bind(element, 'mouseleave', function () {\n hovered = false;\n });\n\n var shouldPrevent = false;\n function shouldPreventDefault(deltaX, deltaY) {\n var scrollTop = element.scrollTop;\n if (deltaX === 0) {\n if (!i.scrollbarYActive) {\n return false;\n }\n if ((scrollTop === 0 && deltaY > 0) || (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)) {\n return !i.settings.wheelPropagation;\n }\n }\n\n var scrollLeft = element.scrollLeft;\n if (deltaY === 0) {\n if (!i.scrollbarXActive) {\n return false;\n }\n if ((scrollLeft === 0 && deltaX < 0) || (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)) {\n return !i.settings.wheelPropagation;\n }\n }\n return true;\n }\n\n i.event.bind(i.ownerDocument, 'keydown', function (e) {\n if ((e.isDefaultPrevented && e.isDefaultPrevented()) || e.defaultPrevented) {\n return;\n }\n\n var focused = dom.matches(i.scrollbarX, ':focus') ||\n dom.matches(i.scrollbarY, ':focus');\n\n if (!hovered && !focused) {\n return;\n }\n\n var activeElement = document.activeElement ? document.activeElement : i.ownerDocument.activeElement;\n if (activeElement) {\n if (activeElement.tagName === 'IFRAME') {\n activeElement = activeElement.contentDocument.activeElement;\n } else {\n // go deeper if element is a webcomponent\n while (activeElement.shadowRoot) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n }\n if (_.isEditable(activeElement)) {\n return;\n }\n }\n\n var deltaX = 0;\n var deltaY = 0;\n\n switch (e.which) {\n case 37: // left\n if (e.metaKey) {\n deltaX = -i.contentWidth;\n } else if (e.altKey) {\n deltaX = -i.containerWidth;\n } else {\n deltaX = -30;\n }\n break;\n case 38: // up\n if (e.metaKey) {\n deltaY = i.contentHeight;\n } else if (e.altKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = 30;\n }\n break;\n case 39: // right\n if (e.metaKey) {\n deltaX = i.contentWidth;\n } else if (e.altKey) {\n deltaX = i.containerWidth;\n } else {\n deltaX = 30;\n }\n break;\n case 40: // down\n if (e.metaKey) {\n deltaY = -i.contentHeight;\n } else if (e.altKey) {\n deltaY = -i.containerHeight;\n } else {\n deltaY = -30;\n }\n break;\n case 33: // page up\n deltaY = 90;\n break;\n case 32: // space bar\n if (e.shiftKey) {\n deltaY = 90;\n } else {\n deltaY = -90;\n }\n break;\n case 34: // page down\n deltaY = -90;\n break;\n case 35: // end\n if (e.ctrlKey) {\n deltaY = -i.contentHeight;\n } else {\n deltaY = -i.containerHeight;\n }\n break;\n case 36: // home\n if (e.ctrlKey) {\n deltaY = element.scrollTop;\n } else {\n deltaY = i.containerHeight;\n }\n break;\n default:\n return;\n }\n\n updateScroll(element, 'top', element.scrollTop - deltaY);\n updateScroll(element, 'left', element.scrollLeft + deltaX);\n updateGeometry(element);\n\n shouldPrevent = shouldPreventDefault(deltaX, deltaY);\n if (shouldPrevent) {\n e.preventDefault();\n }\n });\n}\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n bindKeyboardHandler(element, i);\n};\n","'use strict';\n\nmodule.exports = require('./src/js/main');\n","'use strict';\n\nvar _ = require('../lib/helper');\nvar cls = require('../lib/class');\nvar dom = require('../lib/dom');\nvar instances = require('./instances');\nvar updateScroll = require('./update-scroll');\n\nfunction getThumbSize(i, thumbSize) {\n if (i.settings.minScrollbarLength) {\n thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength);\n }\n if (i.settings.maxScrollbarLength) {\n thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength);\n }\n return thumbSize;\n}\n\nfunction updateCss(element, i) {\n var xRailOffset = {width: i.railXWidth};\n if (i.isRtl) {\n xRailOffset.left = i.negativeScrollAdjustment + element.scrollLeft + i.containerWidth - i.contentWidth;\n } else {\n xRailOffset.left = element.scrollLeft;\n }\n if (i.isScrollbarXUsingBottom) {\n xRailOffset.bottom = i.scrollbarXBottom - element.scrollTop;\n } else {\n xRailOffset.top = i.scrollbarXTop + element.scrollTop;\n }\n dom.css(i.scrollbarXRail, xRailOffset);\n\n var yRailOffset = {top: element.scrollTop, height: i.railYHeight};\n if (i.isScrollbarYUsingRight) {\n if (i.isRtl) {\n yRailOffset.right = i.contentWidth - (i.negativeScrollAdjustment + element.scrollLeft) - i.scrollbarYRight - i.scrollbarYOuterWidth;\n } else {\n yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\n }\n } else {\n if (i.isRtl) {\n yRailOffset.left = i.negativeScrollAdjustment + element.scrollLeft + i.containerWidth * 2 - i.contentWidth - i.scrollbarYLeft - i.scrollbarYOuterWidth;\n } else {\n yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\n }\n }\n dom.css(i.scrollbarYRail, yRailOffset);\n\n dom.css(i.scrollbarX, {left: i.scrollbarXLeft, width: i.scrollbarXWidth - i.railBorderXWidth});\n dom.css(i.scrollbarY, {top: i.scrollbarYTop, height: i.scrollbarYHeight - i.railBorderYWidth});\n}\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n\n i.containerWidth = element.clientWidth;\n i.containerHeight = element.clientHeight;\n i.contentWidth = element.scrollWidth;\n i.contentHeight = element.scrollHeight;\n\n var existingRails;\n if (!element.contains(i.scrollbarXRail)) {\n existingRails = dom.queryChildren(element, '.ps__scrollbar-x-rail');\n if (existingRails.length > 0) {\n existingRails.forEach(function (rail) {\n dom.remove(rail);\n });\n }\n dom.appendTo(i.scrollbarXRail, element);\n }\n if (!element.contains(i.scrollbarYRail)) {\n existingRails = dom.queryChildren(element, '.ps__scrollbar-y-rail');\n if (existingRails.length > 0) {\n existingRails.forEach(function (rail) {\n dom.remove(rail);\n });\n }\n dom.appendTo(i.scrollbarYRail, element);\n }\n\n if (!i.settings.suppressScrollX && i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth) {\n i.scrollbarXActive = true;\n i.railXWidth = i.containerWidth - i.railXMarginWidth;\n i.railXRatio = i.containerWidth / i.railXWidth;\n i.scrollbarXWidth = getThumbSize(i, _.toInt(i.railXWidth * i.containerWidth / i.contentWidth));\n i.scrollbarXLeft = _.toInt((i.negativeScrollAdjustment + element.scrollLeft) * (i.railXWidth - i.scrollbarXWidth) / (i.contentWidth - i.containerWidth));\n } else {\n i.scrollbarXActive = false;\n }\n\n if (!i.settings.suppressScrollY && i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight) {\n i.scrollbarYActive = true;\n i.railYHeight = i.containerHeight - i.railYMarginHeight;\n i.railYRatio = i.containerHeight / i.railYHeight;\n i.scrollbarYHeight = getThumbSize(i, _.toInt(i.railYHeight * i.containerHeight / i.contentHeight));\n i.scrollbarYTop = _.toInt(element.scrollTop * (i.railYHeight - i.scrollbarYHeight) / (i.contentHeight - i.containerHeight));\n } else {\n i.scrollbarYActive = false;\n }\n\n if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) {\n i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth;\n }\n if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) {\n i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight;\n }\n\n updateCss(element, i);\n\n if (i.scrollbarXActive) {\n cls.add(element, 'ps--active-x');\n } else {\n cls.remove(element, 'ps--active-x');\n i.scrollbarXWidth = 0;\n i.scrollbarXLeft = 0;\n updateScroll(element, 'left', 0);\n }\n if (i.scrollbarYActive) {\n cls.add(element, 'ps--active-y');\n } else {\n cls.remove(element, 'ps--active-y');\n i.scrollbarYHeight = 0;\n i.scrollbarYTop = 0;\n updateScroll(element, 'top', 0);\n }\n};\n","'use strict';\n\nvar _ = require('../lib/helper');\nvar cls = require('../lib/class');\nvar defaultSettings = require('./default-setting');\nvar dom = require('../lib/dom');\nvar EventManager = require('../lib/event-manager');\nvar guid = require('../lib/guid');\n\nvar instances = {};\n\nfunction Instance(element) {\n var i = this;\n\n i.settings = _.clone(defaultSettings);\n i.containerWidth = null;\n i.containerHeight = null;\n i.contentWidth = null;\n i.contentHeight = null;\n\n i.isRtl = dom.css(element, 'direction') === \"rtl\";\n i.isNegativeScroll = (function () {\n var originalScrollLeft = element.scrollLeft;\n var result = null;\n element.scrollLeft = -1;\n result = element.scrollLeft < 0;\n element.scrollLeft = originalScrollLeft;\n return result;\n })();\n i.negativeScrollAdjustment = i.isNegativeScroll ? element.scrollWidth - element.clientWidth : 0;\n i.event = new EventManager();\n i.ownerDocument = element.ownerDocument || document;\n\n function focus() {\n cls.add(element, 'ps--focus');\n }\n\n function blur() {\n cls.remove(element, 'ps--focus');\n }\n\n i.scrollbarXRail = dom.appendTo(dom.e('div', 'ps__scrollbar-x-rail'), element);\n i.scrollbarX = dom.appendTo(dom.e('div', 'ps__scrollbar-x'), i.scrollbarXRail);\n i.scrollbarX.setAttribute('tabindex', 0);\n i.event.bind(i.scrollbarX, 'focus', focus);\n i.event.bind(i.scrollbarX, 'blur', blur);\n i.scrollbarXActive = null;\n i.scrollbarXWidth = null;\n i.scrollbarXLeft = null;\n i.scrollbarXBottom = _.toInt(dom.css(i.scrollbarXRail, 'bottom'));\n i.isScrollbarXUsingBottom = i.scrollbarXBottom === i.scrollbarXBottom; // !isNaN\n i.scrollbarXTop = i.isScrollbarXUsingBottom ? null : _.toInt(dom.css(i.scrollbarXRail, 'top'));\n i.railBorderXWidth = _.toInt(dom.css(i.scrollbarXRail, 'borderLeftWidth')) + _.toInt(dom.css(i.scrollbarXRail, 'borderRightWidth'));\n // Set rail to display:block to calculate margins\n dom.css(i.scrollbarXRail, 'display', 'block');\n i.railXMarginWidth = _.toInt(dom.css(i.scrollbarXRail, 'marginLeft')) + _.toInt(dom.css(i.scrollbarXRail, 'marginRight'));\n dom.css(i.scrollbarXRail, 'display', '');\n i.railXWidth = null;\n i.railXRatio = null;\n\n i.scrollbarYRail = dom.appendTo(dom.e('div', 'ps__scrollbar-y-rail'), element);\n i.scrollbarY = dom.appendTo(dom.e('div', 'ps__scrollbar-y'), i.scrollbarYRail);\n i.scrollbarY.setAttribute('tabindex', 0);\n i.event.bind(i.scrollbarY, 'focus', focus);\n i.event.bind(i.scrollbarY, 'blur', blur);\n i.scrollbarYActive = null;\n i.scrollbarYHeight = null;\n i.scrollbarYTop = null;\n i.scrollbarYRight = _.toInt(dom.css(i.scrollbarYRail, 'right'));\n i.isScrollbarYUsingRight = i.scrollbarYRight === i.scrollbarYRight; // !isNaN\n i.scrollbarYLeft = i.isScrollbarYUsingRight ? null : _.toInt(dom.css(i.scrollbarYRail, 'left'));\n i.scrollbarYOuterWidth = i.isRtl ? _.outerWidth(i.scrollbarY) : null;\n i.railBorderYWidth = _.toInt(dom.css(i.scrollbarYRail, 'borderTopWidth')) + _.toInt(dom.css(i.scrollbarYRail, 'borderBottomWidth'));\n dom.css(i.scrollbarYRail, 'display', 'block');\n i.railYMarginHeight = _.toInt(dom.css(i.scrollbarYRail, 'marginTop')) + _.toInt(dom.css(i.scrollbarYRail, 'marginBottom'));\n dom.css(i.scrollbarYRail, 'display', '');\n i.railYHeight = null;\n i.railYRatio = null;\n}\n\nfunction getId(element) {\n return element.getAttribute('data-ps-id');\n}\n\nfunction setId(element, id) {\n element.setAttribute('data-ps-id', id);\n}\n\nfunction removeId(element) {\n element.removeAttribute('data-ps-id');\n}\n\nexports.add = function (element) {\n var newId = guid();\n setId(element, newId);\n instances[newId] = new Instance(element);\n return instances[newId];\n};\n\nexports.remove = function (element) {\n delete instances[getId(element)];\n removeId(element);\n};\n\nexports.get = function (element) {\n return instances[getId(element)];\n};\n","'use strict';\n\nvar _ = require('../lib/helper');\nvar dom = require('../lib/dom');\nvar instances = require('./instances');\nvar updateGeometry = require('./update-geometry');\nvar updateScroll = require('./update-scroll');\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n\n if (!i) {\n return;\n }\n\n // Recalcuate negative scrollLeft adjustment\n i.negativeScrollAdjustment = i.isNegativeScroll ? element.scrollWidth - element.clientWidth : 0;\n\n // Recalculate rail margins\n dom.css(i.scrollbarXRail, 'display', 'block');\n dom.css(i.scrollbarYRail, 'display', 'block');\n i.railXMarginWidth = _.toInt(dom.css(i.scrollbarXRail, 'marginLeft')) + _.toInt(dom.css(i.scrollbarXRail, 'marginRight'));\n i.railYMarginHeight = _.toInt(dom.css(i.scrollbarYRail, 'marginTop')) + _.toInt(dom.css(i.scrollbarYRail, 'marginBottom'));\n\n // Hide scrollbars not to affect scrollWidth and scrollHeight\n dom.css(i.scrollbarXRail, 'display', 'none');\n dom.css(i.scrollbarYRail, 'display', 'none');\n\n updateGeometry(element);\n\n // Update top/left scroll to trigger events\n updateScroll(element, 'top', element.scrollTop);\n updateScroll(element, 'left', element.scrollLeft);\n\n dom.css(i.scrollbarXRail, 'display', '');\n dom.css(i.scrollbarYRail, 'display', '');\n};\n","'use strict';\n\nvar cls = require('./class');\nvar dom = require('./dom');\n\nvar toInt = exports.toInt = function (x) {\n return parseInt(x, 10) || 0;\n};\n\nvar clone = exports.clone = function (obj) {\n if (!obj) {\n return null;\n } else if (Array.isArray(obj)) {\n return obj.map(clone);\n } else if (typeof obj === 'object') {\n var result = {};\n for (var key in obj) {\n result[key] = clone(obj[key]);\n }\n return result;\n } else {\n return obj;\n }\n};\n\nexports.extend = function (original, source) {\n var result = clone(original);\n for (var key in source) {\n result[key] = clone(source[key]);\n }\n return result;\n};\n\nexports.isEditable = function (el) {\n return dom.matches(el, \"input,[contenteditable]\") ||\n dom.matches(el, \"select,[contenteditable]\") ||\n dom.matches(el, \"textarea,[contenteditable]\") ||\n dom.matches(el, \"button,[contenteditable]\");\n};\n\nexports.removePsClasses = function (element) {\n var clsList = cls.list(element);\n for (var i = 0; i < clsList.length; i++) {\n var className = clsList[i];\n if (className.indexOf('ps-') === 0) {\n cls.remove(element, className);\n }\n }\n};\n\nexports.outerWidth = function (element) {\n return toInt(dom.css(element, 'width')) +\n toInt(dom.css(element, 'paddingLeft')) +\n toInt(dom.css(element, 'paddingRight')) +\n toInt(dom.css(element, 'borderLeftWidth')) +\n toInt(dom.css(element, 'borderRightWidth'));\n};\n\nfunction toggleScrolling(handler) {\n return function (element, axis) {\n handler(element, 'ps--in-scrolling');\n if (typeof axis !== 'undefined') {\n handler(element, 'ps--' + axis);\n } else {\n handler(element, 'ps--x');\n handler(element, 'ps--y');\n }\n };\n}\n\nexports.startScrolling = toggleScrolling(cls.add);\n\nexports.stopScrolling = toggleScrolling(cls.remove);\n\nexports.env = {\n isWebKit: typeof document !== 'undefined' && 'WebkitAppearance' in document.documentElement.style,\n supportsTouch: typeof window !== 'undefined' && (('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch),\n supportsIePointer: typeof window !== 'undefined' && window.navigator.msMaxTouchPoints !== null\n};\n","'use strict';\n\nvar destroy = require('./plugin/destroy');\nvar initialize = require('./plugin/initialize');\nvar update = require('./plugin/update');\n\nmodule.exports = {\n initialize: initialize,\n update: update,\n destroy: destroy\n};\n","'use strict';\n\nvar instances = require('./instances');\n\nvar createDOMEvent = function (name) {\n var event = document.createEvent(\"Event\");\n event.initEvent(name, true, true);\n return event;\n};\n\nmodule.exports = function (element, axis, value) {\n if (typeof element === 'undefined') {\n throw 'You must provide an element to the update-scroll function';\n }\n\n if (typeof axis === 'undefined') {\n throw 'You must provide an axis to the update-scroll function';\n }\n\n if (typeof value === 'undefined') {\n throw 'You must provide a value to the update-scroll function';\n }\n\n if (axis === 'top' && value <= 0) {\n element.scrollTop = value = 0; // don't allow negative scroll\n element.dispatchEvent(createDOMEvent('ps-y-reach-start'));\n }\n\n if (axis === 'left' && value <= 0) {\n element.scrollLeft = value = 0; // don't allow negative scroll\n element.dispatchEvent(createDOMEvent('ps-x-reach-start'));\n }\n\n var i = instances.get(element);\n\n if (axis === 'top' && value >= i.contentHeight - i.containerHeight) {\n // don't allow scroll past container\n value = i.contentHeight - i.containerHeight;\n if (value - element.scrollTop <= 1) {\n // mitigates rounding errors on non-subpixel scroll values\n value = element.scrollTop;\n } else {\n element.scrollTop = value;\n }\n element.dispatchEvent(createDOMEvent('ps-y-reach-end'));\n }\n\n if (axis === 'left' && value >= i.contentWidth - i.containerWidth) {\n // don't allow scroll past container\n value = i.contentWidth - i.containerWidth;\n if (value - element.scrollLeft <= 1) {\n // mitigates rounding errors on non-subpixel scroll values\n value = element.scrollLeft;\n } else {\n element.scrollLeft = value;\n }\n element.dispatchEvent(createDOMEvent('ps-x-reach-end'));\n }\n\n if (i.lastTop === undefined) {\n i.lastTop = element.scrollTop;\n }\n\n if (i.lastLeft === undefined) {\n i.lastLeft = element.scrollLeft;\n }\n\n if (axis === 'top' && value < i.lastTop) {\n element.dispatchEvent(createDOMEvent('ps-scroll-up'));\n }\n\n if (axis === 'top' && value > i.lastTop) {\n element.dispatchEvent(createDOMEvent('ps-scroll-down'));\n }\n\n if (axis === 'left' && value < i.lastLeft) {\n element.dispatchEvent(createDOMEvent('ps-scroll-left'));\n }\n\n if (axis === 'left' && value > i.lastLeft) {\n element.dispatchEvent(createDOMEvent('ps-scroll-right'));\n }\n\n if (axis === 'top' && value !== i.lastTop) {\n element.scrollTop = i.lastTop = value;\n element.dispatchEvent(createDOMEvent('ps-scroll-y'));\n }\n\n if (axis === 'left' && value !== i.lastLeft) {\n element.scrollLeft = i.lastLeft = value;\n element.dispatchEvent(createDOMEvent('ps-scroll-x'));\n }\n\n};\n","'use strict';\n\nvar instances = require('../instances');\nvar updateGeometry = require('../update-geometry');\nvar updateScroll = require('../update-scroll');\n\nfunction bindMouseWheelHandler(element, i) {\n var shouldPrevent = false;\n\n function shouldPreventDefault(deltaX, deltaY) {\n var scrollTop = element.scrollTop;\n if (deltaX === 0) {\n if (!i.scrollbarYActive) {\n return false;\n }\n if ((scrollTop === 0 && deltaY > 0) || (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)) {\n return !i.settings.wheelPropagation;\n }\n }\n\n var scrollLeft = element.scrollLeft;\n if (deltaY === 0) {\n if (!i.scrollbarXActive) {\n return false;\n }\n if ((scrollLeft === 0 && deltaX < 0) || (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)) {\n return !i.settings.wheelPropagation;\n }\n }\n return true;\n }\n\n function getDeltaFromEvent(e) {\n var deltaX = e.deltaX;\n var deltaY = -1 * e.deltaY;\n\n if (typeof deltaX === \"undefined\" || typeof deltaY === \"undefined\") {\n // OS X Safari\n deltaX = -1 * e.wheelDeltaX / 6;\n deltaY = e.wheelDeltaY / 6;\n }\n\n if (e.deltaMode && e.deltaMode === 1) {\n // Firefox in deltaMode 1: Line scrolling\n deltaX *= 10;\n deltaY *= 10;\n }\n\n if (deltaX !== deltaX && deltaY !== deltaY/* NaN checks */) {\n // IE in some mouse drivers\n deltaX = 0;\n deltaY = e.wheelDelta;\n }\n\n if (e.shiftKey) {\n // reverse axis with shift key\n return [-deltaY, -deltaX];\n }\n return [deltaX, deltaY];\n }\n\n function shouldBeConsumedByChild(deltaX, deltaY) {\n var child = element.querySelector('textarea:hover, select[multiple]:hover, .ps-child:hover');\n if (child) {\n var style = window.getComputedStyle(child);\n var overflow = [\n style.overflow,\n style.overflowX,\n style.overflowY\n ].join('');\n\n if (!overflow.match(/(scroll|auto)/)) {\n // if not scrollable\n return false;\n }\n\n var maxScrollTop = child.scrollHeight - child.clientHeight;\n if (maxScrollTop > 0) {\n if (!(child.scrollTop === 0 && deltaY > 0) && !(child.scrollTop === maxScrollTop && deltaY < 0)) {\n return true;\n }\n }\n var maxScrollLeft = child.scrollLeft - child.clientWidth;\n if (maxScrollLeft > 0) {\n if (!(child.scrollLeft === 0 && deltaX < 0) && !(child.scrollLeft === maxScrollLeft && deltaX > 0)) {\n return true;\n }\n }\n }\n return false;\n }\n\n function mousewheelHandler(e) {\n var delta = getDeltaFromEvent(e);\n\n var deltaX = delta[0];\n var deltaY = delta[1];\n\n if (shouldBeConsumedByChild(deltaX, deltaY)) {\n return;\n }\n\n shouldPrevent = false;\n if (!i.settings.useBothWheelAxes) {\n // deltaX will only be used for horizontal scrolling and deltaY will\n // only be used for vertical scrolling - this is the default\n updateScroll(element, 'top', element.scrollTop - (deltaY * i.settings.wheelSpeed));\n updateScroll(element, 'left', element.scrollLeft + (deltaX * i.settings.wheelSpeed));\n } else if (i.scrollbarYActive && !i.scrollbarXActive) {\n // only vertical scrollbar is active and useBothWheelAxes option is\n // active, so let's scroll vertical bar using both mouse wheel axes\n if (deltaY) {\n updateScroll(element, 'top', element.scrollTop - (deltaY * i.settings.wheelSpeed));\n } else {\n updateScroll(element, 'top', element.scrollTop + (deltaX * i.settings.wheelSpeed));\n }\n shouldPrevent = true;\n } else if (i.scrollbarXActive && !i.scrollbarYActive) {\n // useBothWheelAxes and only horizontal bar is active, so use both\n // wheel axes for horizontal bar\n if (deltaX) {\n updateScroll(element, 'left', element.scrollLeft + (deltaX * i.settings.wheelSpeed));\n } else {\n updateScroll(element, 'left', element.scrollLeft - (deltaY * i.settings.wheelSpeed));\n }\n shouldPrevent = true;\n }\n\n updateGeometry(element);\n\n shouldPrevent = (shouldPrevent || shouldPreventDefault(deltaX, deltaY));\n if (shouldPrevent) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n if (typeof window.onwheel !== \"undefined\") {\n i.event.bind(element, 'wheel', mousewheelHandler);\n } else if (typeof window.onmousewheel !== \"undefined\") {\n i.event.bind(element, 'mousewheel', mousewheelHandler);\n }\n}\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n bindMouseWheelHandler(element, i);\n};\n","'use strict';\n\nvar _ = require('../../lib/helper');\nvar dom = require('../../lib/dom');\nvar instances = require('../instances');\nvar updateGeometry = require('../update-geometry');\nvar updateScroll = require('../update-scroll');\n\nfunction bindMouseScrollXHandler(element, i) {\n var currentLeft = null;\n var currentPageX = null;\n\n function updateScrollLeft(deltaX) {\n var newLeft = currentLeft + (deltaX * i.railXRatio);\n var maxLeft = Math.max(0, i.scrollbarXRail.getBoundingClientRect().left) + (i.railXRatio * (i.railXWidth - i.scrollbarXWidth));\n\n if (newLeft < 0) {\n i.scrollbarXLeft = 0;\n } else if (newLeft > maxLeft) {\n i.scrollbarXLeft = maxLeft;\n } else {\n i.scrollbarXLeft = newLeft;\n }\n\n var scrollLeft = _.toInt(i.scrollbarXLeft * (i.contentWidth - i.containerWidth) / (i.containerWidth - (i.railXRatio * i.scrollbarXWidth))) - i.negativeScrollAdjustment;\n updateScroll(element, 'left', scrollLeft);\n }\n\n var mouseMoveHandler = function (e) {\n updateScrollLeft(e.pageX - currentPageX);\n updateGeometry(element);\n e.stopPropagation();\n e.preventDefault();\n };\n\n var mouseUpHandler = function () {\n _.stopScrolling(element, 'x');\n i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n };\n\n i.event.bind(i.scrollbarX, 'mousedown', function (e) {\n currentPageX = e.pageX;\n currentLeft = _.toInt(dom.css(i.scrollbarX, 'left')) * i.railXRatio;\n _.startScrolling(element, 'x');\n\n i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n\n e.stopPropagation();\n e.preventDefault();\n });\n}\n\nfunction bindMouseScrollYHandler(element, i) {\n var currentTop = null;\n var currentPageY = null;\n\n function updateScrollTop(deltaY) {\n var newTop = currentTop + (deltaY * i.railYRatio);\n var maxTop = Math.max(0, i.scrollbarYRail.getBoundingClientRect().top) + (i.railYRatio * (i.railYHeight - i.scrollbarYHeight));\n\n if (newTop < 0) {\n i.scrollbarYTop = 0;\n } else if (newTop > maxTop) {\n i.scrollbarYTop = maxTop;\n } else {\n i.scrollbarYTop = newTop;\n }\n\n var scrollTop = _.toInt(i.scrollbarYTop * (i.contentHeight - i.containerHeight) / (i.containerHeight - (i.railYRatio * i.scrollbarYHeight)));\n updateScroll(element, 'top', scrollTop);\n }\n\n var mouseMoveHandler = function (e) {\n updateScrollTop(e.pageY - currentPageY);\n updateGeometry(element);\n e.stopPropagation();\n e.preventDefault();\n };\n\n var mouseUpHandler = function () {\n _.stopScrolling(element, 'y');\n i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n };\n\n i.event.bind(i.scrollbarY, 'mousedown', function (e) {\n currentPageY = e.pageY;\n currentTop = _.toInt(dom.css(i.scrollbarY, 'top')) * i.railYRatio;\n _.startScrolling(element, 'y');\n\n i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n\n e.stopPropagation();\n e.preventDefault();\n });\n}\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n bindMouseScrollXHandler(element, i);\n bindMouseScrollYHandler(element, i);\n};\n","'use strict';\n\nvar _ = require('../lib/helper');\nvar dom = require('../lib/dom');\nvar instances = require('./instances');\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n\n if (!i) {\n return;\n }\n\n i.event.unbindAll();\n dom.remove(i.scrollbarX);\n dom.remove(i.scrollbarY);\n dom.remove(i.scrollbarXRail);\n dom.remove(i.scrollbarYRail);\n _.removePsClasses(element);\n\n instances.remove(element);\n};\n","'use strict';\n\nvar DOM = {};\n\nDOM.e = function (tagName, className) {\n var element = document.createElement(tagName);\n element.className = className;\n return element;\n};\n\nDOM.appendTo = function (child, parent) {\n parent.appendChild(child);\n return child;\n};\n\nfunction cssGet(element, styleName) {\n return window.getComputedStyle(element)[styleName];\n}\n\nfunction cssSet(element, styleName, styleValue) {\n if (typeof styleValue === 'number') {\n styleValue = styleValue.toString() + 'px';\n }\n element.style[styleName] = styleValue;\n return element;\n}\n\nfunction cssMultiSet(element, obj) {\n for (var key in obj) {\n var val = obj[key];\n if (typeof val === 'number') {\n val = val.toString() + 'px';\n }\n element.style[key] = val;\n }\n return element;\n}\n\nDOM.css = function (element, styleNameOrObject, styleValue) {\n if (typeof styleNameOrObject === 'object') {\n // multiple set with object\n return cssMultiSet(element, styleNameOrObject);\n } else {\n if (typeof styleValue === 'undefined') {\n return cssGet(element, styleNameOrObject);\n } else {\n return cssSet(element, styleNameOrObject, styleValue);\n }\n }\n};\n\nDOM.matches = function (element, query) {\n if (typeof element.matches !== 'undefined') {\n return element.matches(query);\n } else {\n if (typeof element.matchesSelector !== 'undefined') {\n return element.matchesSelector(query);\n } else if (typeof element.webkitMatchesSelector !== 'undefined') {\n return element.webkitMatchesSelector(query);\n } else if (typeof element.mozMatchesSelector !== 'undefined') {\n return element.mozMatchesSelector(query);\n } else if (typeof element.msMatchesSelector !== 'undefined') {\n return element.msMatchesSelector(query);\n }\n }\n};\n\nDOM.remove = function (element) {\n if (typeof element.remove !== 'undefined') {\n element.remove();\n } else {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n};\n\nDOM.queryChildren = function (element, selector) {\n return Array.prototype.filter.call(element.childNodes, function (child) {\n return DOM.matches(child, selector);\n });\n};\n\nmodule.exports = DOM;\n","'use strict';\n\nvar instances = require('../instances');\nvar updateGeometry = require('../update-geometry');\nvar updateScroll = require('../update-scroll');\n\nfunction bindClickRailHandler(element, i) {\n function pageOffset(el) {\n return el.getBoundingClientRect();\n }\n var stopPropagation = function (e) { e.stopPropagation(); };\n\n i.event.bind(i.scrollbarY, 'click', stopPropagation);\n i.event.bind(i.scrollbarYRail, 'click', function (e) {\n var positionTop = e.pageY - window.pageYOffset - pageOffset(i.scrollbarYRail).top;\n var direction = positionTop > i.scrollbarYTop ? 1 : -1;\n\n updateScroll(element, 'top', element.scrollTop + direction * i.containerHeight);\n updateGeometry(element);\n\n e.stopPropagation();\n });\n\n i.event.bind(i.scrollbarX, 'click', stopPropagation);\n i.event.bind(i.scrollbarXRail, 'click', function (e) {\n var positionLeft = e.pageX - window.pageXOffset - pageOffset(i.scrollbarXRail).left;\n var direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n updateScroll(element, 'left', element.scrollLeft + direction * i.containerWidth);\n updateGeometry(element);\n\n e.stopPropagation();\n });\n}\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n bindClickRailHandler(element, i);\n};\n","'use strict';\n\nfunction oldAdd(element, className) {\n var classes = element.className.split(' ');\n if (classes.indexOf(className) < 0) {\n classes.push(className);\n }\n element.className = classes.join(' ');\n}\n\nfunction oldRemove(element, className) {\n var classes = element.className.split(' ');\n var idx = classes.indexOf(className);\n if (idx >= 0) {\n classes.splice(idx, 1);\n }\n element.className = classes.join(' ');\n}\n\nexports.add = function (element, className) {\n if (element.classList) {\n element.classList.add(className);\n } else {\n oldAdd(element, className);\n }\n};\n\nexports.remove = function (element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else {\n oldRemove(element, className);\n }\n};\n\nexports.list = function (element) {\n if (element.classList) {\n return Array.prototype.slice.apply(element.classList);\n } else {\n return element.className.split(' ');\n }\n};\n","'use strict';\n\nvar instances = require('../instances');\nvar updateGeometry = require('../update-geometry');\n\nfunction bindNativeScrollHandler(element, i) {\n i.event.bind(element, 'scroll', function () {\n updateGeometry(element);\n });\n}\n\nmodule.exports = function (element) {\n var i = instances.get(element);\n bindNativeScrollHandler(element, i);\n};\n","'use strict';\n\nvar _ = require('../../lib/helper');\nvar instances = require('../instances');\nvar updateGeometry = require('../update-geometry');\nvar updateScroll = require('../update-scroll');\n\nfunction bindTouchHandler(element, i, supportsTouch, supportsIePointer) {\n function shouldPreventDefault(deltaX, deltaY) {\n var scrollTop = element.scrollTop;\n var scrollLeft = element.scrollLeft;\n var magnitudeX = Math.abs(deltaX);\n var magnitudeY = Math.abs(deltaY);\n\n if (magnitudeY > magnitudeX) {\n // user is perhaps trying to swipe up/down the page\n\n if (((deltaY < 0) && (scrollTop === i.contentHeight - i.containerHeight)) ||\n ((deltaY > 0) && (scrollTop === 0))) {\n return !i.settings.swipePropagation;\n }\n } else if (magnitudeX > magnitudeY) {\n // user is perhaps trying to swipe left/right across the page\n\n if (((deltaX < 0) && (scrollLeft === i.contentWidth - i.containerWidth)) ||\n ((deltaX > 0) && (scrollLeft === 0))) {\n return !i.settings.swipePropagation;\n }\n }\n\n return true;\n }\n\n function applyTouchMove(differenceX, differenceY) {\n updateScroll(element, 'top', element.scrollTop - differenceY);\n updateScroll(element, 'left', element.scrollLeft - differenceX);\n\n updateGeometry(element);\n }\n\n var startOffset = {};\n var startTime = 0;\n var speed = {};\n var easingLoop = null;\n var inGlobalTouch = false;\n var inLocalTouch = false;\n\n function globalTouchStart() {\n inGlobalTouch = true;\n }\n function globalTouchEnd() {\n inGlobalTouch = false;\n }\n\n function getTouch(e) {\n if (e.targetTouches) {\n return e.targetTouches[0];\n } else {\n // Maybe IE pointer\n return e;\n }\n }\n function shouldHandle(e) {\n if (e.targetTouches && e.targetTouches.length === 1) {\n return true;\n }\n if (e.pointerType && e.pointerType !== 'mouse' && e.pointerType !== e.MSPOINTER_TYPE_MOUSE) {\n return true;\n }\n return false;\n }\n function touchStart(e) {\n if (shouldHandle(e)) {\n inLocalTouch = true;\n\n var touch = getTouch(e);\n\n startOffset.pageX = touch.pageX;\n startOffset.pageY = touch.pageY;\n\n startTime = (new Date()).getTime();\n\n if (easingLoop !== null) {\n clearInterval(easingLoop);\n }\n\n e.stopPropagation();\n }\n }\n function touchMove(e) {\n if (!inLocalTouch && i.settings.swipePropagation) {\n touchStart(e);\n }\n if (!inGlobalTouch && inLocalTouch && shouldHandle(e)) {\n var touch = getTouch(e);\n\n var currentOffset = {pageX: touch.pageX, pageY: touch.pageY};\n\n var differenceX = currentOffset.pageX - startOffset.pageX;\n var differenceY = currentOffset.pageY - startOffset.pageY;\n\n applyTouchMove(differenceX, differenceY);\n startOffset = currentOffset;\n\n var currentTime = (new Date()).getTime();\n\n var timeGap = currentTime - startTime;\n if (timeGap > 0) {\n speed.x = differenceX / timeGap;\n speed.y = differenceY / timeGap;\n startTime = currentTime;\n }\n\n if (shouldPreventDefault(differenceX, differenceY)) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n }\n function touchEnd() {\n if (!inGlobalTouch && inLocalTouch) {\n inLocalTouch = false;\n\n if (i.settings.swipeEasing) {\n clearInterval(easingLoop);\n easingLoop = setInterval(function () {\n if (!instances.get(element)) {\n clearInterval(easingLoop);\n return;\n }\n\n if (!speed.x && !speed.y) {\n clearInterval(easingLoop);\n return;\n }\n\n if (Math.abs(speed.x) < 0.01 && Math.abs(speed.y) < 0.01) {\n clearInterval(easingLoop);\n return;\n }\n\n applyTouchMove(speed.x * 30, speed.y * 30);\n\n speed.x *= 0.8;\n speed.y *= 0.8;\n }, 10);\n }\n }\n }\n\n if (supportsTouch) {\n i.event.bind(window, 'touchstart', globalTouchStart);\n i.event.bind(window, 'touchend', globalTouchEnd);\n i.event.bind(element, 'touchstart', touchStart);\n i.event.bind(element, 'touchmove', touchMove);\n i.event.bind(element, 'touchend', touchEnd);\n } else if (supportsIePointer) {\n if (window.PointerEvent) {\n i.event.bind(window, 'pointerdown', globalTouchStart);\n i.event.bind(window, 'pointerup', globalTouchEnd);\n i.event.bind(element, 'pointerdown', touchStart);\n i.event.bind(element, 'pointermove', touchMove);\n i.event.bind(element, 'pointerup', touchEnd);\n } else if (window.MSPointerEvent) {\n i.event.bind(window, 'MSPointerDown', globalTouchStart);\n i.event.bind(window, 'MSPointerUp', globalTouchEnd);\n i.event.bind(element, 'MSPointerDown', touchStart);\n i.event.bind(element, 'MSPointerMove', touchMove);\n i.event.bind(element, 'MSPointerUp', touchEnd);\n }\n }\n}\n\nmodule.exports = function (element) {\n if (!_.env.supportsTouch && !_.env.supportsIePointer) {\n return;\n }\n\n var i = instances.get(element);\n bindTouchHandler(element, i, _.env.supportsTouch, _.env.supportsIePointer);\n};\n","'use strict';\n\nvar EventElement = function (element) {\n this.element = element;\n this.events = {};\n};\n\nEventElement.prototype.bind = function (eventName, handler) {\n if (typeof this.events[eventName] === 'undefined') {\n this.events[eventName] = [];\n }\n this.events[eventName].push(handler);\n this.element.addEventListener(eventName, handler, false);\n};\n\nEventElement.prototype.unbind = function (eventName, handler) {\n var isHandlerProvided = (typeof handler !== 'undefined');\n this.events[eventName] = this.events[eventName].filter(function (hdlr) {\n if (isHandlerProvided && hdlr !== handler) {\n return true;\n }\n this.element.removeEventListener(eventName, hdlr, false);\n return false;\n }, this);\n};\n\nEventElement.prototype.unbindAll = function () {\n for (var name in this.events) {\n this.unbind(name);\n }\n};\n\nvar EventManager = function () {\n this.eventElements = [];\n};\n\nEventManager.prototype.eventElement = function (element) {\n var ee = this.eventElements.filter(function (eventElement) {\n return eventElement.element === element;\n })[0];\n if (typeof ee === 'undefined') {\n ee = new EventElement(element);\n this.eventElements.push(ee);\n }\n return ee;\n};\n\nEventManager.prototype.bind = function (element, eventName, handler) {\n this.eventElement(element).bind(eventName, handler);\n};\n\nEventManager.prototype.unbind = function (element, eventName, handler) {\n this.eventElement(element).unbind(eventName, handler);\n};\n\nEventManager.prototype.unbindAll = function () {\n for (var i = 0; i < this.eventElements.length; i++) {\n this.eventElements[i].unbindAll();\n }\n};\n\nEventManager.prototype.once = function (element, eventName, handler) {\n var ee = this.eventElement(element);\n var onceHandler = function (e) {\n ee.unbind(eventName, onceHandler);\n handler(e);\n };\n ee.bind(eventName, onceHandler);\n};\n\nmodule.exports = EventManager;\n"],"sourceRoot":""}