UNPKG

70.3 kBSource Map (JSON)View Raw
1{"version":3,"file":"simplebar.esm.js","sources":["../src/scrollbar-width.js","../src/helpers.js","../src/simplebar.js","../src/index.js"],"sourcesContent":["import canUseDOM from 'can-use-dom';\n\nlet cachedScrollbarWidth = null;\nlet cachedDevicePixelRatio = null;\n\nif (canUseDOM) {\n window.addEventListener('resize', () => {\n if (cachedDevicePixelRatio !== window.devicePixelRatio) {\n cachedDevicePixelRatio = window.devicePixelRatio;\n cachedScrollbarWidth = null;\n }\n });\n}\n\nexport default function scrollbarWidth() {\n if (cachedScrollbarWidth === null) {\n if (typeof document === 'undefined') {\n cachedScrollbarWidth = 0;\n return cachedScrollbarWidth;\n }\n\n const body = document.body;\n const box = document.createElement('div');\n\n box.classList.add('simplebar-hide-scrollbar');\n\n body.appendChild(box);\n\n const width = box.getBoundingClientRect().right;\n\n body.removeChild(box);\n\n cachedScrollbarWidth = width;\n }\n\n return cachedScrollbarWidth;\n}\n","// Helper function to retrieve options from element attributes\nexport const getOptions = function(obj) {\n const options = Array.prototype.reduce.call(\n obj,\n (acc, attribute) => {\n const option = attribute.name.match(/data-simplebar-(.+)/);\n if (option) {\n const key = option[1].replace(/\\W+(.)/g, (x, chr) => chr.toUpperCase());\n switch (attribute.value) {\n case 'true':\n acc[key] = true;\n break;\n case 'false':\n acc[key] = false;\n break;\n case undefined:\n acc[key] = true;\n break;\n default:\n acc[key] = attribute.value;\n }\n }\n return acc;\n },\n {}\n );\n return options;\n};\n\nexport function getElementWindow(element) {\n if (\n !element ||\n !element.ownerDocument ||\n !element.ownerDocument.defaultView\n ) {\n return window;\n }\n return element.ownerDocument.defaultView;\n}\n\nexport function getElementDocument(element) {\n if (!element || !element.ownerDocument) {\n return document;\n }\n return element.ownerDocument;\n}\n","import throttle from 'lodash.throttle';\nimport debounce from 'lodash.debounce';\nimport memoize from 'lodash.memoize';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport canUseDOM from 'can-use-dom';\nimport scrollbarWidth from './scrollbar-width';\nimport { getElementWindow, getElementDocument } from './helpers';\n\nexport default class SimpleBar {\n constructor(element, options) {\n this.el = element;\n this.minScrollbarWidth = 20;\n this.options = { ...SimpleBar.defaultOptions, ...options };\n this.classNames = {\n ...SimpleBar.defaultOptions.classNames,\n ...this.options.classNames\n };\n this.axis = {\n x: {\n scrollOffsetAttr: 'scrollLeft',\n sizeAttr: 'width',\n scrollSizeAttr: 'scrollWidth',\n offsetSizeAttr: 'offsetWidth',\n offsetAttr: 'left',\n overflowAttr: 'overflowX',\n dragOffset: 0,\n isOverflowing: true,\n isVisible: false,\n forceVisible: false,\n track: {},\n scrollbar: {}\n },\n y: {\n scrollOffsetAttr: 'scrollTop',\n sizeAttr: 'height',\n scrollSizeAttr: 'scrollHeight',\n offsetSizeAttr: 'offsetHeight',\n offsetAttr: 'top',\n overflowAttr: 'overflowY',\n dragOffset: 0,\n isOverflowing: true,\n isVisible: false,\n forceVisible: false,\n track: {},\n scrollbar: {}\n }\n };\n this.removePreventClickId = null;\n\n // Don't re-instantiate over an existing one\n if (SimpleBar.instances.has(this.el)) {\n return;\n }\n\n this.recalculate = throttle(this.recalculate.bind(this), 64);\n this.onMouseMove = throttle(this.onMouseMove.bind(this), 64);\n this.hideScrollbars = debounce(\n this.hideScrollbars.bind(this),\n this.options.timeout\n );\n this.onWindowResize = debounce(this.onWindowResize.bind(this), 64, {\n leading: true\n });\n\n SimpleBar.getRtlHelpers = memoize(SimpleBar.getRtlHelpers);\n\n this.init();\n }\n\n /**\n * Static properties\n */\n\n /**\n * Helper to fix browsers inconsistency on RTL:\n * - Firefox inverts the scrollbar initial position\n * - IE11 inverts both scrollbar position and scrolling offset\n * Directly inspired by @KingSora's OverlayScrollbars https://github.com/KingSora/OverlayScrollbars/blob/master/js/OverlayScrollbars.js#L1634\n */\n static getRtlHelpers() {\n const dummyDiv = document.createElement('div');\n dummyDiv.innerHTML =\n '<div class=\"hs-dummy-scrollbar-size\"><div style=\"height: 200%; width: 200%; margin: 10px 0;\"></div></div>';\n const scrollbarDummyEl = dummyDiv.firstElementChild;\n document.body.appendChild(scrollbarDummyEl);\n const dummyContainerChild = scrollbarDummyEl.firstElementChild;\n scrollbarDummyEl.scrollLeft = 0;\n const dummyContainerOffset = SimpleBar.getOffset(scrollbarDummyEl);\n const dummyContainerChildOffset = SimpleBar.getOffset(dummyContainerChild);\n scrollbarDummyEl.scrollLeft = 999;\n const dummyContainerScrollOffsetAfterScroll = SimpleBar.getOffset(\n dummyContainerChild\n );\n\n return {\n // determines if the scrolling is responding with negative values\n isRtlScrollingInverted:\n dummyContainerOffset.left !== dummyContainerChildOffset.left &&\n dummyContainerChildOffset.left -\n dummyContainerScrollOffsetAfterScroll.left !==\n 0,\n // determines if the origin scrollbar position is inverted or not (positioned on left or right)\n isRtlScrollbarInverted:\n dummyContainerOffset.left !== dummyContainerChildOffset.left\n };\n }\n\n static defaultOptions = {\n autoHide: true,\n forceVisible: false,\n clickOnTrack: true,\n classNames: {\n contentEl: 'simplebar-content',\n contentWrapper: 'simplebar-content-wrapper',\n offset: 'simplebar-offset',\n mask: 'simplebar-mask',\n wrapper: 'simplebar-wrapper',\n placeholder: 'simplebar-placeholder',\n scrollbar: 'simplebar-scrollbar',\n track: 'simplebar-track',\n heightAutoObserverWrapperEl: 'simplebar-height-auto-observer-wrapper',\n heightAutoObserverEl: 'simplebar-height-auto-observer',\n visible: 'simplebar-visible',\n horizontal: 'simplebar-horizontal',\n vertical: 'simplebar-vertical',\n hover: 'simplebar-hover',\n dragging: 'simplebar-dragging'\n },\n scrollbarMinSize: 25,\n scrollbarMaxSize: 0,\n timeout: 1000\n };\n\n static getOffset(el) {\n const rect = el.getBoundingClientRect();\n const elDocument = getElementDocument(el);\n const elWindow = getElementWindow(el);\n\n return {\n top:\n rect.top +\n (elWindow.pageYOffset || elDocument.documentElement.scrollTop),\n left:\n rect.left +\n (elWindow.pageXOffset || elDocument.documentElement.scrollLeft)\n };\n }\n\n static instances = new WeakMap();\n\n init() {\n // Save a reference to the instance, so we know this DOM node has already been instancied\n SimpleBar.instances.set(this.el, this);\n\n // We stop here on server-side\n if (canUseDOM) {\n this.initDOM();\n\n this.scrollbarWidth = this.getScrollbarWidth();\n\n this.recalculate();\n\n this.initListeners();\n }\n }\n\n initDOM() {\n // make sure this element doesn't have the elements yet\n if (\n Array.prototype.filter.call(this.el.children, child =>\n child.classList.contains(this.classNames.wrapper)\n ).length\n ) {\n // assume that element has his DOM already initiated\n this.wrapperEl = this.el.querySelector(`.${this.classNames.wrapper}`);\n this.contentWrapperEl =\n this.options.scrollableNode ||\n this.el.querySelector(`.${this.classNames.contentWrapper}`);\n this.contentEl =\n this.options.contentNode ||\n this.el.querySelector(`.${this.classNames.contentEl}`);\n\n this.offsetEl = this.el.querySelector(`.${this.classNames.offset}`);\n this.maskEl = this.el.querySelector(`.${this.classNames.mask}`);\n\n this.placeholderEl = this.findChild(\n this.wrapperEl,\n `.${this.classNames.placeholder}`\n );\n this.heightAutoObserverWrapperEl = this.el.querySelector(\n `.${this.classNames.heightAutoObserverWrapperEl}`\n );\n this.heightAutoObserverEl = this.el.querySelector(\n `.${this.classNames.heightAutoObserverEl}`\n );\n this.axis.x.track.el = this.findChild(\n this.el,\n `.${this.classNames.track}.${this.classNames.horizontal}`\n );\n this.axis.y.track.el = this.findChild(\n this.el,\n `.${this.classNames.track}.${this.classNames.vertical}`\n );\n } else {\n // Prepare DOM\n this.wrapperEl = document.createElement('div');\n this.contentWrapperEl = document.createElement('div');\n this.offsetEl = document.createElement('div');\n this.maskEl = document.createElement('div');\n this.contentEl = document.createElement('div');\n this.placeholderEl = document.createElement('div');\n this.heightAutoObserverWrapperEl = document.createElement('div');\n this.heightAutoObserverEl = document.createElement('div');\n\n this.wrapperEl.classList.add(this.classNames.wrapper);\n this.contentWrapperEl.classList.add(this.classNames.contentWrapper);\n this.offsetEl.classList.add(this.classNames.offset);\n this.maskEl.classList.add(this.classNames.mask);\n this.contentEl.classList.add(this.classNames.contentEl);\n this.placeholderEl.classList.add(this.classNames.placeholder);\n this.heightAutoObserverWrapperEl.classList.add(\n this.classNames.heightAutoObserverWrapperEl\n );\n this.heightAutoObserverEl.classList.add(\n this.classNames.heightAutoObserverEl\n );\n\n while (this.el.firstChild) {\n this.contentEl.appendChild(this.el.firstChild);\n }\n\n this.contentWrapperEl.appendChild(this.contentEl);\n this.offsetEl.appendChild(this.contentWrapperEl);\n this.maskEl.appendChild(this.offsetEl);\n this.heightAutoObserverWrapperEl.appendChild(this.heightAutoObserverEl);\n this.wrapperEl.appendChild(this.heightAutoObserverWrapperEl);\n this.wrapperEl.appendChild(this.maskEl);\n this.wrapperEl.appendChild(this.placeholderEl);\n this.el.appendChild(this.wrapperEl);\n }\n\n if (!this.axis.x.track.el || !this.axis.y.track.el) {\n const track = document.createElement('div');\n const scrollbar = document.createElement('div');\n\n track.classList.add(this.classNames.track);\n scrollbar.classList.add(this.classNames.scrollbar);\n\n track.appendChild(scrollbar);\n\n this.axis.x.track.el = track.cloneNode(true);\n this.axis.x.track.el.classList.add(this.classNames.horizontal);\n\n this.axis.y.track.el = track.cloneNode(true);\n this.axis.y.track.el.classList.add(this.classNames.vertical);\n\n this.el.appendChild(this.axis.x.track.el);\n this.el.appendChild(this.axis.y.track.el);\n }\n\n this.axis.x.scrollbar.el = this.axis.x.track.el.querySelector(\n `.${this.classNames.scrollbar}`\n );\n this.axis.y.scrollbar.el = this.axis.y.track.el.querySelector(\n `.${this.classNames.scrollbar}`\n );\n\n if (!this.options.autoHide) {\n this.axis.x.scrollbar.el.classList.add(this.classNames.visible);\n this.axis.y.scrollbar.el.classList.add(this.classNames.visible);\n }\n\n this.el.setAttribute('data-simplebar', 'init');\n }\n\n initListeners() {\n const elWindow = getElementWindow(this.el);\n // Event listeners\n if (this.options.autoHide) {\n this.el.addEventListener('mouseenter', this.onMouseEnter);\n }\n\n ['mousedown', 'click', 'dblclick'].forEach(e => {\n this.el.addEventListener(e, this.onPointerEvent, true);\n });\n\n ['touchstart', 'touchend', 'touchmove'].forEach(e => {\n this.el.addEventListener(e, this.onPointerEvent, {\n capture: true,\n passive: true\n });\n });\n\n this.el.addEventListener('mousemove', this.onMouseMove);\n this.el.addEventListener('mouseleave', this.onMouseLeave);\n\n this.contentWrapperEl.addEventListener('scroll', this.onScroll);\n\n // Browser zoom triggers a window resize\n elWindow.addEventListener('resize', this.onWindowResize);\n\n // Hack for https://github.com/WICG/ResizeObserver/issues/38\n let resizeObserverStarted = false;\n const resizeObserver = elWindow.ResizeObserver || ResizeObserver;\n this.resizeObserver = new resizeObserver(() => {\n if (!resizeObserverStarted) return;\n this.recalculate();\n });\n\n this.resizeObserver.observe(this.el);\n this.resizeObserver.observe(this.contentEl);\n\n elWindow.requestAnimationFrame(() => {\n resizeObserverStarted = true;\n });\n\n // This is required to detect horizontal scroll. Vertical scroll only needs the resizeObserver.\n this.mutationObserver = new elWindow.MutationObserver(this.recalculate);\n\n this.mutationObserver.observe(this.contentEl, {\n childList: true,\n subtree: true,\n characterData: true\n });\n }\n\n recalculate() {\n const elWindow = getElementWindow(this.el);\n this.elStyles = elWindow.getComputedStyle(this.el);\n this.isRtl = this.elStyles.direction === 'rtl';\n\n const contentElOffsetWidth = this.contentEl.offsetWidth;\n\n const isHeightAuto = this.heightAutoObserverEl.offsetHeight <= 1;\n const isWidthAuto =\n this.heightAutoObserverEl.offsetWidth <= 1 || contentElOffsetWidth > 0;\n\n const contentWrapperElOffsetWidth = this.contentWrapperEl.offsetWidth;\n\n const elOverflowX = this.elStyles.overflowX;\n const elOverflowY = this.elStyles.overflowY;\n\n this.contentEl.style.padding = `${this.elStyles.paddingTop} ${this.elStyles.paddingRight} ${this.elStyles.paddingBottom} ${this.elStyles.paddingLeft}`;\n this.wrapperEl.style.margin = `-${this.elStyles.paddingTop} -${this.elStyles.paddingRight} -${this.elStyles.paddingBottom} -${this.elStyles.paddingLeft}`;\n\n const contentElScrollHeight = this.contentEl.scrollHeight;\n const contentElScrollWidth = this.contentEl.scrollWidth;\n\n this.contentWrapperEl.style.height = isHeightAuto ? 'auto' : '100%';\n\n // Determine placeholder size\n this.placeholderEl.style.width = isWidthAuto\n ? `${contentElOffsetWidth || contentElScrollWidth}px`\n : 'auto';\n this.placeholderEl.style.height = `${contentElScrollHeight}px`;\n\n const contentWrapperElOffsetHeight = this.contentWrapperEl.offsetHeight;\n\n this.axis.x.isOverflowing =\n contentElOffsetWidth !== 0 && contentElScrollWidth > contentElOffsetWidth;\n this.axis.y.isOverflowing =\n contentElScrollHeight > contentWrapperElOffsetHeight;\n\n // Set isOverflowing to false if user explicitely set hidden overflow\n this.axis.x.isOverflowing =\n elOverflowX === 'hidden' ? false : this.axis.x.isOverflowing;\n this.axis.y.isOverflowing =\n elOverflowY === 'hidden' ? false : this.axis.y.isOverflowing;\n\n this.axis.x.forceVisible =\n this.options.forceVisible === 'x' || this.options.forceVisible === true;\n this.axis.y.forceVisible =\n this.options.forceVisible === 'y' || this.options.forceVisible === true;\n\n this.hideNativeScrollbar();\n\n // Set isOverflowing to false if scrollbar is not necessary (content is shorter than offset)\n let offsetForXScrollbar = this.axis.x.isOverflowing\n ? this.scrollbarWidth\n : 0;\n let offsetForYScrollbar = this.axis.y.isOverflowing\n ? this.scrollbarWidth\n : 0;\n\n this.axis.x.isOverflowing =\n this.axis.x.isOverflowing &&\n contentElScrollWidth > contentWrapperElOffsetWidth - offsetForYScrollbar;\n this.axis.y.isOverflowing =\n this.axis.y.isOverflowing &&\n contentElScrollHeight >\n contentWrapperElOffsetHeight - offsetForXScrollbar;\n\n this.axis.x.scrollbar.size = this.getScrollbarSize('x');\n this.axis.y.scrollbar.size = this.getScrollbarSize('y');\n\n this.axis.x.scrollbar.el.style.width = `${this.axis.x.scrollbar.size}px`;\n this.axis.y.scrollbar.el.style.height = `${this.axis.y.scrollbar.size}px`;\n\n this.positionScrollbar('x');\n this.positionScrollbar('y');\n\n this.toggleTrackVisibility('x');\n this.toggleTrackVisibility('y');\n }\n\n /**\n * Calculate scrollbar size\n */\n getScrollbarSize(axis = 'y') {\n if (!this.axis[axis].isOverflowing) {\n return 0;\n }\n\n const contentSize = this.contentEl[this.axis[axis].scrollSizeAttr];\n const trackSize = this.axis[axis].track.el[this.axis[axis].offsetSizeAttr];\n let scrollbarSize;\n\n let scrollbarRatio = trackSize / contentSize;\n\n // Calculate new height/position of drag handle.\n scrollbarSize = Math.max(\n ~~(scrollbarRatio * trackSize),\n this.options.scrollbarMinSize\n );\n\n if (this.options.scrollbarMaxSize) {\n scrollbarSize = Math.min(scrollbarSize, this.options.scrollbarMaxSize);\n }\n\n return scrollbarSize;\n }\n\n positionScrollbar(axis = 'y') {\n if (!this.axis[axis].isOverflowing) {\n return;\n }\n\n const contentSize = this.contentWrapperEl[this.axis[axis].scrollSizeAttr];\n const trackSize = this.axis[axis].track.el[this.axis[axis].offsetSizeAttr];\n const hostSize = parseInt(this.elStyles[this.axis[axis].sizeAttr], 10);\n const scrollbar = this.axis[axis].scrollbar;\n\n let scrollOffset = this.contentWrapperEl[this.axis[axis].scrollOffsetAttr];\n scrollOffset =\n axis === 'x' &&\n this.isRtl &&\n SimpleBar.getRtlHelpers().isRtlScrollingInverted\n ? -scrollOffset\n : scrollOffset;\n let scrollPourcent = scrollOffset / (contentSize - hostSize);\n\n let handleOffset = ~~((trackSize - scrollbar.size) * scrollPourcent);\n handleOffset =\n axis === 'x' &&\n this.isRtl &&\n SimpleBar.getRtlHelpers().isRtlScrollbarInverted\n ? handleOffset + (trackSize - scrollbar.size)\n : handleOffset;\n\n scrollbar.el.style.transform =\n axis === 'x'\n ? `translate3d(${handleOffset}px, 0, 0)`\n : `translate3d(0, ${handleOffset}px, 0)`;\n }\n\n toggleTrackVisibility(axis = 'y') {\n const track = this.axis[axis].track.el;\n const scrollbar = this.axis[axis].scrollbar.el;\n\n if (this.axis[axis].isOverflowing || this.axis[axis].forceVisible) {\n track.style.visibility = 'visible';\n this.contentWrapperEl.style[this.axis[axis].overflowAttr] = 'scroll';\n } else {\n track.style.visibility = 'hidden';\n this.contentWrapperEl.style[this.axis[axis].overflowAttr] = 'hidden';\n }\n\n // Even if forceVisible is enabled, scrollbar itself should be hidden\n if (this.axis[axis].isOverflowing) {\n scrollbar.style.display = 'block';\n } else {\n scrollbar.style.display = 'none';\n }\n }\n\n hideNativeScrollbar() {\n this.offsetEl.style[this.isRtl ? 'left' : 'right'] =\n this.axis.y.isOverflowing || this.axis.y.forceVisible\n ? `-${this.scrollbarWidth}px`\n : 0;\n this.offsetEl.style.bottom =\n this.axis.x.isOverflowing || this.axis.x.forceVisible\n ? `-${this.scrollbarWidth}px`\n : 0;\n }\n\n /**\n * On scroll event handling\n */\n onScroll = () => {\n const elWindow = getElementWindow(this.el);\n if (!this.scrollXTicking) {\n elWindow.requestAnimationFrame(this.scrollX);\n this.scrollXTicking = true;\n }\n\n if (!this.scrollYTicking) {\n elWindow.requestAnimationFrame(this.scrollY);\n this.scrollYTicking = true;\n }\n };\n\n scrollX = () => {\n if (this.axis.x.isOverflowing) {\n this.showScrollbar('x');\n this.positionScrollbar('x');\n }\n\n this.scrollXTicking = false;\n };\n\n scrollY = () => {\n if (this.axis.y.isOverflowing) {\n this.showScrollbar('y');\n this.positionScrollbar('y');\n }\n\n this.scrollYTicking = false;\n };\n\n onMouseEnter = () => {\n this.showScrollbar('x');\n this.showScrollbar('y');\n };\n\n onMouseMove = e => {\n this.mouseX = e.clientX;\n this.mouseY = e.clientY;\n\n if (this.axis.x.isOverflowing || this.axis.x.forceVisible) {\n this.onMouseMoveForAxis('x');\n }\n\n if (this.axis.y.isOverflowing || this.axis.y.forceVisible) {\n this.onMouseMoveForAxis('y');\n }\n };\n\n onMouseMoveForAxis(axis = 'y') {\n this.axis[axis].track.rect = this.axis[\n axis\n ].track.el.getBoundingClientRect();\n this.axis[axis].scrollbar.rect = this.axis[\n axis\n ].scrollbar.el.getBoundingClientRect();\n\n const isWithinScrollbarBoundsX = this.isWithinBounds(\n this.axis[axis].scrollbar.rect\n );\n\n if (isWithinScrollbarBoundsX) {\n this.axis[axis].scrollbar.el.classList.add(this.classNames.hover);\n } else {\n this.axis[axis].scrollbar.el.classList.remove(this.classNames.hover);\n }\n\n if (this.isWithinBounds(this.axis[axis].track.rect)) {\n this.showScrollbar(axis);\n this.axis[axis].track.el.classList.add(this.classNames.hover);\n } else {\n this.axis[axis].track.el.classList.remove(this.classNames.hover);\n }\n }\n\n onMouseLeave = () => {\n this.onMouseMove.cancel();\n\n if (this.axis.x.isOverflowing || this.axis.x.forceVisible) {\n this.onMouseLeaveForAxis('x');\n }\n\n if (this.axis.y.isOverflowing || this.axis.y.forceVisible) {\n this.onMouseLeaveForAxis('y');\n }\n\n this.mouseX = -1;\n this.mouseY = -1;\n };\n\n onMouseLeaveForAxis(axis = 'y') {\n this.axis[axis].track.el.classList.remove(this.classNames.hover);\n this.axis[axis].scrollbar.el.classList.remove(this.classNames.hover);\n }\n\n onWindowResize = () => {\n // Recalculate scrollbarWidth in case it's a zoom\n this.scrollbarWidth = this.getScrollbarWidth();\n\n this.hideNativeScrollbar();\n };\n\n /**\n * Show scrollbar\n */\n showScrollbar(axis = 'y') {\n let scrollbar = this.axis[axis].scrollbar.el;\n\n if (!this.axis[axis].isVisible) {\n scrollbar.classList.add(this.classNames.visible);\n this.axis[axis].isVisible = true;\n }\n\n if (this.options.autoHide) {\n this.hideScrollbars();\n }\n }\n\n /**\n * Hide Scrollbar\n */\n hideScrollbars = () => {\n this.axis.x.track.rect = this.axis.x.track.el.getBoundingClientRect();\n this.axis.y.track.rect = this.axis.y.track.el.getBoundingClientRect();\n\n if (!this.isWithinBounds(this.axis.y.track.rect)) {\n this.axis.y.scrollbar.el.classList.remove(this.classNames.visible);\n this.axis.y.isVisible = false;\n }\n\n if (!this.isWithinBounds(this.axis.x.track.rect)) {\n this.axis.x.scrollbar.el.classList.remove(this.classNames.visible);\n this.axis.x.isVisible = false;\n }\n };\n\n onPointerEvent = e => {\n let isWithinTrackXBounds, isWithinTrackYBounds;\n\n this.axis.x.track.rect = this.axis.x.track.el.getBoundingClientRect();\n this.axis.y.track.rect = this.axis.y.track.el.getBoundingClientRect();\n\n if (this.axis.x.isOverflowing || this.axis.x.forceVisible) {\n isWithinTrackXBounds = this.isWithinBounds(this.axis.x.track.rect);\n }\n\n if (this.axis.y.isOverflowing || this.axis.y.forceVisible) {\n isWithinTrackYBounds = this.isWithinBounds(this.axis.y.track.rect);\n }\n\n // If any pointer event is called on the scrollbar\n if (isWithinTrackXBounds || isWithinTrackYBounds) {\n // Preventing the event's default action stops text being\n // selectable during the drag.\n e.preventDefault();\n // Prevent event leaking\n e.stopPropagation();\n\n if (e.type === 'mousedown') {\n if (isWithinTrackXBounds) {\n this.axis.x.scrollbar.rect = this.axis.x.scrollbar.el.getBoundingClientRect();\n\n if (this.isWithinBounds(this.axis.x.scrollbar.rect)) {\n this.onDragStart(e, 'x');\n } else {\n this.onTrackClick(e, 'x');\n }\n }\n\n if (isWithinTrackYBounds) {\n this.axis.y.scrollbar.rect = this.axis.y.scrollbar.el.getBoundingClientRect();\n\n if (this.isWithinBounds(this.axis.y.scrollbar.rect)) {\n this.onDragStart(e, 'y');\n } else {\n this.onTrackClick(e, 'y');\n }\n }\n }\n }\n };\n\n /**\n * on scrollbar handle drag movement starts\n */\n onDragStart(e, axis = 'y') {\n const elDocument = getElementDocument(this.el);\n const elWindow = getElementWindow(this.el);\n const scrollbar = this.axis[axis].scrollbar;\n\n // Measure how far the user's mouse is from the top of the scrollbar drag handle.\n const eventOffset = axis === 'y' ? e.pageY : e.pageX;\n this.axis[axis].dragOffset =\n eventOffset - scrollbar.rect[this.axis[axis].offsetAttr];\n this.draggedAxis = axis;\n\n this.el.classList.add(this.classNames.dragging);\n\n elDocument.addEventListener('mousemove', this.drag, true);\n elDocument.addEventListener('mouseup', this.onEndDrag, true);\n if (this.removePreventClickId === null) {\n elDocument.addEventListener('click', this.preventClick, true);\n elDocument.addEventListener('dblclick', this.preventClick, true);\n } else {\n elWindow.clearTimeout(this.removePreventClickId);\n this.removePreventClickId = null;\n }\n }\n\n /**\n * Drag scrollbar handle\n */\n drag = e => {\n let eventOffset;\n const track = this.axis[this.draggedAxis].track;\n const trackSize = track.rect[this.axis[this.draggedAxis].sizeAttr];\n const scrollbar = this.axis[this.draggedAxis].scrollbar;\n const contentSize = this.contentWrapperEl[\n this.axis[this.draggedAxis].scrollSizeAttr\n ];\n const hostSize = parseInt(\n this.elStyles[this.axis[this.draggedAxis].sizeAttr],\n 10\n );\n\n e.preventDefault();\n e.stopPropagation();\n\n if (this.draggedAxis === 'y') {\n eventOffset = e.pageY;\n } else {\n eventOffset = e.pageX;\n }\n\n // Calculate how far the user's mouse is from the top/left of the scrollbar (minus the dragOffset).\n let dragPos =\n eventOffset -\n track.rect[this.axis[this.draggedAxis].offsetAttr] -\n this.axis[this.draggedAxis].dragOffset;\n // Convert the mouse position into a percentage of the scrollbar height/width.\n let dragPerc = dragPos / (trackSize - scrollbar.size);\n\n // Scroll the content by the same percentage.\n let scrollPos = dragPerc * (contentSize - hostSize);\n\n // Fix browsers inconsistency on RTL\n if (this.draggedAxis === 'x') {\n scrollPos =\n this.isRtl && SimpleBar.getRtlHelpers().isRtlScrollbarInverted\n ? scrollPos - (trackSize + scrollbar.size)\n : scrollPos;\n scrollPos =\n this.isRtl && SimpleBar.getRtlHelpers().isRtlScrollingInverted\n ? -scrollPos\n : scrollPos;\n }\n\n this.contentWrapperEl[\n this.axis[this.draggedAxis].scrollOffsetAttr\n ] = scrollPos;\n };\n\n /**\n * End scroll handle drag\n */\n onEndDrag = e => {\n const elDocument = getElementDocument(this.el);\n const elWindow = getElementWindow(this.el);\n e.preventDefault();\n e.stopPropagation();\n\n this.el.classList.remove(this.classNames.dragging);\n\n elDocument.removeEventListener('mousemove', this.drag, true);\n elDocument.removeEventListener('mouseup', this.onEndDrag, true);\n this.removePreventClickId = elWindow.setTimeout(() => {\n // Remove these asynchronously so we still suppress click events\n // generated simultaneously with mouseup.\n elDocument.removeEventListener('click', this.preventClick, true);\n elDocument.removeEventListener('dblclick', this.preventClick, true);\n this.removePreventClickId = null;\n });\n };\n\n /**\n * Handler to ignore click events during drag\n */\n preventClick = e => {\n e.preventDefault();\n e.stopPropagation();\n };\n\n onTrackClick(e, axis = 'y') {\n if (!this.options.clickOnTrack) return;\n\n const elWindow = getElementWindow(this.el);\n this.axis[axis].scrollbar.rect = this.axis[\n axis\n ].scrollbar.el.getBoundingClientRect();\n const scrollbar = this.axis[axis].scrollbar;\n const scrollbarOffset = scrollbar.rect[this.axis[axis].offsetAttr];\n const hostSize = parseInt(this.elStyles[this.axis[axis].sizeAttr], 10);\n let scrolled = this.contentWrapperEl[this.axis[axis].scrollOffsetAttr];\n const t =\n axis === 'y'\n ? this.mouseY - scrollbarOffset\n : this.mouseX - scrollbarOffset;\n const dir = t < 0 ? -1 : 1;\n const scrollSize = dir === -1 ? scrolled - hostSize : scrolled + hostSize;\n const speed = 40;\n\n const scrollTo = () => {\n if (dir === -1) {\n if (scrolled > scrollSize) {\n scrolled -= speed;\n this.contentWrapperEl.scrollTo({\n [this.axis[axis].offsetAttr]: scrolled\n });\n elWindow.requestAnimationFrame(scrollTo);\n }\n } else {\n if (scrolled < scrollSize) {\n scrolled += speed;\n this.contentWrapperEl.scrollTo({\n [this.axis[axis].offsetAttr]: scrolled\n });\n elWindow.requestAnimationFrame(scrollTo);\n }\n }\n };\n\n scrollTo();\n }\n\n /**\n * Getter for content element\n */\n getContentElement() {\n return this.contentEl;\n }\n\n /**\n * Getter for original scrolling element\n */\n getScrollElement() {\n return this.contentWrapperEl;\n }\n\n getScrollbarWidth() {\n // Try/catch for FF 56 throwing on undefined computedStyles\n try {\n // Detect browsers supporting CSS scrollbar styling and do not calculate\n if (\n getComputedStyle(this.contentWrapperEl, '::-webkit-scrollbar')\n .display === 'none' ||\n 'scrollbarWidth' in document.documentElement.style ||\n '-ms-overflow-style' in document.documentElement.style\n ) {\n return 0;\n } else {\n return scrollbarWidth();\n }\n } catch (e) {\n return scrollbarWidth();\n }\n }\n\n removeListeners() {\n const elWindow = getElementWindow(this.el);\n // Event listeners\n if (this.options.autoHide) {\n this.el.removeEventListener('mouseenter', this.onMouseEnter);\n }\n\n ['mousedown', 'click', 'dblclick'].forEach(e => {\n this.el.removeEventListener(e, this.onPointerEvent, true);\n });\n\n ['touchstart', 'touchend', 'touchmove'].forEach(e => {\n this.el.removeEventListener(e, this.onPointerEvent, {\n capture: true,\n passive: true\n });\n });\n\n this.el.removeEventListener('mousemove', this.onMouseMove);\n this.el.removeEventListener('mouseleave', this.onMouseLeave);\n\n this.contentWrapperEl.removeEventListener('scroll', this.onScroll);\n elWindow.removeEventListener('resize', this.onWindowResize);\n\n this.mutationObserver.disconnect();\n this.resizeObserver.disconnect();\n\n // Cancel all debounced functions\n this.recalculate.cancel();\n this.onMouseMove.cancel();\n this.hideScrollbars.cancel();\n this.onWindowResize.cancel();\n }\n\n /**\n * UnMount mutation observer and delete SimpleBar instance from DOM element\n */\n unMount() {\n this.removeListeners();\n SimpleBar.instances.delete(this.el);\n }\n\n /**\n * Check if mouse is within bounds\n */\n isWithinBounds(bbox) {\n return (\n this.mouseX >= bbox.left &&\n this.mouseX <= bbox.left + bbox.width &&\n this.mouseY >= bbox.top &&\n this.mouseY <= bbox.top + bbox.height\n );\n }\n\n /**\n * Find element children matches query\n */\n findChild(el, query) {\n const matches =\n el.matches ||\n el.webkitMatchesSelector ||\n el.mozMatchesSelector ||\n el.msMatchesSelector;\n return Array.prototype.filter.call(el.children, child =>\n matches.call(child, query)\n )[0];\n }\n}\n","import canUseDOM from 'can-use-dom';\n\nimport SimpleBar from './simplebar';\nimport { getOptions } from './helpers';\n\nSimpleBar.initDOMLoadedElements = function() {\n document.removeEventListener('DOMContentLoaded', this.initDOMLoadedElements);\n window.removeEventListener('load', this.initDOMLoadedElements);\n\n Array.prototype.forEach.call(\n document.querySelectorAll('[data-simplebar]'),\n el => {\n if (\n el.getAttribute('data-simplebar') !== 'init' &&\n !SimpleBar.instances.has(el)\n )\n new SimpleBar(el, getOptions(el.attributes));\n }\n );\n};\n\nSimpleBar.removeObserver = function() {\n this.globalObserver.disconnect();\n};\n\nSimpleBar.initHtmlApi = function() {\n this.initDOMLoadedElements = this.initDOMLoadedElements.bind(this);\n\n // MutationObserver is IE11+\n if (typeof MutationObserver !== 'undefined') {\n // Mutation observer to observe dynamically added elements\n this.globalObserver = new MutationObserver(SimpleBar.handleMutations);\n\n this.globalObserver.observe(document, { childList: true, subtree: true });\n }\n\n // Taken from jQuery `ready` function\n // Instantiate elements already present on the page\n if (\n document.readyState === 'complete' ||\n (document.readyState !== 'loading' && !document.documentElement.doScroll)\n ) {\n // Handle it asynchronously to allow scripts the opportunity to delay init\n window.setTimeout(this.initDOMLoadedElements);\n } else {\n document.addEventListener('DOMContentLoaded', this.initDOMLoadedElements);\n window.addEventListener('load', this.initDOMLoadedElements);\n }\n};\n\nSimpleBar.handleMutations = mutations => {\n mutations.forEach(mutation => {\n Array.prototype.forEach.call(mutation.addedNodes, addedNode => {\n if (addedNode.nodeType === 1) {\n if (addedNode.hasAttribute('data-simplebar')) {\n !SimpleBar.instances.has(addedNode) &&\n new SimpleBar(addedNode, getOptions(addedNode.attributes));\n } else {\n Array.prototype.forEach.call(\n addedNode.querySelectorAll('[data-simplebar]'),\n function(el) {\n if (\n el.getAttribute('data-simplebar') !== 'init' &&\n !SimpleBar.instances.has(el)\n )\n new SimpleBar(el, getOptions(el.attributes));\n }\n );\n }\n }\n });\n\n Array.prototype.forEach.call(mutation.removedNodes, removedNode => {\n if (removedNode.nodeType === 1) {\n if (removedNode.hasAttribute('[data-simplebar=\"init\"]')) {\n SimpleBar.instances.has(removedNode) &&\n SimpleBar.instances.get(removedNode).unMount();\n } else {\n Array.prototype.forEach.call(\n removedNode.querySelectorAll('[data-simplebar=\"init\"]'),\n el => {\n SimpleBar.instances.has(el) &&\n SimpleBar.instances.get(el).unMount();\n }\n );\n }\n }\n });\n });\n};\n\nSimpleBar.getOptions = getOptions;\n\n/**\n * HTML API\n * Called only in a browser env.\n */\nif (canUseDOM) {\n SimpleBar.initHtmlApi();\n}\n\nexport default SimpleBar;\n"],"names":["cachedScrollbarWidth","cachedDevicePixelRatio","canUseDOM","window","addEventListener","devicePixelRatio","scrollbarWidth","document","body","box","createElement","classList","add","appendChild","width","getBoundingClientRect","right","removeChild","getOptions","obj","options","Array","prototype","reduce","call","acc","attribute","option","name","match","key","replace","x","chr","toUpperCase","value","undefined","getElementWindow","element","ownerDocument","defaultView","getElementDocument","SimpleBar","onScroll","elWindow","el","scrollXTicking","requestAnimationFrame","scrollX","scrollYTicking","scrollY","axis","isOverflowing","showScrollbar","positionScrollbar","y","onMouseEnter","onMouseMove","e","mouseX","clientX","mouseY","clientY","forceVisible","onMouseMoveForAxis","onMouseLeave","cancel","onMouseLeaveForAxis","onWindowResize","getScrollbarWidth","hideNativeScrollbar","hideScrollbars","track","rect","isWithinBounds","scrollbar","remove","classNames","visible","isVisible","onPointerEvent","isWithinTrackXBounds","isWithinTrackYBounds","preventDefault","stopPropagation","type","onDragStart","onTrackClick","drag","eventOffset","draggedAxis","trackSize","sizeAttr","contentSize","contentWrapperEl","scrollSizeAttr","hostSize","parseInt","elStyles","pageY","pageX","dragPos","offsetAttr","dragOffset","dragPerc","size","scrollPos","isRtl","getRtlHelpers","isRtlScrollbarInverted","isRtlScrollingInverted","scrollOffsetAttr","onEndDrag","elDocument","dragging","removeEventListener","removePreventClickId","setTimeout","preventClick","minScrollbarWidth","defaultOptions","offsetSizeAttr","overflowAttr","instances","has","recalculate","throttle","bind","debounce","timeout","leading","memoize","init","dummyDiv","innerHTML","scrollbarDummyEl","firstElementChild","dummyContainerChild","scrollLeft","dummyContainerOffset","getOffset","dummyContainerChildOffset","dummyContainerScrollOffsetAfterScroll","left","top","pageYOffset","documentElement","scrollTop","pageXOffset","set","initDOM","initListeners","filter","children","child","contains","wrapper","length","wrapperEl","querySelector","scrollableNode","contentWrapper","contentEl","contentNode","offsetEl","offset","maskEl","mask","placeholderEl","findChild","placeholder","heightAutoObserverWrapperEl","heightAutoObserverEl","horizontal","vertical","firstChild","cloneNode","autoHide","setAttribute","forEach","capture","passive","resizeObserverStarted","resizeObserver","ResizeObserver","observe","mutationObserver","MutationObserver","childList","subtree","characterData","getComputedStyle","direction","contentElOffsetWidth","offsetWidth","isHeightAuto","offsetHeight","isWidthAuto","contentWrapperElOffsetWidth","elOverflowX","overflowX","elOverflowY","overflowY","style","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","margin","contentElScrollHeight","scrollHeight","contentElScrollWidth","scrollWidth","height","contentWrapperElOffsetHeight","offsetForXScrollbar","offsetForYScrollbar","getScrollbarSize","toggleTrackVisibility","scrollbarSize","scrollbarRatio","Math","max","scrollbarMinSize","scrollbarMaxSize","min","scrollOffset","scrollPourcent","handleOffset","transform","visibility","display","bottom","isWithinScrollbarBoundsX","hover","clearTimeout","clickOnTrack","scrollbarOffset","scrolled","t","dir","scrollSize","speed","scrollTo","getContentElement","getScrollElement","removeListeners","disconnect","unMount","delete","bbox","query","matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","WeakMap","initDOMLoadedElements","querySelectorAll","getAttribute","attributes","removeObserver","globalObserver","initHtmlApi","handleMutations","readyState","doScroll","mutations","mutation","addedNodes","addedNode","nodeType","hasAttribute","removedNodes","removedNode","get"],"mappings":"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"}
\No newline at end of file