{"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.8b4c34125317ce15d994.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":""}