{"version":3,"file":"bootstrap-drawer.js","sources":["../../src/js/util.js","../../src/js/drawer.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\nconst TRANSITION_END = 'transitionend'\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nfunction toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\nfunction getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n }\n return undefined // eslint-disable-line no-undefined\n }\n }\n}\n\nfunction transitionEndEmulator(duration) {\n let called = false\n\n $(this).one(Util.TRANSITION_END, () => {\n called = true\n })\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this)\n }\n }, duration)\n\n return this\n}\n\nfunction setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst Util = {\n\n TRANSITION_END: 'bsTransitionEnd',\n\n getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n return prefix\n },\n\n getSelectorFromElement(element) {\n let selector = element.getAttribute('data-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''\n }\n\n try {\n return document.querySelector(selector) ? selector : null\n } catch (err) {\n return null\n }\n },\n\n getTransitionDurationFromElement(element) {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let transitionDuration = $(element).css('transition-duration')\n let transitionDelay = $(element).css('transition-delay')\n\n const floatTransitionDuration = parseFloat(transitionDuration)\n const floatTransitionDelay = parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n },\n\n reflow(element) {\n return element.offsetHeight\n },\n\n triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END)\n },\n\n // TODO: Remove in v5\n supportsTransitionEnd() {\n return Boolean(TRANSITION_END)\n },\n\n isElement(obj) {\n return (obj[0] || obj).nodeType\n },\n\n typeCheckConfig(componentName, config, configTypes) {\n for (const property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && Util.isElement(value)\n ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n }\n }\n },\n\n findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return Util.findShadowRoot(element.parentNode)\n }\n}\n\nsetTransitionEndSupport()\n\nexport default Util\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap-Drawer (v0.0.1): drawer.js\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'drawer'\n const VERSION = '0.0.1'\n const DATA_KEY = 'bs.drawer'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n\n const Default = {\n backdrop : true,\n keyboard : true,\n focus : true,\n show : true\n}\n\nconst DefaultType = {\n backdrop : '(boolean|string)',\n keyboard : 'boolean',\n focus : 'boolean',\n show : 'boolean'\n}\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n RESIZE : `resize${EVENT_KEY}`,\n CLICK_DISMISS : `click.dismiss${EVENT_KEY}`,\n KEYDOWN_DISMISS : `keydown.dismiss${EVENT_KEY}`,\n MOUSEUP_DISMISS : `mouseup.dismiss${EVENT_KEY}`,\n MOUSEDOWN_DISMISS : `mousedown.dismiss${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n SCROLLABLE : 'drawer-content-scrollable',\n SCROLLBAR_MEASURER : 'drawer-scrollbar-measure',\n BACKDROP : 'drawer-backdrop',\n SLIDE : 'slide',\n FADE : 'fade',\n SHOW : 'show',\n OPEN : 'drawer-open'\n}\n\nconst Selector = {\n CONTENT : '.drawer-content',\n MODAL_BODY : '.drawer-body',\n DATA_TOGGLE : '[data-toggle=\"drawer\"]',\n DATA_DISMISS : '[data-dismiss=\"drawer\"]',\n FIXED_CONTENT : '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT : '.sticky-top'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Drawer {\n constructor(element, config) {\n this._config = this._getConfig(config)\n this._element = element\n this._content = element.querySelector(Selector.CONTENT)\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollbarWidth = 0\n }\n\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning)\n return\n\n if ($(this._element).hasClass(ClassName.SLIDE))\n this._isTransitioning = true\n\n const showEvent = $.Event(Event.SHOW, {relatedTarget})\n\n $(this._element).trigger(showEvent)\n\n if (this._isShown || showEvent.isDefaultPrevented())\n return\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n this._setEscapeEvent()\n\n $(this._element).on(\n Event.CLICK_DISMISS,\n Selector.DATA_DISMISS,\n (event) => this.hide(event)\n )\n\n $(this._content).on(Event.MOUSEDOWN_DISMISS, () => {\n $(this._element).one(Event.MOUSEUP_DISMISS, (event) => {\n if ($(event.target).is(this._element))\n this._ignoreBackdropClick = true\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event)\n event.preventDefault()\n\n if (!this._isShown || this._isTransitioning)\n return\n\n const hideEvent = $.Event(Event.HIDE)\n\n $(this._element).trigger(hideEvent)\n\n if (!this._isShown || hideEvent.isDefaultPrevented())\n return\n\n this._isShown = false\n const transition = $(this._element).hasClass(ClassName.SLIDE)\n\n if (transition)\n this._isTransitioning = true\n\n this._setEscapeEvent()\n\n $(document).off(Event.FOCUSIN)\n\n $(this._element).removeClass(ClassName.SHOW)\n\n $(this._element).off(Event.CLICK_DISMISS)\n $(this._content).off(Event.MOUSEDOWN_DISMISS)\n\n if (transition){\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n $(this._element)\n .one(Util.TRANSITION_END, (event) => this._hideDrawer(event))\n .emulateTransitionEnd(transitionDuration)\n } else {\n this._hideDrawer()\n }\n\n }\n\n dispose() {\n [window, this._element, this._content]\n .forEach((htmlElement) => $(htmlElement).off(EVENT_KEY))\n\n $(document).off(Event.FOCUSIN)\n\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._element = null\n this._content = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n this._scrollbarWidth = null\n }\n\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const transition = $(this._element).hasClass(ClassName.SLIDE)\n\n if (!this._element.parentNode ||\n this._element.parentNode.nodeType !== Node.ELEMENT_NODE)\n document.body.appendChild(this._element)\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n\n if ($(this._content).hasClass(ClassName.SCROLLABLE))\n this._content.querySelector(Selector.MODAL_BODY).scrollTop = 0\n else\n this._element.scrollTop = 0\n\n if (transition)\n Util.reflow(this._element)\n\n $(this._element).addClass(ClassName.SHOW)\n\n if (this._config.focus)\n this._enforceFocus()\n\n const shownEvent = $.Event(Event.SHOWN, { relatedTarget })\n\n const transitionComplete = () => {\n if (this._config.focus)\n this._element.focus()\n this._isTransitioning = false\n $(this._element).trigger(shownEvent)\n }\n\n if (transition){\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, transitionComplete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n $(document)\n .off(Event.FOCUSIN) // Guard against infinite focus loop\n .on(Event.FOCUSIN, (event) => {\n if (document !== event.target &&\n this._element !== event.target &&\n $(this._element).has(event.target).length === 0) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown && this._config.keyboard) {\n $(document.body).on(Event.KEYDOWN_DISMISS, (event) => {\n if (event.which === ESCAPE_KEYCODE) {\n event.preventDefault()\n this.hide()\n }\n })\n } else if (!this._isShown) {\n $(document.body).off(Event.KEYDOWN_DISMISS)\n }\n }\n \n _hideDrawer() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._isTransitioning = false\n this._showBackdrop(() => {\n $(document.body).removeClass(ClassName.OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n $(this._element).trigger(Event.HIDDEN)\n })\n }\n\n _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove()\n this._backdrop = null\n }\n }\n \n _showBackdrop(callback) {\n const animate = $(this._element).hasClass(ClassName.SLIDE) ? ClassName.FADE : ''\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = ClassName.BACKDROP\n\n if (animate)\n this._backdrop.classList.add(animate)\n\n $(this._backdrop).appendTo(document.body)\n\n $(this._backdrop).on(Event.CLICK_DISMISS, (event) => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n\n if (event.target !== event.currentTarget)\n return\n\n if (this._config.backdrop === 'static')\n this._element.focus()\n else\n this.hide()\n })\n\n if (animate)\n Util.reflow(this._backdrop)\n\n $(this._backdrop).addClass(ClassName.SHOW)\n\n if (!callback)\n return\n\n if (!animate)\n return callback()\n\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callback)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(ClassName.SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n if (callback)\n callback()\n }\n\n if ($(this._element).hasClass(ClassName.SLIDE)) {\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callbackRemove)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else if (callback) {\n callback()\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = rect.left + rect.right < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n const fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT))\n const stickyContent = [].slice.call(document.querySelectorAll(Selector.STICKY_CONTENT))\n\n // Adjust fixed content padding\n $(fixedContent).each((index, element) => {\n const actualPadding = element.style.paddingRight\n const calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n })\n\n // Adjust sticky content margin\n $(stickyContent).each((index, element) => {\n const actualMargin = element.style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element)\n .data('margin-right', actualMargin)\n .css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = $(document.body).css('padding-right')\n $(document.body)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n }\n\n $(document.body).addClass(ClassName.OPEN)\n }\n\n _resetScrollbar() {\n const fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT))\n $(fixedContent).each((index, element) => {\n const padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n\n const elements = [].slice.call(document.querySelectorAll(`${Selector.STICKY_CONTENT}`))\n $(elements).each((index, element) => {\n const margin = $(element).data('margin-right')\n if (typeof margin !== 'undefined')\n $(element).css('margin-right', margin).removeData('margin-right')\n })\n\n const padding = $(document.body).data('padding-right')\n $(document.body).removeData('padding-right')\n document.body.style.paddingRight = padding ? padding : ''\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = ClassName.SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n\n // Static\n\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = {\n ...Default,\n ...$(this).data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data) {\n data = new Drawer(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config](relatedTarget)\n } else if (_config.show) {\n data.show(relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n let target\n const selector = Util.getSelectorFromElement(this)\n\n if (selector)\n target = document.querySelector(selector)\n\n const config = $(target).data(DATA_KEY)\n ? 'toggle' : {\n ...$(target).data(),\n ...$(this).data()\n }\n\n if (this.tagName === 'A' || this.tagName === 'AREA')\n event.preventDefault()\n\n const $target = $(target).one(Event.SHOW, (showEvent) => {\n if (showEvent.isDefaultPrevented())\n return\n\n $target.one(Event.HIDDEN, () => {\n if ($(this).is(':visible'))\n this.focus()\n })\n })\n\n Drawer._jQueryInterface.call($(target), config, this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Drawer._jQueryInterface\n$.fn[NAME].Constructor = Drawer\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Drawer._jQueryInterface\n}\n\nexport default Drawer"],"names":["TRANSITION_END","MAX_UID","MILLISECONDS_MULTIPLIER","toType","obj","toString","call","match","toLowerCase","getSpecialTransitionEndEvent","bindType","delegateType","handle","event","$","target","is","handleObj","handler","apply","arguments","undefined","transitionEndEmulator","duration","called","one","Util","setTimeout","triggerTransitionEnd","setTransitionEndSupport","fn","emulateTransitionEnd","special","getUID","prefix","Math","random","document","getElementById","getSelectorFromElement","element","selector","getAttribute","hrefAttr","trim","querySelector","err","getTransitionDurationFromElement","transitionDuration","css","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","split","reflow","offsetHeight","trigger","supportsTransitionEnd","Boolean","isElement","nodeType","typeCheckConfig","componentName","config","configTypes","property","Object","prototype","hasOwnProperty","expectedTypes","value","valueType","RegExp","test","Error","toUpperCase","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","parentNode","NAME","VERSION","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","ESCAPE_KEYCODE","Default","backdrop","keyboard","focus","show","DefaultType","Event","HIDE","HIDDEN","SHOW","SHOWN","FOCUSIN","RESIZE","CLICK_DISMISS","KEYDOWN_DISMISS","MOUSEUP_DISMISS","MOUSEDOWN_DISMISS","CLICK_DATA_API","ClassName","SCROLLABLE","SCROLLBAR_MEASURER","BACKDROP","SLIDE","FADE","OPEN","Selector","CONTENT","MODAL_BODY","DATA_TOGGLE","DATA_DISMISS","FIXED_CONTENT","STICKY_CONTENT","Drawer","_config","_getConfig","_element","_content","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_isTransitioning","_scrollbarWidth","toggle","relatedTarget","hide","hasClass","showEvent","isDefaultPrevented","_checkScrollbar","_setScrollbar","_setEscapeEvent","on","_showBackdrop","_showElement","preventDefault","hideEvent","transition","off","removeClass","_hideDrawer","dispose","window","forEach","htmlElement","removeData","Node","ELEMENT_NODE","body","appendChild","style","display","removeAttribute","setAttribute","scrollTop","addClass","_enforceFocus","shownEvent","transitionComplete","has","length","which","_resetAdjustments","_resetScrollbar","_removeBackdrop","remove","callback","animate","createElement","className","classList","add","appendTo","currentTarget","backdropTransitionDuration","callbackRemove","paddingLeft","paddingRight","rect","getBoundingClientRect","left","right","innerWidth","_getScrollbarWidth","fixedContent","slice","querySelectorAll","stickyContent","each","index","actualPadding","calculatedPadding","data","actualMargin","marginRight","calculatedMargin","padding","elements","margin","scrollDiv","scrollbarWidth","width","clientWidth","removeChild","_jQueryInterface","TypeError","tagName","$target","Constructor","noConflict"],"mappings":"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"}