0
0
mirror of https://github.com/twbs/bootstrap.git synced 2024-12-10 22:24:19 +01:00
Bootstrap/js/dist/modal.js.map
2021-03-23 18:26:54 +02:00

1 line
45 KiB
Plaintext

{"version":3,"file":"modal.js","sources":["../src/util/index.js","../src/modal.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta3): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n if (obj === null || obj === undefined) {\n return `${obj}`\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttr = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n hrefAttr = '#' + hrefAttr.split('#')[1]\n }\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.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 (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => (obj[0] || obj).nodeType\n\nconst emulateTransitionEnd = (element, duration) => {\n let called = false\n const durationPadding = 5\n const emulatedDuration = duration + durationPadding\n\n function listener() {\n called = true\n element.removeEventListener(TRANSITION_END, listener)\n }\n\n element.addEventListener(TRANSITION_END, listener)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(element)\n }\n }, emulatedDuration)\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes).forEach(property => {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!element) {\n return false\n }\n\n if (element.style && element.parentNode && element.parentNode.style) {\n const elementStyle = getComputedStyle(element)\n const parentNodeStyle = getComputedStyle(element.parentNode)\n\n return elementStyle.display !== 'none' &&\n parentNodeStyle.display !== 'none' &&\n elementStyle.visibility !== 'hidden'\n }\n\n return false\n}\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true\n }\n\n if (element.classList.contains('disabled')) {\n return true\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst 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 findShadowRoot(element.parentNode)\n}\n\nconst noop = () => function () {}\n\nconst reflow = element => element.offsetHeight\n\nconst getjQuery = () => {\n const { jQuery } = window\n\n if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return jQuery\n }\n\n return null\n}\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = (name, plugin) => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nexport {\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n emulateTransitionEnd,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta3): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isVisible,\n isRTL,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n focus: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean'\n}\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"modal\"]'\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\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 // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\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\n if (this._isAnimated()) {\n this._isTransitioning = true\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (this._isShown || showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, event => this.hide(event))\n\n EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n if (event.target === this._element) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._isShown = false\n const isAnimated = this._isAnimated()\n\n if (isAnimated) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.off(document, EVENT_FOCUSIN)\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS)\n\n if (isAnimated) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, 'transitionend', event => this._hideModal(event))\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\n\n super.dispose()\n\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n EventHandler.off(document, EVENT_FOCUSIN)\n\n this._config = null\n this._dialog = 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 handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const isAnimated = this._isAnimated()\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.scrollTop = 0\n\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n if (isAnimated) {\n reflow(this._element)\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n if (isAnimated) {\n const transitionDuration = getTransitionDurationFromElement(this._dialog)\n\n EventHandler.one(this._dialog, 'transitionend', transitionComplete)\n emulateTransitionEnd(this._dialog, transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n EventHandler.off(document, EVENT_FOCUSIN) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => {\n if (document !== event.target &&\n this._element !== event.target &&\n !this._element.contains(event.target)) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown) {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n event.preventDefault()\n this.hide()\n } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {\n this._triggerBackdropTransition()\n }\n })\n } else {\n EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog())\n } else {\n EventHandler.off(window, EVENT_RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n this._showBackdrop(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _removeBackdrop() {\n this._backdrop.parentNode.removeChild(this._backdrop)\n this._backdrop = null\n }\n\n _showBackdrop(callback) {\n const isAnimated = this._isAnimated()\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = CLASS_NAME_BACKDROP\n\n if (isAnimated) {\n this._backdrop.classList.add(CLASS_NAME_FADE)\n }\n\n document.body.appendChild(this._backdrop)\n\n EventHandler.on(this._element, 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\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n } else {\n this.hide()\n }\n })\n\n if (isAnimated) {\n reflow(this._backdrop)\n }\n\n this._backdrop.classList.add(CLASS_NAME_SHOW)\n\n if (!isAnimated) {\n callback()\n return\n }\n\n const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop)\n\n EventHandler.one(this._backdrop, 'transitionend', callback)\n emulateTransitionEnd(this._backdrop, backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n this._backdrop.classList.remove(CLASS_NAME_SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n callback()\n }\n\n if (isAnimated) {\n const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop)\n EventHandler.one(this._backdrop, 'transitionend', callbackRemove)\n emulateTransitionEnd(this._backdrop, backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else {\n callback()\n }\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE)\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n const modalTransitionDuration = getTransitionDurationFromElement(this._dialog)\n EventHandler.off(this._element, 'transitionend')\n EventHandler.one(this._element, 'transitionend', () => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n if (!isModalOverflowing) {\n EventHandler.one(this._element, 'transitionend', () => {\n this._element.style.overflowY = ''\n })\n emulateTransitionEnd(this._element, modalTransitionDuration)\n }\n })\n emulateTransitionEnd(this._element, modalTransitionDuration)\n this._element.focus()\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n if ((!this._isBodyOverflowing && isModalOverflowing && !isRTL()) || (this._isBodyOverflowing && !isModalOverflowing && isRTL())) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if ((this._isBodyOverflowing && !isModalOverflowing && !isRTL()) || (!this._isBodyOverflowing && isModalOverflowing && isRTL())) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\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 = Math.round(rect.left + rect.right) < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + this._scrollbarWidth)\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - this._scrollbarWidth)\n this._setElementAttributes('body', 'paddingRight', calculatedValue => calculatedValue + this._scrollbarWidth)\n }\n\n document.body.classList.add(CLASS_NAME_OPEN)\n }\n\n _setElementAttributes(selector, styleProp, callback) {\n SelectorEngine.find(selector)\n .forEach(element => {\n if (element !== document.body && window.innerWidth > element.clientWidth + this._scrollbarWidth) {\n return\n }\n\n const actualValue = element.style[styleProp]\n const calculatedValue = window.getComputedStyle(element)[styleProp]\n Manipulator.setDataAttribute(element, styleProp, actualValue)\n element.style[styleProp] = callback(Number.parseFloat(calculatedValue)) + 'px'\n })\n }\n\n _resetScrollbar() {\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight')\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight')\n this._resetElementAttributes('body', 'paddingRight')\n }\n\n _resetElementAttributes(selector, styleProp) {\n SelectorEngine.find(selector).forEach(element => {\n const value = Manipulator.getDataAttribute(element, styleProp)\n if (typeof value === 'undefined' && element === document.body) {\n element.style[styleProp] = ''\n } else {\n Manipulator.removeDataAttribute(element, styleProp)\n element.style[styleProp] = value\n }\n })\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = CLASS_NAME_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 // Static\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = Data.get(this, DATA_KEY)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(this),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data) {\n data = new Modal(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n let data = Data.get(target, DATA_KEY)\n if (!data) {\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n\n data = new Modal(target, config)\n }\n\n data.toggle(this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Modal)\n\nexport default Modal\n"],"names":["MILLISECONDS_MULTIPLIER","TRANSITION_END","toType","obj","undefined","toString","call","match","toLowerCase","getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getElementFromSelector","document","querySelector","getTransitionDurationFromElement","transitionDuration","transitionDelay","window","getComputedStyle","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","triggerTransitionEnd","dispatchEvent","Event","isElement","nodeType","emulateTransitionEnd","duration","called","durationPadding","emulatedDuration","listener","removeEventListener","addEventListener","setTimeout","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","TypeError","toUpperCase","isVisible","style","parentNode","elementStyle","parentNodeStyle","display","visibility","reflow","offsetHeight","getjQuery","jQuery","body","hasAttribute","onDOMContentLoaded","callback","readyState","isRTL","documentElement","dir","defineJQueryPlugin","name","plugin","$","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","NAME","DATA_KEY","EVENT_KEY","DATA_API_KEY","ESCAPE_KEY","Default","backdrop","keyboard","focus","DefaultType","EVENT_HIDE","EVENT_HIDE_PREVENTED","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","EVENT_FOCUSIN","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEUP_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_CLICK_DATA_API","CLASS_NAME_SCROLLBAR_MEASURER","CLASS_NAME_BACKDROP","CLASS_NAME_OPEN","CLASS_NAME_FADE","CLASS_NAME_SHOW","CLASS_NAME_STATIC","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","SELECTOR_DATA_TOGGLE","SELECTOR_DATA_DISMISS","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","Modal","BaseComponent","constructor","_config","_getConfig","_dialog","SelectorEngine","findOne","_element","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_isTransitioning","_scrollbarWidth","toggle","relatedTarget","hide","show","_isAnimated","showEvent","EventHandler","trigger","defaultPrevented","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","on","event","one","target","_showBackdrop","_showElement","preventDefault","hideEvent","isAnimated","off","classList","remove","_hideModal","dispose","htmlElement","handleUpdate","modalBody","Node","ELEMENT_NODE","appendChild","removeAttribute","setAttribute","scrollTop","add","_enforceFocus","transitionComplete","contains","key","_triggerBackdropTransition","_resetAdjustments","_resetScrollbar","_removeBackdrop","removeChild","createElement","className","currentTarget","backdropTransitionDuration","callbackRemove","isModalOverflowing","scrollHeight","clientHeight","overflowY","modalTransitionDuration","paddingLeft","paddingRight","rect","getBoundingClientRect","Math","round","left","right","innerWidth","_getScrollbarWidth","_setElementAttributes","calculatedValue","styleProp","find","clientWidth","actualValue","Manipulator","setDataAttribute","_resetElementAttributes","getDataAttribute","removeDataAttribute","scrollDiv","scrollbarWidth","width","each","data","Data","get","getDataAttributes","tagName"],"mappings":"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"}