diff --git a/dist/perfect-scrollbar.common.js b/dist/perfect-scrollbar.common.js index cd42961..3acd61b 100644 --- a/dist/perfect-scrollbar.common.js +++ b/dist/perfect-scrollbar.common.js @@ -195,15 +195,33 @@ function createEvent(name) { return evt; } -function processScrollDiff (i, axis, diff, useScrollingClass, forceFireReachEvent) { +function processScrollDiff( + i, + axis, + diff, + useScrollingClass, + forceFireReachEvent +) { if ( useScrollingClass === void 0 ) useScrollingClass = true; if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false; var fields; if (axis === 'top') { - fields = ['contentHeight', 'containerHeight', 'scrollTop', 'y', 'up', 'down']; + fields = [ + 'contentHeight', + 'containerHeight', + 'scrollTop', + 'y', + 'up', + 'down' ]; } else if (axis === 'left') { - fields = ['contentWidth', 'containerWidth', 'scrollLeft', 'x', 'left', 'right']; + fields = [ + 'contentWidth', + 'containerWidth', + 'scrollLeft', + 'x', + 'left', + 'right' ]; } else { throw new Error('A proper axis should be provided'); } @@ -304,7 +322,7 @@ var env = { /* eslint-disable no-lonely-if */ -function updateGeometry (i) { +function updateGeometry(i) { var element = i.element; var roundedScrollTop = Math.floor(element.scrollTop); var rect = element.getBoundingClientRect(); @@ -317,12 +335,14 @@ function updateGeometry (i) { if (!element.contains(i.scrollbarXRail)) { // clean up and append - queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); }); + queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); } + ); element.appendChild(i.scrollbarXRail); } if (!element.contains(i.scrollbarYRail)) { // clean up and append - queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); }); + queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); } + ); element.appendChild(i.scrollbarYRail); } @@ -333,9 +353,13 @@ function updateGeometry (i) { i.scrollbarXActive = true; i.railXWidth = i.containerWidth - i.railXMarginWidth; i.railXRatio = i.containerWidth / i.railXWidth; - i.scrollbarXWidth = getThumbSize(i, toInt((i.railXWidth * i.containerWidth) / i.contentWidth)); + i.scrollbarXWidth = getThumbSize( + i, + toInt((i.railXWidth * i.containerWidth) / i.contentWidth) + ); i.scrollbarXLeft = toInt( - ((i.negativeScrollAdjustment + element.scrollLeft) * (i.railXWidth - i.scrollbarXWidth)) / + ((i.negativeScrollAdjustment + element.scrollLeft) * + (i.railXWidth - i.scrollbarXWidth)) / (i.contentWidth - i.containerWidth) ); } else { @@ -404,7 +428,10 @@ function updateCss(element, i) { if (i.isRtl) { xRailOffset.left = - i.negativeScrollAdjustment + element.scrollLeft + i.containerWidth - i.contentWidth; + i.negativeScrollAdjustment + + element.scrollLeft + + i.containerWidth - + i.contentWidth; } else { xRailOffset.left = element.scrollLeft; } @@ -454,12 +481,15 @@ function updateCss(element, i) { /* eslint-disable */ -function clickRail (i) { +function clickRail(i) { // const element = i.element; i.event.bind(i.scrollbarY, 'mousedown', function (e) { return e.stopPropagation(); }); i.event.bind(i.scrollbarYRail, 'mousedown', function (e) { - var positionTop = e.pageY - window.pageYOffset - i.scrollbarYRail.getBoundingClientRect().top; + var positionTop = + e.pageY - + window.pageYOffset - + i.scrollbarYRail.getBoundingClientRect().top; var direction = positionTop > i.scrollbarYTop ? 1 : -1; i.element.scrollTop += direction * i.containerHeight; @@ -471,7 +501,9 @@ function clickRail (i) { i.event.bind(i.scrollbarX, 'mousedown', function (e) { return e.stopPropagation(); }); i.event.bind(i.scrollbarXRail, 'mousedown', function (e) { var positionLeft = - e.pageX - window.pageXOffset - i.scrollbarXRail.getBoundingClientRect().left; + e.pageX - + window.pageXOffset - + i.scrollbarXRail.getBoundingClientRect().left; var direction = positionLeft > i.scrollbarXLeft ? 1 : -1; i.element.scrollLeft += direction * i.containerWidth; @@ -534,7 +566,8 @@ function bindMouseScrollHandler( // Only move if the active slider is the one we started with if (activeSlider === scrollbarAxis) { element[scrollAxis] = - startingScrollPosition + scrollBy * (e[pageAxis] - startingMousePagePosition); + startingScrollPosition + + scrollBy * (e[pageAxis] - startingMousePagePosition); addScrollingClass(i, axis); updateGeometry(i); @@ -564,7 +597,8 @@ function bindMouseScrollHandler( } startingMousePagePosition = e[pageAxis]; scrollBy = - (i[contentDimension] - i[containerDimension]) / (i[railDimension] - i[scrollbarDimension]); + (i[contentDimension] - i[containerDimension]) / + (i[railDimension] - i[scrollbarDimension]); if (!e.touches) { document.addEventListener('mousemove', moveHandler); @@ -589,7 +623,7 @@ function bindMouseScrollHandler( /* eslint-disable */ -function keyboard (i) { +function keyboard(i) { var element = i.element; var elementHovered = function () { return matches(element, ':hover'); }; @@ -625,7 +659,10 @@ function keyboard (i) { } i.event.bind(i.ownerDocument, 'keydown', function (e) { - if ((e.isDefaultPrevented && e.isDefaultPrevented()) || e.defaultPrevented) { + if ( + (e.isDefaultPrevented && e.isDefaultPrevented()) || + e.defaultPrevented + ) { return; } @@ -732,15 +769,17 @@ function keyboard (i) { /* eslint-disable */ -function wheel (i) { +function wheel(i) { var element = i.element; function shouldPreventDefault(deltaX, deltaY) { var roundedScrollTop = Math.floor(element.scrollTop); var isTop = element.scrollTop === 0; - var isBottom = roundedScrollTop + element.offsetHeight === element.scrollHeight; + var isBottom = + roundedScrollTop + element.offsetHeight === element.scrollHeight; var isLeft = element.scrollLeft === 0; - var isRight = element.scrollLeft + element.offsetWidth === element.scrollWidth; + var isRight = + element.scrollLeft + element.offsetWidth === element.scrollWidth; var hitsBound; @@ -884,7 +923,7 @@ function wheel (i) { } } -function touch (i) { +function touch(i) { if (!env.supportsTouch && !env.supportsIePointer) { return; } @@ -953,7 +992,11 @@ function touch (i) { if (e.targetTouches && e.targetTouches.length === 1) { return true; } - if (e.pointerType && e.pointerType !== 'mouse' && e.pointerType !== e.MSPOINTER_TYPE_MOUSE) { + if ( + e.pointerType && + e.pointerType !== 'mouse' && + e.pointerType !== e.MSPOINTER_TYPE_MOUSE + ) { return true; } return false; @@ -1189,10 +1232,12 @@ var PerfectScrollbar = function PerfectScrollbar(element, userSettings) { } else { this.isScrollbarXUsingBottom = true; } - this.railBorderXWidth = toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth); + this.railBorderXWidth = + toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth); // Set rail to display:block to calculate margins set(this.scrollbarXRail, { display: 'block' }); - this.railXMarginWidth = toInt(railXStyle.marginLeft) + toInt(railXStyle.marginRight); + this.railXMarginWidth = + toInt(railXStyle.marginLeft) + toInt(railXStyle.marginRight); set(this.scrollbarXRail, { display: '' }); this.railXWidth = null; this.railXRatio = null; @@ -1216,9 +1261,11 @@ var PerfectScrollbar = function PerfectScrollbar(element, userSettings) { this.isScrollbarYUsingRight = true; } this.scrollbarYOuterWidth = this.isRtl ? outerWidth(this.scrollbarY) : null; - this.railBorderYWidth = toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth); + this.railBorderYWidth = + toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth); set(this.scrollbarYRail, { display: 'block' }); - this.railYMarginHeight = toInt(railYStyle.marginTop) + toInt(railYStyle.marginBottom); + this.railYMarginHeight = + toInt(railYStyle.marginTop) + toInt(railYStyle.marginBottom); set(this.scrollbarYRail, { display: '' }); this.railYHeight = null; this.railYRatio = null; @@ -1288,7 +1335,11 @@ PerfectScrollbar.prototype.onScroll = function onScroll (e) { updateGeometry(this); processScrollDiff(this, 'top', this.element.scrollTop - this.lastScrollTop); - processScrollDiff(this, 'left', this.element.scrollLeft - this.lastScrollLeft); + processScrollDiff( + this, + 'left', + this.element.scrollLeft - this.lastScrollLeft + ); this.lastScrollTop = Math.floor(this.element.scrollTop); this.lastScrollLeft = this.element.scrollLeft; diff --git a/dist/perfect-scrollbar.common.js.map b/dist/perfect-scrollbar.common.js.map index 47e9748..b91636f 100644 --- a/dist/perfect-scrollbar.common.js.map +++ b/dist/perfect-scrollbar.common.js.map @@ -1 +1 @@ -{"version":3,"file":"perfect-scrollbar.common.js","sources":["../src/lib/css.js","../src/lib/dom.js","../src/lib/class-names.js","../src/lib/event-manager.js","../src/process-scroll-diff.js","../src/lib/util.js","../src/update-geometry.js","../src/handlers/click-rail.js","../src/handlers/drag-thumb.js","../src/handlers/keyboard.js","../src/handlers/mouse-wheel.js","../src/handlers/touch.js","../src/index.js"],"sourcesContent":["export function get(element) {\n return getComputedStyle(element);\n}\n\nexport function set(element, obj) {\n for (const key in obj) {\n let val = obj[key];\n if (typeof val === 'number') {\n val = `${val}px`;\n }\n element.style[key] = val;\n }\n return element;\n}\n","export function div(className) {\n const div = document.createElement('div');\n div.className = className;\n return div;\n}\n\nconst elMatches =\n typeof Element !== 'undefined' &&\n (Element.prototype.matches ||\n Element.prototype.webkitMatchesSelector ||\n Element.prototype.mozMatchesSelector ||\n Element.prototype.msMatchesSelector);\n\nexport function matches(element, query) {\n if (!elMatches) {\n throw new Error('No element matching method supported');\n }\n\n return elMatches.call(element, query);\n}\n\nexport function remove(element) {\n if (element.remove) {\n element.remove();\n } else {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n}\n\nexport function queryChildren(element, selector) {\n return Array.prototype.filter.call(element.children, child =>\n matches(child, selector)\n );\n}\n","const cls = {\n main: 'ps',\n rtl: 'ps__rtl',\n element: {\n thumb: x => `ps__thumb-${x}`,\n rail: x => `ps__rail-${x}`,\n consuming: 'ps__child--consume',\n },\n state: {\n focus: 'ps--focus',\n clicking: 'ps--clicking',\n active: x => `ps--active-${x}`,\n scrolling: x => `ps--scrolling-${x}`,\n },\n};\n\nexport default cls;\n\n/*\n * Helper methods\n */\nconst scrollingClassTimeout = { x: null, y: null };\n\nexport function addScrollingClass(i, x) {\n const classList = i.element.classList;\n const className = cls.state.scrolling(x);\n\n if (classList.contains(className)) {\n clearTimeout(scrollingClassTimeout[x]);\n } else {\n classList.add(className);\n }\n}\n\nexport function removeScrollingClass(i, x) {\n scrollingClassTimeout[x] = setTimeout(\n () => i.isAlive && i.element.classList.remove(cls.state.scrolling(x)),\n i.settings.scrollingThreshold\n );\n}\n\nexport function setScrollingClassInstantly(i, x) {\n addScrollingClass(i, x);\n removeScrollingClass(i, x);\n}\n","class EventElement {\n constructor(element) {\n this.element = element;\n this.handlers = {};\n }\n\n bind(eventName, handler) {\n if (typeof this.handlers[eventName] === 'undefined') {\n this.handlers[eventName] = [];\n }\n this.handlers[eventName].push(handler);\n this.element.addEventListener(eventName, handler, false);\n }\n\n unbind(eventName, target) {\n this.handlers[eventName] = this.handlers[eventName].filter(handler => {\n if (target && handler !== target) {\n return true;\n }\n this.element.removeEventListener(eventName, handler, false);\n return false;\n });\n }\n\n unbindAll() {\n for (const name in this.handlers) {\n this.unbind(name);\n }\n }\n\n get isEmpty() {\n return Object.keys(this.handlers).every(\n key => this.handlers[key].length === 0\n );\n }\n}\n\nexport default class EventManager {\n constructor() {\n this.eventElements = [];\n }\n\n eventElement(element) {\n let ee = this.eventElements.filter(ee => ee.element === element)[0];\n if (!ee) {\n ee = new EventElement(element);\n this.eventElements.push(ee);\n }\n return ee;\n }\n\n bind(element, eventName, handler) {\n this.eventElement(element).bind(eventName, handler);\n }\n\n unbind(element, eventName, handler) {\n const ee = this.eventElement(element);\n ee.unbind(eventName, handler);\n\n if (ee.isEmpty) {\n // remove\n this.eventElements.splice(this.eventElements.indexOf(ee), 1);\n }\n }\n\n unbindAll() {\n this.eventElements.forEach(e => e.unbindAll());\n this.eventElements = [];\n }\n\n once(element, eventName, handler) {\n const ee = this.eventElement(element);\n const onceHandler = evt => {\n ee.unbind(eventName, onceHandler);\n handler(evt);\n };\n ee.bind(eventName, onceHandler);\n }\n}\n","import { setScrollingClassInstantly } from './lib/class-names';\n\nfunction createEvent(name) {\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(name);\n }\n\n const evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(name, false, false, undefined);\n return evt;\n}\n\nexport default function (i, axis, diff, useScrollingClass = true, forceFireReachEvent = false) {\n let fields;\n if (axis === 'top') {\n fields = ['contentHeight', 'containerHeight', 'scrollTop', 'y', 'up', 'down'];\n } else if (axis === 'left') {\n fields = ['contentWidth', 'containerWidth', 'scrollLeft', 'x', 'left', 'right'];\n } else {\n throw new Error('A proper axis should be provided');\n }\n\n processScrollDiff(i, diff, fields, useScrollingClass, forceFireReachEvent);\n}\n\nfunction processScrollDiff(\n i,\n diff,\n [contentHeight, containerHeight, scrollTop, y, up, down],\n useScrollingClass = true,\n forceFireReachEvent = false\n) {\n const element = i.element;\n\n // reset reach\n i.reach[y] = null;\n\n // 1 for subpixel rounding\n if (element[scrollTop] < 1) {\n i.reach[y] = 'start';\n }\n\n // 1 for subpixel rounding\n if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) {\n i.reach[y] = 'end';\n }\n\n if (diff) {\n element.dispatchEvent(createEvent(`ps-scroll-${y}`));\n\n if (diff < 0) {\n element.dispatchEvent(createEvent(`ps-scroll-${up}`));\n } else if (diff > 0) {\n element.dispatchEvent(createEvent(`ps-scroll-${down}`));\n }\n\n if (useScrollingClass) {\n setScrollingClassInstantly(i, y);\n }\n }\n\n if (i.reach[y] && (diff || forceFireReachEvent)) {\n element.dispatchEvent(createEvent(`ps-${y}-reach-${i.reach[y]}`));\n }\n}\n","import * as CSS from './css';\nimport * as DOM from './dom';\n\nexport function toInt(x) {\n return parseInt(x, 10) || 0;\n}\n\nexport function isEditable(el) {\n return (\n 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}\n\nexport function outerWidth(element) {\n const styles = CSS.get(element);\n return (\n toInt(styles.width) +\n toInt(styles.paddingLeft) +\n toInt(styles.paddingRight) +\n toInt(styles.borderLeftWidth) +\n toInt(styles.borderRightWidth)\n );\n}\n\nexport const env = {\n isWebKit:\n typeof document !== 'undefined' &&\n 'WebkitAppearance' in document.documentElement.style,\n supportsTouch:\n typeof window !== 'undefined' &&\n ('ontouchstart' in window ||\n ('maxTouchPoints' in window.navigator &&\n window.navigator.maxTouchPoints > 0) ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)),\n supportsIePointer:\n typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,\n isChrome:\n typeof navigator !== 'undefined' &&\n /Chrome/i.test(navigator && navigator.userAgent),\n};\n","import * as CSS from './lib/css';\nimport * as DOM from './lib/dom';\nimport cls from './lib/class-names';\nimport { toInt } from './lib/util';\n\n/* eslint-disable no-lonely-if */\n\nexport default function (i) {\n const element = i.element;\n const roundedScrollTop = Math.floor(element.scrollTop);\n const rect = element.getBoundingClientRect();\n\n i.containerWidth = Math.floor(rect.width);\n i.containerHeight = Math.floor(rect.height);\n\n i.contentWidth = element.scrollWidth;\n i.contentHeight = element.scrollHeight;\n\n if (!element.contains(i.scrollbarXRail)) {\n // clean up and append\n DOM.queryChildren(element, cls.element.rail('x')).forEach((el) => DOM.remove(el));\n element.appendChild(i.scrollbarXRail);\n }\n if (!element.contains(i.scrollbarYRail)) {\n // clean up and append\n DOM.queryChildren(element, cls.element.rail('y')).forEach((el) => DOM.remove(el));\n element.appendChild(i.scrollbarYRail);\n }\n\n if (\n !i.settings.suppressScrollX &&\n i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth\n ) {\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(\n ((i.negativeScrollAdjustment + element.scrollLeft) * (i.railXWidth - i.scrollbarXWidth)) /\n (i.contentWidth - i.containerWidth)\n );\n } else {\n i.scrollbarXActive = false;\n }\n\n if (\n !i.settings.suppressScrollY &&\n i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight\n ) {\n i.scrollbarYActive = true;\n i.railYHeight = i.containerHeight - i.railYMarginHeight;\n i.railYRatio = i.containerHeight / i.railYHeight;\n i.scrollbarYHeight = getThumbSize(\n i,\n toInt((i.railYHeight * i.containerHeight) / i.contentHeight)\n );\n i.scrollbarYTop = toInt(\n (roundedScrollTop * (i.railYHeight - i.scrollbarYHeight)) /\n (i.contentHeight - i.containerHeight)\n );\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 element.classList.add(cls.state.active('x'));\n } else {\n element.classList.remove(cls.state.active('x'));\n i.scrollbarXWidth = 0;\n i.scrollbarXLeft = 0;\n element.scrollLeft = i.isRtl === true ? i.contentWidth : 0;\n }\n if (i.scrollbarYActive) {\n element.classList.add(cls.state.active('y'));\n } else {\n element.classList.remove(cls.state.active('y'));\n i.scrollbarYHeight = 0;\n i.scrollbarYTop = 0;\n element.scrollTop = 0;\n }\n}\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 const xRailOffset = { width: i.railXWidth };\n const roundedScrollTop = Math.floor(element.scrollTop);\n\n if (i.isRtl) {\n xRailOffset.left =\n 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 - roundedScrollTop;\n } else {\n xRailOffset.top = i.scrollbarXTop + roundedScrollTop;\n }\n CSS.set(i.scrollbarXRail, xRailOffset);\n\n const yRailOffset = { top: roundedScrollTop, height: i.railYHeight };\n if (i.isScrollbarYUsingRight) {\n if (i.isRtl) {\n yRailOffset.right =\n i.contentWidth -\n (i.negativeScrollAdjustment + element.scrollLeft) -\n i.scrollbarYRight -\n i.scrollbarYOuterWidth -\n 9;\n } else {\n yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\n }\n } else {\n if (i.isRtl) {\n yRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth * 2 -\n i.contentWidth -\n i.scrollbarYLeft -\n i.scrollbarYOuterWidth;\n } else {\n yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\n }\n }\n CSS.set(i.scrollbarYRail, yRailOffset);\n\n CSS.set(i.scrollbarX, {\n left: i.scrollbarXLeft,\n width: i.scrollbarXWidth - i.railBorderXWidth,\n });\n CSS.set(i.scrollbarY, {\n top: i.scrollbarYTop,\n height: i.scrollbarYHeight - i.railBorderYWidth,\n });\n}\n","/* eslint-disable */\n\nimport updateGeometry from '../update-geometry';\n\nexport default function (i) {\n // const element = i.element;\n\n i.event.bind(i.scrollbarY, 'mousedown', (e) => e.stopPropagation());\n i.event.bind(i.scrollbarYRail, 'mousedown', (e) => {\n const positionTop = e.pageY - window.pageYOffset - i.scrollbarYRail.getBoundingClientRect().top;\n const direction = positionTop > i.scrollbarYTop ? 1 : -1;\n\n i.element.scrollTop += direction * i.containerHeight;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n\n i.event.bind(i.scrollbarX, 'mousedown', (e) => e.stopPropagation());\n i.event.bind(i.scrollbarXRail, 'mousedown', (e) => {\n const positionLeft =\n e.pageX - window.pageXOffset - i.scrollbarXRail.getBoundingClientRect().left;\n const direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n i.element.scrollLeft += direction * i.containerWidth;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n}\n","import cls, { addScrollingClass, removeScrollingClass } from '../lib/class-names';\nimport updateGeometry from '../update-geometry';\n\nlet activeSlider = null; // Variable to track the currently active slider\n\nexport default function setupScrollHandlers(i) {\n bindMouseScrollHandler(i, [\n 'containerHeight',\n 'contentHeight',\n 'pageY',\n 'railYHeight',\n 'scrollbarY',\n 'scrollbarYHeight',\n 'scrollTop',\n 'y',\n 'scrollbarYRail',\n ]);\n\n bindMouseScrollHandler(i, [\n 'containerWidth',\n 'contentWidth',\n 'pageX',\n 'railXWidth',\n 'scrollbarX',\n 'scrollbarXWidth',\n 'scrollLeft',\n 'x',\n 'scrollbarXRail',\n ]);\n}\n\nfunction bindMouseScrollHandler(\n i,\n [\n containerDimension,\n contentDimension,\n pageAxis,\n railDimension,\n scrollbarAxis,\n scrollbarDimension,\n scrollAxis,\n axis,\n scrollbarRail,\n ]\n) {\n const element = i.element;\n let startingScrollPosition = null;\n let startingMousePagePosition = null;\n let scrollBy = null;\n\n function moveHandler(e) {\n if (e.touches && e.touches[0]) {\n e[pageAxis] = e.touches[0][`page${axis.toUpperCase()}`];\n }\n\n // Only move if the active slider is the one we started with\n if (activeSlider === scrollbarAxis) {\n element[scrollAxis] =\n startingScrollPosition + scrollBy * (e[pageAxis] - startingMousePagePosition);\n addScrollingClass(i, axis);\n updateGeometry(i);\n\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n function endHandler() {\n removeScrollingClass(i, axis);\n i[scrollbarRail].classList.remove(cls.state.clicking);\n document.removeEventListener('mousemove', moveHandler);\n document.removeEventListener('mouseup', endHandler);\n document.removeEventListener('touchmove', moveHandler);\n document.removeEventListener('touchend', endHandler);\n activeSlider = null; // Reset active slider when interaction ends\n }\n\n function bindMoves(e) {\n if (activeSlider === null) {\n // Only bind if no slider is currently active\n activeSlider = scrollbarAxis; // Set current slider as active\n\n startingScrollPosition = element[scrollAxis];\n if (e.touches) {\n e[pageAxis] = e.touches[0][`page${axis.toUpperCase()}`];\n }\n startingMousePagePosition = e[pageAxis];\n scrollBy =\n (i[contentDimension] - i[containerDimension]) / (i[railDimension] - i[scrollbarDimension]);\n\n if (!e.touches) {\n document.addEventListener('mousemove', moveHandler);\n document.addEventListener('mouseup', endHandler);\n } else {\n document.addEventListener('touchmove', moveHandler, { passive: false });\n document.addEventListener('touchend', endHandler);\n }\n\n i[scrollbarRail].classList.add(cls.state.clicking);\n }\n\n e.stopPropagation();\n if (e.cancelable) {\n e.preventDefault();\n }\n }\n\n i[scrollbarAxis].addEventListener('mousedown', bindMoves);\n i[scrollbarAxis].addEventListener('touchstart', bindMoves);\n}\n","/* eslint-disable */\n\nimport * as DOM from '../lib/dom';\nimport updateGeometry from '../update-geometry';\nimport { isEditable } from '../lib/util';\n\nexport default function (i) {\n const element = i.element;\n\n const elementHovered = () => DOM.matches(element, ':hover');\n const scrollbarFocused = () =>\n DOM.matches(i.scrollbarX, ':focus') || DOM.matches(i.scrollbarY, ':focus');\n\n function shouldPreventDefault(deltaX, deltaY) {\n const scrollTop = Math.floor(element.scrollTop);\n if (deltaX === 0) {\n if (!i.scrollbarYActive) {\n return false;\n }\n if (\n (scrollTop === 0 && deltaY > 0) ||\n (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n\n const scrollLeft = element.scrollLeft;\n if (deltaY === 0) {\n if (!i.scrollbarXActive) {\n return false;\n }\n if (\n (scrollLeft === 0 && deltaX < 0) ||\n (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n return true;\n }\n\n i.event.bind(i.ownerDocument, 'keydown', (e) => {\n if ((e.isDefaultPrevented && e.isDefaultPrevented()) || e.defaultPrevented) {\n return;\n }\n\n if (!elementHovered() && !scrollbarFocused()) {\n return;\n }\n\n let activeElement = document.activeElement\n ? document.activeElement\n : 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 let deltaX = 0;\n let 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 32: // space bar\n if (e.shiftKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = -i.containerHeight;\n }\n break;\n case 33: // page up\n deltaY = i.containerHeight;\n break;\n case 34: // page down\n deltaY = -i.containerHeight;\n break;\n case 36: // home\n deltaY = i.contentHeight;\n break;\n case 35: // end\n deltaY = -i.contentHeight;\n break;\n default:\n return;\n }\n\n if (i.settings.suppressScrollX && deltaX !== 0) {\n return;\n }\n if (i.settings.suppressScrollY && deltaY !== 0) {\n return;\n }\n\n element.scrollTop -= deltaY;\n element.scrollLeft += deltaX;\n updateGeometry(i);\n\n if (shouldPreventDefault(deltaX, deltaY)) {\n e.preventDefault();\n }\n });\n}\n","/* eslint-disable */\n\nimport * as CSS from '../lib/css';\nimport cls from '../lib/class-names';\nimport updateGeometry from '../update-geometry';\nimport { env } from '../lib/util';\n\nexport default function (i) {\n const element = i.element;\n\n let shouldPrevent = false;\n\n function shouldPreventDefault(deltaX, deltaY) {\n const roundedScrollTop = Math.floor(element.scrollTop);\n const isTop = element.scrollTop === 0;\n const isBottom = roundedScrollTop + element.offsetHeight === element.scrollHeight;\n const isLeft = element.scrollLeft === 0;\n const isRight = element.scrollLeft + element.offsetWidth === element.scrollWidth;\n\n let hitsBound;\n\n // pick axis with primary direction\n if (Math.abs(deltaY) > Math.abs(deltaX)) {\n hitsBound = isTop || isBottom;\n } else {\n hitsBound = isLeft || isRight;\n }\n\n return hitsBound ? !i.settings.wheelPropagation : true;\n }\n\n function getDeltaFromEvent(e) {\n let deltaX = e.deltaX;\n let 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(target, deltaX, deltaY) {\n // FIXME: this is a workaround for issue in FF and IE #571\n if (!env.isWebKit && element.querySelector('select:focus')) {\n return true;\n }\n\n if (!element.contains(target)) {\n return false;\n }\n\n let cursor = target;\n\n while (cursor && cursor !== element) {\n if (cursor.classList.contains(cls.element.consuming)) {\n return true;\n }\n\n const style = CSS.get(cursor);\n\n // if deltaY && vertical scrollable\n if (deltaY && style.overflowY.match(/(scroll|auto)/)) {\n const maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n if (maxScrollTop > 0) {\n if (\n (cursor.scrollTop > 0 && deltaY < 0) ||\n (cursor.scrollTop < maxScrollTop && deltaY > 0)\n ) {\n return true;\n }\n }\n }\n // if deltaX && horizontal scrollable\n if (deltaX && style.overflowX.match(/(scroll|auto)/)) {\n const maxScrollLeft = cursor.scrollWidth - cursor.clientWidth;\n if (maxScrollLeft > 0) {\n if (\n (cursor.scrollLeft > 0 && deltaX < 0) ||\n (cursor.scrollLeft < maxScrollLeft && deltaX > 0)\n ) {\n return true;\n }\n }\n }\n\n cursor = cursor.parentNode;\n }\n\n return false;\n }\n\n function mousewheelHandler(e) {\n const [deltaX, deltaY] = getDeltaFromEvent(e);\n\n if (shouldBeConsumedByChild(e.target, deltaX, deltaY)) {\n return;\n }\n\n let 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 element.scrollTop -= deltaY * i.settings.wheelSpeed;\n 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 element.scrollTop -= deltaY * i.settings.wheelSpeed;\n } else {\n 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 element.scrollLeft += deltaX * i.settings.wheelSpeed;\n } else {\n element.scrollLeft -= deltaY * i.settings.wheelSpeed;\n }\n shouldPrevent = true;\n }\n\n updateGeometry(i);\n\n shouldPrevent = shouldPrevent || shouldPreventDefault(deltaX, deltaY);\n if (shouldPrevent && !e.ctrlKey) {\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","import updateGeometry from '../update-geometry';\nimport cls from '../lib/class-names';\nimport * as CSS from '../lib/css';\nimport { env } from '../lib/util';\n\nexport default function(i) {\n if (!env.supportsTouch && !env.supportsIePointer) {\n return;\n }\n\n const element = i.element;\n\n const state = {\n startOffset: {},\n startTime: 0,\n speed: {},\n easingLoop: null,\n };\n\n function shouldPrevent(deltaX, deltaY) {\n const scrollTop = Math.floor(element.scrollTop);\n const scrollLeft = element.scrollLeft;\n const magnitudeX = Math.abs(deltaX);\n const magnitudeY = Math.abs(deltaY);\n\n if (magnitudeY > magnitudeX) {\n // user is perhaps trying to swipe up/down the page\n\n if (\n (deltaY < 0 && scrollTop === i.contentHeight - i.containerHeight) ||\n (deltaY > 0 && scrollTop === 0)\n ) {\n // set prevent for mobile Chrome refresh\n return window.scrollY === 0 && deltaY > 0 && env.isChrome;\n }\n } else if (magnitudeX > magnitudeY) {\n // user is perhaps trying to swipe left/right across the page\n\n if (\n (deltaX < 0 && scrollLeft === i.contentWidth - i.containerWidth) ||\n (deltaX > 0 && scrollLeft === 0)\n ) {\n return true;\n }\n }\n\n return true;\n }\n\n function applyTouchMove(differenceX, differenceY) {\n element.scrollTop -= differenceY;\n element.scrollLeft -= differenceX;\n\n updateGeometry(i);\n }\n\n function getTouch(e) {\n if (e.targetTouches) {\n return e.targetTouches[0];\n }\n // Maybe IE pointer\n return e;\n }\n\n function shouldHandle(e) {\n if (e.target === i.scrollbarX || e.target === i.scrollbarY) {\n return false;\n }\n if (e.pointerType && e.pointerType === 'pen' && e.buttons === 0) {\n return false;\n }\n if (e.targetTouches && e.targetTouches.length === 1) {\n return true;\n }\n if (\n e.pointerType &&\n e.pointerType !== 'mouse' &&\n e.pointerType !== e.MSPOINTER_TYPE_MOUSE\n ) {\n return true;\n }\n return false;\n }\n\n function touchStart(e) {\n if (!shouldHandle(e)) {\n return;\n }\n\n const touch = getTouch(e);\n\n state.startOffset.pageX = touch.pageX;\n state.startOffset.pageY = touch.pageY;\n\n state.startTime = new Date().getTime();\n\n if (state.easingLoop !== null) {\n clearInterval(state.easingLoop);\n }\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n if (!element.contains(target)) {\n return false;\n }\n\n let cursor = target;\n\n while (cursor && cursor !== element) {\n if (cursor.classList.contains(cls.element.consuming)) {\n return true;\n }\n\n const style = CSS.get(cursor);\n\n // if deltaY && vertical scrollable\n if (deltaY && style.overflowY.match(/(scroll|auto)/)) {\n const maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n if (maxScrollTop > 0) {\n if (\n (cursor.scrollTop > 0 && deltaY < 0) ||\n (cursor.scrollTop < maxScrollTop && deltaY > 0)\n ) {\n return true;\n }\n }\n }\n // if deltaX && horizontal scrollable\n if (deltaX && style.overflowX.match(/(scroll|auto)/)) {\n const maxScrollLeft = cursor.scrollWidth - cursor.clientWidth;\n if (maxScrollLeft > 0) {\n if (\n (cursor.scrollLeft > 0 && deltaX < 0) ||\n (cursor.scrollLeft < maxScrollLeft && deltaX > 0)\n ) {\n return true;\n }\n }\n }\n\n cursor = cursor.parentNode;\n }\n\n return false;\n }\n\n function touchMove(e) {\n if (shouldHandle(e)) {\n const touch = getTouch(e);\n\n const currentOffset = { pageX: touch.pageX, pageY: touch.pageY };\n\n const differenceX = currentOffset.pageX - state.startOffset.pageX;\n const differenceY = currentOffset.pageY - state.startOffset.pageY;\n\n if (shouldBeConsumedByChild(e.target, differenceX, differenceY)) {\n return;\n }\n\n applyTouchMove(differenceX, differenceY);\n state.startOffset = currentOffset;\n\n const currentTime = new Date().getTime();\n\n const timeGap = currentTime - state.startTime;\n if (timeGap > 0) {\n state.speed.x = differenceX / timeGap;\n state.speed.y = differenceY / timeGap;\n state.startTime = currentTime;\n }\n\n if (shouldPrevent(differenceX, differenceY)) {\n // Prevent the default behavior if the event is cancelable\n if (e.cancelable) {\n e.preventDefault();\n }\n }\n }\n }\n\n function touchEnd() {\n if (i.settings.swipeEasing) {\n clearInterval(state.easingLoop);\n state.easingLoop = setInterval(() => {\n if (i.isInitialized) {\n clearInterval(state.easingLoop);\n return;\n }\n\n if (!state.speed.x && !state.speed.y) {\n clearInterval(state.easingLoop);\n return;\n }\n\n if (Math.abs(state.speed.x) < 0.01 && Math.abs(state.speed.y) < 0.01) {\n clearInterval(state.easingLoop);\n return;\n }\n\n applyTouchMove(state.speed.x * 30, state.speed.y * 30);\n\n state.speed.x *= 0.8;\n state.speed.y *= 0.8;\n }, 10);\n }\n }\n\n if (env.supportsTouch) {\n i.event.bind(element, 'touchstart', touchStart);\n i.event.bind(element, 'touchmove', touchMove);\n i.event.bind(element, 'touchend', touchEnd);\n } else if (env.supportsIePointer) {\n if (window.PointerEvent) {\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(element, 'MSPointerDown', touchStart);\n i.event.bind(element, 'MSPointerMove', touchMove);\n i.event.bind(element, 'MSPointerUp', touchEnd);\n }\n }\n}\n","/* eslint-disable */\n\nimport * as CSS from './lib/css';\nimport * as DOM from './lib/dom';\nimport cls from './lib/class-names';\nimport EventManager from './lib/event-manager';\nimport processScrollDiff from './process-scroll-diff';\nimport updateGeometry from './update-geometry';\nimport { toInt, outerWidth } from './lib/util';\n\nimport clickRail from './handlers/click-rail';\nimport dragThumb from './handlers/drag-thumb';\nimport keyboard from './handlers/keyboard';\nimport wheel from './handlers/mouse-wheel';\nimport touch from './handlers/touch';\n\nconst defaultSettings = () => ({\n handlers: ['click-rail', 'drag-thumb', 'keyboard', 'wheel', 'touch'],\n maxScrollbarLength: null,\n minScrollbarLength: null,\n scrollingThreshold: 1000,\n scrollXMarginOffset: 0,\n scrollYMarginOffset: 0,\n suppressScrollX: false,\n suppressScrollY: false,\n swipeEasing: true,\n useBothWheelAxes: false,\n wheelPropagation: true,\n wheelSpeed: 1,\n});\n\nconst handlers = {\n 'click-rail': clickRail,\n 'drag-thumb': dragThumb,\n keyboard,\n wheel,\n touch,\n};\n\nexport default class PerfectScrollbar {\n constructor(element, userSettings = {}) {\n if (typeof element === 'string') {\n element = document.querySelector(element);\n }\n\n if (!element || !element.nodeName) {\n throw new Error('no element is specified to initialize PerfectScrollbar');\n }\n\n this.element = element;\n\n element.classList.add(cls.main);\n\n this.settings = defaultSettings();\n for (const key in userSettings) {\n this.settings[key] = userSettings[key];\n }\n\n this.containerWidth = null;\n this.containerHeight = null;\n this.contentWidth = null;\n this.contentHeight = null;\n\n const focus = () => element.classList.add(cls.state.focus);\n const blur = () => element.classList.remove(cls.state.focus);\n\n this.isRtl = CSS.get(element).direction === 'rtl';\n if (this.isRtl === true) {\n element.classList.add(cls.rtl);\n }\n this.isNegativeScroll = (() => {\n const originalScrollLeft = element.scrollLeft;\n let result = null;\n element.scrollLeft = -1;\n result = element.scrollLeft < 0;\n element.scrollLeft = originalScrollLeft;\n return result;\n })();\n this.negativeScrollAdjustment = this.isNegativeScroll\n ? element.scrollWidth - element.clientWidth\n : 0;\n this.event = new EventManager();\n this.ownerDocument = element.ownerDocument || document;\n\n this.scrollbarXRail = DOM.div(cls.element.rail('x'));\n element.appendChild(this.scrollbarXRail);\n this.scrollbarX = DOM.div(cls.element.thumb('x'));\n this.scrollbarXRail.appendChild(this.scrollbarX);\n this.scrollbarX.setAttribute('tabindex', 0);\n this.event.bind(this.scrollbarX, 'focus', focus);\n this.event.bind(this.scrollbarX, 'blur', blur);\n this.scrollbarXActive = null;\n this.scrollbarXWidth = null;\n this.scrollbarXLeft = null;\n const railXStyle = CSS.get(this.scrollbarXRail);\n this.scrollbarXBottom = parseInt(railXStyle.bottom, 10);\n if (isNaN(this.scrollbarXBottom)) {\n this.isScrollbarXUsingBottom = false;\n this.scrollbarXTop = toInt(railXStyle.top);\n } else {\n this.isScrollbarXUsingBottom = true;\n }\n this.railBorderXWidth =\n toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth);\n // Set rail to display:block to calculate margins\n CSS.set(this.scrollbarXRail, { display: 'block' });\n this.railXMarginWidth =\n toInt(railXStyle.marginLeft) + toInt(railXStyle.marginRight);\n CSS.set(this.scrollbarXRail, { display: '' });\n this.railXWidth = null;\n this.railXRatio = null;\n\n this.scrollbarYRail = DOM.div(cls.element.rail('y'));\n element.appendChild(this.scrollbarYRail);\n this.scrollbarY = DOM.div(cls.element.thumb('y'));\n this.scrollbarYRail.appendChild(this.scrollbarY);\n this.scrollbarY.setAttribute('tabindex', 0);\n this.event.bind(this.scrollbarY, 'focus', focus);\n this.event.bind(this.scrollbarY, 'blur', blur);\n this.scrollbarYActive = null;\n this.scrollbarYHeight = null;\n this.scrollbarYTop = null;\n const railYStyle = CSS.get(this.scrollbarYRail);\n this.scrollbarYRight = parseInt(railYStyle.right, 10);\n if (isNaN(this.scrollbarYRight)) {\n this.isScrollbarYUsingRight = false;\n this.scrollbarYLeft = toInt(railYStyle.left);\n } else {\n this.isScrollbarYUsingRight = true;\n }\n this.scrollbarYOuterWidth = this.isRtl ? outerWidth(this.scrollbarY) : null;\n this.railBorderYWidth =\n toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth);\n CSS.set(this.scrollbarYRail, { display: 'block' });\n this.railYMarginHeight =\n toInt(railYStyle.marginTop) + toInt(railYStyle.marginBottom);\n CSS.set(this.scrollbarYRail, { display: '' });\n this.railYHeight = null;\n this.railYRatio = null;\n\n this.reach = {\n x:\n element.scrollLeft <= 0\n ? 'start'\n : element.scrollLeft >= this.contentWidth - this.containerWidth\n ? 'end'\n : null,\n y:\n element.scrollTop <= 0\n ? 'start'\n : element.scrollTop >= this.contentHeight - this.containerHeight\n ? 'end'\n : null,\n };\n\n this.isAlive = true;\n\n this.settings.handlers.forEach(handlerName => handlers[handlerName](this));\n\n this.lastScrollTop = Math.floor(element.scrollTop); // for onScroll only\n this.lastScrollLeft = element.scrollLeft; // for onScroll only\n this.event.bind(this.element, 'scroll', e => this.onScroll(e));\n updateGeometry(this);\n }\n\n update() {\n if (!this.isAlive) {\n return;\n }\n\n // Recalcuate negative scrollLeft adjustment\n this.negativeScrollAdjustment = this.isNegativeScroll\n ? this.element.scrollWidth - this.element.clientWidth\n : 0;\n\n // Recalculate rail margins\n CSS.set(this.scrollbarXRail, { display: 'block' });\n CSS.set(this.scrollbarYRail, { display: 'block' });\n this.railXMarginWidth =\n toInt(CSS.get(this.scrollbarXRail).marginLeft) +\n toInt(CSS.get(this.scrollbarXRail).marginRight);\n this.railYMarginHeight =\n toInt(CSS.get(this.scrollbarYRail).marginTop) +\n toInt(CSS.get(this.scrollbarYRail).marginBottom);\n\n // Hide scrollbars not to affect scrollWidth and scrollHeight\n CSS.set(this.scrollbarXRail, { display: 'none' });\n CSS.set(this.scrollbarYRail, { display: 'none' });\n\n updateGeometry(this);\n\n processScrollDiff(this, 'top', 0, false, true);\n processScrollDiff(this, 'left', 0, false, true);\n\n CSS.set(this.scrollbarXRail, { display: '' });\n CSS.set(this.scrollbarYRail, { display: '' });\n }\n\n onScroll(e) {\n if (!this.isAlive) {\n return;\n }\n\n updateGeometry(this);\n processScrollDiff(this, 'top', this.element.scrollTop - this.lastScrollTop);\n processScrollDiff(\n this,\n 'left',\n this.element.scrollLeft - this.lastScrollLeft\n );\n\n this.lastScrollTop = Math.floor(this.element.scrollTop);\n this.lastScrollLeft = this.element.scrollLeft;\n }\n\n destroy() {\n if (!this.isAlive) {\n return;\n }\n\n this.event.unbindAll();\n DOM.remove(this.scrollbarX);\n DOM.remove(this.scrollbarY);\n DOM.remove(this.scrollbarXRail);\n DOM.remove(this.scrollbarYRail);\n this.removePsClasses();\n\n // unset elements\n this.element = null;\n this.scrollbarX = null;\n this.scrollbarY = null;\n this.scrollbarXRail = null;\n this.scrollbarYRail = null;\n\n this.isAlive = false;\n }\n\n removePsClasses() {\n this.element.className = this.element.className\n .split(' ')\n .filter(name => !name.match(/^ps([-_].+|)$/))\n .join(' ');\n }\n}\n"],"names":["const","let","this","processScrollDiff","DOM.matches","CSS.get","DOM.queryChildren","DOM.remove","CSS.set","dragThumb","DOM.div"],"mappings":"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"} \ No newline at end of file diff --git a/dist/perfect-scrollbar.esm.js b/dist/perfect-scrollbar.esm.js index d54e121..5c97871 100644 --- a/dist/perfect-scrollbar.esm.js +++ b/dist/perfect-scrollbar.esm.js @@ -193,15 +193,33 @@ function createEvent(name) { return evt; } -function processScrollDiff (i, axis, diff, useScrollingClass, forceFireReachEvent) { +function processScrollDiff( + i, + axis, + diff, + useScrollingClass, + forceFireReachEvent +) { if ( useScrollingClass === void 0 ) useScrollingClass = true; if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false; var fields; if (axis === 'top') { - fields = ['contentHeight', 'containerHeight', 'scrollTop', 'y', 'up', 'down']; + fields = [ + 'contentHeight', + 'containerHeight', + 'scrollTop', + 'y', + 'up', + 'down' ]; } else if (axis === 'left') { - fields = ['contentWidth', 'containerWidth', 'scrollLeft', 'x', 'left', 'right']; + fields = [ + 'contentWidth', + 'containerWidth', + 'scrollLeft', + 'x', + 'left', + 'right' ]; } else { throw new Error('A proper axis should be provided'); } @@ -302,7 +320,7 @@ var env = { /* eslint-disable no-lonely-if */ -function updateGeometry (i) { +function updateGeometry(i) { var element = i.element; var roundedScrollTop = Math.floor(element.scrollTop); var rect = element.getBoundingClientRect(); @@ -315,12 +333,14 @@ function updateGeometry (i) { if (!element.contains(i.scrollbarXRail)) { // clean up and append - queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); }); + queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); } + ); element.appendChild(i.scrollbarXRail); } if (!element.contains(i.scrollbarYRail)) { // clean up and append - queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); }); + queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); } + ); element.appendChild(i.scrollbarYRail); } @@ -331,9 +351,13 @@ function updateGeometry (i) { i.scrollbarXActive = true; i.railXWidth = i.containerWidth - i.railXMarginWidth; i.railXRatio = i.containerWidth / i.railXWidth; - i.scrollbarXWidth = getThumbSize(i, toInt((i.railXWidth * i.containerWidth) / i.contentWidth)); + i.scrollbarXWidth = getThumbSize( + i, + toInt((i.railXWidth * i.containerWidth) / i.contentWidth) + ); i.scrollbarXLeft = toInt( - ((i.negativeScrollAdjustment + element.scrollLeft) * (i.railXWidth - i.scrollbarXWidth)) / + ((i.negativeScrollAdjustment + element.scrollLeft) * + (i.railXWidth - i.scrollbarXWidth)) / (i.contentWidth - i.containerWidth) ); } else { @@ -402,7 +426,10 @@ function updateCss(element, i) { if (i.isRtl) { xRailOffset.left = - i.negativeScrollAdjustment + element.scrollLeft + i.containerWidth - i.contentWidth; + i.negativeScrollAdjustment + + element.scrollLeft + + i.containerWidth - + i.contentWidth; } else { xRailOffset.left = element.scrollLeft; } @@ -452,12 +479,15 @@ function updateCss(element, i) { /* eslint-disable */ -function clickRail (i) { +function clickRail(i) { // const element = i.element; i.event.bind(i.scrollbarY, 'mousedown', function (e) { return e.stopPropagation(); }); i.event.bind(i.scrollbarYRail, 'mousedown', function (e) { - var positionTop = e.pageY - window.pageYOffset - i.scrollbarYRail.getBoundingClientRect().top; + var positionTop = + e.pageY - + window.pageYOffset - + i.scrollbarYRail.getBoundingClientRect().top; var direction = positionTop > i.scrollbarYTop ? 1 : -1; i.element.scrollTop += direction * i.containerHeight; @@ -469,7 +499,9 @@ function clickRail (i) { i.event.bind(i.scrollbarX, 'mousedown', function (e) { return e.stopPropagation(); }); i.event.bind(i.scrollbarXRail, 'mousedown', function (e) { var positionLeft = - e.pageX - window.pageXOffset - i.scrollbarXRail.getBoundingClientRect().left; + e.pageX - + window.pageXOffset - + i.scrollbarXRail.getBoundingClientRect().left; var direction = positionLeft > i.scrollbarXLeft ? 1 : -1; i.element.scrollLeft += direction * i.containerWidth; @@ -532,7 +564,8 @@ function bindMouseScrollHandler( // Only move if the active slider is the one we started with if (activeSlider === scrollbarAxis) { element[scrollAxis] = - startingScrollPosition + scrollBy * (e[pageAxis] - startingMousePagePosition); + startingScrollPosition + + scrollBy * (e[pageAxis] - startingMousePagePosition); addScrollingClass(i, axis); updateGeometry(i); @@ -562,7 +595,8 @@ function bindMouseScrollHandler( } startingMousePagePosition = e[pageAxis]; scrollBy = - (i[contentDimension] - i[containerDimension]) / (i[railDimension] - i[scrollbarDimension]); + (i[contentDimension] - i[containerDimension]) / + (i[railDimension] - i[scrollbarDimension]); if (!e.touches) { document.addEventListener('mousemove', moveHandler); @@ -587,7 +621,7 @@ function bindMouseScrollHandler( /* eslint-disable */ -function keyboard (i) { +function keyboard(i) { var element = i.element; var elementHovered = function () { return matches(element, ':hover'); }; @@ -623,7 +657,10 @@ function keyboard (i) { } i.event.bind(i.ownerDocument, 'keydown', function (e) { - if ((e.isDefaultPrevented && e.isDefaultPrevented()) || e.defaultPrevented) { + if ( + (e.isDefaultPrevented && e.isDefaultPrevented()) || + e.defaultPrevented + ) { return; } @@ -730,15 +767,17 @@ function keyboard (i) { /* eslint-disable */ -function wheel (i) { +function wheel(i) { var element = i.element; function shouldPreventDefault(deltaX, deltaY) { var roundedScrollTop = Math.floor(element.scrollTop); var isTop = element.scrollTop === 0; - var isBottom = roundedScrollTop + element.offsetHeight === element.scrollHeight; + var isBottom = + roundedScrollTop + element.offsetHeight === element.scrollHeight; var isLeft = element.scrollLeft === 0; - var isRight = element.scrollLeft + element.offsetWidth === element.scrollWidth; + var isRight = + element.scrollLeft + element.offsetWidth === element.scrollWidth; var hitsBound; @@ -882,7 +921,7 @@ function wheel (i) { } } -function touch (i) { +function touch(i) { if (!env.supportsTouch && !env.supportsIePointer) { return; } @@ -951,7 +990,11 @@ function touch (i) { if (e.targetTouches && e.targetTouches.length === 1) { return true; } - if (e.pointerType && e.pointerType !== 'mouse' && e.pointerType !== e.MSPOINTER_TYPE_MOUSE) { + if ( + e.pointerType && + e.pointerType !== 'mouse' && + e.pointerType !== e.MSPOINTER_TYPE_MOUSE + ) { return true; } return false; @@ -1187,10 +1230,12 @@ var PerfectScrollbar = function PerfectScrollbar(element, userSettings) { } else { this.isScrollbarXUsingBottom = true; } - this.railBorderXWidth = toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth); + this.railBorderXWidth = + toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth); // Set rail to display:block to calculate margins set(this.scrollbarXRail, { display: 'block' }); - this.railXMarginWidth = toInt(railXStyle.marginLeft) + toInt(railXStyle.marginRight); + this.railXMarginWidth = + toInt(railXStyle.marginLeft) + toInt(railXStyle.marginRight); set(this.scrollbarXRail, { display: '' }); this.railXWidth = null; this.railXRatio = null; @@ -1214,9 +1259,11 @@ var PerfectScrollbar = function PerfectScrollbar(element, userSettings) { this.isScrollbarYUsingRight = true; } this.scrollbarYOuterWidth = this.isRtl ? outerWidth(this.scrollbarY) : null; - this.railBorderYWidth = toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth); + this.railBorderYWidth = + toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth); set(this.scrollbarYRail, { display: 'block' }); - this.railYMarginHeight = toInt(railYStyle.marginTop) + toInt(railYStyle.marginBottom); + this.railYMarginHeight = + toInt(railYStyle.marginTop) + toInt(railYStyle.marginBottom); set(this.scrollbarYRail, { display: '' }); this.railYHeight = null; this.railYRatio = null; @@ -1286,7 +1333,11 @@ PerfectScrollbar.prototype.onScroll = function onScroll (e) { updateGeometry(this); processScrollDiff(this, 'top', this.element.scrollTop - this.lastScrollTop); - processScrollDiff(this, 'left', this.element.scrollLeft - this.lastScrollLeft); + processScrollDiff( + this, + 'left', + this.element.scrollLeft - this.lastScrollLeft + ); this.lastScrollTop = Math.floor(this.element.scrollTop); this.lastScrollLeft = this.element.scrollLeft; diff --git a/dist/perfect-scrollbar.esm.js.map b/dist/perfect-scrollbar.esm.js.map index 64ea834..b506b5f 100644 --- a/dist/perfect-scrollbar.esm.js.map +++ b/dist/perfect-scrollbar.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"perfect-scrollbar.esm.js","sources":["../src/lib/css.js","../src/lib/dom.js","../src/lib/class-names.js","../src/lib/event-manager.js","../src/process-scroll-diff.js","../src/lib/util.js","../src/update-geometry.js","../src/handlers/click-rail.js","../src/handlers/drag-thumb.js","../src/handlers/keyboard.js","../src/handlers/mouse-wheel.js","../src/handlers/touch.js","../src/index.js"],"sourcesContent":["export function get(element) {\n return getComputedStyle(element);\n}\n\nexport function set(element, obj) {\n for (const key in obj) {\n let val = obj[key];\n if (typeof val === 'number') {\n val = `${val}px`;\n }\n element.style[key] = val;\n }\n return element;\n}\n","export function div(className) {\n const div = document.createElement('div');\n div.className = className;\n return div;\n}\n\nconst elMatches =\n typeof Element !== 'undefined' &&\n (Element.prototype.matches ||\n Element.prototype.webkitMatchesSelector ||\n Element.prototype.mozMatchesSelector ||\n Element.prototype.msMatchesSelector);\n\nexport function matches(element, query) {\n if (!elMatches) {\n throw new Error('No element matching method supported');\n }\n\n return elMatches.call(element, query);\n}\n\nexport function remove(element) {\n if (element.remove) {\n element.remove();\n } else {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n}\n\nexport function queryChildren(element, selector) {\n return Array.prototype.filter.call(element.children, child =>\n matches(child, selector)\n );\n}\n","const cls = {\n main: 'ps',\n rtl: 'ps__rtl',\n element: {\n thumb: x => `ps__thumb-${x}`,\n rail: x => `ps__rail-${x}`,\n consuming: 'ps__child--consume',\n },\n state: {\n focus: 'ps--focus',\n clicking: 'ps--clicking',\n active: x => `ps--active-${x}`,\n scrolling: x => `ps--scrolling-${x}`,\n },\n};\n\nexport default cls;\n\n/*\n * Helper methods\n */\nconst scrollingClassTimeout = { x: null, y: null };\n\nexport function addScrollingClass(i, x) {\n const classList = i.element.classList;\n const className = cls.state.scrolling(x);\n\n if (classList.contains(className)) {\n clearTimeout(scrollingClassTimeout[x]);\n } else {\n classList.add(className);\n }\n}\n\nexport function removeScrollingClass(i, x) {\n scrollingClassTimeout[x] = setTimeout(\n () => i.isAlive && i.element.classList.remove(cls.state.scrolling(x)),\n i.settings.scrollingThreshold\n );\n}\n\nexport function setScrollingClassInstantly(i, x) {\n addScrollingClass(i, x);\n removeScrollingClass(i, x);\n}\n","class EventElement {\n constructor(element) {\n this.element = element;\n this.handlers = {};\n }\n\n bind(eventName, handler) {\n if (typeof this.handlers[eventName] === 'undefined') {\n this.handlers[eventName] = [];\n }\n this.handlers[eventName].push(handler);\n this.element.addEventListener(eventName, handler, false);\n }\n\n unbind(eventName, target) {\n this.handlers[eventName] = this.handlers[eventName].filter(handler => {\n if (target && handler !== target) {\n return true;\n }\n this.element.removeEventListener(eventName, handler, false);\n return false;\n });\n }\n\n unbindAll() {\n for (const name in this.handlers) {\n this.unbind(name);\n }\n }\n\n get isEmpty() {\n return Object.keys(this.handlers).every(\n key => this.handlers[key].length === 0\n );\n }\n}\n\nexport default class EventManager {\n constructor() {\n this.eventElements = [];\n }\n\n eventElement(element) {\n let ee = this.eventElements.filter(ee => ee.element === element)[0];\n if (!ee) {\n ee = new EventElement(element);\n this.eventElements.push(ee);\n }\n return ee;\n }\n\n bind(element, eventName, handler) {\n this.eventElement(element).bind(eventName, handler);\n }\n\n unbind(element, eventName, handler) {\n const ee = this.eventElement(element);\n ee.unbind(eventName, handler);\n\n if (ee.isEmpty) {\n // remove\n this.eventElements.splice(this.eventElements.indexOf(ee), 1);\n }\n }\n\n unbindAll() {\n this.eventElements.forEach(e => e.unbindAll());\n this.eventElements = [];\n }\n\n once(element, eventName, handler) {\n const ee = this.eventElement(element);\n const onceHandler = evt => {\n ee.unbind(eventName, onceHandler);\n handler(evt);\n };\n ee.bind(eventName, onceHandler);\n }\n}\n","import { setScrollingClassInstantly } from './lib/class-names';\n\nfunction createEvent(name) {\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(name);\n }\n\n const evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(name, false, false, undefined);\n return evt;\n}\n\nexport default function (i, axis, diff, useScrollingClass = true, forceFireReachEvent = false) {\n let fields;\n if (axis === 'top') {\n fields = ['contentHeight', 'containerHeight', 'scrollTop', 'y', 'up', 'down'];\n } else if (axis === 'left') {\n fields = ['contentWidth', 'containerWidth', 'scrollLeft', 'x', 'left', 'right'];\n } else {\n throw new Error('A proper axis should be provided');\n }\n\n processScrollDiff(i, diff, fields, useScrollingClass, forceFireReachEvent);\n}\n\nfunction processScrollDiff(\n i,\n diff,\n [contentHeight, containerHeight, scrollTop, y, up, down],\n useScrollingClass = true,\n forceFireReachEvent = false\n) {\n const element = i.element;\n\n // reset reach\n i.reach[y] = null;\n\n // 1 for subpixel rounding\n if (element[scrollTop] < 1) {\n i.reach[y] = 'start';\n }\n\n // 1 for subpixel rounding\n if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) {\n i.reach[y] = 'end';\n }\n\n if (diff) {\n element.dispatchEvent(createEvent(`ps-scroll-${y}`));\n\n if (diff < 0) {\n element.dispatchEvent(createEvent(`ps-scroll-${up}`));\n } else if (diff > 0) {\n element.dispatchEvent(createEvent(`ps-scroll-${down}`));\n }\n\n if (useScrollingClass) {\n setScrollingClassInstantly(i, y);\n }\n }\n\n if (i.reach[y] && (diff || forceFireReachEvent)) {\n element.dispatchEvent(createEvent(`ps-${y}-reach-${i.reach[y]}`));\n }\n}\n","import * as CSS from './css';\nimport * as DOM from './dom';\n\nexport function toInt(x) {\n return parseInt(x, 10) || 0;\n}\n\nexport function isEditable(el) {\n return (\n 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}\n\nexport function outerWidth(element) {\n const styles = CSS.get(element);\n return (\n toInt(styles.width) +\n toInt(styles.paddingLeft) +\n toInt(styles.paddingRight) +\n toInt(styles.borderLeftWidth) +\n toInt(styles.borderRightWidth)\n );\n}\n\nexport const env = {\n isWebKit:\n typeof document !== 'undefined' &&\n 'WebkitAppearance' in document.documentElement.style,\n supportsTouch:\n typeof window !== 'undefined' &&\n ('ontouchstart' in window ||\n ('maxTouchPoints' in window.navigator &&\n window.navigator.maxTouchPoints > 0) ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)),\n supportsIePointer:\n typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,\n isChrome:\n typeof navigator !== 'undefined' &&\n /Chrome/i.test(navigator && navigator.userAgent),\n};\n","import * as CSS from './lib/css';\nimport * as DOM from './lib/dom';\nimport cls from './lib/class-names';\nimport { toInt } from './lib/util';\n\n/* eslint-disable no-lonely-if */\n\nexport default function (i) {\n const element = i.element;\n const roundedScrollTop = Math.floor(element.scrollTop);\n const rect = element.getBoundingClientRect();\n\n i.containerWidth = Math.floor(rect.width);\n i.containerHeight = Math.floor(rect.height);\n\n i.contentWidth = element.scrollWidth;\n i.contentHeight = element.scrollHeight;\n\n if (!element.contains(i.scrollbarXRail)) {\n // clean up and append\n DOM.queryChildren(element, cls.element.rail('x')).forEach((el) => DOM.remove(el));\n element.appendChild(i.scrollbarXRail);\n }\n if (!element.contains(i.scrollbarYRail)) {\n // clean up and append\n DOM.queryChildren(element, cls.element.rail('y')).forEach((el) => DOM.remove(el));\n element.appendChild(i.scrollbarYRail);\n }\n\n if (\n !i.settings.suppressScrollX &&\n i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth\n ) {\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(\n ((i.negativeScrollAdjustment + element.scrollLeft) * (i.railXWidth - i.scrollbarXWidth)) /\n (i.contentWidth - i.containerWidth)\n );\n } else {\n i.scrollbarXActive = false;\n }\n\n if (\n !i.settings.suppressScrollY &&\n i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight\n ) {\n i.scrollbarYActive = true;\n i.railYHeight = i.containerHeight - i.railYMarginHeight;\n i.railYRatio = i.containerHeight / i.railYHeight;\n i.scrollbarYHeight = getThumbSize(\n i,\n toInt((i.railYHeight * i.containerHeight) / i.contentHeight)\n );\n i.scrollbarYTop = toInt(\n (roundedScrollTop * (i.railYHeight - i.scrollbarYHeight)) /\n (i.contentHeight - i.containerHeight)\n );\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 element.classList.add(cls.state.active('x'));\n } else {\n element.classList.remove(cls.state.active('x'));\n i.scrollbarXWidth = 0;\n i.scrollbarXLeft = 0;\n element.scrollLeft = i.isRtl === true ? i.contentWidth : 0;\n }\n if (i.scrollbarYActive) {\n element.classList.add(cls.state.active('y'));\n } else {\n element.classList.remove(cls.state.active('y'));\n i.scrollbarYHeight = 0;\n i.scrollbarYTop = 0;\n element.scrollTop = 0;\n }\n}\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 const xRailOffset = { width: i.railXWidth };\n const roundedScrollTop = Math.floor(element.scrollTop);\n\n if (i.isRtl) {\n xRailOffset.left =\n 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 - roundedScrollTop;\n } else {\n xRailOffset.top = i.scrollbarXTop + roundedScrollTop;\n }\n CSS.set(i.scrollbarXRail, xRailOffset);\n\n const yRailOffset = { top: roundedScrollTop, height: i.railYHeight };\n if (i.isScrollbarYUsingRight) {\n if (i.isRtl) {\n yRailOffset.right =\n i.contentWidth -\n (i.negativeScrollAdjustment + element.scrollLeft) -\n i.scrollbarYRight -\n i.scrollbarYOuterWidth -\n 9;\n } else {\n yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\n }\n } else {\n if (i.isRtl) {\n yRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth * 2 -\n i.contentWidth -\n i.scrollbarYLeft -\n i.scrollbarYOuterWidth;\n } else {\n yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\n }\n }\n CSS.set(i.scrollbarYRail, yRailOffset);\n\n CSS.set(i.scrollbarX, {\n left: i.scrollbarXLeft,\n width: i.scrollbarXWidth - i.railBorderXWidth,\n });\n CSS.set(i.scrollbarY, {\n top: i.scrollbarYTop,\n height: i.scrollbarYHeight - i.railBorderYWidth,\n });\n}\n","/* eslint-disable */\n\nimport updateGeometry from '../update-geometry';\n\nexport default function (i) {\n // const element = i.element;\n\n i.event.bind(i.scrollbarY, 'mousedown', (e) => e.stopPropagation());\n i.event.bind(i.scrollbarYRail, 'mousedown', (e) => {\n const positionTop = e.pageY - window.pageYOffset - i.scrollbarYRail.getBoundingClientRect().top;\n const direction = positionTop > i.scrollbarYTop ? 1 : -1;\n\n i.element.scrollTop += direction * i.containerHeight;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n\n i.event.bind(i.scrollbarX, 'mousedown', (e) => e.stopPropagation());\n i.event.bind(i.scrollbarXRail, 'mousedown', (e) => {\n const positionLeft =\n e.pageX - window.pageXOffset - i.scrollbarXRail.getBoundingClientRect().left;\n const direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n i.element.scrollLeft += direction * i.containerWidth;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n}\n","import cls, { addScrollingClass, removeScrollingClass } from '../lib/class-names';\nimport updateGeometry from '../update-geometry';\n\nlet activeSlider = null; // Variable to track the currently active slider\n\nexport default function setupScrollHandlers(i) {\n bindMouseScrollHandler(i, [\n 'containerHeight',\n 'contentHeight',\n 'pageY',\n 'railYHeight',\n 'scrollbarY',\n 'scrollbarYHeight',\n 'scrollTop',\n 'y',\n 'scrollbarYRail',\n ]);\n\n bindMouseScrollHandler(i, [\n 'containerWidth',\n 'contentWidth',\n 'pageX',\n 'railXWidth',\n 'scrollbarX',\n 'scrollbarXWidth',\n 'scrollLeft',\n 'x',\n 'scrollbarXRail',\n ]);\n}\n\nfunction bindMouseScrollHandler(\n i,\n [\n containerDimension,\n contentDimension,\n pageAxis,\n railDimension,\n scrollbarAxis,\n scrollbarDimension,\n scrollAxis,\n axis,\n scrollbarRail,\n ]\n) {\n const element = i.element;\n let startingScrollPosition = null;\n let startingMousePagePosition = null;\n let scrollBy = null;\n\n function moveHandler(e) {\n if (e.touches && e.touches[0]) {\n e[pageAxis] = e.touches[0][`page${axis.toUpperCase()}`];\n }\n\n // Only move if the active slider is the one we started with\n if (activeSlider === scrollbarAxis) {\n element[scrollAxis] =\n startingScrollPosition + scrollBy * (e[pageAxis] - startingMousePagePosition);\n addScrollingClass(i, axis);\n updateGeometry(i);\n\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n function endHandler() {\n removeScrollingClass(i, axis);\n i[scrollbarRail].classList.remove(cls.state.clicking);\n document.removeEventListener('mousemove', moveHandler);\n document.removeEventListener('mouseup', endHandler);\n document.removeEventListener('touchmove', moveHandler);\n document.removeEventListener('touchend', endHandler);\n activeSlider = null; // Reset active slider when interaction ends\n }\n\n function bindMoves(e) {\n if (activeSlider === null) {\n // Only bind if no slider is currently active\n activeSlider = scrollbarAxis; // Set current slider as active\n\n startingScrollPosition = element[scrollAxis];\n if (e.touches) {\n e[pageAxis] = e.touches[0][`page${axis.toUpperCase()}`];\n }\n startingMousePagePosition = e[pageAxis];\n scrollBy =\n (i[contentDimension] - i[containerDimension]) / (i[railDimension] - i[scrollbarDimension]);\n\n if (!e.touches) {\n document.addEventListener('mousemove', moveHandler);\n document.addEventListener('mouseup', endHandler);\n } else {\n document.addEventListener('touchmove', moveHandler, { passive: false });\n document.addEventListener('touchend', endHandler);\n }\n\n i[scrollbarRail].classList.add(cls.state.clicking);\n }\n\n e.stopPropagation();\n if (e.cancelable) {\n e.preventDefault();\n }\n }\n\n i[scrollbarAxis].addEventListener('mousedown', bindMoves);\n i[scrollbarAxis].addEventListener('touchstart', bindMoves);\n}\n","/* eslint-disable */\n\nimport * as DOM from '../lib/dom';\nimport updateGeometry from '../update-geometry';\nimport { isEditable } from '../lib/util';\n\nexport default function (i) {\n const element = i.element;\n\n const elementHovered = () => DOM.matches(element, ':hover');\n const scrollbarFocused = () =>\n DOM.matches(i.scrollbarX, ':focus') || DOM.matches(i.scrollbarY, ':focus');\n\n function shouldPreventDefault(deltaX, deltaY) {\n const scrollTop = Math.floor(element.scrollTop);\n if (deltaX === 0) {\n if (!i.scrollbarYActive) {\n return false;\n }\n if (\n (scrollTop === 0 && deltaY > 0) ||\n (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n\n const scrollLeft = element.scrollLeft;\n if (deltaY === 0) {\n if (!i.scrollbarXActive) {\n return false;\n }\n if (\n (scrollLeft === 0 && deltaX < 0) ||\n (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n return true;\n }\n\n i.event.bind(i.ownerDocument, 'keydown', (e) => {\n if ((e.isDefaultPrevented && e.isDefaultPrevented()) || e.defaultPrevented) {\n return;\n }\n\n if (!elementHovered() && !scrollbarFocused()) {\n return;\n }\n\n let activeElement = document.activeElement\n ? document.activeElement\n : 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 let deltaX = 0;\n let 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 32: // space bar\n if (e.shiftKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = -i.containerHeight;\n }\n break;\n case 33: // page up\n deltaY = i.containerHeight;\n break;\n case 34: // page down\n deltaY = -i.containerHeight;\n break;\n case 36: // home\n deltaY = i.contentHeight;\n break;\n case 35: // end\n deltaY = -i.contentHeight;\n break;\n default:\n return;\n }\n\n if (i.settings.suppressScrollX && deltaX !== 0) {\n return;\n }\n if (i.settings.suppressScrollY && deltaY !== 0) {\n return;\n }\n\n element.scrollTop -= deltaY;\n element.scrollLeft += deltaX;\n updateGeometry(i);\n\n if (shouldPreventDefault(deltaX, deltaY)) {\n e.preventDefault();\n }\n });\n}\n","/* eslint-disable */\n\nimport * as CSS from '../lib/css';\nimport cls from '../lib/class-names';\nimport updateGeometry from '../update-geometry';\nimport { env } from '../lib/util';\n\nexport default function (i) {\n const element = i.element;\n\n let shouldPrevent = false;\n\n function shouldPreventDefault(deltaX, deltaY) {\n const roundedScrollTop = Math.floor(element.scrollTop);\n const isTop = element.scrollTop === 0;\n const isBottom = roundedScrollTop + element.offsetHeight === element.scrollHeight;\n const isLeft = element.scrollLeft === 0;\n const isRight = element.scrollLeft + element.offsetWidth === element.scrollWidth;\n\n let hitsBound;\n\n // pick axis with primary direction\n if (Math.abs(deltaY) > Math.abs(deltaX)) {\n hitsBound = isTop || isBottom;\n } else {\n hitsBound = isLeft || isRight;\n }\n\n return hitsBound ? !i.settings.wheelPropagation : true;\n }\n\n function getDeltaFromEvent(e) {\n let deltaX = e.deltaX;\n let 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(target, deltaX, deltaY) {\n // FIXME: this is a workaround for issue in FF and IE #571\n if (!env.isWebKit && element.querySelector('select:focus')) {\n return true;\n }\n\n if (!element.contains(target)) {\n return false;\n }\n\n let cursor = target;\n\n while (cursor && cursor !== element) {\n if (cursor.classList.contains(cls.element.consuming)) {\n return true;\n }\n\n const style = CSS.get(cursor);\n\n // if deltaY && vertical scrollable\n if (deltaY && style.overflowY.match(/(scroll|auto)/)) {\n const maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n if (maxScrollTop > 0) {\n if (\n (cursor.scrollTop > 0 && deltaY < 0) ||\n (cursor.scrollTop < maxScrollTop && deltaY > 0)\n ) {\n return true;\n }\n }\n }\n // if deltaX && horizontal scrollable\n if (deltaX && style.overflowX.match(/(scroll|auto)/)) {\n const maxScrollLeft = cursor.scrollWidth - cursor.clientWidth;\n if (maxScrollLeft > 0) {\n if (\n (cursor.scrollLeft > 0 && deltaX < 0) ||\n (cursor.scrollLeft < maxScrollLeft && deltaX > 0)\n ) {\n return true;\n }\n }\n }\n\n cursor = cursor.parentNode;\n }\n\n return false;\n }\n\n function mousewheelHandler(e) {\n const [deltaX, deltaY] = getDeltaFromEvent(e);\n\n if (shouldBeConsumedByChild(e.target, deltaX, deltaY)) {\n return;\n }\n\n let 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 element.scrollTop -= deltaY * i.settings.wheelSpeed;\n 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 element.scrollTop -= deltaY * i.settings.wheelSpeed;\n } else {\n 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 element.scrollLeft += deltaX * i.settings.wheelSpeed;\n } else {\n element.scrollLeft -= deltaY * i.settings.wheelSpeed;\n }\n shouldPrevent = true;\n }\n\n updateGeometry(i);\n\n shouldPrevent = shouldPrevent || shouldPreventDefault(deltaX, deltaY);\n if (shouldPrevent && !e.ctrlKey) {\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","import updateGeometry from '../update-geometry';\nimport cls from '../lib/class-names';\nimport * as CSS from '../lib/css';\nimport { env } from '../lib/util';\n\nexport default function(i) {\n if (!env.supportsTouch && !env.supportsIePointer) {\n return;\n }\n\n const element = i.element;\n\n const state = {\n startOffset: {},\n startTime: 0,\n speed: {},\n easingLoop: null,\n };\n\n function shouldPrevent(deltaX, deltaY) {\n const scrollTop = Math.floor(element.scrollTop);\n const scrollLeft = element.scrollLeft;\n const magnitudeX = Math.abs(deltaX);\n const magnitudeY = Math.abs(deltaY);\n\n if (magnitudeY > magnitudeX) {\n // user is perhaps trying to swipe up/down the page\n\n if (\n (deltaY < 0 && scrollTop === i.contentHeight - i.containerHeight) ||\n (deltaY > 0 && scrollTop === 0)\n ) {\n // set prevent for mobile Chrome refresh\n return window.scrollY === 0 && deltaY > 0 && env.isChrome;\n }\n } else if (magnitudeX > magnitudeY) {\n // user is perhaps trying to swipe left/right across the page\n\n if (\n (deltaX < 0 && scrollLeft === i.contentWidth - i.containerWidth) ||\n (deltaX > 0 && scrollLeft === 0)\n ) {\n return true;\n }\n }\n\n return true;\n }\n\n function applyTouchMove(differenceX, differenceY) {\n element.scrollTop -= differenceY;\n element.scrollLeft -= differenceX;\n\n updateGeometry(i);\n }\n\n function getTouch(e) {\n if (e.targetTouches) {\n return e.targetTouches[0];\n }\n // Maybe IE pointer\n return e;\n }\n\n function shouldHandle(e) {\n if (e.target === i.scrollbarX || e.target === i.scrollbarY) {\n return false;\n }\n if (e.pointerType && e.pointerType === 'pen' && e.buttons === 0) {\n return false;\n }\n if (e.targetTouches && e.targetTouches.length === 1) {\n return true;\n }\n if (\n e.pointerType &&\n e.pointerType !== 'mouse' &&\n e.pointerType !== e.MSPOINTER_TYPE_MOUSE\n ) {\n return true;\n }\n return false;\n }\n\n function touchStart(e) {\n if (!shouldHandle(e)) {\n return;\n }\n\n const touch = getTouch(e);\n\n state.startOffset.pageX = touch.pageX;\n state.startOffset.pageY = touch.pageY;\n\n state.startTime = new Date().getTime();\n\n if (state.easingLoop !== null) {\n clearInterval(state.easingLoop);\n }\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n if (!element.contains(target)) {\n return false;\n }\n\n let cursor = target;\n\n while (cursor && cursor !== element) {\n if (cursor.classList.contains(cls.element.consuming)) {\n return true;\n }\n\n const style = CSS.get(cursor);\n\n // if deltaY && vertical scrollable\n if (deltaY && style.overflowY.match(/(scroll|auto)/)) {\n const maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n if (maxScrollTop > 0) {\n if (\n (cursor.scrollTop > 0 && deltaY < 0) ||\n (cursor.scrollTop < maxScrollTop && deltaY > 0)\n ) {\n return true;\n }\n }\n }\n // if deltaX && horizontal scrollable\n if (deltaX && style.overflowX.match(/(scroll|auto)/)) {\n const maxScrollLeft = cursor.scrollWidth - cursor.clientWidth;\n if (maxScrollLeft > 0) {\n if (\n (cursor.scrollLeft > 0 && deltaX < 0) ||\n (cursor.scrollLeft < maxScrollLeft && deltaX > 0)\n ) {\n return true;\n }\n }\n }\n\n cursor = cursor.parentNode;\n }\n\n return false;\n }\n\n function touchMove(e) {\n if (shouldHandle(e)) {\n const touch = getTouch(e);\n\n const currentOffset = { pageX: touch.pageX, pageY: touch.pageY };\n\n const differenceX = currentOffset.pageX - state.startOffset.pageX;\n const differenceY = currentOffset.pageY - state.startOffset.pageY;\n\n if (shouldBeConsumedByChild(e.target, differenceX, differenceY)) {\n return;\n }\n\n applyTouchMove(differenceX, differenceY);\n state.startOffset = currentOffset;\n\n const currentTime = new Date().getTime();\n\n const timeGap = currentTime - state.startTime;\n if (timeGap > 0) {\n state.speed.x = differenceX / timeGap;\n state.speed.y = differenceY / timeGap;\n state.startTime = currentTime;\n }\n\n if (shouldPrevent(differenceX, differenceY)) {\n // Prevent the default behavior if the event is cancelable\n if (e.cancelable) {\n e.preventDefault();\n }\n }\n }\n }\n\n function touchEnd() {\n if (i.settings.swipeEasing) {\n clearInterval(state.easingLoop);\n state.easingLoop = setInterval(() => {\n if (i.isInitialized) {\n clearInterval(state.easingLoop);\n return;\n }\n\n if (!state.speed.x && !state.speed.y) {\n clearInterval(state.easingLoop);\n return;\n }\n\n if (Math.abs(state.speed.x) < 0.01 && Math.abs(state.speed.y) < 0.01) {\n clearInterval(state.easingLoop);\n return;\n }\n\n applyTouchMove(state.speed.x * 30, state.speed.y * 30);\n\n state.speed.x *= 0.8;\n state.speed.y *= 0.8;\n }, 10);\n }\n }\n\n if (env.supportsTouch) {\n i.event.bind(element, 'touchstart', touchStart);\n i.event.bind(element, 'touchmove', touchMove);\n i.event.bind(element, 'touchend', touchEnd);\n } else if (env.supportsIePointer) {\n if (window.PointerEvent) {\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(element, 'MSPointerDown', touchStart);\n i.event.bind(element, 'MSPointerMove', touchMove);\n i.event.bind(element, 'MSPointerUp', touchEnd);\n }\n }\n}\n","/* eslint-disable */\n\nimport * as CSS from './lib/css';\nimport * as DOM from './lib/dom';\nimport cls from './lib/class-names';\nimport EventManager from './lib/event-manager';\nimport processScrollDiff from './process-scroll-diff';\nimport updateGeometry from './update-geometry';\nimport { toInt, outerWidth } from './lib/util';\n\nimport clickRail from './handlers/click-rail';\nimport dragThumb from './handlers/drag-thumb';\nimport keyboard from './handlers/keyboard';\nimport wheel from './handlers/mouse-wheel';\nimport touch from './handlers/touch';\n\nconst defaultSettings = () => ({\n handlers: ['click-rail', 'drag-thumb', 'keyboard', 'wheel', 'touch'],\n maxScrollbarLength: null,\n minScrollbarLength: null,\n scrollingThreshold: 1000,\n scrollXMarginOffset: 0,\n scrollYMarginOffset: 0,\n suppressScrollX: false,\n suppressScrollY: false,\n swipeEasing: true,\n useBothWheelAxes: false,\n wheelPropagation: true,\n wheelSpeed: 1,\n});\n\nconst handlers = {\n 'click-rail': clickRail,\n 'drag-thumb': dragThumb,\n keyboard,\n wheel,\n touch,\n};\n\nexport default class PerfectScrollbar {\n constructor(element, userSettings = {}) {\n if (typeof element === 'string') {\n element = document.querySelector(element);\n }\n\n if (!element || !element.nodeName) {\n throw new Error('no element is specified to initialize PerfectScrollbar');\n }\n\n this.element = element;\n\n element.classList.add(cls.main);\n\n this.settings = defaultSettings();\n for (const key in userSettings) {\n this.settings[key] = userSettings[key];\n }\n\n this.containerWidth = null;\n this.containerHeight = null;\n this.contentWidth = null;\n this.contentHeight = null;\n\n const focus = () => element.classList.add(cls.state.focus);\n const blur = () => element.classList.remove(cls.state.focus);\n\n this.isRtl = CSS.get(element).direction === 'rtl';\n if (this.isRtl === true) {\n element.classList.add(cls.rtl);\n }\n this.isNegativeScroll = (() => {\n const originalScrollLeft = element.scrollLeft;\n let result = null;\n element.scrollLeft = -1;\n result = element.scrollLeft < 0;\n element.scrollLeft = originalScrollLeft;\n return result;\n })();\n this.negativeScrollAdjustment = this.isNegativeScroll\n ? element.scrollWidth - element.clientWidth\n : 0;\n this.event = new EventManager();\n this.ownerDocument = element.ownerDocument || document;\n\n this.scrollbarXRail = DOM.div(cls.element.rail('x'));\n element.appendChild(this.scrollbarXRail);\n this.scrollbarX = DOM.div(cls.element.thumb('x'));\n this.scrollbarXRail.appendChild(this.scrollbarX);\n this.scrollbarX.setAttribute('tabindex', 0);\n this.event.bind(this.scrollbarX, 'focus', focus);\n this.event.bind(this.scrollbarX, 'blur', blur);\n this.scrollbarXActive = null;\n this.scrollbarXWidth = null;\n this.scrollbarXLeft = null;\n const railXStyle = CSS.get(this.scrollbarXRail);\n this.scrollbarXBottom = parseInt(railXStyle.bottom, 10);\n if (isNaN(this.scrollbarXBottom)) {\n this.isScrollbarXUsingBottom = false;\n this.scrollbarXTop = toInt(railXStyle.top);\n } else {\n this.isScrollbarXUsingBottom = true;\n }\n this.railBorderXWidth =\n toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth);\n // Set rail to display:block to calculate margins\n CSS.set(this.scrollbarXRail, { display: 'block' });\n this.railXMarginWidth =\n toInt(railXStyle.marginLeft) + toInt(railXStyle.marginRight);\n CSS.set(this.scrollbarXRail, { display: '' });\n this.railXWidth = null;\n this.railXRatio = null;\n\n this.scrollbarYRail = DOM.div(cls.element.rail('y'));\n element.appendChild(this.scrollbarYRail);\n this.scrollbarY = DOM.div(cls.element.thumb('y'));\n this.scrollbarYRail.appendChild(this.scrollbarY);\n this.scrollbarY.setAttribute('tabindex', 0);\n this.event.bind(this.scrollbarY, 'focus', focus);\n this.event.bind(this.scrollbarY, 'blur', blur);\n this.scrollbarYActive = null;\n this.scrollbarYHeight = null;\n this.scrollbarYTop = null;\n const railYStyle = CSS.get(this.scrollbarYRail);\n this.scrollbarYRight = parseInt(railYStyle.right, 10);\n if (isNaN(this.scrollbarYRight)) {\n this.isScrollbarYUsingRight = false;\n this.scrollbarYLeft = toInt(railYStyle.left);\n } else {\n this.isScrollbarYUsingRight = true;\n }\n this.scrollbarYOuterWidth = this.isRtl ? outerWidth(this.scrollbarY) : null;\n this.railBorderYWidth =\n toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth);\n CSS.set(this.scrollbarYRail, { display: 'block' });\n this.railYMarginHeight =\n toInt(railYStyle.marginTop) + toInt(railYStyle.marginBottom);\n CSS.set(this.scrollbarYRail, { display: '' });\n this.railYHeight = null;\n this.railYRatio = null;\n\n this.reach = {\n x:\n element.scrollLeft <= 0\n ? 'start'\n : element.scrollLeft >= this.contentWidth - this.containerWidth\n ? 'end'\n : null,\n y:\n element.scrollTop <= 0\n ? 'start'\n : element.scrollTop >= this.contentHeight - this.containerHeight\n ? 'end'\n : null,\n };\n\n this.isAlive = true;\n\n this.settings.handlers.forEach(handlerName => handlers[handlerName](this));\n\n this.lastScrollTop = Math.floor(element.scrollTop); // for onScroll only\n this.lastScrollLeft = element.scrollLeft; // for onScroll only\n this.event.bind(this.element, 'scroll', e => this.onScroll(e));\n updateGeometry(this);\n }\n\n update() {\n if (!this.isAlive) {\n return;\n }\n\n // Recalcuate negative scrollLeft adjustment\n this.negativeScrollAdjustment = this.isNegativeScroll\n ? this.element.scrollWidth - this.element.clientWidth\n : 0;\n\n // Recalculate rail margins\n CSS.set(this.scrollbarXRail, { display: 'block' });\n CSS.set(this.scrollbarYRail, { display: 'block' });\n this.railXMarginWidth =\n toInt(CSS.get(this.scrollbarXRail).marginLeft) +\n toInt(CSS.get(this.scrollbarXRail).marginRight);\n this.railYMarginHeight =\n toInt(CSS.get(this.scrollbarYRail).marginTop) +\n toInt(CSS.get(this.scrollbarYRail).marginBottom);\n\n // Hide scrollbars not to affect scrollWidth and scrollHeight\n CSS.set(this.scrollbarXRail, { display: 'none' });\n CSS.set(this.scrollbarYRail, { display: 'none' });\n\n updateGeometry(this);\n\n processScrollDiff(this, 'top', 0, false, true);\n processScrollDiff(this, 'left', 0, false, true);\n\n CSS.set(this.scrollbarXRail, { display: '' });\n CSS.set(this.scrollbarYRail, { display: '' });\n }\n\n onScroll(e) {\n if (!this.isAlive) {\n return;\n }\n\n updateGeometry(this);\n processScrollDiff(this, 'top', this.element.scrollTop - this.lastScrollTop);\n processScrollDiff(\n this,\n 'left',\n this.element.scrollLeft - this.lastScrollLeft\n );\n\n this.lastScrollTop = Math.floor(this.element.scrollTop);\n this.lastScrollLeft = this.element.scrollLeft;\n }\n\n destroy() {\n if (!this.isAlive) {\n return;\n }\n\n this.event.unbindAll();\n DOM.remove(this.scrollbarX);\n DOM.remove(this.scrollbarY);\n DOM.remove(this.scrollbarXRail);\n DOM.remove(this.scrollbarYRail);\n this.removePsClasses();\n\n // unset elements\n this.element = null;\n this.scrollbarX = null;\n this.scrollbarY = null;\n this.scrollbarXRail = null;\n this.scrollbarYRail = null;\n\n this.isAlive = false;\n }\n\n removePsClasses() {\n this.element.className = this.element.className\n .split(' ')\n .filter(name => !name.match(/^ps([-_].+|)$/))\n .join(' ');\n }\n}\n"],"names":["const","let","this","processScrollDiff","DOM.matches","CSS.get","DOM.queryChildren","DOM.remove","CSS.set","dragThumb","DOM.div"],"mappings":"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"} \ No newline at end of file diff --git a/dist/perfect-scrollbar.js b/dist/perfect-scrollbar.js index 5fb3e21..5d01633 100644 --- a/dist/perfect-scrollbar.js +++ b/dist/perfect-scrollbar.js @@ -199,15 +199,33 @@ return evt; } - function processScrollDiff (i, axis, diff, useScrollingClass, forceFireReachEvent) { + function processScrollDiff( + i, + axis, + diff, + useScrollingClass, + forceFireReachEvent + ) { if ( useScrollingClass === void 0 ) useScrollingClass = true; if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false; var fields; if (axis === 'top') { - fields = ['contentHeight', 'containerHeight', 'scrollTop', 'y', 'up', 'down']; + fields = [ + 'contentHeight', + 'containerHeight', + 'scrollTop', + 'y', + 'up', + 'down' ]; } else if (axis === 'left') { - fields = ['contentWidth', 'containerWidth', 'scrollLeft', 'x', 'left', 'right']; + fields = [ + 'contentWidth', + 'containerWidth', + 'scrollLeft', + 'x', + 'left', + 'right' ]; } else { throw new Error('A proper axis should be provided'); } @@ -308,7 +326,7 @@ /* eslint-disable no-lonely-if */ - function updateGeometry (i) { + function updateGeometry(i) { var element = i.element; var roundedScrollTop = Math.floor(element.scrollTop); var rect = element.getBoundingClientRect(); @@ -321,12 +339,14 @@ if (!element.contains(i.scrollbarXRail)) { // clean up and append - queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); }); + queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); } + ); element.appendChild(i.scrollbarXRail); } if (!element.contains(i.scrollbarYRail)) { // clean up and append - queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); }); + queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); } + ); element.appendChild(i.scrollbarYRail); } @@ -337,9 +357,13 @@ i.scrollbarXActive = true; i.railXWidth = i.containerWidth - i.railXMarginWidth; i.railXRatio = i.containerWidth / i.railXWidth; - i.scrollbarXWidth = getThumbSize(i, toInt((i.railXWidth * i.containerWidth) / i.contentWidth)); + i.scrollbarXWidth = getThumbSize( + i, + toInt((i.railXWidth * i.containerWidth) / i.contentWidth) + ); i.scrollbarXLeft = toInt( - ((i.negativeScrollAdjustment + element.scrollLeft) * (i.railXWidth - i.scrollbarXWidth)) / + ((i.negativeScrollAdjustment + element.scrollLeft) * + (i.railXWidth - i.scrollbarXWidth)) / (i.contentWidth - i.containerWidth) ); } else { @@ -408,7 +432,10 @@ if (i.isRtl) { xRailOffset.left = - i.negativeScrollAdjustment + element.scrollLeft + i.containerWidth - i.contentWidth; + i.negativeScrollAdjustment + + element.scrollLeft + + i.containerWidth - + i.contentWidth; } else { xRailOffset.left = element.scrollLeft; } @@ -458,12 +485,15 @@ /* eslint-disable */ - function clickRail (i) { + function clickRail(i) { // const element = i.element; i.event.bind(i.scrollbarY, 'mousedown', function (e) { return e.stopPropagation(); }); i.event.bind(i.scrollbarYRail, 'mousedown', function (e) { - var positionTop = e.pageY - window.pageYOffset - i.scrollbarYRail.getBoundingClientRect().top; + var positionTop = + e.pageY - + window.pageYOffset - + i.scrollbarYRail.getBoundingClientRect().top; var direction = positionTop > i.scrollbarYTop ? 1 : -1; i.element.scrollTop += direction * i.containerHeight; @@ -475,7 +505,9 @@ i.event.bind(i.scrollbarX, 'mousedown', function (e) { return e.stopPropagation(); }); i.event.bind(i.scrollbarXRail, 'mousedown', function (e) { var positionLeft = - e.pageX - window.pageXOffset - i.scrollbarXRail.getBoundingClientRect().left; + e.pageX - + window.pageXOffset - + i.scrollbarXRail.getBoundingClientRect().left; var direction = positionLeft > i.scrollbarXLeft ? 1 : -1; i.element.scrollLeft += direction * i.containerWidth; @@ -538,7 +570,8 @@ // Only move if the active slider is the one we started with if (activeSlider === scrollbarAxis) { element[scrollAxis] = - startingScrollPosition + scrollBy * (e[pageAxis] - startingMousePagePosition); + startingScrollPosition + + scrollBy * (e[pageAxis] - startingMousePagePosition); addScrollingClass(i, axis); updateGeometry(i); @@ -568,7 +601,8 @@ } startingMousePagePosition = e[pageAxis]; scrollBy = - (i[contentDimension] - i[containerDimension]) / (i[railDimension] - i[scrollbarDimension]); + (i[contentDimension] - i[containerDimension]) / + (i[railDimension] - i[scrollbarDimension]); if (!e.touches) { document.addEventListener('mousemove', moveHandler); @@ -593,7 +627,7 @@ /* eslint-disable */ - function keyboard (i) { + function keyboard(i) { var element = i.element; var elementHovered = function () { return matches(element, ':hover'); }; @@ -629,7 +663,10 @@ } i.event.bind(i.ownerDocument, 'keydown', function (e) { - if ((e.isDefaultPrevented && e.isDefaultPrevented()) || e.defaultPrevented) { + if ( + (e.isDefaultPrevented && e.isDefaultPrevented()) || + e.defaultPrevented + ) { return; } @@ -736,15 +773,17 @@ /* eslint-disable */ - function wheel (i) { + function wheel(i) { var element = i.element; function shouldPreventDefault(deltaX, deltaY) { var roundedScrollTop = Math.floor(element.scrollTop); var isTop = element.scrollTop === 0; - var isBottom = roundedScrollTop + element.offsetHeight === element.scrollHeight; + var isBottom = + roundedScrollTop + element.offsetHeight === element.scrollHeight; var isLeft = element.scrollLeft === 0; - var isRight = element.scrollLeft + element.offsetWidth === element.scrollWidth; + var isRight = + element.scrollLeft + element.offsetWidth === element.scrollWidth; var hitsBound; @@ -888,7 +927,7 @@ } } - function touch (i) { + function touch(i) { if (!env.supportsTouch && !env.supportsIePointer) { return; } @@ -957,7 +996,11 @@ if (e.targetTouches && e.targetTouches.length === 1) { return true; } - if (e.pointerType && e.pointerType !== 'mouse' && e.pointerType !== e.MSPOINTER_TYPE_MOUSE) { + if ( + e.pointerType && + e.pointerType !== 'mouse' && + e.pointerType !== e.MSPOINTER_TYPE_MOUSE + ) { return true; } return false; @@ -1193,10 +1236,12 @@ } else { this.isScrollbarXUsingBottom = true; } - this.railBorderXWidth = toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth); + this.railBorderXWidth = + toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth); // Set rail to display:block to calculate margins set(this.scrollbarXRail, { display: 'block' }); - this.railXMarginWidth = toInt(railXStyle.marginLeft) + toInt(railXStyle.marginRight); + this.railXMarginWidth = + toInt(railXStyle.marginLeft) + toInt(railXStyle.marginRight); set(this.scrollbarXRail, { display: '' }); this.railXWidth = null; this.railXRatio = null; @@ -1220,9 +1265,11 @@ this.isScrollbarYUsingRight = true; } this.scrollbarYOuterWidth = this.isRtl ? outerWidth(this.scrollbarY) : null; - this.railBorderYWidth = toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth); + this.railBorderYWidth = + toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth); set(this.scrollbarYRail, { display: 'block' }); - this.railYMarginHeight = toInt(railYStyle.marginTop) + toInt(railYStyle.marginBottom); + this.railYMarginHeight = + toInt(railYStyle.marginTop) + toInt(railYStyle.marginBottom); set(this.scrollbarYRail, { display: '' }); this.railYHeight = null; this.railYRatio = null; @@ -1292,7 +1339,11 @@ updateGeometry(this); processScrollDiff(this, 'top', this.element.scrollTop - this.lastScrollTop); - processScrollDiff(this, 'left', this.element.scrollLeft - this.lastScrollLeft); + processScrollDiff( + this, + 'left', + this.element.scrollLeft - this.lastScrollLeft + ); this.lastScrollTop = Math.floor(this.element.scrollTop); this.lastScrollLeft = this.element.scrollLeft; diff --git a/dist/perfect-scrollbar.js.map b/dist/perfect-scrollbar.js.map index 2cff147..79579f5 100644 --- a/dist/perfect-scrollbar.js.map +++ b/dist/perfect-scrollbar.js.map @@ -1 +1 @@ -{"version":3,"file":"perfect-scrollbar.js","sources":["../src/lib/css.js","../src/lib/dom.js","../src/lib/class-names.js","../src/lib/event-manager.js","../src/process-scroll-diff.js","../src/lib/util.js","../src/update-geometry.js","../src/handlers/click-rail.js","../src/handlers/drag-thumb.js","../src/handlers/keyboard.js","../src/handlers/mouse-wheel.js","../src/handlers/touch.js","../src/index.js"],"sourcesContent":["export function get(element) {\n return getComputedStyle(element);\n}\n\nexport function set(element, obj) {\n for (const key in obj) {\n let val = obj[key];\n if (typeof val === 'number') {\n val = `${val}px`;\n }\n element.style[key] = val;\n }\n return element;\n}\n","export function div(className) {\n const div = document.createElement('div');\n div.className = className;\n return div;\n}\n\nconst elMatches =\n typeof Element !== 'undefined' &&\n (Element.prototype.matches ||\n Element.prototype.webkitMatchesSelector ||\n Element.prototype.mozMatchesSelector ||\n Element.prototype.msMatchesSelector);\n\nexport function matches(element, query) {\n if (!elMatches) {\n throw new Error('No element matching method supported');\n }\n\n return elMatches.call(element, query);\n}\n\nexport function remove(element) {\n if (element.remove) {\n element.remove();\n } else {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n}\n\nexport function queryChildren(element, selector) {\n return Array.prototype.filter.call(element.children, child =>\n matches(child, selector)\n );\n}\n","const cls = {\n main: 'ps',\n rtl: 'ps__rtl',\n element: {\n thumb: x => `ps__thumb-${x}`,\n rail: x => `ps__rail-${x}`,\n consuming: 'ps__child--consume',\n },\n state: {\n focus: 'ps--focus',\n clicking: 'ps--clicking',\n active: x => `ps--active-${x}`,\n scrolling: x => `ps--scrolling-${x}`,\n },\n};\n\nexport default cls;\n\n/*\n * Helper methods\n */\nconst scrollingClassTimeout = { x: null, y: null };\n\nexport function addScrollingClass(i, x) {\n const classList = i.element.classList;\n const className = cls.state.scrolling(x);\n\n if (classList.contains(className)) {\n clearTimeout(scrollingClassTimeout[x]);\n } else {\n classList.add(className);\n }\n}\n\nexport function removeScrollingClass(i, x) {\n scrollingClassTimeout[x] = setTimeout(\n () => i.isAlive && i.element.classList.remove(cls.state.scrolling(x)),\n i.settings.scrollingThreshold\n );\n}\n\nexport function setScrollingClassInstantly(i, x) {\n addScrollingClass(i, x);\n removeScrollingClass(i, x);\n}\n","class EventElement {\n constructor(element) {\n this.element = element;\n this.handlers = {};\n }\n\n bind(eventName, handler) {\n if (typeof this.handlers[eventName] === 'undefined') {\n this.handlers[eventName] = [];\n }\n this.handlers[eventName].push(handler);\n this.element.addEventListener(eventName, handler, false);\n }\n\n unbind(eventName, target) {\n this.handlers[eventName] = this.handlers[eventName].filter(handler => {\n if (target && handler !== target) {\n return true;\n }\n this.element.removeEventListener(eventName, handler, false);\n return false;\n });\n }\n\n unbindAll() {\n for (const name in this.handlers) {\n this.unbind(name);\n }\n }\n\n get isEmpty() {\n return Object.keys(this.handlers).every(\n key => this.handlers[key].length === 0\n );\n }\n}\n\nexport default class EventManager {\n constructor() {\n this.eventElements = [];\n }\n\n eventElement(element) {\n let ee = this.eventElements.filter(ee => ee.element === element)[0];\n if (!ee) {\n ee = new EventElement(element);\n this.eventElements.push(ee);\n }\n return ee;\n }\n\n bind(element, eventName, handler) {\n this.eventElement(element).bind(eventName, handler);\n }\n\n unbind(element, eventName, handler) {\n const ee = this.eventElement(element);\n ee.unbind(eventName, handler);\n\n if (ee.isEmpty) {\n // remove\n this.eventElements.splice(this.eventElements.indexOf(ee), 1);\n }\n }\n\n unbindAll() {\n this.eventElements.forEach(e => e.unbindAll());\n this.eventElements = [];\n }\n\n once(element, eventName, handler) {\n const ee = this.eventElement(element);\n const onceHandler = evt => {\n ee.unbind(eventName, onceHandler);\n handler(evt);\n };\n ee.bind(eventName, onceHandler);\n }\n}\n","import { setScrollingClassInstantly } from './lib/class-names';\n\nfunction createEvent(name) {\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(name);\n }\n\n const evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(name, false, false, undefined);\n return evt;\n}\n\nexport default function (i, axis, diff, useScrollingClass = true, forceFireReachEvent = false) {\n let fields;\n if (axis === 'top') {\n fields = ['contentHeight', 'containerHeight', 'scrollTop', 'y', 'up', 'down'];\n } else if (axis === 'left') {\n fields = ['contentWidth', 'containerWidth', 'scrollLeft', 'x', 'left', 'right'];\n } else {\n throw new Error('A proper axis should be provided');\n }\n\n processScrollDiff(i, diff, fields, useScrollingClass, forceFireReachEvent);\n}\n\nfunction processScrollDiff(\n i,\n diff,\n [contentHeight, containerHeight, scrollTop, y, up, down],\n useScrollingClass = true,\n forceFireReachEvent = false\n) {\n const element = i.element;\n\n // reset reach\n i.reach[y] = null;\n\n // 1 for subpixel rounding\n if (element[scrollTop] < 1) {\n i.reach[y] = 'start';\n }\n\n // 1 for subpixel rounding\n if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) {\n i.reach[y] = 'end';\n }\n\n if (diff) {\n element.dispatchEvent(createEvent(`ps-scroll-${y}`));\n\n if (diff < 0) {\n element.dispatchEvent(createEvent(`ps-scroll-${up}`));\n } else if (diff > 0) {\n element.dispatchEvent(createEvent(`ps-scroll-${down}`));\n }\n\n if (useScrollingClass) {\n setScrollingClassInstantly(i, y);\n }\n }\n\n if (i.reach[y] && (diff || forceFireReachEvent)) {\n element.dispatchEvent(createEvent(`ps-${y}-reach-${i.reach[y]}`));\n }\n}\n","import * as CSS from './css';\nimport * as DOM from './dom';\n\nexport function toInt(x) {\n return parseInt(x, 10) || 0;\n}\n\nexport function isEditable(el) {\n return (\n 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}\n\nexport function outerWidth(element) {\n const styles = CSS.get(element);\n return (\n toInt(styles.width) +\n toInt(styles.paddingLeft) +\n toInt(styles.paddingRight) +\n toInt(styles.borderLeftWidth) +\n toInt(styles.borderRightWidth)\n );\n}\n\nexport const env = {\n isWebKit:\n typeof document !== 'undefined' &&\n 'WebkitAppearance' in document.documentElement.style,\n supportsTouch:\n typeof window !== 'undefined' &&\n ('ontouchstart' in window ||\n ('maxTouchPoints' in window.navigator &&\n window.navigator.maxTouchPoints > 0) ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)),\n supportsIePointer:\n typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,\n isChrome:\n typeof navigator !== 'undefined' &&\n /Chrome/i.test(navigator && navigator.userAgent),\n};\n","import * as CSS from './lib/css';\nimport * as DOM from './lib/dom';\nimport cls from './lib/class-names';\nimport { toInt } from './lib/util';\n\n/* eslint-disable no-lonely-if */\n\nexport default function (i) {\n const element = i.element;\n const roundedScrollTop = Math.floor(element.scrollTop);\n const rect = element.getBoundingClientRect();\n\n i.containerWidth = Math.floor(rect.width);\n i.containerHeight = Math.floor(rect.height);\n\n i.contentWidth = element.scrollWidth;\n i.contentHeight = element.scrollHeight;\n\n if (!element.contains(i.scrollbarXRail)) {\n // clean up and append\n DOM.queryChildren(element, cls.element.rail('x')).forEach((el) => DOM.remove(el));\n element.appendChild(i.scrollbarXRail);\n }\n if (!element.contains(i.scrollbarYRail)) {\n // clean up and append\n DOM.queryChildren(element, cls.element.rail('y')).forEach((el) => DOM.remove(el));\n element.appendChild(i.scrollbarYRail);\n }\n\n if (\n !i.settings.suppressScrollX &&\n i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth\n ) {\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(\n ((i.negativeScrollAdjustment + element.scrollLeft) * (i.railXWidth - i.scrollbarXWidth)) /\n (i.contentWidth - i.containerWidth)\n );\n } else {\n i.scrollbarXActive = false;\n }\n\n if (\n !i.settings.suppressScrollY &&\n i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight\n ) {\n i.scrollbarYActive = true;\n i.railYHeight = i.containerHeight - i.railYMarginHeight;\n i.railYRatio = i.containerHeight / i.railYHeight;\n i.scrollbarYHeight = getThumbSize(\n i,\n toInt((i.railYHeight * i.containerHeight) / i.contentHeight)\n );\n i.scrollbarYTop = toInt(\n (roundedScrollTop * (i.railYHeight - i.scrollbarYHeight)) /\n (i.contentHeight - i.containerHeight)\n );\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 element.classList.add(cls.state.active('x'));\n } else {\n element.classList.remove(cls.state.active('x'));\n i.scrollbarXWidth = 0;\n i.scrollbarXLeft = 0;\n element.scrollLeft = i.isRtl === true ? i.contentWidth : 0;\n }\n if (i.scrollbarYActive) {\n element.classList.add(cls.state.active('y'));\n } else {\n element.classList.remove(cls.state.active('y'));\n i.scrollbarYHeight = 0;\n i.scrollbarYTop = 0;\n element.scrollTop = 0;\n }\n}\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 const xRailOffset = { width: i.railXWidth };\n const roundedScrollTop = Math.floor(element.scrollTop);\n\n if (i.isRtl) {\n xRailOffset.left =\n 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 - roundedScrollTop;\n } else {\n xRailOffset.top = i.scrollbarXTop + roundedScrollTop;\n }\n CSS.set(i.scrollbarXRail, xRailOffset);\n\n const yRailOffset = { top: roundedScrollTop, height: i.railYHeight };\n if (i.isScrollbarYUsingRight) {\n if (i.isRtl) {\n yRailOffset.right =\n i.contentWidth -\n (i.negativeScrollAdjustment + element.scrollLeft) -\n i.scrollbarYRight -\n i.scrollbarYOuterWidth -\n 9;\n } else {\n yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\n }\n } else {\n if (i.isRtl) {\n yRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth * 2 -\n i.contentWidth -\n i.scrollbarYLeft -\n i.scrollbarYOuterWidth;\n } else {\n yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\n }\n }\n CSS.set(i.scrollbarYRail, yRailOffset);\n\n CSS.set(i.scrollbarX, {\n left: i.scrollbarXLeft,\n width: i.scrollbarXWidth - i.railBorderXWidth,\n });\n CSS.set(i.scrollbarY, {\n top: i.scrollbarYTop,\n height: i.scrollbarYHeight - i.railBorderYWidth,\n });\n}\n","/* eslint-disable */\n\nimport updateGeometry from '../update-geometry';\n\nexport default function (i) {\n // const element = i.element;\n\n i.event.bind(i.scrollbarY, 'mousedown', (e) => e.stopPropagation());\n i.event.bind(i.scrollbarYRail, 'mousedown', (e) => {\n const positionTop = e.pageY - window.pageYOffset - i.scrollbarYRail.getBoundingClientRect().top;\n const direction = positionTop > i.scrollbarYTop ? 1 : -1;\n\n i.element.scrollTop += direction * i.containerHeight;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n\n i.event.bind(i.scrollbarX, 'mousedown', (e) => e.stopPropagation());\n i.event.bind(i.scrollbarXRail, 'mousedown', (e) => {\n const positionLeft =\n e.pageX - window.pageXOffset - i.scrollbarXRail.getBoundingClientRect().left;\n const direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n i.element.scrollLeft += direction * i.containerWidth;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n}\n","import cls, { addScrollingClass, removeScrollingClass } from '../lib/class-names';\nimport updateGeometry from '../update-geometry';\n\nlet activeSlider = null; // Variable to track the currently active slider\n\nexport default function setupScrollHandlers(i) {\n bindMouseScrollHandler(i, [\n 'containerHeight',\n 'contentHeight',\n 'pageY',\n 'railYHeight',\n 'scrollbarY',\n 'scrollbarYHeight',\n 'scrollTop',\n 'y',\n 'scrollbarYRail',\n ]);\n\n bindMouseScrollHandler(i, [\n 'containerWidth',\n 'contentWidth',\n 'pageX',\n 'railXWidth',\n 'scrollbarX',\n 'scrollbarXWidth',\n 'scrollLeft',\n 'x',\n 'scrollbarXRail',\n ]);\n}\n\nfunction bindMouseScrollHandler(\n i,\n [\n containerDimension,\n contentDimension,\n pageAxis,\n railDimension,\n scrollbarAxis,\n scrollbarDimension,\n scrollAxis,\n axis,\n scrollbarRail,\n ]\n) {\n const element = i.element;\n let startingScrollPosition = null;\n let startingMousePagePosition = null;\n let scrollBy = null;\n\n function moveHandler(e) {\n if (e.touches && e.touches[0]) {\n e[pageAxis] = e.touches[0][`page${axis.toUpperCase()}`];\n }\n\n // Only move if the active slider is the one we started with\n if (activeSlider === scrollbarAxis) {\n element[scrollAxis] =\n startingScrollPosition + scrollBy * (e[pageAxis] - startingMousePagePosition);\n addScrollingClass(i, axis);\n updateGeometry(i);\n\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n function endHandler() {\n removeScrollingClass(i, axis);\n i[scrollbarRail].classList.remove(cls.state.clicking);\n document.removeEventListener('mousemove', moveHandler);\n document.removeEventListener('mouseup', endHandler);\n document.removeEventListener('touchmove', moveHandler);\n document.removeEventListener('touchend', endHandler);\n activeSlider = null; // Reset active slider when interaction ends\n }\n\n function bindMoves(e) {\n if (activeSlider === null) {\n // Only bind if no slider is currently active\n activeSlider = scrollbarAxis; // Set current slider as active\n\n startingScrollPosition = element[scrollAxis];\n if (e.touches) {\n e[pageAxis] = e.touches[0][`page${axis.toUpperCase()}`];\n }\n startingMousePagePosition = e[pageAxis];\n scrollBy =\n (i[contentDimension] - i[containerDimension]) / (i[railDimension] - i[scrollbarDimension]);\n\n if (!e.touches) {\n document.addEventListener('mousemove', moveHandler);\n document.addEventListener('mouseup', endHandler);\n } else {\n document.addEventListener('touchmove', moveHandler, { passive: false });\n document.addEventListener('touchend', endHandler);\n }\n\n i[scrollbarRail].classList.add(cls.state.clicking);\n }\n\n e.stopPropagation();\n if (e.cancelable) {\n e.preventDefault();\n }\n }\n\n i[scrollbarAxis].addEventListener('mousedown', bindMoves);\n i[scrollbarAxis].addEventListener('touchstart', bindMoves);\n}\n","/* eslint-disable */\n\nimport * as DOM from '../lib/dom';\nimport updateGeometry from '../update-geometry';\nimport { isEditable } from '../lib/util';\n\nexport default function (i) {\n const element = i.element;\n\n const elementHovered = () => DOM.matches(element, ':hover');\n const scrollbarFocused = () =>\n DOM.matches(i.scrollbarX, ':focus') || DOM.matches(i.scrollbarY, ':focus');\n\n function shouldPreventDefault(deltaX, deltaY) {\n const scrollTop = Math.floor(element.scrollTop);\n if (deltaX === 0) {\n if (!i.scrollbarYActive) {\n return false;\n }\n if (\n (scrollTop === 0 && deltaY > 0) ||\n (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n\n const scrollLeft = element.scrollLeft;\n if (deltaY === 0) {\n if (!i.scrollbarXActive) {\n return false;\n }\n if (\n (scrollLeft === 0 && deltaX < 0) ||\n (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n return true;\n }\n\n i.event.bind(i.ownerDocument, 'keydown', (e) => {\n if ((e.isDefaultPrevented && e.isDefaultPrevented()) || e.defaultPrevented) {\n return;\n }\n\n if (!elementHovered() && !scrollbarFocused()) {\n return;\n }\n\n let activeElement = document.activeElement\n ? document.activeElement\n : 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 let deltaX = 0;\n let 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 32: // space bar\n if (e.shiftKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = -i.containerHeight;\n }\n break;\n case 33: // page up\n deltaY = i.containerHeight;\n break;\n case 34: // page down\n deltaY = -i.containerHeight;\n break;\n case 36: // home\n deltaY = i.contentHeight;\n break;\n case 35: // end\n deltaY = -i.contentHeight;\n break;\n default:\n return;\n }\n\n if (i.settings.suppressScrollX && deltaX !== 0) {\n return;\n }\n if (i.settings.suppressScrollY && deltaY !== 0) {\n return;\n }\n\n element.scrollTop -= deltaY;\n element.scrollLeft += deltaX;\n updateGeometry(i);\n\n if (shouldPreventDefault(deltaX, deltaY)) {\n e.preventDefault();\n }\n });\n}\n","/* eslint-disable */\n\nimport * as CSS from '../lib/css';\nimport cls from '../lib/class-names';\nimport updateGeometry from '../update-geometry';\nimport { env } from '../lib/util';\n\nexport default function (i) {\n const element = i.element;\n\n let shouldPrevent = false;\n\n function shouldPreventDefault(deltaX, deltaY) {\n const roundedScrollTop = Math.floor(element.scrollTop);\n const isTop = element.scrollTop === 0;\n const isBottom = roundedScrollTop + element.offsetHeight === element.scrollHeight;\n const isLeft = element.scrollLeft === 0;\n const isRight = element.scrollLeft + element.offsetWidth === element.scrollWidth;\n\n let hitsBound;\n\n // pick axis with primary direction\n if (Math.abs(deltaY) > Math.abs(deltaX)) {\n hitsBound = isTop || isBottom;\n } else {\n hitsBound = isLeft || isRight;\n }\n\n return hitsBound ? !i.settings.wheelPropagation : true;\n }\n\n function getDeltaFromEvent(e) {\n let deltaX = e.deltaX;\n let 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(target, deltaX, deltaY) {\n // FIXME: this is a workaround for issue in FF and IE #571\n if (!env.isWebKit && element.querySelector('select:focus')) {\n return true;\n }\n\n if (!element.contains(target)) {\n return false;\n }\n\n let cursor = target;\n\n while (cursor && cursor !== element) {\n if (cursor.classList.contains(cls.element.consuming)) {\n return true;\n }\n\n const style = CSS.get(cursor);\n\n // if deltaY && vertical scrollable\n if (deltaY && style.overflowY.match(/(scroll|auto)/)) {\n const maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n if (maxScrollTop > 0) {\n if (\n (cursor.scrollTop > 0 && deltaY < 0) ||\n (cursor.scrollTop < maxScrollTop && deltaY > 0)\n ) {\n return true;\n }\n }\n }\n // if deltaX && horizontal scrollable\n if (deltaX && style.overflowX.match(/(scroll|auto)/)) {\n const maxScrollLeft = cursor.scrollWidth - cursor.clientWidth;\n if (maxScrollLeft > 0) {\n if (\n (cursor.scrollLeft > 0 && deltaX < 0) ||\n (cursor.scrollLeft < maxScrollLeft && deltaX > 0)\n ) {\n return true;\n }\n }\n }\n\n cursor = cursor.parentNode;\n }\n\n return false;\n }\n\n function mousewheelHandler(e) {\n const [deltaX, deltaY] = getDeltaFromEvent(e);\n\n if (shouldBeConsumedByChild(e.target, deltaX, deltaY)) {\n return;\n }\n\n let 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 element.scrollTop -= deltaY * i.settings.wheelSpeed;\n 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 element.scrollTop -= deltaY * i.settings.wheelSpeed;\n } else {\n 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 element.scrollLeft += deltaX * i.settings.wheelSpeed;\n } else {\n element.scrollLeft -= deltaY * i.settings.wheelSpeed;\n }\n shouldPrevent = true;\n }\n\n updateGeometry(i);\n\n shouldPrevent = shouldPrevent || shouldPreventDefault(deltaX, deltaY);\n if (shouldPrevent && !e.ctrlKey) {\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","import updateGeometry from '../update-geometry';\nimport cls from '../lib/class-names';\nimport * as CSS from '../lib/css';\nimport { env } from '../lib/util';\n\nexport default function(i) {\n if (!env.supportsTouch && !env.supportsIePointer) {\n return;\n }\n\n const element = i.element;\n\n const state = {\n startOffset: {},\n startTime: 0,\n speed: {},\n easingLoop: null,\n };\n\n function shouldPrevent(deltaX, deltaY) {\n const scrollTop = Math.floor(element.scrollTop);\n const scrollLeft = element.scrollLeft;\n const magnitudeX = Math.abs(deltaX);\n const magnitudeY = Math.abs(deltaY);\n\n if (magnitudeY > magnitudeX) {\n // user is perhaps trying to swipe up/down the page\n\n if (\n (deltaY < 0 && scrollTop === i.contentHeight - i.containerHeight) ||\n (deltaY > 0 && scrollTop === 0)\n ) {\n // set prevent for mobile Chrome refresh\n return window.scrollY === 0 && deltaY > 0 && env.isChrome;\n }\n } else if (magnitudeX > magnitudeY) {\n // user is perhaps trying to swipe left/right across the page\n\n if (\n (deltaX < 0 && scrollLeft === i.contentWidth - i.containerWidth) ||\n (deltaX > 0 && scrollLeft === 0)\n ) {\n return true;\n }\n }\n\n return true;\n }\n\n function applyTouchMove(differenceX, differenceY) {\n element.scrollTop -= differenceY;\n element.scrollLeft -= differenceX;\n\n updateGeometry(i);\n }\n\n function getTouch(e) {\n if (e.targetTouches) {\n return e.targetTouches[0];\n }\n // Maybe IE pointer\n return e;\n }\n\n function shouldHandle(e) {\n if (e.target === i.scrollbarX || e.target === i.scrollbarY) {\n return false;\n }\n if (e.pointerType && e.pointerType === 'pen' && e.buttons === 0) {\n return false;\n }\n if (e.targetTouches && e.targetTouches.length === 1) {\n return true;\n }\n if (\n e.pointerType &&\n e.pointerType !== 'mouse' &&\n e.pointerType !== e.MSPOINTER_TYPE_MOUSE\n ) {\n return true;\n }\n return false;\n }\n\n function touchStart(e) {\n if (!shouldHandle(e)) {\n return;\n }\n\n const touch = getTouch(e);\n\n state.startOffset.pageX = touch.pageX;\n state.startOffset.pageY = touch.pageY;\n\n state.startTime = new Date().getTime();\n\n if (state.easingLoop !== null) {\n clearInterval(state.easingLoop);\n }\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n if (!element.contains(target)) {\n return false;\n }\n\n let cursor = target;\n\n while (cursor && cursor !== element) {\n if (cursor.classList.contains(cls.element.consuming)) {\n return true;\n }\n\n const style = CSS.get(cursor);\n\n // if deltaY && vertical scrollable\n if (deltaY && style.overflowY.match(/(scroll|auto)/)) {\n const maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n if (maxScrollTop > 0) {\n if (\n (cursor.scrollTop > 0 && deltaY < 0) ||\n (cursor.scrollTop < maxScrollTop && deltaY > 0)\n ) {\n return true;\n }\n }\n }\n // if deltaX && horizontal scrollable\n if (deltaX && style.overflowX.match(/(scroll|auto)/)) {\n const maxScrollLeft = cursor.scrollWidth - cursor.clientWidth;\n if (maxScrollLeft > 0) {\n if (\n (cursor.scrollLeft > 0 && deltaX < 0) ||\n (cursor.scrollLeft < maxScrollLeft && deltaX > 0)\n ) {\n return true;\n }\n }\n }\n\n cursor = cursor.parentNode;\n }\n\n return false;\n }\n\n function touchMove(e) {\n if (shouldHandle(e)) {\n const touch = getTouch(e);\n\n const currentOffset = { pageX: touch.pageX, pageY: touch.pageY };\n\n const differenceX = currentOffset.pageX - state.startOffset.pageX;\n const differenceY = currentOffset.pageY - state.startOffset.pageY;\n\n if (shouldBeConsumedByChild(e.target, differenceX, differenceY)) {\n return;\n }\n\n applyTouchMove(differenceX, differenceY);\n state.startOffset = currentOffset;\n\n const currentTime = new Date().getTime();\n\n const timeGap = currentTime - state.startTime;\n if (timeGap > 0) {\n state.speed.x = differenceX / timeGap;\n state.speed.y = differenceY / timeGap;\n state.startTime = currentTime;\n }\n\n if (shouldPrevent(differenceX, differenceY)) {\n // Prevent the default behavior if the event is cancelable\n if (e.cancelable) {\n e.preventDefault();\n }\n }\n }\n }\n\n function touchEnd() {\n if (i.settings.swipeEasing) {\n clearInterval(state.easingLoop);\n state.easingLoop = setInterval(() => {\n if (i.isInitialized) {\n clearInterval(state.easingLoop);\n return;\n }\n\n if (!state.speed.x && !state.speed.y) {\n clearInterval(state.easingLoop);\n return;\n }\n\n if (Math.abs(state.speed.x) < 0.01 && Math.abs(state.speed.y) < 0.01) {\n clearInterval(state.easingLoop);\n return;\n }\n\n applyTouchMove(state.speed.x * 30, state.speed.y * 30);\n\n state.speed.x *= 0.8;\n state.speed.y *= 0.8;\n }, 10);\n }\n }\n\n if (env.supportsTouch) {\n i.event.bind(element, 'touchstart', touchStart);\n i.event.bind(element, 'touchmove', touchMove);\n i.event.bind(element, 'touchend', touchEnd);\n } else if (env.supportsIePointer) {\n if (window.PointerEvent) {\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(element, 'MSPointerDown', touchStart);\n i.event.bind(element, 'MSPointerMove', touchMove);\n i.event.bind(element, 'MSPointerUp', touchEnd);\n }\n }\n}\n","/* eslint-disable */\n\nimport * as CSS from './lib/css';\nimport * as DOM from './lib/dom';\nimport cls from './lib/class-names';\nimport EventManager from './lib/event-manager';\nimport processScrollDiff from './process-scroll-diff';\nimport updateGeometry from './update-geometry';\nimport { toInt, outerWidth } from './lib/util';\n\nimport clickRail from './handlers/click-rail';\nimport dragThumb from './handlers/drag-thumb';\nimport keyboard from './handlers/keyboard';\nimport wheel from './handlers/mouse-wheel';\nimport touch from './handlers/touch';\n\nconst defaultSettings = () => ({\n handlers: ['click-rail', 'drag-thumb', 'keyboard', 'wheel', 'touch'],\n maxScrollbarLength: null,\n minScrollbarLength: null,\n scrollingThreshold: 1000,\n scrollXMarginOffset: 0,\n scrollYMarginOffset: 0,\n suppressScrollX: false,\n suppressScrollY: false,\n swipeEasing: true,\n useBothWheelAxes: false,\n wheelPropagation: true,\n wheelSpeed: 1,\n});\n\nconst handlers = {\n 'click-rail': clickRail,\n 'drag-thumb': dragThumb,\n keyboard,\n wheel,\n touch,\n};\n\nexport default class PerfectScrollbar {\n constructor(element, userSettings = {}) {\n if (typeof element === 'string') {\n element = document.querySelector(element);\n }\n\n if (!element || !element.nodeName) {\n throw new Error('no element is specified to initialize PerfectScrollbar');\n }\n\n this.element = element;\n\n element.classList.add(cls.main);\n\n this.settings = defaultSettings();\n for (const key in userSettings) {\n this.settings[key] = userSettings[key];\n }\n\n this.containerWidth = null;\n this.containerHeight = null;\n this.contentWidth = null;\n this.contentHeight = null;\n\n const focus = () => element.classList.add(cls.state.focus);\n const blur = () => element.classList.remove(cls.state.focus);\n\n this.isRtl = CSS.get(element).direction === 'rtl';\n if (this.isRtl === true) {\n element.classList.add(cls.rtl);\n }\n this.isNegativeScroll = (() => {\n const originalScrollLeft = element.scrollLeft;\n let result = null;\n element.scrollLeft = -1;\n result = element.scrollLeft < 0;\n element.scrollLeft = originalScrollLeft;\n return result;\n })();\n this.negativeScrollAdjustment = this.isNegativeScroll\n ? element.scrollWidth - element.clientWidth\n : 0;\n this.event = new EventManager();\n this.ownerDocument = element.ownerDocument || document;\n\n this.scrollbarXRail = DOM.div(cls.element.rail('x'));\n element.appendChild(this.scrollbarXRail);\n this.scrollbarX = DOM.div(cls.element.thumb('x'));\n this.scrollbarXRail.appendChild(this.scrollbarX);\n this.scrollbarX.setAttribute('tabindex', 0);\n this.event.bind(this.scrollbarX, 'focus', focus);\n this.event.bind(this.scrollbarX, 'blur', blur);\n this.scrollbarXActive = null;\n this.scrollbarXWidth = null;\n this.scrollbarXLeft = null;\n const railXStyle = CSS.get(this.scrollbarXRail);\n this.scrollbarXBottom = parseInt(railXStyle.bottom, 10);\n if (isNaN(this.scrollbarXBottom)) {\n this.isScrollbarXUsingBottom = false;\n this.scrollbarXTop = toInt(railXStyle.top);\n } else {\n this.isScrollbarXUsingBottom = true;\n }\n this.railBorderXWidth =\n toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth);\n // Set rail to display:block to calculate margins\n CSS.set(this.scrollbarXRail, { display: 'block' });\n this.railXMarginWidth =\n toInt(railXStyle.marginLeft) + toInt(railXStyle.marginRight);\n CSS.set(this.scrollbarXRail, { display: '' });\n this.railXWidth = null;\n this.railXRatio = null;\n\n this.scrollbarYRail = DOM.div(cls.element.rail('y'));\n element.appendChild(this.scrollbarYRail);\n this.scrollbarY = DOM.div(cls.element.thumb('y'));\n this.scrollbarYRail.appendChild(this.scrollbarY);\n this.scrollbarY.setAttribute('tabindex', 0);\n this.event.bind(this.scrollbarY, 'focus', focus);\n this.event.bind(this.scrollbarY, 'blur', blur);\n this.scrollbarYActive = null;\n this.scrollbarYHeight = null;\n this.scrollbarYTop = null;\n const railYStyle = CSS.get(this.scrollbarYRail);\n this.scrollbarYRight = parseInt(railYStyle.right, 10);\n if (isNaN(this.scrollbarYRight)) {\n this.isScrollbarYUsingRight = false;\n this.scrollbarYLeft = toInt(railYStyle.left);\n } else {\n this.isScrollbarYUsingRight = true;\n }\n this.scrollbarYOuterWidth = this.isRtl ? outerWidth(this.scrollbarY) : null;\n this.railBorderYWidth =\n toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth);\n CSS.set(this.scrollbarYRail, { display: 'block' });\n this.railYMarginHeight =\n toInt(railYStyle.marginTop) + toInt(railYStyle.marginBottom);\n CSS.set(this.scrollbarYRail, { display: '' });\n this.railYHeight = null;\n this.railYRatio = null;\n\n this.reach = {\n x:\n element.scrollLeft <= 0\n ? 'start'\n : element.scrollLeft >= this.contentWidth - this.containerWidth\n ? 'end'\n : null,\n y:\n element.scrollTop <= 0\n ? 'start'\n : element.scrollTop >= this.contentHeight - this.containerHeight\n ? 'end'\n : null,\n };\n\n this.isAlive = true;\n\n this.settings.handlers.forEach(handlerName => handlers[handlerName](this));\n\n this.lastScrollTop = Math.floor(element.scrollTop); // for onScroll only\n this.lastScrollLeft = element.scrollLeft; // for onScroll only\n this.event.bind(this.element, 'scroll', e => this.onScroll(e));\n updateGeometry(this);\n }\n\n update() {\n if (!this.isAlive) {\n return;\n }\n\n // Recalcuate negative scrollLeft adjustment\n this.negativeScrollAdjustment = this.isNegativeScroll\n ? this.element.scrollWidth - this.element.clientWidth\n : 0;\n\n // Recalculate rail margins\n CSS.set(this.scrollbarXRail, { display: 'block' });\n CSS.set(this.scrollbarYRail, { display: 'block' });\n this.railXMarginWidth =\n toInt(CSS.get(this.scrollbarXRail).marginLeft) +\n toInt(CSS.get(this.scrollbarXRail).marginRight);\n this.railYMarginHeight =\n toInt(CSS.get(this.scrollbarYRail).marginTop) +\n toInt(CSS.get(this.scrollbarYRail).marginBottom);\n\n // Hide scrollbars not to affect scrollWidth and scrollHeight\n CSS.set(this.scrollbarXRail, { display: 'none' });\n CSS.set(this.scrollbarYRail, { display: 'none' });\n\n updateGeometry(this);\n\n processScrollDiff(this, 'top', 0, false, true);\n processScrollDiff(this, 'left', 0, false, true);\n\n CSS.set(this.scrollbarXRail, { display: '' });\n CSS.set(this.scrollbarYRail, { display: '' });\n }\n\n onScroll(e) {\n if (!this.isAlive) {\n return;\n }\n\n updateGeometry(this);\n processScrollDiff(this, 'top', this.element.scrollTop - this.lastScrollTop);\n processScrollDiff(\n this,\n 'left',\n this.element.scrollLeft - this.lastScrollLeft\n );\n\n this.lastScrollTop = Math.floor(this.element.scrollTop);\n this.lastScrollLeft = this.element.scrollLeft;\n }\n\n destroy() {\n if (!this.isAlive) {\n return;\n }\n\n this.event.unbindAll();\n DOM.remove(this.scrollbarX);\n DOM.remove(this.scrollbarY);\n DOM.remove(this.scrollbarXRail);\n DOM.remove(this.scrollbarYRail);\n this.removePsClasses();\n\n // unset elements\n this.element = null;\n this.scrollbarX = null;\n this.scrollbarY = null;\n this.scrollbarXRail = null;\n this.scrollbarYRail = null;\n\n this.isAlive = false;\n }\n\n removePsClasses() {\n this.element.className = this.element.className\n .split(' ')\n .filter(name => !name.match(/^ps([-_].+|)$/))\n .join(' ');\n }\n}\n"],"names":["const","let","this","processScrollDiff","DOM.matches","CSS.get","DOM.queryChildren","DOM.remove","CSS.set","dragThumb","DOM.div"],"mappings":"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"} \ No newline at end of file diff --git a/dist/perfect-scrollbar.min.js.map b/dist/perfect-scrollbar.min.js.map index 64b3cd1..0afa904 100644 --- a/dist/perfect-scrollbar.min.js.map +++ b/dist/perfect-scrollbar.min.js.map @@ -1 +1 @@ -{"version":3,"file":"perfect-scrollbar.min.js","sources":["../src/handlers/mouse-wheel.js","../src/update-geometry.js","../src/lib/css.js","../src/lib/dom.js","../src/lib/class-names.js","../src/process-scroll-diff.js","../src/lib/util.js","../src/handlers/click-rail.js","../src/handlers/drag-thumb.js","../src/handlers/keyboard.js","../src/lib/event-manager.js","../src/index.js","../src/handlers/touch.js"],"sourcesContent":["/* eslint-disable */\n\nimport * as CSS from '../lib/css';\nimport cls from '../lib/class-names';\nimport updateGeometry from '../update-geometry';\nimport { env } from '../lib/util';\n\nexport default function (i) {\n const element = i.element;\n\n let shouldPrevent = false;\n\n function shouldPreventDefault(deltaX, deltaY) {\n const roundedScrollTop = Math.floor(element.scrollTop);\n const isTop = element.scrollTop === 0;\n const isBottom = roundedScrollTop + element.offsetHeight === element.scrollHeight;\n const isLeft = element.scrollLeft === 0;\n const isRight = element.scrollLeft + element.offsetWidth === element.scrollWidth;\n\n let hitsBound;\n\n // pick axis with primary direction\n if (Math.abs(deltaY) > Math.abs(deltaX)) {\n hitsBound = isTop || isBottom;\n } else {\n hitsBound = isLeft || isRight;\n }\n\n return hitsBound ? !i.settings.wheelPropagation : true;\n }\n\n function getDeltaFromEvent(e) {\n let deltaX = e.deltaX;\n let 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(target, deltaX, deltaY) {\n // FIXME: this is a workaround for issue in FF and IE #571\n if (!env.isWebKit && element.querySelector('select:focus')) {\n return true;\n }\n\n if (!element.contains(target)) {\n return false;\n }\n\n let cursor = target;\n\n while (cursor && cursor !== element) {\n if (cursor.classList.contains(cls.element.consuming)) {\n return true;\n }\n\n const style = CSS.get(cursor);\n\n // if deltaY && vertical scrollable\n if (deltaY && style.overflowY.match(/(scroll|auto)/)) {\n const maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n if (maxScrollTop > 0) {\n if (\n (cursor.scrollTop > 0 && deltaY < 0) ||\n (cursor.scrollTop < maxScrollTop && deltaY > 0)\n ) {\n return true;\n }\n }\n }\n // if deltaX && horizontal scrollable\n if (deltaX && style.overflowX.match(/(scroll|auto)/)) {\n const maxScrollLeft = cursor.scrollWidth - cursor.clientWidth;\n if (maxScrollLeft > 0) {\n if (\n (cursor.scrollLeft > 0 && deltaX < 0) ||\n (cursor.scrollLeft < maxScrollLeft && deltaX > 0)\n ) {\n return true;\n }\n }\n }\n\n cursor = cursor.parentNode;\n }\n\n return false;\n }\n\n function mousewheelHandler(e) {\n const [deltaX, deltaY] = getDeltaFromEvent(e);\n\n if (shouldBeConsumedByChild(e.target, deltaX, deltaY)) {\n return;\n }\n\n let 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 element.scrollTop -= deltaY * i.settings.wheelSpeed;\n 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 element.scrollTop -= deltaY * i.settings.wheelSpeed;\n } else {\n 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 element.scrollLeft += deltaX * i.settings.wheelSpeed;\n } else {\n element.scrollLeft -= deltaY * i.settings.wheelSpeed;\n }\n shouldPrevent = true;\n }\n\n updateGeometry(i);\n\n shouldPrevent = shouldPrevent || shouldPreventDefault(deltaX, deltaY);\n if (shouldPrevent && !e.ctrlKey) {\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","import * as CSS from './lib/css';\nimport * as DOM from './lib/dom';\nimport cls from './lib/class-names';\nimport { toInt } from './lib/util';\n\n/* eslint-disable no-lonely-if */\n\nexport default function(i) {\n const element = i.element;\n const roundedScrollTop = Math.floor(element.scrollTop);\n const rect = element.getBoundingClientRect();\n\n i.containerWidth = Math.floor(rect.width);\n i.containerHeight = Math.floor(rect.height);\n\n i.contentWidth = element.scrollWidth;\n i.contentHeight = element.scrollHeight;\n\n if (!element.contains(i.scrollbarXRail)) {\n // clean up and append\n DOM.queryChildren(element, cls.element.rail('x')).forEach(el =>\n DOM.remove(el)\n );\n element.appendChild(i.scrollbarXRail);\n }\n if (!element.contains(i.scrollbarYRail)) {\n // clean up and append\n DOM.queryChildren(element, cls.element.rail('y')).forEach(el =>\n DOM.remove(el)\n );\n element.appendChild(i.scrollbarYRail);\n }\n\n if (\n !i.settings.suppressScrollX &&\n i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth\n ) {\n i.scrollbarXActive = true;\n i.railXWidth = i.containerWidth - i.railXMarginWidth;\n i.railXRatio = i.containerWidth / i.railXWidth;\n i.scrollbarXWidth = getThumbSize(\n i,\n toInt((i.railXWidth * i.containerWidth) / i.contentWidth)\n );\n i.scrollbarXLeft = toInt(\n ((i.negativeScrollAdjustment + element.scrollLeft) *\n (i.railXWidth - i.scrollbarXWidth)) /\n (i.contentWidth - i.containerWidth)\n );\n } else {\n i.scrollbarXActive = false;\n }\n\n if (\n !i.settings.suppressScrollY &&\n i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight\n ) {\n i.scrollbarYActive = true;\n i.railYHeight = i.containerHeight - i.railYMarginHeight;\n i.railYRatio = i.containerHeight / i.railYHeight;\n i.scrollbarYHeight = getThumbSize(\n i,\n toInt((i.railYHeight * i.containerHeight) / i.contentHeight)\n );\n i.scrollbarYTop = toInt(\n (roundedScrollTop * (i.railYHeight - i.scrollbarYHeight)) /\n (i.contentHeight - i.containerHeight)\n );\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 element.classList.add(cls.state.active('x'));\n } else {\n element.classList.remove(cls.state.active('x'));\n i.scrollbarXWidth = 0;\n i.scrollbarXLeft = 0;\n element.scrollLeft = i.isRtl === true ? i.contentWidth : 0;\n }\n if (i.scrollbarYActive) {\n element.classList.add(cls.state.active('y'));\n } else {\n element.classList.remove(cls.state.active('y'));\n i.scrollbarYHeight = 0;\n i.scrollbarYTop = 0;\n element.scrollTop = 0;\n }\n}\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 const xRailOffset = { width: i.railXWidth };\n const roundedScrollTop = Math.floor(element.scrollTop);\n\n if (i.isRtl) {\n xRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth -\n i.contentWidth;\n } else {\n xRailOffset.left = element.scrollLeft;\n }\n if (i.isScrollbarXUsingBottom) {\n xRailOffset.bottom = i.scrollbarXBottom - roundedScrollTop;\n } else {\n xRailOffset.top = i.scrollbarXTop + roundedScrollTop;\n }\n CSS.set(i.scrollbarXRail, xRailOffset);\n\n const yRailOffset = { top: roundedScrollTop, height: i.railYHeight };\n if (i.isScrollbarYUsingRight) {\n if (i.isRtl) {\n yRailOffset.right =\n i.contentWidth -\n (i.negativeScrollAdjustment + element.scrollLeft) -\n i.scrollbarYRight -\n i.scrollbarYOuterWidth -\n 9;\n } else {\n yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\n }\n } else {\n if (i.isRtl) {\n yRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth * 2 -\n i.contentWidth -\n i.scrollbarYLeft -\n i.scrollbarYOuterWidth;\n } else {\n yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\n }\n }\n CSS.set(i.scrollbarYRail, yRailOffset);\n\n CSS.set(i.scrollbarX, {\n left: i.scrollbarXLeft,\n width: i.scrollbarXWidth - i.railBorderXWidth,\n });\n CSS.set(i.scrollbarY, {\n top: i.scrollbarYTop,\n height: i.scrollbarYHeight - i.railBorderYWidth,\n });\n}\n","export function get(element) {\n return getComputedStyle(element);\n}\n\nexport function set(element, obj) {\n for (const key in obj) {\n let val = obj[key];\n if (typeof val === 'number') {\n val = `${val}px`;\n }\n element.style[key] = val;\n }\n return element;\n}\n","export function div(className) {\n const div = document.createElement('div');\n div.className = className;\n return div;\n}\n\nconst elMatches =\n typeof Element !== 'undefined' &&\n (Element.prototype.matches ||\n Element.prototype.webkitMatchesSelector ||\n Element.prototype.mozMatchesSelector ||\n Element.prototype.msMatchesSelector);\n\nexport function matches(element, query) {\n if (!elMatches) {\n throw new Error('No element matching method supported');\n }\n\n return elMatches.call(element, query);\n}\n\nexport function remove(element) {\n if (element.remove) {\n element.remove();\n } else {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n}\n\nexport function queryChildren(element, selector) {\n return Array.prototype.filter.call(element.children, child =>\n matches(child, selector)\n );\n}\n","const cls = {\n main: 'ps',\n rtl: 'ps__rtl',\n element: {\n thumb: x => `ps__thumb-${x}`,\n rail: x => `ps__rail-${x}`,\n consuming: 'ps__child--consume',\n },\n state: {\n focus: 'ps--focus',\n clicking: 'ps--clicking',\n active: x => `ps--active-${x}`,\n scrolling: x => `ps--scrolling-${x}`,\n },\n};\n\nexport default cls;\n\n/*\n * Helper methods\n */\nconst scrollingClassTimeout = { x: null, y: null };\n\nexport function addScrollingClass(i, x) {\n const classList = i.element.classList;\n const className = cls.state.scrolling(x);\n\n if (classList.contains(className)) {\n clearTimeout(scrollingClassTimeout[x]);\n } else {\n classList.add(className);\n }\n}\n\nexport function removeScrollingClass(i, x) {\n scrollingClassTimeout[x] = setTimeout(\n () => i.isAlive && i.element.classList.remove(cls.state.scrolling(x)),\n i.settings.scrollingThreshold\n );\n}\n\nexport function setScrollingClassInstantly(i, x) {\n addScrollingClass(i, x);\n removeScrollingClass(i, x);\n}\n","import { setScrollingClassInstantly } from './lib/class-names';\n\nfunction createEvent(name) {\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(name);\n }\n\n const evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(name, false, false, undefined);\n return evt;\n}\n\nexport default function(\n i,\n axis,\n diff,\n useScrollingClass = true,\n forceFireReachEvent = false\n) {\n let fields;\n if (axis === 'top') {\n fields = [\n 'contentHeight',\n 'containerHeight',\n 'scrollTop',\n 'y',\n 'up',\n 'down',\n ];\n } else if (axis === 'left') {\n fields = [\n 'contentWidth',\n 'containerWidth',\n 'scrollLeft',\n 'x',\n 'left',\n 'right',\n ];\n } else {\n throw new Error('A proper axis should be provided');\n }\n\n processScrollDiff(i, diff, fields, useScrollingClass, forceFireReachEvent);\n}\n\nfunction processScrollDiff(\n i,\n diff,\n [contentHeight, containerHeight, scrollTop, y, up, down],\n useScrollingClass = true,\n forceFireReachEvent = false\n) {\n const element = i.element;\n\n // reset reach\n i.reach[y] = null;\n\n // 1 for subpixel rounding\n if (element[scrollTop] < 1) {\n i.reach[y] = 'start';\n }\n\n // 1 for subpixel rounding\n if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) {\n i.reach[y] = 'end';\n }\n\n if (diff) {\n element.dispatchEvent(createEvent(`ps-scroll-${y}`));\n\n if (diff < 0) {\n element.dispatchEvent(createEvent(`ps-scroll-${up}`));\n } else if (diff > 0) {\n element.dispatchEvent(createEvent(`ps-scroll-${down}`));\n }\n\n if (useScrollingClass) {\n setScrollingClassInstantly(i, y);\n }\n }\n\n if (i.reach[y] && (diff || forceFireReachEvent)) {\n element.dispatchEvent(createEvent(`ps-${y}-reach-${i.reach[y]}`));\n }\n}\n","import * as CSS from './css';\nimport * as DOM from './dom';\n\nexport function toInt(x) {\n return parseInt(x, 10) || 0;\n}\n\nexport function isEditable(el) {\n return (\n 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}\n\nexport function outerWidth(element) {\n const styles = CSS.get(element);\n return (\n toInt(styles.width) +\n toInt(styles.paddingLeft) +\n toInt(styles.paddingRight) +\n toInt(styles.borderLeftWidth) +\n toInt(styles.borderRightWidth)\n );\n}\n\nexport const env = {\n isWebKit:\n typeof document !== 'undefined' &&\n 'WebkitAppearance' in document.documentElement.style,\n supportsTouch:\n typeof window !== 'undefined' &&\n ('ontouchstart' in window ||\n ('maxTouchPoints' in window.navigator &&\n window.navigator.maxTouchPoints > 0) ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)),\n supportsIePointer:\n typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,\n isChrome:\n typeof navigator !== 'undefined' &&\n /Chrome/i.test(navigator && navigator.userAgent),\n};\n","/* eslint-disable */\n\nimport updateGeometry from '../update-geometry';\n\nexport default function(i) {\n // const element = i.element;\n\n i.event.bind(i.scrollbarY, 'mousedown', e => e.stopPropagation());\n i.event.bind(i.scrollbarYRail, 'mousedown', e => {\n const positionTop =\n e.pageY -\n window.pageYOffset -\n i.scrollbarYRail.getBoundingClientRect().top;\n const direction = positionTop > i.scrollbarYTop ? 1 : -1;\n\n i.element.scrollTop += direction * i.containerHeight;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n\n i.event.bind(i.scrollbarX, 'mousedown', e => e.stopPropagation());\n i.event.bind(i.scrollbarXRail, 'mousedown', e => {\n const positionLeft =\n e.pageX -\n window.pageXOffset -\n i.scrollbarXRail.getBoundingClientRect().left;\n const direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n i.element.scrollLeft += direction * i.containerWidth;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n}\n","import cls, {\n addScrollingClass,\n removeScrollingClass,\n} from '../lib/class-names';\nimport updateGeometry from '../update-geometry';\n\nlet activeSlider = null; // Variable to track the currently active slider\n\nexport default function setupScrollHandlers(i) {\n bindMouseScrollHandler(i, [\n 'containerHeight',\n 'contentHeight',\n 'pageY',\n 'railYHeight',\n 'scrollbarY',\n 'scrollbarYHeight',\n 'scrollTop',\n 'y',\n 'scrollbarYRail',\n ]);\n\n bindMouseScrollHandler(i, [\n 'containerWidth',\n 'contentWidth',\n 'pageX',\n 'railXWidth',\n 'scrollbarX',\n 'scrollbarXWidth',\n 'scrollLeft',\n 'x',\n 'scrollbarXRail',\n ]);\n}\n\nfunction bindMouseScrollHandler(\n i,\n [\n containerDimension,\n contentDimension,\n pageAxis,\n railDimension,\n scrollbarAxis,\n scrollbarDimension,\n scrollAxis,\n axis,\n scrollbarRail,\n ]\n) {\n const element = i.element;\n let startingScrollPosition = null;\n let startingMousePagePosition = null;\n let scrollBy = null;\n\n function moveHandler(e) {\n if (e.touches && e.touches[0]) {\n e[pageAxis] = e.touches[0][`page${axis.toUpperCase()}`];\n }\n\n // Only move if the active slider is the one we started with\n if (activeSlider === scrollbarAxis) {\n element[scrollAxis] =\n startingScrollPosition +\n scrollBy * (e[pageAxis] - startingMousePagePosition);\n addScrollingClass(i, axis);\n updateGeometry(i);\n\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n function endHandler() {\n removeScrollingClass(i, axis);\n i[scrollbarRail].classList.remove(cls.state.clicking);\n document.removeEventListener('mousemove', moveHandler);\n document.removeEventListener('mouseup', endHandler);\n document.removeEventListener('touchmove', moveHandler);\n document.removeEventListener('touchend', endHandler);\n activeSlider = null; // Reset active slider when interaction ends\n }\n\n function bindMoves(e) {\n if (activeSlider === null) {\n // Only bind if no slider is currently active\n activeSlider = scrollbarAxis; // Set current slider as active\n\n startingScrollPosition = element[scrollAxis];\n if (e.touches) {\n e[pageAxis] = e.touches[0][`page${axis.toUpperCase()}`];\n }\n startingMousePagePosition = e[pageAxis];\n scrollBy =\n (i[contentDimension] - i[containerDimension]) /\n (i[railDimension] - i[scrollbarDimension]);\n\n if (!e.touches) {\n document.addEventListener('mousemove', moveHandler);\n document.addEventListener('mouseup', endHandler);\n } else {\n document.addEventListener('touchmove', moveHandler, { passive: false });\n document.addEventListener('touchend', endHandler);\n }\n\n i[scrollbarRail].classList.add(cls.state.clicking);\n }\n\n e.stopPropagation();\n if (e.cancelable) {\n e.preventDefault();\n }\n }\n\n i[scrollbarAxis].addEventListener('mousedown', bindMoves);\n i[scrollbarAxis].addEventListener('touchstart', bindMoves);\n}\n","/* eslint-disable */\n\nimport * as DOM from '../lib/dom';\nimport updateGeometry from '../update-geometry';\nimport { isEditable } from '../lib/util';\n\nexport default function(i) {\n const element = i.element;\n\n const elementHovered = () => DOM.matches(element, ':hover');\n const scrollbarFocused = () =>\n DOM.matches(i.scrollbarX, ':focus') || DOM.matches(i.scrollbarY, ':focus');\n\n function shouldPreventDefault(deltaX, deltaY) {\n const scrollTop = Math.floor(element.scrollTop);\n if (deltaX === 0) {\n if (!i.scrollbarYActive) {\n return false;\n }\n if (\n (scrollTop === 0 && deltaY > 0) ||\n (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n\n const scrollLeft = element.scrollLeft;\n if (deltaY === 0) {\n if (!i.scrollbarXActive) {\n return false;\n }\n if (\n (scrollLeft === 0 && deltaX < 0) ||\n (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n return true;\n }\n\n i.event.bind(i.ownerDocument, 'keydown', e => {\n if (\n (e.isDefaultPrevented && e.isDefaultPrevented()) ||\n e.defaultPrevented\n ) {\n return;\n }\n\n if (!elementHovered() && !scrollbarFocused()) {\n return;\n }\n\n let activeElement = document.activeElement\n ? document.activeElement\n : 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 let deltaX = 0;\n let 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 32: // space bar\n if (e.shiftKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = -i.containerHeight;\n }\n break;\n case 33: // page up\n deltaY = i.containerHeight;\n break;\n case 34: // page down\n deltaY = -i.containerHeight;\n break;\n case 36: // home\n deltaY = i.contentHeight;\n break;\n case 35: // end\n deltaY = -i.contentHeight;\n break;\n default:\n return;\n }\n\n if (i.settings.suppressScrollX && deltaX !== 0) {\n return;\n }\n if (i.settings.suppressScrollY && deltaY !== 0) {\n return;\n }\n\n element.scrollTop -= deltaY;\n element.scrollLeft += deltaX;\n updateGeometry(i);\n\n if (shouldPreventDefault(deltaX, deltaY)) {\n e.preventDefault();\n }\n });\n}\n","class EventElement {\n constructor(element) {\n this.element = element;\n this.handlers = {};\n }\n\n bind(eventName, handler) {\n if (typeof this.handlers[eventName] === 'undefined') {\n this.handlers[eventName] = [];\n }\n this.handlers[eventName].push(handler);\n this.element.addEventListener(eventName, handler, false);\n }\n\n unbind(eventName, target) {\n this.handlers[eventName] = this.handlers[eventName].filter(handler => {\n if (target && handler !== target) {\n return true;\n }\n this.element.removeEventListener(eventName, handler, false);\n return false;\n });\n }\n\n unbindAll() {\n for (const name in this.handlers) {\n this.unbind(name);\n }\n }\n\n get isEmpty() {\n return Object.keys(this.handlers).every(\n key => this.handlers[key].length === 0\n );\n }\n}\n\nexport default class EventManager {\n constructor() {\n this.eventElements = [];\n }\n\n eventElement(element) {\n let ee = this.eventElements.filter(ee => ee.element === element)[0];\n if (!ee) {\n ee = new EventElement(element);\n this.eventElements.push(ee);\n }\n return ee;\n }\n\n bind(element, eventName, handler) {\n this.eventElement(element).bind(eventName, handler);\n }\n\n unbind(element, eventName, handler) {\n const ee = this.eventElement(element);\n ee.unbind(eventName, handler);\n\n if (ee.isEmpty) {\n // remove\n this.eventElements.splice(this.eventElements.indexOf(ee), 1);\n }\n }\n\n unbindAll() {\n this.eventElements.forEach(e => e.unbindAll());\n this.eventElements = [];\n }\n\n once(element, eventName, handler) {\n const ee = this.eventElement(element);\n const onceHandler = evt => {\n ee.unbind(eventName, onceHandler);\n handler(evt);\n };\n ee.bind(eventName, onceHandler);\n }\n}\n","/* eslint-disable */\n\nimport * as CSS from './lib/css';\nimport * as DOM from './lib/dom';\nimport cls from './lib/class-names';\nimport EventManager from './lib/event-manager';\nimport processScrollDiff from './process-scroll-diff';\nimport updateGeometry from './update-geometry';\nimport { toInt, outerWidth } from './lib/util';\n\nimport clickRail from './handlers/click-rail';\nimport dragThumb from './handlers/drag-thumb';\nimport keyboard from './handlers/keyboard';\nimport wheel from './handlers/mouse-wheel';\nimport touch from './handlers/touch';\n\nconst defaultSettings = () => ({\n handlers: ['click-rail', 'drag-thumb', 'keyboard', 'wheel', 'touch'],\n maxScrollbarLength: null,\n minScrollbarLength: null,\n scrollingThreshold: 1000,\n scrollXMarginOffset: 0,\n scrollYMarginOffset: 0,\n suppressScrollX: false,\n suppressScrollY: false,\n swipeEasing: true,\n useBothWheelAxes: false,\n wheelPropagation: true,\n wheelSpeed: 1,\n});\n\nconst handlers = {\n 'click-rail': clickRail,\n 'drag-thumb': dragThumb,\n keyboard,\n wheel,\n touch,\n};\n\nexport default class PerfectScrollbar {\n constructor(element, userSettings = {}) {\n if (typeof element === 'string') {\n element = document.querySelector(element);\n }\n\n if (!element || !element.nodeName) {\n throw new Error('no element is specified to initialize PerfectScrollbar');\n }\n\n this.element = element;\n\n element.classList.add(cls.main);\n\n this.settings = defaultSettings();\n for (const key in userSettings) {\n this.settings[key] = userSettings[key];\n }\n\n this.containerWidth = null;\n this.containerHeight = null;\n this.contentWidth = null;\n this.contentHeight = null;\n\n const focus = () => element.classList.add(cls.state.focus);\n const blur = () => element.classList.remove(cls.state.focus);\n\n this.isRtl = CSS.get(element).direction === 'rtl';\n if (this.isRtl === true) {\n element.classList.add(cls.rtl);\n }\n this.isNegativeScroll = (() => {\n const originalScrollLeft = element.scrollLeft;\n let result = null;\n element.scrollLeft = -1;\n result = element.scrollLeft < 0;\n element.scrollLeft = originalScrollLeft;\n return result;\n })();\n this.negativeScrollAdjustment = this.isNegativeScroll\n ? element.scrollWidth - element.clientWidth\n : 0;\n this.event = new EventManager();\n this.ownerDocument = element.ownerDocument || document;\n\n this.scrollbarXRail = DOM.div(cls.element.rail('x'));\n element.appendChild(this.scrollbarXRail);\n this.scrollbarX = DOM.div(cls.element.thumb('x'));\n this.scrollbarXRail.appendChild(this.scrollbarX);\n this.scrollbarX.setAttribute('tabindex', 0);\n this.event.bind(this.scrollbarX, 'focus', focus);\n this.event.bind(this.scrollbarX, 'blur', blur);\n this.scrollbarXActive = null;\n this.scrollbarXWidth = null;\n this.scrollbarXLeft = null;\n const railXStyle = CSS.get(this.scrollbarXRail);\n this.scrollbarXBottom = parseInt(railXStyle.bottom, 10);\n if (isNaN(this.scrollbarXBottom)) {\n this.isScrollbarXUsingBottom = false;\n this.scrollbarXTop = toInt(railXStyle.top);\n } else {\n this.isScrollbarXUsingBottom = true;\n }\n this.railBorderXWidth =\n toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth);\n // Set rail to display:block to calculate margins\n CSS.set(this.scrollbarXRail, { display: 'block' });\n this.railXMarginWidth =\n toInt(railXStyle.marginLeft) + toInt(railXStyle.marginRight);\n CSS.set(this.scrollbarXRail, { display: '' });\n this.railXWidth = null;\n this.railXRatio = null;\n\n this.scrollbarYRail = DOM.div(cls.element.rail('y'));\n element.appendChild(this.scrollbarYRail);\n this.scrollbarY = DOM.div(cls.element.thumb('y'));\n this.scrollbarYRail.appendChild(this.scrollbarY);\n this.scrollbarY.setAttribute('tabindex', 0);\n this.event.bind(this.scrollbarY, 'focus', focus);\n this.event.bind(this.scrollbarY, 'blur', blur);\n this.scrollbarYActive = null;\n this.scrollbarYHeight = null;\n this.scrollbarYTop = null;\n const railYStyle = CSS.get(this.scrollbarYRail);\n this.scrollbarYRight = parseInt(railYStyle.right, 10);\n if (isNaN(this.scrollbarYRight)) {\n this.isScrollbarYUsingRight = false;\n this.scrollbarYLeft = toInt(railYStyle.left);\n } else {\n this.isScrollbarYUsingRight = true;\n }\n this.scrollbarYOuterWidth = this.isRtl ? outerWidth(this.scrollbarY) : null;\n this.railBorderYWidth =\n toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth);\n CSS.set(this.scrollbarYRail, { display: 'block' });\n this.railYMarginHeight =\n toInt(railYStyle.marginTop) + toInt(railYStyle.marginBottom);\n CSS.set(this.scrollbarYRail, { display: '' });\n this.railYHeight = null;\n this.railYRatio = null;\n\n this.reach = {\n x:\n element.scrollLeft <= 0\n ? 'start'\n : element.scrollLeft >= this.contentWidth - this.containerWidth\n ? 'end'\n : null,\n y:\n element.scrollTop <= 0\n ? 'start'\n : element.scrollTop >= this.contentHeight - this.containerHeight\n ? 'end'\n : null,\n };\n\n this.isAlive = true;\n\n this.settings.handlers.forEach(handlerName => handlers[handlerName](this));\n\n this.lastScrollTop = Math.floor(element.scrollTop); // for onScroll only\n this.lastScrollLeft = element.scrollLeft; // for onScroll only\n this.event.bind(this.element, 'scroll', e => this.onScroll(e));\n updateGeometry(this);\n }\n\n update() {\n if (!this.isAlive) {\n return;\n }\n\n // Recalcuate negative scrollLeft adjustment\n this.negativeScrollAdjustment = this.isNegativeScroll\n ? this.element.scrollWidth - this.element.clientWidth\n : 0;\n\n // Recalculate rail margins\n CSS.set(this.scrollbarXRail, { display: 'block' });\n CSS.set(this.scrollbarYRail, { display: 'block' });\n this.railXMarginWidth =\n toInt(CSS.get(this.scrollbarXRail).marginLeft) +\n toInt(CSS.get(this.scrollbarXRail).marginRight);\n this.railYMarginHeight =\n toInt(CSS.get(this.scrollbarYRail).marginTop) +\n toInt(CSS.get(this.scrollbarYRail).marginBottom);\n\n // Hide scrollbars not to affect scrollWidth and scrollHeight\n CSS.set(this.scrollbarXRail, { display: 'none' });\n CSS.set(this.scrollbarYRail, { display: 'none' });\n\n updateGeometry(this);\n\n processScrollDiff(this, 'top', 0, false, true);\n processScrollDiff(this, 'left', 0, false, true);\n\n CSS.set(this.scrollbarXRail, { display: '' });\n CSS.set(this.scrollbarYRail, { display: '' });\n }\n\n onScroll(e) {\n if (!this.isAlive) {\n return;\n }\n\n updateGeometry(this);\n processScrollDiff(this, 'top', this.element.scrollTop - this.lastScrollTop);\n processScrollDiff(\n this,\n 'left',\n this.element.scrollLeft - this.lastScrollLeft\n );\n\n this.lastScrollTop = Math.floor(this.element.scrollTop);\n this.lastScrollLeft = this.element.scrollLeft;\n }\n\n destroy() {\n if (!this.isAlive) {\n return;\n }\n\n this.event.unbindAll();\n DOM.remove(this.scrollbarX);\n DOM.remove(this.scrollbarY);\n DOM.remove(this.scrollbarXRail);\n DOM.remove(this.scrollbarYRail);\n this.removePsClasses();\n\n // unset elements\n this.element = null;\n this.scrollbarX = null;\n this.scrollbarY = null;\n this.scrollbarXRail = null;\n this.scrollbarYRail = null;\n\n this.isAlive = false;\n }\n\n removePsClasses() {\n this.element.className = this.element.className\n .split(' ')\n .filter(name => !name.match(/^ps([-_].+|)$/))\n .join(' ');\n }\n}\n","import updateGeometry from '../update-geometry';\nimport cls from '../lib/class-names';\nimport * as CSS from '../lib/css';\nimport { env } from '../lib/util';\n\nexport default function(i) {\n if (!env.supportsTouch && !env.supportsIePointer) {\n return;\n }\n\n const element = i.element;\n\n const state = {\n startOffset: {},\n startTime: 0,\n speed: {},\n easingLoop: null,\n };\n\n function shouldPrevent(deltaX, deltaY) {\n const scrollTop = Math.floor(element.scrollTop);\n const scrollLeft = element.scrollLeft;\n const magnitudeX = Math.abs(deltaX);\n const magnitudeY = Math.abs(deltaY);\n\n if (magnitudeY > magnitudeX) {\n // user is perhaps trying to swipe up/down the page\n\n if (\n (deltaY < 0 && scrollTop === i.contentHeight - i.containerHeight) ||\n (deltaY > 0 && scrollTop === 0)\n ) {\n // set prevent for mobile Chrome refresh\n return window.scrollY === 0 && deltaY > 0 && env.isChrome;\n }\n } else if (magnitudeX > magnitudeY) {\n // user is perhaps trying to swipe left/right across the page\n\n if (\n (deltaX < 0 && scrollLeft === i.contentWidth - i.containerWidth) ||\n (deltaX > 0 && scrollLeft === 0)\n ) {\n return true;\n }\n }\n\n return true;\n }\n\n function applyTouchMove(differenceX, differenceY) {\n element.scrollTop -= differenceY;\n element.scrollLeft -= differenceX;\n\n updateGeometry(i);\n }\n\n function getTouch(e) {\n if (e.targetTouches) {\n return e.targetTouches[0];\n }\n // Maybe IE pointer\n return e;\n }\n\n function shouldHandle(e) {\n if (e.target === i.scrollbarX || e.target === i.scrollbarY) {\n return false;\n }\n if (e.pointerType && e.pointerType === 'pen' && e.buttons === 0) {\n return false;\n }\n if (e.targetTouches && e.targetTouches.length === 1) {\n return true;\n }\n if (\n e.pointerType &&\n e.pointerType !== 'mouse' &&\n e.pointerType !== e.MSPOINTER_TYPE_MOUSE\n ) {\n return true;\n }\n return false;\n }\n\n function touchStart(e) {\n if (!shouldHandle(e)) {\n return;\n }\n\n const touch = getTouch(e);\n\n state.startOffset.pageX = touch.pageX;\n state.startOffset.pageY = touch.pageY;\n\n state.startTime = new Date().getTime();\n\n if (state.easingLoop !== null) {\n clearInterval(state.easingLoop);\n }\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n if (!element.contains(target)) {\n return false;\n }\n\n let cursor = target;\n\n while (cursor && cursor !== element) {\n if (cursor.classList.contains(cls.element.consuming)) {\n return true;\n }\n\n const style = CSS.get(cursor);\n\n // if deltaY && vertical scrollable\n if (deltaY && style.overflowY.match(/(scroll|auto)/)) {\n const maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n if (maxScrollTop > 0) {\n if (\n (cursor.scrollTop > 0 && deltaY < 0) ||\n (cursor.scrollTop < maxScrollTop && deltaY > 0)\n ) {\n return true;\n }\n }\n }\n // if deltaX && horizontal scrollable\n if (deltaX && style.overflowX.match(/(scroll|auto)/)) {\n const maxScrollLeft = cursor.scrollWidth - cursor.clientWidth;\n if (maxScrollLeft > 0) {\n if (\n (cursor.scrollLeft > 0 && deltaX < 0) ||\n (cursor.scrollLeft < maxScrollLeft && deltaX > 0)\n ) {\n return true;\n }\n }\n }\n\n cursor = cursor.parentNode;\n }\n\n return false;\n }\n\n function touchMove(e) {\n if (shouldHandle(e)) {\n const touch = getTouch(e);\n\n const currentOffset = { pageX: touch.pageX, pageY: touch.pageY };\n\n const differenceX = currentOffset.pageX - state.startOffset.pageX;\n const differenceY = currentOffset.pageY - state.startOffset.pageY;\n\n if (shouldBeConsumedByChild(e.target, differenceX, differenceY)) {\n return;\n }\n\n applyTouchMove(differenceX, differenceY);\n state.startOffset = currentOffset;\n\n const currentTime = new Date().getTime();\n\n const timeGap = currentTime - state.startTime;\n if (timeGap > 0) {\n state.speed.x = differenceX / timeGap;\n state.speed.y = differenceY / timeGap;\n state.startTime = currentTime;\n }\n\n if (shouldPrevent(differenceX, differenceY)) {\n // Prevent the default behavior if the event is cancelable\n if (e.cancelable) {\n e.preventDefault();\n }\n }\n }\n }\n\n function touchEnd() {\n if (i.settings.swipeEasing) {\n clearInterval(state.easingLoop);\n state.easingLoop = setInterval(() => {\n if (i.isInitialized) {\n clearInterval(state.easingLoop);\n return;\n }\n\n if (!state.speed.x && !state.speed.y) {\n clearInterval(state.easingLoop);\n return;\n }\n\n if (Math.abs(state.speed.x) < 0.01 && Math.abs(state.speed.y) < 0.01) {\n clearInterval(state.easingLoop);\n return;\n }\n\n applyTouchMove(state.speed.x * 30, state.speed.y * 30);\n\n state.speed.x *= 0.8;\n state.speed.y *= 0.8;\n }, 10);\n }\n }\n\n if (env.supportsTouch) {\n i.event.bind(element, 'touchstart', touchStart);\n i.event.bind(element, 'touchmove', touchMove);\n i.event.bind(element, 'touchend', touchEnd);\n } else if (env.supportsIePointer) {\n if (window.PointerEvent) {\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(element, 'MSPointerDown', touchStart);\n i.event.bind(element, 'MSPointerMove', touchMove);\n i.event.bind(element, 'MSPointerUp', touchEnd);\n }\n }\n}\n"],"names":["Math","abs","floor","get","element","getComputedStyle","set","obj","const","key","let","val","style","div","className","document","createElement","matches","query","elMatches","Error","call","remove","parentNode","removeChild","queryChildren","selector","Array","prototype","filter","children","child","addScrollingClass","i","x","classList","cls","state","scrolling","contains","clearTimeout","scrollingClassTimeout","add","removeScrollingClass","setTimeout","isAlive","settings","scrollingThreshold","setScrollingClassInstantly","createEvent","name","window","CustomEvent","evt","initCustomEvent","axis","diff","useScrollingClass","forceFireReachEvent","fields","processScrollDiff","ref","reach","y","scrollTop","contentHeight","containerHeight","dispatchEvent","up","down","toInt","parseInt","isEditable","el","DOM.matches","outerWidth","styles","CSS.get","width","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","roundedScrollTop","rect","getBoundingClientRect","containerWidth","height","contentWidth","scrollWidth","scrollHeight","scrollbarXRail","DOM.queryChildren","rail","forEach","DOM.remove","appendChild","scrollbarYRail","suppressScrollX","scrollXMarginOffset","scrollbarXActive","railXWidth","railXMarginWidth","railXRatio","scrollbarXWidth","getThumbSize","scrollbarXLeft","negativeScrollAdjustment","scrollLeft","suppressScrollY","scrollYMarginOffset","scrollbarYActive","railYHeight","railYMarginHeight","railYRatio","scrollbarYHeight","scrollbarYTop","updateCss","active","isRtl","thumbSize","min","max","minScrollbarLength","maxScrollbarLength","xRailOffset","left","isScrollbarXUsingBottom","bottom","scrollbarXBottom","top","scrollbarXTop","CSS.set","yRailOffset","isScrollbarYUsingRight","right","scrollbarYRight","scrollbarYOuterWidth","scrollbarYLeft","scrollbarX","railBorderXWidth","scrollbarY","railBorderYWidth","bindMouseScrollHandler","moveHandler","e","touches","pageAxis","toUpperCase","activeSlider","scrollbarAxis","scrollAxis","startingScrollPosition","scrollBy","startingMousePagePosition","updateGeometry","stopPropagation","preventDefault","endHandler","scrollbarRail","clicking","removeEventListener","bindMoves","contentDimension","containerDimension","railDimension","scrollbarDimension","addEventListener","passive","cancelable","Element","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","main","rtl","thumb","consuming","focus","EventElement","handlers","bind","eventName","handler","push","unbind","target","this","unbindAll","prototypeAccessors","isEmpty","Object","keys","every","length","EventManager","eventElements","eventElement","ee","splice","indexOf","once","onceHandler","env","isWebKit","documentElement","supportsTouch","navigator","maxTouchPoints","DocumentTouch","supportsIePointer","msMaxTouchPoints","isChrome","test","userAgent","defaultSettings","swipeEasing","useBothWheelAxes","wheelPropagation","wheelSpeed","event","positionTop","pageY","pageYOffset","direction","positionLeft","pageX","pageXOffset","shouldPreventDefault","deltaX","deltaY","elementHovered","scrollbarFocused","ownerDocument","isDefaultPrevented","defaultPrevented","activeElement","tagName","contentDocument","shadowRoot","which","metaKey","altKey","shiftKey","hitsBound","isTop","isBottom","offsetHeight","isLeft","isRight","offsetWidth","getDeltaFromEvent","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","shouldBeConsumedByChild","querySelector","cursor","overflowY","match","maxScrollTop","clientHeight","overflowX","maxScrollLeft","clientWidth","mousewheelHandler","shouldPrevent","ctrlKey","onwheel","onmousewheel","magnitudeX","magnitudeY","scrollY","applyTouchMove","differenceX","differenceY","getTouch","targetTouches","shouldHandle","pointerType","buttons","MSPOINTER_TYPE_MOUSE","touchStart","touch","startOffset","startTime","Date","getTime","easingLoop","clearInterval","touchMove","currentOffset","currentTime","timeGap","speed","touchEnd","setInterval","isInitialized","PointerEvent","MSPointerEvent","PerfectScrollbar","userSettings","nodeName","blur","isNegativeScroll","originalScrollLeft","result","DOM.div","setAttribute","railXStyle","isNaN","display","marginLeft","marginRight","railYStyle","borderTopWidth","borderBottomWidth","marginTop","marginBottom","handlerName","lastScrollTop","lastScrollLeft","onScroll","update","destroy","removePsClasses","split","join"],"mappings":"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"} \ No newline at end of file diff --git a/src/handlers/click-rail.js b/src/handlers/click-rail.js index 060db25..d6de4d5 100644 --- a/src/handlers/click-rail.js +++ b/src/handlers/click-rail.js @@ -2,12 +2,15 @@ import updateGeometry from '../update-geometry'; -export default function (i) { +export default function(i) { // const element = i.element; - i.event.bind(i.scrollbarY, 'mousedown', (e) => e.stopPropagation()); - i.event.bind(i.scrollbarYRail, 'mousedown', (e) => { - const positionTop = e.pageY - window.pageYOffset - i.scrollbarYRail.getBoundingClientRect().top; + i.event.bind(i.scrollbarY, 'mousedown', e => e.stopPropagation()); + i.event.bind(i.scrollbarYRail, 'mousedown', e => { + const positionTop = + e.pageY - + window.pageYOffset - + i.scrollbarYRail.getBoundingClientRect().top; const direction = positionTop > i.scrollbarYTop ? 1 : -1; i.element.scrollTop += direction * i.containerHeight; @@ -16,10 +19,12 @@ export default function (i) { e.stopPropagation(); }); - i.event.bind(i.scrollbarX, 'mousedown', (e) => e.stopPropagation()); - i.event.bind(i.scrollbarXRail, 'mousedown', (e) => { + i.event.bind(i.scrollbarX, 'mousedown', e => e.stopPropagation()); + i.event.bind(i.scrollbarXRail, 'mousedown', e => { const positionLeft = - e.pageX - window.pageXOffset - i.scrollbarXRail.getBoundingClientRect().left; + e.pageX - + window.pageXOffset - + i.scrollbarXRail.getBoundingClientRect().left; const direction = positionLeft > i.scrollbarXLeft ? 1 : -1; i.element.scrollLeft += direction * i.containerWidth; diff --git a/src/handlers/drag-thumb.js b/src/handlers/drag-thumb.js index 0226183..9f5ed1c 100644 --- a/src/handlers/drag-thumb.js +++ b/src/handlers/drag-thumb.js @@ -1,4 +1,7 @@ -import cls, { addScrollingClass, removeScrollingClass } from '../lib/class-names'; +import cls, { + addScrollingClass, + removeScrollingClass, +} from '../lib/class-names'; import updateGeometry from '../update-geometry'; let activeSlider = null; // Variable to track the currently active slider @@ -56,7 +59,8 @@ function bindMouseScrollHandler( // Only move if the active slider is the one we started with if (activeSlider === scrollbarAxis) { element[scrollAxis] = - startingScrollPosition + scrollBy * (e[pageAxis] - startingMousePagePosition); + startingScrollPosition + + scrollBy * (e[pageAxis] - startingMousePagePosition); addScrollingClass(i, axis); updateGeometry(i); @@ -86,7 +90,8 @@ function bindMouseScrollHandler( } startingMousePagePosition = e[pageAxis]; scrollBy = - (i[contentDimension] - i[containerDimension]) / (i[railDimension] - i[scrollbarDimension]); + (i[contentDimension] - i[containerDimension]) / + (i[railDimension] - i[scrollbarDimension]); if (!e.touches) { document.addEventListener('mousemove', moveHandler); diff --git a/src/handlers/keyboard.js b/src/handlers/keyboard.js index 23eae58..67a4a40 100644 --- a/src/handlers/keyboard.js +++ b/src/handlers/keyboard.js @@ -4,7 +4,7 @@ import * as DOM from '../lib/dom'; import updateGeometry from '../update-geometry'; import { isEditable } from '../lib/util'; -export default function (i) { +export default function(i) { const element = i.element; const elementHovered = () => DOM.matches(element, ':hover'); @@ -40,8 +40,11 @@ export default function (i) { return true; } - i.event.bind(i.ownerDocument, 'keydown', (e) => { - if ((e.isDefaultPrevented && e.isDefaultPrevented()) || e.defaultPrevented) { + i.event.bind(i.ownerDocument, 'keydown', e => { + if ( + (e.isDefaultPrevented && e.isDefaultPrevented()) || + e.defaultPrevented + ) { return; } diff --git a/src/handlers/mouse-wheel.js b/src/handlers/mouse-wheel.js index e12e3a0..c982234 100644 --- a/src/handlers/mouse-wheel.js +++ b/src/handlers/mouse-wheel.js @@ -5,7 +5,7 @@ import cls from '../lib/class-names'; import updateGeometry from '../update-geometry'; import { env } from '../lib/util'; -export default function (i) { +export default function(i) { const element = i.element; let shouldPrevent = false; @@ -13,9 +13,11 @@ export default function (i) { function shouldPreventDefault(deltaX, deltaY) { const roundedScrollTop = Math.floor(element.scrollTop); const isTop = element.scrollTop === 0; - const isBottom = roundedScrollTop + element.offsetHeight === element.scrollHeight; + const isBottom = + roundedScrollTop + element.offsetHeight === element.scrollHeight; const isLeft = element.scrollLeft === 0; - const isRight = element.scrollLeft + element.offsetWidth === element.scrollWidth; + const isRight = + element.scrollLeft + element.offsetWidth === element.scrollWidth; let hitsBound; diff --git a/src/handlers/touch.js b/src/handlers/touch.js index 7c02e16..e9740f7 100644 --- a/src/handlers/touch.js +++ b/src/handlers/touch.js @@ -3,7 +3,7 @@ import cls from '../lib/class-names'; import * as CSS from '../lib/css'; import { env } from '../lib/util'; -export default function (i) { +export default function(i) { if (!env.supportsTouch && !env.supportsIePointer) { return; } @@ -72,7 +72,11 @@ export default function (i) { if (e.targetTouches && e.targetTouches.length === 1) { return true; } - if (e.pointerType && e.pointerType !== 'mouse' && e.pointerType !== e.MSPOINTER_TYPE_MOUSE) { + if ( + e.pointerType && + e.pointerType !== 'mouse' && + e.pointerType !== e.MSPOINTER_TYPE_MOUSE + ) { return true; } return false; diff --git a/src/index.js b/src/index.js index 04cfd62..8757003 100644 --- a/src/index.js +++ b/src/index.js @@ -100,10 +100,12 @@ export default class PerfectScrollbar { } else { this.isScrollbarXUsingBottom = true; } - this.railBorderXWidth = toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth); + this.railBorderXWidth = + toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth); // Set rail to display:block to calculate margins CSS.set(this.scrollbarXRail, { display: 'block' }); - this.railXMarginWidth = toInt(railXStyle.marginLeft) + toInt(railXStyle.marginRight); + this.railXMarginWidth = + toInt(railXStyle.marginLeft) + toInt(railXStyle.marginRight); CSS.set(this.scrollbarXRail, { display: '' }); this.railXWidth = null; this.railXRatio = null; @@ -127,9 +129,11 @@ export default class PerfectScrollbar { this.isScrollbarYUsingRight = true; } this.scrollbarYOuterWidth = this.isRtl ? outerWidth(this.scrollbarY) : null; - this.railBorderYWidth = toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth); + this.railBorderYWidth = + toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth); CSS.set(this.scrollbarYRail, { display: 'block' }); - this.railYMarginHeight = toInt(railYStyle.marginTop) + toInt(railYStyle.marginBottom); + this.railYMarginHeight = + toInt(railYStyle.marginTop) + toInt(railYStyle.marginBottom); CSS.set(this.scrollbarYRail, { display: '' }); this.railYHeight = null; this.railYRatio = null; @@ -151,11 +155,11 @@ export default class PerfectScrollbar { this.isAlive = true; - this.settings.handlers.forEach((handlerName) => handlers[handlerName](this)); + this.settings.handlers.forEach(handlerName => handlers[handlerName](this)); this.lastScrollTop = Math.floor(element.scrollTop); // for onScroll only this.lastScrollLeft = element.scrollLeft; // for onScroll only - this.event.bind(this.element, 'scroll', (e) => this.onScroll(e)); + this.event.bind(this.element, 'scroll', e => this.onScroll(e)); updateGeometry(this); } @@ -199,7 +203,11 @@ export default class PerfectScrollbar { updateGeometry(this); processScrollDiff(this, 'top', this.element.scrollTop - this.lastScrollTop); - processScrollDiff(this, 'left', this.element.scrollLeft - this.lastScrollLeft); + processScrollDiff( + this, + 'left', + this.element.scrollLeft - this.lastScrollLeft + ); this.lastScrollTop = Math.floor(this.element.scrollTop); this.lastScrollLeft = this.element.scrollLeft; @@ -230,7 +238,7 @@ export default class PerfectScrollbar { removePsClasses() { this.element.className = this.element.className .split(' ') - .filter((name) => !name.match(/^ps([-_].+|)$/)) + .filter(name => !name.match(/^ps([-_].+|)$/)) .join(' '); } } diff --git a/src/process-scroll-diff.js b/src/process-scroll-diff.js index 4538464..07fe834 100644 --- a/src/process-scroll-diff.js +++ b/src/process-scroll-diff.js @@ -10,12 +10,32 @@ function createEvent(name) { return evt; } -export default function (i, axis, diff, useScrollingClass = true, forceFireReachEvent = false) { +export default function( + i, + axis, + diff, + useScrollingClass = true, + forceFireReachEvent = false +) { let fields; if (axis === 'top') { - fields = ['contentHeight', 'containerHeight', 'scrollTop', 'y', 'up', 'down']; + fields = [ + 'contentHeight', + 'containerHeight', + 'scrollTop', + 'y', + 'up', + 'down', + ]; } else if (axis === 'left') { - fields = ['contentWidth', 'containerWidth', 'scrollLeft', 'x', 'left', 'right']; + fields = [ + 'contentWidth', + 'containerWidth', + 'scrollLeft', + 'x', + 'left', + 'right', + ]; } else { throw new Error('A proper axis should be provided'); } diff --git a/src/update-geometry.js b/src/update-geometry.js index 44581fe..8bd781a 100644 --- a/src/update-geometry.js +++ b/src/update-geometry.js @@ -5,7 +5,7 @@ import { toInt } from './lib/util'; /* eslint-disable no-lonely-if */ -export default function (i) { +export default function(i) { const element = i.element; const roundedScrollTop = Math.floor(element.scrollTop); const rect = element.getBoundingClientRect(); @@ -18,12 +18,16 @@ export default function (i) { if (!element.contains(i.scrollbarXRail)) { // clean up and append - DOM.queryChildren(element, cls.element.rail('x')).forEach((el) => DOM.remove(el)); + DOM.queryChildren(element, cls.element.rail('x')).forEach(el => + DOM.remove(el) + ); element.appendChild(i.scrollbarXRail); } if (!element.contains(i.scrollbarYRail)) { // clean up and append - DOM.queryChildren(element, cls.element.rail('y')).forEach((el) => DOM.remove(el)); + DOM.queryChildren(element, cls.element.rail('y')).forEach(el => + DOM.remove(el) + ); element.appendChild(i.scrollbarYRail); } @@ -34,9 +38,13 @@ export default function (i) { i.scrollbarXActive = true; i.railXWidth = i.containerWidth - i.railXMarginWidth; i.railXRatio = i.containerWidth / i.railXWidth; - i.scrollbarXWidth = getThumbSize(i, toInt((i.railXWidth * i.containerWidth) / i.contentWidth)); + i.scrollbarXWidth = getThumbSize( + i, + toInt((i.railXWidth * i.containerWidth) / i.contentWidth) + ); i.scrollbarXLeft = toInt( - ((i.negativeScrollAdjustment + element.scrollLeft) * (i.railXWidth - i.scrollbarXWidth)) / + ((i.negativeScrollAdjustment + element.scrollLeft) * + (i.railXWidth - i.scrollbarXWidth)) / (i.contentWidth - i.containerWidth) ); } else { @@ -105,7 +113,10 @@ function updateCss(element, i) { if (i.isRtl) { xRailOffset.left = - i.negativeScrollAdjustment + element.scrollLeft + i.containerWidth - i.contentWidth; + i.negativeScrollAdjustment + + element.scrollLeft + + i.containerWidth - + i.contentWidth; } else { xRailOffset.left = element.scrollLeft; }