diff options
Diffstat (limited to 'vendor/twbs/bootstrap/js')
59 files changed, 1491 insertions, 995 deletions
diff --git a/vendor/twbs/bootstrap/js/dist/alert.js b/vendor/twbs/bootstrap/js/dist/alert.js index 5572ad9c3..6a6b2e7ba 100644 --- a/vendor/twbs/bootstrap/js/dist/alert.js +++ b/vendor/twbs/bootstrap/js/dist/alert.js @@ -1,19 +1,26 @@ /*! - * Bootstrap alert.js v5.0.2 (https://getbootstrap.com/) + * Bootstrap alert.js v5.1.1 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./dom/event-handler.js'), require('./base-component.js')) : - typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/event-handler', './base-component'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Alert = factory(global.SelectorEngine, global.EventHandler, global.Base)); -}(this, (function (SelectorEngine, EventHandler, BaseComponent) { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/event-handler.js'), require('./base-component.js')) : + typeof define === 'function' && define.amd ? define(['./dom/event-handler', './base-component'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Alert = factory(global.EventHandler, global.Base)); +}(this, (function (EventHandler, BaseComponent) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler); var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent); + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.1): util/index.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + const getSelector = element => { let selector = element.getAttribute('data-bs-target'); @@ -43,6 +50,22 @@ return selector ? document.querySelector(selector) : null; }; + const isDisabled = element => { + if (!element || element.nodeType !== Node.ELEMENT_NODE) { + return true; + } + + if (element.classList.contains('disabled')) { + return true; + } + + if (typeof element.disabled !== 'undefined') { + return element.disabled; + } + + return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'; + }; + const getjQuery = () => { const { jQuery @@ -93,7 +116,33 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): alert.js + * Bootstrap (v5.1.1): util/component-functions.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + const enableDismissTrigger = (component, method = 'hide') => { + const clickEvent = `click.dismiss${component.EVENT_KEY}`; + const name = component.NAME; + EventHandler__default['default'].on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) { + if (['A', 'AREA'].includes(this.tagName)) { + event.preventDefault(); + } + + if (isDisabled(this)) { + return; + } + + const target = getElementFromSelector(this) || this.closest(`.${name}`); + const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method + + instance[method](); + }); + }; + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.1): alert.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -106,12 +155,8 @@ const NAME = 'alert'; const DATA_KEY = 'bs.alert'; const EVENT_KEY = `.${DATA_KEY}`; - const DATA_API_KEY = '.data-api'; - const SELECTOR_DISMISS = '[data-bs-dismiss="alert"]'; const EVENT_CLOSE = `close${EVENT_KEY}`; const EVENT_CLOSED = `closed${EVENT_KEY}`; - const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`; - const CLASS_NAME_ALERT = 'alert'; const CLASS_NAME_FADE = 'fade'; const CLASS_NAME_SHOW = 'show'; /** @@ -127,37 +172,26 @@ } // Public - close(element) { - const rootElement = element ? this._getRootElement(element) : this._element; - - const customEvent = this._triggerCloseEvent(rootElement); + close() { + const closeEvent = EventHandler__default['default'].trigger(this._element, EVENT_CLOSE); - if (customEvent === null || customEvent.defaultPrevented) { + if (closeEvent.defaultPrevented) { return; } - this._removeElement(rootElement); - } // Private + this._element.classList.remove(CLASS_NAME_SHOW); + const isAnimated = this._element.classList.contains(CLASS_NAME_FADE); - _getRootElement(element) { - return getElementFromSelector(element) || element.closest(`.${CLASS_NAME_ALERT}`); - } + this._queueCallback(() => this._destroyElement(), this._element, isAnimated); + } // Private - _triggerCloseEvent(element) { - return EventHandler__default['default'].trigger(element, EVENT_CLOSE); - } - _removeElement(element) { - element.classList.remove(CLASS_NAME_SHOW); - const isAnimated = element.classList.contains(CLASS_NAME_FADE); + _destroyElement() { + this._element.remove(); - this._queueCallback(() => this._destroyElement(element), element, isAnimated); - } - - _destroyElement(element) { - element.remove(); - EventHandler__default['default'].trigger(element, EVENT_CLOSED); + EventHandler__default['default'].trigger(this._element, EVENT_CLOSED); + this.dispose(); } // Static @@ -165,20 +199,16 @@ return this.each(function () { const data = Alert.getOrCreateInstance(this); - if (config === 'close') { - data[config](this); + if (typeof config !== 'string') { + return; } - }); - } - static handleDismiss(alertInstance) { - return function (event) { - if (event) { - event.preventDefault(); + if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { + throw new TypeError(`No method named "${config}"`); } - alertInstance.close(this); - }; + data[config](this); + }); } } @@ -189,7 +219,7 @@ */ - EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert())); + enableDismissTrigger(Alert, 'close'); /** * ------------------------------------------------------------------------ * jQuery diff --git a/vendor/twbs/bootstrap/js/dist/alert.js.map b/vendor/twbs/bootstrap/js/dist/alert.js.map index b4bd0f78e..ff50fac86 100644 --- a/vendor/twbs/bootstrap/js/dist/alert.js.map +++ b/vendor/twbs/bootstrap/js/dist/alert.js.map @@ -1 +1 @@ -{"version":3,"file":"alert.js","sources":["../src/util/index.js","../src/alert.js"],"sourcesContent":["import SelectorEngine from '../dom/selector-engine'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return SelectorEngine.findOne(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst SELECTOR_DISMISS = '[data-bs-dismiss=\"alert\"]'\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_ALERT = 'alert'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n close(element) {\n const rootElement = element ? this._getRootElement(element) : this._element\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent === null || customEvent.defaultPrevented) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n // Private\n\n _getRootElement(element) {\n return getElementFromSelector(element) || element.closest(`.${CLASS_NAME_ALERT}`)\n }\n\n _triggerCloseEvent(element) {\n return EventHandler.trigger(element, EVENT_CLOSE)\n }\n\n _removeElement(element) {\n element.classList.remove(CLASS_NAME_SHOW)\n\n const isAnimated = element.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(() => this._destroyElement(element), element, isAnimated)\n }\n\n _destroyElement(element) {\n element.remove()\n\n EventHandler.trigger(element, EVENT_CLOSED)\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this)\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()))\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n"],"names":["getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getElementFromSelector","document","querySelector","getjQuery","jQuery","window","body","hasAttribute","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","length","addEventListener","forEach","push","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","DATA_KEY","EVENT_KEY","DATA_API_KEY","SELECTOR_DISMISS","EVENT_CLOSE","EVENT_CLOSED","EVENT_CLICK_DATA_API","CLASS_NAME_ALERT","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","BaseComponent","close","rootElement","_getRootElement","_element","customEvent","_triggerCloseEvent","defaultPrevented","_removeElement","closest","EventHandler","trigger","classList","remove","isAnimated","contains","_queueCallback","_destroyElement","config","each","data","getOrCreateInstance","handleDismiss","alertInstance","event","preventDefault","on"],"mappings":"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"}
\ No newline at end of file +{"version":3,"file":"alert.js","sources":["../src/util/index.js","../src/util/component-functions.js","../src/alert.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return document.querySelector(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight\n}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { getElementFromSelector, isDisabled } from './index'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`\n const name = component.NAME\n\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const target = getElementFromSelector(this) || this.closest(`.${name}`)\n const instance = component.getOrCreateInstance(target)\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]()\n })\n}\n\nexport {\n enableDismissTrigger\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n if (closeEvent.defaultPrevented) {\n return\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n }\n\n // Private\n _destroyElement() {\n this._element.remove()\n EventHandler.trigger(this._element, EVENT_CLOSED)\n this.dispose()\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nenableDismissTrigger(Alert, 'close')\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n"],"names":["getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getElementFromSelector","document","querySelector","isDisabled","nodeType","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","getjQuery","jQuery","window","body","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","length","addEventListener","forEach","push","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","enableDismissTrigger","component","method","clickEvent","EVENT_KEY","EventHandler","on","event","tagName","preventDefault","target","closest","instance","getOrCreateInstance","DATA_KEY","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","BaseComponent","close","closeEvent","trigger","_element","defaultPrevented","remove","isAnimated","_queueCallback","_destroyElement","dispose","config","each","data","undefined","TypeError"],"mappings":"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"}
\ No newline at end of file diff --git a/vendor/twbs/bootstrap/js/dist/base-component.js b/vendor/twbs/bootstrap/js/dist/base-component.js index 18f7f25ea..9aadf3159 100644 --- a/vendor/twbs/bootstrap/js/dist/base-component.js +++ b/vendor/twbs/bootstrap/js/dist/base-component.js @@ -1,20 +1,25 @@ /*! - * Bootstrap base-component.js v5.0.2 (https://getbootstrap.com/) + * Bootstrap base-component.js v5.1.1 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/selector-engine.js'), require('./dom/event-handler.js')) : - typeof define === 'function' && define.amd ? define(['./dom/data', './dom/selector-engine', './dom/event-handler'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Base = factory(global.Data, global.SelectorEngine, global.EventHandler)); -}(this, (function (Data, SelectorEngine, EventHandler) { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/event-handler.js')) : + typeof define === 'function' && define.amd ? define(['./dom/data', './dom/event-handler'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Base = factory(global.Data, global.EventHandler)); +}(this, (function (Data, EventHandler) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data); - var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine); var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler); + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.1): util/index.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ const MILLISECONDS_MULTIPLIER = 1000; const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp) @@ -64,7 +69,7 @@ } if (typeof obj === 'string' && obj.length > 0) { - return SelectorEngine__default['default'].findOne(obj); + return document.querySelector(obj); } return null; @@ -108,7 +113,7 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): base-component.js + * Bootstrap (v5.1.1): base-component.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -118,7 +123,7 @@ * ------------------------------------------------------------------------ */ - const VERSION = '5.0.2'; + const VERSION = '5.1.1'; class BaseComponent { constructor(element) { @@ -147,7 +152,7 @@ static getInstance(element) { - return Data__default['default'].get(element, this.DATA_KEY); + return Data__default['default'].get(getElement(element), this.DATA_KEY); } static getOrCreateInstance(element, config = {}) { diff --git a/vendor/twbs/bootstrap/js/dist/base-component.js.map b/vendor/twbs/bootstrap/js/dist/base-component.js.map index 6b5a45069..6ad69c17a 100644 --- a/vendor/twbs/bootstrap/js/dist/base-component.js.map +++ b/vendor/twbs/bootstrap/js/dist/base-component.js.map @@ -1 +1 @@ -{"version":3,"file":"base-component.js","sources":["../src/util/index.js","../src/base-component.js"],"sourcesContent":["import SelectorEngine from '../dom/selector-engine'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return SelectorEngine.findOne(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\nimport {\n executeAfterTransition,\n getElement\n} from './util/index'\nimport EventHandler from './dom/event-handler'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.0.2'\n\nclass BaseComponent {\n constructor(element) {\n element = getElement(element)\n\n if (!element) {\n return\n }\n\n this._element = element\n Data.set(this._element, this.constructor.DATA_KEY, this)\n }\n\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY)\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n Object.getOwnPropertyNames(this).forEach(propertyName => {\n this[propertyName] = null\n })\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated)\n }\n\n /** Static */\n\n static getInstance(element) {\n return Data.get(element, this.DATA_KEY)\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n }\n\n static get VERSION() {\n return VERSION\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!')\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`\n }\n}\n\nexport default BaseComponent\n"],"names":["MILLISECONDS_MULTIPLIER","TRANSITION_END","getTransitionDurationFromElement","element","transitionDuration","transitionDelay","window","getComputedStyle","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","dispatchEvent","Event","isElement","obj","jquery","nodeType","getElement","length","SelectorEngine","findOne","execute","callback","executeAfterTransition","transitionElement","waitForTransition","durationPadding","emulatedDuration","called","handler","target","removeEventListener","addEventListener","setTimeout","VERSION","BaseComponent","constructor","_element","Data","set","DATA_KEY","dispose","remove","EventHandler","off","EVENT_KEY","Object","getOwnPropertyNames","forEach","propertyName","_queueCallback","isAnimated","getInstance","get","getOrCreateInstance","config","NAME","Error"],"mappings":"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"}
\ No newline at end of file +{"version":3,"file":"base-component.js","sources":["../src/util/index.js","../src/base-component.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return document.querySelector(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight\n}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\nimport {\n executeAfterTransition,\n getElement\n} from './util/index'\nimport EventHandler from './dom/event-handler'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.1.1'\n\nclass BaseComponent {\n constructor(element) {\n element = getElement(element)\n\n if (!element) {\n return\n }\n\n this._element = element\n Data.set(this._element, this.constructor.DATA_KEY, this)\n }\n\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY)\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n Object.getOwnPropertyNames(this).forEach(propertyName => {\n this[propertyName] = null\n })\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated)\n }\n\n /** Static */\n\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY)\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n }\n\n static get VERSION() {\n return VERSION\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!')\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`\n }\n}\n\nexport default BaseComponent\n"],"names":["MILLISECONDS_MULTIPLIER","TRANSITION_END","getTransitionDurationFromElement","element","transitionDuration","transitionDelay","window","getComputedStyle","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","dispatchEvent","Event","isElement","obj","jquery","nodeType","getElement","length","document","querySelector","execute","callback","executeAfterTransition","transitionElement","waitForTransition","durationPadding","emulatedDuration","called","handler","target","removeEventListener","addEventListener","setTimeout","VERSION","BaseComponent","constructor","_element","Data","set","DATA_KEY","dispose","remove","EventHandler","off","EVENT_KEY","Object","getOwnPropertyNames","forEach","propertyName","_queueCallback","isAnimated","getInstance","get","getOrCreateInstance","config","NAME","Error"],"mappings":"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"}
\ No newline at end of file diff --git a/vendor/twbs/bootstrap/js/dist/button.js b/vendor/twbs/bootstrap/js/dist/button.js index d4d1c433f..d8d92b5ac 100644 --- a/vendor/twbs/bootstrap/js/dist/button.js +++ b/vendor/twbs/bootstrap/js/dist/button.js @@ -1,19 +1,26 @@ /*! - * Bootstrap button.js v5.0.2 (https://getbootstrap.com/) + * Bootstrap button.js v5.1.1 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./dom/event-handler.js'), require('./base-component.js')) : - typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/event-handler', './base-component'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Button = factory(global.SelectorEngine, global.EventHandler, global.Base)); -}(this, (function (SelectorEngine, EventHandler, BaseComponent) { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/event-handler.js'), require('./base-component.js')) : + typeof define === 'function' && define.amd ? define(['./dom/event-handler', './base-component'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Button = factory(global.EventHandler, global.Base)); +}(this, (function (EventHandler, BaseComponent) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler); var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent); + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.1): util/index.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + const getjQuery = () => { const { jQuery @@ -64,7 +71,7 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): button.js + * Bootstrap (v5.1.1): button.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ diff --git a/vendor/twbs/bootstrap/js/dist/button.js.map b/vendor/twbs/bootstrap/js/dist/button.js.map index e39c335b3..623870812 100644 --- a/vendor/twbs/bootstrap/js/dist/button.js.map +++ b/vendor/twbs/bootstrap/js/dist/button.js.map @@ -1 +1 @@ -{"version":3,"file":"button.js","sources":["../src/util/index.js","../src/button.js"],"sourcesContent":["import SelectorEngine from '../dom/selector-engine'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return SelectorEngine.findOne(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button extends BaseComponent {\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this)\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n const data = Button.getOrCreateInstance(button)\n\n data.toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Button to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n"],"names":["getjQuery","jQuery","window","document","body","hasAttribute","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","length","addEventListener","forEach","push","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","DATA_KEY","EVENT_KEY","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","BaseComponent","toggle","_element","setAttribute","classList","config","each","data","getOrCreateInstance","EventHandler","on","event","preventDefault","button","target","closest"],"mappings":"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"}
\ No newline at end of file +{"version":3,"file":"button.js","sources":["../src/util/index.js","../src/button.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return document.querySelector(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight\n}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button extends BaseComponent {\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this)\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n const data = Button.getOrCreateInstance(button)\n\n data.toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Button to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n"],"names":["getjQuery","jQuery","window","document","body","hasAttribute","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","length","addEventListener","forEach","push","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","DATA_KEY","EVENT_KEY","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","BaseComponent","toggle","_element","setAttribute","classList","config","each","data","getOrCreateInstance","EventHandler","on","event","preventDefault","button","target","closest"],"mappings":"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"}
\ No newline at end of file diff --git a/vendor/twbs/bootstrap/js/dist/carousel.js b/vendor/twbs/bootstrap/js/dist/carousel.js index 53e9a9687..bd7a8509a 100644 --- a/vendor/twbs/bootstrap/js/dist/carousel.js +++ b/vendor/twbs/bootstrap/js/dist/carousel.js @@ -1,21 +1,27 @@ /*! - * Bootstrap carousel.js v5.0.2 (https://getbootstrap.com/) + * Bootstrap carousel.js v5.1.1 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./base-component.js')) : - typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/event-handler', './dom/manipulator', './base-component'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Carousel = factory(global.SelectorEngine, global.EventHandler, global.Manipulator, global.Base)); -}(this, (function (SelectorEngine, EventHandler, Manipulator, BaseComponent) { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./dom/selector-engine.js'), require('./base-component.js')) : + typeof define === 'function' && define.amd ? define(['./dom/event-handler', './dom/manipulator', './dom/selector-engine', './base-component'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Carousel = factory(global.EventHandler, global.Manipulator, global.SelectorEngine, global.Base)); +}(this, (function (EventHandler, Manipulator, SelectorEngine, BaseComponent) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } - var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine); var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler); var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator); + var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine); var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent); + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.1): util/index.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp) const toType = obj => { @@ -90,8 +96,20 @@ return getComputedStyle(element).getPropertyValue('visibility') === 'visible'; }; + /** + * Trick to restart an element's animation + * + * @param {HTMLElement} element + * @return void + * + * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation + */ - const reflow = element => element.offsetHeight; + + const reflow = element => { + // eslint-disable-next-line no-unused-expressions + element.offsetHeight; + }; const getjQuery = () => { const { @@ -172,7 +190,7 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): carousel.js + * Bootstrap (v5.1.1): carousel.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -397,8 +415,12 @@ } _addTouchEventListeners() { + const hasPointerPenTouch = event => { + return this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH); + }; + const start = event => { - if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) { + if (hasPointerPenTouch(event)) { this.touchStartX = event.clientX; } else if (!this._pointerEvent) { this.touchStartX = event.touches[0].clientX; @@ -411,7 +433,7 @@ }; const end = event => { - if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) { + if (hasPointerPenTouch(event)) { this.touchDeltaX = event.clientX - this.touchStartX; } diff --git a/vendor/twbs/bootstrap/js/dist/carousel.js.map b/vendor/twbs/bootstrap/js/dist/carousel.js.map index c60f9649f..856b52c19 100644 --- a/vendor/twbs/bootstrap/js/dist/carousel.js.map +++ b/vendor/twbs/bootstrap/js/dist/carousel.js.map @@ -1 +1 @@ -{"version":3,"file":"carousel.js","sources":["../src/util/index.js","../src/carousel.js"],"sourcesContent":["import SelectorEngine from '../dom/selector-engine'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return SelectorEngine.findOne(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isRTL,\n isVisible,\n getNextActiveElement,\n reflow,\n triggerTransitionEnd,\n typeCheckConfig\n} from './util/index'\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 = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n}\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_INDICATOR = '[data-bs-target]'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n next() {\n this._slide(ORDER_NEXT)\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n this._slide(ORDER_PREV)\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config && this._config.interval && !this._isPaused) {\n this._updateInterval()\n\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const order = index > activeIndex ?\n ORDER_NEXT :\n ORDER_PREV\n\n this._slide(order, this._items[index])\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n if (!direction) {\n return\n }\n\n this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT)\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event))\n EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event))\n }\n\n if (this._config.touch && this._touchSupported) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n const start = event => {\n if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n this.touchStartX = event.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.touches[0].clientX\n }\n }\n\n const move = event => {\n // ensure swiping with one touch and not pinching\n this.touchDeltaX = event.touches && event.touches.length > 1 ?\n 0 :\n event.touches[0].clientX - this.touchStartX\n }\n\n const end = event => {\n if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n this.touchDeltaX = event.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault())\n })\n\n if (this._pointerEvent) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n const direction = KEY_TO_DIRECTION[event.key]\n if (direction) {\n event.preventDefault()\n this._slide(direction)\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode ?\n SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :\n []\n\n return this._items.indexOf(element)\n }\n\n _getItemByOrder(order, activeElement) {\n const isNext = order === ORDER_NEXT\n return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap)\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element))\n\n return EventHandler.trigger(this._element, EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n activeIndicator.removeAttribute('aria-current')\n\n const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement)\n\n for (let i = 0; i < indicators.length; i++) {\n if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {\n indicators[i].classList.add(CLASS_NAME_ACTIVE)\n indicators[i].setAttribute('aria-current', 'true')\n break\n }\n }\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = elementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n }\n\n _slide(directionOrOrder, element) {\n const order = this._directionToOrder(directionOrOrder)\n const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || this._getItemByOrder(order, activeElement)\n\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n const isNext = order === ORDER_NEXT\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n const eventDirectionName = this._orderToDirection(order)\n\n if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n this._isSliding = false\n return\n }\n\n if (this._isSliding) {\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n this._activeElement = nextElement\n\n const triggerSlidEvent = () => {\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }\n\n if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n setTimeout(triggerSlidEvent, 0)\n }\n\n this._queueCallback(completeCallBack, activeElement, true)\n } else {\n activeElement.classList.remove(CLASS_NAME_ACTIVE)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n this._isSliding = false\n triggerSlidEvent()\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n _directionToOrder(direction) {\n if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {\n return direction\n }\n\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n }\n\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n }\n\n _orderToDirection(order) {\n if (![ORDER_NEXT, ORDER_PREV].includes(order)) {\n return order\n }\n\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n }\n\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n }\n\n // Static\n\n static carouselInterface(element, config) {\n const data = Carousel.getOrCreateInstance(element, config)\n\n let { _config } = data\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Carousel.carouselInterface(this, config)\n })\n }\n\n static dataApiClickHandler(event) {\n const target = getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel.carouselInterface(target, config)\n\n if (slideIndex) {\n Carousel.getInstance(target).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (let i = 0, len = carousels.length; i < len; i++) {\n Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i]))\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n"],"names":["TRANSITION_END","toType","obj","undefined","toString","call","match","toLowerCase","getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getElementFromSelector","document","querySelector","triggerTransitionEnd","dispatchEvent","Event","isElement","jquery","nodeType","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","TypeError","toUpperCase","isVisible","getClientRects","length","getComputedStyle","getPropertyValue","reflow","offsetHeight","getjQuery","jQuery","window","body","hasAttribute","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","addEventListener","push","isRTL","documentElement","dir","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","index","indexOf","listLength","Math","max","min","DATA_KEY","EVENT_KEY","DATA_API_KEY","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","TOUCHEVENT_COMPAT_WAIT","SWIPE_THRESHOLD","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","KEY_TO_DIRECTION","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","EVENT_DRAG_START","EVENT_LOAD_DATA_API","EVENT_CLICK_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","CLASS_NAME_POINTER_EVENT","SELECTOR_ACTIVE","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM","SELECTOR_ITEM_IMG","SELECTOR_NEXT_PREV","SELECTOR_INDICATORS","SELECTOR_INDICATOR","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","Carousel","BaseComponent","constructor","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","SelectorEngine","findOne","_element","_touchSupported","navigator","maxTouchPoints","_pointerEvent","Boolean","PointerEvent","_addEventListeners","next","_slide","nextWhenVisible","hidden","prev","event","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","activeIndex","_getItemIndex","EventHandler","one","order","Manipulator","getDataAttributes","_handleSwipe","absDeltax","abs","direction","on","_keydown","_addTouchEventListeners","start","pointerType","clientX","touches","move","end","clearTimeout","setTimeout","find","itemImg","e","preventDefault","classList","add","target","tagName","key","parentNode","_getItemByOrder","isNext","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","trigger","from","_setActiveIndicatorElement","activeIndicator","remove","removeAttribute","indicators","i","Number","parseInt","setAttribute","elementInterval","defaultInterval","directionOrOrder","_directionToOrder","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","_orderToDirection","contains","slideEvent","defaultPrevented","triggerSlidEvent","completeCallBack","_queueCallback","carouselInterface","data","getOrCreateInstance","action","ride","each","dataApiClickHandler","slideIndex","getInstance","carousels","len"],"mappings":"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"}
\ No newline at end of file +{"version":3,"file":"carousel.js","sources":["../src/util/index.js","../src/carousel.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return document.querySelector(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight\n}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isRTL,\n isVisible,\n getNextActiveElement,\n reflow,\n triggerTransitionEnd,\n typeCheckConfig\n} from './util/index'\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 = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n}\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_INDICATOR = '[data-bs-target]'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n next() {\n this._slide(ORDER_NEXT)\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n this._slide(ORDER_PREV)\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config && this._config.interval && !this._isPaused) {\n this._updateInterval()\n\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const order = index > activeIndex ?\n ORDER_NEXT :\n ORDER_PREV\n\n this._slide(order, this._items[index])\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n if (!direction) {\n return\n }\n\n this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT)\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event))\n EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event))\n }\n\n if (this._config.touch && this._touchSupported) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n const hasPointerPenTouch = event => {\n return this._pointerEvent &&\n (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n }\n\n const start = event => {\n if (hasPointerPenTouch(event)) {\n this.touchStartX = event.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.touches[0].clientX\n }\n }\n\n const move = event => {\n // ensure swiping with one touch and not pinching\n this.touchDeltaX = event.touches && event.touches.length > 1 ?\n 0 :\n event.touches[0].clientX - this.touchStartX\n }\n\n const end = event => {\n if (hasPointerPenTouch(event)) {\n this.touchDeltaX = event.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault())\n })\n\n if (this._pointerEvent) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n const direction = KEY_TO_DIRECTION[event.key]\n if (direction) {\n event.preventDefault()\n this._slide(direction)\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode ?\n SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :\n []\n\n return this._items.indexOf(element)\n }\n\n _getItemByOrder(order, activeElement) {\n const isNext = order === ORDER_NEXT\n return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap)\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element))\n\n return EventHandler.trigger(this._element, EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n activeIndicator.removeAttribute('aria-current')\n\n const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement)\n\n for (let i = 0; i < indicators.length; i++) {\n if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {\n indicators[i].classList.add(CLASS_NAME_ACTIVE)\n indicators[i].setAttribute('aria-current', 'true')\n break\n }\n }\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = elementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n }\n\n _slide(directionOrOrder, element) {\n const order = this._directionToOrder(directionOrOrder)\n const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || this._getItemByOrder(order, activeElement)\n\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n const isNext = order === ORDER_NEXT\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n const eventDirectionName = this._orderToDirection(order)\n\n if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n this._isSliding = false\n return\n }\n\n if (this._isSliding) {\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n this._activeElement = nextElement\n\n const triggerSlidEvent = () => {\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }\n\n if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n setTimeout(triggerSlidEvent, 0)\n }\n\n this._queueCallback(completeCallBack, activeElement, true)\n } else {\n activeElement.classList.remove(CLASS_NAME_ACTIVE)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n this._isSliding = false\n triggerSlidEvent()\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n _directionToOrder(direction) {\n if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {\n return direction\n }\n\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n }\n\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n }\n\n _orderToDirection(order) {\n if (![ORDER_NEXT, ORDER_PREV].includes(order)) {\n return order\n }\n\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n }\n\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n }\n\n // Static\n\n static carouselInterface(element, config) {\n const data = Carousel.getOrCreateInstance(element, config)\n\n let { _config } = data\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Carousel.carouselInterface(this, config)\n })\n }\n\n static dataApiClickHandler(event) {\n const target = getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel.carouselInterface(target, config)\n\n if (slideIndex) {\n Carousel.getInstance(target).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (let i = 0, len = carousels.length; i < len; i++) {\n Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i]))\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n"],"names":["TRANSITION_END","toType","obj","undefined","toString","call","match","toLowerCase","getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getElementFromSelector","document","querySelector","triggerTransitionEnd","dispatchEvent","Event","isElement","jquery","nodeType","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","TypeError","toUpperCase","isVisible","getClientRects","length","getComputedStyle","getPropertyValue","reflow","offsetHeight","getjQuery","jQuery","window","body","hasAttribute","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","addEventListener","push","isRTL","documentElement","dir","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","index","indexOf","listLength","Math","max","min","DATA_KEY","EVENT_KEY","DATA_API_KEY","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","TOUCHEVENT_COMPAT_WAIT","SWIPE_THRESHOLD","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","KEY_TO_DIRECTION","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","EVENT_DRAG_START","EVENT_LOAD_DATA_API","EVENT_CLICK_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","CLASS_NAME_POINTER_EVENT","SELECTOR_ACTIVE","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM","SELECTOR_ITEM_IMG","SELECTOR_NEXT_PREV","SELECTOR_INDICATORS","SELECTOR_INDICATOR","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","Carousel","BaseComponent","constructor","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","SelectorEngine","findOne","_element","_touchSupported","navigator","maxTouchPoints","_pointerEvent","Boolean","PointerEvent","_addEventListeners","next","_slide","nextWhenVisible","hidden","prev","event","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","activeIndex","_getItemIndex","EventHandler","one","order","Manipulator","getDataAttributes","_handleSwipe","absDeltax","abs","direction","on","_keydown","_addTouchEventListeners","hasPointerPenTouch","pointerType","start","clientX","touches","move","end","clearTimeout","setTimeout","find","itemImg","e","preventDefault","classList","add","target","tagName","key","parentNode","_getItemByOrder","isNext","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","trigger","from","_setActiveIndicatorElement","activeIndicator","remove","removeAttribute","indicators","i","Number","parseInt","setAttribute","elementInterval","defaultInterval","directionOrOrder","_directionToOrder","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","_orderToDirection","contains","slideEvent","defaultPrevented","triggerSlidEvent","completeCallBack","_queueCallback","carouselInterface","data","getOrCreateInstance","action","ride","each","dataApiClickHandler","slideIndex","getInstance","carousels","len"],"mappings":"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"}
\ No newline at end of file diff --git a/vendor/twbs/bootstrap/js/dist/collapse.js b/vendor/twbs/bootstrap/js/dist/collapse.js index 5a1beb7d3..b096eac3f 100644 --- a/vendor/twbs/bootstrap/js/dist/collapse.js +++ b/vendor/twbs/bootstrap/js/dist/collapse.js @@ -1,22 +1,29 @@ /*! - * Bootstrap collapse.js v5.0.2 (https://getbootstrap.com/) + * Bootstrap collapse.js v5.1.1 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./base-component.js')) : - typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/data', './dom/event-handler', './dom/manipulator', './base-component'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Collapse = factory(global.SelectorEngine, global.Data, global.EventHandler, global.Manipulator, global.Base)); -}(this, (function (SelectorEngine, Data, EventHandler, Manipulator, BaseComponent) { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./dom/selector-engine.js'), require('./base-component.js')) : + typeof define === 'function' && define.amd ? define(['./dom/data', './dom/event-handler', './dom/manipulator', './dom/selector-engine', './base-component'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Collapse = factory(global.Data, global.EventHandler, global.Manipulator, global.SelectorEngine, global.Base)); +}(this, (function (Data, EventHandler, Manipulator, SelectorEngine, BaseComponent) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } - var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine); var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data); var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler); var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator); + var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine); var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent); + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.1): util/index.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + const toType = obj => { if (obj === null || obj === undefined) { return `${obj}`; @@ -83,7 +90,7 @@ } if (typeof obj === 'string' && obj.length > 0) { - return SelectorEngine__default['default'].findOne(obj); + return document.querySelector(obj); } return null; @@ -100,8 +107,20 @@ } }); }; + /** + * Trick to restart an element's animation + * + * @param {HTMLElement} element + * @return void + * + * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation + */ - const reflow = element => element.offsetHeight; + + const reflow = element => { + // eslint-disable-next-line no-unused-expressions + element.offsetHeight; + }; const getjQuery = () => { const { @@ -153,7 +172,7 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): collapse.js + * Bootstrap (v5.1.1): collapse.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -169,11 +188,11 @@ const DATA_API_KEY = '.data-api'; const Default = { toggle: true, - parent: '' + parent: null }; const DefaultType = { toggle: 'boolean', - parent: '(string|element)' + parent: '(null|element)' }; const EVENT_SHOW = `show${EVENT_KEY}`; const EVENT_SHOWN = `shown${EVENT_KEY}`; @@ -184,9 +203,10 @@ const CLASS_NAME_COLLAPSE = 'collapse'; const CLASS_NAME_COLLAPSING = 'collapsing'; const CLASS_NAME_COLLAPSED = 'collapsed'; + const CLASS_NAME_HORIZONTAL = 'collapse-horizontal'; const WIDTH = 'width'; const HEIGHT = 'height'; - const SELECTOR_ACTIVES = '.show, .collapsing'; + const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'; const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="collapse"]'; /** * ------------------------------------------------------------------------ @@ -199,7 +219,7 @@ super(element); this._isTransitioning = false; this._config = this._getConfig(config); - this._triggerArray = SelectorEngine__default['default'].find(`${SELECTOR_DATA_TOGGLE}[href="#${this._element.id}"],` + `${SELECTOR_DATA_TOGGLE}[data-bs-target="#${this._element.id}"]`); + this._triggerArray = []; const toggleList = SelectorEngine__default['default'].find(SELECTOR_DATA_TOGGLE); for (let i = 0, len = toggleList.length; i < len; i++) { @@ -214,10 +234,10 @@ } } - this._parent = this._config.parent ? this._getParent() : null; + this._initializeChildren(); if (!this._config.parent) { - this._addAriaAndCollapsedClass(this._element, this._triggerArray); + this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()); } if (this._config.toggle) { @@ -236,7 +256,7 @@ toggle() { - if (this._element.classList.contains(CLASS_NAME_SHOW)) { + if (this._isShown()) { this.hide(); } else { this.show(); @@ -244,30 +264,21 @@ } show() { - if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) { + if (this._isTransitioning || this._isShown()) { return; } - let actives; + let actives = []; let activesData; - if (this._parent) { - actives = SelectorEngine__default['default'].find(SELECTOR_ACTIVES, this._parent).filter(elem => { - if (typeof this._config.parent === 'string') { - return elem.getAttribute('data-bs-parent') === this._config.parent; - } - - return elem.classList.contains(CLASS_NAME_COLLAPSE); - }); - - if (actives.length === 0) { - actives = null; - } + if (this._config.parent) { + const children = SelectorEngine__default['default'].find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent); + actives = SelectorEngine__default['default'].find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)); // remove children if greater depth } const container = SelectorEngine__default['default'].findOne(this._selector); - if (actives) { + if (actives.length) { const tempActiveData = actives.find(elem => container !== elem); activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null; @@ -282,17 +293,17 @@ return; } - if (actives) { - actives.forEach(elemActive => { - if (container !== elemActive) { - Collapse.collapseInterface(elemActive, 'hide'); - } + actives.forEach(elemActive => { + if (container !== elemActive) { + Collapse.getOrCreateInstance(elemActive, { + toggle: false + }).hide(); + } - if (!activesData) { - Data__default['default'].set(elemActive, DATA_KEY, null); - } - }); - } + if (!activesData) { + Data__default['default'].set(elemActive, DATA_KEY, null); + } + }); const dimension = this._getDimension(); @@ -302,22 +313,18 @@ this._element.style[dimension] = 0; - if (this._triggerArray.length) { - this._triggerArray.forEach(element => { - element.classList.remove(CLASS_NAME_COLLAPSED); - element.setAttribute('aria-expanded', true); - }); - } + this._addAriaAndCollapsedClass(this._triggerArray, true); - this.setTransitioning(true); + this._isTransitioning = true; const complete = () => { + this._isTransitioning = false; + this._element.classList.remove(CLASS_NAME_COLLAPSING); this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW); this._element.style[dimension] = ''; - this.setTransitioning(false); EventHandler__default['default'].trigger(this._element, EVENT_SHOWN); }; @@ -330,7 +337,7 @@ } hide() { - if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) { + if (this._isTransitioning || !this._isShown()) { return; } @@ -351,22 +358,19 @@ const triggerArrayLength = this._triggerArray.length; - if (triggerArrayLength > 0) { - for (let i = 0; i < triggerArrayLength; i++) { - const trigger = this._triggerArray[i]; - const elem = getElementFromSelector(trigger); + for (let i = 0; i < triggerArrayLength; i++) { + const trigger = this._triggerArray[i]; + const elem = getElementFromSelector(trigger); - if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) { - trigger.classList.add(CLASS_NAME_COLLAPSED); - trigger.setAttribute('aria-expanded', false); - } + if (elem && !this._isShown(elem)) { + this._addAriaAndCollapsedClass([trigger], false); } } - this.setTransitioning(true); + this._isTransitioning = true; const complete = () => { - this.setTransitioning(false); + this._isTransitioning = false; this._element.classList.remove(CLASS_NAME_COLLAPSING); @@ -380,45 +384,47 @@ this._queueCallback(complete, this._element, true); } - setTransitioning(isTransitioning) { - this._isTransitioning = isTransitioning; + _isShown(element = this._element) { + return element.classList.contains(CLASS_NAME_SHOW); } // Private _getConfig(config) { config = { ...Default, + ...Manipulator__default['default'].getDataAttributes(this._element), ...config }; config.toggle = Boolean(config.toggle); // Coerce string values + config.parent = getElement(config.parent); typeCheckConfig(NAME, config, DefaultType); return config; } _getDimension() { - return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT; + return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT; } - _getParent() { - let { - parent - } = this._config; - parent = getElement(parent); - const selector = `${SELECTOR_DATA_TOGGLE}[data-bs-parent="${parent}"]`; - SelectorEngine__default['default'].find(selector, parent).forEach(element => { + _initializeChildren() { + if (!this._config.parent) { + return; + } + + const children = SelectorEngine__default['default'].find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent); + SelectorEngine__default['default'].find(SELECTOR_DATA_TOGGLE, this._config.parent).filter(elem => !children.includes(elem)).forEach(element => { const selected = getElementFromSelector(element); - this._addAriaAndCollapsedClass(selected, [element]); + if (selected) { + this._addAriaAndCollapsedClass([element], this._isShown(selected)); + } }); - return parent; } - _addAriaAndCollapsedClass(element, triggerArray) { - if (!element || !triggerArray.length) { + _addAriaAndCollapsedClass(triggerArray, isOpen) { + if (!triggerArray.length) { return; } - const isOpen = element.classList.contains(CLASS_NAME_SHOW); triggerArray.forEach(elem => { if (isOpen) { elem.classList.remove(CLASS_NAME_COLLAPSED); @@ -431,33 +437,23 @@ } // Static - static collapseInterface(element, config) { - let data = Collapse.getInstance(element); - const _config = { ...Default, - ...Manipulator__default['default'].getDataAttributes(element), - ...(typeof config === 'object' && config ? config : {}) - }; - - if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) { - _config.toggle = false; - } - - if (!data) { - data = new Collapse(element, _config); - } + static jQueryInterface(config) { + return this.each(function () { + const _config = {}; - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError(`No method named "${config}"`); + if (typeof config === 'string' && /show|hide/.test(config)) { + _config.toggle = false; } - data[config](); - } - } + const data = Collapse.getOrCreateInstance(this, _config); - static jQueryInterface(config) { - return this.each(function () { - Collapse.collapseInterface(this, config); + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + + data[config](); + } }); } @@ -475,26 +471,12 @@ event.preventDefault(); } - const triggerData = Manipulator__default['default'].getDataAttributes(this); const selector = getSelectorFromElement(this); const selectorElements = SelectorEngine__default['default'].find(selector); selectorElements.forEach(element => { - const data = Collapse.getInstance(element); - let config; - - if (data) { - // update parent attribute - if (data._parent === null && typeof triggerData.parent === 'string') { - data._config.parent = triggerData.parent; - data._parent = data._getParent(); - } - - config = 'toggle'; - } else { - config = triggerData; - } - - Collapse.collapseInterface(element, config); + Collapse.getOrCreateInstance(element, { + toggle: false + }).toggle(); }); }); /** diff --git a/vendor/twbs/bootstrap/js/dist/collapse.js.map b/vendor/twbs/bootstrap/js/dist/collapse.js.map index cab3bf3a9..707a5eb35 100644 --- a/vendor/twbs/bootstrap/js/dist/collapse.js.map +++ b/vendor/twbs/bootstrap/js/dist/collapse.js.map @@ -1 +1 @@ -{"version":3,"file":"collapse.js","sources":["../src/util/index.js","../src/collapse.js"],"sourcesContent":["import SelectorEngine from '../dom/selector-engine'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return SelectorEngine.findOne(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElement,\n getSelectorFromElement,\n getElementFromSelector,\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 = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n toggle: true,\n parent: ''\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(string|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._isTransitioning = false\n this._config = this._getConfig(config)\n this._triggerArray = SelectorEngine.find(\n `${SELECTOR_DATA_TOGGLE}[href=\"#${this._element.id}\"],` +\n `${SELECTOR_DATA_TOGGLE}[data-bs-target=\"#${this._element.id}\"]`\n )\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElem => foundElem === this._element)\n\n if (selector !== null && filterElement.length) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n toggle() {\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent)\n .filter(elem => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-bs-parent') === this._config.parent\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n const container = SelectorEngine.findOne(this._selector)\n if (actives) {\n const tempActiveData = actives.find(elem => container !== elem)\n activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null\n\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n if (actives) {\n actives.forEach(elemActive => {\n if (container !== elemActive) {\n Collapse.collapseInterface(elemActive, 'hide')\n }\n\n if (!activesData) {\n Data.set(elemActive, DATA_KEY, null)\n }\n })\n }\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n this._triggerArray.forEach(element => {\n element.classList.remove(CLASS_NAME_COLLAPSED)\n element.setAttribute('aria-expanded', true)\n })\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n\n this._queueCallback(complete, this._element, true)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const elem = getElementFromSelector(trigger)\n\n if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {\n trigger.classList.add(CLASS_NAME_COLLAPSED)\n trigger.setAttribute('aria-expanded', false)\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n\n this._queueCallback(complete, this._element, true)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT\n }\n\n _getParent() {\n let { parent } = this._config\n\n parent = getElement(parent)\n\n const selector = `${SELECTOR_DATA_TOGGLE}[data-bs-parent=\"${parent}\"]`\n\n SelectorEngine.find(selector, parent)\n .forEach(element => {\n const selected = getElementFromSelector(element)\n\n this._addAriaAndCollapsedClass(\n selected,\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n if (!element || !triggerArray.length) {\n return\n }\n\n const isOpen = element.classList.contains(CLASS_NAME_SHOW)\n\n triggerArray.forEach(elem => {\n if (isOpen) {\n elem.classList.remove(CLASS_NAME_COLLAPSED)\n } else {\n elem.classList.add(CLASS_NAME_COLLAPSED)\n }\n\n elem.setAttribute('aria-expanded', isOpen)\n })\n }\n\n // Static\n\n static collapseInterface(element, config) {\n let data = Collapse.getInstance(element)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(element, _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]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Collapse.collapseInterface(this, config)\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 // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n event.preventDefault()\n }\n\n const triggerData = Manipulator.getDataAttributes(this)\n const selector = getSelectorFromElement(this)\n const selectorElements = SelectorEngine.find(selector)\n\n selectorElements.forEach(element => {\n const data = Collapse.getInstance(element)\n let config\n if (data) {\n // update parent attribute\n if (data._parent === null && typeof triggerData.parent === 'string') {\n data._config.parent = triggerData.parent\n data._parent = data._getParent()\n }\n\n config = 'toggle'\n } else {\n config = triggerData\n }\n\n Collapse.collapseInterface(element, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n"],"names":["toType","obj","undefined","toString","call","match","toLowerCase","getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getSelectorFromElement","document","querySelector","getElementFromSelector","isElement","jquery","nodeType","getElement","length","SelectorEngine","findOne","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","TypeError","toUpperCase","reflow","offsetHeight","getjQuery","jQuery","window","body","hasAttribute","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","addEventListener","push","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","DATA_KEY","EVENT_KEY","DATA_API_KEY","Default","toggle","parent","DefaultType","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","EVENT_CLICK_DATA_API","CLASS_NAME_SHOW","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","WIDTH","HEIGHT","SELECTOR_ACTIVES","SELECTOR_DATA_TOGGLE","Collapse","BaseComponent","constructor","_isTransitioning","_config","_getConfig","_triggerArray","find","_element","id","toggleList","i","len","elem","filterElement","filter","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","classList","contains","hide","show","actives","activesData","container","tempActiveData","getInstance","startEvent","EventHandler","trigger","defaultPrevented","elemActive","collapseInterface","Data","set","dimension","_getDimension","remove","add","style","setAttribute","setTransitioning","complete","capitalizedDimension","slice","scrollSize","_queueCallback","getBoundingClientRect","triggerArrayLength","isTransitioning","Boolean","selected","triggerArray","isOpen","data","Manipulator","getDataAttributes","each","on","event","target","tagName","delegateTarget","preventDefault","triggerData","selectorElements"],"mappings":"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"}
\ No newline at end of file +{"version":3,"file":"collapse.js","sources":["../src/util/index.js","../src/collapse.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return document.querySelector(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight\n}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElement,\n getSelectorFromElement,\n getElementFromSelector,\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 = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n toggle: true,\n parent: null\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(null|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._isTransitioning = false\n this._config = this._getConfig(config)\n this._triggerArray = []\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElem => foundElem === this._element)\n\n if (selector !== null && filterElement.length) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._initializeChildren()\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n toggle() {\n if (this._isShown()) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._isShown()) {\n return\n }\n\n let actives = []\n let activesData\n\n if (this._config.parent) {\n const children = SelectorEngine.find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent)\n actives = SelectorEngine.find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)) // remove children if greater depth\n }\n\n const container = SelectorEngine.findOne(this._selector)\n if (actives.length) {\n const tempActiveData = actives.find(elem => container !== elem)\n activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null\n\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n actives.forEach(elemActive => {\n if (container !== elemActive) {\n Collapse.getOrCreateInstance(elemActive, { toggle: false }).hide()\n }\n\n if (!activesData) {\n Data.set(elemActive, DATA_KEY, null)\n }\n })\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n this._addAriaAndCollapsedClass(this._triggerArray, true)\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n\n this._queueCallback(complete, this._element, true)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const elem = getElementFromSelector(trigger)\n\n if (elem && !this._isShown(elem)) {\n this._addAriaAndCollapsedClass([trigger], false)\n }\n }\n\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n\n this._queueCallback(complete, this._element, true)\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW)\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n config.parent = getElement(config.parent)\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n }\n\n _initializeChildren() {\n if (!this._config.parent) {\n return\n }\n\n const children = SelectorEngine.find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent)\n SelectorEngine.find(SELECTOR_DATA_TOGGLE, this._config.parent).filter(elem => !children.includes(elem))\n .forEach(element => {\n const selected = getElementFromSelector(element)\n\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected))\n }\n })\n }\n\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return\n }\n\n triggerArray.forEach(elem => {\n if (isOpen) {\n elem.classList.remove(CLASS_NAME_COLLAPSED)\n } else {\n elem.classList.add(CLASS_NAME_COLLAPSED)\n }\n\n elem.setAttribute('aria-expanded', isOpen)\n })\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const _config = {}\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n const data = Collapse.getOrCreateInstance(this, _config)\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]()\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 // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n event.preventDefault()\n }\n\n const selector = getSelectorFromElement(this)\n const selectorElements = SelectorEngine.find(selector)\n\n selectorElements.forEach(element => {\n Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n"],"names":["toType","obj","undefined","toString","call","match","toLowerCase","getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getSelectorFromElement","document","querySelector","getElementFromSelector","isElement","jquery","nodeType","getElement","length","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","TypeError","toUpperCase","reflow","offsetHeight","getjQuery","jQuery","window","body","hasAttribute","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","addEventListener","push","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","DATA_KEY","EVENT_KEY","DATA_API_KEY","Default","toggle","parent","DefaultType","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","EVENT_CLICK_DATA_API","CLASS_NAME_SHOW","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","SELECTOR_DATA_TOGGLE","Collapse","BaseComponent","constructor","_isTransitioning","_config","_getConfig","_triggerArray","toggleList","SelectorEngine","find","i","len","elem","filterElement","filter","foundElem","_element","_selector","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","actives","activesData","children","container","findOne","tempActiveData","getInstance","startEvent","EventHandler","trigger","defaultPrevented","elemActive","getOrCreateInstance","Data","set","dimension","_getDimension","classList","remove","add","style","complete","capitalizedDimension","slice","scrollSize","_queueCallback","getBoundingClientRect","triggerArrayLength","contains","Manipulator","getDataAttributes","Boolean","selected","triggerArray","isOpen","setAttribute","each","data","on","event","target","tagName","delegateTarget","preventDefault","selectorElements"],"mappings":"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"}
\ No newline at end of file diff --git a/vendor/twbs/bootstrap/js/dist/dom/data.js b/vendor/twbs/bootstrap/js/dist/dom/data.js index e6e19386f..a9413cb73 100644 --- a/vendor/twbs/bootstrap/js/dist/dom/data.js +++ b/vendor/twbs/bootstrap/js/dist/dom/data.js @@ -1,5 +1,5 @@ /*! - * Bootstrap data.js v5.0.2 (https://getbootstrap.com/) + * Bootstrap data.js v5.1.1 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ @@ -11,7 +11,7 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): dom/data.js + * Bootstrap (v5.1.1): dom/data.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ diff --git a/vendor/twbs/bootstrap/js/dist/dom/data.js.map b/vendor/twbs/bootstrap/js/dist/dom/data.js.map index 0986aba12..7ee835dd4 100644 --- a/vendor/twbs/bootstrap/js/dist/dom/data.js.map +++ b/vendor/twbs/bootstrap/js/dist/dom/data.js.map @@ -1 +1 @@ -{"version":3,"file":"data.js","sources":["../../src/dom/data.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst elementMap = new Map()\n\nexport default {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map())\n }\n\n const instanceMap = elementMap.get(element)\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n return\n }\n\n instanceMap.set(key, instance)\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null\n }\n\n return null\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return\n }\n\n const instanceMap = elementMap.get(element)\n\n instanceMap.delete(key)\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element)\n }\n }\n}\n"],"names":["elementMap","Map","set","element","key","instance","has","instanceMap","get","size","console","error","Array","from","keys","remove","delete"],"mappings":";;;;;;;;;;;EAAA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EAEA,MAAMA,UAAU,GAAG,IAAIC,GAAJ,EAAnB;AAEA,aAAe;EACbC,EAAAA,GAAG,CAACC,OAAD,EAAUC,GAAV,EAAeC,QAAf,EAAyB;EAC1B,QAAI,CAACL,UAAU,CAACM,GAAX,CAAeH,OAAf,CAAL,EAA8B;EAC5BH,MAAAA,UAAU,CAACE,GAAX,CAAeC,OAAf,EAAwB,IAAIF,GAAJ,EAAxB;EACD;;EAED,UAAMM,WAAW,GAAGP,UAAU,CAACQ,GAAX,CAAeL,OAAf,CAApB,CAL0B;EAQ1B;;EACA,QAAI,CAACI,WAAW,CAACD,GAAZ,CAAgBF,GAAhB,CAAD,IAAyBG,WAAW,CAACE,IAAZ,KAAqB,CAAlD,EAAqD;EACnD;EACAC,MAAAA,OAAO,CAACC,KAAR,CAAe,+EAA8EC,KAAK,CAACC,IAAN,CAAWN,WAAW,CAACO,IAAZ,EAAX,EAA+B,CAA/B,CAAkC,GAA/H;EACA;EACD;;EAEDP,IAAAA,WAAW,CAACL,GAAZ,CAAgBE,GAAhB,EAAqBC,QAArB;EACD,GAjBY;;EAmBbG,EAAAA,GAAG,CAACL,OAAD,EAAUC,GAAV,EAAe;EAChB,QAAIJ,UAAU,CAACM,GAAX,CAAeH,OAAf,CAAJ,EAA6B;EAC3B,aAAOH,UAAU,CAACQ,GAAX,CAAeL,OAAf,EAAwBK,GAAxB,CAA4BJ,GAA5B,KAAoC,IAA3C;EACD;;EAED,WAAO,IAAP;EACD,GAzBY;;EA2BbW,EAAAA,MAAM,CAACZ,OAAD,EAAUC,GAAV,EAAe;EACnB,QAAI,CAACJ,UAAU,CAACM,GAAX,CAAeH,OAAf,CAAL,EAA8B;EAC5B;EACD;;EAED,UAAMI,WAAW,GAAGP,UAAU,CAACQ,GAAX,CAAeL,OAAf,CAApB;EAEAI,IAAAA,WAAW,CAACS,MAAZ,CAAmBZ,GAAnB,EAPmB;;EAUnB,QAAIG,WAAW,CAACE,IAAZ,KAAqB,CAAzB,EAA4B;EAC1BT,MAAAA,UAAU,CAACgB,MAAX,CAAkBb,OAAlB;EACD;EACF;;EAxCY,CAAf;;;;;;;;"}
\ No newline at end of file +{"version":3,"file":"data.js","sources":["../../src/dom/data.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst elementMap = new Map()\n\nexport default {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map())\n }\n\n const instanceMap = elementMap.get(element)\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n return\n }\n\n instanceMap.set(key, instance)\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null\n }\n\n return null\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return\n }\n\n const instanceMap = elementMap.get(element)\n\n instanceMap.delete(key)\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element)\n }\n }\n}\n"],"names":["elementMap","Map","set","element","key","instance","has","instanceMap","get","size","console","error","Array","from","keys","remove","delete"],"mappings":";;;;;;;;;;;EAAA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EAEA,MAAMA,UAAU,GAAG,IAAIC,GAAJ,EAAnB;AAEA,aAAe;EACbC,EAAAA,GAAG,CAACC,OAAD,EAAUC,GAAV,EAAeC,QAAf,EAAyB;EAC1B,QAAI,CAACL,UAAU,CAACM,GAAX,CAAeH,OAAf,CAAL,EAA8B;EAC5BH,MAAAA,UAAU,CAACE,GAAX,CAAeC,OAAf,EAAwB,IAAIF,GAAJ,EAAxB;EACD;;EAED,UAAMM,WAAW,GAAGP,UAAU,CAACQ,GAAX,CAAeL,OAAf,CAApB,CAL0B;EAQ1B;;EACA,QAAI,CAACI,WAAW,CAACD,GAAZ,CAAgBF,GAAhB,CAAD,IAAyBG,WAAW,CAACE,IAAZ,KAAqB,CAAlD,EAAqD;EACnD;EACAC,MAAAA,OAAO,CAACC,KAAR,CAAe,+EAA8EC,KAAK,CAACC,IAAN,CAAWN,WAAW,CAACO,IAAZ,EAAX,EAA+B,CAA/B,CAAkC,GAA/H;EACA;EACD;;EAEDP,IAAAA,WAAW,CAACL,GAAZ,CAAgBE,GAAhB,EAAqBC,QAArB;EACD,GAjBY;;EAmBbG,EAAAA,GAAG,CAACL,OAAD,EAAUC,GAAV,EAAe;EAChB,QAAIJ,UAAU,CAACM,GAAX,CAAeH,OAAf,CAAJ,EAA6B;EAC3B,aAAOH,UAAU,CAACQ,GAAX,CAAeL,OAAf,EAAwBK,GAAxB,CAA4BJ,GAA5B,KAAoC,IAA3C;EACD;;EAED,WAAO,IAAP;EACD,GAzBY;;EA2BbW,EAAAA,MAAM,CAACZ,OAAD,EAAUC,GAAV,EAAe;EACnB,QAAI,CAACJ,UAAU,CAACM,GAAX,CAAeH,OAAf,CAAL,EAA8B;EAC5B;EACD;;EAED,UAAMI,WAAW,GAAGP,UAAU,CAACQ,GAAX,CAAeL,OAAf,CAApB;EAEAI,IAAAA,WAAW,CAACS,MAAZ,CAAmBZ,GAAnB,EAPmB;;EAUnB,QAAIG,WAAW,CAACE,IAAZ,KAAqB,CAAzB,EAA4B;EAC1BT,MAAAA,UAAU,CAACgB,MAAX,CAAkBb,OAAlB;EACD;EACF;;EAxCY,CAAf;;;;;;;;"}
\ No newline at end of file diff --git a/vendor/twbs/bootstrap/js/dist/dom/event-handler.js b/vendor/twbs/bootstrap/js/dist/dom/event-handler.js index bca25d463..8ca91b5c7 100644 --- a/vendor/twbs/bootstrap/js/dist/dom/event-handler.js +++ b/vendor/twbs/bootstrap/js/dist/dom/event-handler.js @@ -1,5 +1,5 @@ /*! - * Bootstrap event-handler.js v5.0.2 (https://getbootstrap.com/) + * Bootstrap event-handler.js v5.1.1 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ @@ -9,6 +9,13 @@ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.EventHandler = factory()); }(this, (function () { 'use strict'; + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.1): util/index.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + const getjQuery = () => { const { jQuery @@ -23,7 +30,7 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): dom/event-handler.js + * Bootstrap (v5.1.1): dom/event-handler.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -86,7 +93,6 @@ event.delegateTarget = target; if (handler.oneOff) { - // eslint-disable-next-line unicorn/consistent-destructuring EventHandler.off(element, event.type, selector, fn); } diff --git a/vendor/twbs/bootstrap/js/dist/dom/event-handler.js.map b/vendor/twbs/bootstrap/js/dist/dom/event-handler.js.map index e259d3cdd..c2ff2b0e5 100644 --- a/vendor/twbs/bootstrap/js/dist/dom/event-handler.js.map +++ b/vendor/twbs/bootstrap/js/dist/dom/event-handler.js.map @@ -1 +1 @@ -{"version":3,"file":"event-handler.js","sources":["../../src/util/index.js","../../src/dom/event-handler.js"],"sourcesContent":["import SelectorEngine from '../dom/selector-engine'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return SelectorEngine.findOne(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\nconst customEventsRegex = /^(mouseenter|mouseleave)/i\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n const uid = getUidEvent(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n event.delegateTarget = element\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (let i = domElements.length; i--;) {\n if (domElements[i] === target) {\n event.delegateTarget = target\n\n if (handler.oneOff) {\n // eslint-disable-next-line unicorn/consistent-destructuring\n EventHandler.off(element, event.type, selector, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n\n // To please ESLint\n return null\n }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n const uidEventList = Object.keys(events)\n\n for (let i = 0, len = uidEventList.length; i < len; i++) {\n const event = events[uidEventList[i]]\n\n if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n return event\n }\n }\n\n return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n const delegation = typeof handler === 'string'\n const originalHandler = delegation ? delegationFn : handler\n\n let typeEvent = getTypeEvent(originalTypeEvent)\n const isNative = nativeEvents.has(typeEvent)\n\n if (!isNative) {\n typeEvent = originalTypeEvent\n }\n\n return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n if (!handler) {\n handler = delegationFn\n delegationFn = null\n }\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (customEventsRegex.test(originalTypeEvent)) {\n const wrapFn = fn => {\n return function (event) {\n if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n return fn.call(this, event)\n }\n }\n }\n\n if (delegationFn) {\n delegationFn = wrapFn(delegationFn)\n } else {\n handler = wrapFn(handler)\n }\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const events = getEvent(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n if (previousFn) {\n previousFn.oneOff = previousFn.oneOff && oneOff\n\n return\n }\n\n const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = delegation ?\n bootstrapDelegationHandler(element, handler, delegationFn) :\n bootstrapHandler(element, handler)\n\n fn.delegationSelector = delegation ? handler : null\n fn.originalHandler = originalHandler\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n Object.keys(storeElementEvent).forEach(handlerKey => {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '')\n return customEvents[event] || event\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, false)\n },\n\n one(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFn) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getEvent(element)\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof originalHandler !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!events || !events[typeEvent]) {\n return\n }\n\n removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n return\n }\n\n if (isNamespace) {\n Object.keys(events).forEach(elementEvent => {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n })\n }\n\n const storeElementEvent = events[typeEvent] || {}\n Object.keys(storeElementEvent).forEach(keyHandlers => {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = getTypeEvent(event)\n const inNamespace = event !== typeEvent\n const isNative = nativeEvents.has(typeEvent)\n\n let jQueryEvent\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n let evt = null\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n if (isNative) {\n evt = document.createEvent('HTMLEvents')\n evt.initEvent(typeEvent, bubbles, true)\n } else {\n evt = new CustomEvent(event, {\n bubbles,\n cancelable: true\n })\n }\n\n // merge custom information in our event\n if (typeof args !== 'undefined') {\n Object.keys(args).forEach(key => {\n Object.defineProperty(evt, key, {\n get() {\n return args[key]\n }\n })\n })\n }\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nexport default EventHandler\n"],"names":["getjQuery","jQuery","window","document","body","hasAttribute","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","customEventsRegex","nativeEvents","Set","getUidEvent","element","uid","getEvent","bootstrapHandler","fn","handler","event","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","selector","domElements","querySelectorAll","target","parentNode","i","length","findHandler","events","delegationSelector","uidEventList","Object","keys","len","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","getTypeEvent","isNative","has","addHandler","test","wrapFn","relatedTarget","contains","call","handlers","previousFn","replace","addEventListener","removeHandler","removeEventListener","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","forEach","handlerKey","includes","on","one","inNamespace","isNamespace","startsWith","elementEvent","slice","keyHandlers","trigger","args","$","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","evt","Event","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","key","defineProperty","get","preventDefault","dispatchEvent"],"mappings":"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"}
\ No newline at end of file +{"version":3,"file":"event-handler.js","sources":["../../src/util/index.js","../../src/dom/event-handler.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return document.querySelector(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight\n}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\nconst customEventsRegex = /^(mouseenter|mouseleave)/i\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n const uid = getUidEvent(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n event.delegateTarget = element\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (let i = domElements.length; i--;) {\n if (domElements[i] === target) {\n event.delegateTarget = target\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n\n // To please ESLint\n return null\n }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n const uidEventList = Object.keys(events)\n\n for (let i = 0, len = uidEventList.length; i < len; i++) {\n const event = events[uidEventList[i]]\n\n if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n return event\n }\n }\n\n return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n const delegation = typeof handler === 'string'\n const originalHandler = delegation ? delegationFn : handler\n\n let typeEvent = getTypeEvent(originalTypeEvent)\n const isNative = nativeEvents.has(typeEvent)\n\n if (!isNative) {\n typeEvent = originalTypeEvent\n }\n\n return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n if (!handler) {\n handler = delegationFn\n delegationFn = null\n }\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (customEventsRegex.test(originalTypeEvent)) {\n const wrapFn = fn => {\n return function (event) {\n if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n return fn.call(this, event)\n }\n }\n }\n\n if (delegationFn) {\n delegationFn = wrapFn(delegationFn)\n } else {\n handler = wrapFn(handler)\n }\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const events = getEvent(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n if (previousFn) {\n previousFn.oneOff = previousFn.oneOff && oneOff\n\n return\n }\n\n const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = delegation ?\n bootstrapDelegationHandler(element, handler, delegationFn) :\n bootstrapHandler(element, handler)\n\n fn.delegationSelector = delegation ? handler : null\n fn.originalHandler = originalHandler\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n Object.keys(storeElementEvent).forEach(handlerKey => {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '')\n return customEvents[event] || event\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, false)\n },\n\n one(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFn) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getEvent(element)\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof originalHandler !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!events || !events[typeEvent]) {\n return\n }\n\n removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n return\n }\n\n if (isNamespace) {\n Object.keys(events).forEach(elementEvent => {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n })\n }\n\n const storeElementEvent = events[typeEvent] || {}\n Object.keys(storeElementEvent).forEach(keyHandlers => {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = getTypeEvent(event)\n const inNamespace = event !== typeEvent\n const isNative = nativeEvents.has(typeEvent)\n\n let jQueryEvent\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n let evt = null\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n if (isNative) {\n evt = document.createEvent('HTMLEvents')\n evt.initEvent(typeEvent, bubbles, true)\n } else {\n evt = new CustomEvent(event, {\n bubbles,\n cancelable: true\n })\n }\n\n // merge custom information in our event\n if (typeof args !== 'undefined') {\n Object.keys(args).forEach(key => {\n Object.defineProperty(evt, key, {\n get() {\n return args[key]\n }\n })\n })\n }\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nexport default EventHandler\n"],"names":["getjQuery","jQuery","window","document","body","hasAttribute","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","customEventsRegex","nativeEvents","Set","getUidEvent","element","uid","getEvent","bootstrapHandler","fn","handler","event","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","selector","domElements","querySelectorAll","target","parentNode","i","length","findHandler","events","delegationSelector","uidEventList","Object","keys","len","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","getTypeEvent","isNative","has","addHandler","test","wrapFn","relatedTarget","contains","call","handlers","previousFn","replace","addEventListener","removeHandler","removeEventListener","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","forEach","handlerKey","includes","on","one","inNamespace","isNamespace","startsWith","elementEvent","slice","keyHandlers","trigger","args","$","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","evt","Event","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","key","defineProperty","get","preventDefault","dispatchEvent"],"mappings":"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"}
\ No newline at end of file diff --git a/vendor/twbs/bootstrap/js/dist/dom/manipulator.js b/vendor/twbs/bootstrap/js/dist/dom/manipulator.js index 444ee63f5..1d1ebc780 100644 --- a/vendor/twbs/bootstrap/js/dist/dom/manipulator.js +++ b/vendor/twbs/bootstrap/js/dist/dom/manipulator.js @@ -1,5 +1,5 @@ /*! - * Bootstrap manipulator.js v5.0.2 (https://getbootstrap.com/) + * Bootstrap manipulator.js v5.1.1 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ @@ -11,7 +11,7 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): dom/manipulator.js + * Bootstrap (v5.1.1): dom/manipulator.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -69,8 +69,8 @@ offset(element) { const rect = element.getBoundingClientRect(); return { - top: rect.top + document.body.scrollTop, - left: rect.left + document.body.scrollLeft + top: rect.top + window.pageYOffset, + left: rect.left + window.pageXOffset }; }, diff --git a/vendor/twbs/bootstrap/js/dist/dom/manipulator.js.map b/vendor/twbs/bootstrap/js/dist/dom/manipulator.js.map index 73d0d6e37..c6cefd570 100644 --- a/vendor/twbs/bootstrap/js/dist/dom/manipulator.js.map +++ b/vendor/twbs/bootstrap/js/dist/dom/manipulator.js.map @@ -1 +1 @@ -{"version":3,"file":"manipulator.js","sources":["../../src/dom/manipulator.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n if (val === 'true') {\n return true\n }\n\n if (val === 'false') {\n return false\n }\n\n if (val === Number(val).toString()) {\n return Number(val)\n }\n\n if (val === '' || val === 'null') {\n return null\n }\n\n return val\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n\n Object.keys(element.dataset)\n .filter(key => key.startsWith('bs'))\n .forEach(key => {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n })\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n },\n\n offset(element) {\n const rect = element.getBoundingClientRect()\n\n return {\n top: rect.top + document.body.scrollTop,\n left: rect.left + document.body.scrollLeft\n }\n },\n\n position(element) {\n return {\n top: element.offsetTop,\n left: element.offsetLeft\n }\n }\n}\n\nexport default Manipulator\n"],"names":["normalizeData","val","Number","toString","normalizeDataKey","key","replace","chr","toLowerCase","Manipulator","setDataAttribute","element","value","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","Object","keys","dataset","filter","startsWith","forEach","pureKey","charAt","slice","length","getDataAttribute","getAttribute","offset","rect","getBoundingClientRect","top","document","body","scrollTop","left","scrollLeft","position","offsetTop","offsetLeft"],"mappings":";;;;;;;;;;;EAAA;EACA;EACA;EACA;EACA;EACA;EAEA,SAASA,aAAT,CAAuBC,GAAvB,EAA4B;EAC1B,MAAIA,GAAG,KAAK,MAAZ,EAAoB;EAClB,WAAO,IAAP;EACD;;EAED,MAAIA,GAAG,KAAK,OAAZ,EAAqB;EACnB,WAAO,KAAP;EACD;;EAED,MAAIA,GAAG,KAAKC,MAAM,CAACD,GAAD,CAAN,CAAYE,QAAZ,EAAZ,EAAoC;EAClC,WAAOD,MAAM,CAACD,GAAD,CAAb;EACD;;EAED,MAAIA,GAAG,KAAK,EAAR,IAAcA,GAAG,KAAK,MAA1B,EAAkC;EAChC,WAAO,IAAP;EACD;;EAED,SAAOA,GAAP;EACD;;EAED,SAASG,gBAAT,CAA0BC,GAA1B,EAA+B;EAC7B,SAAOA,GAAG,CAACC,OAAJ,CAAY,QAAZ,EAAsBC,GAAG,IAAK,IAAGA,GAAG,CAACC,WAAJ,EAAkB,EAAnD,CAAP;EACD;;QAEKC,WAAW,GAAG;EAClBC,EAAAA,gBAAgB,CAACC,OAAD,EAAUN,GAAV,EAAeO,KAAf,EAAsB;EACpCD,IAAAA,OAAO,CAACE,YAAR,CAAsB,WAAUT,gBAAgB,CAACC,GAAD,CAAM,EAAtD,EAAyDO,KAAzD;EACD,GAHiB;;EAKlBE,EAAAA,mBAAmB,CAACH,OAAD,EAAUN,GAAV,EAAe;EAChCM,IAAAA,OAAO,CAACI,eAAR,CAAyB,WAAUX,gBAAgB,CAACC,GAAD,CAAM,EAAzD;EACD,GAPiB;;EASlBW,EAAAA,iBAAiB,CAACL,OAAD,EAAU;EACzB,QAAI,CAACA,OAAL,EAAc;EACZ,aAAO,EAAP;EACD;;EAED,UAAMM,UAAU,GAAG,EAAnB;EAEAC,IAAAA,MAAM,CAACC,IAAP,CAAYR,OAAO,CAACS,OAApB,EACGC,MADH,CACUhB,GAAG,IAAIA,GAAG,CAACiB,UAAJ,CAAe,IAAf,CADjB,EAEGC,OAFH,CAEWlB,GAAG,IAAI;EACd,UAAImB,OAAO,GAAGnB,GAAG,CAACC,OAAJ,CAAY,KAAZ,EAAmB,EAAnB,CAAd;EACAkB,MAAAA,OAAO,GAAGA,OAAO,CAACC,MAAR,CAAe,CAAf,EAAkBjB,WAAlB,KAAkCgB,OAAO,CAACE,KAAR,CAAc,CAAd,EAAiBF,OAAO,CAACG,MAAzB,CAA5C;EACAV,MAAAA,UAAU,CAACO,OAAD,CAAV,GAAsBxB,aAAa,CAACW,OAAO,CAACS,OAAR,CAAgBf,GAAhB,CAAD,CAAnC;EACD,KANH;EAQA,WAAOY,UAAP;EACD,GAzBiB;;EA2BlBW,EAAAA,gBAAgB,CAACjB,OAAD,EAAUN,GAAV,EAAe;EAC7B,WAAOL,aAAa,CAACW,OAAO,CAACkB,YAAR,CAAsB,WAAUzB,gBAAgB,CAACC,GAAD,CAAM,EAAtD,CAAD,CAApB;EACD,GA7BiB;;EA+BlByB,EAAAA,MAAM,CAACnB,OAAD,EAAU;EACd,UAAMoB,IAAI,GAAGpB,OAAO,CAACqB,qBAAR,EAAb;EAEA,WAAO;EACLC,MAAAA,GAAG,EAAEF,IAAI,CAACE,GAAL,GAAWC,QAAQ,CAACC,IAAT,CAAcC,SADzB;EAELC,MAAAA,IAAI,EAAEN,IAAI,CAACM,IAAL,GAAYH,QAAQ,CAACC,IAAT,CAAcG;EAF3B,KAAP;EAID,GAtCiB;;EAwClBC,EAAAA,QAAQ,CAAC5B,OAAD,EAAU;EAChB,WAAO;EACLsB,MAAAA,GAAG,EAAEtB,OAAO,CAAC6B,SADR;EAELH,MAAAA,IAAI,EAAE1B,OAAO,CAAC8B;EAFT,KAAP;EAID;;EA7CiB;;;;;;;;"}
\ No newline at end of file +{"version":3,"file":"manipulator.js","sources":["../../src/dom/manipulator.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n if (val === 'true') {\n return true\n }\n\n if (val === 'false') {\n return false\n }\n\n if (val === Number(val).toString()) {\n return Number(val)\n }\n\n if (val === '' || val === 'null') {\n return null\n }\n\n return val\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n\n Object.keys(element.dataset)\n .filter(key => key.startsWith('bs'))\n .forEach(key => {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n })\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n },\n\n offset(element) {\n const rect = element.getBoundingClientRect()\n\n return {\n top: rect.top + window.pageYOffset,\n left: rect.left + window.pageXOffset\n }\n },\n\n position(element) {\n return {\n top: element.offsetTop,\n left: element.offsetLeft\n }\n }\n}\n\nexport default Manipulator\n"],"names":["normalizeData","val","Number","toString","normalizeDataKey","key","replace","chr","toLowerCase","Manipulator","setDataAttribute","element","value","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","Object","keys","dataset","filter","startsWith","forEach","pureKey","charAt","slice","length","getDataAttribute","getAttribute","offset","rect","getBoundingClientRect","top","window","pageYOffset","left","pageXOffset","position","offsetTop","offsetLeft"],"mappings":";;;;;;;;;;;EAAA;EACA;EACA;EACA;EACA;EACA;EAEA,SAASA,aAAT,CAAuBC,GAAvB,EAA4B;EAC1B,MAAIA,GAAG,KAAK,MAAZ,EAAoB;EAClB,WAAO,IAAP;EACD;;EAED,MAAIA,GAAG,KAAK,OAAZ,EAAqB;EACnB,WAAO,KAAP;EACD;;EAED,MAAIA,GAAG,KAAKC,MAAM,CAACD,GAAD,CAAN,CAAYE,QAAZ,EAAZ,EAAoC;EAClC,WAAOD,MAAM,CAACD,GAAD,CAAb;EACD;;EAED,MAAIA,GAAG,KAAK,EAAR,IAAcA,GAAG,KAAK,MAA1B,EAAkC;EAChC,WAAO,IAAP;EACD;;EAED,SAAOA,GAAP;EACD;;EAED,SAASG,gBAAT,CAA0BC,GAA1B,EAA+B;EAC7B,SAAOA,GAAG,CAACC,OAAJ,CAAY,QAAZ,EAAsBC,GAAG,IAAK,IAAGA,GAAG,CAACC,WAAJ,EAAkB,EAAnD,CAAP;EACD;;QAEKC,WAAW,GAAG;EAClBC,EAAAA,gBAAgB,CAACC,OAAD,EAAUN,GAAV,EAAeO,KAAf,EAAsB;EACpCD,IAAAA,OAAO,CAACE,YAAR,CAAsB,WAAUT,gBAAgB,CAACC,GAAD,CAAM,EAAtD,EAAyDO,KAAzD;EACD,GAHiB;;EAKlBE,EAAAA,mBAAmB,CAACH,OAAD,EAAUN,GAAV,EAAe;EAChCM,IAAAA,OAAO,CAACI,eAAR,CAAyB,WAAUX,gBAAgB,CAACC,GAAD,CAAM,EAAzD;EACD,GAPiB;;EASlBW,EAAAA,iBAAiB,CAACL,OAAD,EAAU;EACzB,QAAI,CAACA,OAAL,EAAc;EACZ,aAAO,EAAP;EACD;;EAED,UAAMM,UAAU,GAAG,EAAnB;EAEAC,IAAAA,MAAM,CAACC,IAAP,CAAYR,OAAO,CAACS,OAApB,EACGC,MADH,CACUhB,GAAG,IAAIA,GAAG,CAACiB,UAAJ,CAAe,IAAf,CADjB,EAEGC,OAFH,CAEWlB,GAAG,IAAI;EACd,UAAImB,OAAO,GAAGnB,GAAG,CAACC,OAAJ,CAAY,KAAZ,EAAmB,EAAnB,CAAd;EACAkB,MAAAA,OAAO,GAAGA,OAAO,CAACC,MAAR,CAAe,CAAf,EAAkBjB,WAAlB,KAAkCgB,OAAO,CAACE,KAAR,CAAc,CAAd,EAAiBF,OAAO,CAACG,MAAzB,CAA5C;EACAV,MAAAA,UAAU,CAACO,OAAD,CAAV,GAAsBxB,aAAa,CAACW,OAAO,CAACS,OAAR,CAAgBf,GAAhB,CAAD,CAAnC;EACD,KANH;EAQA,WAAOY,UAAP;EACD,GAzBiB;;EA2BlBW,EAAAA,gBAAgB,CAACjB,OAAD,EAAUN,GAAV,EAAe;EAC7B,WAAOL,aAAa,CAACW,OAAO,CAACkB,YAAR,CAAsB,WAAUzB,gBAAgB,CAACC,GAAD,CAAM,EAAtD,CAAD,CAApB;EACD,GA7BiB;;EA+BlByB,EAAAA,MAAM,CAACnB,OAAD,EAAU;EACd,UAAMoB,IAAI,GAAGpB,OAAO,CAACqB,qBAAR,EAAb;EAEA,WAAO;EACLC,MAAAA,GAAG,EAAEF,IAAI,CAACE,GAAL,GAAWC,MAAM,CAACC,WADlB;EAELC,MAAAA,IAAI,EAAEL,IAAI,CAACK,IAAL,GAAYF,MAAM,CAACG;EAFpB,KAAP;EAID,GAtCiB;;EAwClBC,EAAAA,QAAQ,CAAC3B,OAAD,EAAU;EAChB,WAAO;EACLsB,MAAAA,GAAG,EAAEtB,OAAO,CAAC4B,SADR;EAELH,MAAAA,IAAI,EAAEzB,OAAO,CAAC6B;EAFT,KAAP;EAID;;EA7CiB;;;;;;;;"}
\ No newline at end of file diff --git a/vendor/twbs/bootstrap/js/dist/dom/selector-engine.js b/vendor/twbs/bootstrap/js/dist/dom/selector-engine.js index de6949b17..ed761bc44 100644 --- a/vendor/twbs/bootstrap/js/dist/dom/selector-engine.js +++ b/vendor/twbs/bootstrap/js/dist/dom/selector-engine.js @@ -1,5 +1,5 @@ /*! - * Bootstrap selector-engine.js v5.0.2 (https://getbootstrap.com/) + * Bootstrap selector-engine.js v5.1.1 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ @@ -11,15 +11,52 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): dom/selector-engine.js + * Bootstrap (v5.1.1): util/index.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ + const isElement = obj => { + if (!obj || typeof obj !== 'object') { + return false; + } + + if (typeof obj.jquery !== 'undefined') { + obj = obj[0]; + } + + return typeof obj.nodeType !== 'undefined'; + }; + + const isVisible = element => { + if (!isElement(element) || element.getClientRects().length === 0) { + return false; + } + + return getComputedStyle(element).getPropertyValue('visibility') === 'visible'; + }; + + const isDisabled = element => { + if (!element || element.nodeType !== Node.ELEMENT_NODE) { + return true; + } + + if (element.classList.contains('disabled')) { + return true; + } + + if (typeof element.disabled !== 'undefined') { + return element.disabled; + } + + return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'; + }; + /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.1): dom/selector-engine.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- */ const NODE_TEXT = 3; const SelectorEngine = { @@ -76,6 +113,11 @@ } return []; + }, + + focusableChildren(element) { + const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(selector => `${selector}:not([tabindex^="-"])`).join(', '); + return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el)); } }; diff --git a/vendor/twbs/bootstrap/js/dist/dom/selector-engine.js.map b/vendor/twbs/bootstrap/js/dist/dom/selector-engine.js.map index 63cf7801e..dc592b4ec 100644 --- a/vendor/twbs/bootstrap/js/dist/dom/selector-engine.js.map +++ b/vendor/twbs/bootstrap/js/dist/dom/selector-engine.js.map @@ -1 +1 @@ -{"version":3,"file":"selector-engine.js","sources":["../../src/dom/selector-engine.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NODE_TEXT = 3\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n return [].concat(...element.children)\n .filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n\n let ancestor = element.parentNode\n\n while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n if (ancestor.matches(selector)) {\n parents.push(ancestor)\n }\n\n ancestor = ancestor.parentNode\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (next.matches(selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n }\n}\n\nexport default SelectorEngine\n"],"names":["NODE_TEXT","SelectorEngine","find","selector","element","document","documentElement","concat","Element","prototype","querySelectorAll","call","findOne","querySelector","children","filter","child","matches","parents","ancestor","parentNode","nodeType","Node","ELEMENT_NODE","push","prev","previous","previousElementSibling","next","nextElementSibling"],"mappings":";;;;;;;;;;;EAAA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EAEA,MAAMA,SAAS,GAAG,CAAlB;QAEMC,cAAc,GAAG;EACrBC,EAAAA,IAAI,CAACC,QAAD,EAAWC,OAAO,GAAGC,QAAQ,CAACC,eAA9B,EAA+C;EACjD,WAAO,GAAGC,MAAH,CAAU,GAAGC,OAAO,CAACC,SAAR,CAAkBC,gBAAlB,CAAmCC,IAAnC,CAAwCP,OAAxC,EAAiDD,QAAjD,CAAb,CAAP;EACD,GAHoB;;EAKrBS,EAAAA,OAAO,CAACT,QAAD,EAAWC,OAAO,GAAGC,QAAQ,CAACC,eAA9B,EAA+C;EACpD,WAAOE,OAAO,CAACC,SAAR,CAAkBI,aAAlB,CAAgCF,IAAhC,CAAqCP,OAArC,EAA8CD,QAA9C,CAAP;EACD,GAPoB;;EASrBW,EAAAA,QAAQ,CAACV,OAAD,EAAUD,QAAV,EAAoB;EAC1B,WAAO,GAAGI,MAAH,CAAU,GAAGH,OAAO,CAACU,QAArB,EACJC,MADI,CACGC,KAAK,IAAIA,KAAK,CAACC,OAAN,CAAcd,QAAd,CADZ,CAAP;EAED,GAZoB;;EAcrBe,EAAAA,OAAO,CAACd,OAAD,EAAUD,QAAV,EAAoB;EACzB,UAAMe,OAAO,GAAG,EAAhB;EAEA,QAAIC,QAAQ,GAAGf,OAAO,CAACgB,UAAvB;;EAEA,WAAOD,QAAQ,IAAIA,QAAQ,CAACE,QAAT,KAAsBC,IAAI,CAACC,YAAvC,IAAuDJ,QAAQ,CAACE,QAAT,KAAsBrB,SAApF,EAA+F;EAC7F,UAAImB,QAAQ,CAACF,OAAT,CAAiBd,QAAjB,CAAJ,EAAgC;EAC9Be,QAAAA,OAAO,CAACM,IAAR,CAAaL,QAAb;EACD;;EAEDA,MAAAA,QAAQ,GAAGA,QAAQ,CAACC,UAApB;EACD;;EAED,WAAOF,OAAP;EACD,GA5BoB;;EA8BrBO,EAAAA,IAAI,CAACrB,OAAD,EAAUD,QAAV,EAAoB;EACtB,QAAIuB,QAAQ,GAAGtB,OAAO,CAACuB,sBAAvB;;EAEA,WAAOD,QAAP,EAAiB;EACf,UAAIA,QAAQ,CAACT,OAAT,CAAiBd,QAAjB,CAAJ,EAAgC;EAC9B,eAAO,CAACuB,QAAD,CAAP;EACD;;EAEDA,MAAAA,QAAQ,GAAGA,QAAQ,CAACC,sBAApB;EACD;;EAED,WAAO,EAAP;EACD,GA1CoB;;EA4CrBC,EAAAA,IAAI,CAACxB,OAAD,EAAUD,QAAV,EAAoB;EACtB,QAAIyB,IAAI,GAAGxB,OAAO,CAACyB,kBAAnB;;EAEA,WAAOD,IAAP,EAAa;EACX,UAAIA,IAAI,CAACX,OAAL,CAAad,QAAb,CAAJ,EAA4B;EAC1B,eAAO,CAACyB,IAAD,CAAP;EACD;;EAEDA,MAAAA,IAAI,GAAGA,IAAI,CAACC,kBAAZ;EACD;;EAED,WAAO,EAAP;EACD;;EAxDoB;;;;;;;;"}
\ No newline at end of file +{"version":3,"file":"selector-engine.js","sources":["../../src/util/index.js","../../src/dom/selector-engine.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return document.querySelector(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight\n}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible } from '../util/index'\n\nconst NODE_TEXT = 3\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n return [].concat(...element.children)\n .filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n\n let ancestor = element.parentNode\n\n while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n if (ancestor.matches(selector)) {\n parents.push(ancestor)\n }\n\n ancestor = ancestor.parentNode\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (next.matches(selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n },\n\n focusableChildren(element) {\n const focusables = [\n 'a',\n 'button',\n 'input',\n 'textarea',\n 'select',\n 'details',\n '[tabindex]',\n '[contenteditable=\"true\"]'\n ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(', ')\n\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n }\n}\n\nexport default SelectorEngine\n"],"names":["isElement","obj","jquery","nodeType","isVisible","element","getClientRects","length","getComputedStyle","getPropertyValue","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","getAttribute","NODE_TEXT","SelectorEngine","find","selector","document","documentElement","concat","Element","prototype","querySelectorAll","call","findOne","querySelector","children","filter","child","matches","parents","ancestor","parentNode","push","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","map","join","el"],"mappings":";;;;;;;;;;;EAAA;EACA;EACA;EACA;EACA;EACA;;EAiGA,MAAMA,SAAS,GAAGC,GAAG,IAAI;EACvB,MAAI,CAACA,GAAD,IAAQ,OAAOA,GAAP,KAAe,QAA3B,EAAqC;EACnC,WAAO,KAAP;EACD;;EAED,MAAI,OAAOA,GAAG,CAACC,MAAX,KAAsB,WAA1B,EAAuC;EACrCD,IAAAA,GAAG,GAAGA,GAAG,CAAC,CAAD,CAAT;EACD;;EAED,SAAO,OAAOA,GAAG,CAACE,QAAX,KAAwB,WAA/B;EACD,CAVD;;EAsCA,MAAMC,SAAS,GAAGC,OAAO,IAAI;EAC3B,MAAI,CAACL,SAAS,CAACK,OAAD,CAAV,IAAuBA,OAAO,CAACC,cAAR,GAAyBC,MAAzB,KAAoC,CAA/D,EAAkE;EAChE,WAAO,KAAP;EACD;;EAED,SAAOC,gBAAgB,CAACH,OAAD,CAAhB,CAA0BI,gBAA1B,CAA2C,YAA3C,MAA6D,SAApE;EACD,CAND;;EAQA,MAAMC,UAAU,GAAGL,OAAO,IAAI;EAC5B,MAAI,CAACA,OAAD,IAAYA,OAAO,CAACF,QAAR,KAAqBQ,IAAI,CAACC,YAA1C,EAAwD;EACtD,WAAO,IAAP;EACD;;EAED,MAAIP,OAAO,CAACQ,SAAR,CAAkBC,QAAlB,CAA2B,UAA3B,CAAJ,EAA4C;EAC1C,WAAO,IAAP;EACD;;EAED,MAAI,OAAOT,OAAO,CAACU,QAAf,KAA4B,WAAhC,EAA6C;EAC3C,WAAOV,OAAO,CAACU,QAAf;EACD;;EAED,SAAOV,OAAO,CAACW,YAAR,CAAqB,UAArB,KAAoCX,OAAO,CAACY,YAAR,CAAqB,UAArB,MAAqC,OAAhF;EACD,CAdD;;ECpJA;EACA;EACA;EACA;EACA;EACA;EAUA,MAAMC,SAAS,GAAG,CAAlB;QAEMC,cAAc,GAAG;EACrBC,EAAAA,IAAI,CAACC,QAAD,EAAWhB,OAAO,GAAGiB,QAAQ,CAACC,eAA9B,EAA+C;EACjD,WAAO,GAAGC,MAAH,CAAU,GAAGC,OAAO,CAACC,SAAR,CAAkBC,gBAAlB,CAAmCC,IAAnC,CAAwCvB,OAAxC,EAAiDgB,QAAjD,CAAb,CAAP;EACD,GAHoB;;EAKrBQ,EAAAA,OAAO,CAACR,QAAD,EAAWhB,OAAO,GAAGiB,QAAQ,CAACC,eAA9B,EAA+C;EACpD,WAAOE,OAAO,CAACC,SAAR,CAAkBI,aAAlB,CAAgCF,IAAhC,CAAqCvB,OAArC,EAA8CgB,QAA9C,CAAP;EACD,GAPoB;;EASrBU,EAAAA,QAAQ,CAAC1B,OAAD,EAAUgB,QAAV,EAAoB;EAC1B,WAAO,GAAGG,MAAH,CAAU,GAAGnB,OAAO,CAAC0B,QAArB,EACJC,MADI,CACGC,KAAK,IAAIA,KAAK,CAACC,OAAN,CAAcb,QAAd,CADZ,CAAP;EAED,GAZoB;;EAcrBc,EAAAA,OAAO,CAAC9B,OAAD,EAAUgB,QAAV,EAAoB;EACzB,UAAMc,OAAO,GAAG,EAAhB;EAEA,QAAIC,QAAQ,GAAG/B,OAAO,CAACgC,UAAvB;;EAEA,WAAOD,QAAQ,IAAIA,QAAQ,CAACjC,QAAT,KAAsBQ,IAAI,CAACC,YAAvC,IAAuDwB,QAAQ,CAACjC,QAAT,KAAsBe,SAApF,EAA+F;EAC7F,UAAIkB,QAAQ,CAACF,OAAT,CAAiBb,QAAjB,CAAJ,EAAgC;EAC9Bc,QAAAA,OAAO,CAACG,IAAR,CAAaF,QAAb;EACD;;EAEDA,MAAAA,QAAQ,GAAGA,QAAQ,CAACC,UAApB;EACD;;EAED,WAAOF,OAAP;EACD,GA5BoB;;EA8BrBI,EAAAA,IAAI,CAAClC,OAAD,EAAUgB,QAAV,EAAoB;EACtB,QAAImB,QAAQ,GAAGnC,OAAO,CAACoC,sBAAvB;;EAEA,WAAOD,QAAP,EAAiB;EACf,UAAIA,QAAQ,CAACN,OAAT,CAAiBb,QAAjB,CAAJ,EAAgC;EAC9B,eAAO,CAACmB,QAAD,CAAP;EACD;;EAEDA,MAAAA,QAAQ,GAAGA,QAAQ,CAACC,sBAApB;EACD;;EAED,WAAO,EAAP;EACD,GA1CoB;;EA4CrBC,EAAAA,IAAI,CAACrC,OAAD,EAAUgB,QAAV,EAAoB;EACtB,QAAIqB,IAAI,GAAGrC,OAAO,CAACsC,kBAAnB;;EAEA,WAAOD,IAAP,EAAa;EACX,UAAIA,IAAI,CAACR,OAAL,CAAab,QAAb,CAAJ,EAA4B;EAC1B,eAAO,CAACqB,IAAD,CAAP;EACD;;EAEDA,MAAAA,IAAI,GAAGA,IAAI,CAACC,kBAAZ;EACD;;EAED,WAAO,EAAP;EACD,GAxDoB;;EA0DrBC,EAAAA,iBAAiB,CAACvC,OAAD,EAAU;EACzB,UAAMwC,UAAU,GAAG,CACjB,GADiB,EAEjB,QAFiB,EAGjB,OAHiB,EAIjB,UAJiB,EAKjB,QALiB,EAMjB,SANiB,EAOjB,YAPiB,EAQjB,0BARiB,EASjBC,GATiB,CASbzB,QAAQ,IAAK,GAAEA,QAAS,uBATX,EASmC0B,IATnC,CASwC,IATxC,CAAnB;EAWA,WAAO,KAAK3B,IAAL,CAAUyB,UAAV,EAAsBxC,OAAtB,EAA+B2B,MAA/B,CAAsCgB,EAAE,IAAI,CAACtC,UAAU,CAACsC,EAAD,CAAX,IAAmB5C,SAAS,CAAC4C,EAAD,CAAxE,CAAP;EACD;;EAvEoB;;;;;;;;"}
\ No newline at end of file diff --git a/vendor/twbs/bootstrap/js/dist/dropdown.js b/vendor/twbs/bootstrap/js/dist/dropdown.js index 89ca569c7..bd4da508f 100644 --- a/vendor/twbs/bootstrap/js/dist/dropdown.js +++ b/vendor/twbs/bootstrap/js/dist/dropdown.js @@ -1,13 +1,13 @@ /*! - * Bootstrap dropdown.js v5.0.2 (https://getbootstrap.com/) + * Bootstrap dropdown.js v5.1.1 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@popperjs/core'), require('./dom/selector-engine.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./base-component.js')) : - typeof define === 'function' && define.amd ? define(['@popperjs/core', './dom/selector-engine', './dom/event-handler', './dom/manipulator', './base-component'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Dropdown = factory(global.Popper, global.SelectorEngine, global.EventHandler, global.Manipulator, global.Base)); -}(this, (function (Popper, SelectorEngine, EventHandler, Manipulator, BaseComponent) { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@popperjs/core'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./dom/selector-engine.js'), require('./base-component.js')) : + typeof define === 'function' && define.amd ? define(['@popperjs/core', './dom/event-handler', './dom/manipulator', './dom/selector-engine', './base-component'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Dropdown = factory(global.Popper, global.EventHandler, global.Manipulator, global.SelectorEngine, global.Base)); +}(this, (function (Popper, EventHandler, Manipulator, SelectorEngine, BaseComponent) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } @@ -32,11 +32,18 @@ } var Popper__namespace = /*#__PURE__*/_interopNamespace(Popper); - var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine); var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler); var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator); + var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine); var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent); + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.1): util/index.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + const toType = obj => { if (obj === null || obj === undefined) { return `${obj}`; @@ -93,7 +100,7 @@ } if (typeof obj === 'string' && obj.length > 0) { - return SelectorEngine__default['default'].findOne(obj); + return document.querySelector(obj); } return null; @@ -216,7 +223,7 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): dropdown.js + * Bootstrap (v5.1.1): dropdown.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -242,7 +249,6 @@ const EVENT_HIDDEN = `hidden${EVENT_KEY}`; const EVENT_SHOW = `show${EVENT_KEY}`; const EVENT_SHOWN = `shown${EVENT_KEY}`; - const EVENT_CLICK = `click${EVENT_KEY}`; const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`; const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`; const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`; @@ -290,8 +296,6 @@ this._config = this._getConfig(config); this._menu = this._getMenuElement(); this._inNavbar = this._detectNavbar(); - - this._addEventListeners(); } // Getters @@ -309,26 +313,14 @@ toggle() { - if (isDisabled(this._element)) { - return; - } - - const isActive = this._element.classList.contains(CLASS_NAME_SHOW); - - if (isActive) { - this.hide(); - return; - } - - this.show(); + return this._isShown() ? this.hide() : this.show(); } show() { - if (isDisabled(this._element) || this._menu.classList.contains(CLASS_NAME_SHOW)) { + if (isDisabled(this._element) || this._isShown(this._menu)) { return; } - const parent = Dropdown.getParentFromElement(this._element); const relatedTarget = { relatedTarget: this._element }; @@ -336,34 +328,14 @@ if (showEvent.defaultPrevented) { return; - } // Totally disable Popper for Dropdowns in Navbar + } + const parent = Dropdown.getParentFromElement(this._element); // Totally disable Popper for Dropdowns in Navbar if (this._inNavbar) { Manipulator__default['default'].setDataAttribute(this._menu, 'popper', 'none'); } else { - if (typeof Popper__namespace === 'undefined') { - throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)'); - } - - let referenceElement = this._element; - - if (this._config.reference === 'parent') { - referenceElement = parent; - } else if (isElement(this._config.reference)) { - referenceElement = getElement(this._config.reference); - } else if (typeof this._config.reference === 'object') { - referenceElement = this._config.reference; - } - - const popperConfig = this._getPopperConfig(); - - const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false); - this._popper = Popper__namespace.createPopper(referenceElement, this._menu, popperConfig); - - if (isDisplayStatic) { - Manipulator__default['default'].setDataAttribute(this._menu, 'popper', 'static'); - } + this._createPopper(parent); } // If this is a touch-enabled device we add extra // empty mouseover listeners to the body's immediate children; // only needed because of broken event delegation on iOS @@ -378,15 +350,15 @@ this._element.setAttribute('aria-expanded', true); - this._menu.classList.toggle(CLASS_NAME_SHOW); + this._menu.classList.add(CLASS_NAME_SHOW); - this._element.classList.toggle(CLASS_NAME_SHOW); + this._element.classList.add(CLASS_NAME_SHOW); EventHandler__default['default'].trigger(this._element, EVENT_SHOWN, relatedTarget); } hide() { - if (isDisabled(this._element) || !this._menu.classList.contains(CLASS_NAME_SHOW)) { + if (isDisabled(this._element) || !this._isShown(this._menu)) { return; } @@ -414,13 +386,6 @@ } // Private - _addEventListeners() { - EventHandler__default['default'].on(this._element, EVENT_CLICK, event => { - event.preventDefault(); - this.toggle(); - }); - } - _completeHide(relatedTarget) { const hideEvent = EventHandler__default['default'].trigger(this._element, EVENT_HIDE, relatedTarget); @@ -463,6 +428,35 @@ return config; } + _createPopper(parent) { + if (typeof Popper__namespace === 'undefined') { + throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)'); + } + + let referenceElement = this._element; + + if (this._config.reference === 'parent') { + referenceElement = parent; + } else if (isElement(this._config.reference)) { + referenceElement = getElement(this._config.reference); + } else if (typeof this._config.reference === 'object') { + referenceElement = this._config.reference; + } + + const popperConfig = this._getPopperConfig(); + + const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false); + this._popper = Popper__namespace.createPopper(referenceElement, this._menu, popperConfig); + + if (isDisplayStatic) { + Manipulator__default['default'].setDataAttribute(this._menu, 'popper', 'static'); + } + } + + _isShown(element = this._element) { + return element.classList.contains(CLASS_NAME_SHOW); + } + _getMenuElement() { return SelectorEngine__default['default'].next(this._element, SELECTOR_MENU)[0]; } @@ -552,21 +546,19 @@ } // Static - static dropdownInterface(element, config) { - const data = Dropdown.getOrCreateInstance(element, config); + static jQueryInterface(config) { + return this.each(function () { + const data = Dropdown.getOrCreateInstance(this, config); + + if (typeof config !== 'string') { + return; + } - if (typeof config === 'string') { if (typeof data[config] === 'undefined') { throw new TypeError(`No method named "${config}"`); } data[config](); - } - } - - static jQueryInterface(config) { - return this.each(function () { - Dropdown.dropdownInterface(this, config); }); } @@ -584,7 +576,7 @@ continue; } - if (!context._element.classList.contains(CLASS_NAME_SHOW)) { + if (!context._isShown()) { continue; } @@ -643,20 +635,20 @@ return; } - const getToggleButton = () => this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine__default['default'].prev(this, SELECTOR_DATA_TOGGLE)[0]; + const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine__default['default'].prev(this, SELECTOR_DATA_TOGGLE)[0]; + const instance = Dropdown.getOrCreateInstance(getToggleButton); if (event.key === ESCAPE_KEY) { - getToggleButton().focus(); - Dropdown.clearMenus(); + instance.hide(); return; } if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) { if (!isActive) { - getToggleButton().click(); + instance.show(); } - Dropdown.getInstance(getToggleButton())._selectMenuItem(event); + instance._selectMenuItem(event); return; } @@ -680,7 +672,7 @@ EventHandler__default['default'].on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus); EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) { event.preventDefault(); - Dropdown.dropdownInterface(this); + Dropdown.getOrCreateInstance(this).toggle(); }); /** * ------------------------------------------------------------------------ diff --git a/vendor/twbs/bootstrap/js/dist/dropdown.js.map b/vendor/twbs/bootstrap/js/dist/dropdown.js.map index b2de1d5de..f3166b242 100644 --- a/vendor/twbs/bootstrap/js/dist/dropdown.js.map +++ b/vendor/twbs/bootstrap/js/dist/dropdown.js.map @@ -1 +1 @@ -{"version":3,"file":"dropdown.js","sources":["../src/util/index.js","../src/dropdown.js"],"sourcesContent":["import SelectorEngine from '../dom/selector-engine'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return SelectorEngine.findOne(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n defineJQueryPlugin,\n getElement,\n getElementFromSelector,\n isDisabled,\n isElement,\n isVisible,\n isRTL,\n noop,\n getNextActiveElement,\n typeCheckConfig\n} from './util/index'\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 = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst SPACE_KEY = 'Space'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\n\nconst Default = {\n offset: [0, 2],\n boundary: 'clippingParents',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null,\n autoClose: true\n}\n\nconst DefaultType = {\n offset: '(array|string|function)',\n boundary: '(string|element)',\n reference: '(string|element|object)',\n display: 'string',\n popperConfig: '(null|object|function)',\n autoClose: '(boolean|string)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n toggle() {\n if (isDisabled(this._element)) {\n return\n }\n\n const isActive = this._element.classList.contains(CLASS_NAME_SHOW)\n\n if (isActive) {\n this.hide()\n return\n }\n\n this.show()\n }\n\n show() {\n if (isDisabled(this._element) || this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this._element)\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n // Totally disable Popper for Dropdowns in Navbar\n if (this._inNavbar) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'none')\n } else {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference)\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference\n }\n\n const popperConfig = this._getPopperConfig()\n const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false)\n\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n\n if (isDisplayStatic) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static')\n }\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n !parent.closest(SELECTOR_NAVBAR_NAV)) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.on(elem, 'mouseover', noop))\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.toggle(CLASS_NAME_SHOW)\n this._element.classList.toggle(CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (isDisabled(this._element) || !this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n this._completeHide(relatedTarget)\n }\n\n dispose() {\n if (this._popper) {\n this._popper.destroy()\n }\n\n super.dispose()\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Private\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_CLICK, event => {\n event.preventDefault()\n this.toggle()\n })\n }\n\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.off(elem, 'mouseover', noop))\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._menu.classList.remove(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._element.setAttribute('aria-expanded', 'false')\n Manipulator.removeDataAttribute(this._menu, 'popper')\n EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (typeof config.reference === 'object' && !isElement(config.reference) &&\n typeof config.reference.getBoundingClientRect !== 'function'\n ) {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n }\n\n return config\n }\n\n _getMenuElement() {\n return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n }\n\n _getPlacement() {\n const parentDropdown = this._element.parentNode\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n }\n\n _detectNavbar() {\n return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }\n\n // Disable Popper if we have a static display\n if (this._config.display === 'static') {\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n }\n }\n\n _selectMenuItem({ key, target }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible)\n\n if (!items.length) {\n return\n }\n\n // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n }\n\n // Static\n\n static dropdownInterface(element, config) {\n const data = Dropdown.getOrCreateInstance(element, config)\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]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Dropdown.dropdownInterface(this, config)\n })\n }\n\n static clearMenus(event) {\n if (event && (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY))) {\n return\n }\n\n const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const context = Dropdown.getInstance(toggles[i])\n if (!context || context._config.autoClose === false) {\n continue\n }\n\n if (!context._element.classList.contains(CLASS_NAME_SHOW)) {\n continue\n }\n\n const relatedTarget = {\n relatedTarget: context._element\n }\n\n if (event) {\n const composedPath = event.composedPath()\n const isMenuTarget = composedPath.includes(context._menu)\n if (\n composedPath.includes(context._element) ||\n (context._config.autoClose === 'inside' && !isMenuTarget) ||\n (context._config.autoClose === 'outside' && isMenuTarget)\n ) {\n continue\n }\n\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue\n }\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n }\n\n context._completeHide(relatedTarget)\n }\n }\n\n static getParentFromElement(element) {\n return getElementFromSelector(element) || element.parentNode\n }\n\n static dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ?\n event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n event.target.closest(SELECTOR_MENU))) :\n !REGEXP_KEYDOWN.test(event.key)) {\n return\n }\n\n const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n if (!isActive && event.key === ESCAPE_KEY) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (isDisabled(this)) {\n return\n }\n\n const getToggleButton = () => this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n\n if (event.key === ESCAPE_KEY) {\n getToggleButton().focus()\n Dropdown.clearMenus()\n return\n }\n\n if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) {\n if (!isActive) {\n getToggleButton().click()\n }\n\n Dropdown.getInstance(getToggleButton())._selectMenuItem(event)\n return\n }\n\n if (!isActive || event.key === SPACE_KEY) {\n Dropdown.clearMenus()\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n Dropdown.dropdownInterface(this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n"],"names":["toType","obj","undefined","toString","call","match","toLowerCase","getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getElementFromSelector","document","querySelector","isElement","jquery","nodeType","getElement","length","SelectorEngine","findOne","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","TypeError","toUpperCase","isVisible","getClientRects","getComputedStyle","getPropertyValue","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","noop","getjQuery","jQuery","window","body","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","addEventListener","push","isRTL","documentElement","dir","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","index","indexOf","listLength","Math","max","min","DATA_KEY","EVENT_KEY","DATA_API_KEY","ESCAPE_KEY","SPACE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","RIGHT_MOUSE_BUTTON","REGEXP_KEYDOWN","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","EVENT_CLICK","EVENT_CLICK_DATA_API","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_SHOW","CLASS_NAME_DROPUP","CLASS_NAME_DROPEND","CLASS_NAME_DROPSTART","CLASS_NAME_NAVBAR","SELECTOR_DATA_TOGGLE","SELECTOR_MENU","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","Default","offset","boundary","reference","display","popperConfig","autoClose","DefaultType","Dropdown","BaseComponent","constructor","_popper","_config","_getConfig","_menu","_getMenuElement","_inNavbar","_detectNavbar","_addEventListeners","toggle","_element","isActive","hide","show","parent","getParentFromElement","relatedTarget","showEvent","EventHandler","trigger","defaultPrevented","Manipulator","setDataAttribute","Popper","referenceElement","_getPopperConfig","isDisplayStatic","modifiers","find","modifier","enabled","createPopper","closest","concat","children","elem","on","focus","setAttribute","_completeHide","dispose","destroy","update","event","preventDefault","hideEvent","off","remove","removeDataAttribute","getDataAttributes","getBoundingClientRect","next","_getPlacement","parentDropdown","parentNode","isEnd","_getOffset","map","val","Number","parseInt","popperData","defaultBsPopperConfig","placement","options","_selectMenuItem","key","target","items","filter","dropdownInterface","data","getOrCreateInstance","each","clearMenus","button","type","toggles","i","len","context","getInstance","composedPath","isMenuTarget","tagName","clickEvent","dataApiKeydownHandler","stopPropagation","getToggleButton","matches","prev","click"],"mappings":"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"}
\ No newline at end of file +{"version":3,"file":"dropdown.js","sources":["../src/util/index.js","../src/dropdown.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return document.querySelector(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight\n}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n defineJQueryPlugin,\n getElement,\n getElementFromSelector,\n getNextActiveElement,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop,\n typeCheckConfig\n} from './util/index'\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 = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst SPACE_KEY = 'Space'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\n\nconst Default = {\n offset: [0, 2],\n boundary: 'clippingParents',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null,\n autoClose: true\n}\n\nconst DefaultType = {\n offset: '(array|string|function)',\n boundary: '(string|element)',\n reference: '(string|element|object)',\n display: 'string',\n popperConfig: '(null|object|function)',\n autoClose: '(boolean|string)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n toggle() {\n return this._isShown() ? this.hide() : this.show()\n }\n\n show() {\n if (isDisabled(this._element) || this._isShown(this._menu)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this._element)\n // Totally disable Popper for Dropdowns in Navbar\n if (this._inNavbar) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'none')\n } else {\n this._createPopper(parent)\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n !parent.closest(SELECTOR_NAVBAR_NAV)) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.on(elem, 'mouseover', noop))\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.add(CLASS_NAME_SHOW)\n this._element.classList.add(CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (isDisabled(this._element) || !this._isShown(this._menu)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n this._completeHide(relatedTarget)\n }\n\n dispose() {\n if (this._popper) {\n this._popper.destroy()\n }\n\n super.dispose()\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Private\n\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.off(elem, 'mouseover', noop))\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._menu.classList.remove(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._element.setAttribute('aria-expanded', 'false')\n Manipulator.removeDataAttribute(this._menu, 'popper')\n EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (typeof config.reference === 'object' && !isElement(config.reference) &&\n typeof config.reference.getBoundingClientRect !== 'function'\n ) {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n }\n\n return config\n }\n\n _createPopper(parent) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference)\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference\n }\n\n const popperConfig = this._getPopperConfig()\n const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false)\n\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n\n if (isDisplayStatic) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static')\n }\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW)\n }\n\n _getMenuElement() {\n return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n }\n\n _getPlacement() {\n const parentDropdown = this._element.parentNode\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n }\n\n _detectNavbar() {\n return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }\n\n // Disable Popper if we have a static display\n if (this._config.display === 'static') {\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n }\n }\n\n _selectMenuItem({ key, target }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible)\n\n if (!items.length) {\n return\n }\n\n // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n\n static clearMenus(event) {\n if (event && (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY))) {\n return\n }\n\n const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const context = Dropdown.getInstance(toggles[i])\n if (!context || context._config.autoClose === false) {\n continue\n }\n\n if (!context._isShown()) {\n continue\n }\n\n const relatedTarget = {\n relatedTarget: context._element\n }\n\n if (event) {\n const composedPath = event.composedPath()\n const isMenuTarget = composedPath.includes(context._menu)\n if (\n composedPath.includes(context._element) ||\n (context._config.autoClose === 'inside' && !isMenuTarget) ||\n (context._config.autoClose === 'outside' && isMenuTarget)\n ) {\n continue\n }\n\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue\n }\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n }\n\n context._completeHide(relatedTarget)\n }\n }\n\n static getParentFromElement(element) {\n return getElementFromSelector(element) || element.parentNode\n }\n\n static dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ?\n event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n event.target.closest(SELECTOR_MENU))) :\n !REGEXP_KEYDOWN.test(event.key)) {\n return\n }\n\n const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n if (!isActive && event.key === ESCAPE_KEY) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (isDisabled(this)) {\n return\n }\n\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n if (event.key === ESCAPE_KEY) {\n instance.hide()\n return\n }\n\n if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) {\n if (!isActive) {\n instance.show()\n }\n\n instance._selectMenuItem(event)\n return\n }\n\n if (!isActive || event.key === SPACE_KEY) {\n Dropdown.clearMenus()\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n"],"names":["toType","obj","undefined","toString","call","match","toLowerCase","getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getElementFromSelector","document","querySelector","isElement","jquery","nodeType","getElement","length","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","TypeError","toUpperCase","isVisible","getClientRects","getComputedStyle","getPropertyValue","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","noop","getjQuery","jQuery","window","body","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","addEventListener","push","isRTL","documentElement","dir","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","index","indexOf","listLength","Math","max","min","DATA_KEY","EVENT_KEY","DATA_API_KEY","ESCAPE_KEY","SPACE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","RIGHT_MOUSE_BUTTON","REGEXP_KEYDOWN","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","EVENT_CLICK_DATA_API","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_SHOW","CLASS_NAME_DROPUP","CLASS_NAME_DROPEND","CLASS_NAME_DROPSTART","CLASS_NAME_NAVBAR","SELECTOR_DATA_TOGGLE","SELECTOR_MENU","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","Default","offset","boundary","reference","display","popperConfig","autoClose","DefaultType","Dropdown","BaseComponent","constructor","_popper","_config","_getConfig","_menu","_getMenuElement","_inNavbar","_detectNavbar","toggle","_isShown","hide","show","_element","relatedTarget","showEvent","EventHandler","trigger","defaultPrevented","parent","getParentFromElement","Manipulator","setDataAttribute","_createPopper","closest","concat","children","elem","on","focus","setAttribute","add","_completeHide","dispose","destroy","update","hideEvent","off","remove","removeDataAttribute","getDataAttributes","getBoundingClientRect","Popper","referenceElement","_getPopperConfig","isDisplayStatic","modifiers","find","modifier","enabled","createPopper","SelectorEngine","next","_getPlacement","parentDropdown","parentNode","isEnd","_getOffset","map","val","Number","parseInt","popperData","defaultBsPopperConfig","placement","options","_selectMenuItem","key","target","items","filter","each","data","getOrCreateInstance","clearMenus","event","button","type","toggles","i","len","context","getInstance","composedPath","isMenuTarget","tagName","clickEvent","dataApiKeydownHandler","isActive","preventDefault","stopPropagation","getToggleButton","matches","prev","instance"],"mappings":"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"}
\ No newline at end of file diff --git a/vendor/twbs/bootstrap/js/dist/modal.js b/vendor/twbs/bootstrap/js/dist/modal.js index f26ae4c2c..d327a56dc 100644 --- a/vendor/twbs/bootstrap/js/dist/modal.js +++ b/vendor/twbs/bootstrap/js/dist/modal.js @@ -1,21 +1,27 @@ /*! - * Bootstrap modal.js v5.0.2 (https://getbootstrap.com/) + * Bootstrap modal.js v5.1.1 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./base-component.js')) : - typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/event-handler', './dom/manipulator', './base-component'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Modal = factory(global.SelectorEngine, global.EventHandler, global.Manipulator, global.Base)); -}(this, (function (SelectorEngine, EventHandler, Manipulator, BaseComponent) { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./dom/selector-engine.js'), require('./base-component.js')) : + typeof define === 'function' && define.amd ? define(['./dom/event-handler', './dom/manipulator', './dom/selector-engine', './base-component'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Modal = factory(global.EventHandler, global.Manipulator, global.SelectorEngine, global.Base)); +}(this, (function (EventHandler, Manipulator, SelectorEngine, BaseComponent) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } - var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine); var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler); var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator); + var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine); var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent); + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.1): util/index.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ const MILLISECONDS_MULTIPLIER = 1000; const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp) @@ -102,7 +108,7 @@ } if (typeof obj === 'string' && obj.length > 0) { - return SelectorEngine__default['default'].findOne(obj); + return document.querySelector(obj); } return null; @@ -128,7 +134,35 @@ return getComputedStyle(element).getPropertyValue('visibility') === 'visible'; }; - const reflow = element => element.offsetHeight; + const isDisabled = element => { + if (!element || element.nodeType !== Node.ELEMENT_NODE) { + return true; + } + + if (element.classList.contains('disabled')) { + return true; + } + + if (typeof element.disabled !== 'undefined') { + return element.disabled; + } + + return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'; + }; + /** + * Trick to restart an element's animation + * + * @param {HTMLElement} element + * @return void + * + * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation + */ + + + const reflow = element => { + // eslint-disable-next-line no-unused-expressions + element.offsetHeight; + }; const getjQuery = () => { const { @@ -218,7 +252,7 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): util/scrollBar.js + * Bootstrap (v5.1.1): util/scrollBar.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -322,11 +356,12 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): util/backdrop.js + * Bootstrap (v5.1.1): util/backdrop.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ - const Default$1 = { + const Default$2 = { + className: 'modal-backdrop', isVisible: true, // if false, we use the backdrop helper without adding any element to the dom isAnimated: false, @@ -334,17 +369,17 @@ // give the choice to place backdrop under different elements clickCallback: null }; - const DefaultType$1 = { + const DefaultType$2 = { + className: 'string', isVisible: 'boolean', isAnimated: 'boolean', rootElement: '(element|string)', clickCallback: '(function|null)' }; - const NAME$1 = 'backdrop'; - const CLASS_NAME_BACKDROP = 'modal-backdrop'; + const NAME$2 = 'backdrop'; const CLASS_NAME_FADE$1 = 'fade'; const CLASS_NAME_SHOW$1 = 'show'; - const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$1}`; + const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$2}`; class Backdrop { constructor(config) { @@ -390,7 +425,7 @@ _getElement() { if (!this._element) { const backdrop = document.createElement('div'); - backdrop.className = CLASS_NAME_BACKDROP; + backdrop.className = this._config.className; if (this._config.isAnimated) { backdrop.classList.add(CLASS_NAME_FADE$1); @@ -403,12 +438,12 @@ } _getConfig(config) { - config = { ...Default$1, + config = { ...Default$2, ...(typeof config === 'object' ? config : {}) }; // use getElement() with the default "body" to get a fresh Element on each instantiation config.rootElement = getElement(config.rootElement); - typeCheckConfig(NAME$1, config, DefaultType$1); + typeCheckConfig(NAME$2, config, DefaultType$2); return config; } @@ -417,7 +452,7 @@ return; } - this._config.rootElement.appendChild(this._getElement()); + this._config.rootElement.append(this._getElement()); EventHandler__default['default'].on(this._getElement(), EVENT_MOUSEDOWN, () => { execute(this._config.clickCallback); @@ -445,7 +480,136 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): modal.js + * Bootstrap (v5.1.1): util/focustrap.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + const Default$1 = { + trapElement: null, + // The element to trap focus inside of + autofocus: true + }; + const DefaultType$1 = { + trapElement: 'element', + autofocus: 'boolean' + }; + const NAME$1 = 'focustrap'; + const DATA_KEY$1 = 'bs.focustrap'; + const EVENT_KEY$1 = `.${DATA_KEY$1}`; + const EVENT_FOCUSIN = `focusin${EVENT_KEY$1}`; + const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$1}`; + const TAB_KEY = 'Tab'; + const TAB_NAV_FORWARD = 'forward'; + const TAB_NAV_BACKWARD = 'backward'; + + class FocusTrap { + constructor(config) { + this._config = this._getConfig(config); + this._isActive = false; + this._lastTabNavDirection = null; + } + + activate() { + const { + trapElement, + autofocus + } = this._config; + + if (this._isActive) { + return; + } + + if (autofocus) { + trapElement.focus(); + } + + EventHandler__default['default'].off(document, EVENT_KEY$1); // guard against infinite focus loop + + EventHandler__default['default'].on(document, EVENT_FOCUSIN, event => this._handleFocusin(event)); + EventHandler__default['default'].on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event)); + this._isActive = true; + } + + deactivate() { + if (!this._isActive) { + return; + } + + this._isActive = false; + EventHandler__default['default'].off(document, EVENT_KEY$1); + } // Private + + + _handleFocusin(event) { + const { + target + } = event; + const { + trapElement + } = this._config; + + if (target === document || target === trapElement || trapElement.contains(target)) { + return; + } + + const elements = SelectorEngine__default['default'].focusableChildren(trapElement); + + if (elements.length === 0) { + trapElement.focus(); + } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) { + elements[elements.length - 1].focus(); + } else { + elements[0].focus(); + } + } + + _handleKeydown(event) { + if (event.key !== TAB_KEY) { + return; + } + + this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD; + } + + _getConfig(config) { + config = { ...Default$1, + ...(typeof config === 'object' ? config : {}) + }; + typeCheckConfig(NAME$1, config, DefaultType$1); + return config; + } + + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.1): util/component-functions.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + const enableDismissTrigger = (component, method = 'hide') => { + const clickEvent = `click.dismiss${component.EVENT_KEY}`; + const name = component.NAME; + EventHandler__default['default'].on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) { + if (['A', 'AREA'].includes(this.tagName)) { + event.preventDefault(); + } + + if (isDisabled(this)) { + return; + } + + const target = getElementFromSelector(this) || this.closest(`.${name}`); + const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method + + instance[method](); + }); + }; + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.1): modal.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -475,7 +639,6 @@ const EVENT_HIDDEN = `hidden${EVENT_KEY}`; const EVENT_SHOW = `show${EVENT_KEY}`; const EVENT_SHOWN = `shown${EVENT_KEY}`; - const EVENT_FOCUSIN = `focusin${EVENT_KEY}`; const EVENT_RESIZE = `resize${EVENT_KEY}`; const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`; const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`; @@ -486,10 +649,10 @@ const CLASS_NAME_FADE = 'fade'; const CLASS_NAME_SHOW = 'show'; const CLASS_NAME_STATIC = 'modal-static'; + const OPEN_SELECTOR = '.modal.show'; const SELECTOR_DIALOG = '.modal-dialog'; const SELECTOR_MODAL_BODY = '.modal-body'; const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="modal"]'; - const SELECTOR_DATA_DISMISS = '[data-bs-dismiss="modal"]'; /** * ------------------------------------------------------------------------ * Class Definition @@ -502,6 +665,7 @@ this._config = this._getConfig(config); this._dialog = SelectorEngine__default['default'].findOne(SELECTOR_DIALOG, this._element); this._backdrop = this._initializeBackDrop(); + this._focustrap = this._initializeFocusTrap(); this._isShown = false; this._ignoreBackdropClick = false; this._isTransitioning = false; @@ -551,7 +715,6 @@ this._setResizeEvent(); - EventHandler__default['default'].on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, event => this.hide(event)); EventHandler__default['default'].on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => { EventHandler__default['default'].one(this._element, EVENT_MOUSEUP_DISMISS, event => { if (event.target === this._element) { @@ -563,11 +726,7 @@ this._showBackdrop(() => this._showElement(relatedTarget)); } - hide(event) { - if (event && ['A', 'AREA'].includes(event.target.tagName)) { - event.preventDefault(); - } - + hide() { if (!this._isShown || this._isTransitioning) { return; } @@ -590,7 +749,7 @@ this._setResizeEvent(); - EventHandler__default['default'].off(document, EVENT_FOCUSIN); + this._focustrap.deactivate(); this._element.classList.remove(CLASS_NAME_SHOW); @@ -605,14 +764,9 @@ this._backdrop.dispose(); - super.dispose(); - /** - * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API` - * Do not move `document` in `htmlElements` array - * It will remove `EVENT_CLICK_DATA_API` event that should remain - */ + this._focustrap.deactivate(); - EventHandler__default['default'].off(document, EVENT_FOCUSIN); + super.dispose(); } handleUpdate() { @@ -628,6 +782,12 @@ }); } + _initializeFocusTrap() { + return new FocusTrap({ + trapElement: this._element + }); + } + _getConfig(config) { config = { ...Default, ...Manipulator__default['default'].getDataAttributes(this._element), @@ -644,7 +804,7 @@ if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { // Don't move modal's DOM position - document.body.appendChild(this._element); + document.body.append(this._element); } this._element.style.display = 'block'; @@ -667,13 +827,9 @@ this._element.classList.add(CLASS_NAME_SHOW); - if (this._config.focus) { - this._enforceFocus(); - } - const transitionComplete = () => { if (this._config.focus) { - this._element.focus(); + this._focustrap.activate(); } this._isTransitioning = false; @@ -685,16 +841,6 @@ this._queueCallback(transitionComplete, this._dialog, isAnimated); } - _enforceFocus() { - EventHandler__default['default'].off(document, EVENT_FOCUSIN); // guard against infinite focus loop - - EventHandler__default['default'].on(document, EVENT_FOCUSIN, event => { - if (document !== event.target && this._element !== event.target && !this._element.contains(event.target)) { - this._element.focus(); - } - }); - } - _setEscapeEvent() { if (this._isShown) { EventHandler__default['default'].on(this._element, EVENT_KEYDOWN_DISMISS, event => { @@ -869,10 +1015,18 @@ this.focus(); } }); - }); + }); // avoid conflict when clicking moddal toggler while another one is open + + const allReadyOpen = SelectorEngine__default['default'].findOne(OPEN_SELECTOR); + + if (allReadyOpen) { + Modal.getInstance(allReadyOpen).hide(); + } + const data = Modal.getOrCreateInstance(target); data.toggle(this); }); + enableDismissTrigger(Modal); /** * ------------------------------------------------------------------------ * jQuery diff --git a/vendor/twbs/bootstrap/js/dist/modal.js.map b/vendor/twbs/bootstrap/js/dist/modal.js.map index ce68735b6..9557e0302 100644 --- a/vendor/twbs/bootstrap/js/dist/modal.js.map +++ b/vendor/twbs/bootstrap/js/dist/modal.js.map @@ -1 +1 @@ -{"version":3,"file":"modal.js","sources":["../src/util/index.js","../src/util/scrollbar.js","../src/util/backdrop.js","../src/modal.js"],"sourcesContent":["import SelectorEngine from '../dom/selector-engine'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return SelectorEngine.findOne(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine'\nimport Manipulator from '../dom/manipulator'\nimport { isElement } from './index'\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body\n }\n\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth\n return Math.abs(window.innerWidth - documentWidth)\n }\n\n hide() {\n const width = this.getWidth()\n this._disableOverFlow()\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width)\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width)\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width)\n }\n\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow')\n this._element.style.overflow = 'hidden'\n }\n\n _setElementAttributes(selector, styleProp, callback) {\n const scrollbarWidth = this.getWidth()\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return\n }\n\n this._saveInitialAttribute(element, styleProp)\n const calculatedValue = window.getComputedStyle(element)[styleProp]\n element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow')\n this._resetElementAttributes(this._element, 'paddingRight')\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight')\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight')\n }\n\n _saveInitialAttribute(element, styleProp) {\n const actualValue = element.style[styleProp]\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProp, actualValue)\n }\n }\n\n _resetElementAttributes(selector, styleProp) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProp)\n if (typeof value === 'undefined') {\n element.style.removeProperty(styleProp)\n } else {\n Manipulator.removeDataAttribute(element, styleProp)\n element.style[styleProp] = value\n }\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector)\n } else {\n SelectorEngine.find(selector, this._element).forEach(callBack)\n }\n }\n\n isOverflowing() {\n return this.getWidth() > 0\n }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { execute, executeAfterTransition, getElement, reflow, typeCheckConfig } from './index'\n\nconst Default = {\n isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n isAnimated: false,\n rootElement: 'body', // give the choice to place backdrop under different elements\n clickCallback: null\n}\n\nconst DefaultType = {\n isVisible: 'boolean',\n isAnimated: 'boolean',\n rootElement: '(element|string)',\n clickCallback: '(function|null)'\n}\nconst NAME = 'backdrop'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nclass Backdrop {\n constructor(config) {\n this._config = this._getConfig(config)\n this._isAppended = false\n this._element = null\n }\n\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._append()\n\n if (this._config.isAnimated) {\n reflow(this._getElement())\n }\n\n this._getElement().classList.add(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n execute(callback)\n })\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n this.dispose()\n execute(callback)\n })\n }\n\n // Private\n\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div')\n backdrop.className = CLASS_NAME_BACKDROP\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE)\n }\n\n this._element = backdrop\n }\n\n return this._element\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' ? config : {})\n }\n\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement)\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _append() {\n if (this._isAppended) {\n return\n }\n\n this._config.rootElement.appendChild(this._getElement())\n\n EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback)\n })\n\n this._isAppended = true\n }\n\n dispose() {\n if (!this._isAppended) {\n return\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n this._element.remove()\n this._isAppended = false\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isRTL,\n isVisible,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport ScrollBarHelper from './util/scrollbar'\nimport BaseComponent from './base-component'\nimport Backdrop from './util/backdrop'\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_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\"]'\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 = this._initializeBackDrop()\n this._isShown = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollBar = new ScrollBarHelper()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\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 const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n\n if (this._isAnimated()) {\n this._isTransitioning = true\n }\n\n this._scrollBar.hide()\n\n document.body.classList.add(CLASS_NAME_OPEN)\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 && ['A', 'AREA'].includes(event.target.tagName)) {\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 this._queueCallback(() => this._hideModal(), this._element, isAnimated)\n }\n\n dispose() {\n [window, this._dialog]\n .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\n\n this._backdrop.dispose()\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\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value\n isAnimated: this._isAnimated()\n })\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? 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 this._queueCallback(transitionComplete, this._dialog, isAnimated)\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._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._scrollBar.reset()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _showBackdrop(callback) {\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 === true) {\n this.hide()\n } else if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n }\n })\n\n this._backdrop.show(callback)\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 { classList, scrollHeight, style } = this._element\n const isModalOverflowing = scrollHeight > document.documentElement.clientHeight\n\n // return if the following background transition hasn't yet completed\n if ((!isModalOverflowing && style.overflowY === 'hidden') || classList.contains(CLASS_NAME_STATIC)) {\n return\n }\n\n if (!isModalOverflowing) {\n style.overflowY = 'hidden'\n }\n\n classList.add(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n classList.remove(CLASS_NAME_STATIC)\n if (!isModalOverflowing) {\n this._queueCallback(() => {\n style.overflowY = ''\n }, this._dialog)\n }\n }, this._dialog)\n\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 const scrollbarWidth = this._scrollBar.getWidth()\n const isBodyOverflowing = scrollbarWidth > 0\n\n if ((!isBodyOverflowing && isModalOverflowing && !isRTL()) || (isBodyOverflowing && !isModalOverflowing && isRTL())) {\n this._element.style.paddingLeft = `${scrollbarWidth}px`\n }\n\n if ((isBodyOverflowing && !isModalOverflowing && !isRTL()) || (!isBodyOverflowing && isModalOverflowing && isRTL())) {\n this._element.style.paddingRight = `${scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n // Static\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\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 * 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 (['A', 'AREA'].includes(this.tagName)) {\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 const data = Modal.getOrCreateInstance(target)\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(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","jquery","nodeType","getElement","length","SelectorEngine","findOne","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","TypeError","toUpperCase","isVisible","getClientRects","getPropertyValue","reflow","offsetHeight","getjQuery","jQuery","body","hasAttribute","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","addEventListener","push","isRTL","documentElement","dir","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","execute","executeAfterTransition","transitionElement","waitForTransition","durationPadding","emulatedDuration","called","handler","target","removeEventListener","setTimeout","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","ScrollBarHelper","constructor","_element","getWidth","documentWidth","clientWidth","Math","abs","innerWidth","hide","width","_disableOverFlow","_setElementAttributes","calculatedValue","_saveInitialAttribute","style","overflow","styleProp","scrollbarWidth","manipulationCallBack","_applyManipulationCallback","reset","_resetElementAttributes","actualValue","Manipulator","setDataAttribute","getDataAttribute","removeProperty","removeDataAttribute","callBack","find","isOverflowing","Default","isAnimated","rootElement","clickCallback","DefaultType","CLASS_NAME_BACKDROP","CLASS_NAME_FADE","CLASS_NAME_SHOW","EVENT_MOUSEDOWN","Backdrop","_config","_getConfig","_isAppended","show","_append","_getElement","classList","add","_emulateAnimation","remove","dispose","backdrop","createElement","className","appendChild","EventHandler","on","off","DATA_KEY","EVENT_KEY","DATA_API_KEY","ESCAPE_KEY","keyboard","focus","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_OPEN","CLASS_NAME_STATIC","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","SELECTOR_DATA_TOGGLE","SELECTOR_DATA_DISMISS","Modal","BaseComponent","_dialog","_backdrop","_initializeBackDrop","_isShown","_ignoreBackdropClick","_isTransitioning","_scrollBar","toggle","relatedTarget","showEvent","trigger","defaultPrevented","_isAnimated","_adjustDialog","_setEscapeEvent","_setResizeEvent","event","one","_showBackdrop","_showElement","tagName","preventDefault","hideEvent","_queueCallback","_hideModal","htmlElement","handleUpdate","Boolean","getDataAttributes","modalBody","parentNode","Node","ELEMENT_NODE","display","removeAttribute","setAttribute","scrollTop","_enforceFocus","transitionComplete","contains","key","_triggerBackdropTransition","_resetAdjustments","currentTarget","scrollHeight","isModalOverflowing","clientHeight","overflowY","isBodyOverflowing","paddingLeft","paddingRight","each","data","getOrCreateInstance"],"mappings":"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"}
\ No newline at end of file +{"version":3,"file":"modal.js","sources":["../src/util/index.js","../src/util/scrollbar.js","../src/util/backdrop.js","../src/util/focustrap.js","../src/util/component-functions.js","../src/modal.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return document.querySelector(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight\n}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine'\nimport Manipulator from '../dom/manipulator'\nimport { isElement } from './index'\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body\n }\n\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth\n return Math.abs(window.innerWidth - documentWidth)\n }\n\n hide() {\n const width = this.getWidth()\n this._disableOverFlow()\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width)\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width)\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width)\n }\n\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow')\n this._element.style.overflow = 'hidden'\n }\n\n _setElementAttributes(selector, styleProp, callback) {\n const scrollbarWidth = this.getWidth()\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return\n }\n\n this._saveInitialAttribute(element, styleProp)\n const calculatedValue = window.getComputedStyle(element)[styleProp]\n element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow')\n this._resetElementAttributes(this._element, 'paddingRight')\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight')\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight')\n }\n\n _saveInitialAttribute(element, styleProp) {\n const actualValue = element.style[styleProp]\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProp, actualValue)\n }\n }\n\n _resetElementAttributes(selector, styleProp) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProp)\n if (typeof value === 'undefined') {\n element.style.removeProperty(styleProp)\n } else {\n Manipulator.removeDataAttribute(element, styleProp)\n element.style[styleProp] = value\n }\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector)\n } else {\n SelectorEngine.find(selector, this._element).forEach(callBack)\n }\n }\n\n isOverflowing() {\n return this.getWidth() > 0\n }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { execute, executeAfterTransition, getElement, reflow, typeCheckConfig } from './index'\n\nconst Default = {\n className: 'modal-backdrop',\n isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n isAnimated: false,\n rootElement: 'body', // give the choice to place backdrop under different elements\n clickCallback: null\n}\n\nconst DefaultType = {\n className: 'string',\n isVisible: 'boolean',\n isAnimated: 'boolean',\n rootElement: '(element|string)',\n clickCallback: '(function|null)'\n}\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nclass Backdrop {\n constructor(config) {\n this._config = this._getConfig(config)\n this._isAppended = false\n this._element = null\n }\n\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._append()\n\n if (this._config.isAnimated) {\n reflow(this._getElement())\n }\n\n this._getElement().classList.add(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n execute(callback)\n })\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n this.dispose()\n execute(callback)\n })\n }\n\n // Private\n\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div')\n backdrop.className = this._config.className\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE)\n }\n\n this._element = backdrop\n }\n\n return this._element\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' ? config : {})\n }\n\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement)\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _append() {\n if (this._isAppended) {\n return\n }\n\n this._config.rootElement.append(this._getElement())\n\n EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback)\n })\n\n this._isAppended = true\n }\n\n dispose() {\n if (!this._isAppended) {\n return\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n this._element.remove()\n this._isAppended = false\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport SelectorEngine from '../dom/selector-engine'\nimport { typeCheckConfig } from './index'\n\nconst Default = {\n trapElement: null, // The element to trap focus inside of\n autofocus: true\n}\n\nconst DefaultType = {\n trapElement: 'element',\n autofocus: 'boolean'\n}\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nclass FocusTrap {\n constructor(config) {\n this._config = this._getConfig(config)\n this._isActive = false\n this._lastTabNavDirection = null\n }\n\n activate() {\n const { trapElement, autofocus } = this._config\n\n if (this._isActive) {\n return\n }\n\n if (autofocus) {\n trapElement.focus()\n }\n\n EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n this._isActive = true\n }\n\n deactivate() {\n if (!this._isActive) {\n return\n }\n\n this._isActive = false\n EventHandler.off(document, EVENT_KEY)\n }\n\n // Private\n\n _handleFocusin(event) {\n const { target } = event\n const { trapElement } = this._config\n\n if (\n target === document ||\n target === trapElement ||\n trapElement.contains(target)\n ) {\n return\n }\n\n const elements = SelectorEngine.focusableChildren(trapElement)\n\n if (elements.length === 0) {\n trapElement.focus()\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus()\n } else {\n elements[0].focus()\n }\n }\n\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { getElementFromSelector, isDisabled } from './index'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`\n const name = component.NAME\n\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const target = getElementFromSelector(this) || this.closest(`.${name}`)\n const instance = component.getOrCreateInstance(target)\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]()\n })\n}\n\nexport {\n enableDismissTrigger\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isRTL,\n isVisible,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport ScrollBarHelper from './util/scrollbar'\nimport BaseComponent from './base-component'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\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_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_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst OPEN_SELECTOR = '.modal.show'\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\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 = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._isShown = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollBar = new ScrollBarHelper()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\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 const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n\n if (this._isAnimated()) {\n this._isTransitioning = true\n }\n\n this._scrollBar.hide()\n\n document.body.classList.add(CLASS_NAME_OPEN)\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\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() {\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 this._focustrap.deactivate()\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 this._queueCallback(() => this._hideModal(), this._element, isAnimated)\n }\n\n dispose() {\n [window, this._dialog]\n .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\n\n this._backdrop.dispose()\n this._focustrap.deactivate()\n super.dispose()\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value\n isAnimated: this._isAnimated()\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? 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.append(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 const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n this._queueCallback(transitionComplete, this._dialog, isAnimated)\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._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._scrollBar.reset()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _showBackdrop(callback) {\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 === true) {\n this.hide()\n } else if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n }\n })\n\n this._backdrop.show(callback)\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 { classList, scrollHeight, style } = this._element\n const isModalOverflowing = scrollHeight > document.documentElement.clientHeight\n\n // return if the following background transition hasn't yet completed\n if ((!isModalOverflowing && style.overflowY === 'hidden') || classList.contains(CLASS_NAME_STATIC)) {\n return\n }\n\n if (!isModalOverflowing) {\n style.overflowY = 'hidden'\n }\n\n classList.add(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n classList.remove(CLASS_NAME_STATIC)\n if (!isModalOverflowing) {\n this._queueCallback(() => {\n style.overflowY = ''\n }, this._dialog)\n }\n }, this._dialog)\n\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 const scrollbarWidth = this._scrollBar.getWidth()\n const isBodyOverflowing = scrollbarWidth > 0\n\n if ((!isBodyOverflowing && isModalOverflowing && !isRTL()) || (isBodyOverflowing && !isModalOverflowing && isRTL())) {\n this._element.style.paddingLeft = `${scrollbarWidth}px`\n }\n\n if ((isBodyOverflowing && !isModalOverflowing && !isRTL()) || (!isBodyOverflowing && isModalOverflowing && isRTL())) {\n this._element.style.paddingRight = `${scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n // Static\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\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 * 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 (['A', 'AREA'].includes(this.tagName)) {\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 // avoid conflict when clicking moddal toggler while another one is open\n const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (allReadyOpen) {\n Modal.getInstance(allReadyOpen).hide()\n }\n\n const data = Modal.getOrCreateInstance(target)\n\n data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(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","jquery","nodeType","getElement","length","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","TypeError","toUpperCase","isVisible","getClientRects","getPropertyValue","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","reflow","offsetHeight","getjQuery","jQuery","body","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","addEventListener","push","isRTL","documentElement","dir","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","execute","executeAfterTransition","transitionElement","waitForTransition","durationPadding","emulatedDuration","called","handler","target","removeEventListener","setTimeout","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","ScrollBarHelper","constructor","_element","getWidth","documentWidth","clientWidth","Math","abs","innerWidth","hide","width","_disableOverFlow","_setElementAttributes","calculatedValue","_saveInitialAttribute","style","overflow","styleProp","scrollbarWidth","manipulationCallBack","_applyManipulationCallback","reset","_resetElementAttributes","actualValue","Manipulator","setDataAttribute","getDataAttribute","removeProperty","removeDataAttribute","callBack","SelectorEngine","find","isOverflowing","Default","className","isAnimated","rootElement","clickCallback","DefaultType","CLASS_NAME_FADE","CLASS_NAME_SHOW","EVENT_MOUSEDOWN","Backdrop","_config","_getConfig","_isAppended","show","_append","_getElement","add","_emulateAnimation","remove","dispose","backdrop","createElement","append","EventHandler","on","off","trapElement","autofocus","DATA_KEY","EVENT_KEY","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_KEY","TAB_NAV_FORWARD","TAB_NAV_BACKWARD","FocusTrap","_isActive","_lastTabNavDirection","activate","focus","event","_handleFocusin","_handleKeydown","deactivate","elements","focusableChildren","key","shiftKey","enableDismissTrigger","component","method","clickEvent","tagName","preventDefault","closest","instance","getOrCreateInstance","DATA_API_KEY","ESCAPE_KEY","keyboard","EVENT_HIDE","EVENT_HIDE_PREVENTED","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEUP_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_CLICK_DATA_API","CLASS_NAME_OPEN","CLASS_NAME_STATIC","OPEN_SELECTOR","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","SELECTOR_DATA_TOGGLE","Modal","BaseComponent","_dialog","findOne","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_isShown","_ignoreBackdropClick","_isTransitioning","_scrollBar","toggle","relatedTarget","showEvent","trigger","defaultPrevented","_isAnimated","_adjustDialog","_setEscapeEvent","_setResizeEvent","one","_showBackdrop","_showElement","hideEvent","_queueCallback","_hideModal","htmlElement","handleUpdate","Boolean","getDataAttributes","modalBody","parentNode","display","removeAttribute","setAttribute","scrollTop","transitionComplete","_triggerBackdropTransition","_resetAdjustments","currentTarget","scrollHeight","isModalOverflowing","clientHeight","overflowY","isBodyOverflowing","paddingLeft","paddingRight","each","data","allReadyOpen","getInstance"],"mappings":"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"}
\ No newline at end of file diff --git a/vendor/twbs/bootstrap/js/dist/offcanvas.js b/vendor/twbs/bootstrap/js/dist/offcanvas.js index 529a294ff..5fa456feb 100644 --- a/vendor/twbs/bootstrap/js/dist/offcanvas.js +++ b/vendor/twbs/bootstrap/js/dist/offcanvas.js @@ -1,5 +1,5 @@ /*! - * Bootstrap offcanvas.js v5.0.2 (https://getbootstrap.com/) + * Bootstrap offcanvas.js v5.1.1 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ @@ -16,6 +16,12 @@ var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler); var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent); + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.1): util/index.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ const MILLISECONDS_MULTIPLIER = 1000; const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp) @@ -102,7 +108,7 @@ } if (typeof obj === 'string' && obj.length > 0) { - return SelectorEngine__default['default'].findOne(obj); + return document.querySelector(obj); } return null; @@ -143,8 +149,20 @@ return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'; }; + /** + * Trick to restart an element's animation + * + * @param {HTMLElement} element + * @return void + * + * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation + */ + - const reflow = element => element.offsetHeight; + const reflow = element => { + // eslint-disable-next-line no-unused-expressions + element.offsetHeight; + }; const getjQuery = () => { const { @@ -232,7 +250,7 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): util/scrollBar.js + * Bootstrap (v5.1.1): util/scrollBar.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -336,11 +354,12 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): util/backdrop.js + * Bootstrap (v5.1.1): util/backdrop.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ - const Default$1 = { + const Default$2 = { + className: 'modal-backdrop', isVisible: true, // if false, we use the backdrop helper without adding any element to the dom isAnimated: false, @@ -348,17 +367,17 @@ // give the choice to place backdrop under different elements clickCallback: null }; - const DefaultType$1 = { + const DefaultType$2 = { + className: 'string', isVisible: 'boolean', isAnimated: 'boolean', rootElement: '(element|string)', clickCallback: '(function|null)' }; - const NAME$1 = 'backdrop'; - const CLASS_NAME_BACKDROP = 'modal-backdrop'; + const NAME$2 = 'backdrop'; const CLASS_NAME_FADE = 'fade'; const CLASS_NAME_SHOW$1 = 'show'; - const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$1}`; + const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$2}`; class Backdrop { constructor(config) { @@ -404,7 +423,7 @@ _getElement() { if (!this._element) { const backdrop = document.createElement('div'); - backdrop.className = CLASS_NAME_BACKDROP; + backdrop.className = this._config.className; if (this._config.isAnimated) { backdrop.classList.add(CLASS_NAME_FADE); @@ -417,12 +436,12 @@ } _getConfig(config) { - config = { ...Default$1, + config = { ...Default$2, ...(typeof config === 'object' ? config : {}) }; // use getElement() with the default "body" to get a fresh Element on each instantiation config.rootElement = getElement(config.rootElement); - typeCheckConfig(NAME$1, config, DefaultType$1); + typeCheckConfig(NAME$2, config, DefaultType$2); return config; } @@ -431,7 +450,7 @@ return; } - this._config.rootElement.appendChild(this._getElement()); + this._config.rootElement.append(this._getElement()); EventHandler__default['default'].on(this._getElement(), EVENT_MOUSEDOWN, () => { execute(this._config.clickCallback); @@ -459,7 +478,136 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): offcanvas.js + * Bootstrap (v5.1.1): util/focustrap.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + const Default$1 = { + trapElement: null, + // The element to trap focus inside of + autofocus: true + }; + const DefaultType$1 = { + trapElement: 'element', + autofocus: 'boolean' + }; + const NAME$1 = 'focustrap'; + const DATA_KEY$1 = 'bs.focustrap'; + const EVENT_KEY$1 = `.${DATA_KEY$1}`; + const EVENT_FOCUSIN = `focusin${EVENT_KEY$1}`; + const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$1}`; + const TAB_KEY = 'Tab'; + const TAB_NAV_FORWARD = 'forward'; + const TAB_NAV_BACKWARD = 'backward'; + + class FocusTrap { + constructor(config) { + this._config = this._getConfig(config); + this._isActive = false; + this._lastTabNavDirection = null; + } + + activate() { + const { + trapElement, + autofocus + } = this._config; + + if (this._isActive) { + return; + } + + if (autofocus) { + trapElement.focus(); + } + + EventHandler__default['default'].off(document, EVENT_KEY$1); // guard against infinite focus loop + + EventHandler__default['default'].on(document, EVENT_FOCUSIN, event => this._handleFocusin(event)); + EventHandler__default['default'].on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event)); + this._isActive = true; + } + + deactivate() { + if (!this._isActive) { + return; + } + + this._isActive = false; + EventHandler__default['default'].off(document, EVENT_KEY$1); + } // Private + + + _handleFocusin(event) { + const { + target + } = event; + const { + trapElement + } = this._config; + + if (target === document || target === trapElement || trapElement.contains(target)) { + return; + } + + const elements = SelectorEngine__default['default'].focusableChildren(trapElement); + + if (elements.length === 0) { + trapElement.focus(); + } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) { + elements[elements.length - 1].focus(); + } else { + elements[0].focus(); + } + } + + _handleKeydown(event) { + if (event.key !== TAB_KEY) { + return; + } + + this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD; + } + + _getConfig(config) { + config = { ...Default$1, + ...(typeof config === 'object' ? config : {}) + }; + typeCheckConfig(NAME$1, config, DefaultType$1); + return config; + } + + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.1): util/component-functions.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + const enableDismissTrigger = (component, method = 'hide') => { + const clickEvent = `click.dismiss${component.EVENT_KEY}`; + const name = component.NAME; + EventHandler__default['default'].on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) { + if (['A', 'AREA'].includes(this.tagName)) { + event.preventDefault(); + } + + if (isDisabled(this)) { + return; + } + + const target = getElementFromSelector(this) || this.closest(`.${name}`); + const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method + + instance[method](); + }); + }; + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.1): offcanvas.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ @@ -486,16 +634,14 @@ scroll: 'boolean' }; const CLASS_NAME_SHOW = 'show'; + const CLASS_NAME_BACKDROP = 'offcanvas-backdrop'; const OPEN_SELECTOR = '.offcanvas.show'; const EVENT_SHOW = `show${EVENT_KEY}`; const EVENT_SHOWN = `shown${EVENT_KEY}`; const EVENT_HIDE = `hide${EVENT_KEY}`; const EVENT_HIDDEN = `hidden${EVENT_KEY}`; - const EVENT_FOCUSIN = `focusin${EVENT_KEY}`; const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`; - const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`; const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`; - const SELECTOR_DATA_DISMISS = '[data-bs-dismiss="offcanvas"]'; const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="offcanvas"]'; /** * ------------------------------------------------------------------------ @@ -509,6 +655,7 @@ this._config = this._getConfig(config); this._isShown = false; this._backdrop = this._initializeBackDrop(); + this._focustrap = this._initializeFocusTrap(); this._addEventListeners(); } // Getters @@ -547,8 +694,6 @@ if (!this._config.scroll) { new ScrollBarHelper().hide(); - - this._enforceFocusOnElement(this._element); } this._element.removeAttribute('aria-hidden'); @@ -560,6 +705,10 @@ this._element.classList.add(CLASS_NAME_SHOW); const completeCallBack = () => { + if (!this._config.scroll) { + this._focustrap.activate(); + } + EventHandler__default['default'].trigger(this._element, EVENT_SHOWN, { relatedTarget }); @@ -579,7 +728,7 @@ return; } - EventHandler__default['default'].off(document, EVENT_FOCUSIN); + this._focustrap.deactivate(); this._element.blur(); @@ -611,8 +760,9 @@ dispose() { this._backdrop.dispose(); + this._focustrap.deactivate(); + super.dispose(); - EventHandler__default['default'].off(document, EVENT_FOCUSIN); } // Private @@ -627,6 +777,7 @@ _initializeBackDrop() { return new Backdrop({ + className: CLASS_NAME_BACKDROP, isVisible: this._config.backdrop, isAnimated: true, rootElement: this._element.parentNode, @@ -634,19 +785,13 @@ }); } - _enforceFocusOnElement(element) { - EventHandler__default['default'].off(document, EVENT_FOCUSIN); // guard against infinite focus loop - - EventHandler__default['default'].on(document, EVENT_FOCUSIN, event => { - if (document !== event.target && element !== event.target && !element.contains(event.target)) { - element.focus(); - } + _initializeFocusTrap() { + return new FocusTrap({ + trapElement: this._element }); - element.focus(); } _addEventListeners() { - EventHandler__default['default'].on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide()); EventHandler__default['default'].on(this._element, EVENT_KEYDOWN_DISMISS, event => { if (this._config.keyboard && event.key === ESCAPE_KEY) { this.hide(); @@ -707,6 +852,7 @@ data.toggle(this); }); EventHandler__default['default'].on(window, EVENT_LOAD_DATA_API, () => SelectorEngine__default['default'].find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show())); + enableDismissTrigger(Offcanvas); /** * ------------------------------------------------------------------------ * jQuery diff --git a/vendor/twbs/bootstrap/js/dist/offcanvas.js.map b/vendor/twbs/bootstrap/js/dist/offcanvas.js.map index f8f3aa45b..9fbe1ee77 100644 --- a/vendor/twbs/bootstrap/js/dist/offcanvas.js.map +++ b/vendor/twbs/bootstrap/js/dist/offcanvas.js.map @@ -1 +1 @@ -{"version":3,"file":"offcanvas.js","sources":["../src/util/index.js","../src/util/scrollbar.js","../src/util/backdrop.js","../src/offcanvas.js"],"sourcesContent":["import SelectorEngine from '../dom/selector-engine'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return SelectorEngine.findOne(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine'\nimport Manipulator from '../dom/manipulator'\nimport { isElement } from './index'\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body\n }\n\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth\n return Math.abs(window.innerWidth - documentWidth)\n }\n\n hide() {\n const width = this.getWidth()\n this._disableOverFlow()\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width)\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width)\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width)\n }\n\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow')\n this._element.style.overflow = 'hidden'\n }\n\n _setElementAttributes(selector, styleProp, callback) {\n const scrollbarWidth = this.getWidth()\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return\n }\n\n this._saveInitialAttribute(element, styleProp)\n const calculatedValue = window.getComputedStyle(element)[styleProp]\n element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow')\n this._resetElementAttributes(this._element, 'paddingRight')\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight')\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight')\n }\n\n _saveInitialAttribute(element, styleProp) {\n const actualValue = element.style[styleProp]\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProp, actualValue)\n }\n }\n\n _resetElementAttributes(selector, styleProp) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProp)\n if (typeof value === 'undefined') {\n element.style.removeProperty(styleProp)\n } else {\n Manipulator.removeDataAttribute(element, styleProp)\n element.style[styleProp] = value\n }\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector)\n } else {\n SelectorEngine.find(selector, this._element).forEach(callBack)\n }\n }\n\n isOverflowing() {\n return this.getWidth() > 0\n }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { execute, executeAfterTransition, getElement, reflow, typeCheckConfig } from './index'\n\nconst Default = {\n isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n isAnimated: false,\n rootElement: 'body', // give the choice to place backdrop under different elements\n clickCallback: null\n}\n\nconst DefaultType = {\n isVisible: 'boolean',\n isAnimated: 'boolean',\n rootElement: '(element|string)',\n clickCallback: '(function|null)'\n}\nconst NAME = 'backdrop'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nclass Backdrop {\n constructor(config) {\n this._config = this._getConfig(config)\n this._isAppended = false\n this._element = null\n }\n\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._append()\n\n if (this._config.isAnimated) {\n reflow(this._getElement())\n }\n\n this._getElement().classList.add(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n execute(callback)\n })\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n this.dispose()\n execute(callback)\n })\n }\n\n // Private\n\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div')\n backdrop.className = CLASS_NAME_BACKDROP\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE)\n }\n\n this._element = backdrop\n }\n\n return this._element\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' ? config : {})\n }\n\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement)\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _append() {\n if (this._isAppended) {\n return\n }\n\n this._config.rootElement.appendChild(this._getElement())\n\n EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback)\n })\n\n this._isAppended = true\n }\n\n dispose() {\n if (!this._isAppended) {\n return\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n this._element.remove()\n this._isAppended = false\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isDisabled,\n isVisible,\n typeCheckConfig\n} from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport SelectorEngine from './dom/selector-engine'\nimport Manipulator from './dom/manipulator'\nimport Backdrop from './util/backdrop'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n scroll: false\n}\n\nconst DefaultType = {\n backdrop: 'boolean',\n keyboard: 'boolean',\n scroll: 'boolean'\n}\n\nconst CLASS_NAME_SHOW = 'show'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"offcanvas\"]'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._isShown = false\n this._backdrop = this._initializeBackDrop()\n this._addEventListeners()\n }\n\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n static get Default() {\n return Default\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) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._element.style.visibility = 'visible'\n\n this._backdrop.show()\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide()\n this._enforceFocusOnElement(this._element)\n }\n\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const completeCallBack = () => {\n EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n }\n\n this._queueCallback(completeCallBack, this._element, true)\n }\n\n hide() {\n if (!this._isShown) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n EventHandler.off(document, EVENT_FOCUSIN)\n this._element.blur()\n this._isShown = false\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._backdrop.hide()\n\n const completeCallback = () => {\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._element.style.visibility = 'hidden'\n\n if (!this._config.scroll) {\n new ScrollBarHelper().reset()\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._queueCallback(completeCallback, this._element, true)\n }\n\n dispose() {\n this._backdrop.dispose()\n super.dispose()\n EventHandler.off(document, EVENT_FOCUSIN)\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: this._config.backdrop,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: () => this.hide()\n })\n }\n\n _enforceFocusOnElement(element) {\n EventHandler.off(document, EVENT_FOCUSIN) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => {\n if (document !== event.target &&\n element !== event.target &&\n !element.contains(event.target)) {\n element.focus()\n }\n })\n element.focus()\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide())\n\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n this.hide()\n }\n })\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\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 (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus()\n }\n })\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (allReadyOpen && allReadyOpen !== target) {\n Offcanvas.getInstance(allReadyOpen).hide()\n }\n\n const data = Offcanvas.getOrCreateInstance(target)\n data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () =>\n SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show())\n)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\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","jquery","nodeType","getElement","length","SelectorEngine","findOne","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","TypeError","toUpperCase","isVisible","getClientRects","getPropertyValue","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","reflow","offsetHeight","getjQuery","jQuery","body","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","addEventListener","push","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","execute","executeAfterTransition","transitionElement","waitForTransition","durationPadding","emulatedDuration","called","handler","target","removeEventListener","setTimeout","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","ScrollBarHelper","constructor","_element","getWidth","documentWidth","documentElement","clientWidth","Math","abs","innerWidth","hide","width","_disableOverFlow","_setElementAttributes","calculatedValue","_saveInitialAttribute","style","overflow","styleProp","scrollbarWidth","manipulationCallBack","_applyManipulationCallback","reset","_resetElementAttributes","actualValue","Manipulator","setDataAttribute","getDataAttribute","removeProperty","removeDataAttribute","callBack","find","isOverflowing","Default","isAnimated","rootElement","clickCallback","DefaultType","CLASS_NAME_BACKDROP","CLASS_NAME_FADE","CLASS_NAME_SHOW","EVENT_MOUSEDOWN","Backdrop","_config","_getConfig","_isAppended","show","_append","_getElement","add","_emulateAnimation","remove","dispose","backdrop","createElement","className","appendChild","EventHandler","on","off","DATA_KEY","EVENT_KEY","DATA_API_KEY","EVENT_LOAD_DATA_API","ESCAPE_KEY","keyboard","scroll","OPEN_SELECTOR","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","EVENT_FOCUSIN","EVENT_CLICK_DATA_API","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS","SELECTOR_DATA_DISMISS","SELECTOR_DATA_TOGGLE","Offcanvas","BaseComponent","_isShown","_backdrop","_initializeBackDrop","_addEventListeners","toggle","relatedTarget","showEvent","trigger","defaultPrevented","visibility","_enforceFocusOnElement","removeAttribute","setAttribute","completeCallBack","_queueCallback","hideEvent","blur","completeCallback","getDataAttributes","parentNode","event","focus","key","each","data","getOrCreateInstance","tagName","preventDefault","one","allReadyOpen","getInstance","el"],"mappings":"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"}
\ No newline at end of file +{"version":3,"file":"offcanvas.js","sources":["../src/util/index.js","../src/util/scrollbar.js","../src/util/backdrop.js","../src/util/focustrap.js","../src/util/component-functions.js","../src/offcanvas.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return document.querySelector(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight\n}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine'\nimport Manipulator from '../dom/manipulator'\nimport { isElement } from './index'\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body\n }\n\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth\n return Math.abs(window.innerWidth - documentWidth)\n }\n\n hide() {\n const width = this.getWidth()\n this._disableOverFlow()\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width)\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width)\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width)\n }\n\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow')\n this._element.style.overflow = 'hidden'\n }\n\n _setElementAttributes(selector, styleProp, callback) {\n const scrollbarWidth = this.getWidth()\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return\n }\n\n this._saveInitialAttribute(element, styleProp)\n const calculatedValue = window.getComputedStyle(element)[styleProp]\n element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow')\n this._resetElementAttributes(this._element, 'paddingRight')\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight')\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight')\n }\n\n _saveInitialAttribute(element, styleProp) {\n const actualValue = element.style[styleProp]\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProp, actualValue)\n }\n }\n\n _resetElementAttributes(selector, styleProp) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProp)\n if (typeof value === 'undefined') {\n element.style.removeProperty(styleProp)\n } else {\n Manipulator.removeDataAttribute(element, styleProp)\n element.style[styleProp] = value\n }\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector)\n } else {\n SelectorEngine.find(selector, this._element).forEach(callBack)\n }\n }\n\n isOverflowing() {\n return this.getWidth() > 0\n }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { execute, executeAfterTransition, getElement, reflow, typeCheckConfig } from './index'\n\nconst Default = {\n className: 'modal-backdrop',\n isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n isAnimated: false,\n rootElement: 'body', // give the choice to place backdrop under different elements\n clickCallback: null\n}\n\nconst DefaultType = {\n className: 'string',\n isVisible: 'boolean',\n isAnimated: 'boolean',\n rootElement: '(element|string)',\n clickCallback: '(function|null)'\n}\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nclass Backdrop {\n constructor(config) {\n this._config = this._getConfig(config)\n this._isAppended = false\n this._element = null\n }\n\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._append()\n\n if (this._config.isAnimated) {\n reflow(this._getElement())\n }\n\n this._getElement().classList.add(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n execute(callback)\n })\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n this.dispose()\n execute(callback)\n })\n }\n\n // Private\n\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div')\n backdrop.className = this._config.className\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE)\n }\n\n this._element = backdrop\n }\n\n return this._element\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' ? config : {})\n }\n\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement)\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _append() {\n if (this._isAppended) {\n return\n }\n\n this._config.rootElement.append(this._getElement())\n\n EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback)\n })\n\n this._isAppended = true\n }\n\n dispose() {\n if (!this._isAppended) {\n return\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n this._element.remove()\n this._isAppended = false\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport SelectorEngine from '../dom/selector-engine'\nimport { typeCheckConfig } from './index'\n\nconst Default = {\n trapElement: null, // The element to trap focus inside of\n autofocus: true\n}\n\nconst DefaultType = {\n trapElement: 'element',\n autofocus: 'boolean'\n}\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nclass FocusTrap {\n constructor(config) {\n this._config = this._getConfig(config)\n this._isActive = false\n this._lastTabNavDirection = null\n }\n\n activate() {\n const { trapElement, autofocus } = this._config\n\n if (this._isActive) {\n return\n }\n\n if (autofocus) {\n trapElement.focus()\n }\n\n EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n this._isActive = true\n }\n\n deactivate() {\n if (!this._isActive) {\n return\n }\n\n this._isActive = false\n EventHandler.off(document, EVENT_KEY)\n }\n\n // Private\n\n _handleFocusin(event) {\n const { target } = event\n const { trapElement } = this._config\n\n if (\n target === document ||\n target === trapElement ||\n trapElement.contains(target)\n ) {\n return\n }\n\n const elements = SelectorEngine.focusableChildren(trapElement)\n\n if (elements.length === 0) {\n trapElement.focus()\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus()\n } else {\n elements[0].focus()\n }\n }\n\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { getElementFromSelector, isDisabled } from './index'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`\n const name = component.NAME\n\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const target = getElementFromSelector(this) || this.closest(`.${name}`)\n const instance = component.getOrCreateInstance(target)\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]()\n })\n}\n\nexport {\n enableDismissTrigger\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isDisabled,\n isVisible,\n typeCheckConfig\n} from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport SelectorEngine from './dom/selector-engine'\nimport Manipulator from './dom/manipulator'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n scroll: false\n}\n\nconst DefaultType = {\n backdrop: 'boolean',\n keyboard: 'boolean',\n scroll: 'boolean'\n}\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._isShown = false\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._addEventListeners()\n }\n\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n static get Default() {\n return Default\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) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._element.style.visibility = 'visible'\n\n this._backdrop.show()\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide()\n }\n\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const completeCallBack = () => {\n if (!this._config.scroll) {\n this._focustrap.activate()\n }\n\n EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n }\n\n this._queueCallback(completeCallBack, this._element, true)\n }\n\n hide() {\n if (!this._isShown) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._focustrap.deactivate()\n this._element.blur()\n this._isShown = false\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._backdrop.hide()\n\n const completeCallback = () => {\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._element.style.visibility = 'hidden'\n\n if (!this._config.scroll) {\n new ScrollBarHelper().reset()\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._queueCallback(completeCallback, this._element, true)\n }\n\n dispose() {\n this._backdrop.dispose()\n this._focustrap.deactivate()\n super.dispose()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _initializeBackDrop() {\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible: this._config.backdrop,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: () => this.hide()\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n this.hide()\n }\n })\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\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 (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus()\n }\n })\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (allReadyOpen && allReadyOpen !== target) {\n Offcanvas.getInstance(allReadyOpen).hide()\n }\n\n const data = Offcanvas.getOrCreateInstance(target)\n data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () =>\n SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show())\n)\n\nenableDismissTrigger(Offcanvas)\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\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","jquery","nodeType","getElement","length","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","TypeError","toUpperCase","isVisible","getClientRects","getPropertyValue","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","reflow","offsetHeight","getjQuery","jQuery","body","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","addEventListener","push","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","execute","executeAfterTransition","transitionElement","waitForTransition","durationPadding","emulatedDuration","called","handler","target","removeEventListener","setTimeout","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","ScrollBarHelper","constructor","_element","getWidth","documentWidth","documentElement","clientWidth","Math","abs","innerWidth","hide","width","_disableOverFlow","_setElementAttributes","calculatedValue","_saveInitialAttribute","style","overflow","styleProp","scrollbarWidth","manipulationCallBack","_applyManipulationCallback","reset","_resetElementAttributes","actualValue","Manipulator","setDataAttribute","getDataAttribute","removeProperty","removeDataAttribute","callBack","SelectorEngine","find","isOverflowing","Default","className","isAnimated","rootElement","clickCallback","DefaultType","CLASS_NAME_FADE","CLASS_NAME_SHOW","EVENT_MOUSEDOWN","Backdrop","_config","_getConfig","_isAppended","show","_append","_getElement","add","_emulateAnimation","remove","dispose","backdrop","createElement","append","EventHandler","on","off","trapElement","autofocus","DATA_KEY","EVENT_KEY","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_KEY","TAB_NAV_FORWARD","TAB_NAV_BACKWARD","FocusTrap","_isActive","_lastTabNavDirection","activate","focus","event","_handleFocusin","_handleKeydown","deactivate","elements","focusableChildren","key","shiftKey","enableDismissTrigger","component","method","clickEvent","tagName","preventDefault","closest","instance","getOrCreateInstance","DATA_API_KEY","EVENT_LOAD_DATA_API","ESCAPE_KEY","keyboard","scroll","CLASS_NAME_BACKDROP","OPEN_SELECTOR","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","EVENT_CLICK_DATA_API","EVENT_KEYDOWN_DISMISS","SELECTOR_DATA_TOGGLE","Offcanvas","BaseComponent","_isShown","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_addEventListeners","toggle","relatedTarget","showEvent","trigger","defaultPrevented","visibility","removeAttribute","setAttribute","completeCallBack","_queueCallback","hideEvent","blur","completeCallback","getDataAttributes","parentNode","each","data","one","allReadyOpen","findOne","getInstance","el"],"mappings":"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"}
\ No newline at end of file diff --git a/vendor/twbs/bootstrap/js/dist/popover.js b/vendor/twbs/bootstrap/js/dist/popover.js index 0fc0ec4b7..09e1b4ee5 100644 --- a/vendor/twbs/bootstrap/js/dist/popover.js +++ b/vendor/twbs/bootstrap/js/dist/popover.js @@ -1,19 +1,25 @@ /*! - * Bootstrap popover.js v5.0.2 (https://getbootstrap.com/) + * Bootstrap popover.js v5.1.1 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./tooltip.js')) : - typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './tooltip'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Popover = factory(global.SelectorEngine, global.Tooltip)); -}(this, (function (SelectorEngine, Tooltip) { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./tooltip.js')) : + typeof define === 'function' && define.amd ? define(['./tooltip'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Popover = factory(global.Tooltip)); +}(this, (function (Tooltip) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } - var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine); var Tooltip__default = /*#__PURE__*/_interopDefaultLegacy(Tooltip); + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.1): util/index.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + const getjQuery = () => { const { jQuery @@ -64,7 +70,7 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): popover.js + * Bootstrap (v5.1.1): popover.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -78,7 +84,6 @@ const DATA_KEY = 'bs.popover'; const EVENT_KEY = `.${DATA_KEY}`; const CLASS_PREFIX = 'bs-popover'; - const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\s)${CLASS_PREFIX}\\S+`, 'g'); const Default = { ...Tooltip__default['default'].Default, placement: 'right', offset: [0, 8], @@ -101,8 +106,6 @@ MOUSEENTER: `mouseenter${EVENT_KEY}`, MOUSELEAVE: `mouseleave${EVENT_KEY}` }; - const CLASS_NAME_FADE = 'fade'; - const CLASS_NAME_SHOW = 'show'; const SELECTOR_TITLE = '.popover-header'; const SELECTOR_CONTENT = '.popover-body'; /** @@ -134,55 +137,19 @@ return this.getTitle() || this._getContent(); } - getTipElement() { - if (this.tip) { - return this.tip; - } - - this.tip = super.getTipElement(); - - if (!this.getTitle()) { - SelectorEngine__default['default'].findOne(SELECTOR_TITLE, this.tip).remove(); - } - - if (!this._getContent()) { - SelectorEngine__default['default'].findOne(SELECTOR_CONTENT, this.tip).remove(); - } + setContent(tip) { + this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TITLE); - return this.tip; - } - - setContent() { - const tip = this.getTipElement(); // we use append for html objects to maintain js events - - this.setElementContent(SelectorEngine__default['default'].findOne(SELECTOR_TITLE, tip), this.getTitle()); - - let content = this._getContent(); - - if (typeof content === 'function') { - content = content.call(this._element); - } - - this.setElementContent(SelectorEngine__default['default'].findOne(SELECTOR_CONTENT, tip), content); - tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW); + this._sanitizeAndSetContent(tip, this._getContent(), SELECTOR_CONTENT); } // Private - _addAttachmentClass(attachment) { - this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`); - } - _getContent() { - return this._element.getAttribute('data-bs-content') || this._config.content; + return this._resolvePossibleFunction(this._config.content); } - _cleanTipClass() { - const tip = this.getTipElement(); - const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX); - - if (tabClass !== null && tabClass.length > 0) { - tabClass.map(token => token.trim()).forEach(tClass => tip.classList.remove(tClass)); - } + _getBasicClassPrefix() { + return CLASS_PREFIX; } // Static diff --git a/vendor/twbs/bootstrap/js/dist/popover.js.map b/vendor/twbs/bootstrap/js/dist/popover.js.map index 1d80fa2e0..408418438 100644 --- a/vendor/twbs/bootstrap/js/dist/popover.js.map +++ b/vendor/twbs/bootstrap/js/dist/popover.js.map @@ -1 +1 @@ -{"version":3,"file":"popover.js","sources":["../src/util/index.js","../src/popover.js"],"sourcesContent":["import SelectorEngine from '../dom/selector-engine'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return SelectorEngine.findOne(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport SelectorEngine from './dom/selector-engine'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n ...Tooltip.Default,\n placement: 'right',\n offset: [0, 8],\n trigger: 'click',\n content: '',\n template: '<div class=\"popover\" role=\"tooltip\">' +\n '<div class=\"popover-arrow\"></div>' +\n '<h3 class=\"popover-header\"></h3>' +\n '<div class=\"popover-body\"></div>' +\n '</div>'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(string|element|function)'\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 INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get Event() {\n return Event\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n getTipElement() {\n if (this.tip) {\n return this.tip\n }\n\n this.tip = super.getTipElement()\n\n if (!this.getTitle()) {\n SelectorEngine.findOne(SELECTOR_TITLE, this.tip).remove()\n }\n\n if (!this._getContent()) {\n SelectorEngine.findOne(SELECTOR_CONTENT, this.tip).remove()\n }\n\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n\n // we use append for html objects to maintain js events\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this._element)\n }\n\n this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content)\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n // Private\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getContent() {\n return this._element.getAttribute('data-bs-content') || this._config.content\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config)\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]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Popover to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n"],"names":["getjQuery","jQuery","window","document","body","hasAttribute","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","length","addEventListener","forEach","push","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","DATA_KEY","EVENT_KEY","CLASS_PREFIX","BSCLS_PREFIX_REGEX","RegExp","Default","Tooltip","placement","offset","trigger","content","template","DefaultType","Event","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","CLASS_NAME_FADE","CLASS_NAME_SHOW","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","isWithContent","getTitle","_getContent","getTipElement","tip","SelectorEngine","findOne","remove","setContent","setElementContent","call","_element","classList","_addAttachmentClass","attachment","add","updateAttachment","getAttribute","_config","_cleanTipClass","tabClass","match","map","token","trim","tClass","config","each","data","getOrCreateInstance","TypeError"],"mappings":"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"}
\ No newline at end of file +{"version":3,"file":"popover.js","sources":["../src/util/index.js","../src/popover.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return document.querySelector(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight\n}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\n\nconst Default = {\n ...Tooltip.Default,\n placement: 'right',\n offset: [0, 8],\n trigger: 'click',\n content: '',\n template: '<div class=\"popover\" role=\"tooltip\">' +\n '<div class=\"popover-arrow\"></div>' +\n '<h3 class=\"popover-header\"></h3>' +\n '<div class=\"popover-body\"></div>' +\n '</div>'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(string|element|function)'\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 INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get Event() {\n return Event\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n setContent(tip) {\n this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TITLE)\n this._sanitizeAndSetContent(tip, this._getContent(), SELECTOR_CONTENT)\n }\n\n // Private\n\n _getContent() {\n return this._resolvePossibleFunction(this._config.content)\n }\n\n _getBasicClassPrefix() {\n return CLASS_PREFIX\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config)\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]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Popover to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n"],"names":["getjQuery","jQuery","window","document","body","hasAttribute","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","length","addEventListener","forEach","push","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","DATA_KEY","EVENT_KEY","CLASS_PREFIX","Default","Tooltip","placement","offset","trigger","content","template","DefaultType","Event","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","isWithContent","getTitle","_getContent","setContent","tip","_sanitizeAndSetContent","_resolvePossibleFunction","_config","_getBasicClassPrefix","config","each","data","getOrCreateInstance","TypeError"],"mappings":"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"}
\ No newline at end of file diff --git a/vendor/twbs/bootstrap/js/dist/scrollspy.js b/vendor/twbs/bootstrap/js/dist/scrollspy.js index 04f9b77e2..44afbbb67 100644 --- a/vendor/twbs/bootstrap/js/dist/scrollspy.js +++ b/vendor/twbs/bootstrap/js/dist/scrollspy.js @@ -1,30 +1,28 @@ /*! - * Bootstrap scrollspy.js v5.0.2 (https://getbootstrap.com/) + * Bootstrap scrollspy.js v5.1.1 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./base-component.js')) : - typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/event-handler', './dom/manipulator', './base-component'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.ScrollSpy = factory(global.SelectorEngine, global.EventHandler, global.Manipulator, global.Base)); -}(this, (function (SelectorEngine, EventHandler, Manipulator, BaseComponent) { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./dom/selector-engine.js'), require('./base-component.js')) : + typeof define === 'function' && define.amd ? define(['./dom/event-handler', './dom/manipulator', './dom/selector-engine', './base-component'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.ScrollSpy = factory(global.EventHandler, global.Manipulator, global.SelectorEngine, global.Base)); +}(this, (function (EventHandler, Manipulator, SelectorEngine, BaseComponent) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } - var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine); var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler); var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator); + var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine); var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent); /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): util/index.js + * Bootstrap (v5.1.1): util/index.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ - const MAX_UID = 1000000; - const toType = obj => { if (obj === null || obj === undefined) { return `${obj}`; @@ -32,20 +30,6 @@ return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase(); }; - /** - * -------------------------------------------------------------------------- - * Public Util Api - * -------------------------------------------------------------------------- - */ - - - const getUID = prefix => { - do { - prefix += Math.floor(Math.random() * MAX_UID); - } while (document.getElementById(prefix)); - - return prefix; - }; const getSelector = element => { let selector = element.getAttribute('data-bs-target'); @@ -93,6 +77,19 @@ return typeof obj.nodeType !== 'undefined'; }; + const getElement = obj => { + if (isElement(obj)) { + // it's a jQuery object or a node element + return obj.jquery ? obj[0] : obj; + } + + if (typeof obj === 'string' && obj.length > 0) { + return document.querySelector(obj); + } + + return null; + }; + const typeCheckConfig = (componentName, config, configTypes) => { Object.keys(configTypes).forEach(property => { const expectedTypes = configTypes[property]; @@ -155,7 +152,7 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): scrollspy.js + * Bootstrap (v5.1.1): scrollspy.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -189,6 +186,7 @@ const SELECTOR_NAV_LINKS = '.nav-link'; const SELECTOR_NAV_ITEMS = '.nav-item'; const SELECTOR_LIST_ITEMS = '.list-group-item'; + const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}, .${CLASS_NAME_DROPDOWN_ITEM}`; const SELECTOR_DROPDOWN = '.dropdown'; const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'; const METHOD_OFFSET = 'offset'; @@ -204,7 +202,6 @@ super(element); this._scrollElement = this._element.tagName === 'BODY' ? window : this._element; this._config = this._getConfig(config); - this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS}, ${this._config.target} ${SELECTOR_LIST_ITEMS}, ${this._config.target} .${CLASS_NAME_DROPDOWN_ITEM}`; this._offsets = []; this._targets = []; this._activeTarget = null; @@ -232,7 +229,7 @@ this._offsets = []; this._targets = []; this._scrollHeight = this._getScrollHeight(); - const targets = SelectorEngine__default['default'].find(this._selector); + const targets = SelectorEngine__default['default'].find(SELECTOR_LINK_ITEMS, this._config.target); targets.map(element => { const targetSelector = getSelectorFromElement(element); const target = targetSelector ? SelectorEngine__default['default'].findOne(targetSelector) : null; @@ -264,20 +261,7 @@ ...Manipulator__default['default'].getDataAttributes(this._element), ...(typeof config === 'object' && config ? config : {}) }; - - if (typeof config.target !== 'string' && isElement(config.target)) { - let { - id - } = config.target; - - if (!id) { - id = getUID(NAME); - config.target.id = id; - } - - config.target = `#${id}`; - } - + config.target = getElement(config.target) || document.documentElement; typeCheckConfig(NAME, config, DefaultType); return config; } @@ -337,16 +321,13 @@ this._clear(); - const queries = this._selector.split(',').map(selector => `${selector}[data-bs-target="${target}"],${selector}[href="${target}"]`); - - const link = SelectorEngine__default['default'].findOne(queries.join(',')); + const queries = SELECTOR_LINK_ITEMS.split(',').map(selector => `${selector}[data-bs-target="${target}"],${selector}[href="${target}"]`); + const link = SelectorEngine__default['default'].findOne(queries.join(','), this._config.target); + link.classList.add(CLASS_NAME_ACTIVE); if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) { SelectorEngine__default['default'].findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE); - link.classList.add(CLASS_NAME_ACTIVE); } else { - // Set triggered link as active - link.classList.add(CLASS_NAME_ACTIVE); SelectorEngine__default['default'].parents(link, SELECTOR_NAV_LIST_GROUP).forEach(listGroup => { // Set triggered links parents as active // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor @@ -364,7 +345,7 @@ } _clear() { - SelectorEngine__default['default'].find(this._selector).filter(node => node.classList.contains(CLASS_NAME_ACTIVE)).forEach(node => node.classList.remove(CLASS_NAME_ACTIVE)); + SelectorEngine__default['default'].find(SELECTOR_LINK_ITEMS, this._config.target).filter(node => node.classList.contains(CLASS_NAME_ACTIVE)).forEach(node => node.classList.remove(CLASS_NAME_ACTIVE)); } // Static diff --git a/vendor/twbs/bootstrap/js/dist/scrollspy.js.map b/vendor/twbs/bootstrap/js/dist/scrollspy.js.map index 82b14763c..7fd2c7521 100644 --- a/vendor/twbs/bootstrap/js/dist/scrollspy.js.map +++ b/vendor/twbs/bootstrap/js/dist/scrollspy.js.map @@ -1 +1 @@ -{"version":3,"file":"scrollspy.js","sources":["../src/util/index.js","../src/scrollspy.js"],"sourcesContent":["import SelectorEngine from '../dom/selector-engine'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return SelectorEngine.findOne(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getSelectorFromElement,\n getUID,\n isElement,\n typeCheckConfig\n} from './util/index'\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 = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n offset: 10,\n method: 'auto',\n target: ''\n}\n\nconst DefaultType = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element)\n this._scrollElement = this._element.tagName === 'BODY' ? window : this._element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS}, ${this._config.target} ${SELECTOR_LIST_ITEMS}, ${this._config.target} .${CLASS_NAME_DROPDOWN_ITEM}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process())\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window ?\n METHOD_OFFSET :\n METHOD_POSITION\n\n const offsetMethod = this._config.method === 'auto' ?\n autoMethod :\n this._config.method\n\n const offsetBase = offsetMethod === METHOD_POSITION ?\n this._getScrollTop() :\n 0\n\n this._offsets = []\n this._targets = []\n this._scrollHeight = this._getScrollHeight()\n\n const targets = SelectorEngine.find(this._selector)\n\n targets.map(element => {\n const targetSelector = getSelectorFromElement(element)\n const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n return [\n Manipulator[offsetMethod](target).top + offsetBase,\n targetSelector\n ]\n }\n }\n\n return null\n })\n .filter(item => item)\n .sort((a, b) => a[0] - b[0])\n .forEach(item => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n EventHandler.off(this._scrollElement, EVENT_KEY)\n super.dispose()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.target !== 'string' && isElement(config.target)) {\n let { id } = config.target\n if (!id) {\n id = getUID(NAME)\n config.target.id = id\n }\n\n config.target = `#${id}`\n }\n\n typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window ?\n this._scrollElement.pageYOffset :\n this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window ?\n window.innerHeight :\n this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector.split(',')\n .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const link = SelectorEngine.findOne(queries.join(','))\n\n if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n\n link.classList.add(CLASS_NAME_ACTIVE)\n } else {\n // Set triggered link as active\n link.classList.add(CLASS_NAME_ACTIVE)\n\n SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)\n .forEach(listGroup => {\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)\n .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n\n // Handle special case when .nav-link is inside .nav-item\n SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS)\n .forEach(navItem => {\n SelectorEngine.children(navItem, SELECTOR_NAV_LINKS)\n .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n })\n })\n }\n\n EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n SelectorEngine.find(this._selector)\n .filter(node => node.classList.contains(CLASS_NAME_ACTIVE))\n .forEach(node => node.classList.remove(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = ScrollSpy.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n SelectorEngine.find(SELECTOR_DATA_SPY)\n .forEach(spy => new ScrollSpy(spy))\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .ScrollSpy to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n"],"names":["MAX_UID","toType","obj","undefined","toString","call","match","toLowerCase","getUID","prefix","Math","floor","random","document","getElementById","getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getSelectorFromElement","querySelector","isElement","jquery","nodeType","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","TypeError","toUpperCase","getjQuery","jQuery","window","body","hasAttribute","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","length","addEventListener","push","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","DATA_KEY","EVENT_KEY","DATA_API_KEY","Default","offset","method","target","DefaultType","EVENT_ACTIVATE","EVENT_SCROLL","EVENT_LOAD_DATA_API","CLASS_NAME_DROPDOWN_ITEM","CLASS_NAME_ACTIVE","SELECTOR_DATA_SPY","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","METHOD_OFFSET","METHOD_POSITION","ScrollSpy","BaseComponent","constructor","_scrollElement","_element","tagName","_config","_getConfig","_selector","_offsets","_targets","_activeTarget","_scrollHeight","EventHandler","on","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targets","SelectorEngine","find","map","targetSelector","findOne","targetBCR","getBoundingClientRect","width","height","Manipulator","top","filter","item","sort","a","b","dispose","off","getDataAttributes","id","pageYOffset","scrollTop","scrollHeight","max","documentElement","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","i","isActiveTarget","queries","link","join","classList","contains","closest","add","parents","listGroup","prev","navItem","children","trigger","relatedTarget","node","remove","each","data","getOrCreateInstance","spy"],"mappings":"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"}
\ No newline at end of file +{"version":3,"file":"scrollspy.js","sources":["../src/util/index.js","../src/scrollspy.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return document.querySelector(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight\n}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElement,\n getSelectorFromElement,\n typeCheckConfig\n} from './util/index'\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 = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n offset: 10,\n method: 'auto',\n target: ''\n}\n\nconst DefaultType = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}, .${CLASS_NAME_DROPDOWN_ITEM}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element)\n this._scrollElement = this._element.tagName === 'BODY' ? window : this._element\n this._config = this._getConfig(config)\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process())\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window ?\n METHOD_OFFSET :\n METHOD_POSITION\n\n const offsetMethod = this._config.method === 'auto' ?\n autoMethod :\n this._config.method\n\n const offsetBase = offsetMethod === METHOD_POSITION ?\n this._getScrollTop() :\n 0\n\n this._offsets = []\n this._targets = []\n this._scrollHeight = this._getScrollHeight()\n\n const targets = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target)\n\n targets.map(element => {\n const targetSelector = getSelectorFromElement(element)\n const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n return [\n Manipulator[offsetMethod](target).top + offsetBase,\n targetSelector\n ]\n }\n }\n\n return null\n })\n .filter(item => item)\n .sort((a, b) => a[0] - b[0])\n .forEach(item => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n EventHandler.off(this._scrollElement, EVENT_KEY)\n super.dispose()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n config.target = getElement(config.target) || document.documentElement\n\n typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window ?\n this._scrollElement.pageYOffset :\n this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window ?\n window.innerHeight :\n this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = SELECTOR_LINK_ITEMS.split(',')\n .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const link = SelectorEngine.findOne(queries.join(','), this._config.target)\n\n link.classList.add(CLASS_NAME_ACTIVE)\n if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n } else {\n SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)\n .forEach(listGroup => {\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)\n .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n\n // Handle special case when .nav-link is inside .nav-item\n SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS)\n .forEach(navItem => {\n SelectorEngine.children(navItem, SELECTOR_NAV_LINKS)\n .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n })\n })\n }\n\n EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target)\n .filter(node => node.classList.contains(CLASS_NAME_ACTIVE))\n .forEach(node => node.classList.remove(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = ScrollSpy.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n SelectorEngine.find(SELECTOR_DATA_SPY)\n .forEach(spy => new ScrollSpy(spy))\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .ScrollSpy to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n"],"names":["toType","obj","undefined","toString","call","match","toLowerCase","getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getSelectorFromElement","document","querySelector","isElement","jquery","nodeType","getElement","length","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","TypeError","toUpperCase","getjQuery","jQuery","window","body","hasAttribute","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","addEventListener","push","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","DATA_KEY","EVENT_KEY","DATA_API_KEY","Default","offset","method","target","DefaultType","EVENT_ACTIVATE","EVENT_SCROLL","EVENT_LOAD_DATA_API","CLASS_NAME_DROPDOWN_ITEM","CLASS_NAME_ACTIVE","SELECTOR_DATA_SPY","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","METHOD_OFFSET","METHOD_POSITION","ScrollSpy","BaseComponent","constructor","_scrollElement","_element","tagName","_config","_getConfig","_offsets","_targets","_activeTarget","_scrollHeight","EventHandler","on","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targets","SelectorEngine","find","map","targetSelector","findOne","targetBCR","getBoundingClientRect","width","height","Manipulator","top","filter","item","sort","a","b","dispose","off","getDataAttributes","documentElement","pageYOffset","scrollTop","scrollHeight","Math","max","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","i","isActiveTarget","queries","link","join","classList","add","contains","closest","parents","listGroup","prev","navItem","children","trigger","relatedTarget","node","remove","each","data","getOrCreateInstance","spy"],"mappings":"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"}
\ No newline at end of file diff --git a/vendor/twbs/bootstrap/js/dist/tab.js b/vendor/twbs/bootstrap/js/dist/tab.js index 386152b69..91dc356e4 100644 --- a/vendor/twbs/bootstrap/js/dist/tab.js +++ b/vendor/twbs/bootstrap/js/dist/tab.js @@ -1,20 +1,27 @@ /*! - * Bootstrap tab.js v5.0.2 (https://getbootstrap.com/) + * Bootstrap tab.js v5.1.1 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./dom/event-handler.js'), require('./base-component.js')) : - typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/event-handler', './base-component'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Tab = factory(global.SelectorEngine, global.EventHandler, global.Base)); -}(this, (function (SelectorEngine, EventHandler, BaseComponent) { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/event-handler.js'), require('./dom/selector-engine.js'), require('./base-component.js')) : + typeof define === 'function' && define.amd ? define(['./dom/event-handler', './dom/selector-engine', './base-component'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Tab = factory(global.EventHandler, global.SelectorEngine, global.Base)); +}(this, (function (EventHandler, SelectorEngine, BaseComponent) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } - var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine); var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler); + var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine); var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent); + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.1): util/index.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + const getSelector = element => { let selector = element.getAttribute('data-bs-target'); @@ -59,8 +66,20 @@ return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'; }; + /** + * Trick to restart an element's animation + * + * @param {HTMLElement} element + * @return void + * + * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation + */ + - const reflow = element => element.offsetHeight; + const reflow = element => { + // eslint-disable-next-line no-unused-expressions + element.offsetHeight; + }; const getjQuery = () => { const { @@ -112,7 +131,7 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): tab.js + * Bootstrap (v5.1.1): tab.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ diff --git a/vendor/twbs/bootstrap/js/dist/tab.js.map b/vendor/twbs/bootstrap/js/dist/tab.js.map index 1eb2fa711..b444b8009 100644 --- a/vendor/twbs/bootstrap/js/dist/tab.js.map +++ b/vendor/twbs/bootstrap/js/dist/tab.js.map @@ -1 +1 @@ -{"version":3,"file":"tab.js","sources":["../src/util/index.js","../src/tab.js"],"sourcesContent":["import SelectorEngine from '../dom/selector-engine'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return SelectorEngine.findOne(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isDisabled,\n reflow\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = ':scope > li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab extends BaseComponent {\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n show() {\n if ((this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n this._element.classList.contains(CLASS_NAME_ACTIVE))) {\n return\n }\n\n let previous\n const target = getElementFromSelector(this._element)\n const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n previous = SelectorEngine.find(itemSelector, listElement)\n previous = previous[previous.length - 1]\n }\n\n const hideEvent = previous ?\n EventHandler.trigger(previous, EVENT_HIDE, {\n relatedTarget: this._element\n }) :\n null\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget: previous\n })\n\n if (showEvent.defaultPrevented || (hideEvent !== null && hideEvent.defaultPrevented)) {\n return\n }\n\n this._activate(this._element, listElement)\n\n const complete = () => {\n EventHandler.trigger(previous, EVENT_HIDDEN, {\n relatedTarget: this._element\n })\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget: previous\n })\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n // Private\n\n _activate(element, container, callback) {\n const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n SelectorEngine.find(SELECTOR_ACTIVE_UL, container) :\n SelectorEngine.children(container, SELECTOR_ACTIVE)\n\n const active = activeElements[0]\n const isTransitioning = callback && (active && active.classList.contains(CLASS_NAME_FADE))\n\n const complete = () => this._transitionComplete(element, active, callback)\n\n if (active && isTransitioning) {\n active.classList.remove(CLASS_NAME_SHOW)\n this._queueCallback(complete, element, true)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n active.classList.remove(CLASS_NAME_ACTIVE)\n\n const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode)\n\n if (dropdownChild) {\n dropdownChild.classList.remove(CLASS_NAME_ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n element.classList.add(CLASS_NAME_ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n reflow(element)\n\n if (element.classList.contains(CLASS_NAME_FADE)) {\n element.classList.add(CLASS_NAME_SHOW)\n }\n\n let parent = element.parentNode\n if (parent && parent.nodeName === 'LI') {\n parent = parent.parentNode\n }\n\n if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n const dropdownElement = element.closest(SELECTOR_DROPDOWN)\n\n if (dropdownElement) {\n SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement)\n .forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE))\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tab.getOrCreateInstance(this)\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]()\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 if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const data = Tab.getOrCreateInstance(this)\n data.show()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tab to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n"],"names":["getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getElementFromSelector","document","querySelector","isDisabled","nodeType","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","reflow","offsetHeight","getjQuery","jQuery","window","body","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","length","addEventListener","forEach","push","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","DATA_KEY","EVENT_KEY","DATA_API_KEY","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","EVENT_CLICK_DATA_API","CLASS_NAME_DROPDOWN_MENU","CLASS_NAME_ACTIVE","CLASS_NAME_FADE","CLASS_NAME_SHOW","SELECTOR_DROPDOWN","SELECTOR_NAV_LIST_GROUP","SELECTOR_ACTIVE","SELECTOR_ACTIVE_UL","SELECTOR_DATA_TOGGLE","SELECTOR_DROPDOWN_TOGGLE","SELECTOR_DROPDOWN_ACTIVE_CHILD","Tab","BaseComponent","show","_element","parentNode","previous","target","listElement","closest","itemSelector","nodeName","SelectorEngine","find","hideEvent","EventHandler","trigger","relatedTarget","showEvent","defaultPrevented","_activate","complete","container","activeElements","children","active","isTransitioning","_transitionComplete","remove","_queueCallback","dropdownChild","findOne","setAttribute","add","parent","dropdownElement","dropdown","config","each","data","getOrCreateInstance","TypeError","on","event","tagName","preventDefault"],"mappings":"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"}
\ No newline at end of file +{"version":3,"file":"tab.js","sources":["../src/util/index.js","../src/tab.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return document.querySelector(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight\n}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isDisabled,\n reflow\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = ':scope > li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab extends BaseComponent {\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n show() {\n if ((this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n this._element.classList.contains(CLASS_NAME_ACTIVE))) {\n return\n }\n\n let previous\n const target = getElementFromSelector(this._element)\n const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n previous = SelectorEngine.find(itemSelector, listElement)\n previous = previous[previous.length - 1]\n }\n\n const hideEvent = previous ?\n EventHandler.trigger(previous, EVENT_HIDE, {\n relatedTarget: this._element\n }) :\n null\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget: previous\n })\n\n if (showEvent.defaultPrevented || (hideEvent !== null && hideEvent.defaultPrevented)) {\n return\n }\n\n this._activate(this._element, listElement)\n\n const complete = () => {\n EventHandler.trigger(previous, EVENT_HIDDEN, {\n relatedTarget: this._element\n })\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget: previous\n })\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n // Private\n\n _activate(element, container, callback) {\n const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n SelectorEngine.find(SELECTOR_ACTIVE_UL, container) :\n SelectorEngine.children(container, SELECTOR_ACTIVE)\n\n const active = activeElements[0]\n const isTransitioning = callback && (active && active.classList.contains(CLASS_NAME_FADE))\n\n const complete = () => this._transitionComplete(element, active, callback)\n\n if (active && isTransitioning) {\n active.classList.remove(CLASS_NAME_SHOW)\n this._queueCallback(complete, element, true)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n active.classList.remove(CLASS_NAME_ACTIVE)\n\n const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode)\n\n if (dropdownChild) {\n dropdownChild.classList.remove(CLASS_NAME_ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n element.classList.add(CLASS_NAME_ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n reflow(element)\n\n if (element.classList.contains(CLASS_NAME_FADE)) {\n element.classList.add(CLASS_NAME_SHOW)\n }\n\n let parent = element.parentNode\n if (parent && parent.nodeName === 'LI') {\n parent = parent.parentNode\n }\n\n if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n const dropdownElement = element.closest(SELECTOR_DROPDOWN)\n\n if (dropdownElement) {\n SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement)\n .forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE))\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tab.getOrCreateInstance(this)\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]()\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 if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const data = Tab.getOrCreateInstance(this)\n data.show()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tab to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n"],"names":["getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getElementFromSelector","document","querySelector","isDisabled","nodeType","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","reflow","offsetHeight","getjQuery","jQuery","window","body","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","length","addEventListener","forEach","push","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","DATA_KEY","EVENT_KEY","DATA_API_KEY","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","EVENT_CLICK_DATA_API","CLASS_NAME_DROPDOWN_MENU","CLASS_NAME_ACTIVE","CLASS_NAME_FADE","CLASS_NAME_SHOW","SELECTOR_DROPDOWN","SELECTOR_NAV_LIST_GROUP","SELECTOR_ACTIVE","SELECTOR_ACTIVE_UL","SELECTOR_DATA_TOGGLE","SELECTOR_DROPDOWN_TOGGLE","SELECTOR_DROPDOWN_ACTIVE_CHILD","Tab","BaseComponent","show","_element","parentNode","previous","target","listElement","closest","itemSelector","nodeName","SelectorEngine","find","hideEvent","EventHandler","trigger","relatedTarget","showEvent","defaultPrevented","_activate","complete","container","activeElements","children","active","isTransitioning","_transitionComplete","remove","_queueCallback","dropdownChild","findOne","setAttribute","add","parent","dropdownElement","dropdown","config","each","data","getOrCreateInstance","TypeError","on","event","tagName","preventDefault"],"mappings":"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"}
\ No newline at end of file diff --git a/vendor/twbs/bootstrap/js/dist/toast.js b/vendor/twbs/bootstrap/js/dist/toast.js index 1415370e4..87f457a70 100644 --- a/vendor/twbs/bootstrap/js/dist/toast.js +++ b/vendor/twbs/bootstrap/js/dist/toast.js @@ -1,5 +1,5 @@ /*! - * Bootstrap toast.js v5.0.2 (https://getbootstrap.com/) + * Bootstrap toast.js v5.1.1 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ @@ -15,6 +15,13 @@ var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator); var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent); + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.1): util/index.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + const toType = obj => { if (obj === null || obj === undefined) { return `${obj}`; @@ -23,6 +30,35 @@ return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase(); }; + const getSelector = element => { + let selector = element.getAttribute('data-bs-target'); + + if (!selector || selector === '#') { + let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes, + // so everything starting with `#` or `.`. If a "real" URL is used as the selector, + // `document.querySelector` will rightfully complain it is invalid. + // See https://github.com/twbs/bootstrap/issues/32273 + + if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) { + return null; + } // Just in case some CMS puts out a full URL with the anchor appended + + + if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) { + hrefAttr = `#${hrefAttr.split('#')[1]}`; + } + + selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null; + } + + return selector; + }; + + const getElementFromSelector = element => { + const selector = getSelector(element); + return selector ? document.querySelector(selector) : null; + }; + const isElement = obj => { if (!obj || typeof obj !== 'object') { return false; @@ -47,7 +83,35 @@ }); }; - const reflow = element => element.offsetHeight; + const isDisabled = element => { + if (!element || element.nodeType !== Node.ELEMENT_NODE) { + return true; + } + + if (element.classList.contains('disabled')) { + return true; + } + + if (typeof element.disabled !== 'undefined') { + return element.disabled; + } + + return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'; + }; + /** + * Trick to restart an element's animation + * + * @param {HTMLElement} element + * @return void + * + * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation + */ + + + const reflow = element => { + // eslint-disable-next-line no-unused-expressions + element.offsetHeight; + }; const getjQuery = () => { const { @@ -99,7 +163,33 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): toast.js + * Bootstrap (v5.1.1): util/component-functions.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + const enableDismissTrigger = (component, method = 'hide') => { + const clickEvent = `click.dismiss${component.EVENT_KEY}`; + const name = component.NAME; + EventHandler__default['default'].on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) { + if (['A', 'AREA'].includes(this.tagName)) { + event.preventDefault(); + } + + if (isDisabled(this)) { + return; + } + + const target = getElementFromSelector(this) || this.closest(`.${name}`); + const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method + + instance[method](); + }); + }; + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.1): toast.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -112,7 +202,6 @@ const NAME = 'toast'; const DATA_KEY = 'bs.toast'; const EVENT_KEY = `.${DATA_KEY}`; - const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`; const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`; const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`; const EVENT_FOCUSIN = `focusin${EVENT_KEY}`; @@ -122,7 +211,8 @@ const EVENT_SHOW = `show${EVENT_KEY}`; const EVENT_SHOWN = `shown${EVENT_KEY}`; const CLASS_NAME_FADE = 'fade'; - const CLASS_NAME_HIDE = 'hide'; + const CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility + const CLASS_NAME_SHOW = 'show'; const CLASS_NAME_SHOWING = 'showing'; const DefaultType = { @@ -135,7 +225,6 @@ autohide: true, delay: 5000 }; - const SELECTOR_DATA_DISMISS = '[data-bs-dismiss="toast"]'; /** * ------------------------------------------------------------------------ * Class Definition @@ -183,17 +272,18 @@ const complete = () => { this._element.classList.remove(CLASS_NAME_SHOWING); - this._element.classList.add(CLASS_NAME_SHOW); - EventHandler__default['default'].trigger(this._element, EVENT_SHOWN); this._maybeScheduleHide(); }; - this._element.classList.remove(CLASS_NAME_HIDE); + this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated + reflow(this._element); + this._element.classList.add(CLASS_NAME_SHOW); + this._element.classList.add(CLASS_NAME_SHOWING); this._queueCallback(complete, this._element, this._config.animation); @@ -211,12 +301,17 @@ } const complete = () => { - this._element.classList.add(CLASS_NAME_HIDE); + this._element.classList.add(CLASS_NAME_HIDE); // @deprecated + + + this._element.classList.remove(CLASS_NAME_SHOWING); + + this._element.classList.remove(CLASS_NAME_SHOW); EventHandler__default['default'].trigger(this._element, EVENT_HIDDEN); }; - this._element.classList.remove(CLASS_NAME_SHOW); + this._element.classList.add(CLASS_NAME_SHOWING); this._queueCallback(complete, this._element, this._config.animation); } @@ -284,7 +379,6 @@ } _setListeners() { - EventHandler__default['default'].on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide()); EventHandler__default['default'].on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true)); EventHandler__default['default'].on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false)); EventHandler__default['default'].on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true)); @@ -312,6 +406,8 @@ } } + + enableDismissTrigger(Toast); /** * ------------------------------------------------------------------------ * jQuery @@ -319,7 +415,6 @@ * add .Toast to jQuery only if jQuery is present */ - defineJQueryPlugin(Toast); return Toast; diff --git a/vendor/twbs/bootstrap/js/dist/toast.js.map b/vendor/twbs/bootstrap/js/dist/toast.js.map index fbaa30983..826f555d1 100644 --- a/vendor/twbs/bootstrap/js/dist/toast.js.map +++ b/vendor/twbs/bootstrap/js/dist/toast.js.map @@ -1 +1 @@ -{"version":3,"file":"toast.js","sources":["../src/util/index.js","../src/toast.js"],"sourcesContent":["import SelectorEngine from '../dom/selector-engine'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return SelectorEngine.findOne(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n}\n\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n}\n\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"toast\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._timeout = null\n this._hasMouseInteraction = false\n this._hasKeyboardInteraction = false\n this._setListeners()\n }\n\n // Getters\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._clearTimeout()\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE)\n }\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING)\n this._element.classList.add(CLASS_NAME_SHOW)\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n\n this._maybeScheduleHide()\n }\n\n this._element.classList.remove(CLASS_NAME_HIDE)\n reflow(this._element)\n this._element.classList.add(CLASS_NAME_SHOWING)\n\n this._queueCallback(complete, this._element, this._config.animation)\n }\n\n hide() {\n if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._queueCallback(complete, this._element, this._config.animation)\n }\n\n dispose() {\n this._clearTimeout()\n\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this._element.classList.remove(CLASS_NAME_SHOW)\n }\n\n super.dispose()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n return config\n }\n\n _maybeScheduleHide() {\n if (!this._config.autohide) {\n return\n }\n\n if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n return\n }\n\n this._timeout = setTimeout(() => {\n this.hide()\n }, this._config.delay)\n }\n\n _onInteraction(event, isInteracting) {\n switch (event.type) {\n case 'mouseover':\n case 'mouseout':\n this._hasMouseInteraction = isInteracting\n break\n case 'focusin':\n case 'focusout':\n this._hasKeyboardInteraction = isInteracting\n break\n default:\n break\n }\n\n if (isInteracting) {\n this._clearTimeout()\n return\n }\n\n const nextElement = event.relatedTarget\n if (this._element === nextElement || this._element.contains(nextElement)) {\n return\n }\n\n this._maybeScheduleHide()\n }\n\n _setListeners() {\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide())\n EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n }\n\n _clearTimeout() {\n clearTimeout(this._timeout)\n this._timeout = null\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Toast.getOrCreateInstance(this, config)\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](this)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Toast to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Toast)\n\nexport default Toast\n"],"names":["toType","obj","undefined","toString","call","match","toLowerCase","isElement","jquery","nodeType","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","TypeError","toUpperCase","reflow","element","offsetHeight","getjQuery","jQuery","window","document","body","hasAttribute","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","length","addEventListener","push","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","DATA_KEY","EVENT_KEY","EVENT_CLICK_DISMISS","EVENT_MOUSEOVER","EVENT_MOUSEOUT","EVENT_FOCUSIN","EVENT_FOCUSOUT","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","CLASS_NAME_FADE","CLASS_NAME_HIDE","CLASS_NAME_SHOW","CLASS_NAME_SHOWING","DefaultType","animation","autohide","delay","Default","SELECTOR_DATA_DISMISS","Toast","BaseComponent","constructor","_config","_getConfig","_timeout","_hasMouseInteraction","_hasKeyboardInteraction","_setListeners","show","showEvent","EventHandler","trigger","_element","defaultPrevented","_clearTimeout","classList","add","complete","remove","_maybeScheduleHide","_queueCallback","hide","contains","hideEvent","dispose","Manipulator","getDataAttributes","setTimeout","_onInteraction","event","isInteracting","type","nextElement","relatedTarget","on","clearTimeout","each","data","getOrCreateInstance"],"mappings":"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"}
\ No newline at end of file +{"version":3,"file":"toast.js","sources":["../src/util/index.js","../src/util/component-functions.js","../src/toast.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return document.querySelector(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight\n}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { getElementFromSelector, isDisabled } from './index'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`\n const name = component.NAME\n\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const target = getElementFromSelector(this) || this.closest(`.${name}`)\n const instance = component.getOrCreateInstance(target)\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]()\n })\n}\n\nexport {\n enableDismissTrigger\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n}\n\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._timeout = null\n this._hasMouseInteraction = false\n this._hasKeyboardInteraction = false\n this._setListeners()\n }\n\n // Getters\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._clearTimeout()\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE)\n }\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING)\n EventHandler.trigger(this._element, EVENT_SHOWN)\n\n this._maybeScheduleHide()\n }\n\n this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n reflow(this._element)\n this._element.classList.add(CLASS_NAME_SHOW)\n this._element.classList.add(CLASS_NAME_SHOWING)\n\n this._queueCallback(complete, this._element, this._config.animation)\n }\n\n hide() {\n if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n this._element.classList.remove(CLASS_NAME_SHOWING)\n this._element.classList.remove(CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.classList.add(CLASS_NAME_SHOWING)\n this._queueCallback(complete, this._element, this._config.animation)\n }\n\n dispose() {\n this._clearTimeout()\n\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this._element.classList.remove(CLASS_NAME_SHOW)\n }\n\n super.dispose()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n return config\n }\n\n _maybeScheduleHide() {\n if (!this._config.autohide) {\n return\n }\n\n if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n return\n }\n\n this._timeout = setTimeout(() => {\n this.hide()\n }, this._config.delay)\n }\n\n _onInteraction(event, isInteracting) {\n switch (event.type) {\n case 'mouseover':\n case 'mouseout':\n this._hasMouseInteraction = isInteracting\n break\n case 'focusin':\n case 'focusout':\n this._hasKeyboardInteraction = isInteracting\n break\n default:\n break\n }\n\n if (isInteracting) {\n this._clearTimeout()\n return\n }\n\n const nextElement = event.relatedTarget\n if (this._element === nextElement || this._element.contains(nextElement)) {\n return\n }\n\n this._maybeScheduleHide()\n }\n\n _setListeners() {\n EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n }\n\n _clearTimeout() {\n clearTimeout(this._timeout)\n this._timeout = null\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Toast.getOrCreateInstance(this, config)\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](this)\n }\n })\n }\n}\n\nenableDismissTrigger(Toast)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Toast to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Toast)\n\nexport default Toast\n"],"names":["toType","obj","undefined","toString","call","match","toLowerCase","getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getElementFromSelector","document","querySelector","isElement","jquery","nodeType","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","TypeError","toUpperCase","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","reflow","offsetHeight","getjQuery","jQuery","window","body","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","length","addEventListener","push","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","enableDismissTrigger","component","method","clickEvent","EVENT_KEY","EventHandler","on","event","tagName","preventDefault","target","closest","instance","getOrCreateInstance","DATA_KEY","EVENT_MOUSEOVER","EVENT_MOUSEOUT","EVENT_FOCUSIN","EVENT_FOCUSOUT","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","CLASS_NAME_FADE","CLASS_NAME_HIDE","CLASS_NAME_SHOW","CLASS_NAME_SHOWING","DefaultType","animation","autohide","delay","Default","Toast","BaseComponent","constructor","_config","_getConfig","_timeout","_hasMouseInteraction","_hasKeyboardInteraction","_setListeners","show","showEvent","trigger","_element","defaultPrevented","_clearTimeout","add","complete","remove","_maybeScheduleHide","_queueCallback","hide","hideEvent","dispose","Manipulator","getDataAttributes","setTimeout","_onInteraction","isInteracting","type","nextElement","relatedTarget","clearTimeout","each","data"],"mappings":"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"}
\ No newline at end of file diff --git a/vendor/twbs/bootstrap/js/dist/tooltip.js b/vendor/twbs/bootstrap/js/dist/tooltip.js index 5a4ac0208..9f8380086 100644 --- a/vendor/twbs/bootstrap/js/dist/tooltip.js +++ b/vendor/twbs/bootstrap/js/dist/tooltip.js @@ -1,13 +1,13 @@ /*! - * Bootstrap tooltip.js v5.0.2 (https://getbootstrap.com/) + * Bootstrap tooltip.js v5.1.1 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@popperjs/core'), require('./dom/selector-engine.js'), require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./base-component.js')) : - typeof define === 'function' && define.amd ? define(['@popperjs/core', './dom/selector-engine', './dom/data', './dom/event-handler', './dom/manipulator', './base-component'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Tooltip = factory(global.Popper, global.SelectorEngine, global.Data, global.EventHandler, global.Manipulator, global.Base)); -}(this, (function (Popper, SelectorEngine, Data, EventHandler, Manipulator, BaseComponent) { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@popperjs/core'), require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./dom/selector-engine.js'), require('./base-component.js')) : + typeof define === 'function' && define.amd ? define(['@popperjs/core', './dom/data', './dom/event-handler', './dom/manipulator', './dom/selector-engine', './base-component'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Tooltip = factory(global.Popper, global.Data, global.EventHandler, global.Manipulator, global.SelectorEngine, global.Base)); +}(this, (function (Popper, Data, EventHandler, Manipulator, SelectorEngine, BaseComponent) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } @@ -32,19 +32,18 @@ } var Popper__namespace = /*#__PURE__*/_interopNamespace(Popper); - var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine); var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data); var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler); var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator); + var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine); var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent); /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): util/index.js + * Bootstrap (v5.1.1): util/index.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ - const MAX_UID = 1000000; const toType = obj => { @@ -88,7 +87,7 @@ } if (typeof obj === 'string' && obj.length > 0) { - return SelectorEngine__default['default'].findOne(obj); + return document.querySelector(obj); } return null; @@ -183,7 +182,7 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): util/sanitizer.js + * Bootstrap (v5.1.1): util/sanitizer.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -296,7 +295,7 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): tooltip.js + * Bootstrap (v5.1.1): tooltip.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -310,7 +309,6 @@ const DATA_KEY = 'bs.tooltip'; const EVENT_KEY = `.${DATA_KEY}`; const CLASS_PREFIX = 'bs-tooltip'; - const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\s)${CLASS_PREFIX}\\S+`, 'g'); const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']); const DefaultType = { animation: 'boolean', @@ -375,6 +373,8 @@ const HOVER_STATE_SHOW = 'show'; const HOVER_STATE_OUT = 'out'; const SELECTOR_TOOLTIP_INNER = '.tooltip-inner'; + const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`; + const EVENT_MODAL_HIDE = 'hide.bs.modal'; const TRIGGER_HOVER = 'hover'; const TRIGGER_FOCUS = 'focus'; const TRIGGER_CLICK = 'click'; @@ -463,15 +463,13 @@ dispose() { clearTimeout(this._timeout); - EventHandler__default['default'].off(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler); + EventHandler__default['default'].off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); if (this.tip) { this.tip.remove(); } - if (this._popper) { - this._popper.destroy(); - } + this._disposePopper(); super.dispose(); } @@ -491,6 +489,15 @@ if (showEvent.defaultPrevented || !isInTheDom) { return; + } // A trick to recreate a tooltip in case a new title is given by using the NOT documented `data-bs-original-title` + // This will be removed later in favor of a `setContent` method + + + if (this.constructor.NAME === 'tooltip' && this.tip && this.getTitle() !== this.tip.querySelector(SELECTOR_TOOLTIP_INNER).innerHTML) { + this._disposePopper(); + + this.tip.remove(); + this.tip = null; } const tip = this.getTipElement(); @@ -499,8 +506,6 @@ this._element.setAttribute('aria-describedby', tipId); - this.setContent(); - if (this._config.animation) { tip.classList.add(CLASS_NAME_FADE); } @@ -517,7 +522,7 @@ Data__default['default'].set(tip, this.constructor.DATA_KEY, this); if (!this._element.ownerDocument.documentElement.contains(this.tip)) { - container.appendChild(tip); + container.append(tip); EventHandler__default['default'].trigger(this._element, this.constructor.Event.INSERTED); } @@ -528,7 +533,8 @@ } tip.classList.add(CLASS_NAME_SHOW); - const customClass = typeof this._config.customClass === 'function' ? this._config.customClass() : this._config.customClass; + + const customClass = this._resolvePossibleFunction(this._config.customClass); if (customClass) { tip.classList.add(...customClass.split(' ')); @@ -581,11 +587,7 @@ EventHandler__default['default'].trigger(this._element, this.constructor.Event.HIDDEN); - if (this._popper) { - this._popper.destroy(); - - this._popper = null; - } + this._disposePopper(); }; const hideEvent = EventHandler__default['default'].trigger(this._element, this.constructor.Event.HIDE); @@ -629,14 +631,27 @@ const element = document.createElement('div'); element.innerHTML = this._config.template; - this.tip = element.children[0]; + const tip = element.children[0]; + this.setContent(tip); + tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW); + this.tip = tip; return this.tip; } - setContent() { - const tip = this.getTipElement(); - this.setElementContent(SelectorEngine__default['default'].findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle()); - tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW); + setContent(tip) { + this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TOOLTIP_INNER); + } + + _sanitizeAndSetContent(template, content, selector) { + const templateElement = SelectorEngine__default['default'].findOne(selector, template); + + if (!content && templateElement) { + templateElement.remove(); + return; + } // we use append for html objects to maintain js events + + + this.setElementContent(templateElement, content); } setElementContent(element, content) { @@ -650,7 +665,7 @@ if (this._config.html) { if (content.parentNode !== element) { element.innerHTML = ''; - element.appendChild(content); + element.append(content); } } else { element.textContent = content.textContent; @@ -671,13 +686,9 @@ } getTitle() { - let title = this._element.getAttribute('data-bs-original-title'); + const title = this._element.getAttribute('data-bs-original-title') || this._config.title; - if (!title) { - title = typeof this._config.title === 'function' ? this._config.title.call(this._element) : this._config.title; - } - - return title; + return this._resolvePossibleFunction(title); } updateAttachment(attachment) { @@ -694,15 +705,7 @@ _initializeOnDelegatedTarget(event, context) { - const dataKey = this.constructor.DATA_KEY; - context = context || Data__default['default'].get(event.delegateTarget, dataKey); - - if (!context) { - context = new this.constructor(event.delegateTarget, this._getDelegateConfig()); - Data__default['default'].set(event.delegateTarget, dataKey, context); - } - - return context; + return context || this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig()); } _getOffset() { @@ -721,6 +724,10 @@ return offset; } + _resolvePossibleFunction(content) { + return typeof content === 'function' ? content.call(this._element) : content; + } + _getPopperConfig(attachment) { const defaultBsPopperConfig = { placement: attachment, @@ -762,7 +769,7 @@ } _addAttachmentClass(attachment) { - this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`); + this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(attachment)}`); } _getAttachment(placement) { @@ -789,7 +796,7 @@ } }; - EventHandler__default['default'].on(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler); + EventHandler__default['default'].on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); if (this._config.selector) { this._config = { ...this._config, @@ -920,26 +927,32 @@ _getDelegateConfig() { const config = {}; - if (this._config) { - for (const key in this._config) { - if (this.constructor.Default[key] !== this._config[key]) { - config[key] = this._config[key]; - } + for (const key in this._config) { + if (this.constructor.Default[key] !== this._config[key]) { + config[key] = this._config[key]; } - } + } // In the future can be replaced with: + // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]]) + // `Object.fromEntries(keysWithDifferentValues)` + return config; } _cleanTipClass() { const tip = this.getTipElement(); - const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX); + const basicClassPrefixRegex = new RegExp(`(^|\\s)${this._getBasicClassPrefix()}\\S+`, 'g'); + const tabClass = tip.getAttribute('class').match(basicClassPrefixRegex); if (tabClass !== null && tabClass.length > 0) { tabClass.map(token => token.trim()).forEach(tClass => tip.classList.remove(tClass)); } } + _getBasicClassPrefix() { + return CLASS_PREFIX; + } + _handlePopperPlacementChange(popperData) { const { state @@ -954,6 +967,14 @@ this._cleanTipClass(); this._addAttachmentClass(this._getAttachment(state.placement)); + } + + _disposePopper() { + if (this._popper) { + this._popper.destroy(); + + this._popper = null; + } } // Static diff --git a/vendor/twbs/bootstrap/js/dist/tooltip.js.map b/vendor/twbs/bootstrap/js/dist/tooltip.js.map index 4171d4456..0d7a15520 100644 --- a/vendor/twbs/bootstrap/js/dist/tooltip.js.map +++ b/vendor/twbs/bootstrap/js/dist/tooltip.js.map @@ -1 +1 @@ -{"version":3,"file":"tooltip.js","sources":["../src/util/index.js","../src/util/sanitizer.js","../src/tooltip.js"],"sourcesContent":["import SelectorEngine from '../dom/selector-engine'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return SelectorEngine.findOne(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attr, allowedAttributeList) => {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attrName)) {\n if (uriAttrs.has(attrName)) {\n return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, len = regExp.length; i < len; i++) {\n if (regExp[i].test(attrName)) {\n return true\n }\n }\n\n return false\n}\n\nexport const DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const allowlistKeys = Object.keys(allowList)\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (!allowlistKeys.includes(elName)) {\n el.remove()\n\n continue\n }\n\n const attributeList = [].concat(...el.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || [])\n\n attributeList.forEach(attr => {\n if (!allowedAttribute(attr, allowedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n defineJQueryPlugin,\n findShadowRoot,\n getElement,\n getUID,\n isElement,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport {\n DefaultAllowlist,\n sanitizeHtml\n} from './util/sanitizer'\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 = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst DefaultType = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(array|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacements: 'array',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n allowList: 'object',\n popperConfig: '(null|object|function)'\n}\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n animation: true,\n template: '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"tooltip-arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div>' +\n '</div>',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: [0, 0],\n container: false,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n boundary: 'clippingParents',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n allowList: DefaultAllowlist,\n popperConfig: null\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 INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n super(element)\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this._config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get Event() {\n return Event\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const context = this._initializeOnDelegatedTarget(event)\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this.tip) {\n this.tip.remove()\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n super.dispose()\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (!(this.isWithContent() && this._isEnabled)) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW)\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = shadowRoot === null ?\n this._element.ownerDocument.documentElement.contains(this._element) :\n shadowRoot.contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this._element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this._config.animation) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n const placement = typeof this._config.placement === 'function' ?\n this._config.placement.call(this, tip, this._element) :\n this._config.placement\n\n const attachment = this._getAttachment(placement)\n this._addAttachmentClass(attachment)\n\n const { container } = this._config\n Data.set(tip, this.constructor.DATA_KEY, this)\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.appendChild(tip)\n EventHandler.trigger(this._element, this.constructor.Event.INSERTED)\n }\n\n if (this._popper) {\n this._popper.update()\n } else {\n this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n }\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n const customClass = typeof this._config.customClass === 'function' ? this._config.customClass() : this._config.customClass\n if (customClass) {\n tip.classList.add(...customClass.split(' '))\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children).forEach(element => {\n EventHandler.on(element, 'mouseover', noop)\n })\n }\n\n const complete = () => {\n const prevHoverState = this._hoverState\n\n this._hoverState = null\n EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this)\n }\n }\n\n const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(complete, this.tip, isAnimated)\n }\n\n hide() {\n if (!this._popper) {\n return\n }\n\n const tip = this.getTipElement()\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n if (this._hoverState !== HOVER_STATE_SHOW) {\n tip.remove()\n }\n\n this._cleanTipClass()\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n tip.classList.remove(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(element => EventHandler.off(element, 'mouseover', noop))\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n\n const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(complete, this.tip, isAnimated)\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.update()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n getTipElement() {\n if (this.tip) {\n return this.tip\n }\n\n const element = document.createElement('div')\n element.innerHTML = this._config.template\n\n this.tip = element.children[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle())\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n setElementContent(element, content) {\n if (element === null) {\n return\n }\n\n if (isElement(content)) {\n content = getElement(content)\n\n // content is a DOM node or a jQuery\n if (this._config.html) {\n if (content.parentNode !== element) {\n element.innerHTML = ''\n element.appendChild(content)\n }\n } else {\n element.textContent = content.textContent\n }\n\n return\n }\n\n if (this._config.html) {\n if (this._config.sanitize) {\n content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn)\n }\n\n element.innerHTML = content\n } else {\n element.textContent = content\n }\n }\n\n getTitle() {\n let title = this._element.getAttribute('data-bs-original-title')\n\n if (!title) {\n title = typeof this._config.title === 'function' ?\n this._config.title.call(this._element) :\n this._config.title\n }\n\n return title\n }\n\n updateAttachment(attachment) {\n if (attachment === 'right') {\n return 'end'\n }\n\n if (attachment === 'left') {\n return 'start'\n }\n\n return attachment\n }\n\n // Private\n\n _initializeOnDelegatedTarget(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || Data.get(event.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(event.delegateTarget, this._getDelegateConfig())\n Data.set(event.delegateTarget, dataKey, context)\n }\n\n return context\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [\n {\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: 'onChange',\n enabled: true,\n phase: 'afterWrite',\n fn: data => this._handlePopperPlacementChange(data)\n }\n ],\n onFirstUpdate: data => {\n if (data.options.placement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n }\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n }\n }\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this._config.trigger.split(' ')\n\n triggers.forEach(trigger => {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event))\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSEENTER :\n this.constructor.Event.FOCUSIN\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSELEAVE :\n this.constructor.Event.FOCUSOUT\n\n EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event))\n EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event))\n }\n })\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this._config.selector) {\n this._config = {\n ...this._config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title')\n const originalTitleType = typeof this._element.getAttribute('data-bs-original-title')\n\n if (title || originalTitleType !== 'string') {\n this._element.setAttribute('data-bs-original-title', title || '')\n if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n context = this._initializeOnDelegatedTarget(event, context)\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = true\n }\n\n if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_SHOW\n\n if (!context._config.delay || !context._config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show()\n }\n }, context._config.delay.show)\n }\n\n _leave(event, context) {\n context = this._initializeOnDelegatedTarget(event, context)\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = context._element.contains(event.relatedTarget)\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_OUT\n\n if (!context._config.delay || !context._config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide()\n }\n }, context._config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n Object.keys(dataAttributes).forEach(dataAttr => {\n if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n delete dataAttributes[dataAttr]\n }\n })\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n config.container = config.container === false ? document.body : getElement(config.container)\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this._config) {\n for (const key in this._config) {\n if (this.constructor.Default[key] !== this._config[key]) {\n config[key] = this._config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n const { state } = popperData\n\n if (!state) {\n return\n }\n\n this.tip = state.elements.popper\n this._cleanTipClass()\n this._addAttachmentClass(this._getAttachment(state.placement))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config)\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]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tooltip to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n"],"names":["MAX_UID","toType","obj","undefined","toString","call","match","toLowerCase","getUID","prefix","Math","floor","random","document","getElementById","isElement","jquery","nodeType","getElement","length","SelectorEngine","findOne","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","TypeError","toUpperCase","findShadowRoot","element","documentElement","attachShadow","getRootNode","root","ShadowRoot","parentNode","noop","getjQuery","jQuery","window","body","hasAttribute","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","addEventListener","push","isRTL","dir","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","uriAttrs","Set","ARIA_ATTRIBUTE_PATTERN","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attr","allowedAttributeList","attrName","nodeName","includes","has","Boolean","nodeValue","regExp","filter","attrRegex","i","len","DefaultAllowlist","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","sanitizeHtml","unsafeHtml","allowList","sanitizeFn","domParser","DOMParser","createdDocument","parseFromString","allowlistKeys","elements","concat","querySelectorAll","el","elName","remove","attributeList","attributes","allowedAttributes","removeAttribute","innerHTML","DATA_KEY","EVENT_KEY","CLASS_PREFIX","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","DefaultType","animation","template","title","trigger","delay","html","selector","placement","offset","container","fallbackPlacements","boundary","customClass","sanitize","popperConfig","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default","Event","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","CLASS_NAME_FADE","CLASS_NAME_MODAL","CLASS_NAME_SHOW","HOVER_STATE_SHOW","HOVER_STATE_OUT","SELECTOR_TOOLTIP_INNER","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","Tooltip","BaseComponent","constructor","Popper","_isEnabled","_timeout","_hoverState","_activeTrigger","_popper","_config","_getConfig","tip","_setListeners","enable","disable","toggleEnabled","toggle","event","context","_initializeOnDelegatedTarget","click","_isWithActiveTrigger","_enter","_leave","getTipElement","classList","contains","dispose","clearTimeout","EventHandler","off","_element","closest","_hideModalHandler","destroy","show","style","display","Error","isWithContent","showEvent","shadowRoot","isInTheDom","ownerDocument","defaultPrevented","tipId","setAttribute","setContent","add","attachment","_getAttachment","_addAttachmentClass","Data","set","appendChild","update","createPopper","_getPopperConfig","split","children","on","complete","prevHoverState","isAnimated","_queueCallback","hide","_cleanTipClass","hideEvent","getTitle","createElement","setElementContent","content","textContent","getAttribute","updateAttachment","dataKey","get","delegateTarget","_getDelegateConfig","_getOffset","map","val","Number","parseInt","popperData","defaultBsPopperConfig","modifiers","options","enabled","phase","data","_handlePopperPlacementChange","onFirstUpdate","triggers","eventIn","eventOut","_fixTitle","originalTitleType","type","setTimeout","relatedTarget","dataAttributes","Manipulator","getDataAttributes","dataAttr","key","tabClass","token","trim","tClass","state","popper","each","getOrCreateInstance"],"mappings":"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"}
\ No newline at end of file +{"version":3,"file":"tooltip.js","sources":["../src/util/index.js","../src/util/sanitizer.js","../src/tooltip.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): 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 => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return document.querySelector(obj)\n }\n\n return null\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()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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 = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight\n}\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 DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\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\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attr, allowedAttributeList) => {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attrName)) {\n if (uriAttrs.has(attrName)) {\n return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, len = regExp.length; i < len; i++) {\n if (regExp[i].test(attrName)) {\n return true\n }\n }\n\n return false\n}\n\nexport const DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const allowlistKeys = Object.keys(allowList)\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (!allowlistKeys.includes(elName)) {\n el.remove()\n\n continue\n }\n\n const attributeList = [].concat(...el.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || [])\n\n attributeList.forEach(attr => {\n if (!allowedAttribute(attr, allowedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.1): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n defineJQueryPlugin,\n findShadowRoot,\n getElement,\n getUID,\n isElement,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport { DefaultAllowlist, sanitizeHtml } from './util/sanitizer'\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 = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst DefaultType = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(array|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacements: 'array',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n allowList: 'object',\n popperConfig: '(null|object|function)'\n}\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n animation: true,\n template: '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"tooltip-arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div>' +\n '</div>',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: [0, 0],\n container: false,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n boundary: 'clippingParents',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n allowList: DefaultAllowlist,\n popperConfig: null\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 INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n super(element)\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this._config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get Event() {\n return Event\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const context = this._initializeOnDelegatedTarget(event)\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n if (this.tip) {\n this.tip.remove()\n }\n\n this._disposePopper()\n super.dispose()\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (!(this.isWithContent() && this._isEnabled)) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW)\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = shadowRoot === null ?\n this._element.ownerDocument.documentElement.contains(this._element) :\n shadowRoot.contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n // A trick to recreate a tooltip in case a new title is given by using the NOT documented `data-bs-original-title`\n // This will be removed later in favor of a `setContent` method\n if (this.constructor.NAME === 'tooltip' && this.tip && this.getTitle() !== this.tip.querySelector(SELECTOR_TOOLTIP_INNER).innerHTML) {\n this._disposePopper()\n this.tip.remove()\n this.tip = null\n }\n\n const tip = this.getTipElement()\n const tipId = getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this._element.setAttribute('aria-describedby', tipId)\n\n if (this._config.animation) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n const placement = typeof this._config.placement === 'function' ?\n this._config.placement.call(this, tip, this._element) :\n this._config.placement\n\n const attachment = this._getAttachment(placement)\n this._addAttachmentClass(attachment)\n\n const { container } = this._config\n Data.set(tip, this.constructor.DATA_KEY, this)\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip)\n EventHandler.trigger(this._element, this.constructor.Event.INSERTED)\n }\n\n if (this._popper) {\n this._popper.update()\n } else {\n this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n }\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n const customClass = this._resolvePossibleFunction(this._config.customClass)\n if (customClass) {\n tip.classList.add(...customClass.split(' '))\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children).forEach(element => {\n EventHandler.on(element, 'mouseover', noop)\n })\n }\n\n const complete = () => {\n const prevHoverState = this._hoverState\n\n this._hoverState = null\n EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this)\n }\n }\n\n const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(complete, this.tip, isAnimated)\n }\n\n hide() {\n if (!this._popper) {\n return\n }\n\n const tip = this.getTipElement()\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n if (this._hoverState !== HOVER_STATE_SHOW) {\n tip.remove()\n }\n\n this._cleanTipClass()\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n this._disposePopper()\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n tip.classList.remove(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(element => EventHandler.off(element, 'mouseover', noop))\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n\n const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(complete, this.tip, isAnimated)\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.update()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n getTipElement() {\n if (this.tip) {\n return this.tip\n }\n\n const element = document.createElement('div')\n element.innerHTML = this._config.template\n\n const tip = element.children[0]\n this.setContent(tip)\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n\n this.tip = tip\n return this.tip\n }\n\n setContent(tip) {\n this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TOOLTIP_INNER)\n }\n\n _sanitizeAndSetContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template)\n\n if (!content && templateElement) {\n templateElement.remove()\n return\n }\n\n // we use append for html objects to maintain js events\n this.setElementContent(templateElement, content)\n }\n\n setElementContent(element, content) {\n if (element === null) {\n return\n }\n\n if (isElement(content)) {\n content = getElement(content)\n\n // content is a DOM node or a jQuery\n if (this._config.html) {\n if (content.parentNode !== element) {\n element.innerHTML = ''\n element.append(content)\n }\n } else {\n element.textContent = content.textContent\n }\n\n return\n }\n\n if (this._config.html) {\n if (this._config.sanitize) {\n content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn)\n }\n\n element.innerHTML = content\n } else {\n element.textContent = content\n }\n }\n\n getTitle() {\n const title = this._element.getAttribute('data-bs-original-title') || this._config.title\n\n return this._resolvePossibleFunction(title)\n }\n\n updateAttachment(attachment) {\n if (attachment === 'right') {\n return 'end'\n }\n\n if (attachment === 'left') {\n return 'start'\n }\n\n return attachment\n }\n\n // Private\n\n _initializeOnDelegatedTarget(event, context) {\n return context || this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _resolvePossibleFunction(content) {\n return typeof content === 'function' ? content.call(this._element) : content\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [\n {\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: 'onChange',\n enabled: true,\n phase: 'afterWrite',\n fn: data => this._handlePopperPlacementChange(data)\n }\n ],\n onFirstUpdate: data => {\n if (data.options.placement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n }\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n }\n }\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(attachment)}`)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this._config.trigger.split(' ')\n\n triggers.forEach(trigger => {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event))\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSEENTER :\n this.constructor.Event.FOCUSIN\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSELEAVE :\n this.constructor.Event.FOCUSOUT\n\n EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event))\n EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event))\n }\n })\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n if (this._config.selector) {\n this._config = {\n ...this._config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title')\n const originalTitleType = typeof this._element.getAttribute('data-bs-original-title')\n\n if (title || originalTitleType !== 'string') {\n this._element.setAttribute('data-bs-original-title', title || '')\n if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n context = this._initializeOnDelegatedTarget(event, context)\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = true\n }\n\n if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_SHOW\n\n if (!context._config.delay || !context._config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show()\n }\n }, context._config.delay.show)\n }\n\n _leave(event, context) {\n context = this._initializeOnDelegatedTarget(event, context)\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = context._element.contains(event.relatedTarget)\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_OUT\n\n if (!context._config.delay || !context._config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide()\n }\n }, context._config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n Object.keys(dataAttributes).forEach(dataAttr => {\n if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n delete dataAttributes[dataAttr]\n }\n })\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n config.container = config.container === false ? document.body : getElement(config.container)\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n for (const key in this._config) {\n if (this.constructor.Default[key] !== this._config[key]) {\n config[key] = this._config[key]\n }\n }\n\n // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n return config\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const basicClassPrefixRegex = new RegExp(`(^|\\\\s)${this._getBasicClassPrefix()}\\\\S+`, 'g')\n const tabClass = tip.getAttribute('class').match(basicClassPrefixRegex)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n _getBasicClassPrefix() {\n return CLASS_PREFIX\n }\n\n _handlePopperPlacementChange(popperData) {\n const { state } = popperData\n\n if (!state) {\n return\n }\n\n this.tip = state.elements.popper\n this._cleanTipClass()\n this._addAttachmentClass(this._getAttachment(state.placement))\n }\n\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config)\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]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tooltip to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n"],"names":["MAX_UID","toType","obj","undefined","toString","call","match","toLowerCase","getUID","prefix","Math","floor","random","document","getElementById","isElement","jquery","nodeType","getElement","length","querySelector","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","TypeError","toUpperCase","findShadowRoot","element","documentElement","attachShadow","getRootNode","root","ShadowRoot","parentNode","noop","getjQuery","jQuery","window","body","hasAttribute","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","addEventListener","push","isRTL","dir","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","uriAttrs","Set","ARIA_ATTRIBUTE_PATTERN","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attr","allowedAttributeList","attrName","nodeName","includes","has","Boolean","nodeValue","regExp","filter","attrRegex","i","len","DefaultAllowlist","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","sanitizeHtml","unsafeHtml","allowList","sanitizeFn","domParser","DOMParser","createdDocument","parseFromString","allowlistKeys","elements","concat","querySelectorAll","el","elName","remove","attributeList","attributes","allowedAttributes","removeAttribute","innerHTML","DATA_KEY","EVENT_KEY","CLASS_PREFIX","DISALLOWED_ATTRIBUTES","DefaultType","animation","template","title","trigger","delay","html","selector","placement","offset","container","fallbackPlacements","boundary","customClass","sanitize","popperConfig","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default","Event","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","CLASS_NAME_FADE","CLASS_NAME_MODAL","CLASS_NAME_SHOW","HOVER_STATE_SHOW","HOVER_STATE_OUT","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","Tooltip","BaseComponent","constructor","Popper","_isEnabled","_timeout","_hoverState","_activeTrigger","_popper","_config","_getConfig","tip","_setListeners","enable","disable","toggleEnabled","toggle","event","context","_initializeOnDelegatedTarget","click","_isWithActiveTrigger","_enter","_leave","getTipElement","classList","contains","dispose","clearTimeout","EventHandler","off","_element","closest","_hideModalHandler","_disposePopper","show","style","display","Error","isWithContent","showEvent","shadowRoot","isInTheDom","ownerDocument","defaultPrevented","getTitle","tipId","setAttribute","add","attachment","_getAttachment","_addAttachmentClass","Data","set","append","update","createPopper","_getPopperConfig","_resolvePossibleFunction","split","children","on","complete","prevHoverState","isAnimated","_queueCallback","hide","_cleanTipClass","hideEvent","createElement","setContent","_sanitizeAndSetContent","content","templateElement","SelectorEngine","findOne","setElementContent","textContent","getAttribute","updateAttachment","getOrCreateInstance","delegateTarget","_getDelegateConfig","_getOffset","map","val","Number","parseInt","popperData","defaultBsPopperConfig","modifiers","options","enabled","phase","data","_handlePopperPlacementChange","onFirstUpdate","_getBasicClassPrefix","triggers","eventIn","eventOut","_fixTitle","originalTitleType","type","setTimeout","relatedTarget","dataAttributes","Manipulator","getDataAttributes","dataAttr","key","basicClassPrefixRegex","tabClass","token","trim","tClass","state","popper","destroy","each"],"mappings":"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"}
\ No newline at end of file diff --git a/vendor/twbs/bootstrap/js/index.esm.js b/vendor/twbs/bootstrap/js/index.esm.js index 61c70a3cc..d885a49e8 100644 --- a/vendor/twbs/bootstrap/js/index.esm.js +++ b/vendor/twbs/bootstrap/js/index.esm.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): index.esm.js + * Bootstrap (v5.1.1): index.esm.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ diff --git a/vendor/twbs/bootstrap/js/index.umd.js b/vendor/twbs/bootstrap/js/index.umd.js index 068db8e70..5c643fea1 100644 --- a/vendor/twbs/bootstrap/js/index.umd.js +++ b/vendor/twbs/bootstrap/js/index.umd.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): index.umd.js + * Bootstrap (v5.1.1): index.umd.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ diff --git a/vendor/twbs/bootstrap/js/src/alert.js b/vendor/twbs/bootstrap/js/src/alert.js index 75dbec71b..97b305138 100644 --- a/vendor/twbs/bootstrap/js/src/alert.js +++ b/vendor/twbs/bootstrap/js/src/alert.js @@ -1,16 +1,14 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): alert.js + * Bootstrap (v5.1.1): alert.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ -import { - defineJQueryPlugin, - getElementFromSelector -} from './util/index' +import { defineJQueryPlugin } from './util/index' import EventHandler from './dom/event-handler' import BaseComponent from './base-component' +import { enableDismissTrigger } from './util/component-functions' /** * ------------------------------------------------------------------------ @@ -21,15 +19,9 @@ import BaseComponent from './base-component' const NAME = 'alert' const DATA_KEY = 'bs.alert' const EVENT_KEY = `.${DATA_KEY}` -const DATA_API_KEY = '.data-api' - -const SELECTOR_DISMISS = '[data-bs-dismiss="alert"]' const EVENT_CLOSE = `close${EVENT_KEY}` const EVENT_CLOSED = `closed${EVENT_KEY}` -const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}` - -const CLASS_NAME_ALERT = 'alert' const CLASS_NAME_FADE = 'fade' const CLASS_NAME_SHOW = 'show' @@ -48,38 +40,24 @@ class Alert extends BaseComponent { // Public - close(element) { - const rootElement = element ? this._getRootElement(element) : this._element - const customEvent = this._triggerCloseEvent(rootElement) + close() { + const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE) - if (customEvent === null || customEvent.defaultPrevented) { + if (closeEvent.defaultPrevented) { return } - this._removeElement(rootElement) - } - - // Private - - _getRootElement(element) { - return getElementFromSelector(element) || element.closest(`.${CLASS_NAME_ALERT}`) - } - - _triggerCloseEvent(element) { - return EventHandler.trigger(element, EVENT_CLOSE) - } - - _removeElement(element) { - element.classList.remove(CLASS_NAME_SHOW) + this._element.classList.remove(CLASS_NAME_SHOW) - const isAnimated = element.classList.contains(CLASS_NAME_FADE) - this._queueCallback(() => this._destroyElement(element), element, isAnimated) + const isAnimated = this._element.classList.contains(CLASS_NAME_FADE) + this._queueCallback(() => this._destroyElement(), this._element, isAnimated) } - _destroyElement(element) { - element.remove() - - EventHandler.trigger(element, EVENT_CLOSED) + // Private + _destroyElement() { + this._element.remove() + EventHandler.trigger(this._element, EVENT_CLOSED) + this.dispose() } // Static @@ -88,20 +66,16 @@ class Alert extends BaseComponent { return this.each(function () { const data = Alert.getOrCreateInstance(this) - if (config === 'close') { - data[config](this) + if (typeof config !== 'string') { + return } - }) - } - static handleDismiss(alertInstance) { - return function (event) { - if (event) { - event.preventDefault() + if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { + throw new TypeError(`No method named "${config}"`) } - alertInstance.close(this) - } + data[config](this) + }) } } @@ -111,7 +85,7 @@ class Alert extends BaseComponent { * ------------------------------------------------------------------------ */ -EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert())) +enableDismissTrigger(Alert, 'close') /** * ------------------------------------------------------------------------ diff --git a/vendor/twbs/bootstrap/js/src/base-component.js b/vendor/twbs/bootstrap/js/src/base-component.js index 62aa4adf1..cb65bed8e 100644 --- a/vendor/twbs/bootstrap/js/src/base-component.js +++ b/vendor/twbs/bootstrap/js/src/base-component.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): base-component.js + * Bootstrap (v5.1.1): base-component.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -18,7 +18,7 @@ import EventHandler from './dom/event-handler' * ------------------------------------------------------------------------ */ -const VERSION = '5.0.2' +const VERSION = '5.1.1' class BaseComponent { constructor(element) { @@ -48,7 +48,7 @@ class BaseComponent { /** Static */ static getInstance(element) { - return Data.get(element, this.DATA_KEY) + return Data.get(getElement(element), this.DATA_KEY) } static getOrCreateInstance(element, config = {}) { diff --git a/vendor/twbs/bootstrap/js/src/button.js b/vendor/twbs/bootstrap/js/src/button.js index 528f6233c..0578ed6b9 100644 --- a/vendor/twbs/bootstrap/js/src/button.js +++ b/vendor/twbs/bootstrap/js/src/button.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): button.js + * Bootstrap (v5.1.1): button.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ diff --git a/vendor/twbs/bootstrap/js/src/carousel.js b/vendor/twbs/bootstrap/js/src/carousel.js index fe43f53eb..981ce561b 100644 --- a/vendor/twbs/bootstrap/js/src/carousel.js +++ b/vendor/twbs/bootstrap/js/src/carousel.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): carousel.js + * Bootstrap (v5.1.1): carousel.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -260,8 +260,13 @@ class Carousel extends BaseComponent { } _addTouchEventListeners() { + const hasPointerPenTouch = event => { + return this._pointerEvent && + (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH) + } + const start = event => { - if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) { + if (hasPointerPenTouch(event)) { this.touchStartX = event.clientX } else if (!this._pointerEvent) { this.touchStartX = event.touches[0].clientX @@ -276,7 +281,7 @@ class Carousel extends BaseComponent { } const end = event => { - if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) { + if (hasPointerPenTouch(event)) { this.touchDeltaX = event.clientX - this.touchStartX } diff --git a/vendor/twbs/bootstrap/js/src/collapse.js b/vendor/twbs/bootstrap/js/src/collapse.js index 8831510df..f38878f9b 100644 --- a/vendor/twbs/bootstrap/js/src/collapse.js +++ b/vendor/twbs/bootstrap/js/src/collapse.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): collapse.js + * Bootstrap (v5.1.1): collapse.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -32,12 +32,12 @@ const DATA_API_KEY = '.data-api' const Default = { toggle: true, - parent: '' + parent: null } const DefaultType = { toggle: 'boolean', - parent: '(string|element)' + parent: '(null|element)' } const EVENT_SHOW = `show${EVENT_KEY}` @@ -50,11 +50,12 @@ const CLASS_NAME_SHOW = 'show' const CLASS_NAME_COLLAPSE = 'collapse' const CLASS_NAME_COLLAPSING = 'collapsing' const CLASS_NAME_COLLAPSED = 'collapsed' +const CLASS_NAME_HORIZONTAL = 'collapse-horizontal' const WIDTH = 'width' const HEIGHT = 'height' -const SELECTOR_ACTIVES = '.show, .collapsing' +const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing' const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="collapse"]' /** @@ -69,10 +70,7 @@ class Collapse extends BaseComponent { this._isTransitioning = false this._config = this._getConfig(config) - this._triggerArray = SelectorEngine.find( - `${SELECTOR_DATA_TOGGLE}[href="#${this._element.id}"],` + - `${SELECTOR_DATA_TOGGLE}[data-bs-target="#${this._element.id}"]` - ) + this._triggerArray = [] const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE) @@ -88,10 +86,10 @@ class Collapse extends BaseComponent { } } - this._parent = this._config.parent ? this._getParent() : null + this._initializeChildren() if (!this._config.parent) { - this._addAriaAndCollapsedClass(this._element, this._triggerArray) + this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()) } if (this._config.toggle) { @@ -112,7 +110,7 @@ class Collapse extends BaseComponent { // Public toggle() { - if (this._element.classList.contains(CLASS_NAME_SHOW)) { + if (this._isShown()) { this.hide() } else { this.show() @@ -120,30 +118,20 @@ class Collapse extends BaseComponent { } show() { - if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) { + if (this._isTransitioning || this._isShown()) { return } - let actives + let actives = [] let activesData - if (this._parent) { - actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent) - .filter(elem => { - if (typeof this._config.parent === 'string') { - return elem.getAttribute('data-bs-parent') === this._config.parent - } - - return elem.classList.contains(CLASS_NAME_COLLAPSE) - }) - - if (actives.length === 0) { - actives = null - } + if (this._config.parent) { + const children = SelectorEngine.find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent) + actives = SelectorEngine.find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)) // remove children if greater depth } const container = SelectorEngine.findOne(this._selector) - if (actives) { + if (actives.length) { const tempActiveData = actives.find(elem => container !== elem) activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null @@ -157,17 +145,15 @@ class Collapse extends BaseComponent { return } - if (actives) { - actives.forEach(elemActive => { - if (container !== elemActive) { - Collapse.collapseInterface(elemActive, 'hide') - } + actives.forEach(elemActive => { + if (container !== elemActive) { + Collapse.getOrCreateInstance(elemActive, { toggle: false }).hide() + } - if (!activesData) { - Data.set(elemActive, DATA_KEY, null) - } - }) - } + if (!activesData) { + Data.set(elemActive, DATA_KEY, null) + } + }) const dimension = this._getDimension() @@ -176,23 +162,17 @@ class Collapse extends BaseComponent { this._element.style[dimension] = 0 - if (this._triggerArray.length) { - this._triggerArray.forEach(element => { - element.classList.remove(CLASS_NAME_COLLAPSED) - element.setAttribute('aria-expanded', true) - }) - } - - this.setTransitioning(true) + this._addAriaAndCollapsedClass(this._triggerArray, true) + this._isTransitioning = true const complete = () => { + this._isTransitioning = false + this._element.classList.remove(CLASS_NAME_COLLAPSING) this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW) this._element.style[dimension] = '' - this.setTransitioning(false) - EventHandler.trigger(this._element, EVENT_SHOWN) } @@ -204,7 +184,7 @@ class Collapse extends BaseComponent { } hide() { - if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) { + if (this._isTransitioning || !this._isShown()) { return } @@ -223,22 +203,19 @@ class Collapse extends BaseComponent { this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW) const triggerArrayLength = this._triggerArray.length - if (triggerArrayLength > 0) { - for (let i = 0; i < triggerArrayLength; i++) { - const trigger = this._triggerArray[i] - const elem = getElementFromSelector(trigger) - - if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) { - trigger.classList.add(CLASS_NAME_COLLAPSED) - trigger.setAttribute('aria-expanded', false) - } + for (let i = 0; i < triggerArrayLength; i++) { + const trigger = this._triggerArray[i] + const elem = getElementFromSelector(trigger) + + if (elem && !this._isShown(elem)) { + this._addAriaAndCollapsedClass([trigger], false) } } - this.setTransitioning(true) + this._isTransitioning = true const complete = () => { - this.setTransitioning(false) + this._isTransitioning = false this._element.classList.remove(CLASS_NAME_COLLAPSING) this._element.classList.add(CLASS_NAME_COLLAPSE) EventHandler.trigger(this._element, EVENT_HIDDEN) @@ -249,8 +226,8 @@ class Collapse extends BaseComponent { this._queueCallback(complete, this._element, true) } - setTransitioning(isTransitioning) { - this._isTransitioning = isTransitioning + _isShown(element = this._element) { + return element.classList.contains(CLASS_NAME_SHOW) } // Private @@ -258,44 +235,40 @@ class Collapse extends BaseComponent { _getConfig(config) { config = { ...Default, + ...Manipulator.getDataAttributes(this._element), ...config } config.toggle = Boolean(config.toggle) // Coerce string values + config.parent = getElement(config.parent) typeCheckConfig(NAME, config, DefaultType) return config } _getDimension() { - return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT + return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT } - _getParent() { - let { parent } = this._config - - parent = getElement(parent) - - const selector = `${SELECTOR_DATA_TOGGLE}[data-bs-parent="${parent}"]` + _initializeChildren() { + if (!this._config.parent) { + return + } - SelectorEngine.find(selector, parent) + const children = SelectorEngine.find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent) + SelectorEngine.find(SELECTOR_DATA_TOGGLE, this._config.parent).filter(elem => !children.includes(elem)) .forEach(element => { const selected = getElementFromSelector(element) - this._addAriaAndCollapsedClass( - selected, - [element] - ) + if (selected) { + this._addAriaAndCollapsedClass([element], this._isShown(selected)) + } }) - - return parent } - _addAriaAndCollapsedClass(element, triggerArray) { - if (!element || !triggerArray.length) { + _addAriaAndCollapsedClass(triggerArray, isOpen) { + if (!triggerArray.length) { return } - const isOpen = element.classList.contains(CLASS_NAME_SHOW) - triggerArray.forEach(elem => { if (isOpen) { elem.classList.remove(CLASS_NAME_COLLAPSED) @@ -309,34 +282,22 @@ class Collapse extends BaseComponent { // Static - static collapseInterface(element, config) { - let data = Collapse.getInstance(element) - const _config = { - ...Default, - ...Manipulator.getDataAttributes(element), - ...(typeof config === 'object' && config ? config : {}) - } + static jQueryInterface(config) { + return this.each(function () { + const _config = {} + if (typeof config === 'string' && /show|hide/.test(config)) { + _config.toggle = false + } - if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) { - _config.toggle = false - } + const data = Collapse.getOrCreateInstance(this, _config) - if (!data) { - data = new Collapse(element, _config) - } + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`) + } - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError(`No method named "${config}"`) + data[config]() } - - data[config]() - } - } - - static jQueryInterface(config) { - return this.each(function () { - Collapse.collapseInterface(this, config) }) } } @@ -353,26 +314,11 @@ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function ( event.preventDefault() } - const triggerData = Manipulator.getDataAttributes(this) const selector = getSelectorFromElement(this) const selectorElements = SelectorEngine.find(selector) selectorElements.forEach(element => { - const data = Collapse.getInstance(element) - let config - if (data) { - // update parent attribute - if (data._parent === null && typeof triggerData.parent === 'string') { - data._config.parent = triggerData.parent - data._parent = data._getParent() - } - - config = 'toggle' - } else { - config = triggerData - } - - Collapse.collapseInterface(element, config) + Collapse.getOrCreateInstance(element, { toggle: false }).toggle() }) }) diff --git a/vendor/twbs/bootstrap/js/src/dom/data.js b/vendor/twbs/bootstrap/js/src/dom/data.js index cb88ef53d..ee5b2c37d 100644 --- a/vendor/twbs/bootstrap/js/src/dom/data.js +++ b/vendor/twbs/bootstrap/js/src/dom/data.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): dom/data.js + * Bootstrap (v5.1.1): dom/data.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ diff --git a/vendor/twbs/bootstrap/js/src/dom/event-handler.js b/vendor/twbs/bootstrap/js/src/dom/event-handler.js index c8303f7f2..bf895dc6e 100644 --- a/vendor/twbs/bootstrap/js/src/dom/event-handler.js +++ b/vendor/twbs/bootstrap/js/src/dom/event-handler.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): dom/event-handler.js + * Bootstrap (v5.1.1): dom/event-handler.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -113,7 +113,6 @@ function bootstrapDelegationHandler(element, selector, fn) { event.delegateTarget = target if (handler.oneOff) { - // eslint-disable-next-line unicorn/consistent-destructuring EventHandler.off(element, event.type, selector, fn) } diff --git a/vendor/twbs/bootstrap/js/src/dom/manipulator.js b/vendor/twbs/bootstrap/js/src/dom/manipulator.js index 113817bee..1be3a793f 100644 --- a/vendor/twbs/bootstrap/js/src/dom/manipulator.js +++ b/vendor/twbs/bootstrap/js/src/dom/manipulator.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): dom/manipulator.js + * Bootstrap (v5.1.1): dom/manipulator.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -64,8 +64,8 @@ const Manipulator = { const rect = element.getBoundingClientRect() return { - top: rect.top + document.body.scrollTop, - left: rect.left + document.body.scrollLeft + top: rect.top + window.pageYOffset, + left: rect.left + window.pageXOffset } }, diff --git a/vendor/twbs/bootstrap/js/src/dom/selector-engine.js b/vendor/twbs/bootstrap/js/src/dom/selector-engine.js index 381e45fe8..19e45c205 100644 --- a/vendor/twbs/bootstrap/js/src/dom/selector-engine.js +++ b/vendor/twbs/bootstrap/js/src/dom/selector-engine.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): dom/selector-engine.js + * Bootstrap (v5.1.1): dom/selector-engine.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -11,6 +11,8 @@ * ------------------------------------------------------------------------ */ +import { isDisabled, isVisible } from '../util/index' + const NODE_TEXT = 3 const SelectorEngine = { @@ -69,6 +71,21 @@ const SelectorEngine = { } return [] + }, + + focusableChildren(element) { + const focusables = [ + 'a', + 'button', + 'input', + 'textarea', + 'select', + 'details', + '[tabindex]', + '[contenteditable="true"]' + ].map(selector => `${selector}:not([tabindex^="-"])`).join(', ') + + return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el)) } } diff --git a/vendor/twbs/bootstrap/js/src/dropdown.js b/vendor/twbs/bootstrap/js/src/dropdown.js index 681369b48..874cf907b 100644 --- a/vendor/twbs/bootstrap/js/src/dropdown.js +++ b/vendor/twbs/bootstrap/js/src/dropdown.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): dropdown.js + * Bootstrap (v5.1.1): dropdown.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -11,12 +11,12 @@ import { defineJQueryPlugin, getElement, getElementFromSelector, + getNextActiveElement, isDisabled, isElement, - isVisible, isRTL, + isVisible, noop, - getNextActiveElement, typeCheckConfig } from './util/index' import EventHandler from './dom/event-handler' @@ -48,7 +48,6 @@ const EVENT_HIDE = `hide${EVENT_KEY}` const EVENT_HIDDEN = `hidden${EVENT_KEY}` const EVENT_SHOW = `show${EVENT_KEY}` const EVENT_SHOWN = `shown${EVENT_KEY}` -const EVENT_CLICK = `click${EVENT_KEY}` const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}` const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}` const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}` @@ -103,8 +102,6 @@ class Dropdown extends BaseComponent { this._config = this._getConfig(config) this._menu = this._getMenuElement() this._inNavbar = this._detectNavbar() - - this._addEventListeners() } // Getters @@ -124,26 +121,14 @@ class Dropdown extends BaseComponent { // Public toggle() { - if (isDisabled(this._element)) { - return - } - - const isActive = this._element.classList.contains(CLASS_NAME_SHOW) - - if (isActive) { - this.hide() - return - } - - this.show() + return this._isShown() ? this.hide() : this.show() } show() { - if (isDisabled(this._element) || this._menu.classList.contains(CLASS_NAME_SHOW)) { + if (isDisabled(this._element) || this._isShown(this._menu)) { return } - const parent = Dropdown.getParentFromElement(this._element) const relatedTarget = { relatedTarget: this._element } @@ -154,32 +139,12 @@ class Dropdown extends BaseComponent { return } + const parent = Dropdown.getParentFromElement(this._element) // Totally disable Popper for Dropdowns in Navbar if (this._inNavbar) { Manipulator.setDataAttribute(this._menu, 'popper', 'none') } else { - if (typeof Popper === 'undefined') { - throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)') - } - - let referenceElement = this._element - - if (this._config.reference === 'parent') { - referenceElement = parent - } else if (isElement(this._config.reference)) { - referenceElement = getElement(this._config.reference) - } else if (typeof this._config.reference === 'object') { - referenceElement = this._config.reference - } - - const popperConfig = this._getPopperConfig() - const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false) - - this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig) - - if (isDisplayStatic) { - Manipulator.setDataAttribute(this._menu, 'popper', 'static') - } + this._createPopper(parent) } // If this is a touch-enabled device we add extra @@ -195,13 +160,13 @@ class Dropdown extends BaseComponent { this._element.focus() this._element.setAttribute('aria-expanded', true) - this._menu.classList.toggle(CLASS_NAME_SHOW) - this._element.classList.toggle(CLASS_NAME_SHOW) + this._menu.classList.add(CLASS_NAME_SHOW) + this._element.classList.add(CLASS_NAME_SHOW) EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget) } hide() { - if (isDisabled(this._element) || !this._menu.classList.contains(CLASS_NAME_SHOW)) { + if (isDisabled(this._element) || !this._isShown(this._menu)) { return } @@ -229,13 +194,6 @@ class Dropdown extends BaseComponent { // Private - _addEventListeners() { - EventHandler.on(this._element, EVENT_CLICK, event => { - event.preventDefault() - this.toggle() - }) - } - _completeHide(relatedTarget) { const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget) if (hideEvent.defaultPrevented) { @@ -279,6 +237,35 @@ class Dropdown extends BaseComponent { return config } + _createPopper(parent) { + if (typeof Popper === 'undefined') { + throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)') + } + + let referenceElement = this._element + + if (this._config.reference === 'parent') { + referenceElement = parent + } else if (isElement(this._config.reference)) { + referenceElement = getElement(this._config.reference) + } else if (typeof this._config.reference === 'object') { + referenceElement = this._config.reference + } + + const popperConfig = this._getPopperConfig() + const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false) + + this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig) + + if (isDisplayStatic) { + Manipulator.setDataAttribute(this._menu, 'popper', 'static') + } + } + + _isShown(element = this._element) { + return element.classList.contains(CLASS_NAME_SHOW) + } + _getMenuElement() { return SelectorEngine.next(this._element, SELECTOR_MENU)[0] } @@ -367,21 +354,19 @@ class Dropdown extends BaseComponent { // Static - static dropdownInterface(element, config) { - const data = Dropdown.getOrCreateInstance(element, config) + static jQueryInterface(config) { + return this.each(function () { + const data = Dropdown.getOrCreateInstance(this, config) + + if (typeof config !== 'string') { + return + } - if (typeof config === 'string') { if (typeof data[config] === 'undefined') { throw new TypeError(`No method named "${config}"`) } data[config]() - } - } - - static jQueryInterface(config) { - return this.each(function () { - Dropdown.dropdownInterface(this, config) }) } @@ -398,7 +383,7 @@ class Dropdown extends BaseComponent { continue } - if (!context._element.classList.contains(CLASS_NAME_SHOW)) { + if (!context._isShown()) { continue } @@ -464,20 +449,20 @@ class Dropdown extends BaseComponent { return } - const getToggleButton = () => this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] + const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] + const instance = Dropdown.getOrCreateInstance(getToggleButton) if (event.key === ESCAPE_KEY) { - getToggleButton().focus() - Dropdown.clearMenus() + instance.hide() return } if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) { if (!isActive) { - getToggleButton().click() + instance.show() } - Dropdown.getInstance(getToggleButton())._selectMenuItem(event) + instance._selectMenuItem(event) return } @@ -499,7 +484,7 @@ EventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus) EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus) EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) { event.preventDefault() - Dropdown.dropdownInterface(this) + Dropdown.getOrCreateInstance(this).toggle() }) /** diff --git a/vendor/twbs/bootstrap/js/src/modal.js b/vendor/twbs/bootstrap/js/src/modal.js index 8dac75265..b4700f02a 100644 --- a/vendor/twbs/bootstrap/js/src/modal.js +++ b/vendor/twbs/bootstrap/js/src/modal.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): modal.js + * Bootstrap (v5.1.1): modal.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -19,6 +19,8 @@ import SelectorEngine from './dom/selector-engine' import ScrollBarHelper from './util/scrollbar' import BaseComponent from './base-component' import Backdrop from './util/backdrop' +import FocusTrap from './util/focustrap' +import { enableDismissTrigger } from './util/component-functions' /** * ------------------------------------------------------------------------ @@ -49,7 +51,6 @@ const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}` const EVENT_HIDDEN = `hidden${EVENT_KEY}` const EVENT_SHOW = `show${EVENT_KEY}` const EVENT_SHOWN = `shown${EVENT_KEY}` -const EVENT_FOCUSIN = `focusin${EVENT_KEY}` const EVENT_RESIZE = `resize${EVENT_KEY}` const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}` const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}` @@ -62,10 +63,10 @@ const CLASS_NAME_FADE = 'fade' const CLASS_NAME_SHOW = 'show' const CLASS_NAME_STATIC = 'modal-static' +const OPEN_SELECTOR = '.modal.show' const SELECTOR_DIALOG = '.modal-dialog' const SELECTOR_MODAL_BODY = '.modal-body' const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="modal"]' -const SELECTOR_DATA_DISMISS = '[data-bs-dismiss="modal"]' /** * ------------------------------------------------------------------------ @@ -80,6 +81,7 @@ class Modal extends BaseComponent { this._config = this._getConfig(config) this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element) this._backdrop = this._initializeBackDrop() + this._focustrap = this._initializeFocusTrap() this._isShown = false this._ignoreBackdropClick = false this._isTransitioning = false @@ -130,8 +132,6 @@ class Modal extends BaseComponent { this._setEscapeEvent() this._setResizeEvent() - EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, event => this.hide(event)) - EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => { EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => { if (event.target === this._element) { @@ -143,11 +143,7 @@ class Modal extends BaseComponent { this._showBackdrop(() => this._showElement(relatedTarget)) } - hide(event) { - if (event && ['A', 'AREA'].includes(event.target.tagName)) { - event.preventDefault() - } - + hide() { if (!this._isShown || this._isTransitioning) { return } @@ -168,7 +164,7 @@ class Modal extends BaseComponent { this._setEscapeEvent() this._setResizeEvent() - EventHandler.off(document, EVENT_FOCUSIN) + this._focustrap.deactivate() this._element.classList.remove(CLASS_NAME_SHOW) @@ -183,14 +179,8 @@ class Modal extends BaseComponent { .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY)) this._backdrop.dispose() + this._focustrap.deactivate() super.dispose() - - /** - * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API` - * Do not move `document` in `htmlElements` array - * It will remove `EVENT_CLICK_DATA_API` event that should remain - */ - EventHandler.off(document, EVENT_FOCUSIN) } handleUpdate() { @@ -206,6 +196,12 @@ class Modal extends BaseComponent { }) } + _initializeFocusTrap() { + return new FocusTrap({ + trapElement: this._element + }) + } + _getConfig(config) { config = { ...Default, @@ -222,7 +218,7 @@ class Modal extends BaseComponent { if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { // Don't move modal's DOM position - document.body.appendChild(this._element) + document.body.append(this._element) } this._element.style.display = 'block' @@ -241,13 +237,9 @@ class Modal extends BaseComponent { this._element.classList.add(CLASS_NAME_SHOW) - if (this._config.focus) { - this._enforceFocus() - } - const transitionComplete = () => { if (this._config.focus) { - this._element.focus() + this._focustrap.activate() } this._isTransitioning = false @@ -259,17 +251,6 @@ class Modal extends BaseComponent { this._queueCallback(transitionComplete, this._dialog, isAnimated) } - _enforceFocus() { - EventHandler.off(document, EVENT_FOCUSIN) // guard against infinite focus loop - EventHandler.on(document, EVENT_FOCUSIN, event => { - if (document !== event.target && - this._element !== event.target && - !this._element.contains(event.target)) { - this._element.focus() - } - }) - } - _setEscapeEvent() { if (this._isShown) { EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => { @@ -431,11 +412,19 @@ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function ( }) }) + // avoid conflict when clicking moddal toggler while another one is open + const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR) + if (allReadyOpen) { + Modal.getInstance(allReadyOpen).hide() + } + const data = Modal.getOrCreateInstance(target) data.toggle(this) }) +enableDismissTrigger(Modal) + /** * ------------------------------------------------------------------------ * jQuery diff --git a/vendor/twbs/bootstrap/js/src/offcanvas.js b/vendor/twbs/bootstrap/js/src/offcanvas.js index 88eb8c997..57bf2e897 100644 --- a/vendor/twbs/bootstrap/js/src/offcanvas.js +++ b/vendor/twbs/bootstrap/js/src/offcanvas.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): offcanvas.js + * Bootstrap (v5.1.1): offcanvas.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ @@ -18,6 +18,8 @@ import BaseComponent from './base-component' import SelectorEngine from './dom/selector-engine' import Manipulator from './dom/manipulator' import Backdrop from './util/backdrop' +import FocusTrap from './util/focustrap' +import { enableDismissTrigger } from './util/component-functions' /** * ------------------------------------------------------------------------ @@ -45,18 +47,16 @@ const DefaultType = { } const CLASS_NAME_SHOW = 'show' +const CLASS_NAME_BACKDROP = 'offcanvas-backdrop' const OPEN_SELECTOR = '.offcanvas.show' const EVENT_SHOW = `show${EVENT_KEY}` const EVENT_SHOWN = `shown${EVENT_KEY}` const EVENT_HIDE = `hide${EVENT_KEY}` const EVENT_HIDDEN = `hidden${EVENT_KEY}` -const EVENT_FOCUSIN = `focusin${EVENT_KEY}` const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}` -const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}` const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}` -const SELECTOR_DATA_DISMISS = '[data-bs-dismiss="offcanvas"]' const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="offcanvas"]' /** @@ -72,6 +72,7 @@ class Offcanvas extends BaseComponent { this._config = this._getConfig(config) this._isShown = false this._backdrop = this._initializeBackDrop() + this._focustrap = this._initializeFocusTrap() this._addEventListeners() } @@ -109,7 +110,6 @@ class Offcanvas extends BaseComponent { if (!this._config.scroll) { new ScrollBarHelper().hide() - this._enforceFocusOnElement(this._element) } this._element.removeAttribute('aria-hidden') @@ -118,6 +118,10 @@ class Offcanvas extends BaseComponent { this._element.classList.add(CLASS_NAME_SHOW) const completeCallBack = () => { + if (!this._config.scroll) { + this._focustrap.activate() + } + EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget }) } @@ -135,7 +139,7 @@ class Offcanvas extends BaseComponent { return } - EventHandler.off(document, EVENT_FOCUSIN) + this._focustrap.deactivate() this._element.blur() this._isShown = false this._element.classList.remove(CLASS_NAME_SHOW) @@ -159,8 +163,8 @@ class Offcanvas extends BaseComponent { dispose() { this._backdrop.dispose() + this._focustrap.deactivate() super.dispose() - EventHandler.off(document, EVENT_FOCUSIN) } // Private @@ -177,6 +181,7 @@ class Offcanvas extends BaseComponent { _initializeBackDrop() { return new Backdrop({ + className: CLASS_NAME_BACKDROP, isVisible: this._config.backdrop, isAnimated: true, rootElement: this._element.parentNode, @@ -184,21 +189,13 @@ class Offcanvas extends BaseComponent { }) } - _enforceFocusOnElement(element) { - EventHandler.off(document, EVENT_FOCUSIN) // guard against infinite focus loop - EventHandler.on(document, EVENT_FOCUSIN, event => { - if (document !== event.target && - element !== event.target && - !element.contains(event.target)) { - element.focus() - } + _initializeFocusTrap() { + return new FocusTrap({ + trapElement: this._element }) - element.focus() } _addEventListeners() { - EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide()) - EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => { if (this._config.keyboard && event.key === ESCAPE_KEY) { this.hide() @@ -263,6 +260,7 @@ EventHandler.on(window, EVENT_LOAD_DATA_API, () => SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show()) ) +enableDismissTrigger(Offcanvas) /** * ------------------------------------------------------------------------ * jQuery diff --git a/vendor/twbs/bootstrap/js/src/popover.js b/vendor/twbs/bootstrap/js/src/popover.js index 5a3b32631..71c50daf9 100644 --- a/vendor/twbs/bootstrap/js/src/popover.js +++ b/vendor/twbs/bootstrap/js/src/popover.js @@ -1,12 +1,11 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): popover.js + * Bootstrap (v5.1.1): popover.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ import { defineJQueryPlugin } from './util/index' -import SelectorEngine from './dom/selector-engine' import Tooltip from './tooltip' /** @@ -19,7 +18,6 @@ const NAME = 'popover' const DATA_KEY = 'bs.popover' const EVENT_KEY = `.${DATA_KEY}` const CLASS_PREFIX = 'bs-popover' -const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\s)${CLASS_PREFIX}\\S+`, 'g') const Default = { ...Tooltip.Default, @@ -52,9 +50,6 @@ const Event = { MOUSELEAVE: `mouseleave${EVENT_KEY}` } -const CLASS_NAME_FADE = 'fade' -const CLASS_NAME_SHOW = 'show' - const SELECTOR_TITLE = '.popover-header' const SELECTOR_CONTENT = '.popover-body' @@ -89,56 +84,19 @@ class Popover extends Tooltip { return this.getTitle() || this._getContent() } - getTipElement() { - if (this.tip) { - return this.tip - } - - this.tip = super.getTipElement() - - if (!this.getTitle()) { - SelectorEngine.findOne(SELECTOR_TITLE, this.tip).remove() - } - - if (!this._getContent()) { - SelectorEngine.findOne(SELECTOR_CONTENT, this.tip).remove() - } - - return this.tip - } - - setContent() { - const tip = this.getTipElement() - - // we use append for html objects to maintain js events - this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle()) - let content = this._getContent() - if (typeof content === 'function') { - content = content.call(this._element) - } - - this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content) - - tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW) + setContent(tip) { + this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TITLE) + this._sanitizeAndSetContent(tip, this._getContent(), SELECTOR_CONTENT) } // Private - _addAttachmentClass(attachment) { - this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`) - } - _getContent() { - return this._element.getAttribute('data-bs-content') || this._config.content + return this._resolvePossibleFunction(this._config.content) } - _cleanTipClass() { - const tip = this.getTipElement() - const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX) - if (tabClass !== null && tabClass.length > 0) { - tabClass.map(token => token.trim()) - .forEach(tClass => tip.classList.remove(tClass)) - } + _getBasicClassPrefix() { + return CLASS_PREFIX } // Static diff --git a/vendor/twbs/bootstrap/js/src/scrollspy.js b/vendor/twbs/bootstrap/js/src/scrollspy.js index e2c432ca3..6ac00fedd 100644 --- a/vendor/twbs/bootstrap/js/src/scrollspy.js +++ b/vendor/twbs/bootstrap/js/src/scrollspy.js @@ -1,15 +1,14 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): scrollspy.js + * Bootstrap (v5.1.1): scrollspy.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ import { defineJQueryPlugin, + getElement, getSelectorFromElement, - getUID, - isElement, typeCheckConfig } from './util/index' import EventHandler from './dom/event-handler' @@ -52,6 +51,7 @@ const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group' const SELECTOR_NAV_LINKS = '.nav-link' const SELECTOR_NAV_ITEMS = '.nav-item' const SELECTOR_LIST_ITEMS = '.list-group-item' +const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}, .${CLASS_NAME_DROPDOWN_ITEM}` const SELECTOR_DROPDOWN = '.dropdown' const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle' @@ -69,7 +69,6 @@ class ScrollSpy extends BaseComponent { super(element) this._scrollElement = this._element.tagName === 'BODY' ? window : this._element this._config = this._getConfig(config) - this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS}, ${this._config.target} ${SELECTOR_LIST_ITEMS}, ${this._config.target} .${CLASS_NAME_DROPDOWN_ITEM}` this._offsets = [] this._targets = [] this._activeTarget = null @@ -110,7 +109,7 @@ class ScrollSpy extends BaseComponent { this._targets = [] this._scrollHeight = this._getScrollHeight() - const targets = SelectorEngine.find(this._selector) + const targets = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target) targets.map(element => { const targetSelector = getSelectorFromElement(element) @@ -150,15 +149,7 @@ class ScrollSpy extends BaseComponent { ...(typeof config === 'object' && config ? config : {}) } - if (typeof config.target !== 'string' && isElement(config.target)) { - let { id } = config.target - if (!id) { - id = getUID(NAME) - config.target.id = id - } - - config.target = `#${id}` - } + config.target = getElement(config.target) || document.documentElement typeCheckConfig(NAME, config, DefaultType) @@ -225,20 +216,16 @@ class ScrollSpy extends BaseComponent { this._clear() - const queries = this._selector.split(',') + const queries = SELECTOR_LINK_ITEMS.split(',') .map(selector => `${selector}[data-bs-target="${target}"],${selector}[href="${target}"]`) - const link = SelectorEngine.findOne(queries.join(',')) + const link = SelectorEngine.findOne(queries.join(','), this._config.target) + link.classList.add(CLASS_NAME_ACTIVE) if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) { SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN)) .classList.add(CLASS_NAME_ACTIVE) - - link.classList.add(CLASS_NAME_ACTIVE) } else { - // Set triggered link as active - link.classList.add(CLASS_NAME_ACTIVE) - SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP) .forEach(listGroup => { // Set triggered links parents as active @@ -261,7 +248,7 @@ class ScrollSpy extends BaseComponent { } _clear() { - SelectorEngine.find(this._selector) + SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target) .filter(node => node.classList.contains(CLASS_NAME_ACTIVE)) .forEach(node => node.classList.remove(CLASS_NAME_ACTIVE)) } diff --git a/vendor/twbs/bootstrap/js/src/tab.js b/vendor/twbs/bootstrap/js/src/tab.js index ff12efe2e..161bccbca 100644 --- a/vendor/twbs/bootstrap/js/src/tab.js +++ b/vendor/twbs/bootstrap/js/src/tab.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): tab.js + * Bootstrap (v5.1.1): tab.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ diff --git a/vendor/twbs/bootstrap/js/src/toast.js b/vendor/twbs/bootstrap/js/src/toast.js index b6c9bdd79..8a7fcdc71 100644 --- a/vendor/twbs/bootstrap/js/src/toast.js +++ b/vendor/twbs/bootstrap/js/src/toast.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): toast.js + * Bootstrap (v5.1.1): toast.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -13,6 +13,7 @@ import { import EventHandler from './dom/event-handler' import Manipulator from './dom/manipulator' import BaseComponent from './base-component' +import { enableDismissTrigger } from './util/component-functions' /** * ------------------------------------------------------------------------ @@ -24,7 +25,6 @@ const NAME = 'toast' const DATA_KEY = 'bs.toast' const EVENT_KEY = `.${DATA_KEY}` -const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}` const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}` const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}` const EVENT_FOCUSIN = `focusin${EVENT_KEY}` @@ -35,7 +35,7 @@ const EVENT_SHOW = `show${EVENT_KEY}` const EVENT_SHOWN = `shown${EVENT_KEY}` const CLASS_NAME_FADE = 'fade' -const CLASS_NAME_HIDE = 'hide' +const CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility const CLASS_NAME_SHOW = 'show' const CLASS_NAME_SHOWING = 'showing' @@ -51,8 +51,6 @@ const Default = { delay: 5000 } -const SELECTOR_DATA_DISMISS = '[data-bs-dismiss="toast"]' - /** * ------------------------------------------------------------------------ * Class Definition @@ -101,15 +99,14 @@ class Toast extends BaseComponent { const complete = () => { this._element.classList.remove(CLASS_NAME_SHOWING) - this._element.classList.add(CLASS_NAME_SHOW) - EventHandler.trigger(this._element, EVENT_SHOWN) this._maybeScheduleHide() } - this._element.classList.remove(CLASS_NAME_HIDE) + this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated reflow(this._element) + this._element.classList.add(CLASS_NAME_SHOW) this._element.classList.add(CLASS_NAME_SHOWING) this._queueCallback(complete, this._element, this._config.animation) @@ -127,11 +124,13 @@ class Toast extends BaseComponent { } const complete = () => { - this._element.classList.add(CLASS_NAME_HIDE) + this._element.classList.add(CLASS_NAME_HIDE) // @deprecated + this._element.classList.remove(CLASS_NAME_SHOWING) + this._element.classList.remove(CLASS_NAME_SHOW) EventHandler.trigger(this._element, EVENT_HIDDEN) } - this._element.classList.remove(CLASS_NAME_SHOW) + this._element.classList.add(CLASS_NAME_SHOWING) this._queueCallback(complete, this._element, this._config.animation) } @@ -201,7 +200,6 @@ class Toast extends BaseComponent { } _setListeners() { - EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide()) EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true)) EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false)) EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true)) @@ -230,6 +228,8 @@ class Toast extends BaseComponent { } } +enableDismissTrigger(Toast) + /** * ------------------------------------------------------------------------ * jQuery diff --git a/vendor/twbs/bootstrap/js/src/tooltip.js b/vendor/twbs/bootstrap/js/src/tooltip.js index cd4a2878e..747555411 100644 --- a/vendor/twbs/bootstrap/js/src/tooltip.js +++ b/vendor/twbs/bootstrap/js/src/tooltip.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): tooltip.js + * Bootstrap (v5.1.1): tooltip.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -17,10 +17,7 @@ import { noop, typeCheckConfig } from './util/index' -import { - DefaultAllowlist, - sanitizeHtml -} from './util/sanitizer' +import { DefaultAllowlist, sanitizeHtml } from './util/sanitizer' import Data from './dom/data' import EventHandler from './dom/event-handler' import Manipulator from './dom/manipulator' @@ -37,7 +34,6 @@ const NAME = 'tooltip' const DATA_KEY = 'bs.tooltip' const EVENT_KEY = `.${DATA_KEY}` const CLASS_PREFIX = 'bs-tooltip' -const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\s)${CLASS_PREFIX}\\S+`, 'g') const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']) const DefaultType = { @@ -112,6 +108,9 @@ const HOVER_STATE_SHOW = 'show' const HOVER_STATE_OUT = 'out' const SELECTOR_TOOLTIP_INNER = '.tooltip-inner' +const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}` + +const EVENT_MODAL_HIDE = 'hide.bs.modal' const TRIGGER_HOVER = 'hover' const TRIGGER_FOCUS = 'focus' @@ -206,16 +205,13 @@ class Tooltip extends BaseComponent { dispose() { clearTimeout(this._timeout) - EventHandler.off(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler) + EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler) if (this.tip) { this.tip.remove() } - if (this._popper) { - this._popper.destroy() - } - + this._disposePopper() super.dispose() } @@ -238,14 +234,20 @@ class Tooltip extends BaseComponent { return } + // A trick to recreate a tooltip in case a new title is given by using the NOT documented `data-bs-original-title` + // This will be removed later in favor of a `setContent` method + if (this.constructor.NAME === 'tooltip' && this.tip && this.getTitle() !== this.tip.querySelector(SELECTOR_TOOLTIP_INNER).innerHTML) { + this._disposePopper() + this.tip.remove() + this.tip = null + } + const tip = this.getTipElement() const tipId = getUID(this.constructor.NAME) tip.setAttribute('id', tipId) this._element.setAttribute('aria-describedby', tipId) - this.setContent() - if (this._config.animation) { tip.classList.add(CLASS_NAME_FADE) } @@ -261,7 +263,7 @@ class Tooltip extends BaseComponent { Data.set(tip, this.constructor.DATA_KEY, this) if (!this._element.ownerDocument.documentElement.contains(this.tip)) { - container.appendChild(tip) + container.append(tip) EventHandler.trigger(this._element, this.constructor.Event.INSERTED) } @@ -273,7 +275,7 @@ class Tooltip extends BaseComponent { tip.classList.add(CLASS_NAME_SHOW) - const customClass = typeof this._config.customClass === 'function' ? this._config.customClass() : this._config.customClass + const customClass = this._resolvePossibleFunction(this._config.customClass) if (customClass) { tip.classList.add(...customClass.split(' ')) } @@ -322,10 +324,7 @@ class Tooltip extends BaseComponent { this._element.removeAttribute('aria-describedby') EventHandler.trigger(this._element, this.constructor.Event.HIDDEN) - if (this._popper) { - this._popper.destroy() - this._popper = null - } + this._disposePopper() } const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE) @@ -371,14 +370,28 @@ class Tooltip extends BaseComponent { const element = document.createElement('div') element.innerHTML = this._config.template - this.tip = element.children[0] + const tip = element.children[0] + this.setContent(tip) + tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW) + + this.tip = tip return this.tip } - setContent() { - const tip = this.getTipElement() - this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle()) - tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW) + setContent(tip) { + this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TOOLTIP_INNER) + } + + _sanitizeAndSetContent(template, content, selector) { + const templateElement = SelectorEngine.findOne(selector, template) + + if (!content && templateElement) { + templateElement.remove() + return + } + + // we use append for html objects to maintain js events + this.setElementContent(templateElement, content) } setElementContent(element, content) { @@ -393,7 +406,7 @@ class Tooltip extends BaseComponent { if (this._config.html) { if (content.parentNode !== element) { element.innerHTML = '' - element.appendChild(content) + element.append(content) } } else { element.textContent = content.textContent @@ -414,15 +427,9 @@ class Tooltip extends BaseComponent { } getTitle() { - let title = this._element.getAttribute('data-bs-original-title') - - if (!title) { - title = typeof this._config.title === 'function' ? - this._config.title.call(this._element) : - this._config.title - } + const title = this._element.getAttribute('data-bs-original-title') || this._config.title - return title + return this._resolvePossibleFunction(title) } updateAttachment(attachment) { @@ -440,15 +447,7 @@ class Tooltip extends BaseComponent { // Private _initializeOnDelegatedTarget(event, context) { - const dataKey = this.constructor.DATA_KEY - context = context || Data.get(event.delegateTarget, dataKey) - - if (!context) { - context = new this.constructor(event.delegateTarget, this._getDelegateConfig()) - Data.set(event.delegateTarget, dataKey, context) - } - - return context + return context || this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig()) } _getOffset() { @@ -465,6 +464,10 @@ class Tooltip extends BaseComponent { return offset } + _resolvePossibleFunction(content) { + return typeof content === 'function' ? content.call(this._element) : content + } + _getPopperConfig(attachment) { const defaultBsPopperConfig = { placement: attachment, @@ -514,7 +517,7 @@ class Tooltip extends BaseComponent { } _addAttachmentClass(attachment) { - this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`) + this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(attachment)}`) } _getAttachment(placement) { @@ -546,7 +549,7 @@ class Tooltip extends BaseComponent { } } - EventHandler.on(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler) + EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler) if (this._config.selector) { this._config = { @@ -686,26 +689,32 @@ class Tooltip extends BaseComponent { _getDelegateConfig() { const config = {} - if (this._config) { - for (const key in this._config) { - if (this.constructor.Default[key] !== this._config[key]) { - config[key] = this._config[key] - } + for (const key in this._config) { + if (this.constructor.Default[key] !== this._config[key]) { + config[key] = this._config[key] } } + // In the future can be replaced with: + // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]]) + // `Object.fromEntries(keysWithDifferentValues)` return config } _cleanTipClass() { const tip = this.getTipElement() - const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX) + const basicClassPrefixRegex = new RegExp(`(^|\\s)${this._getBasicClassPrefix()}\\S+`, 'g') + const tabClass = tip.getAttribute('class').match(basicClassPrefixRegex) if (tabClass !== null && tabClass.length > 0) { tabClass.map(token => token.trim()) .forEach(tClass => tip.classList.remove(tClass)) } } + _getBasicClassPrefix() { + return CLASS_PREFIX + } + _handlePopperPlacementChange(popperData) { const { state } = popperData @@ -718,6 +727,13 @@ class Tooltip extends BaseComponent { this._addAttachmentClass(this._getAttachment(state.placement)) } + _disposePopper() { + if (this._popper) { + this._popper.destroy() + this._popper = null + } + } + // Static static jQueryInterface(config) { diff --git a/vendor/twbs/bootstrap/js/src/util/backdrop.js b/vendor/twbs/bootstrap/js/src/util/backdrop.js index 7ba7b4c43..e98d80707 100644 --- a/vendor/twbs/bootstrap/js/src/util/backdrop.js +++ b/vendor/twbs/bootstrap/js/src/util/backdrop.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): util/backdrop.js + * Bootstrap (v5.1.1): util/backdrop.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ @@ -9,6 +9,7 @@ import EventHandler from '../dom/event-handler' import { execute, executeAfterTransition, getElement, reflow, typeCheckConfig } from './index' const Default = { + className: 'modal-backdrop', isVisible: true, // if false, we use the backdrop helper without adding any element to the dom isAnimated: false, rootElement: 'body', // give the choice to place backdrop under different elements @@ -16,13 +17,13 @@ const Default = { } const DefaultType = { + className: 'string', isVisible: 'boolean', isAnimated: 'boolean', rootElement: '(element|string)', clickCallback: '(function|null)' } const NAME = 'backdrop' -const CLASS_NAME_BACKDROP = 'modal-backdrop' const CLASS_NAME_FADE = 'fade' const CLASS_NAME_SHOW = 'show' @@ -73,7 +74,7 @@ class Backdrop { _getElement() { if (!this._element) { const backdrop = document.createElement('div') - backdrop.className = CLASS_NAME_BACKDROP + backdrop.className = this._config.className if (this._config.isAnimated) { backdrop.classList.add(CLASS_NAME_FADE) } @@ -101,7 +102,7 @@ class Backdrop { return } - this._config.rootElement.appendChild(this._getElement()) + this._config.rootElement.append(this._getElement()) EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => { execute(this._config.clickCallback) diff --git a/vendor/twbs/bootstrap/js/src/util/component-functions.js b/vendor/twbs/bootstrap/js/src/util/component-functions.js new file mode 100644 index 000000000..ff9d87ee6 --- /dev/null +++ b/vendor/twbs/bootstrap/js/src/util/component-functions.js @@ -0,0 +1,34 @@ +/** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.1): util/component-functions.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + +import EventHandler from '../dom/event-handler' +import { getElementFromSelector, isDisabled } from './index' + +const enableDismissTrigger = (component, method = 'hide') => { + const clickEvent = `click.dismiss${component.EVENT_KEY}` + const name = component.NAME + + EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) { + if (['A', 'AREA'].includes(this.tagName)) { + event.preventDefault() + } + + if (isDisabled(this)) { + return + } + + const target = getElementFromSelector(this) || this.closest(`.${name}`) + const instance = component.getOrCreateInstance(target) + + // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method + instance[method]() + }) +} + +export { + enableDismissTrigger +} diff --git a/vendor/twbs/bootstrap/js/src/util/focustrap.js b/vendor/twbs/bootstrap/js/src/util/focustrap.js new file mode 100644 index 000000000..ca6f8273f --- /dev/null +++ b/vendor/twbs/bootstrap/js/src/util/focustrap.js @@ -0,0 +1,109 @@ +/** + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.1): util/focustrap.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +import EventHandler from '../dom/event-handler' +import SelectorEngine from '../dom/selector-engine' +import { typeCheckConfig } from './index' + +const Default = { + trapElement: null, // The element to trap focus inside of + autofocus: true +} + +const DefaultType = { + trapElement: 'element', + autofocus: 'boolean' +} + +const NAME = 'focustrap' +const DATA_KEY = 'bs.focustrap' +const EVENT_KEY = `.${DATA_KEY}` +const EVENT_FOCUSIN = `focusin${EVENT_KEY}` +const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}` + +const TAB_KEY = 'Tab' +const TAB_NAV_FORWARD = 'forward' +const TAB_NAV_BACKWARD = 'backward' + +class FocusTrap { + constructor(config) { + this._config = this._getConfig(config) + this._isActive = false + this._lastTabNavDirection = null + } + + activate() { + const { trapElement, autofocus } = this._config + + if (this._isActive) { + return + } + + if (autofocus) { + trapElement.focus() + } + + EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop + EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event)) + EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event)) + + this._isActive = true + } + + deactivate() { + if (!this._isActive) { + return + } + + this._isActive = false + EventHandler.off(document, EVENT_KEY) + } + + // Private + + _handleFocusin(event) { + const { target } = event + const { trapElement } = this._config + + if ( + target === document || + target === trapElement || + trapElement.contains(target) + ) { + return + } + + const elements = SelectorEngine.focusableChildren(trapElement) + + if (elements.length === 0) { + trapElement.focus() + } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) { + elements[elements.length - 1].focus() + } else { + elements[0].focus() + } + } + + _handleKeydown(event) { + if (event.key !== TAB_KEY) { + return + } + + this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD + } + + _getConfig(config) { + config = { + ...Default, + ...(typeof config === 'object' ? config : {}) + } + typeCheckConfig(NAME, config, DefaultType) + return config + } +} + +export default FocusTrap diff --git a/vendor/twbs/bootstrap/js/src/util/index.js b/vendor/twbs/bootstrap/js/src/util/index.js index 7c317b016..a4ad9c941 100644 --- a/vendor/twbs/bootstrap/js/src/util/index.js +++ b/vendor/twbs/bootstrap/js/src/util/index.js @@ -1,8 +1,6 @@ -import SelectorEngine from '../dom/selector-engine' - /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): util/index.js + * Bootstrap (v5.1.1): util/index.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -120,7 +118,7 @@ const getElement = obj => { } if (typeof obj === 'string' && obj.length > 0) { - return SelectorEngine.findOne(obj) + return document.querySelector(obj) } return null @@ -189,7 +187,18 @@ const findShadowRoot = element => { const noop = () => {} -const reflow = element => element.offsetHeight +/** + * Trick to restart an element's animation + * + * @param {HTMLElement} element + * @return void + * + * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation + */ +const reflow = element => { + // eslint-disable-next-line no-unused-expressions + element.offsetHeight +} const getjQuery = () => { const { jQuery } = window diff --git a/vendor/twbs/bootstrap/js/src/util/sanitizer.js b/vendor/twbs/bootstrap/js/src/util/sanitizer.js index 49f66417d..467dbf96a 100644 --- a/vendor/twbs/bootstrap/js/src/util/sanitizer.js +++ b/vendor/twbs/bootstrap/js/src/util/sanitizer.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): util/sanitizer.js + * Bootstrap (v5.1.1): util/sanitizer.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ diff --git a/vendor/twbs/bootstrap/js/src/util/scrollbar.js b/vendor/twbs/bootstrap/js/src/util/scrollbar.js index fad9766ac..73c28254e 100644 --- a/vendor/twbs/bootstrap/js/src/util/scrollbar.js +++ b/vendor/twbs/bootstrap/js/src/util/scrollbar.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.2): util/scrollBar.js + * Bootstrap (v5.1.1): util/scrollBar.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ |