{"version":3,"sources":["libs/perfect-scrollbar.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length","1","module","ps","define","amd","window","PerfectScrollbar","Ps","../main","2","oldAdd","element","className","classes","split","indexOf","push","join","oldRemove","idx","splice","add","classList","remove","list","Array","prototype","slice","apply","3","cssGet","styleName","getComputedStyle","cssSet","styleValue","toString","style","cssMultiSet","obj","key","val","DOM","tagName","document","createElement","appendTo","child","parent","appendChild","css","styleNameOrObject","matches","query","matchesSelector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","parentNode","removeChild","queryChildren","selector","filter","childNodes","4","EventElement","this","events","bind","eventName","handler","addEventListener","unbind","isHandlerProvided","hdlr","removeEventListener","unbindAll","name","EventManager","eventElements","eventElement","ee","once","onceHandler","5","s4","Math","floor","random","substring","6","cls","dom","toInt","x","parseInt","clone","constructor","map","result","extend","original","source","isEditable","el","removePsClasses","clsList","outerWidth","startScrolling","axis","stopScrolling","env","isWebKit","documentElement","supportsTouch","DocumentTouch","supportsIePointer","navigator","msMaxTouchPoints","./class","./dom","7","destroy","initialize","update","./plugin/destroy","./plugin/initialize","./plugin/update","8","handlers","maxScrollbarLength","minScrollbarLength","scrollXMarginOffset","scrollYMarginOffset","stopPropagationOnClick","suppressScrollX","suppressScrollY","swipePropagation","useBothWheelAxes","wheelPropagation","wheelSpeed","theme","9","_","instances","get","event","scrollbarX","scrollbarY","scrollbarXRail","scrollbarYRail","../lib/dom","../lib/helper","./instances","10","bindClickRailHandler","pageOffset","getBoundingClientRect","stopPropagation","settings","halfOfScrollbarLength","scrollbarYHeight","positionTop","railYRatio","pageY","pageYOffset","top","maxPositionTop","railYHeight","positionRatio","updateScroll","contentHeight","containerHeight","updateGeometry","scrollbarXWidth","positionLeft","railXRatio","pageX","pageXOffset","left","maxPositionLeft","railXWidth","contentWidth","containerWidth","negativeScrollAdjustment","../../lib/helper","../instances","../update-geometry","../update-scroll","11","bindMouseScrollXHandler","updateScrollLeft","deltaX","newLeft","currentLeft","maxLeft","max","scrollbarXLeft","scrollLeft","currentPageX","mouseMoveHandler","preventDefault","mouseUpHandler","ownerDocument","bindMouseScrollYHandler","updateScrollTop","deltaY","newTop","currentTop","maxTop","scrollbarYTop","scrollTop","currentPageY","../../lib/dom","12","bindKeyboardHandler","shouldPreventDefault","scrollbarYActive","scrollbarXActive","hovered","shouldPrevent","isDefaultPrevented","defaultPrevented","focused","activeElement","contentDocument","shadowRoot","which","shiftKey","ctrlKey","13","bindMouseWheelHandler","getDeltaFromEvent","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","shouldBeConsumedByChild","querySelector","overflow","match","maxScrollTop","scrollHeight","clientHeight","maxScrollLeft","clientWidth","mousewheelHandler","delta","onwheel","onmousewheel","14","bindNativeScrollHandler","15","bindSelectionHandler","getRangeNode","selection","getSelection","getRangeAt","commonAncestorContainer","scrollingLoop","setInterval","scrollDiff","clearInterval","isSelected","contains","mousePosition","y","containerGeometry","offsetLeft","right","offsetWidth","offsetTop","bottom","offsetHeight","16","bindTouchHandler","magnitudeX","abs","magnitudeY","applyTouchMove","differenceX","differenceY","globalTouchStart","inGlobalTouch","globalTouchEnd","getTouch","targetTouches","shouldHandle","pointerType","MSPOINTER_TYPE_MOUSE","touchStart","inLocalTouch","touch","startOffset","startTime","Date","getTime","easingLoop","touchMove","currentOffset","currentTime","timeGap","speed","touchEnd","PointerEvent","MSPointerEvent","17","click-rail","drag-scrollbar","keyboard","wheel","nativeScrollHandler","userSettings","forEach","handlerName","../lib/class","./handler/click-rail","./handler/drag-scrollbar","./handler/keyboard","./handler/mouse-wheel","./handler/native-scroll","./handler/selection","./handler/touch","./update-geometry","18","Instance","focus","blur","defaultSettings","isRtl","isNegativeScroll","originalScrollLeft","scrollWidth","setAttribute","scrollbarXBottom","isScrollbarXUsingBottom","scrollbarXTop","railBorderXWidth","railXMarginWidth","scrollbarYRight","isScrollbarYUsingRight","scrollbarYLeft","scrollbarYOuterWidth","railBorderYWidth","railYMarginHeight","getId","getAttribute","setId","id","removeId","removeAttribute","guid","newId","../lib/event-manager","../lib/guid","./default-setting","19","getThumbSize","thumbSize","min","updateCss","xRailOffset","width","yRailOffset","height","existingRails","rail","./update-scroll","20","lastTop","lastLeft","upEvent","createEvent","downEvent","leftEvent","rightEvent","yEvent","xEvent","xStartEvent","xEndEvent","yStartEvent","yEndEvent","initEvent","value","dispatchEvent","21"],"mappings":"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","file":"libs/perfect-scrollbar.min.js","sourcesContent":["/* perfect-scrollbar v0.6.12 */\n(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o= 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\n},{}],3:[function(require,module,exports){\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\n},{}],4:[function(require,module,exports){\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\n},{}],5:[function(require,module,exports){\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\n},{}],6:[function(require,module,exports){\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 === null) {\n return null;\n } else if (obj.constructor === Array) {\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\nexports.startScrolling = function (element, axis) {\n cls.add(element, 'ps-in-scrolling');\n if (typeof axis !== 'undefined') {\n cls.add(element, 'ps-' + axis);\n } else {\n cls.add(element, 'ps-x');\n cls.add(element, 'ps-y');\n }\n};\n\nexports.stopScrolling = function (element, axis) {\n cls.remove(element, 'ps-in-scrolling');\n if (typeof axis !== 'undefined') {\n cls.remove(element, 'ps-' + axis);\n } else {\n cls.remove(element, 'ps-x');\n cls.remove(element, 'ps-y');\n }\n};\n\nexports.env = {\n isWebKit: 'WebkitAppearance' in document.documentElement.style,\n supportsTouch: (('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch),\n supportsIePointer: window.navigator.msMaxTouchPoints !== null\n};\n\n},{\"./class\":2,\"./dom\":3}],7:[function(require,module,exports){\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\n},{\"./plugin/destroy\":9,\"./plugin/initialize\":17,\"./plugin/update\":21}],8:[function(require,module,exports){\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 stopPropagationOnClick: true,\n suppressScrollX: false,\n suppressScrollY: false,\n swipePropagation: true,\n useBothWheelAxes: false,\n wheelPropagation: false,\n wheelSpeed: 1,\n theme: 'default'\n};\n\n},{}],9:[function(require,module,exports){\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\n},{\"../lib/dom\":3,\"../lib/helper\":6,\"./instances\":18}],10:[function(require,module,exports){\n'use strict';\n\nvar _ = require('../../lib/helper');\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 if (i.settings.stopPropagationOnClick) {\n i.event.bind(i.scrollbarY, 'click', stopPropagation);\n }\n i.event.bind(i.scrollbarYRail, 'click', function (e) {\n var halfOfScrollbarLength = _.toInt(i.scrollbarYHeight / 2);\n var positionTop = i.railYRatio * (e.pageY - window.pageYOffset - pageOffset(i.scrollbarYRail).top - halfOfScrollbarLength);\n var maxPositionTop = i.railYRatio * (i.railYHeight - i.scrollbarYHeight);\n var positionRatio = positionTop / maxPositionTop;\n\n if (positionRatio < 0) {\n positionRatio = 0;\n } else if (positionRatio > 1) {\n positionRatio = 1;\n }\n\n updateScroll(element, 'top', (i.contentHeight - i.containerHeight) * positionRatio);\n updateGeometry(element);\n\n e.stopPropagation();\n });\n\n if (i.settings.stopPropagationOnClick) {\n i.event.bind(i.scrollbarX, 'click', stopPropagation);\n }\n i.event.bind(i.scrollbarXRail, 'click', function (e) {\n var halfOfScrollbarLength = _.toInt(i.scrollbarXWidth / 2);\n var positionLeft = i.railXRatio * (e.pageX - window.pageXOffset - pageOffset(i.scrollbarXRail).left - halfOfScrollbarLength);\n var maxPositionLeft = i.railXRatio * (i.railXWidth - i.scrollbarXWidth);\n var positionRatio = positionLeft / maxPositionLeft;\n\n if (positionRatio < 0) {\n positionRatio = 0;\n } else if (positionRatio > 1) {\n positionRatio = 1;\n }\n\n updateScroll(element, 'left', ((i.contentWidth - i.containerWidth) * positionRatio) - i.negativeScrollAdjustment);\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\n},{\"../../lib/helper\":6,\"../instances\":18,\"../update-geometry\":19,\"../update-scroll\":20}],11:[function(require,module,exports){\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\n},{\"../../lib/dom\":3,\"../../lib/helper\":6,\"../instances\":18,\"../update-geometry\":19,\"../update-scroll\":20}],12:[function(require,module,exports){\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 deltaX = -30;\n break;\n case 38: // up\n deltaY = 30;\n break;\n case 39: // right\n deltaX = 30;\n break;\n case 40: // down\n deltaY = -30;\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\n},{\"../../lib/dom\":3,\"../../lib/helper\":6,\"../instances\":18,\"../update-geometry\":19,\"../update-scroll\":20}],13:[function(require,module,exports){\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 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 if (child.tagName !== 'TEXTAREA' && !window.getComputedStyle(child).overflow.match(/(scroll|auto)/)) {\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\n},{\"../instances\":18,\"../update-geometry\":19,\"../update-scroll\":20}],14:[function(require,module,exports){\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\n},{\"../instances\":18,\"../update-geometry\":19}],15:[function(require,module,exports){\n'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\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\n},{\"../../lib/helper\":6,\"../instances\":18,\"../update-geometry\":19,\"../update-scroll\":20}],16:[function(require,module,exports){\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 clearInterval(easingLoop);\n easingLoop = setInterval(function () {\n if (!instances.get(element)) {\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 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 }\n\n 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\n},{\"../../lib/helper\":6,\"../instances\":18,\"../update-geometry\":19,\"../update-scroll\":20}],17:[function(require,module,exports){\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-container');\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\n},{\"../lib/class\":2,\"../lib/helper\":6,\"./handler/click-rail\":10,\"./handler/drag-scrollbar\":11,\"./handler/keyboard\":12,\"./handler/mouse-wheel\":13,\"./handler/native-scroll\":14,\"./handler/selection\":15,\"./handler/touch\":16,\"./instances\":18,\"./update-geometry\":19}],18:[function(require,module,exports){\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\n},{\"../lib/class\":2,\"../lib/dom\":3,\"../lib/event-manager\":4,\"../lib/guid\":5,\"../lib/helper\":6,\"./default-setting\":8}],19:[function(require,module,exports){\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\n},{\"../lib/class\":2,\"../lib/dom\":3,\"../lib/helper\":6,\"./instances\":18,\"./update-scroll\":20}],20:[function(require,module,exports){\n'use strict';\n\nvar instances = require('./instances');\n\nvar upEvent = document.createEvent('Event');\nvar downEvent = document.createEvent('Event');\nvar leftEvent = document.createEvent('Event');\nvar rightEvent = document.createEvent('Event');\nvar yEvent = document.createEvent('Event');\nvar xEvent = document.createEvent('Event');\nvar xStartEvent = document.createEvent('Event');\nvar xEndEvent = document.createEvent('Event');\nvar yStartEvent = document.createEvent('Event');\nvar yEndEvent = document.createEvent('Event');\nvar lastTop;\nvar lastLeft;\n\nupEvent.initEvent('ps-scroll-up', true, true);\ndownEvent.initEvent('ps-scroll-down', true, true);\nleftEvent.initEvent('ps-scroll-left', true, true);\nrightEvent.initEvent('ps-scroll-right', true, true);\nyEvent.initEvent('ps-scroll-y', true, true);\nxEvent.initEvent('ps-scroll-x', true, true);\nxStartEvent.initEvent('ps-x-reach-start', true, true);\nxEndEvent.initEvent('ps-x-reach-end', true, true);\nyStartEvent.initEvent('ps-y-reach-start', true, true);\nyEndEvent.initEvent('ps-y-reach-end', true, true);\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(yStartEvent);\n }\n\n if (axis === 'left' && value <= 0) {\n element.scrollLeft = value = 0; // don't allow negative scroll\n element.dispatchEvent(xStartEvent);\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(yEndEvent);\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(xEndEvent);\n }\n\n if (!lastTop) {\n lastTop = element.scrollTop;\n }\n\n if (!lastLeft) {\n lastLeft = element.scrollLeft;\n }\n\n if (axis === 'top' && value < lastTop) {\n element.dispatchEvent(upEvent);\n }\n\n if (axis === 'top' && value > lastTop) {\n element.dispatchEvent(downEvent);\n }\n\n if (axis === 'left' && value < lastLeft) {\n element.dispatchEvent(leftEvent);\n }\n\n if (axis === 'left' && value > lastLeft) {\n element.dispatchEvent(rightEvent);\n }\n\n if (axis === 'top') {\n element.scrollTop = lastTop = value;\n element.dispatchEvent(yEvent);\n }\n\n if (axis === 'left') {\n element.scrollLeft = lastLeft = value;\n element.dispatchEvent(xEvent);\n }\n\n};\n\n},{\"./instances\":18}],21:[function(require,module,exports){\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\n},{\"../lib/dom\":3,\"../lib/helper\":6,\"./instances\":18,\"./update-geometry\":19,\"./update-scroll\":20}]},{},[1]);\n"],"sourceRoot":"/source/"}